An MCP server for interacting with the Ethereum Name Service (ENS)
ENS server has 8 tools with consistent verb-noun naming (resolve-, reverse-, get-, check-) and clear descriptions (avg 65 chars). All tools have input schemas with Zod validation and parameter descriptions. However, output schemas are not documented, LLMs cannot predict response structure. Error handling exists but lacks recovery guidance (e.g., 'try search_users'). No tool annotations (readOnlyHint, idempotentHint). Parameter descriptions are adequate but lack format constraints (e.g., 'Ethereum address' should specify 0x-prefixed 42-char hex). Missing pagination for tools that could return large result sets (get-subdomains, get-all-records).
Check if an ENS name is available for registration
Get all available information for an ENS name
Get the history of an ENS name
Get the price to register an ENS name
Get subdomains for an ENS name
Get a text record for an ENS name
Resolve an ENS name to an Ethereum address
Output schemas not documented. LLMs cannot predict response structure, forcing them to guess what fields are returned and how to chain tools.
Parameter descriptions lack format constraints. 'address' should specify '0x-prefixed 42-character hex string'; 'name' should clarify 'with or without .eth suffix' for consistency.
No pagination support for tools returning lists (get-subdomains, get-all-records). Large result sets will blow context window. Add limit/offset params and document max result count.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Get the ENS name for an Ethereum address
Error handling returns generic messages without recovery guidance. 'Network error...' should suggest 'retry in 30s' or 'check provider status'. 'Invalid input' should list valid options.
No tool annotations (readOnlyHint, idempotentHint). All tools are read-only and idempotent, declaring this helps agents optimize retry logic and understand safety.