Skip to main content
Glama

get_rates

Batch indicative prices for catalog uids (POST /v1/rates). Prices are decimal strings. Uids are class-ranged (uid = class*1e8+seq; 1=fiat e.g. usd 100000001, 2=crypto e.g. btc 200000001). Use search_assets to find uids. Per-rate status: ok = fresh price; stale = last known price, upstream is late (see as_of); pending = in the catalog but not priced yet, wait retry_after seconds for that asset and ask again; unsupported = the uid is not in the catalog (a dynamic coin may have expired; look it up again). Size: about 0.4 KB per asset and quote without include (the result is sent twice, as text and as structuredContent; sizes here count both); sparkline adds a long price array per asset, so request it only when needed. Limits (max assets, max quote currencies) are in get_meta. Optional source (a code such as s1) returns that source's own price instead of the server's choice: source_code equals it, and an asset the source has no reading for is unsupported, never another source's price; exchange codes only answer when the deployment runs multi-source aggregation. A dynamic coin expires after 7 days without use and may get a new uid when registered again (also after a server reset): match it by symbol or a new search, not by a stored uid. Edge cases: read resource ratehub://docs/behavior (behaviour notes).

Input Schema

NameRequiredDescriptionDefault
vsYesQuote currency codes (usd, eur, btc, ...)
assetsYesCatalog uids to price (class*1e8+seq; use search_assets to find uids)
sourceNoOptional source code such as s1: every rate is then that source's own reading, or unsupported when it has none (never another source's price)
includeNoOptional extras: change, market, sparkline. sparkline is large (a long price array per asset); ask for it only when needed

Output Schema

NameRequiredDescriptionDefault
buildYes
ratesYes
server_timeYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so unusually well: it defines per-rate status semantics (ok/stale/pending/unsupported), retry timing, the 7-day dynamic-coin expiry, uid churn after reset, payload sizing, and how an optional source never falls back to another source's price. Only auth/permission context is absent, which is minor for a read-style pricing call.

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

Conciseness4/5

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

Front-loads purpose and endpoint before the detail, and nearly every sentence carries operational information. It is nonetheless dense to the point of sprawl, with a slightly redundant parenthetical about the dual text/structuredContent payload and some overlap with the schema's own source description.

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?

An output schema exists, so return rendering need not be covered, yet the description still explains the meaningful response semantics (status values, decimal-string prices, size). Combined with limit and expiry behavior, an agent has everything needed to call this 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 coverage is 100%, so the baseline is 3, and the description earns above that by explaining the class-ranged uid encoding (uid = class*1e8+seq with concrete examples), the per-source 'unsupported rather than substitute' rule, and the size cost of include=sparkline. Most of this meaning is genuinely additive rather than restating the schema.

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?

Opens with a specific verb+resource+endpoint: "Batch indicative prices for catalog uids (POST /v1/rates)." It also differentiates from siblings by routing uid discovery to search_assets and limits to get_meta, so the agent can place it in the toolset without reading other schemas.

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?

Gives concrete when-to-use guidance: use search_assets to find uids, request sparkline "only when needed," consult get_meta for limits, and read ratehub://docs/behavior for edge cases. It lacks explicit when-not-to-use or routing against the historical sibling get_series, so it stops short of a 5.

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