ACA Premium Tax Credit Calculator
Server Details
2026 ACA premium tax credit: expired enhanced subsidy, 400% FPL cliff, FPL, APTC repayment rules.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- theluckystrike/aca-premium-tax-credit-calculator-mcp
- GitHub Stars
- 0
- Server Listing
- aca-premium-tax-credit-calculator-mcp
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 4 tools
Each tool targets a distinct aspect: credit calculation, cliff analysis, repayment caps, and FPL thresholds. The only soft overlap is that check_subsidy_cliff re-computes credits around the 400% FPL boundary, but its scenario-focused framing keeps it clearly separate from calculate_premium_tax_credit.
All four tools follow a clean verb_noun snake_case pattern (calculate_..., check_..., get_..., get_...). The only nit is 'aptc' abbreviating what elsewhere is 'premium_tax_credit', but the pattern itself is fully consistent.
Four tightly scoped tools for a narrow calculation domain, each covering a distinct piece of the 36B workflow. Nothing is redundant and nothing feels like filler.
The core lifecycle (FPL lookup, credit calculation, cliff impact, repayment cap) is well covered with no obvious dead ends. Gaps remain around eligibility determination (employer coverage, immigration status, household composition edge cases) and multi-year or multi-taxpayer allocation scenarios.
Available Tools
4 toolscheck_subsidy_cliff2026 ACA subsidy cliff at 400% FPLARead-onlyIdempotentInspect
Shows the dollar effect of the 400% federal poverty line subsidy cliff that returned for 2026 coverage after the enhanced premium tax credits expired: the cliff income for the household, the credit at exactly 400% FPL, the credit at $1 more (zero), and the loss. With household_income it also gives the credit under 2026 rules, what the expired 2021-2025 enhanced rules would have given, and how much modified AGI must drop (for example through HSA or retirement contributions) to get back under the cliff.
| Name | Required | Description | Default |
|---|---|---|---|
| state | Yes | State of residence: two-letter code or name (AK and HI have their own poverty lines; all other states and DC share one). | |
| household_size | Yes | Tax family size: you, your spouse if filing jointly, and every dependent you claim. | |
| premium_period | No | Whether premiums are annual (default) or monthly amounts. | |
| household_income | No | Household income in dollars for the coverage year: modified AGI of you, your spouse and dependents who must file. | |
| benchmark_premium | Yes | Premium of the second lowest cost silver plan (SLCSP, the benchmark) for the household, from HealthCare.gov or Form 1095-A column B. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only, idempotent, non-destructive, and closed-world, and the description adds substantial behavioral detail: exactly which cliff outputs are produced and how results expand when household_income is supplied. It also discloses the comparison against expired 2021-2025 enhanced rules and the MAGI-reduction calculation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the primary cliff output and efficiently covers optional behavior. It is a single dense sentence, so slightly heavy, but every clause adds useful output or comparison information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description explains the return values in enough detail for correct invocation and interpretation. It also covers the optional household_income branch and the policy comparison context, which are the key behavioral complexities for this calculator.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters are already well documented in the schema. The description adds the conditional meaning of household_income triggering extra outputs, but otherwise relies on the schema for parameter semantics; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific calculation and scope: the dollar effect of the 400% FPL subsidy cliff for 2026, including cliff income, credit at 400%, credit at $1 more, and loss. This is clearly distinguishable from generic premium tax credit or poverty-level siblings, even without naming them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes clear when the tool is useful: analyzing the returned subsidy cliff and, optionally, comparing 2026 rules with expired enhanced rules. It does not explicitly name when to choose a sibling like calculate_premium_tax_credit instead, but the cliff-specific framing gives strong usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_aptc_repayment_capExcess advance premium tax credit repayment capARead-onlyIdempotentInspect
Returns the cap on repaying excess advance premium tax credit (APTC) at tax time. For tax year 2025: Form 8962 Table 5 ($375/$750 below 200% FPL, $975/$1,950 at 200-300%, $1,625/$3,250 at 300-400%, single/other filing status; no cap at 400% or more). For tax year 2026 and later there is NO cap: the One Big Beautiful Bill Act (P.L. 119-21 sec. 71305) repealed it, so the full excess is repaid. Many models trained before 2026 still quote the old caps.
| Name | Required | Description | Default |
|---|---|---|---|
| state | Yes | State of residence: two-letter code or name (AK and HI have their own poverty lines; all other states and DC share one). | |
| tax_year | No | Tax year: 2025 or later. Default 2026. | |
| excess_aptc | No | Advance payments minus the credit you are allowed (Form 8962 line 27). Optional. | |
| filing_status | Yes | Filing status. Table 5 has a single column and an any-other-status column. | |
| household_size | Yes | Tax family size: you, your spouse if filing jointly, and every dependent you claim. | |
| household_income | Yes | Household income in dollars for the coverage year: modified AGI of you, your spouse and dependents who must file. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only, idempotent, closed-world profile, so the bar is lower; the description still adds real behavioral context by disclosing that output changes materially by tax year, that the cap is repealed for 2026+, and that pre-2026 training data will mislead. It stops short of saying how the parameters interact to select a bracket, but it goes well beyond restating annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core answer, then the year-specific detail, then the stale-model warning. The parenthetical dollar tables are dense but each figure earns its place as a return-value preview; a slightly tighter phrasing would help.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and 6 parameters, the description carries the return-value burden itself and does so fully: it gives concrete caps for 2025 by FPL band and states the 2026+ outcome. Nothing essential to calling or interpreting the result is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description still adds meaning by tying filing_status and household_income/household_size to the Table 5 columns and FPL brackets, and by flagging the 400% FPL boundary behavior. It does not explain how state-specific poverty lines alter the result beyond what the schema already says.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb and resource: returns the cap on repaying excess APTC. It is immediately distinguishable from siblings (credit calculation, subsidy cliff, poverty level) because it names the exact quantity and the tax-time repayment context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes clear this is the tool for repayment-cap questions and explains the year split (2025 caps vs 2026+ no cap), but it never explicitly routes to or away from siblings like calculate_premium_tax_credit or get_federal_poverty_level, leaving the agent to infer the boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_federal_poverty_levelFederal poverty line for ACA premium tax creditsARead-onlyIdempotentInspect
Returns the federal poverty line (FPL) used for the ACA premium tax credit for a coverage year, household size and state, plus the 100%, 133%, 138%, 150%, 200%, 250%, 300% and 400% income thresholds. Coverage year Y uses the HHS guidelines published in year Y-1: 2026 coverage uses the 2025 guidelines ($15,650 for one person in the 48 states and DC, $19,550 Alaska, $17,990 Hawaii); 2025 coverage uses 2024; 2027 coverage uses 2026. Copied from the Federal Register notices, not model memory.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | Coverage (tax) year: 2025, 2026 or 2027. Default 2026. | |
| state | Yes | State of residence: two-letter code or name (AK and HI have their own poverty lines; all other states and DC share one). | |
| household_size | Yes | Tax family size: you, your spouse if filing jointly, and every dependent you claim. | |
| household_income | No | Household income in dollars for the coverage year: modified AGI of you, your spouse and dependents who must file. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, closed-world, so the safety profile is covered. The description adds real context beyond that: provenance ('Copied from the Federal Register notices, not model memory') and the lag rule tying coverage year Y to year Y-1 guidelines, which is the kind of correctness detail an agent cannot get from annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the resource and scope, then the year rule, then the provenance note. The parenthetical dollar figures are somewhat heavy but serve as a concrete sanity anchor; nothing is genuinely wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates by enumerating the returned thresholds (100% through 400%) and the FPL basis. The only real gap is the unexplained optional household_income input, which matters if the tool also derives an income percentage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all four parameters are documented and the baseline is 3. The description does add the Y-1 guideline-year mapping, but it never mentions the optional household_income parameter or what it is for, leaving that input's role to the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Returns the federal poverty line') plus the exact scope (coverage year, household size, state) and the derived thresholds returned. An agent can distinguish this pure lookup from the sibling calculation tools (calculate_premium_tax_credit, check_subsidy_cliff) without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operating context: the coverage-year-to-guideline-year rule and the AK/HI/rest-of-country split tell the agent how to frame a call. It never explicitly says when to use this versus the sibling tools that consume an FPL, so the routing is inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
- First observed
calculate_premium_tax_credit - First observed
check_subsidy_cliff - First observed
get_aptc_repayment_cap - First observed
get_federal_poverty_level
Related MCP Connectors
ACA health insurance eligibility, subsidy checker, and enrollment dates for 2026.
2025-2028 car loan interest deduction, SALT cap, child tax credit and 2026 tax brackets (IRS).
2026 US estate and gift tax: $15M exemption (P.L. 119-21), 40% rates, annual exclusion, DSUE.
US federal 2026 tax brackets, standard deductions, payroll and retirement limits, sourced.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables calculation of 2025–2028 federal car loan interest deductions, SALT caps, child tax credits, and 2025–2026 tax brackets and standard deductions using IRS-based tools.4MIT

WealthSchemaofficial
AlicenseAqualityCmaintenanceCited 2026 and 2027 U.S. financial-planning figures (IRS, SSA, CMS), synthetic household samples, and an AI financial-advice benchmark.8MIT- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to check ACA subsidy eligibility, get enrollment dates, and provide HealthCovered contact information for free assistance.-
- AlicenseAqualityCmaintenanceEnables calculation of federal estate and gift tax under 2026 rules, including exemption amounts, annual gift exclusions, gift splitting, non-citizen spouse gifts, portability/DSUE, and year comparisons.4MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.