DNS Aid
Discover and publish AI agents via DNS using SVCB records (RFC 9460)
Connector by infobloxopen · GitHub account verified by the MCP Registry
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/infobloxopen-dns-aid
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: identity-access, api-integration
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.
- Tools
- 11 read · 8 write · 3 delete
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Python package
Tools by what they do 22
Read from the source code; the running server may list different tools.
Read 11 · Look things up without changing anything.
compile_policy_to_rpzdcv_issue_challengediagnose_environmentdiscover_agents_via_dnslist_agent_indexlist_agent_toolslist_published_agentslist_rpz_ruleslist_td_security_policiessearch_agentsverify_agent_dns
Write 8 · Create, change, send or run things.
call_agent_tooldcv_place_challengedcv_verify_challengepublish_agent_to_dnspublish_catalog_pointerpublish_rpz_zonesend_a2a_messagesync_agent_index
Delete 3 · Delete, drop, revoke or wipe things.
dcv_revoke_challengedelete_agent_from_dnsunpublish_catalog_pointer
Secrets and settings it asks for
Other settings (environment variables or headers).
DNS_AID_BACKEND
Network hosts it talks to 17
agenticresourcediscovery.org· found in codeapi.cloudflare.com· found in codeapi.nsone.net· found in codecloud.google.com· found in codecsp.infoblox.com· found in codedevelopers.cloudflare.com· found in codedns-aid.yourdomain· found in codedns.googleapis.com· found in codedocs.aws.amazon.com· found in codedocs.infoblox.com· found in codegithub.com· found in codegoogle.github.io· found in codegoogleapis.com· found in codeindex.aiagents· found in codens1.com· found in codesecurity-analyzer.ai.infoblox.com· found in codetechdocs.akamai.com· found in code
Files it touches
~/.aws/credentials- Your home directory (~)
~/.edgerc- Any path the agent passes to its tools
Tools (22)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
call_agent_toolCall Agent ToolCall a tool on a discovered MCP agent. Use this after discovering agents to invoke their tools. First use discover_agents_via_dns to find agents and get their endpoints. Args: endpoint: The agent's MCP endpoint URL (e.g., "https://booking.example.com/mcp"). tool_name: Name of the tool to call on the remote agent. arguments: Arguments to pass to the tool (as a dictionary). policy_uri: The target agent's policy document URL (from discovery). If provided, policy is checked before invocation. auth_type: Authentication method required by the agent (from discove…
compile_policy_to_rpzCompile Policy to RPZread-onlyCompile a policy document to RPZ and/or bind-aid zone files. Takes a PolicyDocument as JSON and produces DNS zone content that can be loaded into RPZ-capable resolvers (standard) or bind-aid (Ingmar's BIND 9 fork with per-record policy actions). Args: policy_json: A PolicyDocument as a JSON string. Must include "agent" (FQDN) and "rules" with policy rule definitions such as blocked_caller_domains, allowed_caller_domains, required_protocols, and/or cel_rules. format: Output format - "rpz" for standard RPZ only, "bindaid" for bind-aid only, or "both" (de…
dcv_issue_challengeIssue DCV Challengeread-onlyGenerate a DCV challenge token for a domain. The challenger calls this and delivers the result out-of-band (via A2A, MCP, or any other channel) to the claimant. Nothing is written to DNS here — placement is the claimant's job. After a successful dcv_verify_challenge(), call dcv_revoke_challenge() immediately to prevent token reuse within the validity window. Args: domain: Domain the claimant must prove control of. agent_name: Optional agent name to scope the bnd-req field (lowercase alphanumeric + hyphens, max 63 chars). issuer_domain: Optional issuer domain to …
dcv_place_challengePlace DCV ChallengeWrite a DCV challenge TXT record to DNS via the configured backend. The claimant calls this using their own dns-aid backend credentials, proving they have write access to the domain's zone. Args: domain: Zone to write the challenge into. token: Token received from the challenger (32-char base32, from dcv_issue_challenge). bnd_req: Binding scope from the challenge (pass through as-is). ttl: DNS record TTL in seconds (30–604800, default: 300). expiry_seconds: How long the placed record should be valid (30–86400, default: 3600). Returns: dict with success (bool) and fqd…
dcv_revoke_challengeRevoke DCV Challengecan change or delete dataDelete the DCV challenge TXT record from DNS. Should be called immediately after a successful dcv_verify_challenge() to prevent token reuse within the validity window. Requires backend credentials for the domain. Args: domain: Zone to remove the challenge from. token: Token that was placed (must match the record in DNS). Returns: dict with success (bool) and optional error.
dcv_verify_challengeVerify DCV ChallengeVerify that a DCV challenge token is present and unexpired in DNS. The challenger calls this after the claimant has placed the record. No backend credentials required — pure DNS resolution against the system resolver. Args: domain: Domain to check. token: Token originally issued by the challenger. expected_bnd_req: When provided, the record's bnd-req field must match exactly (prevents cross-vendor token reuse). Returns: dict with success (bool), verified (bool), fqdn, expired (bool), and error.
delete_agent_from_dnsDelete Agent from DNScan change or delete dataDelete an agent from DNS. Removes SVCB and TXT records for the specified agent. By default, also removes the agent from the domain's index record. Args: name: Agent identifier to delete. domain: Domain where agent is published. protocol: Protocol the agent was published with. backend: DNS backend to use. update_index: Whether to remove agent from domain's index record (default: True). Returns: dict with: - success: Whether deletion succeeded - fqdn: The FQDN that was deleted - index_updated: Whether the index record was updated - message: Status messa…
diagnose_environmentDiagnose Environmentread-onlyRun DNS-AID environment diagnostics. Checks Python version, core dependencies, DNS resolution, backend credentials, optional features, and .env configuration. Use this before publish/discover operations to verify the environment is correctly set up. Args: domain: Domain to test agent discovery against (optional). Falls back to DNS_AID_DOCTOR_DOMAIN env var. Discovery check is skipped if neither is set. Returns: dict with: - version: Installed dns-aid version - sections: Dict of section name → list of check results - pass_count: Number of checks t…
discover_agents_via_dnsDiscover Agents via DNSread-onlyDiscover AI agents at any public domain using the DNS-AID protocol (no credentials needed). Discovery flow (DNS-only, default): 1. Query the TXT index record at _index._agents.{domain} to get the list of published agent names and their protocols. 2. For each agent in the index, query the SVCB record at the flat owner {name}.{domain} to resolve the target host, port, and ALPN protocol — plus DNS-AID custom params (cap, bap, policy, realm). 3. If the SVCB record contains a `cap` param (URI to capability document), fetch the capability document via HTTPS for rich capabi…
list_agent_indexList Agent Indexread-onlyList agents in a domain's index record. Reads the _index._agents.{domain} TXT record and returns all indexed agents. This is useful for seeing what agents are published at a domain. Args: domain: Domain to list index from. backend: DNS backend to use. Returns: dict with: - domain: The domain queried - agents: List of indexed agents with name and protocol - count: Number of agents in the index - index_exists: Whether an index record was found
list_agent_toolsList Agent Toolsread-onlyList available tools on a discovered MCP agent. Use this to see what tools an agent provides before calling them. Args: endpoint: The agent's MCP endpoint URL (e.g., "https://booking.example.com/mcp"). Returns: dict with: - success: Whether the call succeeded - tools: List of available tools with name, description, and input schema - telemetry: Invocation telemetry (latency, status) when SDK is available - error: Error message if failed
list_published_agentsList Published Agentsread-onlyList all agents published at a domain you manage via DNS-AID. This tool requires backend API credentials (e.g., AWS keys for Route53, API key for Infoblox). Use this only for domains you own and have configured backend access for. To discover agents at any public domain (no credentials needed), use discover_agents_via_dns instead. Args: domain: Domain you manage (e.g., "example.com"). backend: DNS backend to use - requires matching API credentials configured. Returns: dict with: - domain: The domain that was queried - records: List of DNS-AID records found, each with: …
list_rpz_rulesList RPZ Rulesread-onlyList current RPZ rules from a backend. For Infoblox: queries TD named lists and security policies. For NIOS: queries ``record:rpz:cname`` via WAPI. Args: rpz_zone: Name of the RPZ zone to query. backend: DNS backend to query (default: infoblox). Returns: dict with: - success: Whether the query succeeded - rpz_zone: The zone queried - named_lists/rules: The RPZ data found - count: Number of items found
list_td_security_policiesList TD Security Policiesread-onlyList all Infoblox Threat Defense security policies. Use this to find the policy ID for ``publish_rpz_zone``'s ``td_policy_id`` parameter when you don't want to use the default global policy. Returns: dict with: - success: Whether the query succeeded - policies: List of policies with id, name, description, rule_count, is_default - count: Number of policies found
publish_agent_to_dnsPublish Agent to DNSPublish an AI agent to DNS using DNS-AID protocol. Creates SVCB and TXT records that allow other agents to discover this agent. The agent will be discoverable at the flat draft-02 FQDN ``{name}.{domain}`` (with an optional walkable AliasMode at ``{name}._agents.{domain}``). By default, also updates the domain's index record (_index._agents.{domain}) to include this agent for efficient discovery. Args: name: Agent identifier (e.g., "chat", "network-specialist", "data-cleaner"). Must be lowercase with hyphens only. domain: Domain to publish under (must have DNS control via R…
Show 7 more tools
publish_catalog_pointerPublish ARD Catalog PointerPublish ARD catalog DNS pointer records for a domain. Writes SVCB records under ``_catalog._agents.{domain}`` (ARD §6.1) and, unless ``catalog_only`` is set, ``_index._agents.{domain}`` (DNS-AID draft-02 §3.2), both pointing at ``catalog_host``. This lets DNS-AID clients (which probe ``_index._agents``) and ARD-native clients (which probe ``_catalog._agents``) discover the catalog from one DNS lookup. Note: ``_index._agents`` is DNS-AID's generic org-index pointer — writing it makes the ARD catalog serve as the domain's index and replaces any existing ``_index._agents`` SVCB. Set ``catalog_o…
publish_rpz_zonePublish RPZ ZoneCompile a policy and push RPZ records to a DNS backend. For Infoblox (BloxOne): creates a TD named list, binds it to a security policy with the specified action (block, log, allow, redirect). For NIOS: creates ``record:rpz:cname`` entries via WAPI. For other backends: returns the compiled zone content for manual loading. Args: policy_json: A PolicyDocument as a JSON string. backend: DNS backend — "infoblox" for BloxOne TD (recommended), "nios" for on-prem WAPI, others return zone content. rpz_zone: Name of the RPZ zone (e.g., "rpz.example.com"). td_action: TD security…
search_agentsSearch Agents via Directoryread-onlyCross-domain agent search via the configured DNS-AID directory backend (Path B). Use this tool when: - You don't yet know which domain hosts the agent you want. - You need to find agents by capability, intent, or auth type across many domains. - You want ranked results with pre-computed trust scores so you can decide whether to invoke directly or re-verify cryptographically via DNS first. Requires the directory backend to be configured server-side (``DNS_AID_SDK_DIRECTORY_API_URL``). If not configured, returns a structured ``directory_not_configured`` error so the caller can fall b…
send_a2a_messageSend A2A MessageSend a message to an A2A (Agent-to-Agent) agent and get its response. Use this to communicate with agents that speak the Google A2A protocol. This is the primary tool for agent-to-agent conversation. Two ways to specify the agent: 1. **By domain + name** (recommended — auto-discovers via DNS): send_a2a_message(message="Hello", domain="ai.infoblox.com", name="security-analyzer") 2. **By endpoint URL** (use exactly as returned by discover_agents_via_dns): send_a2a_message(message="Hello", endpoint="https://security-analyzer.ai.infoblox.com") Before sending, this tool fetches the agent…
sync_agent_indexSync Agent IndexSync domain's agent index with actual DNS records. Scans DNS for all _agents.* SVCB records and updates the index to reflect what's actually published. Args: domain: Domain to sync index for. backend: DNS backend to use. ttl: TTL for the index record. Returns: dict with: - success: Whether sync succeeded - domain: The domain synced - agents: List of agents now in the index - count: Number of agents found - created: Whether the index was newly created - message: Status message
unpublish_catalog_pointerUnpublish ARD Catalog Pointercan change or delete dataRemove ARD catalog DNS pointer records for a domain. Deletes the SVCB records under ``_catalog._agents.{domain}`` and, unless ``catalog_only`` is set, ``_index._agents.{domain}``. Any TXT at ``_index._agents`` (org-index listing) is left intact. Idempotent — missing records are a no-op.
verify_agent_dnsVerify Agent DNS Recordsread-onlyVerify DNS-AID records for an agent. Checks DNS record existence, SVCB validity, DNSSEC validation, DANE/TLSA configuration, and endpoint reachability. Returns a security score. Args: fqdn: Fully qualified domain name of the agent record. Under draft-02 this is the flat owner {agent-name}.{domain}. Example: "chat.example.com" Returns: dict with: - fqdn: The FQDN that was verified - record_exists: Whether the DNS record exists - svcb_valid: Whether the SVCB record is properly formatted - dnssec_valid: Whether DNSSEC validation passed (None if not c…
Compare and alternatives
Featured in
Signals
- Stars
- 73
- Forks
- 32
- Open issues
- 16
- Contributors
- 6
- Weekly downloads
- 174
- Last commit
- Oct 22, 2026 (6 days ago)
- Last release
- Aug 9, 2026 (2 months ago)
- Last package publish
- Aug 9, 2026 (2 months ago)
From GitHub (fetched Oct 24, 2026) and the package registry.
Details
- Registry name
io.github.infobloxopen/dns-aid- Version
- 0.17.3
- Auth
- No auth
- Packages
- pypi dns-aid
- License
- Apache-2.0
- Repository
- github.com/infobloxopen/dns-aid-core
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
Cite this page
DNS Aid MCP server. Agent Mart. https://agentmart.dev/connectors/infobloxopen-dns-aid (last updated 2026-10-24)