resolveName
Resolve Ethereum Name Service (ENS) domains to blockchain addresses using network providers or custom RPC URLs for Ethereum interactions.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The ENS name to resolve | |
| provider | No | Optional. Either a network name or custom RPC URL. Use getAllNetworks to see available networks and their details, or getNetwork to get info about a specific network. You can use any network name returned by these tools as a provider value. | |
| chainId | No | Optional. The chain ID to use. If provided with a named network and they don't match, the RPC's chain ID will be used. |
Implementation Reference
- src/tools/core.ts:731-783 (handler)The complete implementation of the 'resolveName' tool, including registration via server.tool, input schema using Zod, and the async handler function that resolves an ENS name to an Ethereum address using ethers.js provider.// ENS resolveName tool server.tool( "resolveName", { name: z.string().describe( "The ENS name to resolve" ), provider: z.string().optional().describe(PROVIDER_DESCRIPTION), chainId: z.number().optional().describe( "Optional. The chain ID to use. If provided with a named network and they don't match, the RPC's chain ID will be used." ) }, async ({ name, provider, chainId }) => { try { const ethProvider = await ethersService.getProvider(provider, chainId); // Resolve the ENS name to an address const address = await ethProvider.resolveName(name); if (!address) { return { content: [{ type: "text", text: JSON.stringify({ name, resolved: false, message: "Name could not be resolved" }, null, 2) }] }; } return { content: [{ type: "text", text: JSON.stringify({ name, address, resolved: true }, null, 2) }] }; } catch (error) { return { isError: true, content: [{ type: "text", text: `Error resolving ENS name: ${error instanceof Error ? error.message : String(error)}` }] }; } } );