Model Context Protocol (MCP) server for interacting with EVM-compatible networks
21 tools with consistent verb-noun naming (get_, resolve_, is_) and complete input schemas using Zod. All tools have descriptions (avg ~80 chars, within baseline 34-392). Parameters are well-described with network defaults. However, output schemas are NOT documented, responses are returned as JSON strings without formal schema declarations. Error handling returns isError flags but lacks recovery guidance (e.g., 'try search_users first'). No tool annotations (readOnlyHint, idempotentHint). All tools are READ_ONLY but this is not declared in the tool metadata. Missing: output schema documentation, error recovery hints, and tool annotations.
Estimate the gas required for a transaction
Get the native token balance (ETH, MATIC, etc.) for an address
Get a block by its block number
Get information about an EVM network
Get the balance of an ERC1155 token for an address
Get the URI for an ERC1155 token
Get the ERC20 token balance of an Ethereum address
Output schemas not documented. Tools return JSON strings without formal schema declarations. LLMs cannot predict response structure for downstream chaining.
Error responses lack recovery guidance. Errors return isError=true with message only. No hints like 'try resolve_ens() first' or 'check network parameter'.
No tool annotations. All 21 tools are READ_ONLY but readOnlyHint is not declared in tool metadata. Agents cannot distinguish safe tools from destructive ones.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
Get information about an ERC20 token (name, symbol, decimals, total supply)
Get the number of NFTs owned by an address for a specific ERC721 collection
Get metadata for an ERC721 NFT token
Get the latest block from the EVM
Get logs (events) for a specific contract or address
Get a list of supported EVM networks
Get the balance of an ERC20 token for an address
Get detailed information about a specific transaction by its hash. Includes sender, recipient, value, data, and more.
Get the number of transactions sent from an address (nonce)
Get the receipt of a transaction, including status, gas used, and logs
Check if an address is a smart contract or an externally owned account (EOA)
Check if an address owns a specific ERC721 NFT
Read data from a smart contract by calling a view or pure function
Resolve an ENS name to an Ethereum address
get_logs has optional 'address' parameter but description says 'optional' without clarifying behavior when omitted. Does it return all logs? Requires clarification.
read_contract accepts 'abi' as JSON string parameter. No validation that it's valid JSON or a proper ABI. LLMs may pass malformed ABIs causing silent failures.