tools · POST /v1/tools/find_tax_cliffs
find_tax_cliffs
Sweep one input across a range; every discontinuity in the target.
Call it
bash
curl -s https://opentax.invaro.ai/v1/tools/find_tax_cliffs \
-H "Authorization: Bearer $OPENTAX_KEY" \
-H "Content-Type: application/json" \
-d '{
"facts": {
"filing": {
"filingStatus": "mfj"
},
"credits": {
"qualifyingChildren": 2
},
"asOf": "2025-12-31"
},
"vary": "wages",
"fromDollars": 0,
"toDollars": 80000,
"stepDollars": 500
}'What it does
Find exact dollar amounts where one more cent of an input costs MORE than a cent of tax (marginal rate over 100%) — e.g. the EITC investment-income kill switch, CTC phase-out steps. Every probe is a real evaluation.
This is the description the MCP server hands to a model. The imperative sentences are addressed to the model; the facts about scope apply to every caller.
Inputs
Required: facts, vary, fromDollars, toDollars. Everything else is optional and defaults are disclosed in assumptions.
| field | type | description |
|---|---|---|
| factsrequired | object · any keys | facts for the computation: either flat corpus fact ids (see list_input_facts) or the same group objects calculate_tax accepts (filing, income, retirement, …), plus optional target and asOf. Business/fiduciary/dependent facts are accepted flat. Unknown keys are rejected by name — nothing is ever silently dropped. |
| varyrequired | string | money fact to vary, e.g. "wages" or "taxableInterest" |
| fromDollarsrequired | number | |
| toDollarsrequired | number | |
| stepDollars | number | coarse scan step, default 1000 |
Example
No captured example for this tool yet; the call above is a valid request. The examples page has ten end-to-end pairs including two refusals.