<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.18 (Ruby 2.6.10) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-jimenez-agent-directory-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="AD">Agent Directory</title>

    <author initials="J." surname="Jimenez" fullname="Jaime Jimenez">
      <organization>Ericsson</organization>
      <address>
        <email>jaime@iki.fi</email>
      </address>
    </author>

    <date year="2026" month="May" day="07"/>

    <area>Applications</area>
    
    

    <abstract>


<?line 70?>

<t>This document defines the Agent Directory (AD), a service where agents register their identity, capabilities, and reachable endpoints and where clients discover them by capability. The AD adapts the Constrained RESTful Environments (CoRE) Resource Directory (RFC 9176) from constrained IoT devices to software agents, reusing its registration, lookup, and soft-state lifecycle model. The AD uses HTTP and JSON. MCP and A2A define how agents interact; this document defines how they are found.</t>



    </abstract>

    <note title="About This Document" removeInRFC="true">
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-jimenez-agent-directory/"/>.
      </t>
      <t>
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/jaimejim/draft-jimenez-agent-directory"/>.</t>
    </note>


  </front>

  <middle>


<?line 74?>

<section anchor="introduction"><name>Introduction</name>

<t>The CoRE Resource Directory <xref target="RFC9176"/> defines a service for discovering resources hosted by other web servers, particularly in networks where direct discovery is impractical. Endpoints register links describing their resources, and clients look them up later. Registrations are soft state with a configurable lifetime. The RD provides both resource-level and endpoint-level lookup.</t>

<t>A similar discovery problem arises for software agents. LLM-based assistants, tool-calling agents, and multi-agent systems are deployed without fixed addresses and speak different interaction protocols (MCP <xref target="MCP"/>, A2A <xref target="A2A"/>, gRPC). Direct enumeration of candidate endpoints does not scale beyond a single administrative domain.</t>

<t>Individual agents may publish their own metadata at well-known endpoints (such as the A2A Agent Card at <spanx style="verb">/.well-known/agent-card.json</spanx>). However, per-agent metadata requires knowing the agent's URL before you can discover what it offers. The AD aggregates per-agent metadata into a queryable service. Clients discover agents by capability without prior knowledge of their addresses.</t>

<t>Like the CoRE RD, the AD has a small footprint: it can run as a cloud service, as a sidecar alongside an agent orchestrator, on an edge gateway, or on a constrained device. Deployment profiles range from cloud services to constrained devices colocated with sensors and actuators.</t>

<t>The lookup interface is a small set of HTTP GET requests with a fixed set of query parameters. Clients include both conventional applications, which use structured filters, and LLM-based clients, which can additionally match on the natural-language descriptions and tags carried in registrations. The interface is small enough to be described as a tool in an MCP server or function-calling schema.</t>

<t>This document specifies the Agent Directory (AD). The core mapping to CoRE RD concepts is:</t>

<texttable>
      <ttcol align='left'>CoRE RD Concept</ttcol>
      <ttcol align='left'>AD Equivalent</ttcol>
      <c>Endpoint (EP)</c>
      <c>Agent</c>
      <c>Resource link</c>
      <c>Capability / tool description</c>
      <c>Registration resource</c>
      <c>Agent registration resource</c>
      <c>Endpoint lookup</c>
      <c>Lookup, agent view (<spanx style="verb">view=agent</spanx>)</c>
      <c>Resource lookup</c>
      <c>Lookup, capability view (<spanx style="verb">view=cap</spanx>)</c>
      <c>Lifetime (lt)</c>
      <c>Registration lifetime</c>
</texttable>

<t>Agents register with the AD by sending a POST request with a JSON document describing their capabilities. Registrations are soft state and expire unless refreshed.</t>

<section anchor="terminology"><name>Terminology</name>

<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in <xref target="BCP14"/> (<xref target="RFC2119"/>) (<xref target="RFC8174"/>) when, and only when, they
appear in all capitals, as shown here.</t>

<?line -18?>

<t>This specification makes use of the following terminology:</t>

<dl newline="true">
  <dt>Agent:</dt>
  <dd>
    <t>An autonomous or semi-autonomous software entity that can initiate and receive interactions, expose capabilities (tools, skills, APIs), and optionally collaborate with other agents.</t>
  </dd>
  <dt>Agent Directory (AD):</dt>
  <dd>
    <t>An HTTP service that stores agent registrations and provides discovery and lookup interfaces.</t>
  </dd>
  <dt>Capability:</dt>
  <dd>
    <t>A discrete function, tool, or skill that an agent exposes. Capabilities are described as entries within an agent's registration.</t>
  </dd>
  <dt>Registration:</dt>
  <dd>
    <t>The act of an agent (or a commissioning tool acting on its behalf) submitting its identity, capabilities, and endpoint information to the AD.</t>
  </dd>
  <dt>Registration Resource:</dt>
  <dd>
    <t>The resource stored at the AD as a result of a successful registration. Identified by the URI returned in the Location header of the creation response.</t>
  </dd>
  <dt>Interaction Protocol:</dt>
  <dd>
    <t>The application-level protocol through which an agent can be reached for task execution, such as MCP <xref target="MCP"/>, A2A <xref target="A2A"/>, or gRPC. HTTP is the underlying transport for most interaction protocols but is not itself an interaction protocol in this context.</t>
  </dd>
</dl>

</section>
</section>
<section anchor="architecture"><name>Architecture</name>

<t><xref target="fig-arch"/> shows the AD architecture.</t>

<figure title="Agent Directory Architecture" anchor="fig-arch"><artwork align="center"><![CDATA[
                Registration         Lookup
                 Interface         Interface
     +-------+       |                 |
     | Agent |---    |                 |
     +-------+   --- |                 |
                   --|-    +------+    |
     +-------+       | ----|      |    |     +--------+
     | Agent |-------|-----|  AD  |----|-----| Client |
     +-------+       | ----|      |    |     +--------+
                   --|-    +------+    |
     +-------+   --- |                 |
     |  CT   |---    |                 |
     +-------+       |                 |
]]></artwork></figure>

<t>Agents register their capabilities and endpoints with the AD. Clients (which may themselves be agents) query the AD's lookup interface to discover agents matching desired criteria. A Commissioning Tool (CT) may register agents on their behalf, for example when a platform operator manages a fleet of agents. How a CT proves authority to act on behalf of an agent is deployment-specific and out of scope for this document.</t>

<section anchor="principles"><name>Principles</name>

<t>The AD operates on the following principles:</t>

<t><list style="symbols">
  <t>The AD stores information that could otherwise only be obtained by directly querying each agent's metadata endpoint.</t>
  <t>Registrations are soft state. The registering agent (or its CT) <bcp14>MUST</bcp14> periodically refresh each registration before its lifetime expires.</t>
  <t>The AD <bcp14>MUST NOT</bcp14> permit modification of a registration by any entity other than the original registrant or an authorized CT.</t>
  <t>The AD does not proxy agent interactions; it only provides discovery.</t>
</list></t>

</section>
<section anchor="content-model"><name>Content Model</name>

<t>An AD contains zero or more agent registrations. Each registration has:</t>

<t><list style="symbols">
  <t>An agent name ("agent", a Unicode string) unique within the AD instance.</t>
  <t>A registration base URI ("base") <xref target="RFC3986"/>, typically the agent's reachable address.</t>
  <t>A lifetime ("lt") in seconds.</t>
  <t>A registration resource location within the AD ("href").</t>
  <t>Optionally, a version string ("version").</t>
  <t>Optionally, a vendor string ("vendor").</t>
  <t>Zero or more capabilities, each described as a JSON object with at minimum a name and a type.</t>
</list></t>

</section>
<section anchor="federation"><name>Federation</name>

<t>In deployments that span multiple administrative domains or geographic regions, multiple AD instances may operate independently. Federation allows these instances to share registration information so that a client querying one AD can discover agents registered at another.</t>

<t>This document does not specify a federation protocol. Possible approaches include periodic synchronization between peered AD instances, a publish/subscribe notification mechanism, and a hierarchical model where a root AD aggregates entries from subordinate instances. The soft-state model bounds staleness: federated entries carry the original lifetime and expire without explicit deletion if synchronization lapses.</t>

</section>
</section>
<section anchor="discovery"><name>AD Discovery</name>

<section anchor="well-known-uri"><name>Well-Known URI</name>

<t>An AD <bcp14>MUST</bcp14> be discoverable at the well-known URI:</t>

<figure><artwork><![CDATA[
/.well-known/ad
]]></artwork></figure>

<t>A GET request to this URI returns a JSON document describing the AD's interfaces. The response object contains the following fields:</t>

<dl newline="true">
  <dt>registration:</dt>
  <dd>
    <t>(string, <bcp14>REQUIRED</bcp14>) Path to the registration endpoint.</t>
  </dd>
  <dt>lookup:</dt>
  <dd>
    <t>(string, <bcp14>REQUIRED</bcp14>) Path to the lookup endpoint.</t>
  </dd>
  <dt>max_count:</dt>
  <dd>
    <t>(integer, <bcp14>REQUIRED</bcp14>) Maximum value the AD accepts for the <spanx style="verb">count</spanx> pagination parameter.</t>
  </dd>
</dl>

<t>Example:</t>

<figure><artwork><![CDATA[
GET /.well-known/ad HTTP/1.1
Host: directory.example.com

HTTP/1.1 200 OK
Content-Type: application/json

{
  "registration": "/ad/r",
  "lookup": "/ad/l",
  "max_count": 100
}
]]></artwork></figure>

</section>
<section anchor="dns-sd"><name>DNS-SD</name>

<t>An AD <bcp14>MAY</bcp14> advertise itself on a local network via DNS-SD <xref target="RFC6763"/> using the service name <spanx style="verb">_ad._tcp</spanx>. This provides zero-configuration discovery of a local AD, which is useful on networks where agents are colocated with sensors and actuators.</t>

