MCP server for interacting with EVM-compatible blockchains - supports 22 tools and 10 prompts across 60+ networks
Strong foundation with 22 well-named tools following verb_noun convention (get_, transfer_, approve_, etc.). All tools have descriptions (avg ~120 chars, within baseline 34-392 range). Input schemas present with Zod validation and type definitions. Tool annotations (readOnlyHint, destructiveHint, idempotentHint) correctly applied. Key gaps: output schemas not documented in code; error messages generic ('Error fetching chain info'); no pagination for list-like tools; parameter descriptions sometimes lack format/constraint details (e.g., 'amount' doesn't specify decimal places or wei vs ether).
Approve a spender to spend ERC20 tokens on your behalf
Fetch contract ABI from block explorer (Etherscan v2 API)
Check how much of an ERC20 token a spender is allowed to spend
Get the native token balance (ETH, MATIC, etc.) for an address
Get block details by block number or hash
Get the chain ID for a network
Get information about an EVM network: chain ID, current block number, and RPC endpoint
Output schemas not documented. Tools return JSON text responses but no schema definition visible for LLM to understand return structure (fields, types, pagination). Agents cannot reliably extract data or chain calls.
Parameter descriptions lack format/constraint details. 'amount' parameter in transfer_native and transfer_erc20 does not specify decimal places, wei vs ether, or valid range. LLMs may pass invalid values.
Error handling is generic. Catch blocks return 'Error: <message>' without recovery guidance. No categorization of retryable vs fatal errors. LLM cannot determine next action on failure.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | <=2025-11-25 | v2 |
Get current gas prices (base fee, standard, and fast) for a network
Get the number of NFTs owned by an address for a specific collection
Get a list of all supported EVM networks
Get the balance of an ERC20 token for an address
Get transaction details by transaction hash
Get transaction receipt and status by transaction hash
Get the address of the configured wallet. Use this to verify which wallet is active.
Check if an address is a smart contract or an externally owned account (EOA)
Lookup the ENS name for an Ethereum address (reverse resolution)
Call a read-only function on a smart contract
Resolve an ENS name to an Ethereum address
Transfer ERC20 tokens to an address
Transfer native tokens (ETH, MATIC, etc.) to an address
Wait for a transaction to be confirmed on the blockchain
Call a state-changing function on a smart contract
No pagination support for list-like tools. get_supported_networks returns all networks without limit. Large result sets waste tokens and risk context window exhaustion.
read_contract and write_contract accept 'abi' as JSON string parameter. Requires LLM to serialize ABI, error-prone. Consider accepting contract address + function name with internal ABI lookup or separate ABI registration.