# Numeratica — financial planning calculations (remote · api.numeratica.com)

Deterministic US financial planning: retirement Monte Carlo, Roth conversion, RMD, tax, IRMAA, SS

- Trust score: 55/100 (low)
- Change this week: +7
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `api.numeratica.com`: 55/100 (this document), [markdown](https://verifymcp.io/servers/com-numeratica-mcp/api.md), [page](https://verifymcp.io/servers/com-numeratica-mcp/api)
- npm · `@numeratica/mcp`: 49/100, [markdown](https://verifymcp.io/servers/com-numeratica-mcp/numeratica-mcp.md), [page](https://verifymcp.io/servers/com-numeratica-mcp/numeratica-mcp)

## Channel facts

- Endpoint: `https://api.numeratica.com/mcp`
- Transports: `streamable-http`
- Auth: `required`
- Version: `0.1.5`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 60/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 76 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC is configured correctly; the domain's records validate against the full chain to the root.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 30/100
  - AI-judged instruction clarity (poor).
  - Context-footprint check failed: tool/resource definitions use about 10438 tokens (~137/item across 76 items; 76 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 23/100
  - Stability observed for 7 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 67/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 0% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http com-numeratica-mcp https://api.numeratica.com/mcp
```

### Codex

```toml
[mcp_servers.com-numeratica-mcp]
url = "https://api.numeratica.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-numeratica-mcp": {
      "type": "remote",
      "url": "https://api.numeratica.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add com-numeratica-mcp --url https://api.numeratica.com/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  com-numeratica-mcp:
    url: "https://api.numeratica.com/mcp"
```

### Other

```json
{
  "mcpServers": {
    "com-numeratica-mcp": {
      "type": "http",
      "url": "https://api.numeratica.com/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-02 (score 55, +1)

No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-01 (score 54, +4)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-31 (score 50, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 50, +1)

No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-29 (score 49, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-28 (score 48, 0)

- [functional improvement] Stability: unverified → 0.03

### 2026-07-27 (score 48)

First indexed and scored.

## MCP tools (76)

### `annuity` (~146 tokens)

Annuity. Numeratica POST /v1/annuity — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `age` (integer)
- `assumed_rate` (number)
- `payout_type` (string)
- `period_certain_years` (integer)
- `premium` (number)
- `second_age` (integer)
- `second_sex` (string)
- `sex` (string)
- `start_age` (integer)
- `survivor_pct` (number)
- `target_income` (number)

### `benefits_dependent_care` (~126 tokens)

Benefits dependent care. Numeratica POST /v1/benefits/dependent-care — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `dependent_care_expenses` (number)
- `filing_status` (string)
- `fsa_contribution_limit` (number)
- `marginal_tax_rate` (number)
- `ordinary_income` (number)
- `qualifying_count` (integer)
- `tax_year` (integer)

### `benefits_health_plan` (~130 tokens)

Benefits health plan. Numeratica POST /v1/benefits/health-plan — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `employer_hsa_seed` (number)
- `expected_medical_spend` (number)
- `hdhp` (object)
- `hsa_contribution` (number)
- `marginal_tax_rate` (number)
- `ppo` (object)
- `ppo_fsa_contribution` (number)

### `capital_market_assumptions` (~86 tokens)

Capital market assumptions. Numeratica POST /v1/capital-market-assumptions — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `assets` (array)
- `correlation` (array)
- `default_correlation` (number)

### `cashflow_npv_irr` (~92 tokens)

Cashflow npv irr. Numeratica POST /v1/cashflow/npv-irr — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `cashflows` (array)
- `dated_cashflows` (array)
- `rate` (number)

### `college_savings` (~122 tokens)

College savings. Numeratica POST /v1/college-savings — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `annual_cost_today` (number)
- `college_start_age` (integer)
- `current_child_age` (integer)
- `current_savings` (number)
- `expected_return` (number)
- `tuition_inflation` (number)
- `years_in_college` (integer)

### `contribution_limits` (~152 tokens)

Contribution limits. Numeratica POST /v1/contribution-limits — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `age` (integer)
- `compensation` (number)
- `elective_deferral_ytd` (number)
- `employer_match_cap_pct` (number)
- `employer_match_rate` (number)
- `hsa_contribution_ytd` (number)
- `hsa_coverage` (string)
- `ira_contribution_ytd` (number)
- `prior_year_wages` (number)
- `tax_year` (integer)

### `debt_payoff` (~80 tokens)

Debt payoff. Numeratica POST /v1/debt-payoff — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `debts` (array)
- `monthly_budget` (number)
- `strategy` (string)

### `debt_vs_invest` (~167 tokens)

Debt vs invest. Numeratica POST /v1/debt-vs-invest — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `annual_fee_rate` (number)
- `expected_return` (number)
- `extra_monthly` (number)
- `horizon_years` (integer)
- `interest_deductible` (boolean)
- `loan_annual_rate` (number)
- `loan_balance` (number)
- `loan_minimum_payment` (number)
- `marginal_rate` (number)
- `num_simulations` (integer)
- `return_volatility` (number)
- `seed` (integer)

### `education_529_to_roth` (~140 tokens)

Education 529 to roth. Numeratica POST /v1/education/529-to-roth — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `account_age_years` (integer)
- `balance` (number)
- `beneficiary_age` (integer)
- `beneficiary_earned_income` (number)
- `lifetime_rolled_already` (number)
- `other_ira_contributions` (number)
- `recent_contributions` (number)
- `year` (integer)

### `education_aid_estimate` (~239 tokens)

Education aid estimate. Numeratica POST /v1/education/aid-estimate — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `award_year` (integer)
- `cost_of_attendance` (number)
- `family_size` (integer)
- `parent2_earned_income` (number)
- `parent_agi` (number)
- `parent_business_farm_worth` (number)
- `parent_cash_savings` (number)
- `parent_earned_income` (number)
- `parent_filing_status` (string)
- `parent_income_tax_paid` (number)
- `parent_investments_net` (number)
- `parent_untaxed_income` (number)
- `single_parent` (boolean)
- `student_agi` (number)
- `student_assets` (number)
- `student_earned_income` (number)
- `student_income_tax_paid` (number)
- `student_untaxed_income` (number)

### `education_student_loan` (~146 tokens)

Education student loan. Numeratica POST /v1/education/student-loan — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `agi` (number)
- `dependents` (integer)
- `family_size` (integer)
- `guideline_year` (integer)
- `interest_rate` (number)
- `loan_balance` (number)
- `loan_before_2014` (boolean)
- `pursuing_pslf` (boolean)
- `standard_term_months` (integer)
- `state` (string)

### `education_student_loan_refi` (~102 tokens)

Education student loan refi. Numeratica POST /v1/education/student-loan-refi — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `discount_rate` (number)
- `federal` (object)
- `refi_rate` (number)
- `refi_term_months` (integer)

### `equity_comp_espp` (~104 tokens)

Equity comp espp. Numeratica POST /v1/equity-comp/espp — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `discount_pct` (number)
- `offering_date_price` (number)
- `purchase_date_price` (number)
- `sale_price` (number)
- `shares` (number)

### `equity_comp_iso` (~130 tokens)

Equity comp iso. Numeratica POST /v1/equity-comp/iso — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `filing_status` (string)
- `fmv_at_exercise` (number)
- `ordinary_income` (number)
- `other_amt_preference_items` (number)
- `sale_price` (number)
- `shares` (number)
- `strike_price` (number)
- `tax_year` (integer)

### `equity_comp_iso_amt_capacity` (~123 tokens)

Equity comp iso amt capacity. Numeratica POST /v1/equity-comp/iso-amt-capacity — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `filing_status` (string)
- `fmv_at_exercise` (number)
- `ordinary_income` (number)
- `other_amt_preference_items` (number)
- `strike_price` (number)
- `tax_year` (integer)

### `equity_comp_iso_schedule` (~155 tokens)

Equity comp iso schedule. Numeratica POST /v1/equity-comp/iso-schedule — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `annual_amt_budget` (number)
- `annual_fmv_growth` (number)
- `annual_income_growth` (number)
- `annual_ordinary_income` (number)
- `filing_status` (string)
- `fmv_at_start` (number)
- `horizon_years` (integer)
- `strike_price` (number)
- `tax_year` (integer)
- `total_shares` (number)

### `equity_comp_nso` (~114 tokens)

Equity comp nso. Numeratica POST /v1/equity-comp/nso — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `filing_status` (string)
- `fmv_at_exercise` (number)
- `other_ordinary_income` (number)
- `shares` (number)
- `strike_price` (number)
- `tax_year` (integer)

### `equity_comp_nua` (~147 tokens)

Equity comp nua. Numeratica POST /v1/equity-comp/nua — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `cost_basis` (number)
- `discount_rate` (number)
- `filing_status` (string)
- `growth_rate` (number)
- `ltcg_rate` (number)
- `marginal_ordinary_rate` (number)
- `market_value` (number)
- `sale_price` (number)
- `tax_year` (integer)
- `years_to_sale` (integer)

### `equity_comp_rsu` (~108 tokens)

Equity comp rsu. Numeratica POST /v1/equity-comp/rsu — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `filing_status` (string)
- `fmv_at_vest` (number)
- `other_ordinary_income` (number)
- `shares` (number)
- `tax_year` (integer)

### `equity_comp_section_83b` (~133 tokens)

Equity comp section 83b. Numeratica POST /v1/equity-comp/section-83b — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `filing_status` (string)
- `fmv_at_grant` (number)
- `fmv_at_vest` (number)
- `other_ordinary_income` (number)
- `price_paid` (number)
- `shares` (number)
- `tax_year` (integer)

### `goal_funding` (~109 tokens)

Goal funding. Numeratica POST /v1/goal-funding — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `annual_return` (number)
- `contributions_at_beginning` (boolean)
- `current_savings` (number)
- `periods_per_year` (integer)
- `target_amount` (number)
- `years` (number)

### `healthcare_aca_optimize` (~172 tokens)

Healthcare aca optimize. Numeratica POST /v1/healthcare/aca-optimize — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `age` (integer)
- `base_income` (number)
- `benchmark_annual_premium` (number)
- `deferred_balance` (number)
- `filing_status` (string)
- `household_size` (integer)
- `roth_balance` (number)
- `spending_need` (number)
- `state` (string)
- `tax_exempt_interest` (number)
- `tax_year` (integer)
- `taxable_balance` (number)
- `taxable_gain_fraction` (number)

### `healthcare_costs` (~116 tokens)

Healthcare costs. Numeratica POST /v1/healthcare-costs — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `age` (integer)
- `benchmark_annual_premium` (number)
- `coverage_year` (integer)
- `filing_status` (string)
- `household_size` (integer)
- `magi` (number)
- `state` (string)

### `inflation_adjust` (~86 tokens)

Inflation adjust. Numeratica POST /v1/inflation-adjust — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `amount` (number)
- `annual_rate` (number)
- `direction` (string)
- `years` (integer)

### `inherited_ira` (~135 tokens)

Inherited ira. Numeratica POST /v1/inherited-ira — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `account_growth_rate` (number)
- `annual_rmd_floor` (number)
- `filing_status` (string)
- `inherited_balance` (number)
- `other_income` (number)
- `other_income_schedule` (array)
- `target_bracket` (number)
- `tax_year` (integer)
- `years` (integer)

### `insurance_disability_needs` (~168 tokens)

Insurance disability needs. Numeratica POST /v1/insurance/disability-needs — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `employer_group_fraction` (number)
- `employer_group_monthly_max` (number)
- `employer_paid_premium` (boolean)
- `essential_monthly_expenses` (number)
- `gross_annual_income` (number)
- `individual_monthly_benefit` (number)
- `marginal_tax_rate` (number)
- `ssdi_monthly_benefit` (number)
- `ssdi_offsets_group` (boolean)
- `target_replacement_fraction` (number)

### `insurance_life_needs` (~198 tokens)

Insurance life needs. Numeratica POST /v1/insurance/life-needs — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `annual_income` (number)
- `debts` (number)
- `education_fund` (number)
- `effective_tax_rate` (number)
- `emergency_fund` (number)
- `existing_assets` (number)
- `existing_life_insurance` (number)
- `final_expenses` (number)
- `income_replace_fraction` (number)
- `income_replace_years` (integer)
- `mortgage_balance` (number)
- `real_return` (number)
- `self_consumption_fraction` (number)
- `survivor_annual_income` (number)
- `years_to_retirement` (integer)

### `insurance_long_term_care` (~176 tokens)

Insurance long term care. Numeratica POST /v1/insurance/long-term-care — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `annual_care_cost_today` (number)
- `annual_premium` (number)
- `care_cost_inflation` (number)
- `care_duration_years` (integer)
- `care_start_age` (integer)
- `current_age` (integer)
- `discount_rate` (number)
- `policy_annual_benefit` (number)
- `policy_benefit_inflation` (number)
- `policy_benefit_years` (integer)
- `premium_years` (integer)

### `ira_eligibility` (~149 tokens)

Ira eligibility. Numeratica POST /v1/ira-eligibility — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `age` (integer)
- `compensation` (number)
- `covered_by_workplace_plan` (boolean)
- `elective_deferral` (number)
- `employer_contributions` (number)
- `filing_status` (string)
- `magi` (number)
- `plan_allows_mega_backdoor` (boolean)
- `spouse_covered` (boolean)
- `tax_year` (integer)

### `loan_amortization` (~103 tokens)

Loan amortization. Numeratica POST /v1/loan/amortization — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `annual_rate` (number)
- `extra_monthly_payment` (number)
- `include_schedule` (boolean)
- `principal` (number)
- `term_months` (integer)

### `longevity` (~105 tokens)

Longevity. Numeratica POST /v1/longevity — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `age` (integer)
- `health_adjustment` (number)
- `second_age` (integer)
- `second_health_adjustment` (number)
- `second_sex` (string)
- `sex` (string)

### `medicare_irmaa` (~80 tokens)

Medicare IRMAA: Part B and Part D income-related monthly adjustment by tier, plus headroom to the next tier. MAGI uses the 2-year lookback; filing_status is single/mfj/mfs.

Input parameters:

- `filing_status` (string)
- `irmaa_year` (integer)
- `magi` (number)

### `medicare_late_enrollment_penalty` (~111 tokens)

Medicare late enrollment penalty. Numeratica POST /v1/medicare/late-enrollment-penalty — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `part_b_months_late` (integer)
- `part_d_months_late` (integer)
- `projection_years` (integer)
- `year` (integer)

### `mortgage_affordability` (~160 tokens)

Mortgage affordability. Numeratica POST /v1/mortgage/affordability — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `annual_income` (number)
- `back_end_dti` (number)
- `down_payment` (number)
- `front_end_dti` (number)
- `hoa_monthly` (number)
- `insurance_rate` (number)
- `interest_rate` (number)
- `monthly_debts` (number)
- `pmi_rate` (number)
- `property_tax_rate` (number)
- `term_months` (integer)

### `mortgage_points` (~100 tokens)

Mortgage points. Numeratica POST /v1/mortgage/points — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `base_rate` (number)
- `buydown_rate` (number)
- `loan_amount` (number)
- `points` (number)
- `term_months` (integer)

### `mortgage_refinance` (~126 tokens)

Mortgage refinance. Numeratica POST /v1/mortgage/refinance — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `closing_costs` (number)
- `current_balance` (number)
- `current_rate` (number)
- `current_remaining_months` (integer)
- `new_rate` (number)
- `new_term_months` (integer)
- `roll_in_closing_costs` (boolean)

### `mortgage_rent_vs_buy` (~215 tokens)

Mortgage rent vs buy. Numeratica POST /v1/mortgage/rent-vs-buy — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `closing_cost_rate` (number)
- `down_payment` (number)
- `hoa_monthly` (number)
- `holding_period_months` (integer)
- `home_appreciation` (number)
- `home_price` (number)
- `inflation` (number)
- `insurance_rate` (number)
- `investment_return` (number)
- `loan_term_months` (integer)
- `maintenance_rate` (number)
- `monthly_rent` (number)
- `mortgage_rate` (number)
- `property_tax_rate` (number)
- `rent_growth` (number)
- `renters_insurance_monthly` (number)
- `selling_cost_rate` (number)

### `mortgage_term_comparison` (~115 tokens)

Mortgage term comparison. Numeratica POST /v1/mortgage/term-comparison — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `investment_return` (number)
- `loan_amount` (number)
- `long_rate` (number)
- `long_term_months` (integer)
- `short_rate` (number)
- `short_term_months` (integer)

### `pension_lump_sum_vs_annuity` (~139 tokens)

Pension lump sum vs annuity. Numeratica POST /v1/pension/lump-sum-vs-annuity — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `cola_rate` (number)
- `current_age` (integer)
- `discount_rate` (number)
- `end_age` (integer)
- `lump_sum_offer` (number)
- `monthly_pension` (number)
- `survivor_end_age` (integer)
- `survivor_pct` (number)

### `portfolio_glidepath` (~160 tokens)

Portfolio glidepath. Numeratica POST /v1/portfolio/glidepath — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `current_age` (integer)
- `end_age` (integer)
- `end_equity` (number)
- `equity_ceiling` (number)
- `equity_floor` (number)
- `final_age` (integer)
- `final_equity` (number)
- `glide_type` (string)
- `method` (string)
- `retirement_age` (integer)
- `rule_base` (number)
- `start_equity` (number)

### `portfolio_rebalance` (~98 tokens)

Portfolio rebalance. Numeratica POST /v1/portfolio/rebalance — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `band` (number)
- `holdings` (array)
- `new_contribution` (number)
- `tax_aware` (boolean)
- `withdrawal` (number)

### `retirement_accumulation_projection` (~171 tokens)

Retirement accumulation projection. Numeratica POST /v1/retirement/accumulation-projection — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `accounts` (array)
- `annual_fee_rate` (number)
- `current_age` (integer)
- `employer_match_limit` (number)
- `employer_match_rate` (number)
- `escalation_rate` (number)
- `expected_return` (number)
- `glide_path` (array)
- `inflation` (number)
- `num_simulations` (integer)
- `return_volatility` (number)
- `seed` (integer)
- `years` (integer)

### `retirement_backdoor_roth` (~154 tokens)

Retirement backdoor roth. Numeratica POST /v1/retirement/backdoor-roth — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `age` (integer)
- `conversion_amount` (number)
- `elective_deferrals` (number)
- `employer_contributions` (number)
- `existing_basis` (number)
- `filing_status` (string)
- `nondeductible_contribution` (number)
- `plan_after_tax_limit` (number)
- `pretax_ira_balance` (number)
- `tax_year` (integer)

### `retirement_hsa` (~141 tokens)

Retirement hsa. Numeratica POST /v1/retirement/hsa — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `age` (integer)
- `annual_contribution` (number)
- `coverage` (string)
- `current_balance` (number)
- `expected_return` (number)
- `marginal_rate` (number)
- `months_eligible` (integer)
- `tax_year` (integer)
- `use_last_month_rule` (boolean)
- `years` (integer)

### `retirement_monte_carlo` (~189 tokens)

Monte Carlo retirement projection: probability of not running out of money over a horizon, with percentile balance bands. Deterministic given a seed (returned in the result).

Input parameters:

- `annual_contribution` (number)
- `annual_fee_rate` (number)
- `annual_spending` (number)
- `assets` (array)
- `correlations` (array)
- `current_age` (integer)
- `current_balance` (number)
- `end_age` (integer)
- `expected_return` (number)
- `glide_path` (array)
- `guaranteed_income` (array)
- `inflation` (number)
- `num_simulations` (integer)
- `rebalance` (boolean)
- `retirement_age` (integer)
- `return_volatility` (number)
- `seed` (integer)
- `spending_rule` (object)

### `retirement_qlac` (~126 tokens)

Retirement qlac. Numeratica POST /v1/retirement/qlac — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `account_balance` (number)
- `age` (integer)
- `assumed_rate` (number)
- `birth_year` (integer)
- `qlac_premium` (number)
- `sex` (string)
- `start_age` (integer)
- `tax_year` (integer)

### `retirement_rmd` (~81 tokens)

Required Minimum Distribution: prior-year-end balance divided by the IRS distribution period. Uniform Lifetime by default; Single Life (inherited/beneficiary) via table=single.

Input parameters:

- `account_balance` (number)
- `age` (integer)
- `birth_year` (integer)
- `second_age` (integer)
- `table` (string)

### `retirement_savings_target` (~179 tokens)

Retirement savings target. Numeratica POST /v1/retirement/savings-target — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `annual_fee_rate` (number)
- `current_age` (integer)
- `current_savings` (number)
- `end_age` (integer)
- `expected_return` (number)
- `inflation` (number)
- `num_simulations` (integer)
- `other_income` (number)
- `retirement_age` (integer)
- `return_volatility` (number)
- `seed` (integer)
- `success_probability_target` (number)
- `target_annual_income` (number)
- `withdrawal_rate` (number)

### `retirement_self_employed` (~95 tokens)

Retirement self employed. Numeratica POST /v1/retirement/self-employed — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `age` (integer)
- `existing_w2_deferrals` (number)
- `net_profit` (number)
- `tax_year` (integer)

### `retirement_sepp` (~83 tokens)

Retirement sepp. Numeratica POST /v1/retirement/sepp — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `account_balance` (number)
- `age` (integer)
- `interest_rate` (number)

### `retirement_survivor_scenario` (~120 tokens)

Retirement survivor scenario. Numeratica POST /v1/retirement/survivor-scenario — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `deceased_spouse` (string)
- `on_medicare` (boolean)
- `shared_ordinary_income` (number)
- `spouse_a` (object)
- `spouse_b` (object)
- `tax_year` (integer)

### `retirement_withdrawal_sequencing` (~189 tokens)

Retirement withdrawal sequencing. Numeratica POST /v1/retirement/withdrawal-sequencing — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `age` (integer)
- `birth_year` (integer)
- `bracket_ceiling` (number)
- `filing_status` (string)
- `other_ordinary_income` (number)
- `other_qualified_income` (number)
- `spending_need` (number)
- `state_tax_rate` (number)
- `strategy` (string)
- `tax_deferred_balance` (number)
- `tax_free_balance` (number)
- `tax_year` (integer)
- `taxable_balance` (number)
- `taxable_cost_basis_fraction` (number)

### `retirement_withdrawal_strategy` (~192 tokens)

Dynamic retirement spending strategies over Monte Carlo paths: fixed_real, fixed_pct, guardrails (Guyton-Klinger), vpw, floor_and_ceiling. Returns the spending path, success probability, and ending bands.

Input parameters:

- `annual_fee_rate` (number)
- `ceiling_mult` (number)
- `current_age` (integer)
- `current_balance` (number)
- `end_age` (integer)
- `expected_return` (number)
- `floor_mult` (number)
- `glide_path` (array)
- `guard_adjust` (number)
- `guard_width` (number)
- `inflation` (number)
- `initial_rate` (number)
- `num_simulations` (integer)
- `return_volatility` (number)
- `seed` (integer)
- `strategy` (string)
- `vpw_real_return` (number)

### `roth_conversion` (~193 tokens)

Multi-year Roth conversion ladder (bracket-fill, IRMAA-aware) vs. a no-conversion baseline, with a year-by-year schedule and after-tax comparison. Optional pay-tax-from-external-funds.

Input parameters:

- `annual_return` (number)
- `birth_year` (integer)
- `conversion_end_age` (integer)
- `current_age` (integer)
- `end_age` (integer)
- `external_return` (number)
- `external_taxable_balance` (number)
- `filing_status` (string)
- `irmaa_tier_cap` (integer)
- `other_ordinary_income` (number)
- `pay_tax_from_external` (boolean)
- `roth_balance` (number)
- `state_tax_rate` (number)
- `target_bracket` (number)
- `tax_deferred_balance` (number)
- `tax_year` (integer)

### `roth_vs_traditional` (~129 tokens)

Roth vs traditional. Numeratica POST /v1/roth-vs-traditional — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `annual_contribution` (number)
- `capital_gains_rate` (number)
- `current_marginal_rate` (number)
- `expected_return` (number)
- `invest_tax_savings` (boolean)
- `retirement_marginal_rate` (number)
- `years` (integer)

### `savings_waterfall` (~155 tokens)

Savings waterfall. Numeratica POST /v1/savings-waterfall — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `age` (integer)
- `annual_savings` (number)
- `compensation` (number)
- `covered_by_workplace_plan` (boolean)
- `employer_match_cap_pct` (number)
- `employer_match_rate` (number)
- `filing_status` (string)
- `hsa_coverage` (string)
- `magi` (number)
- `prior_year_wages` (number)
- `tax_year` (integer)

### `social_security` (~135 tokens)

Social Security claiming analysis (ages 62-70): monthly/lifetime benefit, breakeven, optimal claim age. Optional earnings test, spousal/survivor/divorced household, and COLA.

Input parameters:

- `annual_earnings` (number)
- `birth_year` (integer)
- `claim_age` (integer)
- `cola_rate` (number)
- `discount_rate` (number)
- `earnings_test_year` (integer)
- `longevity_age` (integer)
- `pia_monthly` (number)
- `spouse` (object)
- `survivor_claim_age` (integer)

### `social_security_couple_claim` (~88 tokens)

Social security couple claim. Numeratica POST /v1/social-security/couple-claim — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `discount_rate` (number)
- `spouse_a` (object)
- `spouse_b` (object)

### `tax_asset_location` (~109 tokens)

Tax asset location. Numeratica POST /v1/tax/asset-location — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `assets` (array)
- `filing_status` (string)
- `tax_advantaged_balance` (number)
- `tax_year` (integer)
- `taxable_balance` (number)
- `taxable_income` (number)

### `tax_bracket_room` (~85 tokens)

Tax bracket room. Numeratica POST /v1/tax/bracket-room — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `filing_status` (string)
- `tax_year` (integer)
- `taxable_income` (number)

### `tax_estimate` (~413 tokens)

Federal income tax estimate (2025/2026): ordinary brackets, standard/itemized deduction, LTCG stacking, NIIT, Additional Medicare; optional AMT (include_amt) and real per-state tax via the state field. filing_status is one of single/mfj/mfs/hoh.

Input parameters:

- `adoption_expenses` (number)
- `adoption_special_needs` (boolean)
- `aged_blind_count` (integer)
- `amt_preference_items` (number)
- `aotc_student_expenses` (array)
- `charitable_contributions` (number)
- `dependent_care_count` (integer)
- `dependent_care_expenses` (number)
- `eitc_qualifying_children` (integer)
- `filing_status` (string)
- `force_itemize` (boolean)
- `include_amt` (boolean)
- `include_credits` (boolean)
- `include_itemized_limit` (boolean)
- `include_qbi` (boolean)
- `itemized_deductions` (number)
- `llc_expenses` (number)
- `net_investment_income` (number)
- `ordinary_income` (number)
- `other_dependents` (integer)
- `qbi` (number)
- `qbi_is_sstb` (boolean)
- `qbi_reit_ptp_dividends` (number)
- `qbi_ubia` (number)
- `qbi_w2_wages` (number)
- `qualified_income` (number)
- `qualifying_children` (integer)
- `retirement_contributions` (number)
- `salt_paid` (number)
- `senior_count` (integer)
- `social_security_income` (number)
- `state` (string)
- `state_tax_rate` (number)
- `state_taxable_income` (number)
- `tax_year` (integer)
- `wages` (number)

### `tax_estimated_tax` (~130 tokens)

Tax estimated tax. Numeratica POST /v1/tax/estimated-tax — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `estimated_payments` (array)
- `filing_status` (string)
- `prior_year_agi` (number)
- `prior_year_tax` (number)
- `projected_current_tax` (number)
- `tax_year` (integer)
- `underpayment_rate` (number)
- `withholding` (number)

### `tax_filing_status` (~86 tokens)

Tax filing status. Numeratica POST /v1/tax/filing-status — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `spouse_a` (object)
- `spouse_b` (object)
- `tax_year` (integer)

### `tax_gain_harvesting` (~104 tokens)

Tax gain harvesting. Numeratica POST /v1/tax/gain-harvesting — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `filing_status` (string)
- `magi` (number)
- `realize_amount` (number)
- `tax_year` (integer)
- `taxable_income` (number)

### `tax_liquidation_schedule` (~159 tokens)

Tax liquidation schedule. Numeratica POST /v1/tax/liquidation-schedule — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `cost_basis` (number)
- `filing_status` (string)
- `growth_rate` (number)
- `horizon_years` (integer)
- `market_value` (number)
- `max_annual_gain` (number)
- `objective` (string)
- `other_ltcg` (number)
- `other_ordinary_income` (number)
- `state_tax_rate` (number)
- `tax_year` (integer)

### `tax_marginal_map` (~205 tokens)

Tax marginal map. Numeratica POST /v1/tax/marginal-map — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `benchmark_annual_premium` (number)
- `filing_status` (string)
- `household_size` (integer)
- `include_aca` (boolean)
- `include_irmaa` (boolean)
- `medicare_beneficiaries` (integer)
- `ordinary_income` (number)
- `qualified_income` (number)
- `social_security_benefits` (number)
- `state` (string)
- `sweep_start` (number)
- `sweep_step` (number)
- `sweep_stop` (number)
- `sweep_variable` (string)
- `tax_exempt_interest` (number)
- `tax_year` (integer)

### `tax_qcd_plan` (~168 tokens)

Tax qcd plan. Numeratica POST /v1/tax/qcd-plan — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `age` (integer)
- `birth_year` (integer)
- `filing_status` (string)
- `intended_gift` (number)
- `ira_balance` (number)
- `medicare_beneficiaries` (integer)
- `ordinary_income` (number)
- `other_itemized` (number)
- `qualified_income` (number)
- `social_security_benefits` (number)
- `tax_exempt_interest` (number)
- `tax_year` (integer)

### `tax_qsbs_exclusion` (~134 tokens)

Tax qsbs exclusion. Numeratica POST /v1/tax/qsbs-exclusion — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `acquisition_date` (string)
- `basis` (number)
- `filing_status` (string)
- `gain` (number)
- `gross_assets_at_issuance` (number)
- `holding_period_years` (number)
- `other_income` (number)
- `tax_year` (integer)

### `tax_s_corp_salary` (~141 tokens)

Tax s corp salary. Numeratica POST /v1/tax/s-corp-salary — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `business_net_income` (number)
- `filing_status` (string)
- `max_salary` (number)
- `other_income` (number)
- `reasonable_comp_floor` (number)
- `sstb` (boolean)
- `state_tax_rate` (number)
- `tax_year` (integer)
- `ubia` (number)

### `tax_social_security_benefits` (~112 tokens)

Tax social security benefits. Numeratica POST /v1/tax/social-security-benefits — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `filing_status` (string)
- `marginal_ordinary_rate` (number)
- `other_income` (number)
- `social_security_benefits` (number)
- `tax_exempt_interest` (number)

### `tax_state_income` (~116 tokens)

Tax state income. Numeratica POST /v1/tax/state-income — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `age` (integer)
- `filing_status` (string)
- `pension_income` (number)
- `social_security_income` (number)
- `state` (string)
- `state_taxable_income` (number)
- `tax_year` (integer)

### `tax_survivor_transition` (~135 tokens)

Tax survivor transition. Numeratica POST /v1/tax/survivor-transition — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `conversion_amount` (number)
- `ordinary_income` (number)
- `qualified_income` (number)
- `social_security_higher` (number)
- `social_security_lower` (number)
- `survivor_ordinary_income` (number)
- `tax_exempt_interest` (number)
- `tax_year` (integer)

### `tax_tlh_benefit` (~126 tokens)

Tax tlh benefit. Numeratica POST /v1/tax/tlh-benefit — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `filing_status` (string)
- `growth_rate` (number)
- `harvestable_loss` (number)
- `offsettable_gains` (number)
- `reinvestment_years` (number)
- `tax_year` (integer)
- `taxable_income` (number)

### `tax_w4_checkup` (~122 tokens)

Tax w4 checkup. Numeratica POST /v1/tax/w4-checkup — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `pay_periods_remaining` (integer)
- `per_paycheck_withholding` (number)
- `prior_year_agi` (number)
- `prior_year_tax` (number)
- `tax` (object)
- `ytd_withheld` (number)

### `tvm` (~110 tokens)

Tvm. Numeratica POST /v1/tvm — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.

Input parameters:

- `fv` (number)
- `nper` (number)
- `payments_at_beginning` (boolean)
- `pmt` (number)
- `pv` (number)
- `rate` (number)
- `solve_for` (string)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/com-numeratica-mcp/api#diagnostics

## Score history

- 2026-08-03: 55
- 2026-08-02: 55
- 2026-08-01: 54
- 2026-07-31: 50
- 2026-07-30: 50
- 2026-07-29: 49
- 2026-07-28: 48
- 2026-07-27: 48

## Links

- Remote endpoint: https://api.numeratica.com/mcp
- Authorisation metadata: https://api.numeratica.com/.well-known/oauth-protected-resource/mcp
- Repository: https://github.com/numeratica/mcp
- Website: https://docs.numeratica.com/
- Changelog RSS feed: https://verifymcp.io/servers/com-numeratica-mcp/api/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/com-numeratica-mcp/api/changelog.json
- HTML version of this page: https://verifymcp.io/servers/com-numeratica-mcp/api
