The federal cap phasing down at 30 cents per dollar of MAGI above the threshold, to a floor

One command on the State and local tax server, callable over MCP as calculate_salt_cap, filed in the registry as State and local tax deduction cap. Every result carries the method it used, the rule pack it was pinned to, what is still missing and whether coverage was complete, for a licensed professional to review.

What it needs, and why

Every input is checked before anything is calculated. Nothing is required to start, and a field left blank means do not apply this rather than zero.

InputWhat it asks forWhy it mattersIf you omit it
state_and_local_tax_paidState and local tax paidThe deduction cannot exceed what was actually paid, so the cap only bites above it.defaults to 60000
magiModified AGIThe cap phases down with modified AGI above a threshold, 30 cents per dollar, to a floor rather than to nothing.defaults to 550000
statusFiling status one of MFJ, SINGLE, HOH, MFSEvery band, threshold and exemption in the calculation is set by filing status.defaults to MFJ

Requests it answers

  • “How much state and local tax can I deduct?”
  • “Does a high income phase down the SALT deduction?”

An agent with these skills loaded picks the command from phrasing like that, asks for whatever input is missing, and reports the figures with the method that produced them.

Run it

scripts/mcp_server.sh --server salt

The same command is exposed by taxagent-salt, so Claude, Claude Code, Codex, Cursor and any other MCP client can call it directly. Analysis only. No tool in this server places orders, modifies custodian records or files returns. This server holds no client data: every figure arrives in the call and nothing is stored. Results are estimates over those figures, not a return and not tax advice. No state's own income tax is computed. No state pack is bound in this deployment, and the cap limits a federal deduction rather than telling you what a state charges.

Scripted cases that exercise it

4 of the 71 console cases call this command on a real server over JSON-RPC and assert the outcome. Every one runs on every build, and all of them are listed on the case inventory.

CaseWhat it asksWhat it showsOutcome
salt-full-capUnder the threshold: the full cap$40,400 of a $60,000 bill is deductible; the rest is simply lost and does not carry forward.completed
salt-phasing-downInside the phase-down rangeA slope, not a cliff: 30 cents per dollar of MAGI above the threshold. Income in this band costs more than its own marginal rate.completed
salt-at-the-floorPast the floorThe cap stops falling at $10,000 however high income goes, so the penalty on extra income ends there too.completed
salt-separate-filerMarried filing separately halves everythingCap, threshold and floor are all halved, which is easy to miss when comparing a joint and separate return.completed

Limits it inherits from taxagent-salt

  • Any state's own income tax. No state pack is bound in this deployment, and the cap is a federal deduction limit, not what a state charges.
  • Residency, domicile, part-year allocation and reciprocity.
  • Pass-through entity tax workarounds, which are a state question.
  • Whether itemizing beats the standard deduction at all.

The server, its other 2 commands and what it deliberately leaves alone are on the State and local tax page.