← All posts· ~7 min

DNS-AID: Finding an Organization's AI Agents Through DNS

DNS-AID uses an SVCB record at _index._agents to list an organization's AI agents. How it works, who needs it, and 0 of 10 domains checked publish it.

By Long Nguyen — CTO, ERPFit

DNS-AID: Finding an Organization's AI Agents Through DNS

Short answer: DNS-AID (DNS for AI Discovery) lets an organization that runs AI agents — an MCP server, an A2A endpoint — list those agents in the DNS. The entry point is an SVCB record at _index._agents.<domain> that points to the host holding the organization's agent index. It is an individual IETF draft. On 26 October 2026, none of the 10 domains we checked had the record. A website with no agents has nothing to publish.

An SVCB record at _index._agents pointing to an agent index host
A DNS-AID index record and per-agent records, as draft-mozleywilliams-dnsop-dnsaid-02 lays them out.

What DNS-AID is and why it uses DNS

The draft is draft-mozleywilliams-dnsop-dnsaid-02 (27 May 2026, expires 28 November 2026). Its Authors' Addresses list five people: Jim Mozley and Nic Williams (Infoblox), Roland Schott (Deutsche Telekom), Jeffrey Damick (Amazon) and Behcet Sarikaya (unaffiliated). The dnsop working group has not adopted the draft.

Two other discovery files that CiteStat checks need an HTTP request first: an MCP Server Card sits at /.well-known/ai-catalog.json, llms.txt at the site root. DNS-AID puts the pointer one step earlier, in the DNS, which a client queries before it connects anyway. The SVCB record (RFC 9460) was built for service discovery: it carries a target host, a port and the protocols (alpn). When the zone is DNSSEC-signed and the client validates the signatures, it can detect a forged pointer.

What DNS-AID records look like

; the organization index (the fixed entry point)
_index._agents.example.com. 3600 IN SVCB 1 agent-index.example.com. alpn="h2"

; each agent, one record per protocol
agent-name.example.com. 3600 IN SVCB 1 . alpn="mcp,h2,h3"
agent-name.example.com. 3600 IN SVCB 1 . alpn="a2a,h2"

Five rules in the draft:

  • The index TargetName must be a real host name, not ., with no underscores. Section 3.2 of the draft: "The TargetName MUST be used and MUST not contain underscores as used in DNS-SD labels, as public x.509 certificates will be used in communications with the index."
  • Each agent protocol gets its own record. Putting alpn="mcp,a2a,h2" in one record is a MUST NOT.
  • What the index contains is out of the draft's scope: DNS-AID only points the way, and the format of the agent list belongs to other protocols.
  • Records SHOULD be DNSSEC-signed. If you use TLSA (DANE) records to authenticate the certificate, the TLSA records MUST be signed.
  • TXT is only a fallback; the draft calls it "not considered desirable".

The draft also proposes new SvcParam keys, not yet registered with IANA, so a resolver may show them as keyNNNNN.

Two ways a client finds an agent with DNS-AID

If the client knows the agent's name, it asks for the SVCB record of agent-name.<domain> directly; the draft says requestors "MUST try first" this way. If not, it asks _index._agents, checks the target host's certificate, fetches the agent list (over HTTPS, for example), picks an agent, then asks that agent's SVCB record and connects.

We checked 10 domains for DNS-AID

On 26 October 2026 we ran the CiteStat check (packages/core/dns-aid.ts) over DNS-over-HTTPS. The check asks for SVCB, then TXT, at the main domain's _index._agents name (without www.); it does not probe subdomains.

DomainRecord at _index._agentsResult
infoblox.comNo SVCB, no TXTNot applicable
telekom.comNo SVCB, no TXTNot applicable
telekom.deNo SVCB, no TXTNot applicable
amazon.comNo SVCB, no TXTNot applicable
google.comNo SVCB, no TXTNot applicable
github.comNo SVCB, no TXTNot applicable
cloudflare.comNo SVCB, no TXTNot applicable
vercel.comNo SVCB, no TXTNot applicable
citestat.comNo SVCB, no TXTNot applicable
erpfit.comNo SVCB, no TXTNot applicable

