Penalties and safe harbours: Claude skills backed by tested code
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.
What taxagent-compliance computes
4 commands, every one callable over MCP. 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.
| Command | What it returns | What it needs |
calculate_filing_penalty | Both additions to tax, with the section 6651(c) offset for months in which both run. Interest is not included. | nothing required |
calculate_entity_penalty | Charged per owner per month regardless of tax owed, which is the part that surprises people. | nothing required |
calculate_safe_harbour | The smaller of the current-year and prior-year routes, with the higher prior-year percentage for higher incomes. | nothing required |
get_compliance_capabilities | Which calculators taxagent-compliance exposes, what it will not compute, and the rule pack its figures are pinned to. | nothing required |
When to use it
Late filing and payment penalties, and the estimated tax safe harbour. It holds no client data: every figure arrives in the call and nothing is stored.
Requests it answers:
- “What is the penalty for filing and paying late?”
- “What does a late partnership return cost?”
- “What must I pay to avoid an underpayment penalty?”
- “Which penalties can this server compute?”
Skills that route here, each with the moment it applies:
penalty-review
A return or a payment is late and someone wants to know the cost, or an entity missed its filing date.
Compute late filing and late payment additions to tax, and partnership or S corporation late-filing penalties. Use when a return or payment is late. Interest is never included, so the figure is always lower than what is owed.
What it does not do
Named here because leaving it out is how an agent ends up asserting something the code never computed. Each line is the registry's own wording, not a summary of it.
- 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.
Where the figures come from
5 rules in the pack this server reads, each carrying its authority and legal effective date. The engines read from the pack, and a constant reappearing in the calculation path fails the build.
| Rule | Authority |
estimated_tax_safe_harbour | IRC 6654(d)(1) |
failure_to_file | IRC 6651(a)(1), (c)(1); Rev. Proc. 2025-32 sec. 4.52 |
failure_to_pay | IRC 6651(a)(2), (a)(3) |
partnership_late_filing | IRC 6698(b)(1); Rev. Proc. 2025-32 sec. 4.55 |
s_corporation_late_filing | IRC 6699(b)(1); Rev. Proc. 2025-32 sec. 4.56 |
Scripted case coverage
7 of the 71 console cases call this server over JSON-RPC on every build, across 1 of the 15 client objectives the case inventory groups by: Fix a filing problem.
| Case | What it asks | What it shows | Outcome |
comp-file-vs-pay | Three months late, nothing filed | Failure 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-paid | The 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-penalty | A small balance more than 60 days late | The percentage addition would be $360, so the statutory floor applies instead. Small balances are not proportionally cheap. | completed |
comp-partnership-penalty | A 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 |
comp-safe-harbour-jump | Income jumped; what must be paid in | 110% of last year's known tax beats 90% of this year's guess. The prior-year route is what protects a year like this. | completed |
comp-safe-harbour-fall | Income fell; paying last year's figure would overpay | The current-year route governs when income drops. Taking the prior-year route out of habit ties up cash for a year. | completed |
comp-rejects-negative-days | A negative number of days late | Refused rather than producing a negative penalty. | VALIDATION_FAILED |
Questions it answers
What is the penalty for filing and paying late?
Both additions to tax, with the section 6651(c) offset for months in which both run. Interest is not included. Nothing is required to start: every input has a declared default the result reports. Call calculate_filing_penalty on taxagent-compliance over MCP. 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 does a late partnership return cost?
Charged per owner per month regardless of tax owed, which is the part that surprises people. Nothing is required to start: every input has a declared default the result reports. Call calculate_entity_penalty on taxagent-compliance over MCP. 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 must I pay to avoid an underpayment penalty?
The smaller of the current-year and prior-year routes, with the higher prior-year percentage for higher incomes. Nothing is required to start: every input has a declared default the result reports. Call calculate_safe_harbour on taxagent-compliance over MCP. 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.
Which penalties can this server compute?
Which calculators taxagent-compliance exposes, what it will not compute, and the rule pack its figures are pinned to. Nothing is required to start: every input has a declared default the result reports. Call get_compliance_capabilities on taxagent-compliance over MCP. 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.