Qualified business income, with the wage and property limit phasing in and the service-business phase-out

One command on the Federal income tax server, callable over MCP as calculate_qbi, filed in the registry as Section 199A deduction. 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
qbiQualified business incomeThe deduction starts as a percentage of qualified business income, before any limit is applied.defaults to 200000
taxable_incomeTaxable income before the deductionThe wage and property limit and the service-business phase-out both key off taxable income.defaults to 600000
wagesW-2 wagesAbove the phase-in the deduction is capped by W-2 wages, so the cap cannot be computed without them.defaults to 50000
ubiaQualified property (UBIA)Qualified property raises the wage cap, which is the alternative limb of the same limit.defaults to 0
sstbSpecified service business one of no, yesA specified service business loses the deduction entirely above the phase-out, so this changes whether there is an answer, not just its size.defaults to no
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 large is my section 199A deduction?”
  • “Does the wage limit cut my pass-through 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

python3 -m taxagent federal qbi --qbi 200000 --taxable-income 600000 --wages 50000 --ubia 0 --status MFJ

The same command is exposed by taxagent-federal, 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.

Scripted cases that exercise it

2 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
federal-qbi-phase-inThe wage limit phasing in, not switching onAbove the threshold the wage limit applies in proportion to how far into the phase-in range the taxpayer is, not all at once.completed
federal-qbi-sstbA service business past the phase-outThe same figures as a consultancy rather than a manufacturer: the applicable percentage falls to zero and the deduction goes with it.completed

Limits it inherits from taxagent-federal

  • A return. AMT and the section 199A deduction are computed separately and are not folded into one liability.
  • Credits, self-employment tax and the additional Medicare tax.
  • State and local tax.

The server, its other 6 commands and what it deliberately leaves alone are on the Federal income tax page.