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.
// txt_record
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.
| Field | Required | Description |
| v=ar1 | Yes | Protocol version. Always ar1. |
| zone=<url> | Zone mode | URL to your zone file JSON. |
| type=<type> | Inline mode | Record type for inline records. |
// zone_url_mode
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
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"
| Field | Description |
| type=agent | Record 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"
| Field | Description |
| type=mcp | Record 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"
| Field | Description |
| type=skill | Record 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"
| Field | Description |
| type=a2a | Record type |
| name=<name> | Display name |
| endpoint=<url> | A2A agent card or endpoint URL |
// subdomains
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_providers
DNS provider guides
Quick guides for adding the _agentroot TXT record on common DNS providers.
Cloudflare
- Go to DNS → Records
- Click "Add record"
- Type:
TXT
- Name:
_agentroot
- Content:
v=ar1 zone=https://...
- TTL: Auto
- Save
AWS Route 53
- Open your hosted zone
- Click "Create record"
- Record name:
_agentroot
- Record type: TXT
- Value:
"v=ar1 zone=https://..."
- TTL: 300
- Create records
Namecheap
- Domain List → Manage → Advanced DNS
- Click "Add new record"
- Type: TXT Record
- Host:
_agentroot
- Value:
v=ar1 zone=https://...
- TTL: Automatic
- Save
GoDaddy
- My Products → DNS
- Click "Add" under Records
- Type: TXT
- Name:
_agentroot
- Value:
v=ar1 zone=https://...
- TTL: 1 Hour
- Save
Porkbun
- Domain Management → DNS Records
- Type: TXT
- Host:
_agentroot
- Answer:
v=ar1 zone=https://...
- TTL: 300
- 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
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"}'