SPL token holdings, SOL balance and transaction history for a Solana wallet, and the top holders of an SPL token mint, read from public Solana JSON-RPC endpoints.
Five read-only tools with clear verb-noun naming (solana_wallet_*, solana_token_*). All have input schemas with typed properties and descriptions. Descriptions are concise (40-80 chars) but lack actionable context for LLM selection, they state WHAT but not WHEN or WHY to call each tool. No output schemas documented. Parameters lack constraints (e.g., 'limit' and 'page' are unbounded numbers). Error handling is basic (isError flag only, no recovery guidance). No tool annotations (readOnlyHint present in metadata but not in schema). Pagination support exists (page, limit params) but total counts and next_cursor not documented in output.
Top holders of an SPL token mint
Total supply and decimals for an SPL token mint
SOL balance for a Solana wallet address
SPL token holdings for a Solana wallet address, paginated by token balance size
Transaction history for a Solana wallet address
No output schemas documented. LLMs cannot infer response structure, forcing them to guess which fields to extract for downstream calls. Pagination responses lack total_count and next_cursor documentation.
Numeric parameters (page, limit) lack min/max constraints. LLMs can pass unbounded values (page=999999, limit=1000000) causing API failures or timeouts. No enum constraints on string parameters.
Descriptions are too brief (40-80 chars) and lack context. They state WHAT (e.g., 'SOL balance for a wallet') but not WHEN to use this tool vs alternatives or what the response contains. No dependency hints or prerequisites documented.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2025-06-18+ | v2 |
Error handling returns only isError flag and text message. No error categorization (retryable vs user-fixable vs fatal), no recovery guidance, no invalid value echoing. LLM cannot determine next action on failure.
Tool annotations (readOnlyHint) present in metadata but not exposed in inputSchema. LLMs cannot see that these tools are safe to retry without side effects. Idempotent operations should declare this explicitly.