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.
| Input | What it asks for | Why it matters | If you omit it |
|---|---|---|---|
state_and_local_tax_paid | State and local tax paid | The deduction cannot exceed what was actually paid, so the cap only bites above it. | defaults to 60000 |
magi | Modified AGI | The cap phases down with modified AGI above a threshold, 30 cents per dollar, to a floor rather than to nothing. | defaults to 550000 |
status | Filing status one of MFJ, SINGLE, HOH, MFS | Every 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 saltThe 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.
| Case | What it asks | What it shows | Outcome |
|---|---|---|---|
salt-full-cap | Under 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-down | Inside the phase-down range | A 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-floor | Past the floor | The cap stops falling at $10,000 however high income goes, so the penalty on extra income ends there too. | completed |
salt-separate-filer | Married filing separately halves everything | Cap, 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.