Skip to main content
Glama

get_domain_events

Retrieve events linked to an ENS domain to analyze and contextualize its activity with the ens-mcp server.

Instructions

Retrieve events associated with an ENS domain.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
domainYes

Implementation Reference

  • main.py:229-267 (handler)
    The main handler for the 'get_domain_events' tool. It is registered via @mcp.tool() decorator and implements the core logic: queries domain events using a helper function and formats them into a readable string summary grouped by event type.
    @mcp.tool() async def get_domain_events(domain: str) -> str: """Retrieve events associated with an ENS domain.""" events = await query_domain_events(domain) if not events: return f"No events found for ENS domain: {domain}" event_summaries = [] for event in events: event_type = event["__typename"] summary = f"Event: {event_type}\n" summary += f"Block Number: {event['blockNumber']}\n" summary += f"Transaction ID: {event['transactionID']}\n" if event_type == "Transfer": summary += f"New Owner: {event['owner']['id']}" elif event_type == "NewOwner": summary += f"New Owner: {event['owner']['id']}\nParent Domain: {event['parentDomain']['name']}" elif event_type == "NewResolver": addr = event['resolver']['addr']['id'] if event['resolver']['addr'] else "None" summary += f"Resolver Address: {event['resolver']['address']}\nResolver Addr: {addr}" elif event_type == "NewTTL": summary += f"TTL: {event['ttl']} seconds" elif event_type == "WrappedTransfer": summary += f"New Wrapped Owner: {event['owner']['id']}" elif event_type == "NameWrapped": expiry = datetime.datetime.fromtimestamp(int(event['expiryDate'])).strftime("%Y-%m-%d %H:%M:%S") summary += f"Wrapped Owner: {event['owner']['id']}\nName: {event['name']}\nFuses: {event['fuses']}\nExpiry: {expiry}" elif event_type == "NameUnwrapped": summary += f"Owner: {event['owner']['id']}" elif event_type == "FusesSet": summary += f"Fuses: {event['fuses']}" elif event_type == "ExpiryExtended": expiry = datetime.datetime.fromtimestamp(int(event['expiryDate'])).strftime("%Y-%m-%d %H:%M:%S") summary += f"New Expiry: {expiry}" event_summaries.append(summary) return "\n\n".join(event_summaries)
  • Helper function that executes the GraphQL query to retrieve raw domain events from the ENS subgraph, used by the main handler.
    async def query_domain_events(name: str) -> List[Dict[str, Any]]: """Query the ENS Subgraph for domain events.""" query = gql(""" query GetDomainEvents($name: String!) { domains(where: { name: $name }) { events { id __typename blockNumber transactionID ... on Transfer { owner { id } } ... on NewOwner { owner { id } parentDomain { name } } ... on NewResolver { resolver { address addr { id } } } ... on NewTTL { ttl } ... on WrappedTransfer { owner { id } } ... on NameWrapped { owner { id } name fuses expiryDate } ... on NameUnwrapped { owner { id } } ... on FusesSet { fuses } ... on ExpiryExtended { expiryDate } } } } """) result = await graphql_client.execute_async(query, variable_values={"name": name}) return result["domains"][0]["events"] if result["domains"] and result["domains"][0]["events"] else []
  • GraphQL query schema named 'GetDomainEvents' defining the input (domain name) and output structure for domain events data, including various event types and fields.
    query = gql(""" query GetDomainEvents($name: String!) { domains(where: { name: $name }) { events { id __typename blockNumber transactionID ... on Transfer { owner { id } } ... on NewOwner { owner { id } parentDomain { name } } ... on NewResolver { resolver { address addr { id } } } ... on NewTTL { ttl } ... on WrappedTransfer { owner { id } } ... on NameWrapped { owner { id } name fuses expiryDate } ... on NameUnwrapped { owner { id } } ... on FusesSet { fuses } ... on ExpiryExtended { expiryDate } } } } """)

Other Tools

Related Tools

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