Bootstrapping ARDP via AID: A Non-Normative Interop Mapping
AID and ARDP solve different problems at different layers. AID answers a static question via DNS: given a domain, where is the agent endpoint and what protocol does it speak? ARDP answers dynamic questions at the control plane: registration refresh, presence, capability queries, scoped discovery, and federation.
These layers compose naturally. This post documents an optional, non-normative mapping for using AID as a DNS bootstrap into ARDP, so that deployments where the ARDP authority is a DNS name get a simple onboarding path without modifying either protocol.
Try it live: ardp-demo.agentcommunity.org runs the full bootstrap flow in your browser --- DNS lookup via DoH, ARDP metadata fetch, and agent resolution, with each step visualized. Source: github.com/agentcommunity/ardp-aid-demo.
The layering
┌─────────────────────────────────────┐
│ Application Protocols │
│ (MCP, A2A, OpenAPI, gRPC, ...) │
├─────────────────────────────────────┤
│ ARDP Control Plane │
│ Registration, resolution, │
│ presence, capabilities, │
│ scoped discovery, federation │
├─────────────────────────────────────┤
│ AID DNS Bootstrap │
│ _agent.<domain> TXT record │
│ Static endpoint discovery │
└─────────────────────────────────────┘
This aligns with the layering framework emerging in the IETF agent2agent discussions: discovery ("who is reachable and where") sits below the control plane, which sits below the application protocols. Each layer is independently replaceable.
DNS record format
A domain advertising an ARDP resolver or registrar via AID publishes a TXT record. The protocol-specific subdomain form is preferred:
_agent._ardp.example.com. 300 IN TXT "v=aid1;p=openapi;u=https://example.com/.well-known/ardp/meta;s=ARDP resolver"
A base record works as fallback:
_agent.example.com. 300 IN TXT "v=aid1;p=openapi;u=https://example.com/.well-known/ardp/meta;s=ARDP resolver"
We use plain TXT records because they work today with every DNS provider, registrar, and managed DNS service. No SVCB support required, no provider upgrade path, no feature gates. Any domain owner who can edit a TXT record can publish an AID record right now.
Key fields:
| Key | Value | Notes |
|---|---|---|
v | aid1 | AID version (required) |
p | openapi | Protocol token --- ARDP exposes REST/JSON endpoints (required; see note below) |
u | HTTPS URI | Points to ARDP metadata resource (required) |
s | Free text | Human-readable description (optional) |
a | Auth hint | Authentication method hint (optional) |
Why
p=openapiinstead ofp=ardp? The AID SDK currently validates thepfield against a fixed set of recognized protocol tokens. Since ARDP's/.well-known/ardp/*endpoints are REST/JSON,openapiis the correct semantic fit today. The protocol-specific subdomain (_agent._ardp.<domain>) still usesardpto differentiate the DNS lookup path. Once theardptoken is registered in the AID protocol registry, records can be updated top=ardpwithout changing the subdomain structure.
Client flow
Given an agent identifier whose authority component is a DNS name:
- Canonicalize the domain (lowercase, IDNA2008 if applicable).
- Query the protocol-specific record:
_agent._ardp.<domain>. On NXDOMAIN or no valid AID record, proceed to step 3. - Query the base record:
_agent.<domain>. Accept ifp=openapi(orp=ardponce registered). If no valid record, bootstrap fails and the client may fall back to other discovery mechanisms per the ARDP spec. - Validate transport: confirm the discovered URI uses HTTPS. Perform standard TLS certificate validation.
- Fetch ARDP metadata: retrieve the ARDP metadata resource at the discovered URI. Parse TTL bounds, supported authentication profiles, and operational parameters.
- Proceed with ARDP operations: execute RESOLVE, REGISTER, or other ARDP operations subject to ARDP's authorization model.
What this does not change
This bootstrap is optional. It does not modify ARDP's identity proof requirements (proof-of-control for registration), authorization model, or protocol semantics. It provides one possible onboarding path. ARDP deployments that use non-DNS authorities or have their own discovery mechanisms are unaffected.
AID's security requirements apply to the bootstrap phase: mandatory HTTPS for remote URIs, optional DNSSEC validation, optional PKA (Ed25519 endpoint proof via RFC 9421 HTTP Message Signatures). Once the ARDP metadata endpoint is resolved, ARDP's own security model governs everything from that point forward.
Live demo
The full bootstrap flow runs at ardp-demo.agentcommunity.org. It executes three steps live in the browser:
- AID DNS Discovery --- calls
discover("ardp-demo.agentcommunity.org", { protocol: "ardp" })from@agentcommunity/aid, which performs a DNS-over-HTTPS query for_agent._ardp.ardp-demo.agentcommunity.organd parses the AID record - ARDP Metadata Fetch --- fetches
/.well-known/ardp/metafrom the URI in the AID record, returning server capabilities, supported auth, and feature list - ARDP Resolve --- queries
/.well-known/ardp/resolve?aid=agent:demo@ardp-demo.agentcommunity.orgto resolve an agent identifier to its MCP endpoint
Each step shows the DNS query or HTTP request/response as it happens. The ARDP endpoints are mock implementations of three resources from draft-pioli-agent-discovery-01 (meta, resolve, nonce), deployed as Vercel serverless functions.
Source and deployment instructions: github.com/agentcommunity/ardp-aid-demo.
Protocol token registration
The ardp protocol token will be registered in the AID protocol token registry once ARDP's identifier terminology stabilizes. In the meantime, deployments should use p=openapi (ARDP endpoints are REST/JSON) while using the _ardp protocol-specific subdomain for DNS lookup differentiation. Once registered, updating the p value in the TXT record is a one-line change with no client-side impact.
References
- AID Specification v1.2
- AID Source + SDKs
- ARDP Internet-Draft (draft-pioli-agent-discovery-01)
- Live demo | Demo source
- agent2agent@ mailing list archive