rate-hub
Server Details
Indicative fiat and crypto rates over MCP, paid per request via x402 at $0.0001/request.
- Status
- Healthy
- Uptime
- 100.0% over 19 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 7 tools
Most tools have clearly distinct purposes, but get_daily and get_series both return historical price data, creating potential overlap for an agent seeking historical rates. get_rates and get_top also relate to pricing, but they serve different discovery versus lookup use cases.
All tool names use snake_case and follow a predictable get_ prefix for six tools, with search_assets as the single search operation. The pattern is consistent and easy to parse.
Seven tools is well-scoped for a rate hub API, covering discovery, current rates, historical daily, series, categories, top assets, and metadata without excess or redundancy.
Core read-only workflows are covered, but there is no direct asset lookup by uid, no way to list available sources, and no historical market-cap tool; agents can work around these gaps via search_assets or get_meta.
Available Tools
7 toolsget_categoriesAInspect
Coin categories (GET /v1/categories): each category id and name with the catalog uids that belong to it, for example layer-1 or stablecoins. Join it with uids from get_rates or search_assets to group holdings. It changes about once a day; as_of says when it was refreshed. A coin can be in several categories, and only the larger coins of a category are listed. Categories without a catalog member are omitted. The result grows with the catalog (one uid list per category, both copies of the result). not_ready (503) before the first daily refresh; not_found when the server has categories switched off.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| as_of | Yes | |
| build | Yes | |
| categories | Yes | |
| server_time | Yes |
TDQS
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 thoroughly: daily refresh with an as_of timestamp, coins appearing in multiple categories, partial coverage (only larger coins listed), omitted empty categories, result-size growth characteristics, and both error states (503 not_ready before first refresh, not_found when categories are disabled). This is unusually complete disclosure of mutation-free but non-obvious behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads what the tool returns before adding cadence, join guidance, and error semantics. Every sentence carries information, though the parenthetical about 'both copies of the result' is slightly convoluted and could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 structure need not be restated, and the description fills the remaining gaps: freshness, coverage limits, join semantics, and failure modes. Nothing an agent needs to call and interpret this tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline for a parameterless tool is 4. The description correctly implies a no-argument call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific resource (coin categories) plus the underlying endpoint, and states exactly what each entry contains (category id/name plus catalog uids). It also distinguishes itself from siblings by naming get_rates and search_assets as join partners rather than alternatives, so an agent can place it precisely in the toolset.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete usage path — join category uids with uids from get_rates or search_assets to group holdings — and explains the daily refresh cadence. It stops short of stating when NOT to use it (e.g. vs get_meta or get_daily), so it is clear context without explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dailyAInspect
Immutable daily rates for uids and UTC days (POST /v1/rates/daily). Days are UTC calendar dates (YYYY-MM-DD) in the past. Crypto history older than about a year is served at daily granularity from daily candles (source s8) back to the earliest day each asset has; an asset with no such history is out_of_range. Each item carries a status: ok = exact immutable rate; out_of_range = the day is before the archive start, after today UTC, before the first available day of a crypto asset, or before the asset was listed (final, do not retry); pending = transient upstream miss, retry after retry_after seconds; unsupported = unknown uid. Limits (assets, quotes, assets times days) are in get_meta. Edge cases: read resource ratehub://docs/behavior (behaviour notes).
| Name | Required | Description | Default |
|---|---|---|---|
| vs | Yes | Quote currencies | |
| days | Yes | Past UTC calendar days, YYYY-MM-DD | |
| assets | Yes | Catalog uids |
Output Schema
| Name | Required | Description |
|---|---|---|
| build | Yes | |
| rates | Yes | |
| server_time | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden and does so well: it discloses the immutable archive semantics, the meaning and finality of out_of_range, the transient/retry-after nature of pending, the unsupported-uid case, where limits live (get_meta), and points to ratehub://docs/behavior for remaining edge cases. An agent can reason about failure handling before the first call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and endpoint are front-loaded, and every sentence is substantive rather than filler. The status enumeration is crammed into dense run-on prose that would scan better as a list, and it partly restates the item 'status' field that the output schema already defines.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-required-array-param request against a rich output schema, the definition covers what the agent needs: scope, day constraints, per-item status semantics with retry policy, limit location, and a documented resource for deeper edge cases. Since an output schema exists, the description is not obliged to explain the response envelope further.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents assets as 'Catalog uids', vs as 'Quote currencies', and days as past UTC YYYY-MM-DD. The description restates the day format/UTC constraint but adds no extra parameter meaning (e.g. what a catalog uid is, how to obtain one, or per-call limits beyond a pointer to get_meta), so this sits at the 3 baseline for schema-documented params.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource with clear qualifiers: immutable daily rates for catalog uids against quote currencies on UTC calendar days, plus the backing endpoint (POST /v1/rates/daily). The 'daily' granularity and 'immutable' property separate it from granularity-flexible siblings like get_rates and get_series without needing to open their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives strong operational context: days must be past UTC dates, crypto history beyond ~a year comes from daily candles (source s8), and each status tells the caller whether to retry (pending), never retry (out_of_range), or treat the result as final (ok). It never explicitly contrasts this tool with siblings such as get_rates or get_series, so selection between them is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_metaBInspect
API limits, supported quote currencies, and build info (GET /v1/meta).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| build | Yes | |
| max_vs | Yes | |
| collector | No | |
| upstreams | No | |
| max_assets | Yes | |
| api_version | Yes | |
| supported_vs | Yes | |
| max_body_bytes | Yes | |
| max_daily_pairs | No | |
| stale_after_seconds | No | |
| pending_retry_after_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. The embedded 'GET /v1/meta' implies a read-only operation, but nothing is said about auth requirements, caching/TTL, response size, or whether the values are static or live — all relevant for a metadata endpoint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence lists the payload contents first and appends the endpoint, with no filler or restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read tool, the description plus the existing output schema covers what is returned, so return-value detail is not required. It is nonetheless silent on usage context, which leaves the agent to infer why and when this endpoint should be hit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the schema is trivially complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the concrete content returned — API limits, supported quote currencies, and build info — plus the backing endpoint GET /v1/meta, which is specific enough to separate it from the market-data siblings. It stops short of a clean verb+resource framing, but an agent can still tell this is the configuration/metadata endpoint.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus get_rates, get_daily, or the other data tools, and no prerequisites or typical ordering (e.g. call first to discover quote currencies and limits). The parenthetical endpoint path is the only routing hint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ratesAInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| vs | Yes | Quote currency codes (usd, eur, btc, ...) | |
| assets | Yes | Catalog uids to price (class*1e8+seq; use search_assets to find uids) | |
| source | No | Optional 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) | |
| include | No | Optional extras: change, market, sparkline. sparkline is large (a long price array per asset); ask for it only when needed |
Output Schema
| Name | Required | Description |
|---|---|---|
| build | Yes | |
| rates | Yes | |
| server_time | Yes |
TDQS
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.
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.
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.
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.
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.
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.
get_seriesAInspect
Price history of one asset for charts (GET /v1/rates/series). Crypto: every range. Fiat: 1d and 7d from rate-hub's own readings taken about every 30 minutes; 30d, 90d, 1y and max one point per UTC day from the daily archive (it has a start day, days without a document are skipped, a cold range fills over a few retries, so an early answer may have fewer points). A fiat with no reading in the range, or an unknown uid, answers status unsupported with empty points, not an error. status: ok = fresh series; stale = last cached series, upstream failed (see fetched_at); pending = not ready, retry after retry_after seconds; unsupported = unknown uid, an asset no upstream knows, or a fiat with no reading in the range. Size: about 110 bytes per point (both copies of the result). max_points (2..500, default 100) downsamples evenly and keeps the first and last point; pass 500 for full detail. A non-USD fiat quote clips the series at the start of the fiat archive (range max only), and with a dynamic coin an unsupported answer may mean its uid expired. Edge cases: read resource ratehub://docs/behavior (behaviour notes).
| Name | Required | Description | Default |
|---|---|---|---|
| vs | Yes | Quote currency | |
| uid | Yes | Catalog uid of a crypto asset | |
| range | Yes | Chart range | |
| max_points | No | Downsample to at most this many points, 2..500 (default 100); first and last points are kept |
Output Schema
| Name | Required | Description |
|---|---|---|
| vs | Yes | |
| uid | Yes | |
| build | Yes | |
| range | Yes | |
| points | Yes | |
| source | No | |
| status | Yes | |
| fetched_at | No | |
| retry_after | No | |
| server_time | Yes |
TDQS
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: it enumerates the status contract (ok/stale/pending/unsupported), states that upstream failures surface as stale with fetched_at, defines unsupported as a non-error empty result, explains cold-range backfill needing retries, and gives a byte-per-point size estimate. This is far more than the schema can convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first clause, then details follow in a logical order (coverage, status contract, sizing, edge cases). The single dense paragraph of grey text is longer than ideal and stacks several clauses per sentence, but nearly every clause carries actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, yet the description still documents the meaningful shape (points, status, fetched_at, retry_after) and points to a further resource for behavior notes. Combined with per-range coverage rules and edge cases, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds genuine meaning: max_points downsamples evenly while keeping the first and last point, max_points=500 yields full detail, range is clipped for non-USD fiat quotes, and uid can effectively expire for dynamic coins. It clarifies behavior the schema alone cannot express.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Price history of one asset for charts") plus the underlying endpoint, which distinguishes it from siblings like get_daily, get_rates and get_top that also return numeric series. An agent can tell this is the per-asset chart-series tool without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives rich conditional guidance on coverage: crypto supports every range, fiat only 1d/7d from rate-hub and the rest from the daily archive. It also tells the agent what to do on 'pending' (retry after retry_after) and how to read 'unsupported'. It never explicitly compares against sibling tools such as get_daily, so it stops short of full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_topAInspect
Top crypto assets by market rank (GET /v1/top), with change and, by default, the market block (rank, market cap, volume, supply). Size: about 1 KB per asset with market (both copies of the result), smaller without. Default limit is 20 (max 250); pass include_market=false for a compact list. Items that cannot be priced in the requested quote are skipped. Edge cases: read resource ratehub://docs/behavior (behaviour notes).
| Name | Required | Description | Default |
|---|---|---|---|
| vs | No | Quote currencies (default usd) | |
| limit | No | Ranked assets to return (1..250, default 20) | |
| include_market | No | Include the market block (rank, market cap, volume, supply) per asset; default true. false makes the result smaller |
Output Schema
| Name | Required | Description |
|---|---|---|
| build | Yes | |
| rates | Yes | |
| server_time | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does so well: it discloses payload size (~1 KB per asset with market), the default of 20 and max of 250, that unpriced-in-quote items are silently skipped, and it routes edge cases to the ratehub://docs/behavior resource. Rate-limit and auth behavior are only pointed at rather than stated, keeping it below 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then size, defaults, and edge cases in a logical order with no filler sentences. It is slightly cramped and mildly redundant, restating the market block contents after already naming it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the description instead supplies the operational facts an agent needs: defaults, caps, compaction flag, skipped-item behavior, and a pointer to deeper behavioral docs. Complete for a three-parameter listing tool, with only rate limits/auth left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description genuinely adds meaning: include_market is tied to the ~1 KB size figure and 'both copies of the result', and the default limit behavior is restated in context. That is more than a paraphrase of the schema, though it doesn't explain the `vs` quote-currency mechanics in any depth.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource ('Top crypto assets by market rank') and adds the underlying endpoint GET /v1/top, so the operation is unambiguous. It does not, however, differentiate itself from the sibling search_assets or get_series, leaving the agent to infer which listing path applies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: 'pass include_market=false for a compact list' and the default/max limit tell the agent how to tune a call, but there is no when-to-use-this-vs-search_assets guidance and no explicit exclusions. Adequate but with a clear gap around alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_assetsAInspect
Catalog lookup (GET /v1/assets); use it to turn tickers or names into uids. Filters: q (free text), symbol, symbols (several tickers in one call), candidate (the uid of a candidates entry; registers that coin on demand; use alone), chain+contract (an unknown Solana mint can be registered on demand; mints are case-sensitive). Size: about 0.4 KB per asset (both copies of the result). Without any filter the default limit is 50 (the whole catalog is hundreds of assets); page with limit (1..1000) and after (next_after of the previous page). An explicit limit of 0 is an error. For a q lookup with few catalog hits, candidates lists at most 5 unregistered coins (not yet priced); pass a candidate's uid as candidate to register it and make it priceable. Dynamic coins expire after 7 days without use and may get a new uid after expiry or a server reset, so do not store a dynamic uid as identity; asset.icon is a placeholder image for an asset with no image source. Edge cases: read resource ratehub://docs/behavior (behaviour notes).
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Free-text search over symbol and name | |
| after | No | Uid cursor for pagination (next_after from the previous page) | |
| chain | No | Chain name with contract | |
| limit | No | Page size 1..1000. Default 50 when no filter is given, otherwise no limit | |
| symbol | No | Exact symbol (non-unique, all matches returned) | |
| symbols | No | Several exact symbols in one call, e.g. [btc, eth, sol]; all matches for each are returned | |
| contract | No | Token contract address | |
| candidate | No | The uid of a candidates entry from an earlier search; registers that coin on demand and returns its asset. Use alone |
Output Schema
| Name | Required | Description |
|---|---|---|
| build | Yes | |
| total | No | |
| assets | Yes | |
| candidates | No | |
| next_after | No | |
| candidates_status | No |
TDQS
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 richly: payload size (~0.4 KB/asset), default pagination limit and page-size bounds, that limit=0 is an error, that candidates lists at most 5 unregistered coins, that dynamic coins expire after 7 days and may change uid, and that asset.icon is a placeholder. It even routes to a behavior-notes resource for edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose and then packs filters, sizing, pagination, and edge cases into dense but non-redundant sentences. It is long and somewhat wall-of-text, but nearly every clause conveys actionable detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter, unannotated tool with an output schema (so return values need not be explained), the description covers usage, sizing, pagination, on-demand registration, and expiry behavior. Nothing essential to correct invocation appears missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond it: on-demand registration semantics for chain+contract, case-sensitivity of Solana mints, 'use alone' for candidate, and the pagination relationship between after and next_after. It enriches rather than merely restates the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Catalog lookup') and the concrete outcome ('turn tickers or names into uids'). This clearly separates it from the get_* siblings, which retrieve other data types. An agent can identify the tool's job without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the core use case (tickers/names -> uids) and gives per-filter selection guidance ('use alone' for candidate, 'chain+contract' for registering unknown mints). It does not explicitly name sibling tools or state when not to use it, 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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
7 tool updates
- First observed
get_categories - First observed
get_daily - First observed
get_meta - First observed
get_rates - First observed
get_series - First observed
get_top - First observed
search_assets
Related MCP Connectors
Live financial data MCP: FX, crypto, stocks, news, URL reader. x402 on Base: $0.001/call.
Real-time & historical crypto and fiat exchange rates, median-aggregated from multiple sources.
ECB FX rates, cloud GPU and LLM API prices, World Bank country macro data; pay per call via x402
Read-only XRPL and Solana data for agents: fees, slippage, readiness. Free /mcp; x402 /mcp/pro.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceReal-time currency exchange rates and crypto prices via MCP. Convert between 60+ fiat currencies and 30+ cryptocurrencies with multi-source failover. No API keys needed for upstream data.5 npmISC
- AlicenseAqualityCmaintenanceEnables MCP clients to access exchange rates for 160+ currencies, currency conversion, historical rates, time series, crypto, metal and stock prices, usage checks, and rate alerts.17121 npmMIT
- AlicenseAqualityBmaintenanceEnables MCP clients to fetch official published exchange rates from 60+ central banks and tax authorities, with point-in-time lookup, history, and cross-bank comparison.5396 npm1MIT
- AlicenseNot gradedqualityCmaintenanceConverts between fiat and crypto currencies using ECB and CoinGecko rates, with pay-per-call via x402 micropayments.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.