<t>Several DNS-based mechanisms have been proposed in the DAWN working group for wide-area agent discovery. DNS-AID <xref target="I-D.mozleywilliams-dnsop-dnsaid"/> publishes agent metadata under <spanx style="verb">_agents</spanx> subdomains using SVCB records. DN-ANR <xref target="I-D.cui-dns-native-agent-naming-resolution"/> defines a resolution layer using FQDNs and SVCB/HTTPS records. These mechanisms handle naming and resolution: mapping an agent name to a network location. The AD handles the layer above: finding agents by capability without prior knowledge of their names. DNS resolves the AD's hostname; the AD carries the capability metadata that DNS cannot efficiently carry.</t>

</section>
</section>
<section anchor="registration"><name>Registration</name>

<section anchor="registration-request"><name>Registration Request</name>

<t>An agent registers by sending a POST request to the AD's registration endpoint. All HTTP interactions with the AD follow the semantics defined in <xref target="RFC9110"/>. The request body is a JSON object containing the agent's metadata and capabilities.</t>

<figure><artwork><![CDATA[
POST /ad/r?agent=summarizer-v2 HTTP/1.1
Host: directory.example.com
Content-Type: application/json

{
  "base": "https://agents.example.com/summarizer-v2",
  "description": "Summarizes documents and extracts named entities",
  "protocols": ["a2a"],
  "capabilities": [
    {
      "name": "summarize",
      "type": "tool",
      "description": "Summarize a document or text passage",
      "input_schema": {
        "type": "object",
        "properties": {
          "text": {"type": "string"},
          "max_length": {"type": "integer"}
        },
        "required": ["text"]
      }
    },
    {
      "name": "extract_entities",
      "type": "tool",
      "description": "Extract named entities from text"
    }
  ],
  "version": "2.1.0",
  "vendor": "Example Corp",
  "identity": "https://registry.example.com/agents/summarizer-v2",
  "identity_type": "aip"
}

HTTP/1.1 201 Created
Location: /ad/r/4521
]]></artwork></figure>

<t>The query parameters are:</t>

<dl newline="true">
  <dt>agent:</dt>
  <dd>
    <t><bcp14>REQUIRED</bcp14>. Agent name. <bcp14>MUST</bcp14> be unique within the AD instance. <bcp14>SHOULD</bcp14> be short and meaningful; the AD <bcp14>MAY</bcp14> enforce a maximum length.</t>
  </dd>
  <dt>lt:</dt>
  <dd>
    <t>Lifetime in seconds (<bcp14>OPTIONAL</bcp14>). Default: 86400 (24 hours). Range: 60 to 4294967295 (2^32-1, matching <xref target="RFC9176"/>). The AD <bcp14>SHOULD</bcp14> enforce a maximum lifetime; a recommended default maximum is 604800 seconds (7 days).</t>
  </dd>
</dl>

<t>The body JSON object contains:</t>

<dl newline="true">
  <dt>base:</dt>
  <dd>
    <t>(string, <bcp14>REQUIRED</bcp14>) The agent's reachable base URI <xref target="RFC3986"/>.</t>
  </dd>
  <dt>description:</dt>
  <dd>
    <t>(string, <bcp14>OPTIONAL</bcp14>) A short human-readable description of what the agent does. <bcp14>SHOULD</bcp14> be one or two sentences. Returned in lookup responses to help clients evaluate agents without additional round-trips.</t>
  </dd>
  <dt>protocols:</dt>
  <dd>
    <t>(array of strings, <bcp14>OPTIONAL</bcp14>) Interaction protocols supported. The following values are defined by this document: "mcp" (Model Context Protocol), "a2a" (Agent-to-Agent Protocol), "grpc" (gRPC). Implementations <bcp14>SHOULD</bcp14> use lowercase short names and <bcp14>MAY</bcp14> append a version (e.g., "mcp/1.0"). A future version of this document may define an IANA registry for protocol identifiers.</t>
  </dd>
  <dt>capabilities:</dt>
  <dd>
    <t>(array of objects, <bcp14>OPTIONAL</bcp14>) The agent's capabilities. Each object <bcp14>MUST</bcp14> have "name" (string) and "type" (string) fields. The "type" field indicates the kind of capability (see <xref target="capability-types"/>). Additional fields such as "description" (string), "tags" (array of strings), "input_schema" (object), and "output_schema" (object) are <bcp14>OPTIONAL</bcp14>. When present, input_schema and output_schema <bcp14>SHOULD</bcp14> be JSON Schema objects. Capability names <bcp14>MUST</bcp14> be unique within a registration.</t>
  </dd>
  <dt>version:</dt>
  <dd>
    <t>(string, <bcp14>OPTIONAL</bcp14>) The agent's version identifier.</t>
  </dd>
  <dt>vendor:</dt>
  <dd>
    <t>(string, <bcp14>OPTIONAL</bcp14>) The organization or individual that provides the agent.</t>
  </dd>
  <dt>identity:</dt>
  <dd>
    <t>(string, <bcp14>OPTIONAL</bcp14>) A URI pointing to the agent's identity metadata document. This document describes the agent's verified identity, trust posture, owner binding, or credentials in a structured format. The AD stores and returns this URI without interpreting its contents.</t>
  </dd>
  <dt>identity_type:</dt>
  <dd>
    <t>(string, <bcp14>OPTIONAL</bcp14>) The schema or format of the identity document referenced by <spanx style="verb">identity</spanx>. Values include "aip" (Agent Identity Profile), "oidc" (OpenID Connect Discovery), "wimse" (WIMSE workload identity), and "did" (Decentralized Identifier Document). Clients that recognize the type can dereference and validate the identity document; clients that do not recognize the type <bcp14>SHOULD</bcp14> ignore both fields.</t>
  </dd>
</dl>

<t>When present, the <spanx style="verb">identity</spanx> field lets a client verify an agent beyond trusting the AD. For example, a client discovering a financial-analysis agent can fetch its AIP document to check owner binding, attestation state, and credential lifetime before invoking the agent. The AD stores the URI and does not interpret it; trust decisions remain the client's. Clients <bcp14>MUST NOT</bcp14> treat the presence of an <spanx style="verb">identity</spanx> field as proof of identity without verifying the referenced document.</t>

<section anchor="capability-types"><name>Capability Types</name>

<t>The "type" field in a capability object indicates the kind of function the agent exposes. The following initial values are defined:</t>

<dl newline="true">
  <dt>tool:</dt>
  <dd>
    <t>A discrete, stateless function that accepts structured input and returns structured output.</t>
  </dd>
  <dt>skill:</dt>
  <dd>
    <t>A higher-level, potentially multi-step behavior that may involve internal reasoning, planning, or coordination. Unlike a tool, a skill may maintain conversational state.</t>
  </dd>
  <dt>resource:</dt>
  <dd>
    <t>A data source or content provider that the agent can expose for reading.</t>
  </dd>
  <dt>prompt:</dt>
  <dd>
    <t>A reusable prompt template that the agent can execute with supplied parameters.</t>
  </dd>
</dl>

<t>This list is extensible. Implementations <bcp14>MAY</bcp14> use additional type values. The remaining types mirror those defined by MCP <xref target="MCP"/>.</t>

</section>
</section>
<section anchor="registration-semantics"><name>Registration Semantics</name>

<t>Registration is idempotent on the agent name; a POST with the same agent name acts as an upsert. This follows the RFC 9176 pattern of POST-to-collection for registration rather than PUT to a canonical agent URL. The AD stores the <spanx style="verb">agent</spanx> value from the query parameter as part of the registration resource and includes it in all response representations.</t>

<t><list style="symbols">
  <t>If no registration exists for the agent name, a new registration resource is created. The AD returns 201 (Created) with a Location header pointing to the registration resource.</t>
  <t>If a registration already exists for the agent name and the request comes from the same authenticated entity, the registration is replaced with the new content. The AD returns 200 (OK) with the Location header of the existing registration resource.</t>
  <t>If a registration already exists for the agent name but is owned by a different authenticated entity, the AD returns 409 (Conflict).</t>
</list></t>

<t>The response body for both 201 and 200 is empty. Clients that need the full representation <bcp14>SHOULD</bcp14> send a GET request to the URI in the Location header. The AD <bcp14>MAY</bcp14> grant a lifetime shorter than requested; the granted lifetime <bcp14>MUST</bcp14> be indicated in the response via a <spanx style="verb">lt</spanx> field in a JSON body or via the Location header's associated resource.</t>

</section>
<section anchor="registration-read"><name>Reading a Registration</name>

<t>An agent or client retrieves a single registration by sending a GET request to the registration resource.</t>

<figure><artwork><![CDATA[
GET /ad/r/4521 HTTP/1.1
Host: directory.example.com

HTTP/1.1 200 OK
Content-Type: application/json

{
  "agent": "summarizer-v2",
  "base": "https://agents.example.com/summarizer-v2",
  "protocols": ["a2a"],
  "capabilities": [
    {
      "name": "summarize",
      "type": "tool",
      "description": "Summarize a document or text passage",
      "input_schema": {
        "type": "object",
        "properties": {
          "text": {"type": "string"},
          "max_length": {"type": "integer"}
        },
        "required": ["text"]
      }
    },
    {
      "name": "extract_entities",
      "type": "tool",
      "description": "Extract named entities from text"
    }
  ],
  "version": "2.1.0",
  "vendor": "Example Corp",
  "href": "/ad/r/4521"
}
]]></artwork></figure>

<t>The response includes the full registration content, including capability details (description, schemas) that are omitted from lookup results with <spanx style="verb">view=agent</spanx>. If the registration resource does not exist, the AD <bcp14>MUST</bcp14> return 404 (Not Found).</t>

</section>
<section anchor="registration-update"><name>Registration Update</name>

<t>An agent refreshes or updates its registration by sending a POST request to its registration resource (the URI returned in the Location header at creation time).</t>

<figure><artwork><![CDATA[
POST /ad/r/4521 HTTP/1.1
Host: directory.example.com

HTTP/1.1 204 No Content
]]></artwork></figure>

<t>An empty POST resets the lifetime. The agent <bcp14>MAY</bcp14> include query parameters (lt) to update those values, or a JSON body to replace the capabilities. If the registration has already expired, the AD <bcp14>MUST</bcp14> return 404 (Not Found); the agent must re-register via the registration endpoint.</t>

