Skip to main content
Glama

get_domain_details

Fetch detailed information for an ENS domain, including its address, to resolve and analyze domain activity.

Instructions

Fetch detailed information for an ENS domain, including its address.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
domainYes

Implementation Reference

  • main.py:162-227 (handler)
    Handler function decorated with @mcp.tool(), which registers the tool and infers input schema from type annotations (domain: str). Executes the core logic to fetch and format ENS domain details using the query_ens_domain helper.
    @mcp.tool() async def get_domain_details(domain: str) -> str: """Fetch detailed information for an ENS domain, including its address.""" domain_data = await query_ens_domain(domain) if not domain_data: return f"No data found for ENS domain: {domain}" # Get address 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") # Format dates expiry = (datetime.datetime.fromtimestamp(int(domain_data["expiryDate"])) .strftime("%Y-%m-%d %H:%M:%S") if domain_data["expiryDate"] else "None") created = (datetime.datetime.fromtimestamp(int(domain_data["createdAt"])) .strftime("%Y-%m-%d %H:%M:%S") if domain_data["createdAt"] else "None") # Registration details registration_info = ( f"Registration Date: {datetime.datetime.fromtimestamp(int(domain_data['registration']['registrationDate'])).strftime('%Y-%m-%d %H:%M:%S')}\n" f"Registration Expiry: {datetime.datetime.fromtimestamp(int(domain_data['registration']['expiryDate'])).strftime('%Y-%m-%d %H:%M:%S')}\n" f"Registration Cost: {domain_data['registration']['cost'] or 'Unknown'} Wei\n" f"Registrant: {domain_data['registration']['registrant']['id']}" if domain_data["registration"] else "No Registration" ) # Wrapped domain details wrapped_info = ( f"Wrapped Name: {domain_data['wrappedDomain']['name']}\n" f"Wrapped Owner: {domain_data['wrappedDomain']['owner']['id']}\n" f"Wrapped Expiry: {datetime.datetime.fromtimestamp(int(domain_data['wrappedDomain']['expiryDate'])).strftime('%Y-%m-%d %H:%M:%S')}\n" f"Fuses: {domain_data['wrappedDomain']['fuses']}" if domain_data["wrappedDomain"] else "Not Wrapped" ) # Resolver details resolver_info = ( f"Resolver Address: {domain_data['resolver']['address']}\n" f"Content Hash: {domain_data['resolver']['contentHash'] or 'None'}\n" f"Text Records: {', '.join(domain_data['resolver']['texts']) if domain_data['resolver']['texts'] else 'None'}" if domain_data["resolver"] else "No Resolver" ) return ( f"ENS Domain: {domain_data['name']}\n" f"Address: {address}\n" f"Label Name: {domain_data['labelName'] or 'None'}\n" f"Label Hash: {domain_data['labelhash'] or 'None'}\n" f"Subdomain Count: {domain_data['subdomainCount']}\n" f"Owner: {domain_data['owner']['id']}\n" f"Registrant: {domain_data['registrant']['id'] if domain_data['registrant'] else 'None'}\n" f"Wrapped Owner: {domain_data['wrappedOwner']['id'] if domain_data['wrappedOwner'] else 'None'}\n" f"Expiry Date: {expiry}\n" f"TTL: {domain_data['ttl'] or 'None'} seconds\n" f"Is Migrated: {domain_data['isMigrated']}\n" f"Created At: {created}\n" f"Registration: {registration_info}\n" f"Wrapped Domain: {wrapped_info}\n" f"Resolver: {resolver_info}" )
  • main.py:27-82 (helper)
    Supporting helper utility that queries the ENS subgraph via GraphQL for detailed domain data, which is then processed by the get_domain_details 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

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/kukapay/ens-mcp'

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