Model Context Protocol (MCP) server for interacting with EVM-compatible networks
Server has 10 tools with basic schemas and descriptions, but significant gaps limit production readiness. All tools have descriptions (10-200 chars, mostly adequate), and input schemas are present with Zod validation. However, 2 critical tools (buy_usdt_from_wallet, sell_usdt_from_wallet) expose private keys as parameters, a severe security violation. Output schemas are undocumented (tools return JSON.stringify without formal schema declarations). Error handling is minimal: most errors return raw exception messages without recovery guidance. Parameter descriptions lack constraints (e.g., no format specs for addresses, no enum for network names despite supporting 'all EVM-compatible networks'). Tool composition is weak: 8 read-only tools could be consolidated (e.g., get_balance and get_erc20_balance overlap; get_token_balance duplicates get_erc20_balance). No tool annotations (readOnlyHint, destructiveHint) despite clear risk stratification. Average tool score: 52/100.
Buy USDT using PancakeSwap's Router
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 ERC20 token balance of an Ethereum address
Get the latest block from the EVM
Get a list of supported EVM networks
Private keys exposed as tool parameters (buy_usdt_from_wallet, sell_usdt_from_wallet). Credentials must never appear in parameters, they leak into logs, traces, and prompt history. Use server-side secret injection via environment variables or vault.
Output schemas undocumented. Tools return JSON.stringify() without formal schema declarations. LLMs cannot plan downstream calls or extract fields reliably. Document return types for all tools.
Error handling lacks recovery guidance. Errors return raw exception messages (e.g., 'Error fetching chain info: ...') without actionable next steps. Include what the LLM should try next (e.g., 'Try get_supported_networks() to see available networks').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 49 | 2026-07-28+ | v2 |
Get the balance of an ERC20 token for an address
Resolve an ENS name to an Ethereum address
Sell USDT for ETH using PancakeSwap's Router
Parameter constraints missing. 'network' parameter accepts 'all EVM-compatible networks' but no enum or validation. Address parameters lack format specs (0x-prefixed hex). Slippage lacks min/max bounds. LLMs cannot validate inputs without explicit constraints.
Tool composition: get_erc20_balance and get_token_balance are near-duplicates (same functionality, different parameter names). get_balance and get_erc20_balance overlap. Consolidate to reduce LLM confusion and maintenance burden.