Federal tax on the same income both ways, over rates you supply

One command on the Business entity tax server, callable over MCP as calculate_entity_comparison, filed in the registry as C corporation versus pass-through. 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
business_incomeBusiness incomeBoth routes are computed on the same income, which is what makes the comparison mean anything.defaults to 1000000
owner_marginal_rateOwner's marginal rate (e.g. 0.37)The pass-through route is taxed at the owner's rate, which this calculation never guesses.defaults to 0.37
distribution_fractionFraction of profit distributedA C corporation is taxed twice only on what it distributes, so the fraction drives the second layer.defaults to 1.00
qualified_dividend_rateDividend rateDistributed profit is taxed again at the dividend rate the owner actually faces.defaults to 0.20
passthrough_deductionSection 199A deductionA section 199A deduction applies to the pass-through side alone, so it has to be supplied to compare fairly.defaults to 0

Requests it answers

  • “Would a C corporation cost less tax than an LLC?”
  • “How do distributions change the C corporation answer?”

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 business

The same command is exposed by taxagent-business, 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. The comparison is arithmetic over rates the caller supplies. Entity choice is not a calculation and this server does not pretend it is.

Scripted cases that exercise it

3 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
biz-entity-close-callC corporation versus pass-through, fully distributed$368,000 against $370,000 — close enough that payroll or state tax, neither of which is included, would decide it.completed
biz-entity-retainedThe same income, nothing distributedOnly the corporate layer is paid this year. The second layer is deferred, not avoided, and the comparison flips.completed
biz-rejects-rate-over-oneA rate given as 37 instead of 0.37Refused rather than taxing the income at 3,700%. The fraction is range-checked at the boundary.VALIDATION_FAILED

Limits it inherits from taxagent-business

  • Entity choice. The comparison is arithmetic over rates you supply; the decision turns on exit plans, qualified small business stock, payroll, fringe benefits and the cost of changing later.
  • Bonus depreciation, the section 163(j) interest limitation, basis and at-risk limits, and recapture on disposition.
  • Reasonable compensation, which is usually the larger number in an S corporation and is a facts-and-circumstances question.
  • State entity-level taxes and franchise taxes.

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