The first four are the apex domains of the three companies in the authors' list. You can check a domain yourself:

dig +short _index._agents.example.com SVCB
curl -s "https://dns.google/resolve?name=_index._agents.example.com&type=SVCB"

No output from dig means the domain publishes no index. From DNS-over-HTTPS the same result is "Status":3 (NXDOMAIN), or "Status":0 with no Answer. 0 of 10 is what you expect from an individual draft at version 02. Because the draft is not a standard yet, a checker that fails a site for "missing DNS-AID" reports something no settled standard asks for.

How the CiteStat scan reads DNS-AID — and how it read it wrong

Our old check looked for a TXT record at _ai-discovery.<domain>. No draft defines that name. Every domain without that TXT record got a low-severity failure on the Agent Readiness card, including all 10 above, and DNS errors were swallowed by an empty catch. Since 26 October 2026 the scan reads the draft's SVCB record. A domain with no record gets "Not applicable" and is left out of the denominator, the same way we treat Web Bot Auth.

citestat.com's Agent Readiness score went from 8.6 out of 10 (after the WebMCP check fix on 25 October) to 10 out of 10: 6 of 6 applicable checks passed, 3 not applicable. Its one remaining failure had been the TXT record no draft defines.

CiteStat runs a real remote MCP server (/api/mcp), published through an MCP Server Card in /.well-known/ai-catalog.json. We have not published a DNS-AID record for it: the draft may still rename keys and change rules before a working group adopts it.

How the scan reads DNS-AID now, on the Agent Readiness card:

  • A record with a usable TargetName passes, with the target host, port, alpn and DNSSEC state.
  • A TargetName of . or one with an underscore is medium.
  • TXT only is low.
  • No record: not applicable. No DNS answer: "Could not check". Both stay out of the denominator.

DNS-AID does not change the headline SEO score. A free account gets 10 credits a day, and one SEO scan costs 1 — see pricing.

When to publish a DNS-AID record

  1. No agents, nothing to do. Do not create a record just to pass a checker.
  2. Running an MCP server? Do the MCP Server Card first. Its proposal, SEP-2127, was merged on 6 October 2026 and is listed as Final in the MCP SEP index; DNS-AID is still an individual draft.
  3. If you want to try DNS-AID: use SVCB, not TXT; make the TargetName a real host with a public TLS certificate; one record per protocol; sign the zone with DNSSEC.
  4. Watch the draft. Version 02 expires on 28 November 2026; key names and rules may change in the next one.

Frequently asked questions

Does my website need a DNS-AID record?

No, if your organization runs no AI agents. DNS-AID lists agents (an MCP server, an A2A endpoint), not web pages. That is why the CiteStat scan says "Not applicable" for a domain with no record and takes no points off.

Is a TXT record at _ai-discovery the same as DNS-AID?

No. No draft defines the name _ai-discovery. DNS-AID uses an SVCB record at _index._agents.<domain>. The draft mentions TXT only as a fallback and calls it "not considered desirable".

How is DNS-AID different from an MCP Server Card?

The card describes a server: its name, transport and what it offers. DNS-AID only says where an organization's agents are, and leaves the description to the index. The card is a JSON file found through /.well-known/ai-catalog.json, under a merged MCP proposal (SEP-2127); DNS-AID is an individual IETF draft. If you run an MCP server, do the Server Card first.

How do I check my domain's DNS-AID record myself?

Run dig +dnssec _index._agents.<domain> SVCB. An empty ANSWER section means the domain publishes no index; with a record, the ad flag in the header means your resolver validated its DNSSEC signature. Without dig, ask DNS-over-HTTPS, for example dns.google/resolve with type=SVCB, where Status 3 (NXDOMAIN), or Status 0 with no Answer, means there is no record, and "AD":true means it validated.

Sources: draft-mozleywilliams-dnsop-dnsaid-02 (IETF, individual draft, 27 May 2026) · RFC 9460: SVCB and HTTPS · RFC 9364: DNSSEC. Data for the 10 domains: looked up 26 October 2026.