resolve_ens_name
Convert an ENS domain name into its corresponding Ethereum address using the resolve_ens_name tool on the ens-mcp server. Simplify Ethereum address lookup for ENS domains.
Instructions
Resolve an ENS name to its Ethereum address.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes |
Implementation Reference
- main.py:149-149 (registration)Registers the resolve_ens_name function as an MCP tool using FastMCP's @mcp.tool() decorator.@mcp.tool()
- main.py:150-160 (handler)The core handler function for the 'resolve_ens_name' tool. It queries the ENS subgraph via the helper function, extracts the Ethereum address (preferring resolvedAddress, falling back to resolver.addr), or returns a no-data message.async def resolve_ens_name(domain: str) -> str: """Resolve an ENS name to its Ethereum address.""" domain_data = await query_ens_domain(domain) if not domain_data: return f"No data found for ENS domain: {domain}" # Prefer resolvedAddress, fallback to resolver.addr address = (domain_data["resolvedAddress"]["id"] if domain_data["resolvedAddress"] else domain_data["resolver"]["addr"]["id"] if domain_data["resolver"] and domain_data["resolver"]["addr"] else "None") return address
- main.py:27-82 (helper)Supporting helper function that performs the GraphQL query to the ENS subgraph to fetch domain details, which is called by the handler.async def query_ens_domain(name: str) -> Optional[Dict[str, Any]]: """Query the ENS Subgraph for domain details.""" query = gql(""" query GetDomain($name: String!) { domains(where: { name: $name }) { id name labelName labelhash subdomainCount resolvedAddress { id } resolver { address addr { id } contentHash texts } ttl isMigrated createdAt owner { id } registrant { id } wrappedOwner { id } expiryDate registration { registrationDate expiryDate cost registrant { id } labelName } wrappedDomain { expiryDate fuses owner { id } name } } } """) result = await graphql_client.execute_async(query, variable_values={"name": name}) return result["domains"][0] if result["domains"] else None