Protocol › DNS Records

$ dig _agentroot TXT

The DNS TXT record is the root of trust for AgentRoot. It proves domain ownership and points to your capabilities.

The _agentroot TXT record

Add a TXT record at _agentroot.<your-domain>. The record value always starts with v=ar1 (protocol version 1) followed by either a zone URL or inline record fields.

FieldRequiredDescription
v=ar1YesProtocol version. Always ar1.
zone=<url>Zone modeURL to your zone file JSON.
type=<type>Inline modeRecord type for inline records.

Zone URL mode

Point to a JSON zone file that lists all your records. Best for domains with multiple records or rich metadata.

# DNS record _agentroot.example.com TXT "v=ar1 zone=https://example.com/.well-known/agentroot.json" # The zone file contains all your records # See: /docs/protocol/zones

The recommended zone file location is /.well-known/agentroot.json, but you can host it anywhere accessible via HTTPS.

Inline mode

For domains with a single record, put the record directly in DNS. No zone file needed.

Agent

_agentroot.example.com TXT "v=ar1 type=agent name=MyBot endpoint=https://example.com/api"

FieldDescription
type=agentRecord type
name=<name>Display name (no spaces, or use + for spaces)
endpoint=<url>Agent endpoint URL
protocol=<proto>Optional: a2a, rest, graphql, websocket

MCP Server

_agentroot.example.com TXT "v=ar1 type=mcp name=Tools transport=sse endpoint=https://example.com/mcp"

FieldDescription
type=mcpRecord type
name=<name>Display name
transport=<type>sse, streamable-http, or stdio
endpoint=<url>Server endpoint URL

Skill

# Collection via index.json _agentroot.example.com TXT "v=ar1 type=skill index=https://example.com/.agents/skills/index.json" # Single skill via SKILL.md _agentroot.example.com TXT "v=ar1 type=skill skill_md=https://example.com/SKILL.md"

FieldDescription
type=skillRecord type
index=<url>URL to index.json (for collections)
skill_md=<url>URL to a single SKILL.md file

A2A Endpoint

_agentroot.example.com TXT "v=ar1 type=a2a name=TaskRunner endpoint=https://example.com/.well-known/agent.json"

FieldDescription
type=a2aRecord type
name=<name>Display name
endpoint=<url>A2A agent card or endpoint URL

Subdomain records

Subdomains get their own _agentroot TXT records. The record name is _agentroot.<subdomain>.<domain>:

# Root domain _agentroot.example.com TXT "v=ar1 zone=https://example.com/.well-known/agentroot.json" # Subdomain — separate zone file _agentroot.api.example.com TXT "v=ar1 zone=https://api.example.com/.well-known/agentroot.json" # Subdomain — inline record _agentroot.chat.example.com TXT "v=ar1 type=agent name=ChatBot endpoint=https://chat.example.com/agent"

Each subdomain is independently verified. The parent zone can include a subdomains array as a discovery hint, but the subdomain's own DNS record is the source of truth.

DNS provider guides

Quick guides for adding the _agentroot TXT record on common DNS providers.

Cloudflare
  1. Go to DNS → Records
  2. Click "Add record"
  3. Type: TXT
  4. Name: _agentroot
  5. Content: v=ar1 zone=https://...
  6. TTL: Auto
  7. Save
AWS Route 53
  1. Open your hosted zone
  2. Click "Create record"
  3. Record name: _agentroot
  4. Record type: TXT
  5. Value: "v=ar1 zone=https://..."
  6. TTL: 300
  7. Create records
Namecheap
  1. Domain List → Manage → Advanced DNS
  2. Click "Add new record"
  3. Type: TXT Record
  4. Host: _agentroot
  5. Value: v=ar1 zone=https://...
  6. TTL: Automatic
  7. Save
GoDaddy
  1. My Products → DNS
  2. Click "Add" under Records
  3. Type: TXT
  4. Name: _agentroot
  5. Value: v=ar1 zone=https://...
  6. TTL: 1 Hour
  7. Save
Porkbun
  1. Domain Management → DNS Records
  2. Type: TXT
  3. Host: _agentroot
  4. Answer: v=ar1 zone=https://...
  5. TTL: 300
  6. Save
After adding the record, DNS propagation typically takes 1-5 minutes but can take up to 48 hours. You can verify with dig _agentroot.yourdomain.com TXT or submit your domain on AgentRoot to trigger verification.

Verify your record

Check that your TXT record is live:

# Using dig $ dig _agentroot.example.com TXT +short "v=ar1 zone=https://example.com/.well-known/agentroot.json" # Using the AgentRoot CLI $ npx agent-root validate example.com DNS record found Zone file valid 3 records indexed # Submit to AgentRoot for indexing $ curl -X POST https://agentroot.io/api/submit \ -H "Content-Type: application/json" \ -d '{"domain": "example.com"}'