Skip to main content
Glama

SwitchWize MCP

Top Rates

get_top_rates
Read-onlyIdempotent

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

NameRequiredDescriptionDefault
limitNo
detailNosummary (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.
categoryYesU.S. deposit category: savings (alias hysa), cds, money-market (alias mma), or checking.
approvedOnlyNoRequire 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.

Output Schema

NameRequiredDescriptionDefault
idNo
asOfNo
toolNo
countNo
errorNo
ratesNo
termsNo
sourceNo
categoryNo
rate_typeNo
releaseIdNo
dataStatusNo
attributionNo
emptyReasonNo
generatedAtYes
releaseSizeNo
releaseStatusNo
schemaVersionYes
sourceDetailsNo
methodologyUrlNo
freshnessStatusNo
attributionDetailsNo
supportedCategoriesNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedOutput schema / properties / releaseId
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / releaseSize
      Added value: +{
      +  "type": "number"
      +}
    • addedOutput schema / properties / releaseStatus
      Added value: +{
      +  "enum": [
      +    "observed",
      +    "unavailable"
      +  ],
      +  "type": "string"
      +}
  2. Changed7 schema fields changed
    • addedInput schema / properties / detail
      Added value: +{
      +  "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.",
      +  "enum": [
      +    "summary",
      +    "full"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / anyOf
      Added value: +[
      +  {
      +    "properties": {
      +      "attribution": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "category",
      +      "count",
      +      "freshnessStatus",
      +      "rates"
      +    ]
      +  },
      +  {
      +    "properties": {
      +      "attribution": {
      +        "additionalProperties": true,
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "tool",
      +      "error",
      +      "attribution"
      +    ]
      +  }
      +]
    • addedOutput schema / properties / attribution / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "additionalProperties": true,
      +    "type": "object"
      +  }
      +]
    • removedOutput schema / properties / attribution / type
      Removed value: -"string"
    • addedOutput schema / properties / error
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "code": {
      +      "type": "string"
      +    },
      +    "message": {
      +      "type": "string"
      +    },
      +    "retryable": {
      +      "type": "boolean"
      +    },
      +    "suggestions": {
      +      "items": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "additionalProperties": true,
      +            "type": "object"
      +          }
      +        ]
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "code",
      +    "message"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / tool
      Added value: +{
      +  "type": "string"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "schemaVersion",
      -  "category",
      -  "count",
      -  "generatedAt",
      -  "freshnessStatus",
      -  "rates"
      -]New value: +[
      +  "schemaVersion",
      +  "generatedAt"
      +]
  3. Changed2 schema fields changed
    • addedInput schema / properties / approvedOnly
      Added value: +{
      +  "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.",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / dataStatus
      Added value: +{
      +  "enum": [
      +    "available",
      +    "no_observations",
      +    "no_eligible_rates",
      +    "source_error",
      +    "unavailable",
      +    "stale",
      +    "conflicted"
      +  ],
      +  "type": "string"
      +}
  4. Changed2 schema fields changed
    • addedOutput schema / properties
      Added value: +{
      +  "asOf": {
      +    "type": [
      +      "string",
      +      "null"
      +    ]
      +  },
      +  "attribution": {
      +    "type": "string"
      +  },
      +  "attributionDetails": {
      +    "additionalProperties": true,
      +    "type": "object"
      +  },
      +  "category": {
      +    "type": "string"
      +  },
      +  "count": {
      +    "type": "number"
      +  },
      +  "emptyReason": {
      +    "type": [
      +      "string",
      +      "null"
      +    ]
      +  },
      +  "freshnessStatus": {
      +    "enum": [
      +      "fresh",
      +      "aging",
      +      "stale",
      +      "unavailable"
      +    ],
      +    "type": "string"
      +  },
      +  "generatedAt": {
      +    "type": "string"
      +  },
      +  "id": {
      +    "type": "string"
      +  },
      +  "methodologyUrl": {
      +    "type": "string"
      +  },
      +  "rate_type": {
      +    "enum": [
      +      "APY",
      +      "APR"
      +    ],
      +    "type": "string"
      +  },
      +  "rates": {
      +    "items": {
      +      "additionalProperties": true,
      +      "type": "object"
      +    },
      +    "type": "array"
      +  },
      +  "schemaVersion": {
      +    "type": "string"
      +  },
      +  "source": {
      +    "type": "string"
      +  },
      +  "sourceDetails": {
      +    "additionalProperties": true,
      +    "type": "object"
      +  },
      +  "supportedCategories": {
      +    "items": {
      +      "type": "string"
      +    },
      +    "type": "array"
      +  },
      +  "terms": {
      +    "type": "string"
      +  }
      +}
    • addedOutput schema / required
      Added value: +[
      +  "schemaVersion",
      +  "category",
      +  "count",
      +  "generatedAt",
      +  "freshnessStatus",
      +  "rates"
      +]
  5. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "type": "object"
      +}
  6. First observed

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnly/idempotent annotations by disclosing degradation behavior: missing approval returns no ranked rates with approval_status: not_yet_approved, and stale or unavailable releases also return no ranked rates rather than unverified data. It also states that approved payloads carry product terms and field evidence. It does not mention rate limits or payload size, keeping it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first sentence, but the description then repeats the approval/not_yet_approved story twice (general rule, then again via approvedOnly, then again via stale releases). The final sentence about detail=full duplicates the schema's own detail description almost verbatim.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value shape need not be explained, and the description covers the important failure modes for a four-parameter read tool. The remaining gap is that it never positions itself against get_top_hysa_rates, leaving potential mis-selection unresolved.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 75%, so the schema already carries most parameter meaning; the description mainly restates the approvedOnly and detail semantics that the schema also documents. The limit parameter (1-25) is undocumented in both places, and the description adds no formatting or ordering guidance for it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Return top SwitchWize rates') plus the scoping dimensions (freshness, attribution, deposit category). It does not differentiate itself from the overlapping sibling get_top_hysa_rates, which covers the hysa alias of the same category enum, so an agent cannot resolve the overlap from the description alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage via its guarantee language ('Savings, CDs, checking and money market answer only from their editor-approved snapshot') and notes when approvedOnly is required, but it never says when to pick this tool over get_top_hysa_rates or get_rate_freshness. Use cases are implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.