<t>An agent may update the lifetime via the <spanx style="verb">lt</spanx> query parameter:</t>

<figure><artwork><![CDATA[
POST /ad/r/4521?lt=3600 HTTP/1.1
Host: directory.example.com

HTTP/1.1 204 No Content
]]></artwork></figure>

<t>If the registration has already expired, the update fails:</t>

<figure><artwork><![CDATA[
POST /ad/r/4521 HTTP/1.1
Host: directory.example.com

HTTP/1.1 404 Not Found
Content-Type: application/problem+json

{
  "type": "https://ad.example.com/errors/registration-expired",
  "title": "Registration has expired",
  "status": 404
}
]]></artwork></figure>

</section>
<section anchor="registration-removal"><name>Registration Removal</name>

<t>An agent removes its registration by sending a DELETE request to its registration resource.</t>

<figure><artwork><![CDATA[
DELETE /ad/r/4521 HTTP/1.1
Host: directory.example.com

HTTP/1.1 204 No Content
]]></artwork></figure>

<t>The AD <bcp14>MUST</bcp14> automatically remove a registration when its lifetime elapses without a refresh.</t>

</section>
</section>
<section anchor="lookup"><name>Lookup</name>

<t>The AD provides a single unified lookup endpoint. The <spanx style="verb">view</spanx> query parameter controls how results are grouped:</t>

<t><list style="symbols">
  <t><spanx style="verb">view=agent</spanx> (default): returns a list of registered agents matching the query, with capability summaries.</t>
  <t><spanx style="verb">view=cap</spanx>: returns a list of individual capabilities across all matching agents.</t>
</list></t>

<section anchor="agent-view"><name>Agent View</name>

<figure><artwork><![CDATA[
GET /ad/l HTTP/1.1
Host: directory.example.com
Accept: application/json

HTTP/1.1 200 OK
Content-Type: application/json

{
  "agents": [
    {
      "agent": "summarizer-v2",
      "base": "https://agents.example.com/summarizer-v2",
      "description": "Summarizes documents and extracts named entities",
      "protocols": ["a2a"],
      "capabilities": [
        {"name": "summarize", "type": "tool"},
        {"name": "extract_entities", "type": "tool"}
      ],
      "href": "/ad/r/4521"
    },
    {
      "agent": "citation-finder",
      "base": "https://agents.example.com/citation-finder",
      "description": "Finds and verifies academic citations",
      "protocols": ["mcp"],
      "capabilities": [
        {"name": "find_citations", "type": "tool"},
        {"name": "check_references", "type": "tool"}
      ],
      "href": "/ad/r/4522"
    }
  ]
}
]]></artwork></figure>

<t>Agent view returns capability summary objects (name and type only). Full capability details (description, schemas) are omitted to keep lookup responses compact. Clients that need the full registration <bcp14>SHOULD</bcp14> retrieve the individual registration resource (GET /ad/r/{id}). This two-step pattern mirrors the RD's separation between endpoint lookup and resource lookup.</t>

</section>
<section anchor="capability-view"><name>Capability View</name>

<t>Capability view returns individual capabilities with their owning agent's information. Clients use this view to find specific tools or skills across all registered agents.</t>

<figure><artwork><![CDATA[
GET /ad/l?cap_name=summarize&view=cap HTTP/1.1
Host: directory.example.com
Accept: application/json

HTTP/1.1 200 OK
Content-Type: application/json

{
  "capabilities": [
    {
      "name": "summarize",
      "type": "tool",
      "description": "Summarize a document or text passage",
      "agent": "summarizer-v2",
      "base": "https://agents.example.com/summarizer-v2",
      "protocols": ["a2a"],
      "href": "/ad/r/4521"
    },
    {
      "name": "summarize_meeting",
      "type": "tool",
      "description": "Summarize meeting transcripts",
      "agent": "meeting-assistant",
      "base": "https://agents.example.com/meeting-bot",
      "protocols": ["mcp"],
      "href": "/ad/r/4523"
    }
  ]
}
]]></artwork></figure>

<t>Each capability object in the response includes: "name", "type", "description" (if registered), the owning agent's "agent", "base", "protocols", and "href" (the registration resource URI). Clients can use "href" to retrieve the full registration.</t>

</section>
<section anchor="lookup-params"><name>Query Parameters</name>

<t>All query parameters are <bcp14>OPTIONAL</bcp14> and act as filters. When multiple filter parameters are present, the AD <bcp14>MUST</bcp14> AND them: only entries matching all specified filters are returned. A request with no filter parameters returns all registrations visible to the requesting client.</t>

<dl newline="true">
  <dt>agent:</dt>
  <dd>
    <t>Filter by agent name. A trailing asterisk (*) matches any suffix (e.g., <spanx style="verb">agent=sum*</spanx> matches "summarizer" and "summary-bot"). Without an asterisk, the value <bcp14>MUST</bcp14> match exactly. Wildcard matching is only supported for the <spanx style="verb">agent</spanx> and <spanx style="verb">cap_name</spanx> parameters.</t>
  </dd>
  <dt>protocol:</dt>
  <dd>
    <t>Filter by supported interaction protocol. Exact match.</t>
  </dd>
  <dt>cap_name:</dt>
  <dd>
    <t>Filter by capability name. Trailing asterisk (*) for prefix match; exact match otherwise.</t>
  </dd>
  <dt>cap_type:</dt>
  <dd>
    <t>Filter by capability type (e.g., "tool", "skill"). Exact match.</t>
  </dd>
  <dt>tag:</dt>
  <dd>
    <t>Filter by capability tag. Returns agents (or capabilities) that have at least one capability carrying the specified tag. Exact match. In agent view, the full agent with all its capabilities is returned if any capability matches.</t>
  </dd>
  <dt>view:</dt>
  <dd>
    <t>Result grouping. "agent" (default) groups results by agent; "cap" groups results by individual capability. If omitted, the AD <bcp14>MUST</bcp14> use "agent".</t>
  </dd>
  <dt>page:</dt>
  <dd>
    <t>Page number (zero-based) for pagination. Default: 0.</t>
  </dd>
  <dt>count:</dt>
  <dd>
    <t>Maximum number of results per page. Default: 100. The AD <bcp14>MAY</bcp14> enforce a lower maximum and <bcp14>MUST</bcp14> document its limit in the well-known response.</t>
  </dd>
</dl>

</section>
</section>
<section anchor="errors"><name>Error Responses</name>

<t>When the AD cannot fulfill a request, it <bcp14>MUST</bcp14> return an appropriate HTTP status code and <bcp14>SHOULD</bcp14> include a problem details object as defined in <xref target="RFC9457"/>. The <spanx style="verb">type</spanx> URIs shown below are illustrative; this document does not register them.</t>

<figure><artwork><![CDATA[
HTTP/1.1 409 Conflict
Content-Type: application/problem+json

{
  "type": "https://ad.example.com/errors/agent-name-taken",
  "title": "Agent name already registered",
  "detail": "Agent name already registered by another entity.",
  "status": 409
}
]]></artwork></figure>

<t>The following error conditions are defined:</t>

<dl newline="true">
  <dt>400 Bad Request:</dt>
  <dd>
    <t>The request body is malformed or missing required fields.</t>
  </dd>
  <dt>401 Unauthorized:</dt>
  <dd>
    <t>The request lacks valid authentication credentials.</t>
  </dd>
  <dt>403 Forbidden:</dt>
  <dd>
    <t>The authenticated entity is not authorized for the requested operation.</t>
  </dd>
  <dt>404 Not Found:</dt>
  <dd>
    <t>The referenced registration resource does not exist.</t>
  </dd>
  <dt>409 Conflict:</dt>
  <dd>
    <t>The agent name is already registered by a different entity.</t>
  </dd>
  <dt>429 Too Many Requests:</dt>
  <dd>
    <t>The client has exceeded the rate limit.</t>
  </dd>
</dl>

</section>
<section anchor="security-policies"><name>Security Policies</name>

<t>The security model is derived from <xref section="7" sectionFormat="of" target="RFC9176"/> and adapted for agents. Policies for capability attestation and cross-domain trust are out of scope for this document.</t>

<section anchor="agent-name-and-registration-ownership"><name>Agent Name and Registration Ownership</name>

<t>The AD <bcp14>MUST</bcp14> ensure that a registering agent is authorized to use the given agent name. The default policy is "First Come First Remembered" as described in <xref section="7.5" sectionFormat="of" target="RFC9176"/>: accept registrations for any agent name not currently active, and only accept updates from the same authenticated entity. Whether the AD should return 409 (Conflict) or 403 (Forbidden) when a different entity tries to claim an existing name is an open design question; this document uses 409 to signal a naming conflict rather than an authorization failure.</t>

</section>
<section anchor="capability-confidentiality"><name>Capability Confidentiality</name>

<t>The AD <bcp14>MUST</bcp14> enforce access control on lookup results when the operator policy designates some registrations as restricted. Not every client is entitled to see every registration.</t>

</section>
<section anchor="capability-vetting"><name>Capability Vetting</name>

<t>The AD <bcp14>SHOULD</bcp14> restrict which capability types and names an agent may claim, based on operator policy. For example, registration of an agent as a "financial-analysis" tool can be limited to agents presenting the corresponding credentials. The policy mechanism is deployment-specific and out of scope for this document.</t>

</section>
</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<section anchor="transport-security"><name>Transport Security</name>

<t>All communication with the AD <bcp14>MUST</bcp14> be protected using TLS.</t>

</section>
<section anchor="authentication"><name>Authentication</name>

<t>Agents <bcp14>MUST</bcp14> authenticate when registering. The AD <bcp14>MUST</bcp14> support OAuth 2.0 bearer tokens <xref target="RFC6750"/> or mutual TLS (mTLS). API keys are acceptable for development but do not satisfy the authentication requirement for production use.</t>

