
Dns Aid
io.github.infobloxopenPublished by GitHub account infobloxopenv0.17.3Updated Oct 24, 2026
Discover and publish AI agents via DNS using SVCB records (RFC 9460)
Overview
Lets an assistant publish, discover, verify, and call AI agents registered in DNS via SVCB records, across several DNS backends.
- What you can do
- The server exposes tools to publish an agent to DNS, discover agents at a domain (plain DNS or an HTTP index), list a discovered agent's tools, proxy calls to those tools, verify DNS records and security, list or delete published agents, sync the domain index record, and run environment diagnostics. It works against a configurable DNS backend such as Route 53, Cloudflare, Infoblox, NIOS, NS1, or DDNS, and can also operate in discovery-only mode.
- When to use it
- Use it when you want an assistant to find AI agents advertised at a domain, or to register your own agent so others can discover it. It suits DNS-based agent discovery and publication workflows rather than general DNS administration.
- Requirements
- Runs locally as a Python package (pip install dns-aid with the cli and mcp extras) over stdio; desktop-only. Publishing or deleting records needs a DNS backend selected via DNS_AID_BACKEND plus that provider's credentials, for example AWS credentials or INFOBLOX_API_KEY. Discovery-only use needs no backend. Network access to DNS and any configured HTTP index or directory endpoint is required.
Installation
In SourceWeft
- Open Dns Aid in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
DNS-AID
[CI] [Security] [CodeQL] [OpenSSF Scorecard] [OpenSSF Best Practices] [License] [Python] [PyPI]
DNS-based Agent Identification and Discovery
Reference implementation for IETF draft-mozleywilliams-dnsop-dnsaid-02.
DNS-AID enables AI agents to discover each other via DNS, using the internet's existing naming infrastructure instead of centralized registries or hardcoded URLs.
Relationship to IETF
The DNS-AID specification is being developed within the IETF: https://datatracker.ietf.org/doc/draft-mozleywilliams-dnsop-dnsaid/.
This repository provides a reference implementation.
This project does not define the specification. The IETF draft is authoritative.
Scope of this Repository
This project focuses on implementation, tooling, and ecosystem activities.
Changes to protocol behavior should be discussed within the IETF.
New to DNS-AID? Start with the Getting Started Guide for install, first agent publication, and backend setup.
Documentation
- Getting Started Guide — install, first agent publication, backend setup
- API Reference — Python SDK, CLI, and MCP server tool reference
- ARD ai-catalog discovery — interop with Agentic Resource Discovery: catalog discovery, the host-anywhere DNS pointer, and card dereferencing
- Architecture — protocol layers, metadata resolution, integration points
- Integrations — backend-specific setup notes
- Demo Guide — end-to-end walkthrough for talks and presentations
- Roadmap — where the project is headed, near/medium/long term
- Privacy Policy | Security Policy | Trademarks
Ecosystem and Integrations
DNS-AID is a substrate. The library in this repository is sufficient on its own — it publishes and resolves agent records against any DNS provider, with no dependency on a particular directory, indexer, or telemetry backend.
When a search, indexing, or telemetry layer is useful, the SDK can point at any HTTP endpoint that implements the documented interfaces. Operators are encouraged to run their own — the indexer is a thin layer over the same DNS records this library publishes and discovers, and the SDK telemetry sink is configurable via DNS_AID_SDK_HTTP_PUSH_URL (off by default). Independent directory implementations exist across the ecosystem; DNS-AID is designed to remain interoperable with any of them rather than canonicalize a single one.
Quick Start
Install
For backend-specific extras (route53, cloudflare, ns1, cloud_dns, infoblox, akamai-edgedns, ddns), see the Getting Started Guide.
Python Library
Path B: cross-domain search via an external directory (v0.19.0+)
When the caller does not yet know which domain hosts the agent it wants, the SDK can query any directory backend that implements the search endpoint. The directory layer is opt-in convenience; the DNS substrate remains the authoritative trust gate.
After the directory returns candidates, re-resolve each one through Path A and validate signatures / DNSSEC before invoking. This is the substrate-as-authority pattern: the directory provides ranking and discovery convenience, but never sits in the trust path between the caller and the agent.
The SDK exposes additional filter parameters (capabilities, min_security_score, verified_only, etc.) for directories that compute and return those signals; see API Reference for the full surface. The semantics of those values are defined by whichever directory the caller has chosen — DNS-AID does not centralize them.
SDK: Invoke Agents & Capture Telemetry (v0.6.0+)
OpenTelemetry (v0.23.0+): install dns-aid[otel] and set
otel_enabled=True (or DNS_AID_SDK_OTEL_ENABLED=true) to emit spans +
metrics per invoke and propagate W3C trace context to downstream agents.
See docs/integrations/opentelemetry.md.
For advanced usage (connection reuse, OpenTelemetry export, pluggable telemetry sink):
If an external aggregator publishes community-wide rankings over HTTP, the SDK can fetch them via client.fetch_rankings(...); the endpoint is configured by the caller, not by the library.
SDK: Per-Invoke Credential Provider Callback (v0.21.0+)
For short-lived credentials (RFC 8693 token exchange, AWS STS assume-role,
HashiCorp Vault dynamic secrets, HSM/KMS-backed signing keys), pass an opt-in
async credential_provider callback to invoke(). The SDK awaits the callback
lazily at invoke time with the target AgentRecord and uses the returned dict
for auth resolution. Strictly additive — every existing call site continues to
work without source change.
Precedence: auth_handler > credentials > credential_provider > no_auth.
See docs/security-credentials.md for the
per-handler security matrix, audit-trail flow, and the
examples/integration_oauth2_token_exchange.py
and examples/integration_aws_sts_assume_role.py
canonical patterns.
CLI Usage
Agent Index Records
DNS-AID v0.3.0 automatically maintains an index record at _index._agents.{domain} for efficient discovery:
Benefits:
- Single DNS query discovers all agents at a domain
- Crawlers can efficiently index domains
- Explicit list of published agents (no guessing)
The index is updated automatically when you publish or delete agents. Use --no-update-index to opt out for internal agents.
Domain Control Validation (v0.20.0+)
DCV lets one party prove to another that they control a DNS zone, using a short-lived TXT record challenge. Two use cases: anonymous agents asserting org affiliation, and directory anti-impersonation before listing an agent as org-verified.
See Domain Control Validation in the API reference for full details.
HTTP Index Discovery
DNS-AID also supports HTTP-based agent discovery, with an index format whose schema aligns with ANS-style directories. This provides richer metadata (descriptions, model cards, capabilities, costs) while still validating endpoints via DNS.
Endpoint patterns tried (in order):
https://index.aiagents.{domain}/index-wellknown(demo-friendly, no underscores)https://_index._aiagents.{domain}/index-wellknown(ANS-style)https://{domain}/.well-known/agents-index.json(well-known path)
Capability Document endpoint (v0.4.8+):
https://index.aiagents.{domain}/cap/{agent-name}— returns a capability document JSON per agent
FQDN as Source of Truth (v0.4.7): The HTTP index only needs to provide each agent's FQDN (e.g., booking.example.com). Agent name and protocol are extracted from the FQDN — no separate protocols field needed. DNS SVCB lookup then resolves the authoritative endpoint.
Discovery Transparency (v0.4.6+): Each discovered agent includes source fields showing how data was resolved:
Capability Resolution (v0.4.8+): Capabilities are resolved with the following priority:
- SVCB
capURI → fetch capability document (JSON with capabilities, version, description) - TXT record fallback →
capabilities=chat,supportfrom DNS TXT record - HTTP Index inline → capabilities embedded in the index JSON response
MCP Server
DNS-AID includes an MCP (Model Context Protocol) server that allows AI agents like Claude to publish and discover other agents.
Running the MCP Server
Available MCP Tools
Claude Desktop Integration
Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):
Then Claude can discover and connect to AI agents:
"Find available agents at example.com"
"Publish my chat agent to DNS at mycompany.com"
"Discover agents at example.com and search for flights from SFO to JFK"
Live Demo
Try the live demo with Claude Desktop:
Then ask Claude to discover and use the booking agent:
"Discover agents at example.com using HTTP index, find a booking agent, and search for flights from SFO to JFK on March 15th 2026"
Claude will:
- Call
discover_agents_via_dns→ finds booking-agent athttps://booking.example.com/mcp - Call
list_agent_tools→ sees search_flights, get_flight_details, check_availability, create_reservation - Call
call_agent_tool→ searches for flights and returns results
How It Works
DNS-AID uses SVCB records (RFC 9460) to advertise AI agents:
DNS-AID Custom SVCB Parameters (v0.4.8+): Per the IETF draft, SVCB records can carry additional custom parameters for richer agent metadata:
This allows any DNS client to discover agents without proprietary protocols or central registries.
Discovery Flow (DNS-AID Draft Aligned)
Index Resolution Priority: HTTP index endpoint → TXT index record → common name probing.
Capability Resolution Priority: SVCB cap URI → capability document → TXT record fallback.
Each discovered agent includes endpoint_source and capability_source showing which path was used.
Agent Metadata Contract (v0.10.0+)
DNS discovery tells you WHERE an agent is. The Agent Metadata Contract tells you HOW to connect, WHAT it can do, and WHETHER it's still active.
Every DNS-AID agent can serve a .well-known/agent.json endpoint:
Why this matters for orchestrators (LangGraph, CrewAI, etc.):
A2A Compatibility: Both DNS-AID and Google A2A use /.well-known/agent.json. The metadata fetcher auto-detects the format — DNS-AID native (has aid_version key) or A2A Agent Card — and normalizes both into the same metadata fields.
Architecture
Client-Side: Toolkit
Directory and Indexing Layer (External)
Directory and indexing services that build on top of DNS-AID — crawlers that walk public DNS for agent records, services that index .well-known/agent.json metadata, search frontends — are out of scope for this repository. They build on the substrate but are operated independently. Implementations are free to define their own scoring, ranking, and curation policy; DNS-AID does not centralize those choices.
Choosing the Right Interface
DNS-AID provides three interfaces. Choose based on your use case:
Python Library
Best for: Application developers building agent discovery into their code.
CLI Tool
Best for: Operators, DevOps, and quick manual operations.
MCP Server
Best for: AI assistants (Claude, etc.) that need DNS-AID capabilities.
Decision Matrix
DNS Backends
For per-provider environment configuration, see the Getting Started Guide backend sections.
DNS-AID supports multiple DNS backends:
Route 53 Setup
-
Configure AWS credentials:
Or use AWS CLI profiles:
-
Verify zone access:
-
Publish your agent:
Infoblox UDDI Setup
Infoblox UDDI (Universal DDI) is Infoblox's cloud-native DDI platform. DNS-AID supports creating SVCB and TXT records via the Infoblox API.
Environment Variables
Step-by-Step Setup
-
Get your API key from Infoblox Cloud Portal:
- Navigate to Administration → API Keys
- Create a new API key with DNS permissions
- Copy the key (shown only once)
-
Configure environment variables:
-
Identify your zone and view:
- In Infoblox Portal, go to DNS → Authoritative Zones
- Note the zone name (e.g.,
example.com) and which view it belongs to
-
Use in Python:
Infoblox UDDI SVCB Support
Infoblox UDDI supports full ServiceMode SVCB (RFC 9460): priority > 0 with svc_params,
including the standard keys (alpn, port, mandatory, ipv4hint, ipv6hint, ...) and the
private-use range key65280–key65534. DNS-AID's custom parameters (cap, cap-sha256,
bap, policy, realm, sig, connect-class, connect-meta, enroll-uri — encoded as
key65400–key65405) are written natively on the SVCB record, not demoted to a TXT
companion.
Infoblox UDDI and Akamai Edge DNS are fully DNS-AID-compliant ServiceMode SVCB backends.
Verify Records via API
Since Infoblox UDDI zones may not be publicly resolvable, verify records via the API:
DDNS Setup (RFC 2136)
DDNS (Dynamic DNS) is a universal backend that works with any DNS server supporting RFC 2136, including BIND9, Windows DNS, PowerDNS, and Knot DNS. This is ideal for on-premise DNS infrastructure without vendor-specific APIs.
Environment Variables
Step-by-Step Setup
-
Create a TSIG key on your DNS server (BIND example):
-
Configure your zone to allow updates with the key:
-
Configure DNS-AID:
-
Use in Python:
DDNS Advantages
- Universal: Works with BIND, Windows DNS, PowerDNS, Knot, and any RFC 2136 server
- No vendor lock-in: Standard protocol, no proprietary APIs
- On-premise friendly: Perfect for enterprise internal DNS
- Full DNS-AID compliance: Supports ServiceMode SVCB with all parameters
Cloudflare Setup
Cloudflare DNS is ideal for demos, workshops, and quick prototyping thanks to its free tier and excellent API support. DNS-AID fully supports Cloudflare's SVCB record implementation, including native private-use SVCB keys — DNS-AID's custom parameters (cap, cap-sha256, bap, policy, realm, ...) are written directly to the SVCB record (key65400–key65409), with no TXT demotion.
Environment Variables
Step-by-Step Setup
-
Create an API token in Cloudflare Dashboard:
- Go to My Profile → API Tokens → Create Token
- Use the "Edit zone DNS" template or create custom with:
- Permissions: Zone → DNS → Edit
- Zone Resources: Include → Specific zone → your-domain.com
- Copy the token (shown only once)
-
Configure environment variables:
-
Publish your first agent:
-
Use in Python:
Cloudflare Advantages
- Free tier: DNS hosting is free for unlimited domains
- SVCB support: Full RFC 9460 compliance with SVCB Type 64 records
- Native private-use SVCB keys: DNS-AID custom params go straight into the SVCB record (
key65400–key65409) — no TXT demotion, matching NS1 and NIOS - Global anycast: Fast DNS resolution worldwide
- Simple API: Well-documented REST API v4
- Full DNS-AID compliance: Supports ServiceMode SVCB with all parameters
Akamai Edge DNS Setup
Akamai Edge DNS supports ServiceMode SVCB records with full private-use key support, making it fully compliant with the DNS-AID draft. All custom DNS-AID parameters (cap, bap, realm, etc.) are written directly into SVCB — no TXT demotion.
Writes are safe under concurrency: the backend serializes its own writes per zone and automatically retries Akamai's transient 409 concurrentZoneModification responses with exponential backoff.
Environment Variables
* Required if not using .edgerc. Environment variables take precedence over .edgerc when both are present.
Step-by-Step Setup
-
Create API credentials in Akamai Control Center:
- Go to Identity & Access → Create API Client
- Grant DNS—Zone Record Management read-write permission
- Download the
.edgercfile or note the four credential values
-
Configure credentials (choose one):
Via
.edgercfile (Akamai standard):Via environment variables:
-
Publish your first agent:
-
Use in Python:
Akamai Edge DNS Features
- Native SVCB support: Full RFC 9460 compliance including private-use keys
- Full DNS-AID compliance: All custom params (
cap,bap,realm, etc.) written natively on the SVCB record — no demotion to TXT - DNSSEC: Built-in zone signing via sign-and-serve
- Flexible credentials: Supports both
.edgercfile and environment variables
How DNS-AID Relates to Other Efforts
Agent discovery is an active design space, with multiple proposals working at different layers of the stack. DNS-AID is intentionally narrow: it standardizes a DNS-layer substrate that publishers and resolvers can rely on, leaving directory, ranking, payments, and namespace policy to other efforts. The summary below is meant to help operators understand where DNS-AID fits — not to position it against other work.
Adjacent efforts
- Agent Name Service (ANS) — A directory-oriented approach defining a JSON metadata schema and registry interfaces. DNS-AID's HTTP Index format is intentionally aligned with the ANS schema where it overlaps, so an ANS-style directory can be served from the same data a DNS-AID publisher produces.
- A2A — A communication protocol for agent-to-agent messaging. DNS-AID is complementary: A2A defines how two agents talk, DNS-AID defines how one agent finds the other's endpoint to talk to.
- AgentDNS — A separate proposal that builds an agent-naming layer on top of DNS primitives. The two proposals overlap in spirit and differ in mechanism; DNS-AID's choice is to stay inside RFC 9460 SVCB so existing authoritative servers and resolvers work unchanged.
- NANDA — A peer-to-peer overlay approach. Useful in deployments where a DHT-style substrate is preferred; DNS-AID instead targets the DNS infrastructure organizations already operate.
- ai.txt / llms.txt — Free-form text files at well-known URLs. Useful for human-readable discovery; DNS-AID adds structured SVCB records and optional DNSSEC-validated trust.
.agentgTLD — An ICANN new-gTLD effort by the Agent Community to create a dedicated namespace (mycompany.agent). Complementary to DNS-AID — when.agentdomains become available, DNS-AID records will work on them too, the same way they work on any other zone.
Where DNS-AID is scoped
DNS-AID standardizes the publish/resolve substrate: SVCB record layout, naming convention, capability and policy parameters, and a DNSSEC-anchored verification path. It does not pick a winning directory, ranking algorithm, payment system, or trust authority. Operators are free to combine DNS-AID with any of the efforts above, or to run it standalone.
Background and Comparison
For background on how DNS-AID compares to other agent-discovery approaches (ANS, Google A2A+UCP, .agent gTLD, AgentDNS, NANDA, Web3, ai.txt) and "The Sovereignty Question", see docs/positioning.md. That content is non-normative — protocol positioning is determined at the IETF.
Examples
See the examples/ directory:
demo_route53.py- Basic Route 53 publish/discoverdemo_full.py- Complete end-to-end demonstration
Development
Related Standards
- RFC 9460 - SVCB and HTTPS Resource Records
- RFC 4033-4035 - DNSSEC
- RFC 6698 - DANE TLSA
License
Apache 2.0
Contributing
Contributions welcome! This project supports an implementation ecosystem with planned hosting in the Linux Foundation. The DNS-AID specification is developed in the IETF.
See CONTRIBUTING.md for guidelines.
Source: README.md at commit c4944f5
Tools
0Version history
1- v0.17.3LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts