The server defines 31 read-only tools with consistent naming (all start with 'get_'), detailed descriptions, and proper input schemas. Most tools follow the verb_noun pattern and include parameter descriptions with types. However, there are notable gaps: no output schemas are documented (only inferred from response model classes), no error handling guidance is provided, and most tool descriptions lack actionable context about when to use each tool vs. alternatives. Tool compositions are granular (31 separate reads) but descriptions don't explain dependencies or multi-step workflows. Parameter constraints are present in descriptions but not always formalized as enums. The server uses Pydantic response models (SolanaBalanceResponse, etc.) which suggests structured output, but these schemas are not visible in the source excerpt and cannot be scored directly.
Get all information associated with a Solana account by its address.
Get information about a confirmed block by slot number.
Get commitment (confirmation status) information for a block.
Get the current block height of the Solana node.
Get recent block production information from the Solana network.
Get the estimated production time of a block.
Get a list of confirmed blocks between two slots.
Output schemas not visible in source. Response models (SolanaBalanceResponse, etc.) exist as Pydantic classes but their structure is not shown. LLMs cannot determine what fields to expect or plan downstream tool calls without documented output schemas.
No error handling guidance provided. Tools do not describe what errors are possible, when they are retryable, or how LLMs should recover. Example: 'Invalid address' error returns no guidance to search for the correct address or validate format.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite all 31 tools being read-only. Adding readOnlyHint=true signals to agents that these calls are safe to retry and stateless.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 60 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
Get a list of confirmed blocks starting at a slot with a limit.
Get information about all the nodes in the Solana cluster.
Get information about the current epoch.
Get the schedule of epochs for the Solana network.
Get the base fee and prioritization fee for a given message.
Get the slot of the first available block.
Get the genesis hash of the Solana network.
Get the health status of a Solana node.
Get the highest slot for which snapshot information is available.
Get the identity of the Solana node.
Get the inflation governor configuration.
Get the inflation rate of the Solana network.
Get inflation rewards for a list of addresses from a specified epoch.
Get the largest accounts on the Solana network by lamports balance.
Get the latest blockhash of the Solana network.
Get the leader schedule for the Solana network.
Get the max slot seen from retransmit stage.
Get the max slot seen from shred insert stage.
Get the minimum balance required for rent exemption.
Get account information for multiple accounts.
Get all accounts owned by a given program public key.
Get recent performance samples from the Solana network.
Get recent prioritization fees from the Solana network.
Get the SOL balance for a Solana wallet address.
Eight tools (get_cluster_nodes, get_epoch_schedule, get_first_available_block, get_genesis_hash, get_health, get_highest_snapshot_slot, get_identity, get_inflation_governor, get_inflation_rate, get_max_retransmit_slot, get_max_shred_insert_slot) have empty input parameters ({}) but lack descriptions explaining when to call them or what context they provide.
No pagination or limits documented. Many tools (get_blocks, get_program_accounts, get_leader_schedule) can return large result sets. No indication of result caps, pagination parameters, or next_cursor support. Risk: context window exhaustion.
Commitment parameter ('processed', 'confirmed', 'finalized') accepted as free-form strings in 13+ tools, but not formalized as enums. LLMs may hallucinate invalid commitment levels. Should declare as enum: ["processed", "confirmed", "finalized"].
Encoding parameter in multiple tools (get_account_info, get_block, get_multiple_accounts, get_program_accounts) accepts free-form strings but should be declared as enum: ["base58", "base64", "base64+zstd", "jsonParsed"] (or per-tool subset).
Tool chaining not optimized. No documentation of which tools are commonly called in sequence (e.g., 'get_solana_balance then get_account_info') or what IDs downstream tools expect. Mismatched or missing reference fields would force extra lookups.