Skip to main content
Glama

QuantCalc Retirement Engine

Required minimum distribution (RMD) for 2026 or 2027

calculate_rmd
Read-only

Computes the required minimum distribution for 2026 or 2027 from the prior year-end balance and the age or birth year, on the IRS Uniform Lifetime Table, or the Joint and Last Survivor Table when the spouse is the sole beneficiary and more than 10 years younger; returns the divisor, the deadline, the SECURE 2.0 start age (73, or 75 for those born 1960 or later), the first-year April 1 option and the two RMDs it stacks into one year, and a multi-year projection with growth. The same figures as the website's RMD calculator.

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": {
      "balance_prior_year_end": "<balance_prior_year_end>",
      "age": "<age>"
    },
    "name": "calculate_rmd"
  }
}

Input Schema

NameRequiredDescriptionDefault
ageYesThe age the owner reaches by December 31 of the distribution year.
yearNoThe distribution year: 2026 or 2027 (the same Uniform Lifetime Table). Default 2026.
birth_yearNoThe owner's birth year; when given it is used instead of age.
spouse_ageNoThe spouse's age reached in the distribution year, for the Joint and Last Survivor Table: read with spouse_sole_beneficiary.
projection_yearsNoYears in the projection, 1-30. Default 10.
growth_rate_percentNoAnnual growth of the balance for the projection and the delayed-first-RMD figure, in percent (5 = 5%). Default 0.
balance_prior_year_endYesThe traditional IRA (or plan) balance on December 31 of the year before the distribution year.
spouse_sole_beneficiaryNoThe spouse is the sole beneficiary all year: when the spouse is more than 10 years younger the Joint and Last Survivor Table applies. Needs spouse_age. Default false.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed11 schema fields changed
    • changedInput schema / properties / age / description
      Previous value: -"The age the owner reaches by December 31 of the distribution year. Give this or birth_year."New value: +"The age the owner reaches by December 31 of the distribution year."
    • changedInput schema / properties / birth_year / description
      Previous value: -"The owner's birth year; used instead of age when given."New value: +"The owner's birth year; when given it is used instead of age."
    • removedInput schema / properties / filing_status
      Removed value: -{
      -  "description": "Filing status in the distribution year (single, mfj, mfs, hoh). With it the result adds the federal and state tax the RMD adds in that year (licence needed); 2027 on the IRS's published 2027 amounts, the state line on each state's 2026 rules, labelled.",
      -  "enum": [
      -    "single",
      -    "mfj",
      -    "mfs",
      -    "hoh"
      -  ],
      -  "type": "string"
      -}
    • removedInput schema / properties / other_ira_distributions
      Removed value: -{
      -  "description": "Other IRA withdrawals or Roth conversions beyond this RMD, for the tax. Default 0.",
      -  "type": "number"
      -}
    • removedInput schema / properties / pension
      Removed value: -{
      -  "description": "Taxable pension and annuity income, for the tax. Default 0.",
      -  "type": "number"
      -}
    • removedInput schema / properties / qcd
      Removed value: -{
      -  "description": "The part of the RMD sent straight to charity as a qualified charitable distribution (capped at the $111,000 2026 limit and the balance; in 2027 a QCD above $111,000 is refused, since the 2027 limit is not published yet). Default 0.",
      -  "type": "number"
      -}
    • removedInput schema / properties / social_security
      Removed value: -{
      -  "description": "Gross Social Security benefits of the household, for the tax. Default 0.",
      -  "type": "number"
      -}
    • changedInput schema / properties / spouse_age / description
      Previous value: -"The spouse's age reached in the distribution year: for the Joint and Last Survivor Table, and on a joint return for the tax. On a joint return default the owner's age, stated."New value: +"The spouse's age reached in the distribution year, for the Joint and Last Survivor Table: read with spouse_sole_beneficiary."
    • removedInput schema / properties / spouse_split
      Removed value: -{
      -  "description": "Joint return only: whose the other IRA withdrawals and pension are on the state return (even, filer or spouse); the RMD is the owner's. Default even, stated.",
      -  "enum": [
      -    "even",
      -    "filer",
      -    "spouse"
      -  ],
      -  "type": "string"
      -}
    • removedInput schema / properties / state
      Removed value: -{
      -  "description": "Optional: two-letter code of the state (or DC) for the state tax line. Absent: federal only.",
      -  "type": "string"
      -}
    • changedInput schema / required
      Previous value: -[
      -  "balance_prior_year_end"
      -]New value: +[
      +  "balance_prior_year_end",
      +  "age"
      +]
  2. Changed5 schema fields changed
    • changedInput schema / properties / filing_status / description
      Previous value: -"2026 filing status (single, mfj, mfs, hoh). With it, and for 2026 only, the result adds the federal and state tax the RMD adds (licence needed)."New value: +"Filing status in the distribution year (single, mfj, mfs, hoh). With it the result adds the federal and state tax the RMD adds in that year (licence needed); 2027 on the IRS's published 2027 amounts, the state line on each state's 2026 rules, labelled."
    • changedInput schema / properties / other_ira_distributions / description
      Previous value: -"Other 2026 IRA withdrawals or Roth conversions beyond this RMD, for the tax. Default 0."New value: +"Other IRA withdrawals or Roth conversions beyond this RMD, for the tax. Default 0."
    • changedInput schema / properties / pension / description
      Previous value: -"Taxable 2026 pension and annuity income, for the tax. Default 0."New value: +"Taxable pension and annuity income, for the tax. Default 0."
    • changedInput schema / properties / qcd / description
      Previous value: -"The part of the RMD sent straight to charity as a qualified charitable distribution (capped at the $111,000 2026 limit and the balance). Default 0."New value: +"The part of the RMD sent straight to charity as a qualified charitable distribution (capped at the $111,000 2026 limit and the balance; in 2027 a QCD above $111,000 is refused, since the 2027 limit is not published yet). Default 0."
    • changedInput schema / properties / social_security / description
      Previous value: -"Gross 2026 Social Security benefits of the household, for the tax. Default 0."New value: +"Gross Social Security benefits of the household, for the tax. Default 0."
  3. Added