<t>Registration requires a verified agent identity: the AD must know who is registering before it can enforce ownership of the registration resource. Bearer tokens prove authorization but not workload identity. For production deployments, the AD <bcp14>SHOULD</bcp14> accept workload identity credentials as defined by the WIMSE working group <xref target="I-D.ietf-wimse-arch"/>. The WIMSE architecture treats agents as workloads and defines a <spanx style="verb">wimse:</spanx> URI scheme <xref target="I-D.ietf-wimse-identifier"/> that can serve as the agent's authenticated identity at registration time. This provides a cryptographically verifiable binding between the registrant and the registration.</t>

<t>If an agent's credentials are compromised, the attacker can modify the registration (including the <spanx style="verb">base</spanx> URI) until the credentials are revoked. Deployments <bcp14>SHOULD</bcp14> keep credential lifetimes comparable to registration lifetimes, and <bcp14>SHOULD</bcp14> log registration changes for audit.</t>

</section>
<section anchor="authorization"><name>Authorization</name>

<t>The AD <bcp14>MUST</bcp14> enforce that only the original registrant (or an authorized CT) can modify or delete a registration. The AD <bcp14>SHOULD</bcp14> implement rate limiting on both registration and lookup endpoints, and <bcp14>MUST</bcp14> enforce limits on registration size and number of capabilities per agent.</t>

</section>
<section anchor="privacy"><name>Privacy</name>

<t>Agent metadata can reveal organizational structure: a lookup response listing all agents discloses which capabilities an organization has deployed. The AD <bcp14>SHOULD</bcp14> return only those registrations that the requester is authorized to see. The interaction between scoped responses and federation is out of scope for this document.</t>

</section>
<section anchor="adversarial-metadata"><name>Adversarial Metadata</name>

<t>Capability descriptions and tags are free-form text that LLM-based clients may use as input to their decisions. A malicious registrant can craft descriptions that bias those decisions toward invoking the wrong agent. A malicious registrant can also set <spanx style="verb">base</spanx> to a victim's endpoint, redirecting traffic intended for the registered agent.</t>

<t>Clients <bcp14>SHOULD</bcp14> treat registration metadata as untrusted input. Clients <bcp14>MAY</bcp14> verify a registration by fetching the agent's own metadata at <spanx style="verb">base</spanx> and comparing it with the AD response before invocation.</t>

</section>
</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<section anchor="well-known-uri-registration"><name>Well-Known URI Registration</name>

<t>This document requests registration of the following well-known URI <xref target="RFC8615"/>:</t>

<dl newline="true">
  <dt>URI suffix:</dt>
  <dd>
    <t>ad</t>
  </dd>
  <dt>Change controller:</dt>
  <dd>
    <t>IETF</t>
  </dd>
  <dt>Specification document:</dt>
  <dd>
    <t>[RFC-XXXX]</t>
  </dd>
</dl>

</section>
<section anchor="media-type"><name>Media Type</name>

<t>This document uses <spanx style="verb">application/json</spanx> for all request and response bodies and <spanx style="verb">application/problem+json</spanx> <xref target="RFC9457"/> for error responses.</t>

</section>
</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">



<reference anchor="RFC3986">
  <front>
    <title>Uniform Resource Identifier (URI): Generic Syntax</title>
    <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
    <author fullname="R. Fielding" initials="R." surname="Fielding"/>
    <author fullname="L. Masinter" initials="L." surname="Masinter"/>
    <date month="January" year="2005"/>
    <abstract>
      <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="66"/>
  <seriesInfo name="RFC" value="3986"/>
  <seriesInfo name="DOI" value="10.17487/RFC3986"/>
</reference>
<reference anchor="RFC6750">
  <front>
    <title>The OAuth 2.0 Authorization Framework: Bearer Token Usage</title>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <author fullname="D. Hardt" initials="D." surname="Hardt"/>
    <date month="October" year="2012"/>
    <abstract>
      <t>This specification describes how to use bearer tokens in HTTP requests to access OAuth 2.0 protected resources. Any party in possession of a bearer token (a "bearer") can use it to get access to the associated resources (without demonstrating possession of a cryptographic key). To prevent misuse, bearer tokens need to be protected from disclosure in storage and in transport. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="6750"/>
  <seriesInfo name="DOI" value="10.17487/RFC6750"/>
</reference>
<reference anchor="RFC8615">
  <front>
    <title>Well-Known Uniform Resource Identifiers (URIs)</title>
    <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
    <date month="May" year="2019"/>
    <abstract>
      <t>This memo defines a path prefix for "well-known locations", "/.well-known/", in selected Uniform Resource Identifier (URI) schemes.</t>
      <t>In doing so, it obsoletes RFC 5785 and updates the URI schemes defined in RFC 7230 to reserve that space. It also updates RFC 7595 to track URI schemes that support well-known URIs in their registry.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8615"/>
  <seriesInfo name="DOI" value="10.17487/RFC8615"/>
</reference>
<reference anchor="RFC9110">
  <front>
    <title>HTTP Semantics</title>
    <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
    <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
    <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
    <date month="June" year="2022"/>
    <abstract>
      <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
      <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="97"/>
  <seriesInfo name="RFC" value="9110"/>
  <seriesInfo name="DOI" value="10.17487/RFC9110"/>
</reference>
<reference anchor="RFC9176">
  <front>
    <title>Constrained RESTful Environments (CoRE) Resource Directory</title>
    <author fullname="C. Amsüss" initials="C." role="editor" surname="Amsüss"/>
    <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
    <author fullname="M. Koster" initials="M." surname="Koster"/>
    <author fullname="C. Bormann" initials="C." surname="Bormann"/>
    <author fullname="P. van der Stok" initials="P." surname="van der Stok"/>
    <date month="April" year="2022"/>
    <abstract>
      <t>In many Internet of Things (IoT) applications, direct discovery of resources is not practical due to sleeping nodes or networks where multicast traffic is inefficient. These problems can be solved by employing an entity called a Resource Directory (RD), which contains information about resources held on other servers, allowing lookups to be performed for those resources. The input to an RD is composed of links, and the output is composed of links constructed from the information stored in the RD. This document specifies the web interfaces that an RD supports for web servers to discover the RD and to register, maintain, look up, and remove information on resources. Furthermore, new target attributes useful in conjunction with an RD are defined.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9176"/>
  <seriesInfo name="DOI" value="10.17487/RFC9176"/>
</reference>
<reference anchor="RFC9457">
  <front>
    <title>Problem Details for HTTP APIs</title>
    <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
    <author fullname="E. Wilde" initials="E." surname="Wilde"/>
    <author fullname="S. Dalal" initials="S." surname="Dalal"/>
    <date month="July" year="2023"/>
    <abstract>
      <t>This document defines a "problem detail" to carry machine-readable details of errors in HTTP response content to avoid the need to define new error response formats for HTTP APIs.</t>
      <t>This document obsoletes RFC 7807.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9457"/>
  <seriesInfo name="DOI" value="10.17487/RFC9457"/>
</reference>
<referencegroup anchor="BCP14" target="https://www.rfc-editor.org/info/bcp14">
  <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
    <front>
      <title>Key words for use in RFCs to Indicate Requirement Levels</title>
      <author fullname="S. Bradner" initials="S." surname="Bradner"/>
      <date month="March" year="1997"/>
      <abstract>
        <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
      </abstract>
    </front>
    <seriesInfo name="BCP" value="14"/>
    <seriesInfo name="RFC" value="2119"/>
    <seriesInfo name="DOI" value="10.17487/RFC2119"/>
  </reference>
  <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
    <front>
      <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
      <author fullname="B. Leiba" initials="B." surname="Leiba"/>
      <date month="May" year="2017"/>
      <abstract>
        <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
      </abstract>
    </front>
    <seriesInfo name="BCP" value="14"/>
    <seriesInfo name="RFC" value="8174"/>
    <seriesInfo name="DOI" value="10.17487/RFC8174"/>
  </reference>
</referencegroup>



    </references>

    <references title='Informative References' anchor="sec-informative-references">



<reference anchor="RFC6690">
  <front>
    <title>Constrained RESTful Environments (CoRE) Link Format</title>
    <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
    <date month="August" year="2012"/>
    <abstract>
      <t>This specification defines Web Linking using a link format for use by constrained web servers to describe hosted resources, their attributes, and other relationships between links. Based on the HTTP Link Header field defined in RFC 5988, the Constrained RESTful Environments (CoRE) Link Format is carried as a payload and is assigned an Internet media type. "RESTful" refers to the Representational State Transfer (REST) architecture. A well-known URI is defined as a default entry point for requesting the links hosted by a server. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="6690"/>
  <seriesInfo name="DOI" value="10.17487/RFC6690"/>
</reference>
<reference anchor="RFC6763">
  <front>
    <title>DNS-Based Service Discovery</title>
    <author fullname="S. Cheshire" initials="S." surname="Cheshire"/>
    <author fullname="M. Krochmal" initials="M." surname="Krochmal"/>
    <date month="February" year="2013"/>
    <abstract>
      <t>This document specifies how DNS resource records are named and structured to facilitate service discovery. Given a type of service that a client is looking for, and a domain in which the client is looking for that service, this mechanism allows clients to discover a list of named instances of that desired service, using standard DNS queries. This mechanism is referred to as DNS-based Service Discovery, or DNS-SD.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="6763"/>
  <seriesInfo name="DOI" value="10.17487/RFC6763"/>
</reference>

<reference anchor="I-D.pioli-agent-discovery">
   <front>
      <title>Agent Registration and Discovery Protocol (ARDP)</title>
      <author fullname="Roberto Pioli" initials="R." surname="Pioli">
         <organization>Independent</organization>
      </author>
      <date day="24" month="February" year="2026"/>
      <abstract>
	 <t>   This document specifies the Agent Registration and Discovery Protocol
   (ARDP), a lightweight protocol for registering, discovering, and
   reaching autonomous software agents in distributed and federated
   environments.  ARDP provides stable agent identities, dynamic
   endpoint resolution, capability advertisement (including protocol
   selection among MCP, A2A, HTTP, and gRPC), minimal presence
   signaling, and a security-first discovery control plane.  ARDP is
   transport-agnostic and complementary to existing agent interaction
   protocols.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-pioli-agent-discovery-01"/>
   
