<?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-01" 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="08"/>

    <area>Applications</area>
    
    

    <abstract>


<?line 72?>

<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 76?>

<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 (GET on the lookup endpoint)</c>
      <c>Resource lookup</c>
      <c>Capabilities embedded in the agent registration</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>) URI Template <xref target="RFC6570"/> for the lookup endpoint. The template variables indicate the supported query parameters.</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{?agent,protocol,cap_name,cap_type,tag,page,count}",
  "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 (<xref target="lookup-response"/>). 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 lookup endpoint for discovering registered agents. The lookup endpoint URI is obtained from the well-known response (<xref target="discovery"/>). All query parameters act as conjunctive filters: only agents matching all specified criteria are returned. A request with no filters returns all agents visible to the requesting client.</t>

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

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

{
  "agents": [
    {
      "agent": "cdn-cache-manager",
      "base": "https://agents.example.com/cdn-cache-manager",
      "description": "Manages CDN cache invalidation and prefetch policies",
      "protocols": ["a2a"],
      "capabilities": [
        {"name": "purge_by_tag", "type": "tool"},
        {"name": "prefetch_origins", "type": "tool"}
      ],
      "href": "/ad/r/4521"
    }
  ]
}
]]></artwork></figure>

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

<t>All filters use exact match on the registered value, with one exception: <spanx style="verb">agent</spanx> and <spanx style="verb">cap_name</spanx> support a single trailing <spanx style="verb">*</spanx> as a prefix-match operator (e.g., <spanx style="verb">cap_name=purge*</spanx> matches <spanx style="verb">purge_by_tag</spanx>). The <spanx style="verb">*</spanx> character <bcp14>MUST NOT</bcp14> appear anywhere else in these values, and agent and capability names <bcp14>MUST NOT</bcp14> contain a literal <spanx style="verb">*</spanx>. The AD <bcp14>MUST</bcp14> reject registrations whose agent or capability names contain <spanx style="verb">*</spanx> with 400 (Bad Request). No other glob or regular-expression syntax is supported.</t>

<dl newline="true">
  <dt>agent:</dt>
  <dd>
    <t>Filter by agent name. Trailing <spanx style="verb">*</spanx> for prefix match; exact match otherwise.</t>
  </dd>
  <dt>protocol:</dt>
  <dd>
    <t>Filter by interaction protocol. Matches when the given value appears in the agent's <spanx style="verb">protocols</spanx> array.</t>
  </dd>
  <dt>cap_name:</dt>
  <dd>
    <t>Filter by capability name. Trailing <spanx style="verb">*</spanx> for prefix match.</t>
  </dd>
  <dt>cap_type:</dt>
  <dd>
    <t>Filter by capability type (e.g., "tool", "skill").</t>
  </dd>
  <dt>tag:</dt>
  <dd>
    <t>Filter by capability tag. Matches when the given value appears in any capability's <spanx style="verb">tags</spanx> array.</t>
  </dd>
  <dt>page:</dt>
  <dd>
    <t>Page number (zero-based). Default: 0.</t>
  </dd>
  <dt>count:</dt>
  <dd>
    <t>Results per page. The AD <bcp14>MUST</bcp14> clamp values exceeding the <spanx style="verb">max_count</spanx> reported in the well-known response (<xref target="discovery"/>) to that maximum. Default: the AD's <spanx style="verb">max_count</spanx>.</t>
  </dd>
</dl>

<t>When multiple <spanx style="verb">cap_*</spanx> or <spanx style="verb">tag</spanx> filters are present, the AD <bcp14>MUST</bcp14> match agents that have at least one <em>single</em> capability satisfying all <spanx style="verb">cap_*</spanx> and <spanx style="verb">tag</spanx> filters jointly. For example, <spanx style="verb">cap_type=tool&amp;tag=search</spanx> matches agents with a capability that is both typed <spanx style="verb">tool</spanx> and tagged <spanx style="verb">search</spanx>, not agents that happen to have a <spanx style="verb">tool</spanx> capability and, separately, a capability with a <spanx style="verb">search</spanx> tag.</t>

<t>The AD <bcp14>MUST</bcp14> ignore unknown query parameters rather than returning an error.</t>

</section>
<section anchor="lookup-response"><name>Lookup Response</name>

<t>Each object in the <spanx style="verb">agents</spanx> array contains:</t>

