# SwitchWize MCP (remote · www.switchwize.com)

Verified US rate, savings-gap, card, CD, and product-change tools with freshness and sources.

- Trust score: 80/100 (high trust)
- Change this week: +5
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-24

## Components

- remote · `www.switchwize.com`: 80/100 (this document), [markdown](https://verifymcp.io/servers/switchwize-switchwize-mcp/api-mcp.md), [page](https://verifymcp.io/servers/switchwize-switchwize-mcp/api-mcp)
- npm · `switchwize-mcp`: 38/100, [markdown](https://verifymcp.io/servers/switchwize-switchwize-mcp/switchwize-mcp.md), [page](https://verifymcp.io/servers/switchwize-switchwize-mcp/switchwize-mcp)

## Channel facts

- Endpoint: `https://www.switchwize.com/api/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.2.2`

## 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-09-24.

- **Endpoint Security**: 80/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 84/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Tool/resource definitions use about 1252 tokens (~65/item across 19 items; 15 tools + 4 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 50/100
  - Stability observed for 15 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 90/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 64% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Tool Safety**: 75/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - 0 of 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "get_transfer_bonuses" implies "transfer" and declares readOnlyHint instead, contradicting what its own name says it does.
  - An AI judge read all 16 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the SwitchWize MCP server?

SwitchWize MCP is a hosted endpoint at https://www.switchwize.com/api/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http switchwize-switchwize-mcp 'https://www.switchwize.com/api/mcp'
```

### Cursor

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

### VS Code

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

### Codex

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

### opencode

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

### OpenClaw

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

### Hermes

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

### Netclaw

```json
{
  "McpServers": {
    "switchwize-switchwize-mcp": {
      "Transport": "http",
      "Url": "https://www.switchwize.com/api/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add switchwize-switchwize-mcp -t streamable-http -u 'https://www.switchwize.com/api/mcp'
```

### Other

```json
{
  "mcpServers": {
    "switchwize-switchwize-mcp": {
      "type": "http",
      "url": "https://www.switchwize.com/api/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-09-24 (score 80, +1)

- [functional] Server version: 0.2.0 → 0.2.2

### 2026-09-23 (score 79, 0)

- [cosmetic] Tool “get_reality_score” changed its title: Card Reality Score
- [cosmetic] Tool “get_reward_valuations” changed its title: Reward Valuations
- [cosmetic] Tool “get_top_hysa_rates” changed its title: High-Yield Savings Rates
- [cosmetic] Tool “get_top_rates” changed its title: Top Rates
- [cosmetic] Tool “get_transfer_bonuses” changed its title: Transfer Bonuses
- [cosmetic] Tool “get_card_changes” changed its title: Card Changes
- [cosmetic] Tool “get_card_downgrade_path” changed its title: Card Downgrade Path
- [cosmetic] Tool “get_card_offers” changed its title: Card Offers
- [cosmetic] Tool “get_cd_rollover_rules” changed its title: CD Rollover Rules
- [cosmetic] Tool “get_index_dataset” changed its title: Index Dataset
- [cosmetic] Tool “get_rate_freshness” changed its title: Data Freshness
- [cosmetic] Tool “best_move_this_week” changed its title: Best Move This Week
- [cosmetic] Tool “compare_switch_savings” changed its title: Compare Savings Rates
- [cosmetic] Tool “get_bank_gap” changed its title: Bank Savings Gap
- [cosmetic] Tool “get_bank_gap_index” changed its title: Bank Gap Index

### 2026-09-22 (score 79, +1)

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

### 2026-09-20 (score 78, +1)

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

### 2026-09-18 (score 77, +2)

- [functional improvement] Schema quality: 73 → 65
- [functional] The server now declares the “prompts” capability
- [functional] The server now declares the “resources” capability
- [functional] First check of Schema quality: 100
- [functional] New prompt “audit_savings”
- [functional] New prompt “audit_wallet”
- [functional] New prompt “prepare_cd_maturity”
- [functional] New resource “Tool catalog”
- [functional] New resource “Freshness and verification policy”
- [functional] New resource “Supported institutions”
- [functional] New resource “SwitchWize methodology”

### 2026-09-17 (score 75, +1)

- [functional improvement] Tool “get_reality_score” now declares an output schema
- [functional improvement] Tool “best_move_this_week” now declares an output schema
- [functional improvement] Tool “compare_switch_savings” now declares an output schema
- [functional improvement] Tool “get_bank_gap” now declares an output schema
- [functional improvement] Tool “get_bank_gap_index” now declares an output schema
- [functional improvement] Tool “get_card_changes” now declares an output schema
- [functional improvement] Tool “get_card_downgrade_path” now declares an output schema
- [functional improvement] Tool “get_card_offers” now declares an output schema
- [functional improvement] Tool “get_cd_rollover_rules” now declares an output schema
- [functional improvement] Tool “get_index_dataset” now declares an output schema
- [functional improvement] Tool “get_rate_freshness” now declares an output schema
- [functional improvement] Tool “get_reward_valuations” now declares an output schema
- [functional improvement] Tool “get_top_hysa_rates” now declares an output schema
- [functional improvement] Tool “get_top_rates” now declares an output schema
- [functional improvement] Tool “get_transfer_bonuses” now declares an output schema
- [functional] First check of Tool coverage: 100
- [functional] Server version: 0.1.1 → 0.2.0

### 2026-09-15 (score 74, +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-09-13 (score 73, +1)

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

## MCP tools (15)

### `get_top_rates` (~55 tokens)

Top Rates

Return top SwitchWize rates for a supported category with freshness and attribution metadata.

Input parameters:

- `category` (string, required): Rate category, e.g. savings, cds, money-market, checking, mortgage.
- `limit` (integer)

Output parameters:

- `asOf` (string|null)
- `attribution` (string)
- `attributionDetails` (object)
- `category` (string)
- `count` (number)
- `emptyReason` (string|null)
- `freshnessStatus` (string)
- `generatedAt` (string)
- `id` (string)
- `methodologyUrl` (string)
- `rate_type` (string)
- `rates` (array)
- `schemaVersion` (string)
- `source` (string)
- `sourceDetails` (object)
- `supportedCategories` (array)
- `terms` (string)

### `get_top_hysa_rates` (~31 tokens)

High-Yield Savings Rates

Return top high-yield savings rates with freshness and attribution metadata.

Input parameters:

- `limit` (integer)

Output parameters:

- `asOf` (string|null)
- `attribution` (string)
- `attributionDetails` (object)
- `category` (string)
- `count` (number)
- `emptyReason` (string|null)
- `freshnessStatus` (string)
- `generatedAt` (string)
- `id` (string)
- `methodologyUrl` (string)
- `rate_type` (string)
- `rates` (array)
- `schemaVersion` (string)
- `source` (string)
- `sourceDetails` (object)
- `supportedCategories` (array)
- `terms` (string)

### `get_bank_gap` (~46 tokens)

Bank Savings Gap

Estimate the annual savings gap for a balance using the current Bank Gap Index assumptions.

Input parameters:

- `balance` (number)
- `bank` (string): Optional bank name for user-facing context.

Output parameters:

- `annualGap` (number)
- `asOf` (string|null): ISO timestamp of the underlying data this response reflects.
- `attribution` (object)
- `balance` (number)
- `bank` (object|string|null)
- `bankApy` (number|null)
- `bankCount` (number)
- `baselineApy` (number)
- `comparisonApy` (number)
- `error` (object)
- `freshnessStatus` (string)
- `generatedAt` (string): ISO timestamp this response was computed at.
- `methodologyUrl` (string)
- `schemaVersion` (string)
- `tool` (string)
- `verified_at` (string|null)

### `compare_switch_savings` (~46 tokens)

Compare Savings Rates

Compare a user's current APY with SwitchWize's current top savings APY for a balance.

Input parameters:

- `balance` (number)
- `currentApy` (number, required)

Output parameters:

- `annualGap` (number)
- `asOf` (string|null): ISO timestamp of the underlying data this response reflects.
- `attribution` (object)
- `balance` (number)
- `breakEvenFraming` (string)
- `comparisonApy` (number)
- `comparisonInterest` (number)
- `currentApy` (number)
- `currentInterest` (number)
- `error` (object)
- `freshnessStatus` (string)
- `generatedAt` (string): ISO timestamp this response was computed at.
- `methodologyUrl` (string)
- `schemaVersion` (string)
- `tool` (string)
- `verified_at` (string|null)

### `get_rate_freshness` (~28 tokens)

Data Freshness

Return public data source freshness status and affected routes.

Input parameters:

- `category` (string)

Output parameters:

- `affectedRoutes` (array)
- `attribution` (object)
- `error` (object)
- `generatedAt` (string): ISO timestamp this response was computed at.
- `schemaVersion` (string)
- `sources` (array)
- `tool` (string)

### `get_index_dataset` (~56 tokens)

Index Dataset

Return a SwitchWize index dataset summary and recent series.

Input parameters:

- `indexId` (string, required): Index id, e.g. bank-gap-index, cd-spread, mma-spread, checking-gap.
- `limit` (integer)

Output parameters:

- `asOf` (string|null): ISO timestamp of the underlying data this response reflects.
- `attribution` (object)
- `error` (object)
- `freshnessStatus` (string)
- `generatedAt` (string): ISO timestamp this response was computed at.
- `index_id` (string)
- `label` (string)
- `methodologyUrl` (string)
- `schemaVersion` (string)
- `series` (array)
- `tool` (string)
- `verified_at` (string|null)

### `get_bank_gap_index` (~29 tokens)

Bank Gap Index

Return the current SwitchWize Bank Gap Index headline value, latest release, and methodology URL.

Output parameters:

- `asOf` (string|null): ISO timestamp of the underlying data this response reflects.
- `attribution` (object)
- `banksTracked` (number|null)
- `datasetUrl` (string)
- `error` (object)
- `freshnessStatus` (string)
- `gapPoints` (number|null)
- `generatedAt` (string): ISO timestamp this response was computed at.
- `headlineValue` (number|null)
- `index_id` (string)
- `label` (string)
- `methodologyUrl` (string)
- `month` (string|null)
- `nationalAvgApy` (number|null)
- `releaseArchiveUrl` (string)
- `schemaVersion` (string)
- `tool` (string)
- `topAvgApy` (number|null)
- `verified_at` (string|null)

### `get_reality_score` (~71 tokens)

Card Reality Score

Return a premium credit-card Reality Score for a card and consumer segment.

Input parameters:

- `card` (string, required): Card slug or name, e.g. platinum-card or Chase Sapphire Reserve.
- `segment` (string): Optional segment id, e.g. occasional-traveler, small-business-owner, balance-carrier.

Output parameters:

- `asOf` (string|null): ISO timestamp of the underlying data this response reflects.
- `attribution` (object)
- `datasetUrl` (string)
- `error` (object)
- `freshnessStatus` (string)
- `generatedAt` (string): ISO timestamp this response was computed at.
- `index_id` (string)
- `methodologyUrl` (string)
- `result` (object|null)
- `schemaVersion` (string)
- `segment` (object)
- `tool` (string)
- `verified_at` (string|null)

### `get_card_offers` (~89 tokens)

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.

Input parameters:

- `card` (string): Optional card id (issuer:slug), slug, or name to filter to one card, e.g. chase:sapphire-preferred or Sapphire Preferred.
- `limit` (integer)

Output parameters:

- `asOf` (string|null): ISO timestamp of the underlying data this response reflects.
- `attribution` (object)
- `count` (number)
- `datasetUrl` (string)
- `error` (object)
- `freshnessStatus` (string)
- `generatedAt` (string): ISO timestamp this response was computed at.
- `methodologyUrl` (string)
- `offers` (array)
- `schemaVersion` (string)
- `tool` (string)
- `totalTracked` (number)
- `verified_at` (string|null)

### `get_transfer_bonuses` (~74 tokens)

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.

Input parameters:

- `program` (string): Optional program id or name to filter routes by source or destination, e.g. chase-ultimate-rewards or Flying Blue.

Output parameters:

- `asOf` (string|null): ISO timestamp of the underlying data this response reflects.
- `attribution` (object)
- `count` (number)
- `datasetUrl` (string)
- `error` (object)
- `freshnessStatus` (string)
- `generatedAt` (string): ISO timestamp this response was computed at.
- `methodologyUrl` (string)
- `routes` (array)
- `schemaVersion` (string)
- `tool` (string)
- `verified_at` (string|null)

### `get_card_changes` (~59 tokens)

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.

Input parameters:

- `limit` (integer)
- `sinceDays` (integer): Only changes observed within this many days.

Output parameters:

- `asOf` (string|null): ISO timestamp of the underlying data this response reflects.
- `attribution` (object)
- `changes` (array)
- `count` (number)
- `datasetUrl` (string)
- `error` (object)
- `freshnessStatus` (string)
- `generatedAt` (string): ISO timestamp this response was computed at.
- `methodologyUrl` (string)
- `schemaVersion` (string)
- `sinceDays` (number|null)
- `tool` (string)
- `verified_at` (string|null)

### `get_reward_valuations` (~63 tokens)

Reward Valuations

Return SwitchWize points/miles valuations (cents per point) per reward currency, with sample size and provisional/published status.

Input parameters:

- `currency` (string): Optional reward currency id or name, e.g. chase-ultimate-rewards or Membership Rewards.

Output parameters:

- `asOf` (string|null): ISO timestamp of the underlying data this response reflects.
- `attribution` (object)
- `count` (number)
- `datasetUrl` (string)
- `error` (object)
- `freshnessStatus` (string)
- `generatedAt` (string): ISO timestamp this response was computed at.
- `methodologyUrl` (string)
- `schemaVersion` (string)
- `tool` (string)
- `valuations` (array)
- `verified_at` (string|null)

### `best_move_this_week` (~201 tokens)

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.

Input parameters:

- `categories` (array): Optional spend categories to rank held cards for; defaults to all nine.
- `currentSavingsApy` (number): Optional current savings APY, used with savingsBalance.
- `savingsBalance` (number): Optional cash balance, to include the savings-rate move beside the card moves.
- `usedBenefits` (array): Optional log of period credits already used this month; excluded from picks and counted toward renewal value. Omit to treat every credit as unused.
- `wallet` (array, required): Card ids the user holds, in the form issuer:slug, e.g. ["chase:sapphire-preferred", "amex:gold-card"].

Output parameters:

- `asOf` (string|null): ISO timestamp of the underlying data this response reflects.
- `attribution` (object)
- `cardMoves` (array)
- `error` (object)
- `freshnessStatus` (string)
- `generatedAt` (string): ISO timestamp this response was computed at.
- `methodologyUrl` (string)
- `savingsMove` (object|null)
- `schemaVersion` (string)
- `tool` (string)
- `transferBonuses` (array)
- `unheldOffers` (array)
- `verified_at` (string|null)

### `get_cd_rollover_rules` (~117 tokens)

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.

Input parameters:

- `institutionId` (string): Optional institution_registry id, e.g. chase, american-express, wells-fargo. Omit to return every bank SwitchWize has verified.

Output parameters:

- `asOf` (string|null): ISO timestamp of the underlying data this response reflects.
- `attribution` (object)
- `autoRenewDefault` (boolean|null)
- `autoRenewDescription` (string)
- `count` (number)
- `datasetUrl` (string)
- `earlyWithdrawalPenalty` (array)
- `error` (object)
- `freshnessStatus` (string)
- `generatedAt` (string): ISO timestamp this response was computed at.
- `gracePeriodDays` (number|null)
- `institutionId` (string)
- `institutions` (array)
- `methodologyUrl` (string)
- `schemaVersion` (string)
- `sourceUrl` (string|null)
- `tool` (string)
- `verified_at` (string|null)

### `get_card_downgrade_path` (~135 tokens)

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.

Input parameters:

- `cardId` (string): Optional card id (issuer:slug), e.g. chase:sapphire-reserve or capital-one:venture-x-rewards. Omit to return every verified downgrade path and fee-refund window.

Output parameters:

- `asOf` (string|null): ISO timestamp of the underlying data this response reflects.
- `attribution` (object)
- `cardId` (string)
- `count` (number)
- `datasetUrl` (string)
- `downgradePaths` (array)
- `error` (object)
- `feeRefundWindow` (object|null)
- `feeRefundWindows` (array)
- `freshnessStatus` (string)
- `generatedAt` (string): ISO timestamp this response was computed at.
- `methodologyUrl` (string)
- `schemaVersion` (string)
- `tool` (string)
- `verified_at` (string|null)

## Diagnostics

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

## Score history

- 2026-09-24: 80
- 2026-09-23: 79
- 2026-09-22: 79
- 2026-09-21: 78
- 2026-09-20: 78
- 2026-09-19: 77
- 2026-09-18: 77
- 2026-09-17: 75
- 2026-09-16: 74
- 2026-09-15: 74
- 2026-09-14: 73
- 2026-09-13: 73
- 2026-09-12: 72
- 2026-09-11: 72
- 2026-09-10: 72
- 2026-09-09: 71

## Common questions

### What is the SwitchWize MCP server?

SwitchWize MCP is listed in the public MCP registry as io.github.switchwize/switchwize-mcp. Verified US rate, savings-gap, card, CD, and product-change tools with freshness and sources. This page covers its hosted endpoint (https://www.switchwize.com/api/mcp).

### Is the SwitchWize MCP server safe to use?

SwitchWize MCP scores 80 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the SwitchWize MCP server expose?

SwitchWize MCP exposes 15 tools: get_top_rates, get_top_hysa_rates, get_bank_gap, compare_switch_savings, get_rate_freshness, and 10 more. Their descriptions and schemas cost roughly 1,100 tokens of context every time the server is loaded.

### Does the SwitchWize MCP server require authentication?

No. We connected to SwitchWize MCP without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the SwitchWize MCP server still maintained?

SwitchWize MCP is still listed as active in the MCP registry. We last reached this channel on 24 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://www.switchwize.com/api/mcp
- Repository: https://github.com/switchwize/switchwize-mcp
- Website: https://www.switchwize.com/developers
- Changelog RSS feed: https://verifymcp.io/servers/switchwize-switchwize-mcp/api-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/switchwize-switchwize-mcp/api-mcp.json
- HTML version of this page: https://verifymcp.io/servers/switchwize-switchwize-mcp/api-mcp
