{"server":"io.github.switchwize/switchwize-mcp","count":16,"tools":[{"name":"best_move_this_week","title":"Best Move This Week","description":"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_schema":{"type":"object","required":["wallet"],"properties":{"wallet":{"type":"array","items":{"type":"string"},"maxItems":25,"minItems":1,"description":"Card ids the user holds, in the form issuer:slug, e.g. [\"chase:sapphire-preferred\", \"amex:gold-card\"]."},"categories":{"type":"array","items":{"enum":["dining","rideshare","travel","lounge","entertainment","insurance","groceries","gas","other"],"type":"string"},"description":"Optional spend categories to rank held cards for; defaults to all nine."},"usedBenefits":{"type":"array","items":{"type":"object","required":["cardId","benefitKey","periodStart"],"properties":{"cardId":{"type":"string"},"benefitKey":{"type":"string"},"periodStart":{"type":"string","description":"ISO first-of-month key for the period the credit was used in, e.g. 2026-09-01T00:00:00.000Z."}},"additionalProperties":false},"maxItems":200,"description":"Optional log of period credits already used this month; excluded from picks and counted toward renewal value. Omit to treat every credit as unused."},"savingsBalance":{"type":"number","maximum":10000000,"minimum":0,"description":"Optional cash balance, to include the savings-rate move beside the card moves."},"currentSavingsApy":{"type":"number","maximum":25,"minimum":0,"description":"Optional current savings APY, used with savingsBalance."}},"additionalProperties":false},"output_schema":{"type":"object","required":["schemaVersion","tool","generatedAt"],"properties":{"asOf":{"type":["string","null"],"description":"ISO timestamp of the underlying data this response reflects."},"tool":{"type":"string"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"suggestions":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","additionalProperties":true}]}}},"additionalProperties":false},"cardMoves":{"type":"array","items":{"type":"object","additionalProperties":true}},"attribution":{"type":"object","additionalProperties":true},"generatedAt":{"type":"string","description":"ISO timestamp this response was computed at."},"savingsMove":{"type":["object","null"],"additionalProperties":true},"verified_at":{"type":["string","null"]},"unheldOffers":{"type":"array","items":{"type":"object","additionalProperties":true}},"schemaVersion":{"type":"string"},"methodologyUrl":{"type":"string"},"freshnessStatus":{"enum":["fresh","aging","stale","unavailable"],"type":"string"},"transferBonuses":{"type":"array","items":{"type":"object","additionalProperties":true}}},"additionalProperties":true},"annotations":{"readOnlyHint":true,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T18:47:33.427Z"},{"name":"compare_switch_savings","title":"Compare Savings Rates","description":"Compare a user's current APY with SwitchWize's current top savings APY for a balance.","input_schema":{"type":"object","required":["currentApy"],"properties":{"balance":{"type":"number","maximum":10000000,"minimum":0},"currentApy":{"type":"number","maximum":25,"minimum":0}},"additionalProperties":false},"output_schema":{"type":"object","required":["schemaVersion","tool","generatedAt"],"properties":{"asOf":{"type":["string","null"],"description":"ISO timestamp of the underlying data this response reflects."},"tool":{"type":"string"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"suggestions":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","additionalProperties":true}]}}},"additionalProperties":false},"balance":{"type":"number"},"annualGap":{"type":["number","null"]},"currentApy":{"type":"number"},"attribution":{"type":"object","additionalProperties":true},"generatedAt":{"type":"string","description":"ISO timestamp this response was computed at."},"verified_at":{"type":["string","null"]},"comparisonApy":{"type":["number","null"]},"schemaVersion":{"type":"string"},"methodologyUrl":{"type":"string"},"currentInterest":{"type":"number"},"freshnessStatus":{"enum":["fresh","aging","stale","unavailable"],"type":"string"},"breakEvenFraming":{"type":"string"},"comparisonInterest":{"type":["number","null"]},"recommendationStatus":{"enum":["comparison_available","data_unavailable"],"type":"string"}},"additionalProperties":true},"annotations":{"readOnlyHint":true,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T18:47:33.427Z"},{"name":"get_bank_gap","title":"Bank Savings Gap","description":"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.","input_schema":{"type":"object","properties":{"bank":{"type":"string","description":"Optional bank name for user-facing context."},"balance":{"type":"number","maximum":10000000,"minimum":0}},"additionalProperties":false},"output_schema":{"type":"object","required":["schemaVersion","tool","generatedAt"],"properties":{"asOf":{"type":["string","null"],"description":"ISO timestamp of the underlying data this response reflects."},"bank":{"type":["object","string","null"]},"tool":{"type":"string"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"suggestions":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","additionalProperties":true}]}}},"additionalProperties":false},"balance":{"type":"number"},"bankApy":{"type":["number","null"]},"annualGap":{"type":"number"},"bankCount":{"type":"number","description":"Number of tracked banks in the comparison set, not the number averaged into comparisonApy."},"attribution":{"type":"object","additionalProperties":true},"baselineApy":{"type":"number","description":"Named bank APY, or national savings benchmark when no bank is supplied. Percentage units."},"generatedAt":{"type":"string","description":"ISO timestamp this response was computed at."},"verified_at":{"type":["string","null"]},"comparisonApy":{"type":"number","description":"Average of the top three tracked savings rates (or all available rates if fewer than three). Not an average across bankCount banks. Percentage units."},"schemaVersion":{"type":"string"},"methodologyUrl":{"type":"string"},"freshnessStatus":{"enum":["fresh","aging","stale","unavailable"],"type":"string"}},"additionalProperties":true},"annotations":{"readOnlyHint":true,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T18:47:33.427Z"},{"name":"get_bank_gap_index","title":"Bank Gap Index","description":"Return the current SwitchWize Bank Gap Index headline value, latest release, and methodology URL.","input_schema":{"type":"object","properties":{},"additionalProperties":false},"output_schema":{"type":"object","required":["schemaVersion","tool","generatedAt"],"properties":{"asOf":{"type":["string","null"],"description":"ISO timestamp of the underlying data this response reflects."},"tool":{"type":"string"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"suggestions":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","additionalProperties":true}]}}},"additionalProperties":false},"label":{"type":"string"},"month":{"type":["string","null"]},"index_id":{"type":"string"},"gapPoints":{"type":["number","null"]},"topAvgApy":{"type":["number","null"]},"datasetUrl":{"type":"string"},"attribution":{"type":"object","additionalProperties":true},"generatedAt":{"type":"string","description":"ISO timestamp this response was computed at."},"verified_at":{"type":["string","null"]},"banksTracked":{"type":["number","null"]},"headlineValue":{"type":["number","null"]},"schemaVersion":{"type":"string"},"methodologyUrl":{"type":"string"},"nationalAvgApy":{"type":["number","null"]},"freshnessStatus":{"enum":["fresh","aging","stale","unavailable"],"type":"string"},"releaseArchiveUrl":{"type":"string"}},"additionalProperties":true},"annotations":{"readOnlyHint":true,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T18:47:33.427Z"},{"name":"get_card_changes","title":"Card Changes","description":"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_schema":{"type":"object","properties":{"limit":{"type":"integer","maximum":200,"minimum":1},"sinceDays":{"type":"integer","maximum":365,"minimum":1,"description":"Only changes observed within this many days."}},"additionalProperties":false},"output_schema":{"type":"object","required":["schemaVersion","tool","generatedAt"],"properties":{"asOf":{"type":["string","null"],"description":"ISO timestamp of the underlying data this response reflects."},"tool":{"type":"string"},"count":{"type":"number"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"suggestions":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","additionalProperties":true}]}}},"additionalProperties":false},"changes":{"type":"array","items":{"type":"object","additionalProperties":true}},"sinceDays":{"type":["number","null"]},"datasetUrl":{"type":"string"},"attribution":{"type":"object","additionalProperties":true},"generatedAt":{"type":"string","description":"ISO timestamp this response was computed at."},"verified_at":{"type":["string","null"]},"schemaVersion":{"type":"string"},"methodologyUrl":{"type":"string"},"freshnessStatus":{"enum":["fresh","aging","stale","unavailable"],"type":"string"}},"additionalProperties":true},"annotations":{"readOnlyHint":true,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T18:47:33.427Z"},{"name":"get_card_downgrade_path","title":"Card Downgrade Path","description":"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_schema":{"type":"object","properties":{"cardId":{"type":"string","description":"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."}},"additionalProperties":false},"output_schema":{"type":"object","required":["schemaVersion","tool","generatedAt"],"properties":{"asOf":{"type":["string","null"],"description":"ISO timestamp of the underlying data this response reflects."},"tool":{"type":"string"},"count":{"type":"number"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"suggestions":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","additionalProperties":true}]}}},"additionalProperties":false},"cardId":{"type":"string"},"datasetUrl":{"type":"string"},"attribution":{"type":"object","additionalProperties":true},"generatedAt":{"type":"string","description":"ISO timestamp this response was computed at."},"verified_at":{"type":["string","null"]},"schemaVersion":{"type":"string"},"downgradePaths":{"type":"array","items":{"type":"object","additionalProperties":true}},"methodologyUrl":{"type":"string"},"feeRefundWindow":{"type":["object","null"],"additionalProperties":true},"freshnessStatus":{"enum":["fresh","aging","stale","unavailable"],"type":"string"},"feeRefundWindows":{"type":"array","items":{"type":"object","additionalProperties":true}}},"additionalProperties":true},"annotations":{"readOnlyHint":true,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T18:47:33.427Z"},{"name":"get_card_offers","title":"Card Offers","description":"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_schema":{"type":"object","properties":{"card":{"type":"string","description":"Optional card id (issuer:slug), slug, or name to filter to one card, e.g. chase:sapphire-preferred or Sapphire Preferred."},"limit":{"type":"integer","maximum":200,"minimum":1}},"additionalProperties":false},"output_schema":{"type":"object","required":["schemaVersion","tool","generatedAt"],"properties":{"asOf":{"type":["string","null"],"description":"ISO timestamp of the underlying data this response reflects."},"tool":{"type":"string"},"count":{"type":"number"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"suggestions":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","additionalProperties":true}]}}},"additionalProperties":false},"offers":{"type":"array","items":{"type":"object","additionalProperties":true}},"datasetUrl":{"type":"string"},"attribution":{"type":"object","additionalProperties":true},"generatedAt":{"type":"string","description":"ISO timestamp this response was computed at."},"verified_at":{"type":["string","null"]},"totalTracked":{"type":"number"},"schemaVersion":{"type":"string"},"methodologyUrl":{"type":"string"},"freshnessStatus":{"enum":["fresh","aging","stale","unavailable"],"type":"string"}},"additionalProperties":true},"annotations":{"readOnlyHint":true,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T18:47:33.427Z"},{"name":"get_cd_rollover_rules","title":"CD Rollover Rules","description":"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_schema":{"type":"object","properties":{"institutionId":{"type":"string","description":"Optional institution_registry id, e.g. chase, american-express, wells-fargo. Omit to return every bank SwitchWize has verified."}},"additionalProperties":false},"output_schema":{"type":"object","required":["schemaVersion","tool","generatedAt"],"properties":{"asOf":{"type":["string","null"],"description":"ISO timestamp of the underlying data this response reflects."},"tool":{"type":"string"},"count":{"type":"number"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"suggestions":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","additionalProperties":true}]}}},"additionalProperties":false},"sourceUrl":{"type":["string","null"]},"datasetUrl":{"type":"string"},"attribution":{"type":"object","additionalProperties":true},"generatedAt":{"type":"string","description":"ISO timestamp this response was computed at."},"verified_at":{"type":["string","null"]},"institutions":{"type":"array","items":{"type":"object","additionalProperties":true}},"institutionId":{"type":"string"},"schemaVersion":{"type":"string"},"methodologyUrl":{"type":"string"},"freshnessStatus":{"enum":["fresh","aging","stale","unavailable"],"type":"string"},"gracePeriodDays":{"type":["number","null"]},"autoRenewDefault":{"type":["boolean","null"]},"autoRenewDescription":{"type":"string"},"earlyWithdrawalPenalty":{"type":"array","items":{"type":"object","additionalProperties":true}}},"additionalProperties":true},"annotations":{"readOnlyHint":true,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T18:47:33.427Z"},{"name":"get_fed_hike_pass_through","title":"Fed Hike Pass-Through","description":"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.","input_schema":{"type":"object","properties":{"institutionId":{"type":"string","description":"Optional institution_registry id, e.g. tab, ally, marcus. Omit to return every savings account measured against the latest Fed hike."}},"additionalProperties":false},"output_schema":{"type":"object","required":["schemaVersion","tool","generatedAt"],"properties":{"asOf":{"type":["string","null"],"description":"ISO timestamp of the underlying data this response reflects."},"move":{"type":"object","additionalProperties":true},"tool":{"type":"string"},"count":{"type":"number"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"suggestions":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","additionalProperties":true}]}}},"additionalProperties":false},"summary":{"type":["object","null"],"additionalProperties":true},"excluded":{"type":"object","additionalProperties":true},"datasetUrl":{"type":"string"},"attribution":{"type":"object","additionalProperties":true},"generatedAt":{"type":"string","description":"ISO timestamp this response was computed at."},"institution":{"type":"object","additionalProperties":true},"verified_at":{"type":["string","null"]},"institutions":{"type":"array","items":{"type":"object","additionalProperties":true}},"schemaVersion":{"type":"string"},"methodologyUrl":{"type":"string"},"freshnessStatus":{"enum":["fresh","aging","stale","unavailable"],"type":"string"},"daysSinceAnnouncement":{"type":["number","null"]}},"additionalProperties":true},"annotations":{"readOnlyHint":true,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T18:47:33.427Z"},{"name":"get_index_dataset","title":"Index Dataset","description":"Return a SwitchWize index dataset summary and recent series.","input_schema":{"type":"object","required":["indexId"],"properties":{"limit":{"type":"integer","maximum":60,"minimum":1},"indexId":{"type":"string","description":"Index id, e.g. bank-gap-index, cd-spread, mma-spread, checking-gap."}},"additionalProperties":false},"output_schema":{"type":"object","required":["schemaVersion","tool","generatedAt"],"properties":{"asOf":{"type":["string","null"],"description":"ISO timestamp of the underlying data this response reflects."},"tool":{"type":"string"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"suggestions":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","additionalProperties":true}]}}},"additionalProperties":false},"label":{"type":"string"},"series":{"type":"array","items":{"type":"object","additionalProperties":true}},"index_id":{"type":"string"},"attribution":{"type":"object","additionalProperties":true},"generatedAt":{"type":"string","description":"ISO timestamp this response was computed at."},"verified_at":{"type":["string","null"]},"schemaVersion":{"type":"string"},"methodologyUrl":{"type":"string"},"freshnessStatus":{"enum":["fresh","aging","stale","unavailable"],"type":"string"}},"additionalProperties":true},"annotations":{"readOnlyHint":true,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T18:47:33.427Z"},{"name":"get_rate_freshness","title":"Data Freshness","description":"Return public data source freshness status and affected routes.","input_schema":{"type":"object","properties":{"category":{"type":"string"}},"additionalProperties":false},"output_schema":{"type":"object","required":["schemaVersion","tool","generatedAt"],"properties":{"tool":{"type":"string"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"suggestions":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","additionalProperties":true}]}}},"additionalProperties":false},"sources":{"type":"array","items":{"type":"object","additionalProperties":true}},"attribution":{"type":"object","additionalProperties":true},"generatedAt":{"type":"string","description":"ISO timestamp this response was computed at."},"schemaVersion":{"type":"string"},"affectedRoutes":{"type":"array","items":{"type":"object","additionalProperties":true}}},"additionalProperties":true},"annotations":{"readOnlyHint":true,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T18:47:33.427Z"},{"name":"get_reality_score","title":"Card Reality Score","description":"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.","input_schema":{"type":"object","required":["card"],"properties":{"card":{"type":"string","description":"Card slug or name, e.g. platinum-card or Chase Sapphire Reserve."},"segment":{"type":"string","description":"Optional segment id, e.g. occasional-traveler, small-business-owner, balance-carrier."}},"additionalProperties":false},"output_schema":{"type":"object","required":["schemaVersion","tool","generatedAt"],"properties":{"asOf":{"type":["string","null"],"description":"ISO timestamp of the underlying data this response reflects."},"tool":{"type":"string"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"suggestions":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","additionalProperties":true}]}}},"additionalProperties":false},"result":{"type":["object","null"],"properties":{"annualFee":{"type":"number"},"interestDrag":{"type":"number"},"realityScore":{"type":"number","description":"100 * net realized value / advertised value, rounded to an integer."},"realizedPerks":{"type":"number"},"realizedValue":{"type":"number","description":"Rewards + credits + perks minus annual fee, interest drag and rewards friction discount."},"advertisedValue":{"type":"number"},"realizedRewards":{"type":"number"},"breakageMultiplier":{"type":"number","description":"Gross recovered value (rewards + credits + perks) / advertised value, rounded to two decimals. Annual fee is not this denominator."},"feeRecoveryMultiplier":{"type":"number","description":"max(0, gross recovered value - interest drag - rewards friction discount) / annual fee, rounded to two decimals; before subtracting the annual fee."},"realizedStatementCredits":{"type":"number"},"redemptionFrictionDiscount":{"type":"number","description":"Discount applied to raw rewards, not to credits or perks."}},"additionalProperties":true},"segment":{"type":"object","additionalProperties":true},"index_id":{"type":"string"},"datasetUrl":{"type":"string"},"attribution":{"type":"object","additionalProperties":true},"generatedAt":{"type":"string","description":"ISO timestamp this response was computed at."},"verified_at":{"type":["string","null"]},"schemaVersion":{"type":"string"},"methodologyUrl":{"type":"string"},"freshnessStatus":{"enum":["fresh","aging","stale","unavailable"],"type":"string"}},"additionalProperties":true},"annotations":{"readOnlyHint":true,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T18:47:33.427Z"},{"name":"get_reward_valuations","title":"Reward Valuations","description":"Return SwitchWize points/miles valuations (cents per point) per reward currency, with sample size and provisional/published status.","input_schema":{"type":"object","properties":{"currency":{"type":"string","description":"Optional reward currency id or name, e.g. chase-ultimate-rewards or Membership Rewards."}},"additionalProperties":false},"output_schema":{"type":"object","required":["schemaVersion","tool","generatedAt"],"properties":{"asOf":{"type":["string","null"],"description":"ISO timestamp of the underlying data this response reflects."},"tool":{"type":"string"},"count":{"type":"number"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"suggestions":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","additionalProperties":true}]}}},"additionalProperties":false},"datasetUrl":{"type":"string"},"valuations":{"type":"array","items":{"type":"object","additionalProperties":true}},"attribution":{"type":"object","additionalProperties":true},"generatedAt":{"type":"string","description":"ISO timestamp this response was computed at."},"verified_at":{"type":["string","null"]},"schemaVersion":{"type":"string"},"methodologyUrl":{"type":"string"},"freshnessStatus":{"enum":["fresh","aging","stale","unavailable"],"type":"string"}},"additionalProperties":true},"annotations":{"readOnlyHint":true,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T18:47:33.427Z"},{"name":"get_top_hysa_rates","title":"High-Yield Savings Rates","description":"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.","input_schema":{"type":"object","properties":{"limit":{"type":"integer","maximum":25,"minimum":1},"detail":{"enum":["summary","full"],"type":"string","description":"summary (default) adds list_counts. full (savings) adds the complete shared build: accounts (verified and tracked, each marked), best_picks, movers, history and summary. rates stays verified-only either way."},"approvedOnly":{"type":"boolean","description":"Require an editor-approved HYSA snapshot. The default tool already answers only from the approved release; before its first release it returns no ranked rates (approval_status: not_yet_approved)."}},"additionalProperties":false},"output_schema":{"type":"object","anyOf":[{"required":["category","count","freshnessStatus","rates"],"properties":{"attribution":{"type":"string"}}},{"required":["tool","error","attribution"],"properties":{"attribution":{"type":"object","additionalProperties":true}}}],"required":["schemaVersion","generatedAt"],"properties":{"id":{"type":"string"},"asOf":{"type":["string","null"]},"tool":{"type":"string"},"count":{"type":"number"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"suggestions":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","additionalProperties":true}]}}},"additionalProperties":false},"rates":{"type":"array","items":{"type":"object","additionalProperties":true}},"terms":{"type":"string"},"source":{"type":"string"},"category":{"type":"string"},"rate_type":{"enum":["APY","APR"],"type":"string"},"dataStatus":{"enum":["available","no_observations","no_eligible_rates","source_error","unavailable","stale","conflicted"],"type":"string"},"attribution":{"anyOf":[{"type":"string"},{"type":"object","additionalProperties":true}]},"emptyReason":{"type":["string","null"]},"generatedAt":{"type":"string"},"schemaVersion":{"type":"string"},"sourceDetails":{"type":"object","additionalProperties":true},"methodologyUrl":{"type":"string"},"freshnessStatus":{"enum":["fresh","aging","stale","unavailable"],"type":"string"},"attributionDetails":{"type":"object","additionalProperties":true},"supportedCategories":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"annotations":{"readOnlyHint":true,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T18:47:33.427Z"},{"name":"get_top_rates","title":"Top Rates","description":"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.","input_schema":{"type":"object","required":["category"],"properties":{"limit":{"type":"integer","maximum":25,"minimum":1},"detail":{"enum":["summary","full"],"type":"string","description":"summary (default) adds list_counts. full (savings) adds the complete shared build: accounts (verified and tracked, each marked), best_picks, movers, history and summary. rates stays verified-only either way."},"category":{"type":"string","description":"Rate category, e.g. savings, cds, money-market, checking, mortgage."},"approvedOnly":{"type":"boolean","description":"Require an editor-approved deposit snapshot. Savings, CDs, checking and money market always answer from their own approved release; a category with no release yet returns no ranked rates (approval_status: not_yet_approved), as do stale or unavailable releases."}},"additionalProperties":false},"output_schema":{"type":"object","anyOf":[{"required":["category","count","freshnessStatus","rates"],"properties":{"attribution":{"type":"string"}}},{"required":["tool","error","attribution"],"properties":{"attribution":{"type":"object","additionalProperties":true}}}],"required":["schemaVersion","generatedAt"],"properties":{"id":{"type":"string"},"asOf":{"type":["string","null"]},"tool":{"type":"string"},"count":{"type":"number"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"suggestions":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","additionalProperties":true}]}}},"additionalProperties":false},"rates":{"type":"array","items":{"type":"object","additionalProperties":true}},"terms":{"type":"string"},"source":{"type":"string"},"category":{"type":"string"},"rate_type":{"enum":["APY","APR"],"type":"string"},"dataStatus":{"enum":["available","no_observations","no_eligible_rates","source_error","unavailable","stale","conflicted"],"type":"string"},"attribution":{"anyOf":[{"type":"string"},{"type":"object","additionalProperties":true}]},"emptyReason":{"type":["string","null"]},"generatedAt":{"type":"string"},"schemaVersion":{"type":"string"},"sourceDetails":{"type":"object","additionalProperties":true},"methodologyUrl":{"type":"string"},"freshnessStatus":{"enum":["fresh","aging","stale","unavailable"],"type":"string"},"attributionDetails":{"type":"object","additionalProperties":true},"supportedCategories":{"type":"array","items":{"type":"string"}}},"additionalProperties":true},"annotations":{"readOnlyHint":true,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T18:47:33.427Z"},{"name":"get_transfer_bonuses","title":"Transfer Bonuses","description":"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_schema":{"type":"object","properties":{"program":{"type":"string","description":"Optional program id or name to filter routes by source or destination, e.g. chase-ultimate-rewards or Flying Blue."}},"additionalProperties":false},"output_schema":{"type":"object","required":["schemaVersion","tool","generatedAt"],"properties":{"asOf":{"type":["string","null"],"description":"ISO timestamp of the underlying data this response reflects."},"tool":{"type":"string"},"count":{"type":"number"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"suggestions":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"object","additionalProperties":true}]}}},"additionalProperties":false},"routes":{"type":"array","items":{"type":"object","additionalProperties":true}},"datasetUrl":{"type":"string"},"attribution":{"type":"object","additionalProperties":true},"generatedAt":{"type":"string","description":"ISO timestamp this response was computed at."},"verified_at":{"type":["string","null"]},"schemaVersion":{"type":"string"},"methodologyUrl":{"type":"string"},"freshnessStatus":{"enum":["fresh","aging","stale","unavailable"],"type":"string"}},"additionalProperties":true},"annotations":{"readOnlyHint":true,"openWorldHint":true,"idempotentHint":true,"destructiveHint":false},"source":"probe","observed_at":"2026-10-19T18:47:33.427Z"}],"next_cursor":null,"next_actions":[{"action":"get_connection","description":"Connection block to call these tools","href":"/v1/servers/io.github.switchwize%2Fswitchwize-mcp/connection?target=mcpServers","arguments":{"name":"io.github.switchwize/switchwize-mcp","target":"mcpServers"}},{"action":"get_server","description":"Full descriptor with trust and connectability","href":"/v1/servers/io.github.switchwize%2Fswitchwize-mcp","arguments":{"name":"io.github.switchwize/switchwize-mcp"}}]}