</reference>

<reference anchor="I-D.mp-agntcy-ads">
   <front>
      <title>Agent Directory Service</title>
      <author fullname="Luca Muscariello" initials="L." surname="Muscariello">
         <organization>Cisco</organization>
      </author>
      <author fullname="Ramiz Polic" initials="R." surname="Polic">
         <organization>Cisco</organization>
      </author>
      <date day="24" month="February" year="2026"/>
      <abstract>
	 <t>   The Agent Directory Service (ADS) is a distributed directory service
   designed to store metadata for AI agent applications.  This metadata,
   stored as directory records, enables the discovery of agent
   applications with specific skills for solving various problems.  The
   implementation features distributed directories that interconnect
   through a content-routing protocol.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-mp-agntcy-ads-01"/>
   
</reference>

<reference anchor="I-D.narajala-ans">
   <front>
      <title>Agent Name Service (ANS): A Universal Directory for Secure AI Agent Discovery and Interoperability</title>
      <author fullname="Ken Huang" initials="K." surname="Huang">
         <organization>DistributedApps.ai</organization>
      </author>
      <author fullname="Vineeth Sai Narajala" initials="V. S." surname="Narajala">
         <organization>Amazon Web Services</organization>
      </author>
      <author fullname="Idan Habler" initials="I." surname="Habler">
         <organization>Intuit</organization>
      </author>
      <author fullname="Akram Sheriff" initials="A." surname="Sheriff">
         <organization>Cisco Systems</organization>
      </author>
      <date day="16" month="May" year="2025"/>
      <abstract>
	 <t>   The proliferation of AI agents requires robust mechanisms for secure
   discovery.  This document introduces the Agent Name Service (ANS), a
   novel architecture based on DNS addressing the lack of a public agent
   discovery framework.  ANS provides a protocol-agnostic registry
   mechanism that leverages Public Key Infrastructure (PKI) certificates
   for verifiable agent identity and trust.  The architecture features
   several key innovations: a formalized agent registration and renewal
   mechanism for lifecycle management; DNS-inspired naming conventions
   with capability-aware resolution; a modular Protocol Adapter Layer
   supporting diverse communication standards (A2A, MCP, ACP, etc.); and
   precisely defined algorithms for secure resolution.  This
   specification describes structured communication using JSON Schema
   and includes a comprehensive threat analysis.  The result is a
   foundational agent directory service protocol addressing the core
   challenges of secure discovery and interaction in multi-agent
   systems, paving the way for future interoperable, trustworthy, and
   scalable agent ecosystems.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-narajala-ans-00"/>
   
</reference>

<reference anchor="I-D.hood-independent-agtp">
   <front>
      <title>Agent Transfer Protocol (AGTP)</title>
      <author fullname="Chris Hood" initials="C." surname="Hood">
         <organization>Nomotic, Inc.</organization>
      </author>
      <date day="27" month="April" year="2026"/>
      <abstract>
	 <t>   AI agents and agentic systems generate a growing volume of intent-
   driven, unstructured, and undifferentiated traffic that flows through
   HTTP indistinguishably from human-initiated requests.  HTTP lacks the
   semantic vocabulary, observability primitives, and identity
   mechanisms required by agent systems operating at scale.  Existing
   protocols described as Agent Group Messaging Protocols (AGMP),
   including MCP, ACP, A2A, and ANP, are messaging-layer constructs that
   presuppose HTTP as their transport.  They do not address the
   underlying transport problem.

   This document defines the Agent Transfer Protocol (AGTP): a dedicated
   application-layer protocol for AI agent traffic.  Version 05 restores
   the canonical Agent-ID as the primary identity primitive and
   decouples Trust Tier 1 verification from DNS as a sole requirement.
   A canonical Agent-ID is derived from the agent&#x27;s Birth Certificate
   hash and is authoritative in every AGTP protocol operation.  Three
   equivalent verification paths are recognized for Trust Tier 1: DNS-
   anchored verification via RFC 8555 ACME challenge, log-anchored
   verification via Birth Certificate inclusion in an append-only
   transparency log aligned with RFC 9162 and RFC 9943 (SCITT), and
   hybrid verification combining DNS control with blockchain address
   ownership.  The .agent and .nomo hierarchical namespaces are
   reinstated as agent-native resolution aliases with deterministic
   disambiguation rules governing coexistence with Web3 naming systems.
   Version 04 introduced normative integration hooks for the AGTP
   Merchant Identity and Agentic Commerce Binding specification
   [AGTP-MERCHANT], which defines the merchant-side identity model that
   complements AGTP&#x27;s agent-side identity model.  Version 04 added four
   merchant-related request headers (Merchant-ID, Merchant-Manifest-
   Fingerprint, Intent-Assertion, Cart- Digest), the 455 Counterparty
   Unverified status code, and the merchant and intent Authority-Scope
   domains.  Together these elements close the verification loop between
   the initiating agent and the receiving merchant on AGTP PURCHASE
   invocations.  Version 03 introduced normative integration with the
   Agentic Grammar and Interface Specification (AGIS) [AGIS], which
   defines the grammar-based validation pathway for AGTP method
   identifiers.  AGIS-conformant methods are accepted at the transport
   layer via the Method-Grammar header without requiring prior IANA
   registration, enabling organizations to define domain-specific
   Agentive API vocabularies while preserving interoperability through
   shared grammatical constraints.  AGTP provides agent-native intent
   methods (QUERY, SUMMARIZE, BOOK, SCHEDULE, LEARN, DELEGATE,
   COLLABORATE, CONFIRM, ESCALATE, NOTIFY, DESCRIBE, SUSPEND), protocol-
   level agent identity and authority headers, and a status code
   vocabulary designed for the conditions AI agent systems encounter.
   AGTP SHOULD prefer QUIC for new implementations and MUST support TCP/
   TLS for compatibility and fallback.  It is designed to be composable
   with existing agent frameworks, not to replace them.  Version 02
   introduces capability discovery (DESCRIBE), resource budget signaling
   and enforcement, optional RATS-aligned execution attestation,
   observability hooks, network zone isolation, session suspension as a
   method, and normative composition profiles with AGMP (Agent Group
   Messaging Protocols).  Version 02 enables dynamic capability
   negotiation and resource-aware governance.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-hood-independent-agtp-06"/>
   
</reference>

<reference anchor="I-D.zyyhl-agent-networks-framework">
   <front>
      <title>Framework for AI Agent Networks</title>
      <author fullname="Zhouye" initials="" surname="Zhouye">
         <organization>ANP Open Source Community</organization>
      </author>
      <author fullname="Kehan Yao" initials="K." surname="Yao">
         <organization>China Mobile</organization>
      </author>
      <author fullname="Menghan Yu" initials="M." surname="Yu">
         <organization>China Telecom</organization>
      </author>
      <author fullname="Mengyao Han" initials="M." surname="Han">
         <organization>China Unicom</organization>
      </author>
      <author fullname="Cheng Li" initials="C." surname="Li">
         <organization>Huawei</organization>
      </author>
      <date day="20" month="October" year="2025"/>
      <abstract>
	 <t>   This document defines the framework of AI agent networks based on
   Agent Network Protocol (ANP) protocol.  [ANP] It provides the basic
   functions that needs to support AI agent communication in the AI
   agent networks within the trust domain.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-zyyhl-agent-networks-framework-01"/>
   
</reference>

<reference anchor="I-D.cui-dns-native-agent-naming-resolution">
   <front>
      <title>DNS-Native AI Agent Naming and Resolution</title>
      <author fullname="Yong Cui" initials="Y." surname="Cui">
         <organization>Tsinghua University</organization>
      </author>
      <date day="2" month="March" year="2026"/>
      <abstract>
	 <t>   This document specifies DNS-Native Agent Naming and Resolution (DN-
   ANR) for AI agents.  DN-ANR has three goals: (1) use domain names
   (FQDNs) as stable Agent Identifiers, (2) resolve Agent Identifiers to
   verifiable endpoints and supported protocol/version information with
   a cryptographic integrity chain (DNSSEC preferred), and (3) provide
   only minimal and stable pointer/index capabilities that can be
   referenced by upper-layer discovery systems.  DN-ANR intentionally
   does not carry heavy semantic metadata in DNS, and does not define
   semantic discovery, ranking, or routing decisions.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-cui-dns-native-agent-naming-resolution-01"/>
   
</reference>

<reference anchor="I-D.mozleywilliams-dnsop-dnsaid">
   <front>
      <title>DNS for AI Discovery</title>
      <author fullname="Jim Mozley" initials="J." surname="Mozley">
         <organization>Infoblox, Inc.</organization>
      </author>
      <author fullname="Nic Williams" initials="N." surname="Williams">
         <organization>Infoblox, Inc.</organization>
      </author>
      <author fullname="Behcet Sarikaya" initials="B." surname="Sarikaya">
         <organization>Unaffiliated</organization>
      </author>
      <author fullname="Roland Schott" initials="R." surname="Schott">
         <organization>Deutsche Telekom</organization>
      </author>
      <date day="2" month="March" year="2026"/>
      <abstract>
	 <t>   This document specifies a method for utilizing the Domain Name System
   (DNS) to facilitate scalable and interoperable discovery between AI
   agents.  The proposed mechanism, referred to as &quot;DNS AI agent
   Discovery (DNS-AID)&quot;, defines a structured DNS namespace and record
   usage model to support metadata exchange and capability
   advertisement.

   This will allow organisations to publish information about their AI
   agents on the Internet or internal networks using a well-known label
   within the organisation&#x27;s own DNS namespace.  This document does not
   define how the published agent information is accessed or the exact
   structure of that information.  Instead, it specifies a mechanism for
   indicating which access protocol should be used and what format the
   agent information will be provided in.

   This document proposes no change to the structure of DNS messages,
   and no new operation codes, response codes, resource record types, or
   any other new DNS protocol values.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-mozleywilliams-dnsop-dnsaid-01"/>
   
</reference>

