Agents (ENSIP-25)
Agent support in the Omnigraph is still being built. The shapes on this page are a preview of how it will look and may change before release. Expected to be available before July 2026.
ERC-8004 gives every onchain AI agent a portable identity (an NFT in an Identity Registry) plus an agent card describing what it does and how to reach it. ENSIP-25 and ENSIP-26 connect that identity to a human-readable ENS name: a name can publish agent discovery records and cryptographically attest which agent(s) it controls.
The Omnigraph brings both sides together. Start from an ENS name or from an agent, and get the agent card, reputation, and a verified name-to-agent link — in one query, with no contract calls or IPFS fetching on your side.
Start from a name
Section titled “Start from a name”Most apps already have an ENS name. Ask domain.resolve.profile.agents for the agents linked to that name. Each link is one ENSIP-25 attestation, with a verified flag (the name and the agent confirm each other) and the full indexed agent nested inline.
query AgentsForName { domain(by: { name: "myagent.eth" }) { canonical { name { beautified } } resolve { profile { agents { context links { verified agent { agentId chain { name } card { name description x402Support supportedTrust } reputation { feedbackCount averageScore } } } } } } }}verified— gate on this before trusting a link. A name can list an agent without the agent confirming it (and vice versa); onlyverified: truemeans both sides agree.- A name may link to several agents —
linksis a list, so iterate and pick what you need. - Everything in one round trip — the agent card and reputation come back nested under each link; no second request to look the agent up.
Start from an agent
Section titled “Start from an agent”When you already have an agent (from a registry, a wallet, or search), query it directly. domains.links is the reverse view: the ENS names that link to this agent, each with the same verified semantics.
query AgentById { agent(by: { chain: ETHEREUM, identityRegistry: "0x8004…432", agentId: "31814" }) { agentId owner { address } card { name description supportedTrust } reputation { feedbackCount averageScore } domains { links { verified name { beautified } } } }}Search for agents
Section titled “Search for agents”Find agents by chain, owner, or card name.
query FindAgents { agents( first: 20 where: { chain: { eq: ETHEREUM } name: { contains: "trading" } } ) { totalCount edges { node { agentId card { name description } domains { links { verified name { beautified } } } } } }}Read the services of agent
Section titled “Read the services of agent”Once you have a verified link, read the endpoint you want to talk to from the agent card and connect. protocol is an AgentServiceProtocol enum (MCP, A2A, X402, WEB, …), and you can pass protocols to fetch only the services you care about.
query AgentEndpoint { domain(by: { name: "myagent.eth" }) { resolve { profile { agents { links { verified agent { card { services(protocols: [MCP, A2A]) { protocol endpoint } } } } } } } }}Filter to verified: true, pass the protocols you need (for example [MCP]), and use the returned endpoint.