Charged per owner per month regardless of tax owed, which is the part that surprises people

One command on the Penalties and safe harbours server, callable over MCP as calculate_entity_penalty, filed in the registry as Partnership or S corporation late filing. 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
entity_typeEntity one of partnership, s_corporationA partnership and an S corporation carry different per-owner monthly figures.defaults to partnership
ownersPartners or shareholdersThe penalty is charged per partner or shareholder, which is why it grows with the owner count rather than with the tax.defaults to 8
months_lateMonths lateThe charge is per month and capped, so the count sets both the total and whether the cap bites.defaults to 4

Requests it answers

  • “What does a late partnership return cost?”
  • “Is the penalty charged per partner or per return?”

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

1 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-partnership-penaltyA partnership that owes no tax at all$8,320 for eight partners and four months. The penalty is per owner per month and does not depend on tax owed.completed

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.