Skip to main content
Glama

compute_form_2210

Form 2210 — the estimated tax underpayment penalty (26 U.S.C. § 6654) for tax years 2025-2027, composed from the printed form: Part I (the required annual payment: 90% of this year's tax, or 100% / 110% of last year's — pass priorYearTax and priorYearAGI in facts, or noPriorYearReturn), Part III Section A (underpayment per installment) and the Section B penalty worksheet (payments applied to the earliest underpayment first; each quarter's § 6621 underpayment rate, by days). Pass payments: EVERY estimated tax payment with its date (include last year's overpayment applied to this year, dated April 15, and any payment with the return, dated the earlier of filing and April 15); withholding (facts.federalTaxWithheld) is treated as paid one-fourth on each due date unless you pass withholdingByDate (box D). Pass periods to also run Schedule AI, the annualized income installment method (box C): the CUMULATIVE amounts from January 1 through March 31, May 31 and August 31 for every income, deduction and credit amount that is nonzero for the year (same fact ids as facts; the tool lists any it needs). Each Schedule AI column is the whole return computed on the period's amounts × 4, 2.4, 1.5 and 1, with the standard deduction in full, so every income type, deduction and credit the engine models is annualized; the columns refuse, with the reason, where the form doesn't settle the period treatment (foreign earned income exclusion, prior-year carryovers, premium tax credit, kiddie tax, household employment taxes, a dependent filer, the SALT cap binding in a period). The tool reports both methods and the lower penalty. A penalty that would run into a quarter whose rate the IRS hasn't announced is refused, with Section A still shown. Report the lines and notes verbatim.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "facts": "<facts>",
      "payments": "<payments>"
    },
    "name": "compute_form_2210"
  }
}

Input Schema

NameRequiredDescriptionDefault
factsYesfacts for the computation: either flat corpus fact ids (see list_input_facts) or the same group objects calculate_tax accepts (filing, income, retirement, …), plus optional target and asOf. Business/fiduciary/dependent facts are accepted flat. Unknown keys are rejected by name — nothing is ever silently dropped.
periodsNoSchedule AI: cumulative amounts from January 1 through each date, keyed by fact id, in dollars
paymentsYesevery estimated tax payment for the year: { date: 'YYYY-MM-DD', amount: dollars } (an empty array if none)
noPriorYearReturnNono return for the prior year, or it covered under 12 months: line 9 is line 5
withholdingByDateNobox D: withholding by the date actually withheld; must total facts.federalTaxWithheld
filedAndPaidInFullOnNo§ 6654(h): the date the return was filed and the tax paid in full, when by January 31

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so: it discloses default behavior (withholding treated as paid one-fourth per due date), payment ordering (earliest underpayment first), and explicit refusal modes (Schedule AI columns refuse with a reason for foreign earned income exclusion, carryovers, PTC, kiddie tax, etc.; an unannounced quarterly § 6621 rate refuses while still showing Section A). That is exactly the operational context an agent needs before calling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded and every clause carries information, but the whole definition is one dense run-on paragraph stitched with semicolons and stacked parentheticals. Splitting the payment rules, the Schedule AI rules and the refusal conditions into distinct sentences or bullets would materially improve parseability without losing content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a highly complex, nested-schema tool with no annotations and no output schema, the description covers what is computed, which inputs are mandatory in practice, the Schedule AI fallback path, and each refusal condition. An agent could invoke it correctly and predict failure modes from this text alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description adds real meaning: `payments` must include last year's overpayment applied (dated April 15) and any payment with the return (dated the earlier of filing and April 15); `withholdingByDate` is box D and must total facts.federalTaxWithheld; `periods` takes CUMULATIVE amounts from January 1 with the same fact ids as facts. These are constraints the schema alone does not convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the exact artifact and statute: the Form 2210 estimated tax underpayment penalty (26 U.S.C. § 6654) for tax years 2025-2027, and enumerates which parts (I, III Section A, Section B worksheet) are composed. That is a specific verb+resource, and the form-specific framing separates it from generic siblings like calculate_tax or compute_return without naming them explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives strong conditional invocation guidance: pass `periods` to also run Schedule AI, pass `priorYearTax`/`priorYearAGI` or `noPriorYearReturn` to settle Part I line 9, pass `withholdingByDate` (box D) to override the default one-fourth treatment. It never states when to choose this tool over calculate_tax or compute_return, so the alternative-selection rule is left implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources