# com.retirecrunch/calculators

> FIRE & retirement calculators + a multi-currency portfolio rebalancer (exact buy/sell trades).

- name: com.retirecrunch/calculators
- version: 0.3.0
- connection class: R0 (autonomous)
- trust: 93/100
- quality: 73/100 (needs work)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/com.retirecrunch%2Fcalculators
- tools: https://api.protogrid.dev/v1/servers/com.retirecrunch%2Fcalculators/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "calculators": {
      "type": "http",
      "url": "https://mcp.retirecrunch.com/mcp"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 100
- freshness: 100
- provenance: 75
- drivers: +repository +dns-namespace +reachable +uptime-100% +updated-15d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 73/100 (needs work)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 71 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- fail `tools.annotations`: no tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: get_portfolio_returns (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); calculate_fire_target (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); calculate_coast_fire (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
- pass `tools.token_cost`: about 3,387 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 75 (weight 15)

- warn `stability.changes`: 10 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 8, about 3,387 tokens to load them all
- tool set hash: 03a95f18f277380d44936933de0b3e23
- tools last changed: 2026-10-05T12:43:26.414Z
- badge: [![protogrid quality](https://protogrid.dev/badge/com.retirecrunch/calculators.svg)](https://protogrid.dev/servers/com.retirecrunch/calculators)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-05 `get_rebalance_plan` changed (inputSchema)
- 2026-10-05 `load_portfolio` changed (inputSchema)
- 2026-10-05 `rebalance_portfolio` changed (inputSchema)
- 2026-10-05 `get_portfolio_returns` changed (inputSchema)
- 2026-10-05 `project_wealth_plan` changed (inputSchema)
- 2026-10-05 `compute_swiss_property_tax` changed (inputSchema)
- 2026-10-05 `calculate_coast_fire` changed (inputSchema)
- 2026-10-05 `calculate_fire_target` changed (inputSchema)
- 2026-10-04 `get_rebalance_plan` added
  - Fetch the rebalancing trades the user decided on in the RetireCrunch Rebalancer, from the plan code they copied ("Send plan to my AI"). Codes work once, for 15 minutes. Returns the trades with IBKR contract ids where known. To act on them, create one IBKR order instruction per trade (create_order_instruction); the user reviews and submits each one inside IBKR. RetireCrunch never places orders.
- 2026-10-04 `load_portfolio` added
  - Open the user's Interactive Brokers portfolio in the RetireCrunch Portfolio Rebalancer. First call the IBKR connector's get_account_positions, get_account_balances and get_account_summary, then pass their results here UNCHANGED (do not re-type or round numbers). Returns a private link that works once, for 15 minutes — give it to the user exactly as written. No login is needed because the link itself is the key: the positions are encrypted with a key that exists only in the link, and RetireCrunch's server holds just that encrypted copy, which it cannot read, for at most 15 minutes and deletes it when the link is opened. Tell the user this, and that anyone holding the link can open it once, so it should not be shared. RetireCrunch does not recommend instruments or allocations: the user sets their own targets on the page.

Full history: https://api.protogrid.dev/v1/servers/com.retirecrunch%2Fcalculators/changes

## Remotes

- https://mcp.retirecrunch.com/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (8)

- `calculate_coast_fire`: Compute the Coast FIRE milestone — the capital required today such that, with no further contributions, a portfolio compounds to the user's retirement target by their target age.
- `calculate_fire_target`: Estimate the savings target needed for Financial Independence / Early Retirement. Runs Monte Carlo simulation and returns the probability the portfolio survives the planning horizon.
- `compute_swiss_property_tax`: Estimate the Swiss cantonal real-estate capital gains tax (Grundstückgewinnsteuer) for a property sale. Covers all 26 cantons with holding-period adjustments and Ersatzbeschaffung (replacement-residence) deferral. Educational estimate; commune surcharges and value-enhancing-improvement deductions are not modeled.
- `get_portfolio_returns`: Return RetireCrunch's historical portfolio return profiles for a currency. Each profile is a (return %, volatility %) pair derived from real index data — useful for grounding the assumptions in calculate_fire_target / project_wealth_plan in something defensible rather than guessing.
- `get_rebalance_plan`: Fetch the rebalancing trades the user decided on in the RetireCrunch Rebalancer, from the plan code they copied ("Send plan to my AI"). Codes work once, for 15 minutes. Returns the trades with IBKR contract ids where known. To act on them, create one IBKR order instruction per trade (create_order_instruction); the user reviews and submits each one inside IBKR. RetireCrunch never places orders.
- `load_portfolio`: Open the user's Interactive Brokers portfolio in the RetireCrunch Portfolio Rebalancer. First call the IBKR connector's get_account_positions, get_account_balances and get_account_summary, then pass their results here UNCHANGED (do not re-type or round numbers). Returns a private link that works once, for 15 minutes — give it to the user exactly as written. No login is needed because the link itself is the key: the positions are encrypted with a key that exists only in the link, and RetireCrunch's server holds just that encrypted copy, which it cannot read, for at most 15 minutes and deletes it when the link is opened. Tell the user this, and that anyone holding the link can open it once, so it should not be shared. RetireCrunch does not recommend instruments or allocations: the user sets their own targets on the page.
- `project_wealth_plan`: Run RetireCrunch's full year-by-year Wealth Plan projection for a household. Models earned income, pensions, expenses, portfolio growth, optional growth→income phase switch, mortgage amortization, optional property sale, and region-aware tax (US uses 2026 federal+state brackets; other regions use a flat rate). Returns a compact summary with 5-year milestones by default, or the full annual array when yearly_detail=true.
- `rebalance_portfolio`: Rebalance a multi-currency portfolio: given holdings, per-holding (or per-asset-class) target weights, cash and FX rates, return the exact BUY/SELL trades to reach the targets, the per-currency cash movements (flagging foreign-cash overdrafts), and a summary. Planning math only — no transaction costs or taxes.
