
Dns Aid
io.github.dns-aid由 GitHub 账号 dns-aid 发布v0.28.1更新于 Oct 24, 2026
Discover and publish AI agents via DNS using SVCB records (RFC 9460)
概览
通过 SVCB 记录在 DNS 中发布、发现、验证和删除 AI 智能体记录,并可代理调用已发现的 MCP 智能体。
- 可以做什么
- 在 DNS 中发布、删除和列出智能体,并自动更新索引记录,提供索引同步与修复工具。通过 DNS 或 HTTP 索引发现某域名下的智能体,并验证其 DNS-AID 记录与安全状况。列出已发现 MCP 智能体提供的工具,并代理调用这些工具。运行环境诊断,检查依赖、DNS 和已配置的后端。
- 适用场景
- 适合让助手在自有域名下登记 MCP 智能体、查询某域名公布了哪些智能体,或检查并清理这些记录。也适合通过一个连接调用已发现智能体的工具。
- 运行要求
- 以 Python 包形式在本地运行(pip 安装 cli 与 mcp 附加组件),使用 stdio 传输。发布和删除需要经 DNS_AID_BACKEND 选择 DNS 后端(route53、cloudflare、infoblox、ns1、akamai-edgedns、ddns 等)及该服务商的凭据,例如 AWS 凭据或 INFOBLOX_API_KEY。仅做发现无需后端。需要访问 DNS 和任何 HTTP 索引的网络。
安装
在 SourceWeft 中
- 打开 控制台中的 Dns Aid,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
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.
来源:README.md,提交 c4944f5
工具
0版本历史
1- v0.28.1最新Sep 16, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分