resolve_domain
Convert blockchain domain names like ENS .eth or Unstoppable Domains into wallet addresses using Grove's multi-chain data endpoints.
Instructions
Resolve a blockchain domain name (ENS .eth or Unstoppable Domains) to an address using Grove endpoints
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | The domain name to resolve (e.g., "vitalik.eth", "alice.crypto") |
Implementation Reference
- src/handlers/domain-handlers.ts:79-93 (handler)The handler case in handleDomainTool function that executes the resolve_domain tool by extracting the domain argument and delegating to DomainResolverService.resolveDomain, then formatting the result.case 'resolve_domain': { const domain = args?.domain as string; const result = await domainResolver.resolveDomain(domain); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2), }, ], isError: !result.success, }; }
- Input schema definition for the resolve_domain tool, including name, description, and JSON schema for parameters.{ name: 'resolve_domain', description: 'Resolve a blockchain domain name (ENS .eth or Unstoppable Domains) to an address using Pocket Network endpoints', inputSchema: { type: 'object', properties: { domain: { type: 'string', description: 'The domain name to resolve (e.g., "vitalik.eth", "alice.crypto")', }, }, required: ['domain'], }, },
- src/index.ts:87-106 (registration)Tool registration where registerDomainHandlers is called to include resolve_domain in the server's tools list, handled by ListToolsRequestHandler.// Register all tools from handlers const tools: Tool[] = [ ...registerBlockchainHandlers(server, blockchainService), ...registerDomainHandlers(server, domainResolver), ...registerTransactionHandlers(server, advancedBlockchain), ...registerTokenHandlers(server, advancedBlockchain), ...registerMultichainHandlers(server, advancedBlockchain), ...registerContractHandlers(server, advancedBlockchain), ...registerUtilityHandlers(server, advancedBlockchain), ...registerEndpointHandlers(server, endpointManager), ...registerSolanaHandlers(server, solanaService), ...registerCosmosHandlers(server, cosmosService), ...registerSuiHandlers(server, suiService), ...registerDocsHandlers(server, docsManager), ]; // Handle tool listing server.setRequestHandler(ListToolsRequestSchema, async () => { return { tools }; });
- src/handlers/domain-handlers.ts:73-131 (handler)The full handleDomainTool dispatcher function that routes resolve_domain calls to the specific case handler.export async function handleDomainTool( name: string, args: any, domainResolver: DomainResolverService ) { switch (name) { case 'resolve_domain': { const domain = args?.domain as string; const result = await domainResolver.resolveDomain(domain); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2), }, ], isError: !result.success, }; } case 'reverse_resolve_domain': { const address = args?.address as string; const result = await domainResolver.reverseResolve(address); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2), }, ], isError: !result.success, }; } case 'get_domain_records': { const domain = args?.domain as string; const keys = args?.keys as string[]; const result = await domainResolver.getDomainRecords(domain, keys); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2), }, ], isError: !result.success, }; } default: return null; } }
- Core helper method in DomainResolverService that implements the domain resolution logic, dispatching to ENS or Unstoppable Domains based on TLD.async resolveDomain(domain: string): Promise<EndpointResponse> { const domainLower = domain.toLowerCase().trim(); // Determine domain type if (domainLower.endsWith('.eth')) { return this.resolveENS(domainLower); } else if (this.isUnstoppableDomain(domainLower)) { return this.resolveUnstoppableDomain(domainLower); } else { return { success: false, error: `Unsupported domain type: ${domain}. Supported: .eth (ENS), .crypto, .nft, .blockchain, .bitcoin, .coin, .wallet, .888, .dao, .x, .zil (Unstoppable Domains)`, }; } }