---
name: dns-aid
description: DNS for AI Discovery (DNS-AID) protocol specification and well-known entrypoint records for autonomous agent discovery.
version: 1.0.0
author: Arssan Studio (Scptric)
---

# Implement DNS for AI Discovery (DNS-AID)

Publish DNS for AI Discovery (DNS-AID) records so agents can discover your agent endpoints through DNS.

## Requirements

- Publish DNS for AI Discovery (DNS-AID) records under your domain's `_agents` namespace, such as `_index._agents.arssan.arssan.workers.dev` or `_a2a._agents.arssan.arssan.workers.dev`
- Use ServiceMode `SVCB` records, or `HTTPS` records for HTTPS endpoints, with `alpn` and endpoint connection parameters
- Use numeric `keyNNNNN` SvcParamKey names for experimental DNS for AI Discovery (DNS-AID) custom parameters until they are registered
- Sign public DNS for AI Discovery (DNS-AID) discovery zones with DNSSEC so validating resolvers return authenticated data

## Arssan Studio Discovery Records

```dns
# HTTPS ServiceMode records
_index._agents.arssan.arssan.workers.dev. 3600 IN HTTPS 1 arssan.arssan.workers.dev. alpn="h2,h3" port=443
_a2a._agents.arssan.arssan.workers.dev.   3600 IN HTTPS 1 arssan.arssan.workers.dev. alpn="a2a" port=443
_mcp._agents.arssan.arssan.workers.dev.   3600 IN HTTPS 1 arssan.arssan.workers.dev. alpn="mcp" port=443

# SVCB ServiceMode records (RFC 9460)
_index._agents.arssan.arssan.workers.dev. 3600 IN SVCB 1 arssan.arssan.workers.dev. alpn="h2,h3" port=443
_a2a._agents.arssan.arssan.workers.dev.   3600 IN SVCB 1 arssan.arssan.workers.dev. alpn="a2a" port=443
_mcp._agents.arssan.arssan.workers.dev.   3600 IN SVCB 1 arssan.arssan.workers.dev. alpn="mcp" port=443

# Fallback TXT index record
_index._agents.arssan.arssan.workers.dev. 3600 IN TXT "v=DNS-AID1; uri=https://arssan.arssan.workers.dev/.well-known/ai-catalog.json"
```

## Validate

The scanner validates DNS for AI Discovery (DNS-AID) via DNS-over-HTTPS. By default, the scanner uses Cloudflare's `https://cloudflare-dns.com/dns-query` with automatic fallback to `https://dns.google/resolve` on resolver-level failures. Library callers can override the resolver with `ScanOptions.dohResolverUrl` (disables fallback).

```http
POST https://isitagentready.com/api/scan
Content-Type: application/json

{"url": "https://arssan.arssan.workers.dev"}
```

Check that `checks.discoverability.dnsAid.status` is `"pass"`.
