Skip to main content
Glama

Get current rates

get_rates
Read-onlyIdempotent

List current rates across providers, optionally filtered by symbol, category, or provider. For "what is the best yield on BTC right now?" style questions, ALWAYS pass category="lending"/"borrowing"/"staking" — an unfiltered call mostly returns spot prices (category="price"), not yields.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoMax results, default 100
symbolNoFilter by coin symbol, case-insensitive (e.g. "btc" or "BTC")
categoryNoFilter by product category. IMPORTANT for yield questions: without this filter, most returned rows are category="price" (spot prices), not yields. Pass category="lending", "borrowing", or "staking" to get APY/interest-rate data.
providerNoFilter by provider slug, case-insensitive

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
dataYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changed
    • changedInput schema / properties / category / description
      Previous value: -"Filter by product category (e.g. \"savings\", \"lending\")"New value: +"Filter by product category. IMPORTANT for yield questions: without this filter, most returned rows are category=\"price\" (spot prices), not yields. Pass category=\"lending\", \"borrowing\", or \"staking\" to get APY/interest-rate data."
    • addedInput schema / properties / category / enum
      Added value: +[
      +  "lending",
      +  "borrowing",
      +  "staking",
      +  "price"
      +]
    • changedInput schema / properties / provider / description
      Previous value: -"Filter by provider slug"New value: +"Filter by provider slug, case-insensitive"
    • changedInput schema / properties / symbol / description
      Previous value: -"Filter by coin symbol (e.g. \"btc\")"New value: +"Filter by coin symbol, case-insensitive (e.g. \"btc\" or \"BTC\")"
    • addedOutput schema / properties / data / properties / rates / items / properties / ageSeconds
      Added value: +{
      +  "description": "Seconds since lastUpdated — use this to discount stale rows rather than trusting them as current",
      +  "type": "integer"
      +}
    • addedOutput schema / properties / data / properties / rates / items / properties / stale
      Added value: +{
      +  "description": "True when this row is old enough that it should be treated with caution (audit BC-9)",
      +  "type": "boolean"
      +}
  2. Changed3 schema fields changed
    • addedOutput schema / properties / data
      Added value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "count": {
      +      "description": "Number of rates returned",
      +      "type": "number"
      +    },
      +    "rates": {
      +      "description": "Matching rate entries",
      +      "items": {
      +        "additionalProperties": true,
      +        "properties": {
      +          "category": {
      +            "description": "Product category",
      +            "enum": [
      +              "lending",
      +              "borrowing",
      +              "staking",
      +              "price"
      +            ],
      +            "type": "string"
      +          },
      +          "coinId": {
      +            "description": "Canonical coin id, e.g. `bitcoin` (nullable)",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "lastUpdated": {
      +            "description": "ISO-8601 timestamp of the most recent rate refresh",
      +            "type": "string"
      +          },
      +          "metadata": {
      +            "anyOf": [
      +              {
      +                "additionalProperties": {},
      +                "type": "object"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "provider": {
      +            "description": "Provider slug, e.g. `nexo`",
      +            "type": "string"
      +          },
      +          "providerSymbol": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "rate": {
      +            "description": "Rate value; semantics depend on unitType (percentage APY vs absolute price)",
      +            "type": "number"
      +          },
      +          "symbol": {
      +            "description": "Coin symbol, e.g. `btc`",
      +            "type": "string"
      +          },
      +          "unitSymbol": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "unitType": {
      +            "enum": [
      +              "percentage",
      +              "absolute",
      +              "ratio"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "provider",
      +          "symbol",
      +          "category",
      +          "rate",
      +          "coinId",
      +          "lastUpdated"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "symbol": {
      +      "description": "Present on the /rates/{symbol} variant",
      +      "type": "string"
      +    },
      +    "timestamp": {
      +      "description": "ISO-8601 response timestamp (omitted on /rates/{symbol})",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "rates",
      +    "count"
      +  ],
      +  "type": "object"
      +}
    • removedOutput schema / properties / rates
      Removed value: -{
      -  "description": "Matching rate entries",
      -  "items": {
      -    "additionalProperties": true,
      -    "properties": {
      -      "apy": {
      -        "description": "Annual percentage yield as a decimal (0.05 = 5%)",
      -        "type": "number"
      -      },
      -      "category": {
      -        "description": "Product category",
      -        "enum": [
      -          "savings",
      -          "lending",
      -          "staking",
      -          "borrowing"
      -        ],
      -        "type": "string"
      -      },
      -      "provider": {
      -        "description": "Provider slug, e.g. `nexo`",
      -        "type": "string"
      -      },
      -      "symbol": {
      -        "description": "Coin symbol, e.g. `btc`",
      -        "type": "string"
      -      },
      -      "updatedAt": {
      -        "description": "ISO-8601 timestamp of the most recent rate refresh",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "provider",
      -      "symbol",
      -      "category",
      -      "apy"
      -    ],
      -    "type": "object"
      -  },
      -  "type": "array"
      -}
    • changedOutput schema / required
      Previous value: -[
      -  "rates"
      -]New value: +[
      +  "data"
      +]
  3. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "rates": {
      +      "description": "Matching rate entries",
      +      "items": {
      +        "additionalProperties": true,
      +        "properties": {
      +          "apy": {
      +            "description": "Annual percentage yield as a decimal (0.05 = 5%)",
      +            "type": "number"
      +          },
      +          "category": {
      +            "description": "Product category",
      +            "enum": [
      +              "savings",
      +              "lending",
      +              "staking",
      +              "borrowing"
      +            ],
      +            "type": "string"
      +          },
      +          "provider": {
      +            "description": "Provider slug, e.g. `nexo`",
      +            "type": "string"
      +          },
      +          "symbol": {
      +            "description": "Coin symbol, e.g. `btc`",
      +            "type": "string"
      +          },
      +          "updatedAt": {
      +            "description": "ISO-8601 timestamp of the most recent rate refresh",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "provider",
      +          "symbol",
      +          "category",
      +          "apy"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "rates"
      +  ],
      +  "type": "object"
      +}
  4. First observed

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, so the safety profile is clear. The description adds behavioral context about the category filter affecting result types (yields vs. prices), which is not covered by annotations. No contradictions.

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

Conciseness5/5

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

The description is just two sentences, both highly informative and front-loaded. Every sentence earns its place; there is no fluff.

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

Completeness5/5

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

Given the tool's complexity (4 optional parameters, rich annotations, output schema exists), the description is complete. It covers primary use cases, filtering options, and critical caveats regarding category usage. No missing context for an agent to select or invoke the tool correctly.

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

Parameters4/5

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

Schema description coverage is 100%, so baseline is 3. The description adds value by reiterating the category filter's importance and explaining the unfiltered call's default behavior (returns mostly spot prices). This nuance goes beyond the schema's parameter descriptions.

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

Purpose5/5

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

The description clearly states the tool's function: 'List current rates across providers, optionally filtered by symbol, category, or provider.' It also distinguishes from siblings by emphasizing the yield vs. price distinction, which is a key differentiator among similar tools.

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

Usage Guidelines5/5

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

The description explicitly provides guidance: 'For "what is the best yield on BTC right now?" style questions, ALWAYS pass category="lending"/"borrowing"/"staking" — an unfiltered call mostly returns spot prices (category="price"), not yields.' This gives clear when-to-use and when-not-to-use information.

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.

Resources