# SwitchWize MCP

> Sixteen read-only US rate, savings-gap, Fed, card and CD tools with sources and freshness.

- name: io.github.switchwize/switchwize-mcp
- version: 0.3.0
- connection class: R0 (autonomous)
- trust: 97/100
- quality: 79/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.switchwize%2Fswitchwize-mcp
- tools: https://api.protogrid.dev/v1/servers/io.github.switchwize%2Fswitchwize-mcp/tools

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

## Connection (mcpServers)

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


## Trust

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

## Quality 79/100 (good)

### 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: 100 (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
- pass `tools.annotations`: 16 of 16 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 3,016 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 25 (weight 15)

- warn `stability.changes`: 22 tool changes in 30 days
- fail `stability.rug_pull`: 4 tools kept their name but changed most of their description in 30 days; review before trusting them

### dependencies: 100 (weight 15)

- pass `deps.known_vulns`: no known advisory in 99 resolved packages
- pass `deps.mcp_sdk_version`: @modelcontextprotocol/sdk 1.32.1, no known advisory
- pass `deps.resolvable`: switchwize-mcp@0.3.0 resolved: 99 packages

- tools: 16, about 3,016 tokens to load them all
- tool set hash: a8b7b9b580f861fa9b02e7e96b672315
- tools last changed: 2026-10-20T01:02:22.111Z
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.switchwize/switchwize-mcp.svg)](https://protogrid.dev/servers/io.github.switchwize/switchwize-mcp)
- 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-20 `get_top_hysa_rates` changed (outputSchema)
- 2026-10-20 `get_top_rates` changed (outputSchema)
- 2026-10-13 `get_reality_score` changed (description, outputSchema)
  - before: Estimate the modeled annual value of a supported premium credit card for a consumer segment. Supply a card slug or name and optionally a segment ID; the default is occasional-traveler. Return the segment assumptions, Reality Score, realized rewards, credits and perks, annual fee, interest drag, friction discount, net realized value and caveats, with source links, verification date, freshness and methodology. These are scenario estimates, not personalized advice or guaranteed benefits. Preserve stale or unavailable labels; do not present old card terms as current. Unknown cards or segments return a structured error with suggestions.
  - after: Estimate the modeled annual value of a supported premium credit card for a consumer segment. Supply a card slug or name and optionally a segment ID; the default is occasional-traveler. Return segment assumptions, score, rewards, credits, perks, fee, interest, friction, net value, caveats, sources, verification date, freshness and methodology. Gross recovered value is rewards + credits + perks. breakageMultiplier is gross recovered value / advertised value, NOT divided by annual fee. feeRecoveryMultiplier is max(0, gross recovered value - interest drag - rewards friction discount) / annual fee, before subtracting the fee. Friction applies to raw rewards only. Reality Score is 100 * net realized value / advertised value. Ratios are rounded. These are scenario estimates, not personalized advice or guaranteed benefits. Preserve stale or unavailable labels; do not infer that all terms share the observation date. Unknown cards or segments return a structured error with suggestions.
- 2026-10-11 `get_fed_hike_pass_through` changed (outputSchema)
- 2026-10-11 `get_card_downgrade_path` changed (outputSchema)
- 2026-10-11 `get_cd_rollover_rules` changed (outputSchema)
- 2026-10-11 `best_move_this_week` changed (outputSchema)
- 2026-10-11 `get_reward_valuations` changed (outputSchema)
- 2026-10-11 `get_card_changes` changed (outputSchema)
- 2026-10-11 `get_transfer_bonuses` changed (outputSchema)

Full history: https://api.protogrid.dev/v1/servers/io.github.switchwize%2Fswitchwize-mcp/changes

## Dependencies

- npm switchwize-mcp@0.3.0: resolved, 98 dependencies, MCP SDK @modelcontextprotocol/sdk 1.32.1

Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0.

## Remotes

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

## Packages

- npm switchwize-mcp@0.3.0

## Tools (16)

- `best_move_this_week`: Given the credit cards a user holds, rank this week's dollar-valued actions: which held card to use per spend category, welcome offers at a 12-month high on cards not held, active transfer bonuses, and (optionally) the savings-rate move beside the card move.
- `compare_switch_savings`: Compare a user's current APY with SwitchWize's current top savings APY for a balance.
- `get_bank_gap`: Estimate annual savings interest forgone for a supplied balance and optional bank name. comparisonApy is the average of the top three tracked savings rates, not an average across all banks; bankCount is the size of the tracked set. baselineApy is the named bank's APY, or the national savings benchmark when no bank is supplied. Return annualGap, APYs, observation date, freshness and methodology. This is a hypothetical estimate, not guaranteed savings or an account recommendation; verify eligibility, fees and current provider terms.
- `get_bank_gap_index`: Return the current SwitchWize Bank Gap Index headline value, latest release, and methodology URL.
- `get_card_changes`: Return recent verified credit-card fee and APR changes, most recent first. Each event is a diff between two confirmed snapshots of the same card.
- `get_card_downgrade_path`: Return verified credit-card product-change (downgrade) paths and the issuer's fee-refund window: which no-fee or lower-fee card a given card can be product-changed to, and how long after the annual fee posts a refund is available on cancellation. Optionally filtered to one card id (issuer:slug); returns every verified path and window when omitted.
- `get_card_offers`: Return current credit-card welcome-bonus offers (non-targeted, confidence-gated), each with a verified timestamp, source URL, and the card's own 12-month best.
- `get_cd_rollover_rules`: Return verified CD rollover rules for one bank, or every bank SwitchWize has verified: what happens automatically at maturity if the customer does nothing, the grace period, how to stop the rollover, and the early-withdrawal penalty. Each fact is sourced directly from the bank's own disclosure; an unverified field is omitted, never guessed.
- `get_fed_hike_pass_through`: Return how much of the latest Federal Reserve rate hike each tracked savings account has passed through to savers so far: rate before the hike, rate now, change in basis points, pass-through share, and days until the bank moved. One source per bank; each row carries its source type and observation dates. Optionally filtered to one institution id.
- `get_index_dataset`: Return a SwitchWize index dataset summary and recent series.
- `get_rate_freshness`: Return public data source freshness status and affected routes.
- `get_reality_score`: Estimate the modeled annual value of a supported premium credit card for a consumer segment. Supply a card slug or name and optionally a segment ID; the default is occasional-traveler. Return segment assumptions, score, rewards, credits, perks, fee, interest, friction, net value, caveats, sources, verification date, freshness and methodology. Gross recovered value is rewards + credits + perks. breakageMultiplier is gross recovered value / advertised value, NOT divided by annual fee. feeRecoveryMultiplier is max(0, gross recovered value - interest drag - rewards friction discount) / annual fee, before subtracting the fee. Friction applies to raw rewards only. Reality Score is 100 * net realized value / advertised value. Ratios are rounded. These are scenario estimates, not personalized advice or guaranteed benefits. Preserve stale or unavailable labels; do not infer that all terms share the observation date. Unknown cards or segments return a structured error with suggestions.
- `get_reward_valuations`: Return SwitchWize points/miles valuations (cents per point) per reward currency, with sample size and provisional/published status.
- `get_top_hysa_rates`: Return top high-yield savings rates with freshness and attribution. Answers only from the editor-approved snapshot; before its first release it returns no ranked rates and says so (approval_status: not_yet_approved). approvedOnly makes the requirement explicit. detail=full adds every listed account marked verified or tracked, best picks, movers, history and a headline summary.
- `get_top_rates`: Return top SwitchWize rates with freshness and attribution. Savings, CDs, checking and money market answer only from their editor-approved snapshot. A category with no approved release yet returns no ranked rates and says so (approval_status: not_yet_approved) rather than serving unverified observations; approvedOnly makes that requirement explicit. Approved responses include product terms and field evidence; stale or unavailable releases return no ranked rates. detail=full (savings) adds the complete shared build: every listed account marked verified or tracked, best picks, movers, history and a headline summary.
- `get_transfer_bonuses`: Return current point-transfer bonuses across tracked bank-to-partner routes, each with a verified timestamp, source URL, and best-ever-for-route when real history exists.