<reference anchor="I-D.ietf-wimse-arch">
   <front>
      <title>Workload Identity in a Multi System Environment (WIMSE) Architecture</title>
      <author fullname="Joseph A. Salowey" initials="J. A." surname="Salowey">
         <organization>CyberArk</organization>
      </author>
      <author fullname="Yaroslav Rosomakho" initials="Y." surname="Rosomakho">
         <organization>Zscaler</organization>
      </author>
      <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
         <organization>University of Applied Sciences Bonn-Rhein-Sieg</organization>
      </author>
      <date day="2" month="March" year="2026"/>
      <abstract>
	 <t>   The increasing prevalence of cloud computing and micro service
   architectures has led to the rise of complex software functions being
   built and deployed as workloads, where a workload is defined as
   software executing for a specific purpose, potentially comprising one
   or more running instances.  This document discusses an architecture
   for designing and standardizing protocols and payloads for conveying
   workload identity and security context information.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-wimse-arch-07"/>
   
</reference>

<reference anchor="I-D.ietf-wimse-identifier">
   <front>
      <title>Workload Identifier</title>
      <author fullname="Yaroslav Rosomakho" initials="Y." surname="Rosomakho">
         <organization>Zscaler</organization>
      </author>
      <author fullname="Joseph A. Salowey" initials="J. A." surname="Salowey">
         <organization>CyberArk</organization>
      </author>
      <date day="2" month="March" year="2026"/>
      <abstract>
	 <t>   This document defines a canonical identifier for workloads, referred
   to as the Workload Identifier.  A Workload Identifier is a URI that
   uniquely identifies a workload within the context of a specific trust
   domain.  This identifier can be embedded in digital credentials,
   including X.509 certificates and security tokens, to support
   authentication, authorization, and policy enforcement across diverse
   systems.  The Workload Identifier format ensures interoperability,
   facilitates secure identity federation, and enables consistent
   identity semantics.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-wimse-identifier-02"/>
   
</reference>

<reference anchor="MCP-Registry" target="https://github.com/modelcontextprotocol/registry">
  <front>
    <title>Model Context Protocol Registry</title>
    <author >
      <organization></organization>
    </author>
    <date year="2025"/>
  </front>
</reference>
<reference anchor="ANP-Discovery" target="https://agentnetworkprotocol.com/en/specs/08-anp-agent-discovery-protocol-specification/">
  <front>
    <title>ANP Agent Discovery Protocol Specification</title>
    <author >
      <organization></organization>
    </author>
    <date year="2024"/>
  </front>
</reference>
<reference anchor="MCP" target="https://spec.modelcontextprotocol.io/">
  <front>
    <title>Model Context Protocol Specification</title>
    <author >
      <organization></organization>
    </author>
    <date year="2025"/>
  </front>
</reference>
<reference anchor="A2A" target="https://a2aprotocol.ai/">
  <front>
    <title>Agent-to-Agent Protocol</title>
    <author >
      <organization></organization>
    </author>
    <date year="2025"/>
  </front>
</reference>
<reference anchor="Azure-API-Center" target="https://learn.microsoft.com/en-us/azure/api-center/agent-to-agent-overview">
  <front>
    <title>Agent registry in Azure API Center</title>
    <author >
      <organization></organization>
    </author>
    <date year="2026"/>
  </front>
</reference>
<reference anchor="ERC-8004" target="https://eips.ethereum.org/EIPS/eip-8004">
  <front>
    <title>ERC-8004: Trustless Agents</title>
    <author >
      <organization></organization>
    </author>
    <date year="2026"/>
  </front>
</reference>
<reference anchor="AgentRegistry" target="https://aregistry.ai/">
  <front>
    <title>agentregistry</title>
    <author >
      <organization></organization>
    </author>
    <date year="2026"/>
  </front>
</reference>


<reference anchor="RFC7942">
  <front>
    <title>Improving Awareness of Running Code: The Implementation Status Section</title>
    <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
    <author fullname="A. Farrel" initials="A." surname="Farrel"/>
    <date month="July" year="2016"/>
    <abstract>
      <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
      <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="205"/>
  <seriesInfo name="RFC" value="7942"/>
  <seriesInfo name="DOI" value="10.17487/RFC7942"/>
</reference>



    </references>

</references>


<?line 637?>

<section anchor="related-work"><name>Relationship to Other Work</name>

<section anchor="core-resource-directory-rfc-9176"><name>CoRE Resource Directory (RFC 9176)</name>

<t>The AD is a direct adaptation of the CoRE RD. The registration, update, removal, and lookup interfaces follow the same patterns. The differences reflect the shift from CoAP and CoRE Link Format <xref target="RFC6690"/> to HTTP and JSON: structured capability objects replace flat link attributes, and interaction protocol is advertised as a first-class field.</t>

</section>
<section anchor="per-agent-metadata-endpoints"><name>Per-Agent Metadata Endpoints</name>

<t>A2A <xref target="A2A"/> serves an Agent Card at <spanx style="verb">/.well-known/agent-card.json</spanx>; MCP <xref target="MCP"/> exchanges server metadata during initialization. Both describe a single agent and both require the client to already know the agent's URL.</t>

<t>The AD complements these by aggregating metadata from many agents into a queryable registry. Clients perform capability-based search without prior knowledge of agent addresses. Once the AD returns a matching agent's base URI, the client <bcp14>MAY</bcp14> fetch the agent's own metadata endpoint for protocol-specific details before initiating interaction.</t>

</section>
<section anchor="mcp-registry"><name>MCP Registry</name>

<t>The Model Context Protocol project maintains a public registry <xref target="MCP-Registry"/> where MCP servers are catalogued for discovery by MCP-compatible clients. The registry and the AD address overlapping concerns from different ends: the MCP Registry is scoped to MCP servers and curated by a single project; the AD is protocol-agnostic (MCP, A2A, gRPC, and others are all describable) and is specified here as an open interface that any operator can implement. An agent registered in the MCP Registry can also appear in an AD instance without conflict; the two are complementary rather than substitutable.</t>

</section>
<section anchor="agent-transfer-protocol-agtp"><name>Agent Transfer Protocol (AGTP)</name>

<t><xref target="I-D.hood-independent-agtp"/> proposes an agent-native transport protocol over TCP/TLS or QUIC, with agent identity, session semantics, and authorization expressed at the wire level rather than layered on HTTP. The AD takes the opposite approach, reusing HTTP and JSON as a substrate. The two are not mutually exclusive: an AD instance could register agents reachable over AGTP in the same way it registers agents reachable over MCP, A2A, or gRPC, by carrying the relevant protocol identifier in the <spanx style="verb">protocols</spanx> field.</t>

</section>
<section anchor="agent-directory-service-ads"><name>Agent Directory Service (ADS)</name>

<t><xref target="I-D.mp-agntcy-ads"/> specifies a system with goals similar to the AD.</t>

<t>ADS takes a fully decentralized approach: content-addressed identifiers (CIDs) for records, a libp2p Kad-DHT for routing, OCI-compliant storage (ORAS/zot) for retrieval, and gRPC for the client interface. It defines OASF, a hierarchical skill taxonomy with 15 top-level categories and 100+ specific skills, used for capability-based routing through the DHT. This provides federation and cryptographic integrity at the cost of requiring DHT peers, OCI registries, and gRPC infrastructure.</t>

<t>The AD makes the opposite trade-off: a single HTTP/JSON service with no additional infrastructure. Federation is not built in (see <xref target="federation"/>) and there is no content-addressed integrity model. ADS targets decentralized deployments where no single operator is trusted; the AD targets deployments where a managed directory is acceptable. Interoperability between the two (an AD instance indexing ADS records, or vice versa) is not specified in this document.</t>

</section>
<section anchor="agent-registration-and-discovery-protocol-ardp"><name>Agent Registration and Discovery Protocol (ARDP)</name>

<t><xref target="I-D.pioli-agent-discovery"/> defines a similar registration and discovery service with a custom <spanx style="verb">agent:</spanx> identifier scheme. The AD differs by reusing standard HTTP URIs for agent identity and by grounding the design in the RD model.</t>

</section>
<section anchor="dns-based-agent-discovery"><name>DNS-Based Agent Discovery</name>

<t><xref target="I-D.narajala-ans"/> (ANS) proposes DNS-based agent discovery with PKI certificates. The AD operates at the application layer and does not require DNS infrastructure changes.</t>

<t>DN-ANR <xref target="I-D.cui-dns-native-agent-naming-resolution"/> defines a thin DNS resolution layer using FQDNs and SVCB records, explicitly leaving capability-based discovery to an upper layer. The AD can serve as that upper layer. DNS-AID <xref target="I-D.mozleywilliams-dnsop-dnsaid"/> places agent metadata in DNS zones for intra-organization discovery; the AD provides cross-organization lookup. The two approaches are complementary.</t>

</section>
<section anchor="platform-specific-and-on-chain-registries"><name>Platform-Specific and On-Chain Registries</name>

<t>General-purpose service registries (Consul, etcd, Kubernetes service discovery) solve service location but do not model agent capabilities, interaction protocols, or soft-state registration semantics. The AD addresses the agent-specific aspects that these systems lack.</t>

<t>Azure API Center <xref target="Azure-API-Center"/> provides a centralized agent registry within the Azure ecosystem. The agentregistry project <xref target="AgentRegistry"/> offers a SaaS registry with a CLI. ERC-8004 <xref target="ERC-8004"/> defines on-chain agent registries on Ethereum.</t>

<t>These systems are each tied to a single provider: a cloud vendor, a SaaS operator, or a blockchain. The AD is specified by this document and can be operated by anyone; clients authenticate to the instance they use.</t>

</section>
<section anchor="agent-network-protocol-anp"><name>Agent Network Protocol (ANP)</name>

<t>ANP's Agent Discovery Protocol <xref target="ANP-Discovery"/> defines active discovery via <spanx style="verb">/.well-known/agent-descriptions</spanx> and passive discovery where agents register with a search service. The AD's registration model corresponds to ANP's passive mode but specifies the registration API concretely. ANP uses JSON-LD and DIDs; the AD uses plain JSON and HTTP URIs. The broader ANP framework is described in <xref target="I-D.zyyhl-agent-networks-framework"/>.</t>

