Skip to main content
Glama
buildwithgrove

Grove's MCP Server for Pocket Network

get_domain_records

Retrieve ENS text records for domains including avatar, email, url, and social media handles to access verified domain information and metadata.

Instructions

Get ENS text records for a domain (e.g., avatar, email, url, twitter, github)

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
domainYesENS domain name
keysYesText record keys to fetch (e.g., ["avatar", "email", "url", "com.twitter", "com.github"])

Implementation Reference

  • Handler logic for executing the 'get_domain_records' tool: extracts parameters and delegates to DomainResolverService
    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, }; }
  • Tool registration definition including name, description, and input schema for 'get_domain_records'
    { name: 'get_domain_records', description: 'Get ENS text records for a domain (e.g., avatar, email, url, twitter, github)', inputSchema: { type: 'object', properties: { domain: { type: 'string', description: 'ENS domain name', }, keys: { type: 'array', items: { type: 'string' }, description: 'Text record keys to fetch (e.g., ["avatar", "email", "url", "com.twitter", "com.github"])', }, }, required: ['domain', 'keys'], }, },
  • Main implementation of getDomainRecords: validates ENS domain, fetches resolver, queries text records via eth_call RPCs, returns records
    async getDomainRecords(domain: string, keys: string[]): Promise<EndpointResponse> { if (!domain.endsWith('.eth')) { return { success: false, error: 'Domain records currently only supported for ENS (.eth) domains', }; } try { const namehash = this.namehash(domain); // Get resolver address first const resolverData = this.encodeResolverCall(namehash); const resolverResult = await this.blockchainService.callRPCMethod( 'ethereum-mainnet', 'eth_call', [ { to: DomainResolverService.ENS_REGISTRY, data: resolverData, }, 'latest', ] ); if (!resolverResult.success || !resolverResult.data) { return { success: false, error: `Failed to get resolver for ${domain}`, }; } const resolverAddress = '0x' + resolverResult.data.slice(-40); if (resolverAddress === '0x0000000000000000000000000000000000000000') { return { success: false, error: `No resolver set for ${domain}`, }; } // Fetch all text records in parallel const records = await Promise.all( keys.map(async (key) => { const textData = this.encodeTextCall(namehash, key); const result = await this.blockchainService.callRPCMethod( 'ethereum-mainnet', 'eth_call', [ { to: resolverAddress, data: textData, }, 'latest', ] ); return { key, value: result.success ? this.decodeString(result.data) : null, }; }) ); return { success: true, data: { domain, records, }, metadata: { timestamp: new Date().toISOString(), endpoint: 'ethereum-mainnet', }, }; } catch (error) { return { success: false, error: error instanceof Error ? error.message : 'Failed to fetch domain records', }; } }
  • src/index.ts:88-101 (registration)
    Central tool registration where domain handlers (including get_domain_records) are added to the tools list for MCP server
    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), ];
  • Top-level MCP CallToolRequestHandler dispatcher that invokes handleDomainTool for domain tools like get_domain_records
    (await handleBlockchainTool(name, args, blockchainService)) || (await handleDomainTool(name, args, domainResolver)) || (await handleTransactionTool(name, args, advancedBlockchain)) || (await handleTokenTool(name, args, advancedBlockchain)) || (await handleMultichainTool(name, args, advancedBlockchain)) || (await handleContractTool(name, args, advancedBlockchain)) || (await handleUtilityTool(name, args, advancedBlockchain)) || (await handleEndpointTool(name, args, endpointManager)) || (await handleSolanaTool(name, args, solanaService)) || (await handleCosmosTool(name, args, cosmosService)) || (await handleSuiTool(name, args, suiService)) || (await handleDocsTool(name, args, docsManager));

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/buildwithgrove/mcp-pocket'

If you have feedback or need assistance with the MCP directory API, please join our Discord server