<dl newline="true">
  <dt>agent:</dt>
  <dd>
    <t>The registered agent name.</t>
  </dd>
  <dt>base:</dt>
  <dd>
    <t>The agent's base URI.</t>
  </dd>
  <dt>description:</dt>
  <dd>
    <t>The agent's description, if registered.</t>
  </dd>
  <dt>protocols:</dt>
  <dd>
    <t>Interaction protocols the agent supports.</t>
  </dd>
  <dt>capabilities:</dt>
  <dd>
    <t>An array of capability summary objects, each with "name" and "type". Full details (descriptions, schemas, tags) are omitted to keep responses compact.</t>
  </dd>
  <dt>href:</dt>
  <dd>
    <t>The registration resource URI. Clients retrieve the full registration by sending GET to this URI (<xref target="registration-read"/>).</t>
  </dd>
</dl>

<t>This two-step pattern mirrors the RD's separation between endpoint lookup and resource lookup <xref target="RFC9176"/>: the lookup returns compact summaries with pointers; the client dereferences the pointer for full details.</t>

</section>
<section anchor="pagination"><name>Pagination</name>

<t>When more results exist beyond the current page, the AD includes a Link header <xref target="RFC8288"/> with <spanx style="verb">rel="next"</spanx>:</t>

<figure><artwork><![CDATA[
Link: </ad/l?cap_name=purge*&page=1>; rel="next"
]]></artwork></figure>

<t>An empty <spanx style="verb">agents</spanx> array with no <spanx style="verb">rel="next"</spanx> link indicates no results or end of results.</t>

</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="RFC6570">
  <front>
    <title>URI Template</title>
    <author fullname="J. Gregorio" initials="J." surname="Gregorio"/>
    <author fullname="R. Fielding" initials="R." surname="Fielding"/>
    <author fullname="M. Hadley" initials="M." surname="Hadley"/>
    <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
    <author fullname="D. Orchard" initials="D." surname="Orchard"/>
    <date month="March" year="2012"/>
    <abstract>
      <t>A URI Template is a compact sequence of characters for describing a range of Uniform Resource Identifiers through variable expansion. This specification defines the URI Template syntax and the process for expanding a URI Template into a URI reference, along with guidelines for the use of URI Templates on the Internet. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="6570"/>
  <seriesInfo name="DOI" value="10.17487/RFC6570"/>
</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="RFC8288">
  <front>
    <title>Web Linking</title>
    <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
    <date month="October" year="2017"/>
    <abstract>
      <t>This specification defines a model for the relationships between resources on the Web ("links") and the type of those relationships ("link relation types").</t>
      <t>It also defines the serialisation of such links in HTTP headers with the Link header field.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8288"/>
  <seriesInfo name="DOI" value="10.17487/RFC8288"/>
</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 619?>

<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 URI Template    |                            |
   |                              |                            |
   |  3. GET /ad/l?               |                            |
   |     cap_name=summarize ----->|                            |
   |  <--- 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{?agent,protocol,cap_name,cap_type,tag,page,count}",
  "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 expands the lookup URI Template with <spanx style="verb">cap_name=summarize</spanx>.</t>

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

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"
    }
  ]
}
]]></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 agents that expose tool capabilities, one per page.</t>

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

HTTP/1.1 200 OK
Content-Type: application/json
Link: </ad/l?protocol=mcp&cap_type=tool&count=1&page=1>; rel="next"

{
  "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"
    }
  ]
}
]]></artwork></figure>

<t>The client follows the <spanx style="verb">rel="next"</spanx> link:</t>

<figure><artwork><![CDATA[
GET /ad/l?protocol=mcp&cap_type=tool&count=1&page=1 HTTP/1.1
Host: ad.example.com

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

{
  "agents": [
    {
      "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>

<t>No <spanx style="verb">Link: rel="next"</spanx> header is present, indicating the end of results.</t>

</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 (URI Template lookup), agent registration (create, update, replace, delete), agent lookup with filtering and Link-header 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>Capabilities embedded in agent registration</c>
      <c>Capabilities are nested in the registration, not independent resources</c>
      <c>Endpoint lookup</c>
      <c>GET on the lookup endpoint</c>
      <c>Structured filters instead of link-format query</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:
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
B+GlX5aItwAA

-->

</rfc>