</section>
<section anchor="agent-identity-profiles"><name>Agent Identity Profiles</name>

<t>The AD's <spanx style="verb">identity</spanx> and <spanx style="verb">identity_type</spanx> fields provide an extension point for linking registrations to external identity metadata. The Agent Identity Profile (AIP) is one such format, defining a JSON document that describes an agent's owner binding, capabilities, attestation state, trust posture, and credential lifecycle. Other formats include OpenID Connect Discovery documents and WIMSE workload identity endpoints. The AD does not mandate any particular identity schema; it provides the pointer so that clients can verify agents through whatever trust framework their deployment requires.</t>

</section>
</section>
<section anchor="examples"><name>Examples</name>

<section anchor="discovery-steps"><name>Discovery Flow</name>

<t>Discovering an agent through the AD involves four steps: locating the directory, discovering its interfaces, querying for a matching capability, and contacting the agent directly.</t>

<figure title="Discovery Flow" anchor="fig-discovery-steps"><artwork align="center"><![CDATA[
 Client                          AD                         Agent
   |                              |                            |
   |  1. Obtain AD URL            |                            |
   |  (DNS-SD/config/.well-known) |                            |
   |                              |                            |
   |  2. GET /.well-known/ad ---->|                            |
   |  <--- lookup interface URL   |                            |
   |                              |                            |
   |  3. GET /ad/l?               |                            |
   |     cap_name=summarize       |                            |
   |     &view=cap -------------->|                            |
   |  <--- matching agents + base |                            |
   |                              |                            |
   |  4. Interact with agent using protocol from lookup -----> |
   |  <--- Response ------------------------------------------ |
]]></artwork></figure>

<t>The steps in detail:</t>

<t>Step 1: Obtain the AD URL.</t>

<t>The client already knows the URL of an Agent Directory.
This may have been learned through a DNS-SD browse for
<spanx style="verb">_ad._tcp</spanx>, a <spanx style="verb">.well-known/ad</spanx> query to a known host,
or simply through static configuration.</t>

<figure><artwork><![CDATA[
https://ad.example.com
]]></artwork></figure>

<t>Step 2: Discover the AD's lookup interface.</t>

<t>The client queries the well-known endpoint to learn the available
interfaces.</t>

<figure><artwork><![CDATA[
GET https://ad.example.com/.well-known/ad HTTP/1.1

HTTP/1.1 200 OK
Content-Type: application/json

{
  "registration": "/ad/r",
  "lookup": "/ad/l",
  "max_count": 100
}
]]></artwork></figure>

<t>In some deployments the lookup interface path is already known
or follows a convention, in which case this step can be skipped.</t>

<t>Step 3: Search for an agent with the desired capability.</t>

<t>The client queries the lookup interface with <spanx style="verb">view=cap</spanx>.</t>

<figure><artwork><![CDATA[
GET https://ad.example.com/ad/l?cap_name=summarize&view=cap
HTTP/1.1

HTTP/1.1 200 OK
Content-Type: application/json

{
  "capabilities": [
    {
      "name": "summarize",
      "type": "tool",
      "description": "Summarize a document or text passage",
      "agent": "summarizer-v2",
      "base": "https://agents.example.com/summarizer-v2",
      "protocols": ["a2a"],
      "href": "/ad/r/4521"
    }
  ]
}
]]></artwork></figure>

<t>The response includes the agent's base URI and supported
protocols, giving the client enough information to contact the
agent directly.</t>

<t>Step 4: Interact with the agent.</t>

<t>The lookup response indicated that <spanx style="verb">summarizer-v2</spanx> is reachable
over A2A. The client fetches the agent's A2A Agent Card to
obtain the full task interface before invocation.</t>

<figure><artwork><![CDATA[
GET https://agents.example.com/summarizer-v2/.well-known/agent-card.json
HTTP/1.1

HTTP/1.1 200 OK
Content-Type: application/json

{ ... A2A Agent Card ... }
]]></artwork></figure>

<t>The subsequent task invocation is defined by the interaction
protocol (A2A in this case, MCP or gRPC in others) and is out
of scope for this document.</t>

</section>
<section anchor="enterprise-agent-portfolio"><name>Enterprise Agent Portfolio</name>

<t>A Publisher at <spanx style="verb">example.com</spanx> operates three agents behind a single AD.</t>

<t>Step 1: Agents register with the AD.</t>

<figure><artwork><![CDATA[
POST /ad/r?agent=ticket-classifier HTTP/1.1
Host: ad.example.com
Content-Type: application/json

{
  "base": "https://agents.example.com/ticket-classifier",
  "description": "Classifies incoming support tickets.",
  "protocols": ["mcp"],
  "capabilities": [
    {"name": "classify_ticket", "type": "tool"},
    {"name": "suggest_priority", "type": "tool"}
  ],
  "vendor": "Example Corp"
}

HTTP/1.1 201 Created
Location: /ad/r/201

POST /ad/r?agent=knowledge-lookup HTTP/1.1
Host: ad.example.com
Content-Type: application/json

{
  "base": "https://agents.example.com/kb",
  "description": "Searches internal knowledge base.",
  "protocols": ["mcp"],
  "capabilities": [
    {"name": "search_kb", "type": "tool", "tags": ["nlp", "search"]}
  ],
  "vendor": "Example Corp"
}

HTTP/1.1 201 Created
Location: /ad/r/202

POST /ad/r?agent=order-router HTTP/1.1
Host: ad.example.com
Content-Type: application/json

{
  "base": "https://agents.example.com/order-router",
  "description": "Routes orders to fulfillment systems.",
  "protocols": ["a2a"],
  "capabilities": [
    {"name": "route_order", "type": "tool"}
  ],
  "vendor": "Example Corp"
}

HTTP/1.1 201 Created
Location: /ad/r/203
]]></artwork></figure>

<t>Step 2: A client queries for MCP agents.</t>

<figure><artwork><![CDATA[
GET /ad/l?protocol=mcp HTTP/1.1
Host: ad.example.com
Accept: application/json

HTTP/1.1 200 OK
Content-Type: application/json

{
  "agents": [
    {
      "agent": "ticket-classifier",
      "base": "https://agents.example.com/ticket-classifier",
      "description": "Classifies incoming support tickets.",
      "protocols": ["mcp"],
      "capabilities": [
        {"name": "classify_ticket", "type": "tool"},
        {"name": "suggest_priority", "type": "tool"}
      ],
      "href": "/ad/r/201"
    },
    {
      "agent": "knowledge-lookup",
      "base": "https://agents.example.com/kb",
      "description": "Searches internal knowledge base.",
      "protocols": ["mcp"],
      "capabilities": [
        {"name": "search_kb", "type": "tool"}
      ],
      "href": "/ad/r/202"
    }
  ]
}
]]></artwork></figure>

</section>
<section anchor="filtered-lookup-with-pagination"><name>Filtered Lookup with Pagination</name>

<t>A client enumerates MCP tool capabilities in pages of two.</t>

<figure><artwork><![CDATA[
GET /ad/l?protocol=mcp&cap_type=tool&view=cap&count=2&page=0 HTTP/1.1
Host: ad.example.com
Accept: application/json

HTTP/1.1 200 OK
Content-Type: application/json

{
  "capabilities": [
    {
      "name": "classify_ticket",
      "type": "tool",
      "agent": "ticket-classifier",
      "base": "https://agents.example.com/ticket-classifier",
      "protocols": ["mcp"],
      "href": "/ad/r/201"
    },
    {
      "name": "suggest_priority",
      "type": "tool",
      "agent": "ticket-classifier",
      "base": "https://agents.example.com/ticket-classifier",
      "protocols": ["mcp"],
      "href": "/ad/r/201"
    }
  ]
}

GET /ad/l?protocol=mcp&cap_type=tool&view=cap&count=2&page=1 HTTP/1.1
Host: ad.example.com

HTTP/1.1 200 OK
Content-Type: application/json

{
  "capabilities": [
    {
      "name": "search_kb",
      "type": "tool",
      "agent": "knowledge-lookup",
      "base": "https://agents.example.com/kb",
      "protocols": ["mcp"],
      "href": "/ad/r/202"
    }
  ]
}
]]></artwork></figure>

</section>
<section anchor="registration-conflict"><name>Registration Conflict</name>

<t>A second entity attempts to register an agent under an already-claimed name.</t>

<figure><artwork><![CDATA[
POST /ad/r?agent=ticket-classifier HTTP/1.1
Host: ad.example.com
Authorization: Bearer <token-of-other-entity>
Content-Type: application/json

{
  "base": "https://attacker.example.org/ticket-classifier",
  "protocols": ["mcp"],
  "capabilities": [{"name": "classify_ticket", "type": "tool"}]
}

HTTP/1.1 409 Conflict
Content-Type: application/problem+json

{
  "type": "https://ad.example.com/errors/agent-name-taken",
  "title": "Agent name already registered",
  "detail": "Agent name 'ticket-classifier' already registered.",
  "status": 409
}
]]></artwork></figure>

</section>
</section>
<section anchor="tooling"><name>Tooling and Integration</name>

<t>The AD uses <spanx style="verb">application/json</spanx> for all request and response bodies (and <spanx style="verb">application/problem+json</spanx> for errors). No custom media types or content negotiation is required.</t>

<t>The HTTP/JSON interface is usable from command-line tools (<spanx style="verb">curl</spanx> and a JSON parser), shell scripts, and CI/CD pipelines without specialized client libraries. The lookup interface can also be exposed as an MCP tool, so that an MCP-compatible client performs agent discovery through its existing tool-calling mechanism.</t>

</section>
<section anchor="implementation-status"><name>Implementation Status</name>

<t>(Boilerplate as per <xref section="2.1" sectionFormat="of" target="RFC7942"/>:)</t>

