MCP server for Web3 token price and information queries via CoinMarketCap API
Single tool with minimal schema definition, no parameter descriptions, and generic tool description. The tool is directly visible in src/tools.ts with a JSON schema, but lacks critical details for LLM-driven discovery and error handling. Parameter 'symbol' has a type but no actionable description of format, constraints, or valid values. No output schema documented. Error handling relies on generic exceptions without recovery guidance.
Get token current price
Parameter 'symbol' lacks actionable description. Current description is empty in the schema; LLMs cannot infer valid token symbols (e.g., 'BTC', 'ETH', case-sensitivity, special chars). Rubric requires: 'The token symbol (e.g., uppercase, 1-10 chars)'
Tool description is 25 chars ('Get token current price'). Rubric baseline: average 194 chars (p10=34, p90=392). At 25 chars, description is below the p10 threshold and lacks WHEN to use it, WHAT it returns, and any prerequisites (e.g., 'Requires CMC_API_KEY env var'). Must expand to 50-200 chars.
No output schema documented. LLMs cannot plan downstream tool calls or extract data if the response structure is unknown. Code shows text response 'The price of {symbol} is ${price}', but no structured schema definition visible in tool metadata.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 41 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 22 | - | v1 |
Error handling is generic and lacks recovery guidance. Code throws 'Could not find token with symbol {symbol}' and 'Unknown tool', but does not guide LLM toward next actions (e.g., 'Try searching with a different symbol' or 'Call list_supported_tokens() first'). Rubric requires: error responses must tell LLM what to do next.
CMC_API_KEY credential is injected via environment variable (correct pattern), but tool description does not document this dependency. LLMs cannot infer that the tool will fail if env var is missing. Add to description: 'Requires CMC_API_KEY environment variable.'
No validation error messages that self-correct. Code validates with Zod but returns generic 'Invalid arguments: ...' without mapping to valid enum values. If symbol='XYZ' fails, error should be 'Invalid symbol XYZ. Try one of: BTC, ETH, SOL, ...' to enable LLM self-correction.
Tool name 'get_token_price' is acceptable (verb_noun pattern), but 'symbol' param is ambiguous. Does it accept 'BTC', 'bitcoin', 'Bitcoin', 'BITCOIN', contract addresses, or CoinMarketCap IDs? Description must clarify: 'The token symbol in uppercase (e.g., BTC, ETH, USDC). Use symbol, not contract address or full name.'