Register your agent

.agt is an on-chain identity for AI agents. One name resolves to your agent's manifest, endpoints and keys, readable by any MCP- or A2A-compatible client.

Letters, digits and hyphens, 1 to 63 characters.

Example .agt identity badge for youragent.agt
youragent.agttype a name to preview its badge

Already hold a .agt name?

Registry v2 is live on Polygon. Every existing name can be migrated to a free, perpetual v2 name, and names not yet migrated stay reserved for their holders.

One name, everything your agent needs

Identity

Your name is an NFT on Polygon with an on-chain identity badge, and it carries a manifest you sign in your own wallet. Anyone can check that whoever published it is whoever owns the name.

demoagent.agt identity badge
demoagent.agt · manifest.jsonjson
{
  "agt": "3.0",
  "icon": "https://agtnames.com/api/badge/demoagent.svg",
  "name": "demoagent.agt",
  "owner": "0x37007a1c233f00b423bc0d177ac5b50ca9417596",
  "pricing": {
    "model": "free"
  },
  "updated": "2026-09-24T05:30:24.687Z",
  "website": "https://agtnames.com/name/demoagent",
  "endpoints": [
    {
      "url": "https://demoagent.agts.dev/mcp",
      "protocol": "mcp"
    },
    {
      "url": "https://demoagent.agts.dev/a2a",
      "protocol": "a2a"
    },
    {
      "url": "https://demoagent.agts.dev",
      "protocol": "http"
    }
  ],
  "signature": "0xc9181d69…4bbb1b",
  "description": "Demo agent for the .agt namespace: a live example of an agent with a .agt name, reachable over MCP, A2A and plain HTTP. It tells you who it is (read from the chain), echoes what you send, and looks up any .agt name. Free, deterministic, no LLM behind it.",
  "capabilities": [
    {
      "id": "question-answering"
    },
    {
      "id": "knowledge-retrieval"
    },
    {
      "id": "fact-checking"
    },
    {
      "id": "api-integration"
    }
  ]
}

Live from Polygon, signature abbreviated. Try demoagent.agt · Manifest spec · Publish yours

Resolution

One lookup returns the manifest, an endpoint per protocol, a payment address and signing keys, all on-chain and readable by any client with an RPC connection. No account with us, no API key.

manifest
https://agts.dev/demoagent.json
endpoint:mcp
https://demoagent.agts.dev/mcp
endpoint:a2a
https://demoagent.agts.dev/a2a
endpoint:http
https://demoagent.agts.dev

demoagent.agt's records on Polygon. Every record type

Discovery

The moment a name publishes its records it appears in the directory. Other agents and tools filter by protocol and capability, then dispatch to the endpoint that matches.

Directory querybash
curl "https://agtnames.com/api/agents?protocol=mcp&capability=fact-checking"
# { "success": true, "count": 1, "agents": [ { "domain": "demoagent.agt", "protocols": ["mcp", "a2a", "http"],
#   "endpoints": [{ "protocol": "mcp", "url": "https://demoagent.agts.dev/mcp" }, …], … } ] }

Same filter the Explore page uses. API reference

How it works

  1. Register a name

    Search, pay once, and own it as an NFT on Polygon.

  2. Publish your records

    Set the manifest, endpoints and keys from /manifest or the SDK.

  3. Get resolved

    Any .agt-aware client resolves your name and reads your records.

Works with the protocols agents already speak

Declare one or many. Any .agt-aware client dispatches on the protocol it supports.

MCPModel Context Protocol (Anthropic)
A2AAgent-to-Agent Protocol (Google)
HTTPREST API
WebSocketReal-time communication
gRPCHigh-performance RPC

Live agents

122 registered on the .agt namespace.

Resolve from anywhere

One call returns the owner, the records and the verified manifest. Pick your tool, or try a name right here.

@agtnames/resolverts
npm install @agtnames/resolver

import { AgtResolver } from "@agtnames/resolver";

const agt = new AgtResolver({ chain: "polygon" }); // mainnet defaults built in
const r = await agt.resolveAgent("demoagent.agt");

console.log(r.owner);                 // 0x37007a1c233f00b423bc0d177ac5b50ca9417596
console.log(r.perpetual, r.active);   // true true
console.log(r.verified, r.reasons);   // true []  (the manifest is signed by the owner)
console.log(r.records.endpoints.mcp); // https://demoagent.agts.dev/mcp

Quick start · SDK docs · Use with Claude Code

.agt

Type a name to resolve it on Polygon mainnet.

Choose a wallet

More than one wallet is installed. Pick the one that holds your .agt name; the site will use it for signing and transactions until you disconnect.