<t>This section records the status of known implementations of the
protocol defined by this specification at the time of posting of
this Internet-Draft, and is based on a proposal described in
<xref target="RFC7942"/>.  The description of implementations in this section is
intended to assist the IETF in its decision processes in
progressing drafts to RFCs.  Please note that the listing of any
individual implementation here does not imply endorsement by the
IETF.  Furthermore, no effort has been spent to verify the
information presented here that was supplied by IETF contributors.
This is not intended as, and must not be construed to be, a
catalog of available implementations or their features.  Readers
are advised to note that other implementations may exist.</t>

<t>According to <xref target="RFC7942"/>, "this will allow reviewers and working
groups to assign due consideration to documents that have the
benefit of running code, which may serve as evidence of valuable
experimentation and feedback that have made the implemented
protocols more mature.  It is up to the individual working groups
to use this information as they see fit".
<?line -22?></t>

<section anchor="adjaimewin"><name>ad.jaime.win</name>

<dl>
  <dt>Organization:</dt>
  <dd>
    <t>Ericsson</t>
  </dd>
  <dt>Implementation:</dt>
  <dd>
    <t><eref target="https://ad.jaime.win">https://ad.jaime.win</eref></t>
  </dd>
  <dt>Description:</dt>
  <dd>
    <t>A public AD instance deployed as a Cloudflare Worker with a Durable Object for persistent storage. Implements the registration, lookup, and soft-state lifecycle interfaces defined in this document. Source code is available at the GitHub repository linked from the deployment.</t>
  </dd>
  <dt>Level of Maturity:</dt>
  <dd>
    <t>Prototype</t>
  </dd>
  <dt>Coverage:</dt>
  <dd>
    <t>All features specified in this document: well-known URI discovery, agent registration (create, update, replace, delete), agent lookup with filtering and pagination, capability lookup with filtering and pagination, soft-state expiry, and RFC 9457 error responses.</t>
  </dd>
  <dt>Version Compatibility:</dt>
  <dd>
    <t>draft-jimenez-agent-directory-00</t>
  </dd>
  <dt>Licensing:</dt>
  <dd>
    <t>MIT</t>
  </dd>
  <dt>Contact:</dt>
  <dd>
    <t>Jaime Jimenez (jaime@iki.fi)</t>
  </dd>
</dl>

</section>
</section>
<section anchor="acknowledgments"><name>Acknowledgments</name>

<t>The AD design is directly based on the CoRE Resource Directory <xref target="RFC9176"/> by Christian Amsüss, Zach Shelby, Michael Koster, Carsten Bormann, and Peter van der Stok.</t>

</section>
<section anchor="mapping"><name>Mapping from CoRE RD to AD</name>

<t>The following table summarizes the conceptual mapping between CoRE RD concepts and their AD equivalents.</t>

<texttable>
      <ttcol align='left'>CoRE RD (RFC 9176)</ttcol>
      <ttcol align='left'>AD</ttcol>
      <ttcol align='left'>Notes</ttcol>
      <c>Endpoint (EP)</c>
      <c>Agent</c>
      <c>Software entity that registers</c>
      <c>Resource link</c>
      <c>Capability</c>
      <c>Structured JSON instead of link-format</c>
      <c>/.well-known/core</c>
      <c>/.well-known/ad</c>
      <c>Discovery entry point</c>
      <c>Registration (POST /rd)</c>
      <c>Registration (POST /ad/r)</c>
      <c>Same soft-state model</c>
      <c>Registration resource</c>
      <c>Registration resource</c>
      <c>Same lifecycle</c>
      <c>Lifetime (lt)</c>
      <c>Lifetime (lt)</c>
      <c>Same semantics, different default</c>
      <c>Endpoint name (ep)</c>
      <c>Agent name (agent)</c>
      <c>Same uniqueness constraint</c>
      <c>Resource lookup</c>
      <c>Lookup view=cap (GET /ad/l?view=cap)</c>
      <c>Structured query instead of link-format filter</c>
      <c>Endpoint lookup</c>
      <c>Lookup view=agent (GET /ad/l)</c>
      <c>Same pattern, unified endpoint</c>
      <c>Commissioning Tool (CT)</c>
      <c>Commissioning Tool (CT)</c>
      <c>Third-party registration</c>
      <c>application/link-format</c>
      <c>application/json</c>
      <c>Representation format</c>
</texttable>

</section>


  </back>

<!-- ##markdown-source:
H4sIADSv/GkAA+19e1fjVrLv//4UuvRaEzOxDU1IJ00mk0OAnjDpBwP05M6Z
k9vItmwUZMlHkqHdNOeT3f/uF7v1q6r9kmWaTjKZWWcd1koapK39qF273lW7
3+93rveizzqdOq2zZC/a2J8meR0dpmUyqotyudGJh8MyoTb7h51xMcrjGbUa
l/Gk7v+UzpI8edeP8Ul/bD7pb293OqO4Tqb0x15U1eNOVZdJPNuLjo/On3Vi
+p26m8+zlFqlRV51OtdJvkj2OlE0i9NsLzr/9pB+n6b15WK4F/0U00A02Na9
w3Y68aK+LMq9Tj+SWf4Z30V/lubUX1FO96KjMh1VVZHT34kMxt3/W3qVDiZp
p5MX5Yxmdc2zOX128NnTL5/or0+++Hxbf/3yyePP9denjx9v21+/MG2f7n7+
xV6nk+aTRn9Pnjzdtv09+Qy/HvcPB/O0yFK7pGpUXCcEPH05m9ObvB4t+/G4
Mg/zuIx/irO4H+f22WVRjPtpPk7mCf2Puoqn9dy8fLdcXmY6RJ7UN0V5VfUn
JYEKv5pWo0XaH+dVP+dJm+bxLM2n/TKpimyBLbMzK95lyfImzbI0nlX4sJjj
/3E6Nk3SpJ70b9JZRZ2Vo8uWxymmmk7SpMTLFwcn/dNkmhLOMACiyKDmi2Kc
ZNFBkdfJ2zo6KYu6GBVZZBpvSOO4nCb1XnRZ1/Nqb2tLkGgwKmZbM3w/ks/n
+vVWqV/zx2PC2r1oZ3vnc/pz/+VJ/9DfCjcTehWZg6IN3HzO5smIViO43T4p
hqrugZkJTzHJtyr6vNra/pL2dd5EiL5p3K/8QbbCye8KFB8EvAdMFkMN2mA3
SIutFrDt7DeAxWuoi75AzAy9BjI7se0+Ttu6f7cok/7+yXH/gHoTlGmMFZk9
jdJc2kfUPpL27cNmSVzmg1k6KouqmNS6F/1FtRXj+614nvZH/L3sHZYjv2Bf
rtPkJpzpE/rz6PSg/+X29m44Q/s0Oi8XFT2rKkGlqn1mSTqvBkl9mZTJYjYg
ErZ1dHxyhsfczeqw3Fn7AeIZl/cel9i8XoX+k06n3+9H8ZBex6O60zm/TKuI
eMJiBqCPk0maJ1VEU40aTCTq7h9u9qI4qgCrURLdYDkRT6fS3UpKfJmWkVCD
etmLRvE8HqZZWqdJRV/nY2oajy7jYZZERN/mRYrP8Vz6G2Upd2iOCzqcRcOl
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
2+J8CnHatDS1XLXe3T89dOxlnhZZ2rwyPbxlWAnFihXLySkBWsQkI9ABnmmw
1t6FT+bERmsZgcgiHHVjyD5gM4Z4zvSfozasl9ezyOYsgky5jJ4hsOrEU1J6
eqh4Yutff8vn0tBSnbwBRB6X8U9xFveJe+JGvf2XZ5uOybrC0Y2Sz7Lmk++P
oxFUlonUsrELtHelmEonTlk1NY39akBGGUBB4fBAGUsoreaX1nvmkmi2/PGH
Cj87xDQl9IktZEl8HabqKnQcXKBeoGoJLJLcu4VJw/oe12GrjyqhnbEC3Kif
rct7V+RqOcZN23E/MEXaidqzbymyBAgErTVc30kd7gqGFbFPdVO92qd/5vv8
XuX9g0vEHZxaMt3p/CnJUZy8P1+UXEnHnCZHytn/XS2I75EaNO5F3y+GJM8n
teqiaGzXsxlxTWv7wt454jnEJOLCVN3xbwNpvdFMrtlzlzSEFmkjKHrXxJsb
q62+5nk+8VvtzLlYr16CjbgcCCHvgO5w8x0kmA2UeDzq06O+PBLx1/pdfAnF
k/L1cJoCr9wt4bIM56UY29ZGpaMB8dzT2+SeZxrrLI7Pwu5xJ9Pz40F0dHrQ
/3J7e5e+Nr96pw5X3/LGBxNM5RKlI+Z7i5kwZg8ifB1kzLdtqVPaU7m4INOe
vapZ8vV7Zo6Gy2ka9JDQ4IpnYLcp0K2aRUG1Mjc7xZWGaTTYkk6VqxUX+H5V
lLT8jf5YqhvVBc9otXePHb0EN6L/k1LfoM2uFW3Jy5P+YRuDGsmlMfYbZEi3
2XV8i7gYc5FmEX4b3C9gNQXdZjV72Fu7BY7NautytlycAAegyOrMeGjCxzG8
7jjoBvgPvR2VyhAlTT2IqRRyWB/uWXB3ErMt/eK3RBAJyURjyj0eKrMdEtFC
vj86myBkmrciXYkRAuF9t1xeZoaf6P0LffuRKYPVXhXR3hVGi/Zq0LG5Nqjk
eGFqkio+S4wOl/QCAbImHVgPmyWGGLBozHXSVupf6v60zo+Q7vhkU+LME6mH
KklRPUEryZsOL1qRqoi2dqbnlm2UDmzc37laSLBRV7OlruBoOYJAKRZomZmr
R7muzmQjy3RNqUnndHRCmJE+ZpC8+KJZzrGgU72A4Gc/lYw9vi0sKGDK/UG4
00uSRl4qiPG8TNVIae7vpHGgNgssHC4aR5e9D96EXEgUsoT5cPix/qq3m1gg
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

-->

</rfc>

