An MCP server that provides real-time cryptocurrency exchange details and exchange rates using the CoinCap API
Two tools with basic schemas and minimal descriptions. Both tools have proper input schemas with type definitions and parameter descriptions, but tool descriptions are extremely short (16-32 chars), falling well below the 50-200 char baseline for LLM-optimized descriptions. No output schemas documented. Error handling returns text but lacks recovery guidance or error classification. No parameter constraints (enums, ranges). Tools lack context about when to use them vs alternatives, prerequisites, or what data they return. Naming is clear (verb_noun pattern), but descriptions do not explain WHAT the tool does, WHEN to use it, or WHAT it returns, critical for LLM tool selection.
Get details about a cryptocurrency exchange
Get exchange rates for a cryptocurrency
Tool descriptions are critically short (16-32 chars). 'Get details about a cryptocurrency exchange' and 'Get exchange rates for a cryptocurrency' lack context on WHEN to use each tool, WHAT data is returned, and any prerequisites. LLMs cannot reliably select between tools with such minimal descriptions.
No output schemas documented. Callers cannot see what fields are returned (e.g., does get-exchange-details return volumeUsd, percentTotalVolume, tradingPairs?). LLMs must guess the response structure, risking failed downstream tool chains.
Parameter 'exchange' and 'currency' accept free-form strings with no enum constraints. Tool descriptions mention examples (binance, coinbase, kraken; bitcoin, ethereum, litecoin) but do not enforce them. LLMs may pass invalid IDs, causing API failures with no recovery guidance.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 47 | 2026-07-28+ | v2 |
Error responses return plain text ('Failed to retrieve details for exchange: {id}') without recovery guidance. No indication whether the error is retryable, user-fixable, or fatal. LLMs cannot determine next steps.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Both tools are read-only and idempotent, but this is not declared in the tool definition. Agents cannot infer safety properties.