Skip to main content
Glama
Bitcompare MCP Server

Bitcompare MCP Server

Official

Get rates for a single symbol

get_rate_by_symbol
Read-onlyIdempotent

Retrieve all provider rates for a specific coin symbol and filter by lending, borrowing, staking, or price to keep yield results separate from spot prices.

Instructions

Fetch all provider rates for a specific coin symbol. Optionally filter by category — pass category="lending"/"borrowing"/"staking" for yield questions, since unfiltered results mix in spot prices (category="price").

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "symbol": "<symbol>"
    },
    "name": "get_rate_by_symbol"
  }
}

Input Schema

NameRequiredDescriptionDefault
symbolYesCoin symbol, case-insensitive (e.g. "btc" or "eth")
categoryNoFilter to a single product category. Without it, results mix spot prices (category="price") in with yields — pass "lending"/"borrowing"/"staking" for yield-only results.

Output Schema

NameRequiredDescriptionDefault
dataYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changedv1.2.0
    • changedInput schema / properties / category / description
      Previous value: -"Filter to a single product category (e.g. \"savings\", \"lending\", \"staking\")"New value: +"Filter to a single product category. Without it, results mix spot prices (category=\"price\") in with yields — pass \"lending\"/\"borrowing\"/\"staking\" for yield-only results."
    • addedInput schema / properties / category / enum
      Added value: +[
      +  "lending",
      +  "borrowing",
      +  "staking",
      +  "price"
      +]
    • changedInput schema / properties / symbol / description
      Previous value: -"Coin symbol, e.g. \"btc\" or \"eth\""New value: +"Coin symbol, case-insensitive (e.g. \"btc\" or \"eth\")"
    • 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": {
      +          "ageSeconds": {
      +            "description": "Seconds since lastUpdated — use this to discount stale rows rather than trusting them as current",
      +            "type": "integer"
      +          },
      +          "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"
      +          },
      +          "stale": {
      +            "description": "True when this row is old enough that it should be treated with caution (audit BC-9)",
      +            "type": "boolean"
      +          },
      +          "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"
      +]
  2. First observedv1.1.0

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate read-only, idempotent, non-destructive; description adds value by warning that unfiltered results mix spot prices, a key behavioral trait beyond annotations.

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?

Two sentences, no fluff, front-loaded purpose, efficient use of words.

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 output schema exists and only 2 parameters, description covers essential behavior and filtering guidance completely.

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 coverage is 100%, but description adds practical guidance for the category parameter, explaining its use for yield vs price scenarios, enhancing the schema's enum 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?

Description clearly states 'Fetch all provider rates for a specific coin symbol', specifying the verb and resource, and distinguishes from siblings like get_price by mentioning multiple provider rates and category filtering.

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

Usage Guidelines4/5

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

Provides explicit guidance on when to filter by category ('for yield questions') and explains consequence of unfiltered results, but does not directly compare to sibling tools like get_price_by_symbol.

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