<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.43 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-alla-agent-identity-document-02" category="info" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.35.0 -->
  <front>
    <title abbrev="Agent Identity Document">The Agent Identity Document: A Hosted, Accountable Public Record for AI Agents</title>
    <seriesInfo name="Internet-Draft" value="draft-alla-agent-identity-document-02"/>
    <author initials="F." surname="Alla" fullname="Femi Alla">
      <organization>knownAs.dev (Authecity Systems LLC)</organization>
      <address>
        <postal>
          <country>United States</country>
        </postal>
        <email>ops@knownas.dev</email>
      </address>
    </author>
    <date year="2026" month="October" day="31"/>
    <keyword>AI agents</keyword>
    <keyword>identity</keyword>
    <keyword>well-known URI</keyword>
    <keyword>DNS</keyword>
    <keyword>accountability</keyword>
    <abstract>
      <?line 65?>

<t>Autonomous software agents increasingly act on the public internet with no
name that a counterparty can check, no published party that answers for them,
and no way to learn that an operator has withdrawn an agent. This document
specifies the Agent Identity Document, a small JSON document served at a
well-known URI on a hostname assigned to one agent, and the practices an
identity provider follows when it hosts such names for operators who do not
run their own domain.</t>
      <t>The document records what the provider knows to be true (the hostname, its
service endpoints and the identity's lifecycle status) separately from what
the operator asserts (a description, a contact, a homepage, a public key), and
publishes the provider's dated, expiring checks on the operator rather than a
single trust level. Lifecycle status is distinct from availability. A
suspended identity publishes a deliberately minimal document. Every identity
is held by an accountable person or organisation; an agent is never itself an
account holder, and agents are never given authority over DNS.</t>
      <t>This document describes a practice in production at one provider. It is
published so that the format can be reviewed, implemented by others and mapped
onto related work, and it requests registration of a well-known URI suffix.</t>
    </abstract>
  </front>
  <middle>
    <?line 88?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Websites solved a version of this problem years ago. A certificate says who a
site is. A published security contact says where to report a problem. A
revoked certificate stops being trusted everywhere at once. Software agents
that call APIs, serve tools and receive webhooks on the open internet have
none of this by default. They borrow their operator's credentials, run from
addresses nobody can trace, and carry no name that another system can look
up.</t>
      <t>Several efforts address parts of the gap. The Agent Name Service <xref target="ANS0"/>
        <xref target="I-D.narajala-courtney-ansv2"/> anchors an agent to a domain name whose
control its operator proves, and lets the operator hold separately proven
identities such as a decentralised identifier or a Legal Entity Identifier,
sealed in a transparency log. The A2A Agent Card <xref target="A2A"/> describes an
agent's capabilities at <tt>/.well-known/agent-card.json</tt>. The Agent Discovery
Protocol <xref target="I-D.pro-adp-agent-discovery"/> describes discovery metadata.
Web Bot Auth <xref target="I-D.ietf-webbotauth-httpsig-protocol"/> lets an agent sign its
requests with a key a verifier can fetch.</t>
      <t>Each of these assumes the operator already has something: a domain, a
certificate, a key directory. Most people who build agents have none of
them, and have no wish to run DNS or PKI. This document describes the
missing layer for them: an identity <strong>hosted</strong> by a provider, created in one
request, with the name, TLS, service endpoints and a public record supplied
by the provider, and with a person or organisation accountable for it from
the first minute.</t>
      <t>It also records four design positions that distinguish this format from
related work:</t>
      <ol spacing="normal" type="1"><li>
          <t><strong>Facts and assertions are kept apart.</strong> The provider publishes what it
made true (name, endpoints, status) and labels what the operator merely
claims.</t>
        </li>
        <li>
          <t><strong>Checks on the operator are itemised, dated and expiring.</strong> There is no
level and no badge; each check says what was checked, how, by whom, when,
and until when.</t>
        </li>
        <li>
          <t><strong>Lifecycle is not liveness.</strong> <tt>status</tt> records the operator's and
provider's decisions about the identity. It never reports whether the
agent is online.</t>
        </li>
        <li>
          <t><strong>A person stays accountable.</strong> An identity belongs to an account held by
a natural person or legal entity. An agent acts under an account; it is
never one. Agents never hold DNS or registrar authority.</t>
        </li>
      </ol>
      <section anchor="conventions">
        <name>Conventions</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 BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

<t>The terms "identity provider" and "provider" mean the party that assigns
hostnames under a base domain it controls and serves Agent Identity
Documents for them. "Operator" means the account holder responsible for an
agent. "Relying party" means any system that reads an Agent Identity
Document to decide how to treat an agent.</t>
      </section>
    </section>
    <section anchor="model">
      <name>Model</name>
      <section anchor="hostnames">
        <name>Hostnames</name>
        <t>The provider controls a base domain. Each identity receives one <strong>identity
hostname</strong>, a single DNS label under the base domain:</t>
        <artwork><![CDATA[
<slug>.<base-domain>              e.g. alice.knownas.dev
]]></artwork>
        <t>Each service the identity offers receives a <strong>service hostname</strong> with the
service label <em>leading</em> the base domain, so that every hostname is exactly one
label below a name the provider can cover with a wildcard certificate:</t>
        <artwork><![CDATA[
<slug>.api.<base-domain>          an HTTP API
<slug>.mcp.<base-domain>          a Model Context Protocol endpoint
<slug>.hooks.<base-domain>        inbound webhooks
]]></artwork>
        <t>The nested form <tt>api.&lt;slug&gt;.&lt;base-domain&gt;</tt> is NOT used: a wildcard
certificate covers exactly one label, and the nested form would require a
certificate per identity.</t>
        <t>A <tt>&lt;slug&gt;</tt> <bcp14>MUST</bcp14> be a valid DNS label <xref target="RFC1035"/>: lowercase ASCII letters,
digits and hyphens, not beginning or ending with a hyphen. This specification
RECOMMENDS a minimum of 3 and a maximum of 63 characters. The provider <bcp14>MUST</bcp14>
refuse slugs that collide with its own infrastructure names (such as <tt>api</tt>,
<tt>mcp</tt>, <tt>hooks</tt>, <tt>www</tt>) and <bcp14>SHOULD</bcp14> refuse names that impersonate protected
brands, including when a brand appears as a word inside a longer slug
("combosquatting"). Refusal lists are the provider's; this document requires
only that they exist and are enforced before any DNS record is written.</t>
      </section>
      <section anchor="accounts-and-accountability">
        <name>Accounts and accountability</name>
        <t>An identity is created and held by an <strong>account</strong>. An account <bcp14>MUST</bcp14> be held by
a natural person or a legal entity, and the provider <bcp14>MUST</bcp14> verify at minimum
that the account holder controls the e-mail address used to create it. The
provider <bcp14>MAY</bcp14> require a minimum age.</t>
        <t>An agent <bcp14>MAY</bcp14> manage identities through a credential scoped to an account, and
<bcp14>MAY</bcp14> be the thing that creates an identity. An agent <bcp14>MUST NOT</bcp14> be able to create
an account. This keeps a person or organisation answerable for every
identity, however it was created.</t>
      </section>
      <section anchor="authority-over-dns">
        <name>Authority over DNS</name>
        <t>Agents <bcp14>MUST NOT</bcp14> receive credentials that can modify DNS. The provider's own
provisioning component <bcp14>SHOULD</bcp14> be limited, by the DNS service's access control
rather than by application code alone, to writing address records under the
base domain and nothing else.</t>
      </section>
    </section>
    <section anchor="the-agent-identity-document">
      <name>The Agent Identity Document</name>
      <section anchor="location">
        <name>Location</name>
        <t>The Agent Identity Document is a JSON document <xref target="RFC8259"/> served over HTTPS
<xref target="RFC9110"/> at the well-known URI <xref target="RFC8615"/></t>
        <artwork><![CDATA[
https://<identity-hostname>/.well-known/agent-identity.json
]]></artwork>
        <t>Implementations that predate this document serve the same content at
<tt>/.well-known/agent.json</tt>; see <xref target="compat"/>.</t>
        <t>The document <bcp14>MUST</bcp14> be served with <tt>Content-Type: application/json</tt>,
<tt>X-Content-Type-Options: nosniff</tt> and <tt>Access-Control-Allow-Origin: *</tt>, so
that a browser-based relying party can read it. The same headers <bcp14>MUST</bcp14> be sent
on a 404 response for an unallocated or deleted identity, so that a relying
party can distinguish "no such identity" from a network failure.</t>
        <t>A relying party <bcp14>MUST</bcp14> treat a 404 at this URI as "no identity is published
here", and <bcp14>MUST NOT</bcp14> treat it as evidence that the hostname was never
allocated: a deleted identity's document is removed before its DNS records
are, and a tombstoned name may still resolve to the provider for a time
(<xref target="provider-practices"/>).</t>
      </section>
      <section anchor="members">
        <name>Members</name>
        <t>The top level is a JSON object. Members fall into two classes, and the class
decides how a relying party may use the value.</t>
        <section anchor="provider-generated-members-facts">
          <name>Provider-generated members (facts)</name>
          <t>These are projected by the provider from its own records at render time.
They are never writable by the operator; a provider <bcp14>MUST</bcp14> ignore any attempt
to set them.</t>
          <dl>
            <dt><tt>version</tt>:</dt>
            <dd>
              <t>String. The schema version. This document defines <tt>"1"</tt>. <bcp14>REQUIRED</bcp14>.</t>
            </dd>
            <dt><tt>fqdn</tt>:</dt>
            <dd>
              <t>String. The identity hostname. <bcp14>REQUIRED</bcp14>.</t>
            </dd>
            <dt><tt>status</tt>:</dt>
            <dd>
              <t>String. The lifecycle status (<xref target="status"/>). <bcp14>REQUIRED</bcp14>.</t>
            </dd>
            <dt><tt>endpoints</tt>:</dt>
            <dd>
              <t>Object mapping an endpoint name to an absolute <tt>https</tt> URL. <bcp14>REQUIRED</bcp14> when
<tt>status</tt> is not <tt>suspended</tt>. The provider <bcp14>MUST</bcp14> include <tt>web</tt> (the identity
hostname) and <tt>manifest</tt> (this document's URL). It <bcp14>MUST</bcp14> include one member
per service the identity offers <strong>and that the provider routes to a live
origin</strong>, named <tt>api</tt>, <tt>mcp</tt> or <tt>webhooks</tt> (note: the member is
<tt>webhooks</tt>; its DNS label is <tt>hooks</tt>). A service hostname that is reserved
but not yet routed <bcp14>MUST NOT</bcp14> be listed, so that a relying party can tell
"this name is reserved" from "this service answers". Every value <bcp14>MUST</bcp14>
begin with <tt>https://</tt>.</t>
            </dd>
            <dt><tt>owner</tt>:</dt>
            <dd>
              <t>Object. The provider's published checks on the account holder and the
account's standing (<xref target="owner"/>). <bcp14>OPTIONAL</bcp14>; absent when the identity is
suspended, or when the account is not in good standing.</t>
            </dd>
          </dl>
        </section>
        <section anchor="operator-asserted-members-claims">
          <name>Operator-asserted members (claims)</name>
          <t>These are supplied by the operator. The provider validates their <em>form</em> and
<bcp14>MUST NOT</bcp14> present them as verified unless a check described in <xref target="owner"/>
covers them.</t>
          <dl>
            <dt><tt>name</tt>:</dt>
            <dd>
              <t>String, at most 120 characters. A display name; defaults to the slug.
<bcp14>REQUIRED</bcp14> when not suspended.</t>
            </dd>
            <dt><tt>description</tt>:</dt>
            <dd>
              <t>String, at most 500 characters. <bcp14>OPTIONAL</bcp14>.</t>
            </dd>
            <dt><tt>contact</tt>:</dt>
            <dd>
              <t>Object with an <tt>email</tt> member, at most 254 characters. <bcp14>OPTIONAL</bcp14>.</t>
            </dd>
            <dt><tt>homepage</tt>:</dt>
            <dd>
              <t>String, an absolute <tt>https</tt> URL of at most 2048 characters. <bcp14>OPTIONAL</bcp14>.</t>
            </dd>
            <dt><tt>public_key</tt>:</dt>
            <dd>
              <t>String, at most 4096 characters. An opaque key the operator publishes.
This document assigns it no verification semantics; see <xref target="signing"/>.
<bcp14>OPTIONAL</bcp14>.</t>
            </dd>
            <dt><tt>metadata</tt>:</dt>
            <dd>
              <t>Object of at most 20 members. Keys <bcp14>MUST</bcp14> match
<tt>^[a-z0-9][a-z0-9_.-]*$</tt> and be at most 40 characters; values <bcp14>MUST</bcp14> be
strings of at most 200 characters. <bcp14>OPTIONAL</bcp14>.</t>
            </dd>
          </dl>
          <t>All string values in the document <bcp14>MUST</bcp14> be free of C0 control characters
other than those JSON itself requires to be escaped, and the provider <bcp14>MUST</bcp14>
reject input that contains them. All URLs <bcp14>MUST</bcp14> use the <tt>https</tt> scheme; a
provider <bcp14>MUST</bcp14> reject <tt>http</tt>, <tt>javascript</tt>, <tt>data</tt> and every other scheme.
The provider <bcp14>MUST NOT</bcp14> dereference any URL an operator supplies.</t>
        </section>
      </section>
      <section anchor="status">
        <name>Lifecycle status</name>
        <t><tt>status</tt> takes one of the values below. It records decisions, not
reachability.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Meaning</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>pending</tt></td>
              <td align="left">Created; provisioning has not started</td>
            </tr>
            <tr>
              <td align="left">
                <tt>provisioning</tt></td>
              <td align="left">DNS records are being written</td>
            </tr>
            <tr>
              <td align="left">
                <tt>active</tt></td>
              <td align="left">Provisioned, and in good standing</td>
            </tr>
            <tr>
              <td align="left">
                <tt>suspended</tt></td>
              <td align="left">Withdrawn from public view by the operator or the provider; restorable</td>
            </tr>
            <tr>
              <td align="left">
                <tt>failed</tt></td>
              <td align="left">Provisioning did not complete</td>
            </tr>
            <tr>
              <td align="left">
                <tt>archived</tt></td>
              <td align="left">Retired by the operator; the name is kept</td>
            </tr>
            <tr>
              <td align="left">
                <tt>deleting</tt></td>
              <td align="left">Removal in progress; the document disappears shortly</td>
            </tr>
          </tbody>
        </table>
        <t>A relying party <bcp14>MUST NOT</bcp14> infer from <tt>active</tt> that the agent is reachable or
running, and a provider <bcp14>MUST NOT</bcp14> change <tt>status</tt> because an agent's own
endpoints went unreachable. An agent that sleeps at night keeps its name.
Availability, if a relying party needs it, is measured by the relying party.</t>
      </section>
      <section anchor="the-suspended-document">
        <name>The suspended document</name>
        <t>When <tt>status</tt> is <tt>suspended</tt>, the provider <bcp14>MUST</bcp14> serve exactly:</t>
        <artwork><![CDATA[
{ "version": "1", "status": "suspended", "fqdn": "alice.knownas.dev" }
]]></artwork>
        <t>No endpoints, no description, no contact, no owner block. The namespace stays
allocated and DNS stays in place, so the name cannot be taken by someone
else, but nothing the operator wrote continues to be advertised. Suspension
is therefore visible to every relying party within the document's cache
lifetime, which the provider <bcp14>SHOULD</bcp14> keep short (the reference implementation
uses 60 seconds).</t>
        <t>Suspension of an <strong>account</strong> <bcp14>MUST</bcp14> stop every credential under it and <bcp14>MUST</bcp14>
suspend every identity it holds.</t>
      </section>
      <section anchor="owner">
        <name>The owner block</name>
        <t>The <tt>owner</tt> member publishes the provider's checks on the account holder.
There is deliberately no level, score or badge. Each check is its own record:</t>
        <artwork><![CDATA[
"owner": {
  "verifications": [
    { "type": "email", "verified_at": "2026-09-21T14:02:11+00:00" },
    {
      "type": "domain",
      "value": "acme.example",
      "method": "dns-txt",
      "verifier": "knownas.dev",
      "verified_at": "2026-10-02T09:00:00+00:00",
      "expires_at": "2026-11-01T09:00:00+00:00"
    }
  ],
  "standing": { "account_since": "2026-09-21", "status": "active" }
}
]]></artwork>
        <t>Each member of <tt>verifications</tt> is an object with:</t>
        <dl>
          <dt><tt>type</tt>:</dt>
          <dd>
            <t>String. This document defines <tt>email</tt> (the account holder controlled the
sign-up mailbox), <tt>domain</tt> (the account holder controls a DNS name) and
<tt>github</tt> (the account holder controls a GitHub account; see below).
Further types, such as a check on a legal entity or a natural person, <bcp14>MAY</bcp14>
be defined; a relying party <bcp14>MUST</bcp14> ignore types it does not understand.</t>
          </dd>
          <dt><tt>verified_at</tt>:</dt>
          <dd>
            <t>String, an <xref target="RFC3339"/> timestamp. <bcp14>REQUIRED</bcp14>.</t>
          </dd>
          <dt><tt>value</tt>:</dt>
          <dd>
            <t>String. What was checked, where that is public (a domain name, a GitHub
login). For <tt>email</tt> the address itself <bcp14>MUST NOT</bcp14> be published. <bcp14>OPTIONAL</bcp14>.</t>
          </dd>
          <dt><tt>method</tt>, <tt>verifier</tt>:</dt>
          <dd>
            <t>Strings naming how and by whom the check was made. <bcp14>OPTIONAL</bcp14>.</t>
          </dd>
          <dt><tt>expires_at</tt>:</dt>
          <dd>
            <t>String, an <xref target="RFC3339"/> timestamp after which the check <bcp14>MUST</bcp14> be treated as
stale. <bcp14>OPTIONAL</bcp14>; a check without it does not expire.</t>
          </dd>
        </dl>
        <t>A <tt>github</tt> check says that the account holder authorized the provider, as
the GitHub account named in <tt>value</tt>, at <tt>verified_at</tt>; <tt>method</tt> is <tt>oauth</tt>.
The provider binds the account's numeric id, which GitHub keeps fixed, and
publishes its login, which the holder can change: <tt>value</tt> is the login as
the provider last read it, and a reader that resolves the login on GitHub
<bcp14>MAY</bcp14> find it re-used by someone else between a rename and the provider's
next read. <tt>expires_at</tt> bounds how stale the login can be, as a check is
renewed only by re-reading the account by id. A provider publishes the
login only when the account holder asked for the check; it <bcp14>MUST NOT</bcp14> publish
an email address, name or account age read from GitHub.</t>
        <t><tt>standing</tt> carries <tt>account_since</tt> (an <xref target="RFC3339"/> full-date) and <tt>status</tt>,
which is <tt>active</tt> whenever the block is present; a provider <bcp14>MUST</bcp14> omit the
whole <tt>owner</tt> block rather than publish any other standing.</t>
        <t>Relying parties <bcp14>MUST</bcp14> interpret checks by type and date. The absence of a
check is the absence of information and <bcp14>MUST NOT</bcp14> be presented as a
negative finding; many legitimate operators cannot or will not complete
deeper checks. Human-facing presentations <bcp14>SHOULD</bcp14> say what was checked
("owner controls the domain name acme.example") and <bcp14>SHOULD NOT</bcp14> say
"verified" or "trusted" without an object.</t>
      </section>
    </section>
    <section anchor="provider-practices">
      <name>Provider practices</name>
      <t>A document is only as good as the namespace behind it. A provider that
serves Agent Identity Documents:</t>
      <ol spacing="normal" type="1"><li>
          <t><strong>Writes explicit DNS records, never a wildcard.</strong> An unallocated name
<bcp14>MUST</bcp14> return NXDOMAIN. A wildcard would make <tt>paypal.&lt;base-domain&gt;</tt>
resolve.</t>
        </li>
        <li>
          <t><strong>Restricts certificate issuance</strong> for the base domain with CAA
<xref target="RFC8659"/> to the authority it uses, so that no one else can obtain a
certificate for a hosted name.</t>
        </li>
        <li>
          <t><strong>Removes the document before the DNS records</strong> when an identity is
deleted, and changes only the document on suspension. Everything the
public can read goes through the document; only reachability goes through
DNS, and DNS removal may be slow.</t>
        </li>
        <li>
          <t><strong>Tombstones released names</strong> for a cooling period
(the reference implementation uses 30 days) during which no new account
may take the name, while the previous holder may reclaim it at once.
A leftover record during that period points only at the provider, which
answers 404.</t>
        </li>
        <li>
          <t><strong>Keeps an append-only audit trail</strong> of every change to every identity,
recording whether a person or an agent made it. The application that
serves the API <bcp14>MUST NOT</bcp14> be able to alter or delete entries.</t>
        </li>
        <li>
          <t><strong>Enforces quotas</strong> on identities per account and per day, and on
failure <bcp14>SHOULD</bcp14> suspend rather than bill.</t>
        </li>
      </ol>
    </section>
    <section anchor="relationship-to-other-work">
      <name>Relationship to other work</name>
      <section anchor="a2a-agent-cards">
        <name>A2A Agent Cards</name>
        <t>An A2A card at <tt>/.well-known/agent-card.json</tt> <xref target="A2A"/> declares that a URL
speaks A2A over a stated binding. A provider <bcp14>MUST NOT</bcp14> generate a card from
the Agent Identity Document alone, because it does not know what the
operator's server speaks. A provider <bcp14>MAY</bcp14> serve a card the operator declares,
beside this document, and when it does the <tt>endpoints</tt> object <bcp14>SHOULD</bcp14> carry
an <tt>agent_card</tt> member pointing to it. A suspended identity <bcp14>MUST</bcp14> serve no
card.</t>
      </section>
      <section anchor="signing">
        <name>Signed requests</name>
        <t>Where an agent signs its requests with HTTP Message Signatures <xref target="RFC9421"/> as
profiled by Web Bot Auth <xref target="I-D.ietf-webbotauth-httpsig-protocol"/>, the natural
<tt>Signature-Agent</tt> value is the identity hostname as an <tt>https</tt> origin, and
the key directory is served by the provider at
<tt>/.well-known/http-message-signatures-directory</tt> on that origin. A verifier
that resolves the signature then already knows where the Agent Identity
Document is. When an identity is suspended, the provider <bcp14>SHOULD</bcp14> serve an
empty key set at that directory with a success status, so that a verifier
that re-fetches replaces its cached keys rather than retaining them; the
reference implementation does so. The <tt>public_key</tt> member of this document
is unrelated to that directory and carries no verification semantics of its
own.</t>
      </section>
      <section anchor="hosted-key-directories">
        <name>Hosted key directories</name>
        <t><xref target="I-D.singh-webbotauth-hosted-directories"/> describes the hosted
(multi-tenant) key directory model, in which a provider serves key
directories for many agent operators who keep their own private keys. A
provider following this document in that model serves one directory per
identity hostname (the first remedy in Section 4 of that document), and the
Agent Identity Document on the same hostname is where the provider
publishes, per agent, the operator verification practices that its
Section 8 asks a hosted directory operator to make legible.</t>
      </section>
      <section anchor="signature-agent-cards">
        <name>Signature Agent Cards</name>
        <t><xref target="I-D.meunier-webbotauth-registry"/> defines the Signature Agent Card, in
which a signature agent describes itself: its identity, purpose, rate
expectations and keys. An Agent Identity Document differs in who speaks.
Apart from the operator-asserted members, its statements (the lifecycle
status and the checks in <tt>owner</tt>) are the provider's, about an operator who
may hold no domain and no key. A provider <bcp14>MAY</bcp14> serve both on the identity
hostname; neither replaces the other.</t>
      </section>
      <section anchor="client-classification">
        <name>Client classification</name>
        <t><xref target="I-D.jovancevic-vicdm"/> classifies a client by the strength of the evidence
a server can verify about it. An Agent Identity Document is an input to such
a classification, not a class: it carries no grade, only itemised, dated
checks. A bare claim to an identity hostname is no stronger than any other
unverified claim; a request signed with a key published in the identity's
directory (<xref target="signing"/>) gives a verifier evidence it can check; and on
suspension the provider empties that directory, so the agent's claims fall
back to unverified at the next fetch.</t>
      </section>
      <section anchor="domain-anchored-identity">
        <name>Domain-anchored identity</name>
        <t>ANS <xref target="ANS0"/> <xref target="I-D.narajala-courtney-ansv2"/> anchors every agent
registration to one fully qualified domain name whose control the operator
proves at registration time, and lets an operator hold Verified Identities
(a <tt>did:web</tt> or <tt>did:key</tt> identifier, a Legal Entity Identifier or an ENS
name), each proven by a control proof, sealed in a transparency log and
linked to the operator's agents. An operator with a Legal Entity Identifier
is therefore anchored to it directly, not through optional metadata. This
document is complementary: a hosted identity is for operators who have no
domain, and an operator who later proves control of a domain publishes that
as a <tt>domain</tt> check in the owner block. Nothing here prevents a provider
from also issuing ANS records.</t>
        <t>The lifecycles differ in one respect worth naming. ANS has a soft
<tt>DEPRECATED</tt> state for a superseded version of an agent and the terminal
states <tt>REVOKED</tt> and <tt>EXPIRED</tt>; it has no reversible suspension by the
operator or the registry. The <tt>suspended</tt> status of this document
(<xref target="status"/>) is reversible by design, and a relying party <bcp14>MUST NOT</bcp14> read it
as terminal.</t>
        <t>A provider signature over the Agent Identity Document, and where the
history of a document's changes would be recorded so that an unauthorised
change is detectable afterwards, is under discussion with the ANS project
and is not specified in this revision.</t>
      </section>
      <section anchor="compat">
        <name>Compatibility</name>
        <t>The reference implementation has served this document at
<tt>/.well-known/agent.json</tt> since 2026. That path was also used by A2A before
its version 0.3.0 and has been proposed for other formats. Providers
<bcp14>SHOULD</bcp14> serve this document at <tt>/.well-known/agent-identity.json</tt> and <bcp14>MAY</bcp14>
continue to serve it at <tt>/.well-known/agent.json</tt> during a transition; a
relying party <bcp14>SHOULD</bcp14> try the former first. A provider that continues to
serve the old path <bcp14>SHOULD</bcp14> mark it with the <tt>Deprecation</tt> <xref target="RFC9745"/> and
<tt>Sunset</tt> <xref target="RFC8594"/> header fields and a <tt>Link</tt> header field with the
<tt>successor-version</tt> relation <xref target="RFC5829"/> pointing at the new path; the
reference implementation does so.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t><strong>Operator-asserted members are claims.</strong> A relying party <bcp14>MUST NOT</bcp14> treat
<tt>contact</tt>, <tt>homepage</tt>, <tt>description</tt>, <tt>public_key</tt> or <tt>metadata</tt> as verified
because they are served over HTTPS from the provider's domain. Only the
checks in <tt>owner</tt> are the provider's statements, and each is bounded by its
dates.</t>
      <t><strong>The provider is a trust anchor.</strong> A hosted identity is only as trustworthy
as the provider's own controls: who may create accounts, how names are
policed, how suspension is applied, and whether the audit trail can be
altered. <xref target="provider-practices"/> lists the minimum. Relying parties <bcp14>SHOULD</bcp14>
form a view of a provider as they do of a certificate authority.</t>
      <t><strong>Caching bounds suspension.</strong> A relying party that caches the document for
longer than the provider's <tt>Cache-Control</tt> may keep trusting a suspended
identity. Providers <bcp14>SHOULD</bcp14> keep the lifetime short; relying parties making
consequential decisions <bcp14>SHOULD</bcp14> re-fetch at decision time.</t>
      <t><strong>The document is a surface for injection.</strong> It is operator-controlled
content served from a provider hostname. Length caps, control-character
rejection and the <tt>https</tt>-only rule exist so that a document cannot carry a
<tt>javascript:</tt> link or terminal escape into a relying party's logs or UI.
Relying parties <bcp14>MUST</bcp14> still treat every string as untrusted data.</t>
      <t><strong>Identity is not intent.</strong> A deliberately malicious operator can decline to
identify an agent at all. This format changes the default for responsible
operators and makes anonymous agent traffic stand out; it does not stop an
attacker.</t>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>The document publishes: a hostname, endpoints, a status, the operator's
chosen descriptive text, and the provider's checks. For an <tt>email</tt> check the
address is not published, only that a check occurred and when. For a
<tt>domain</tt> check the domain name is published, since control of a public name
is itself public. For a <tt>github</tt> check the login is published, a pseudonym
by GitHub's own design, and only because the account holder asked; nothing
else read from GitHub is published. <tt>account_since</tt> reveals when the account
was created and nothing else about the holder. A provider <bcp14>MUST</bcp14> let an
account holder export and erase their data, and <bcp14>MUST</bcp14> remove an identity's
document promptly on deletion; what the append-only audit trail retains is
the provider's documented retention decision.</t>
      <t>Where an identity also signs its requests (<xref target="signing"/>), each signed request
names the identity hostname, so receivers can recognise that agent's
requests and correlate them across origins, whatever key it uses (see
Section 7.1 of <xref target="I-D.ietf-webbotauth-httpsig-protocol"/>). When the account
holder is a natural person, a provider <bcp14>SHOULD</bcp14> tell them so before enabling
signing, and <bcp14>SHOULD NOT</bcp14> publish the person's name in the document unless
they put it in operator-asserted text themselves.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>IANA is requested to register the following well-known URI suffix in the
"Well-Known URIs" registry <xref target="RFC8615"/>:</t>
      <dl>
        <dt>URI suffix:</dt>
        <dd>
          <t>agent-identity.json</t>
        </dd>
        <dt>Change controller:</dt>
        <dd>
          <t>Authecity Systems LLC, until a standards body adopts the format</t>
        </dd>
        <dt>Specification document:</dt>
        <dd>
          <t>This document</t>
        </dd>
        <dt>Status:</dt>
        <dd>
          <t>provisional</t>
        </dd>
        <dt>Related information:</dt>
        <dd>
          <t>The JSON Schema and worked examples are maintained at the repository
referenced in <xref target="KNOWNAS"/>.</t>
        </dd>
      </dl>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="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">
          <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>
        <reference anchor="RFC8259">
          <front>
            <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
            <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
            <date month="December" year="2017"/>
            <abstract>
              <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
              <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="90"/>
          <seriesInfo name="RFC" value="8259"/>
          <seriesInfo name="DOI" value="10.17487/RFC8259"/>
        </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="RFC3339">
          <front>
            <title>Date and Time on the Internet: Timestamps</title>
            <author fullname="G. Klyne" initials="G." surname="Klyne"/>
            <author fullname="C. Newman" initials="C." surname="Newman"/>
            <date month="July" year="2002"/>
            <abstract>
              <t>This document defines a date and time format for use in Internet protocols that is a profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3339"/>
          <seriesInfo name="DOI" value="10.17487/RFC3339"/>
        </reference>
        <reference anchor="RFC1035">
          <front>
            <title>Domain names - implementation and specification</title>
            <author fullname="P. Mockapetris" initials="P." surname="Mockapetris"/>
            <date month="November" year="1987"/>
            <abstract>
              <t>This RFC is the revised specification of the protocol and format used in the implementation of the Domain Name System. It obsoletes RFC-883. This memo documents the details of the domain name client - server communication.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="13"/>
          <seriesInfo name="RFC" value="1035"/>
          <seriesInfo name="DOI" value="10.17487/RFC1035"/>
        </reference>
        <reference anchor="RFC8659">
          <front>
            <title>DNS Certification Authority Authorization (CAA) Resource Record</title>
            <author fullname="P. Hallam-Baker" initials="P." surname="Hallam-Baker"/>
            <author fullname="R. Stradling" initials="R." surname="Stradling"/>
            <author fullname="J. Hoffman-Andrews" initials="J." surname="Hoffman-Andrews"/>
            <date month="November" year="2019"/>
            <abstract>
              <t>The Certification Authority Authorization (CAA) DNS Resource Record allows a DNS domain name holder to specify one or more Certification Authorities (CAs) authorized to issue certificates for that domain name. CAA Resource Records allow a public CA to implement additional controls to reduce the risk of unintended certificate mis-issue. This document defines the syntax of the CAA record and rules for processing CAA records by CAs.</t>
              <t>This document obsoletes RFC 6844.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8659"/>
          <seriesInfo name="DOI" value="10.17487/RFC8659"/>
        </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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC9421">
          <front>
            <title>HTTP Message Signatures</title>
            <author fullname="A. Backman" initials="A." role="editor" surname="Backman"/>
            <author fullname="J. Richer" initials="J." role="editor" surname="Richer"/>
            <author fullname="M. Sporny" initials="M." surname="Sporny"/>
            <date month="February" year="2024"/>
            <abstract>
              <t>This document describes a mechanism for creating, encoding, and verifying digital signatures or message authentication codes over components of an HTTP message. This mechanism supports use cases where the full HTTP message may not be known to the signer and where the message may be transformed (e.g., by intermediaries) before reaching the verifier. This document also describes a means for requesting that a signature be applied to a subsequent HTTP message in an ongoing HTTP exchange.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9421"/>
          <seriesInfo name="DOI" value="10.17487/RFC9421"/>
        </reference>
        <reference anchor="RFC9745">
          <front>
            <title>The Deprecation HTTP Response Header Field</title>
            <author fullname="S. Dalal" initials="S." surname="Dalal"/>
            <author fullname="E. Wilde" initials="E." surname="Wilde"/>
            <date month="March" year="2025"/>
            <abstract>
              <t>The Deprecation HTTP response header field is used to signal to consumers of a resource (identified by a URI) that the resource will be or has been deprecated. Additionally, the deprecation link relation can be used to link to a resource that provides further information about planned or existing deprecation. It may also provide ways in which client application developers can best manage deprecation.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9745"/>
          <seriesInfo name="DOI" value="10.17487/RFC9745"/>
        </reference>
        <reference anchor="RFC8594">
          <front>
            <title>The Sunset HTTP Header Field</title>
            <author fullname="E. Wilde" initials="E." surname="Wilde"/>
            <date month="May" year="2019"/>
            <abstract>
              <t>This specification defines the Sunset HTTP response header field, which indicates that a URI is likely to become unresponsive at a specified point in the future. It also defines a sunset link relation type that allows linking to resources providing information about an upcoming resource or service sunset.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8594"/>
          <seriesInfo name="DOI" value="10.17487/RFC8594"/>
        </reference>
        <reference anchor="RFC5829">
          <front>
            <title>Link Relation Types for Simple Version Navigation between Web Resources</title>
            <author fullname="A. Brown" initials="A." surname="Brown"/>
            <author fullname="G. Clemm" initials="G." surname="Clemm"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="April" year="2010"/>
            <abstract>
              <t>This specification defines a set of link relation types that may be used on Web resources for navigation between a resource and other resources related to version control, such as past versions and working copies. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5829"/>
          <seriesInfo name="DOI" value="10.17487/RFC5829"/>
        </reference>
        <reference anchor="I-D.ietf-webbotauth-httpsig-protocol">
          <front>
            <title>HTTP Message Signatures for automated traffic</title>
            <author fullname="Thibault Meunier" initials="T." surname="Meunier">
              <organization>Cloudflare</organization>
            </author>
            <author fullname="Sandor Major" initials="S." surname="Major">
              <organization>Google</organization>
            </author>
            <date day="29" month="October" year="2026"/>
            <abstract>
              <t>   This document describes a protocol for identifying automated traffic
   using [HTTP-MESSAGE-SIGNATURES].  The goal is to allow automated HTTP
   clients to cryptographically sign outbound requests, allowing HTTP
   servers to verify their identity with confidence.

   It defines the Signature-Agent header field for in-band key
   discovery, a key directory format based on JWKS, and a well-known URI
   at which that directory is served.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-webbotauth-httpsig-protocol-01"/>
        </reference>
        <reference anchor="I-D.singh-webbotauth-hosted-directories">
          <front>
            <title>Hosted Key Directories for Web Bot Auth</title>
            <author fullname="Shivdeep Singh" initials="S." surname="Singh">
              <organization>Airlock Protocol</organization>
            </author>
            <date day="19" month="July" year="2026"/>
            <abstract>
              <t>   Web Bot Auth authenticates automated clients to origins using HTTP
   Message Signatures, with verification keys published in a key
   directory at a well-known URI.  Current drafts assume that each agent
   operator hosts its own key directory.  A large and growing population
   of agents is operated by individuals and small organizations for whom
   hosting a directory is impractical, and whose legitimate traffic is
   otherwise indistinguishable from abusive automation.

   This document describes the hosted (multi-tenant) key directory
   deployment model, in which a registry operator publishes key
   directories on behalf of many independent agent operators while the
   operators retain exclusive custody of their private keys.  It
   analyzes principal mapping, proof of key possession, freshness, and
   accountability in this model; reports interoperability observations
   from an independent implementation; and offers operational guidance
   for hosted directory operators and for verifiers.  It is intended as
   input to the Web Bot Auth working group's operational and deployment
   guidance.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-singh-webbotauth-hosted-directories-00"/>
        </reference>
        <reference anchor="I-D.meunier-webbotauth-registry">
          <front>
            <title>Registry and Signature Agent card for Web bot auth</title>
            <author fullname="Maxime Guerreiro" initials="M." surname="Guerreiro">
              <organization>Cloudflare</organization>
            </author>
            <author fullname="Ulas Kirazci" initials="U." surname="Kirazci">
              <organization>Amazon</organization>
            </author>
            <author fullname="Thibault Meunier" initials="T." surname="Meunier">
              <organization>Cloudflare</organization>
            </author>
            <date day="27" month="October" year="2026"/>
            <abstract>
              <t>   This document defines the "Signature Agent Card", a JSON metadata
   document that a signature agent using HTTP Message Signatures for
   bots publishes to describe itself: its identity, purpose, rate
   expectations, and cryptographic keys.  Its parameters are drawn from
   the OAuth Dynamic Client Registration Metadata registry, the same
   namespace used by OAuth Client ID Metadata Documents, extended with a
   single web_bot_auth object.  This document registers that object with
   IANA and establishes a registry for its members.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-meunier-webbotauth-registry-04"/>
        </reference>
        <reference anchor="I-D.jovancevic-vicdm">
          <front>
            <title>Verifiable Identity Claims and Delegation Model (VICDM)</title>
            <author fullname="Srecko Jovancevic" initials="S." surname="Jovancevic">
              <organization>SKGO, IKT Support</organization>
            </author>
            <date day="28" month="August" year="2026"/>
            <abstract>
              <t>   This document defines a conceptual framework for handling identity
   assertions in application-layer protocols. It introduces a model
   in which identity on the Internet is optional, but any asserted
   identity MUST be verifiable.

   It further defines a delegation mechanism that allows entities to
   authorize third-party infrastructure to act on their behalf in a
   verifiable and transparent manner.

   The goal is to reduce identity misrepresentation while fully
   preserving the ability for anonymous and pseudonymous interaction.
   This document does not define a protocol; it defines the principles
   that protocol specifications SHOULD follow when addressing agent
   identity.

   A concrete protocol implementation of these principles is defined
   in [SAIP].

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-jovancevic-vicdm-10"/>
        </reference>
        <reference anchor="I-D.narajala-courtney-ansv2">
          <front>
            <title>Agent Name Service v2 (ANS): A Domain-Anchored Identity Layer for Autonomous AI Agents</title>
            <author fullname="Scott Courtney" initials="S." surname="Courtney">
              <organization>GoDaddy</organization>
            </author>
            <author fullname="Vineeth Sai Narajala" initials="V. S." surname="Narajala">
              <organization>OWASP</organization>
            </author>
            <author fullname="Ken Huang" initials="K." surname="Huang">
              <organization>DistributedApps.ai</organization>
            </author>
            <author fullname="Idan Habler" initials="I." surname="Habler">
              <organization>OWASP</organization>
            </author>
            <author fullname="Akram Sheriff" initials="A." surname="Sheriff">
              <organization>Cisco Systems</organization>
            </author>
            <date day="26" month="October" year="2026"/>
            <abstract>
              <t>   Autonomous AI agents now invoke one another across organizational
   boundaries over protocols such as the Model Context Protocol (MCP)
   and Agent2Agent (A2A).  A relying party has no interoperable way to
   bind a discoverable agent endpoint to the holder of its domain
   (optionally verified as a legal entity), a specific software release,
   and an auditable issuance history.  This document specifies the
   architecture of Agent Name Service version 2 (ANS v2), an identity
   layer, anchored in DNS domains, that binds an agent endpoint to its
   domain holder, its release, and its history.  ANS v2 composes systems
   the Internet already runs (the DNS with DNSSEC; the Web PKI, with
   DANE where operators publish it; and an append-only transparency log)
   and introduces no new root of trust.

   Every ANS v2 agent carries a versioned name rooted in a DNS domain
   that the registrant controls.  When a registrant registers an agent,
   the Registration Authority (RA) checks the registrant's control of
   that domain, can issue an Identity Certificate that binds the
   versioned name to the agent's key, and submits a signed registration
   record to a Merkle-tree transparency log.  Under the current
   specifications, a new version is a new registration and a new log
   entry, so a verifier can pin an agent to a specific release.  Any
   third party can detect a rewritten log by computing, from the log's
   public tiles, a consistency proof between two of its signed
   checkpoints.

   For discovery, ANS v2 adopts the SVCB records and SvcParams of DNS
   for AI Discovery (DNS-AID) as its default format, and keeps an older
   TXT-based format only as an opt-in profile.  Beyond those discovery
   records, ANS v2 specifies one DNS record, an "_ans-badge" TXT record
   that points to the agent's transparency-log entry; the log seals the
   fingerprint of the agent server's certificate, and operators can add
   DANE records.  With these records, a verifier resolves an agent,
   authenticates its TLS endpoint, and confirms that the presented name,
   version, and key match a logged registration.

   This document also states a threat model covering agent
   impersonation, DNS spoofing, CA and Registration Authority
   compromise, version rollback, agent card tampering, and log
   rewriting, and names what each ANS check does and does not prevent.
   The reference registry, transparency log, verifier, JSON Schemas,
   SDKs, and CLI are open source.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-narajala-courtney-ansv2-02"/>
        </reference>
        <reference anchor="I-D.pro-adp-agent-discovery">
          <front>
            <title>Agent Discovery Protocol (ADP) v1.1 -- Well-Known Metadata and Interaction Layer</title>
            <author fullname="Bin Lian" initials="B." surname="Lian">
              <organization>aipair.ai</organization>
            </author>
            <date day="23" month="June" year="2026"/>
            <abstract>
              <t>   This document defines the Agent Discovery Protocol (ADP) v1.1, a

   layered protocol for discovering, verifying, and interacting with AI

   Agents on the Internet.  ADP delegates DNS discovery to DNS-AID (SVCB

   records) and defines a Well-Known JSON metadata format, an

   Ed25519-based identity model, and the Agent Gateway Protocol (AGP)

   for real-time WebSocket messaging.  The protocol is designed to be

   decentralized, standards-based, and incremental — clients escalate

   from DNS to HTTP to WebSocket only as needed.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-pro-adp-agent-discovery-02"/>
        </reference>
        <reference anchor="ANS0" target="https://github.com/agentnameservice/ans-registry/blob/1e005c6eaf51759308932b96d76b1d5cb49e3e31/spec/ans-0-identity-anchor.md">
          <front>
            <title>ANS-0: Identity (Agent Name Service specification, draft v1.0, version 0.2.0)</title>
            <author>
              <organization>Agent Name Service project</organization>
            </author>
            <date year="2026" month="August" day="20"/>
          </front>
        </reference>
        <reference anchor="A2A" target="https://a2a-protocol.org/latest/specification/">
          <front>
            <title>Agent2Agent (A2A) Protocol Specification</title>
            <author>
              <organization>The Linux Foundation</organization>
            </author>
            <date year="2025"/>
          </front>
        </reference>
        <reference anchor="KNOWNAS" target="https://knownas.dev/">
          <front>
            <title>knownAs.dev: internet identity for AI agents (reference implementation)</title>
            <author>
              <organization>Authecity Systems LLC</organization>
            </author>
            <date year="2026"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 614?>

<section anchor="example-documents">
      <name>Example documents</name>
      <t>An active identity with two services and a verified domain:</t>
      <artwork><![CDATA[
{
 "version": "1",
 "name": "Ada",
 "status": "active",
 "fqdn": "ada.knownas.dev",
 "endpoints": {
  "web": "https://ada.knownas.dev",
  "manifest": "https://ada.knownas.dev/.well-known/agent-identity.json",
  "api": "https://ada.api.knownas.dev",
  "mcp": "https://ada.mcp.knownas.dev"
 },
 "description": "Answers questions about the Acme product catalogue.",
 "owner": {
  "verifications": [
   { "type": "email", "verified_at": "2026-09-21T14:02:11+00:00" },
   { "type": "domain", "value": "acme.example", "method": "dns-txt",
     "verifier": "knownas.dev",
     "verified_at": "2026-10-02T09:00:00+00:00",
     "expires_at": "2026-11-01T09:00:00+00:00" }
  ],
  "standing": { "account_since": "2026-09-21", "status": "active" }
 },
 "contact": { "email": "agents@acme.example" },
 "homepage": "https://acme.example/ada",
 "metadata": { "framework": "langgraph" }
}
]]></artwork>
      <t>The same identity, suspended:</t>
      <artwork><![CDATA[
{ "version": "1", "status": "suspended", "fqdn": "ada.knownas.dev" }
]]></artwork>
      <t>The hostnames are the reference implementation's real base domain rather
than the reserved example domains of RFC 2606, because the document
describes a practice in production there.</t>
    </section>
    <section anchor="changes-since-01">
      <name>Changes since -01</name>
      <ul spacing="normal">
        <li>
          <t>The source no longer declares a submission type: the document has no
stream.</t>
        </li>
        <li>
          <t>The Agent Name Service is described per ANS-0: an agent is anchored to a
domain name whose control is proven, and an operator may hold separately
proven identities (a decentralised identifier, a Legal Entity Identifier,
an ENS name). ANS-0 is cited beside the Internet-Draft, which has
expired. The lifecycle difference (ANS has no reversible suspension) is
named.</t>
        </li>
        <li>
          <t>New subsections under "Relationship to other work": "Hosted key
directories" (draft-singh-webbotauth-hosted-directories), "Signature
Agent Cards" (draft-meunier-webbotauth-registry) and "Client
classification" (draft-jovancevic-vicdm).</t>
        </li>
        <li>
          <t>"Domain-anchored identity" notes that a provider signature over the
document, and a record of its change history, are under discussion with
the ANS project and not specified here.</t>
        </li>
        <li>
          <t>"Signed requests": on suspension the provider <bcp14>SHOULD</bcp14> serve an empty key
set with a success status.</t>
        </li>
        <li>
          <t>"Compatibility": the old path <bcp14>SHOULD</bcp14> carry <tt>Deprecation</tt>, <tt>Sunset</tt> and a
<tt>successor-version</tt> link.</t>
        </li>
        <li>
          <t>The owner block defines a third check type, <tt>github</tt>, and the privacy
considerations say what it publishes.</t>
        </li>
        <li>
          <t>"Privacy Considerations": signed requests make an agent recognisable
across origins; a natural person <bcp14>SHOULD</bcp14> be told before signing is
enabled.</t>
        </li>
      </ul>
    </section>
    <section anchor="changes-since-00">
      <name>Changes since -00</name>
      <ul spacing="normal">
        <li>
          <t><tt>endpoints</tt> lists a service only while the provider routes it to a
live origin; a reserved but unrouted service hostname is not listed
(previously "one member per service hostname the identity owns").</t>
        </li>
      </ul>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>The design positions here were worked out as architecture decision records
for the reference implementation <xref target="KNOWNAS"/> between September and October
2026. The author thanks the people who tested early versions.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA619/5LbRpLm//UUdfRFqLuPpNitH7bYjtnlSvK6z7KkU8vj
mZjwmSBR7IYFAjQAdpsra57lnuWe7PLLzCoUQFL2bawjbJMgUKjKysr88meP
RiPTZE3upnbw/tbZ2Y0rGnuV0n+zZmdflMvtmj5P7cx+W9aNS4d2tlyW26JJ
Frmzb7eLPFvad25ZVqldlZWdXckY9cAki0Xl7qbHxjRpuSySNb05rZJVM0ry
PBkluHeU6b2jVO8dTS7MMmncTVntpjYrVqXJNtXUNtW2bi4mk2f0+we3u6dZ
TI21I0yDh6r5mx+Pv9y7PB99KMr7wv7w7oovvXh9zf9P/NKyHHebukmK9Ock
Lwua5c7VZpNN7T+acjm0dVk1lVvV9Gm3xoefjEm2zW1Z8QToX0vzrKf2m7Gd
0cr4giz3G7fO2mtldTO1PJ1ZPU7dnT2Z0TBuCVJd74jk69q+evX8lG/m6YEE
PxQZbYa9bogoNf/k1kmWT225qf+VR0t4NGOKslonTXbnMK933zy/OD9/ph+/
Ov/ysf948SRcfXr+RD8+evTIXz2fPHoSbgj3Pjs/n0yNwYZ03/Ls8cW5//jl
4/Dkk2f+hU++uuBBrkYvxplrVqN7t1iUDUg4um2aTZ3djDZVSbQuc39fnRU3
t50bmSVHaVa5ZVNWmav9rWu3LTJXxTdX7iarQTy95ZfyLimW7i5bjujfdO2v
F0mV/JIQLxKxq6Zwu1FS1HcX/mea1ChJN8qpaVYvyzsno85eX0+mvBn+SNGV
0WTa8v6JnIXXxAf22lX0XmfrDW32KiP2zspiKIfB3p2PJ0NLA9d00U7GF+PJ
6YCHbpkM/4yEfw4MS/P8hajC96XEJVN7Mbl4Opp8NbqYyByT6sbRyWZqTx8+
vMma2+1ivCzXD3ltYNZaBntIFAj0e7jIy8XDczeZPFk+dcnqyfmXT549mnz1
7NHF4tnT9Muni/P0yXLx+Jl75B6dP8Ty+PlJe6yJ7rSG8ToF0S5mHZrxUi5k
QSf046l9q2xgr2NKHScG5NirrNj+Zr+h45K2dwcyPDlIgOQiCSw3ppEe5jhc
zcPOBj2kR797/ebH17Pr7lZHRxgSqnFV4ZogebxsFKFkT0hiuMoR+9lsvckd
ZBwP/9lNPiQXevt7cGGRPHhozGhEgm5BO5kQdxgatCzKdbmtSaStmvukcn6S
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
EsR4sxlyAAA=

-->

</rfc>
