Both additions to tax, with the section 6651(c) offset for months in which both run

One command on the Penalties and safe harbours server, callable over MCP as calculate_filing_penalty, filed in the registry as Late filing and late payment. 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
unpaid_taxUnpaid taxBoth additions to tax are percentages of the tax that was not paid on time.defaults to 10000
days_lateDays lateBoth penalties accrue monthly and a part month counts as a whole one, so days rather than months decide the count.defaults to 95
filedReturn was filed on time one of no, yesThe late filing penalty is ten times the late payment one, so whether the return went in on time dominates the result.defaults to no

Requests it answers

  • “What is the penalty for filing and paying late?”
  • “Do the late filing and late payment penalties stack?”

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 compliance

The same command is exposed by taxagent-compliance, 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. Interest is never computed: the rate is set quarterly and compounds daily, so no rate is stored here.

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
comp-file-vs-payThree months late, nothing filedFailure to file runs at ten times the failure-to-pay rate, with the section 6651(c) offset applied so the combined rate is 5%, not 5.5%.completed
comp-filed-not-paidThe same debt, but the return was filed$200 instead of $2,000. This is why 'file even if you cannot pay' is the standard advice, and the numbers make the case.completed
comp-minimum-penaltyA small balance more than 60 days lateThe percentage addition would be $360, so the statutory floor applies instead. Small balances are not proportionally cheap.completed
comp-rejects-negative-daysA negative number of days lateRefused rather than producing a negative penalty.VALIDATION_FAILED

Limits it inherits from taxagent-compliance

  • Interest. The underpayment rate is set quarterly and compounds daily, so no rate is stored here and these figures are penalties only.
  • Reasonable cause, first-time abatement and the fraud rate, any of which changes the result substantially.
  • Whether estimated payments were timely by quarter, as opposed to sufficient in total.

The server, its other 3 commands and what it deliberately leaves alone are on the Penalties and safe harbours page.