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.

fieldtypedescription
factsrequiredobject · any keysfacts 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.
Takes every field listed on calculate_tax, grouped or flat, plus asOf and target.
varyrequiredstringmoney fact to vary, e.g. "wages" or "taxableInterest"
fromDollarsrequirednumber
toDollarsrequirednumber
stepDollarsnumbercoarse 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.