TDQS

A4.3/5.0
Behavior5/5

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

Annotations only declare readOnlyHint and openWorldHint, and there is no output schema, so the description carries the return-shape burden — and does so: divisor, deadline, SECURE 2.0 start age, the April 1 first-year option and the two RMDs it stacks, plus a multi-year projection. It also discloses the computational basis (IRS tables, prior year-end balance) and that results match the website calculator, which is meaningful behavioral context beyond the annotations.

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

Conciseness4/5

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

A single dense sentence, but the core computation and year scope are front-loaded and each clause (tables, outputs, projection) carries information. Slightly list-heavy structure makes it harder to scan than a two- or three-sentence layout would.

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

Completeness4/5

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

For an 8-parameter calculator with no output schema, the description covers the return content and table logic well. It omits edge behavior such as what happens when the supplied age is below the RMD start age or when spouse_age is given without spouse_sole_beneficiary.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: birth_year supersedes age, 2026 and 2027 share one table, and growth_rate_percent drives both the projection and the delayed-first-RMD figure. These cross-parameter relationships go beyond the per-field schema text.

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

Purpose5/5

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

States a specific verb and resource ('Computes the required minimum distribution') plus the exact year scope (2026 or 2027) and the table-selection rule (Uniform Lifetime vs Joint and Last Survivor). An agent can distinguish this from siblings like run_retirement_projection or explain_methodology without opening the schema.

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

Usage Guidelines3/5

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

Usage is only implied: the description explains that the Joint and Last Survivor Table applies when the spouse is sole beneficiary and more than 10 years younger, which tells the agent when a branch is relevant. It never states when to choose this tool over explain_methodology or run_retirement_projection, and gives no exclusions or prerequisites.

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.