MCP server exposing blockchain data as native AI agent tools
Two tools with clear verb-noun naming (get_wallet_balance, get_token_holdings) and proper JSON schemas. Descriptions are present but minimal (34-50 chars, below the 50-200 char LLM-optimized baseline). All parameters have type definitions and descriptions. No output schema documentation. Input validation exists (address format check) but error messages lack recovery guidance. Missing tool annotations (readOnlyHint), pagination support, and per-item error handling for batch token lookups.
Get ERC-20 token holdings for a wallet address
Get the native token balance (ETH/MATIC) for a blockchain wallet address
Descriptions are too brief (34-50 chars vs 50-200 char baseline). 'Get ERC-20 token holdings for a wallet address' lacks context on when to use this vs get_wallet_balance, what happens on error, or expected output structure.
No output schema documented. LLMs cannot plan downstream calls or extract fields without knowing the response structure. Both tools return objects but structure is implicit, not declared.
get_token_holdings silently skips non-ERC20 contracts with empty catch block. No per-item error reporting. If 5 of 10 tokens fail, agent receives no feedback on which ones or why, forcing manual retry.
Error messages lack recovery guidance. 'Invalid address: <addr>' tells LLM nothing about what format is expected or how to fix it. Should be: 'Invalid address format. Expected 0x-prefixed 40-character hex string (e.g., 0x742d35Cc6634C0532925a3b844Bc9e7595f42bE).'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2026-07-28+ | v2 |
No tool annotations. Both tools are read-only but lack readOnlyHint metadata. Agents cannot distinguish safe tools from destructive ones without explicit hints.