Skip to main content
Glama

Calculate Lifetime Required Minimum Distribution (RMD), Tax Cliffs, Surviving Spouse Widow's Penalty & W-4R Withholding Plan

calculate_rmd_and_tax_cliffs
Read-only

Use this tool whenever a user asks to calculate the account owner's own lifetime Required Minimum Distribution (RMD) for 2025, 2026, or 2027 (Uniform Lifetime Table III, or Joint Table II when the sole-beneficiary spouse is more than 10 years younger), the federal and state tax cost of that RMD including Social Security taxation, the $6,000 OBBBA senior deduction phase-out and Medicare IRMAA tiers, Qualified Charitable Distribution (QCD) offsets, a surviving-spouse treat-as-own vs. inherited comparison with the Widow's Penalty tax jump, and an optional Form W-4R withholding plan (federal/state withholding on the RMD, net cash, and the IRC Sec. 6654 / Pub 505 prior-year safe-harbor gap). This tool does NOT compute inherited (non-spouse beneficiary) RMD schedules or missed-RMD excise penalties; for those, direct the user to the interactive calculator's Inherited and Missed-RMD modes at the returned interactiveCalculatorUrl.

Input Schema

NameRequiredDescriptionDefault
yearNoDistribution calendar year (2025, 2026, or 2027).
filingNoFederal tax filing status (single, mfj, mfs, or hoh).mfj
balanceYesPrior December 31 retirement account balance in USD (Form 5498 FMV).
qcdAmountNoQualified Charitable Distribution (QCD) amount in USD transferred directly from IRA to charity (IRC Sec. 408(d)(8)).
ssBenefitsNoAnnual gross Social Security benefits in USD for the household (both spouses combined for mfj); enter 0 if not yet claiming.
otherIncomeNoEstimated other ordinary taxable income in USD for the tax year, EXCLUDING this RMD and Social Security. For filing status mfj this must be the COMBINED income of both spouses (wages, pensions, interest, other IRA distributions, etc.). Used only for the tax-cliff and withholding layers; the RMD amount itself never depends on income or filing status. If uncertain, use last year's AGI minus last year's RMD.
priorYearAgiNoOPTIONAL. Prior-year adjusted gross income (Form 1040 line 11) in USD; determines whether the 100% or 110% prior-year safe-harbor percentage applies.
priorYearTaxNoOPTIONAL. Prior-year total federal tax (Form 1040 line 24) in USD. Unlocks the IRC Sec. 6654 / Pub 505 safe-harbor check: prepaying 100% of prior-year tax (110% if prior-year AGI exceeded $150,000; $75,000 mfs) avoids an underpayment penalty regardless of current-year income.
stateRatePctNoState income tax rate percentage (e.g. 9.3 for California, 0 for Texas/Florida).
ownerBirthYearYesAccount owner's 4-digit birth year (determines Applicable RMD Age: 70.5, 72, 73, or 75).
spouseBirthYearNoSpouse's 4-digit birth year. Triggers Joint Table II when the spouse is the sole primary beneficiary and more than 10 years younger; also used for the surviving-spouse comparison and (for mfj) the household age-65+ deductions.
fedWithholdingPctNoOPTIONAL. Federal income tax withholding percentage to elect on Form W-4R line 2 for this RMD (0-100). Nonperiodic IRA distributions default to 10% if the payee makes no election. Supplying this (or any withholding* / priorYear* field) adds a withholdingPlan block to the output.
stateWithholdingPctNoOPTIONAL. State income tax withholding as a percentage of the distribution. California defaults to 10% of the federal amount (1% of the distribution at 10% federal) unless the payee elects otherwise on Form DE 4P.
federalTaxPaidToDateNoOPTIONAL. Federal tax already paid for the current year in USD (paycheck/pension withholding plus Form 1040-ES estimates), not counting withholding on this RMD.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed8 schema fields changed
    • addedInput schema / properties / fedWithholdingPct
      Added value: +{
      +  "description": "OPTIONAL. Federal income tax withholding percentage to elect on Form W-4R line 2 for this RMD (0-100). Nonperiodic IRA distributions default to 10% if the payee makes no election. Supplying this (or any withholding* / priorYear* field) adds a withholdingPlan block to the output.",
      +  "maximum": 100,
      +  "minimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / federalTaxPaidToDate
      Added value: +{
      +  "default": 0,
      +  "description": "OPTIONAL. Federal tax already paid for the current year in USD (paycheck/pension withholding plus Form 1040-ES estimates), not counting withholding on this RMD.",
      +  "minimum": 0,
      +  "type": "number"
      +}
    • changedInput schema / properties / otherIncome / description
      Previous value: -"Other non-RMD ordinary taxable income in USD before Social Security."New value: +"Estimated other ordinary taxable income in USD for the tax year, EXCLUDING this RMD and Social Security. For filing status mfj this must be the COMBINED income of both spouses (wages, pensions, interest, other IRA distributions, etc.). Used only for the tax-cliff and withholding layers; the RMD amount itself never depends on income or filing status. If uncertain, use last year's AGI minus last year's RMD."
    • addedInput schema / properties / priorYearAgi
      Added value: +{
      +  "description": "OPTIONAL. Prior-year adjusted gross income (Form 1040 line 11) in USD; determines whether the 100% or 110% prior-year safe-harbor percentage applies.",
      +  "minimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / priorYearTax
      Added value: +{
      +  "description": "OPTIONAL. Prior-year total federal tax (Form 1040 line 24) in USD. Unlocks the IRC Sec. 6654 / Pub 505 safe-harbor check: prepaying 100% of prior-year tax (110% if prior-year AGI exceeded $150,000; $75,000 mfs) avoids an underpayment penalty regardless of current-year income.",
      +  "minimum": 0,
      +  "type": "number"
      +}
    • changedInput schema / properties / spouseBirthYear / description
      Previous value: -"Spouse's 4-digit birth year (triggers Joint Table II if sole beneficiary and >10 years younger)."New value: +"Spouse's 4-digit birth year. Triggers Joint Table II when the spouse is the sole primary beneficiary and more than 10 years younger; also used for the surviving-spouse comparison and (for mfj) the household age-65+ deductions."
    • changedInput schema / properties / ssBenefits / description
      Previous value: -"Annual gross Social Security benefits in USD."New value: +"Annual gross Social Security benefits in USD for the household (both spouses combined for mfj); enter 0 if not yet claiming."
    • addedInput schema / properties / stateWithholdingPct
      Added value: +{
      +  "default": 0,
      +  "description": "OPTIONAL. State income tax withholding as a percentage of the distribution. California defaults to 10% of the federal amount (1% of the distribution at 10% federal) unless the payee elects otherwise on Form DE 4P.",
      +  "maximum": 50,
      +  "minimum": 0,
      +  "type": "number"
      +}
  2. Changed8 schema fields changed
    • removedInput schema / properties / fedWithholdingPct
      Removed value: -{
      -  "description": "OPTIONAL. Federal income tax withholding percentage to elect on Form W-4R line 2 for this RMD (0-100). Nonperiodic IRA distributions default to 10% if the payee makes no election. Supplying this (or any withholding* / priorYear* field) adds a withholdingPlan block to the output.",
      -  "maximum": 100,
      -  "minimum": 0,
      -  "type": "number"
      -}
    • removedInput schema / properties / federalTaxPaidToDate
      Removed value: -{
      -  "default": 0,
      -  "description": "OPTIONAL. Federal tax already paid for the current year in USD (paycheck/pension withholding plus Form 1040-ES estimates), not counting withholding on this RMD.",
      -  "minimum": 0,
      -  "type": "number"
      -}
    • changedInput schema / properties / otherIncome / description
      Previous value: -"Estimated other ordinary taxable income in USD for the tax year, EXCLUDING this RMD and Social Security. For filing status mfj this must be the COMBINED income of both spouses (wages, pensions, interest, other IRA distributions, etc.). Used only for the tax-cliff and withholding layers; the RMD amount itself never depends on income or filing status. If uncertain, use last year's AGI minus last year's RMD."New value: +"Other non-RMD ordinary taxable income in USD before Social Security."
    • removedInput schema / properties / priorYearAgi
      Removed value: -{
      -  "description": "OPTIONAL. Prior-year adjusted gross income (Form 1040 line 11) in USD; determines whether the 100% or 110% prior-year safe-harbor percentage applies.",
      -  "minimum": 0,
      -  "type": "number"
      -}
    • removedInput schema / properties / priorYearTax
      Removed value: -{
      -  "description": "OPTIONAL. Prior-year total federal tax (Form 1040 line 24) in USD. Unlocks the IRC Sec. 6654 / Pub 505 safe-harbor check: prepaying 100% of prior-year tax (110% if prior-year AGI exceeded $150,000; $75,000 mfs) avoids an underpayment penalty regardless of current-year income.",
      -  "minimum": 0,
      -  "type": "number"
      -}
    • changedInput schema / properties / spouseBirthYear / description
      Previous value: -"Spouse's 4-digit birth year. Triggers Joint Table II when the spouse is the sole primary beneficiary and more than 10 years younger; also used for the surviving-spouse comparison and (for mfj) the household age-65+ deductions."New value: +"Spouse's 4-digit birth year (triggers Joint Table II if sole beneficiary and >10 years younger)."
    • changedInput schema / properties / ssBenefits / description
      Previous value: -"Annual gross Social Security benefits in USD for the household (both spouses combined for mfj); enter 0 if not yet claiming."New value: +"Annual gross Social Security benefits in USD."
    • removedInput schema / properties / stateWithholdingPct
      Removed value: -{
      -  "default": 0,
      -  "description": "OPTIONAL. State income tax withholding as a percentage of the distribution. California defaults to 10% of the federal amount (1% of the distribution at 10% federal) unless the payee elects otherwise on Form DE 4P.",
      -  "maximum": 50,
      -  "minimum": 0,
      -  "type": "number"
      -}
  3. Changed8 schema fields changed
    • addedInput schema / properties / fedWithholdingPct
      Added value: +{
      +  "description": "OPTIONAL. Federal income tax withholding percentage to elect on Form W-4R line 2 for this RMD (0-100). Nonperiodic IRA distributions default to 10% if the payee makes no election. Supplying this (or any withholding* / priorYear* field) adds a withholdingPlan block to the output.",
      +  "maximum": 100,
      +  "minimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / federalTaxPaidToDate
      Added value: +{
      +  "default": 0,
      +  "description": "OPTIONAL. Federal tax already paid for the current year in USD (paycheck/pension withholding plus Form 1040-ES estimates), not counting withholding on this RMD.",
      +  "minimum": 0,
      +  "type": "number"
      +}
    • changedInput schema / properties / otherIncome / description
      Previous value: -"Other non-RMD ordinary taxable income in USD before Social Security."New value: +"Estimated other ordinary taxable income in USD for the tax year, EXCLUDING this RMD and Social Security. For filing status mfj this must be the COMBINED income of both spouses (wages, pensions, interest, other IRA distributions, etc.). Used only for the tax-cliff and withholding layers; the RMD amount itself never depends on income or filing status. If uncertain, use last year's AGI minus last year's RMD."
    • addedInput schema / properties / priorYearAgi
      Added value: +{
      +  "description": "OPTIONAL. Prior-year adjusted gross income (Form 1040 line 11) in USD; determines whether the 100% or 110% prior-year safe-harbor percentage applies.",
      +  "minimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / priorYearTax
      Added value: +{
      +  "description": "OPTIONAL. Prior-year total federal tax (Form 1040 line 24) in USD. Unlocks the IRC Sec. 6654 / Pub 505 safe-harbor check: prepaying 100% of prior-year tax (110% if prior-year AGI exceeded $150,000; $75,000 mfs) avoids an underpayment penalty regardless of current-year income.",
      +  "minimum": 0,
      +  "type": "number"
      +}
    • changedInput schema / properties / spouseBirthYear / description
      Previous value: -"Spouse's 4-digit birth year (triggers Joint Table II if sole beneficiary and >10 years younger)."New value: +"Spouse's 4-digit birth year. Triggers Joint Table II when the spouse is the sole primary beneficiary and more than 10 years younger; also used for the surviving-spouse comparison and (for mfj) the household age-65+ deductions."
    • changedInput schema / properties / ssBenefits / description
      Previous value: -"Annual gross Social Security benefits in USD."New value: +"Annual gross Social Security benefits in USD for the household (both spouses combined for mfj); enter 0 if not yet claiming."
    • addedInput schema / properties / stateWithholdingPct
      Added value: +{
      +  "default": 0,
      +  "description": "OPTIONAL. State income tax withholding as a percentage of the distribution. California defaults to 10% of the federal amount (1% of the distribution at 10% federal) unless the payee elects otherwise on Form DE 4P.",
      +  "maximum": 50,
      +  "minimum": 0,
      +  "type": "number"
      +}
  4. First observed

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already establish the safe read-only, closed-world profile, so the bar is lower. The description adds genuine behavioral detail beyond that: it states the RMD amount itself never depends on income or filing status, and that supplying any withholding*/priorYear* field conditionally adds a withholdingPlan block to the output — useful output-shape disclosure. It does not discuss computation limits or error behavior, keeping it short of a 5.

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 trigger sentence is front-loaded correctly, but it is a single very long run-on enumeration that is hard to parse and duplicates parameter-level detail already in the schema. The second sentence earns its place by drawing the scope boundary. Overall it is dense rather than wasteful, but structure could be improved with bulleted capability and exclusion blocks.

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 a 14-parameter, no-output-schema calculation tool, the description covers scope, exclusions, table selection, and the conditional withholdingPlan output block plus the returned interactiveCalculatorUrl. Return-value detail is thin because no output schema exists, but the description compensates enough that an agent can call it correctly; a fuller output sketch would justify a 5.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 14 parameters, including the OBBBA/QCD/safe-harbor specifics. The description adds only indirect meaning by naming the tables (Uniform Lifetime III vs. Joint Table II) and the withholding plan outputs; it does not deepen individual parameter semantics beyond what the schema provides. Baseline 3 applies.

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?

The description opens with a specific verb and subject ('calculate the account owner's own lifetime Required Minimum Distribution') and enumerates the exact layers computed: federal/state tax cost, Social Security taxation, OBBBA senior deduction phase-out, IRMAA tiers, QCD offsets, widow's penalty comparison, and W-4R withholding plan. It also explicitly carves out what it does not do (inherited RMD schedules, missed-RMD excise penalties), which cleanly separates it from siblings like analyze_estate_tax_and_stepup or calculate_roth_conversion.

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

Usage Guidelines5/5

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

The trigger condition is stated unambiguously ('Use this tool whenever a user asks to calculate...'), including the qualifying year range and table selection rules. The description also gives a negative rule with a redirect path (inherited/missed-RMD modes at the returned interactiveCalculatorUrl), so the agent knows both when to call and when to route elsewhere.

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