<?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.39 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-meunier-webbotauth-registry-03" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="Registry and Signature Agent card for Web bot auth">Registry and Signature Agent card for Web bot auth</title>
    <seriesInfo name="Internet-Draft" value="draft-meunier-webbotauth-registry-03"/>
    <author fullname="Maxime Guerreiro">
      <organization>Cloudflare</organization>
      <address>
        <email>maxime.guerreiro@gmail.com</email>
      </address>
    </author>
    <author fullname="Ulas Kirazci">
      <organization>Amazon</organization>
      <address>
        <email>ulaskira@amazon.com</email>
      </address>
    </author>
    <author fullname="Thibault Meunier">
      <organization>Cloudflare</organization>
      <address>
        <email>ot-ietf@thibault.uk</email>
      </address>
    </author>
    <date year="2026" month="June" day="26"/>
    <area>Web and Internet Transport</area>
    <workgroup>Web Bot Auth</workgroup>
    <keyword>not-yet</keyword>
    <abstract>
      <?line 70?>

<t>This document defines the "Signature Agent Card", a JSON metadata document that a
signature agent using <xref target="DIRECTORY"/> publishes to describe itself: its identity,
purpose, rate expectations, and cryptographic keys. Its parameters are drawn from
the OAuth Dynamic Client Registration Metadata registry <xref target="DCR"/>, the same
namespace used by <xref target="CIMD"/>, extended with a single <tt>web_bot_auth</tt> object. This
document registers that object with IANA and establishes a registry for its
members.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://thibmeu.github.io/http-message-signatures-directory/draft-meunier-webbotauth-registry.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-meunier-webbotauth-registry/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Web Bot Auth Working Group mailing list (<eref target="mailto:web-bot-auth@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/web-bot-auth/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/web-bot-auth/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/thibmeu/http-message-signatures-directory"/>.</t>
    </note>
  </front>
  <middle>
    <?line 80?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Signature Agents are entities that originate or forward signed HTTP requests on behalf
of users or services. They include bots developers, platforms providers,
and other intermediaries using <xref target="DIRECTORY"/>. These agents often
need to identify themselves, and establish
trust with origin servers.</t>
      <t>Today, the mechanisms for doing so are inconsistent: some rely on User-Agent
strings (e.g. <tt>MyCompanyBot/1.0</tt>), others on IP address lists hosted on file servers (e.g. <tt>https://curated-bots.com/ips.json</tt>), and still others on out-of-band
definitions (e.g. documentation on docs.example.com/mybot). This diversity makes it difficult for operators and origin servers
to reliably discover and share a Signature Agent’s purpose, contact information, or rate
expectations.</t>
      <t>The OAuth Client ID Metadata Document <xref target="CIMD"/> already defines a resolvable
identity: a <tt>client_id</tt> that is an HTTPS URL dereferencing to a JSON metadata
document. This document reuses it.
A Signature Agent Card takes the client metadata parameters that <xref target="CIMD"/> draws
from <xref target="DCR"/>, and adds bot-specific information in a single <tt>web_bot_auth</tt>
object. An existing Client ID Metadata Document is therefore a valid Signature
Agent Card.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</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?>

</section>
    <section anchor="signature-agent-card">
      <name>Signature Agent Card</name>
      <t>A Signature Agent Card is a JSON object describing a Signature Agent. Its
parameters are drawn from the OAuth Dynamic Client Registration Metadata registry
<xref target="DCR"/>, the same parameter namespace used by <xref target="CIMD"/>. Web bot auth-specific
information is carried in a single <tt>web_bot_auth</tt> object,
defined in <xref target="web-bot-auth-extension"/>.</t>
      <t>Because the card reuses the <xref target="CIMD"/> parameter namespace, an existing Client ID
Metadata Document is a valid Signature Agent Card. A client that does not
understand the <tt>web_bot_auth</tt> object ignores it.</t>
      <t>The Signature-Agent header is defined in <xref section="4.1" sectionFormat="of" target="DIRECTORY"/>. A
Signature Agent Card can be referenced from that header using <tt>type=cimd</tt>, as
described in <xref target="cimd-discovery"/>.</t>
      <artwork><![CDATA[
{
  "client_id": "https://example.com/bot",
  "client_name": "Example Bot",
  "client_uri": "https://example.com/bot/about.html",
  "logo_uri": "https://example.com/logo.png",
  "contacts": ["mailto:bot-support@example.com"],
  "jwks_uri": "https://example.com/.well-known/http-message-signatures-directory",
  "web_bot_auth": {
    "expected-user-agent": "Mozilla/5.0 ExampleBot",
    "rfc9309-product-token": "ExampleBot",
    "rfc9309-compliance": ["User-Agent", "Allow", "Disallow", "Content-Usage"],
    "trigger": "fetcher",
    "purpose": "tdm",
    "targeted-content": "Cat pictures",
    "rate-control": "429",
    "rate-expectation": "avg=10rps;max=100rps",
    "known-urls": ["/", "/robots.txt", "*.png"],
    "ips_uri": "https://example.com/ips.json"
  }
}
]]></artwork>
      <t>Unless otherwise specified, all parameters in this document are <bcp14>OPTIONAL</bcp14>, except
that a card resolved through its <tt>client_id</tt> <bcp14>MUST</bcp14> carry <tt>client_id</tt> (see
<xref target="signature-agent-parameter-client-id"/>). There <bcp14>MUST</bcp14> be at least one parameter
set.</t>
      <t>Parameters for which the value is unknown <bcp14>MUST</bcp14> be ignored.
All string values are UTF-8.</t>
      <section anchor="client-metadata-parameters">
        <name>Client Metadata Parameters</name>
        <t>The following parameters are OAuth client metadata parameters defined in <xref target="DCR"/>
and used as in <xref target="CIMD"/>. They keep the semantics defined there; this section only
notes how they are used by a Signature Agent.</t>
        <dl>
          <dt><tt>client_id</tt></dt>
          <dd>
            <t>A resolvable identifier for the Signature Agent. See
<xref target="signature-agent-parameter-client-id"/>.</t>
          </dd>
          <dt><tt>client_name</tt></dt>
          <dd>
            <t>A friendly name for the Signature Agent, e.g. <tt>ExampleBot</tt>.</t>
          </dd>
          <dt><tt>client_uri</tt></dt>
          <dd>
            <t>A URL of a web page describing the Signature Agent: what it does, and how it
handles the data it fetches, e.g. <tt>https://example.com/bot/about.html</tt>.</t>
          </dd>
          <dt><tt>logo_uri</tt></dt>
          <dd>
            <t>A URL referencing a logo for the Signature Agent, for quick visual
identification, e.g. <tt>https://example.com/logo.png</tt>.</t>
          </dd>
          <dt><tt>contacts</tt></dt>
          <dd>
            <t>An array of URIs providing reliable communication channels, typically email
addresses, e.g. <tt>["mailto:bot-support@example.com"]</tt>.</t>
          </dd>
          <dt><tt>jwks_uri</tt></dt>
          <dd>
            <t>See <xref target="signature-agent-parameter-jwks-uri"/>.</t>
          </dd>
          <dt><tt>jwks</tt></dt>
          <dd>
            <t>A JWK Set as defined in <xref section="5" sectionFormat="of" target="JWK"/>. See
<xref target="signature-agent-parameter-jwks"/>.</t>
          </dd>
        </dl>
        <section anchor="signature-agent-parameter-client-id">
          <name>Client ID</name>
          <t>The <tt>client_id</tt> parameter is the resolvable identity of the Signature Agent, as
defined in <xref target="CIMD"/>. It is an HTTPS URL that, when dereferenced, returns the
Signature Agent Card. A card retrieved through its <tt>client_id</tt> <bcp14>MUST</bcp14> include the
<tt>client_id</tt> parameter.</t>
          <t>A client retrieving a card from a URL <bcp14>MUST</bcp14> use the <tt>GET</tt> method, <bcp14>MUST</bcp14> treat any
status code other than <tt>200 (OK)</tt> as an error, and <bcp14>MUST NOT</bcp14> follow HTTP redirects.
The <tt>client_id</tt> value in the returned document <bcp14>MUST</bcp14> be identical to the URL used
to retrieve it, compared as described in <xref section="6.2.1" sectionFormat="of" target="RFC3986"/> (simple
string comparison).</t>
          <t>Example</t>
          <ul spacing="normal">
            <li>
              <t><tt>https://example.com/bot</tt></t>
            </li>
          </ul>
        </section>
        <section anchor="signature-agent-parameter-jwks-uri">
          <name>JWKS URI</name>
          <t>The <tt>jwks_uri</tt> parameter provides the URL of a JWK Set as defined in
<xref section="5" sectionFormat="of" target="JWK"/>, following the <xref target="DCR"/> semantics. <xref target="DCR"/> does not mandate
a media type for the resource at <tt>jwks_uri</tt>.</t>
          <t>When present, this parameter separates key material discovery from metadata
discovery. Clients that need key material <bcp14>SHOULD</bcp14> fetch the key set at the
given URL rather than relying on the <tt>jwks</tt> parameter. This separation allows
registry operators to host metadata and key material on different endpoints,
supporting deployment scenarios where the registry endpoint itself contains
signature agent card metadata but key material is hosted elsewhere.</t>
          <t>A Signature Agent Card <bcp14>MUST NOT</bcp14> contain both <tt>jwks_uri</tt> and <tt>jwks</tt>. Clients
<bcp14>SHOULD</bcp14> reject a card that contains both parameters.</t>
          <t>The resource at <tt>jwks_uri</tt> <bcp14>SHOULD</bcp14> be signed using <xref target="HTTP-MESSAGE-SIGNATURES"/>.
Clients <bcp14>SHOULD</bcp14> validate the signature and ignore keys that do not carry a
corresponding valid signature.</t>
          <t>The URI scheme <bcp14>MUST</bcp14> be <tt>https</tt>.</t>
          <t>Example</t>
          <ul spacing="normal">
            <li>
              <t><tt>https://example.com/.well-known/http-message-signatures-directory</tt></t>
            </li>
          </ul>
        </section>
        <section anchor="signature-agent-parameter-jwks">
          <name>JWKS</name>
          <t>The <tt>jwks</tt> parameter contains a JWK Set as defined in <xref section="5" sectionFormat="of" target="JWK"/>. It is
the inline client metadata parameter defined in <xref target="DCR"/>.</t>
          <t>If <tt>jwks</tt> is present, it is <bcp14>RECOMMENDED</bcp14> that the card is signed using <xref target="HTTP-MESSAGE-SIGNATURES"/>.
<tt>Content-Digest</tt> header <bcp14>MUST</bcp14> be included in the covered components.</t>
          <t>TODO: describe signature, CWS keys.</t>
        </section>
      </section>
      <section anchor="web-bot-auth-extension">
        <name>Web Bot Auth Extension</name>
        <t>The <tt>web_bot_auth</tt> parameter is a JSON object carrying bot-specific metadata. It
is registered in the OAuth Dynamic Client Registration Metadata registry <xref target="DCR"/>
(see <xref target="iana"/>), so that it may appear in any Client ID Metadata Document <xref target="CIMD"/>.
Its members are governed by the "Web Bot Auth Metadata Parameters" registry
defined in <xref target="iana"/>. Members for which the value is unknown <bcp14>MUST</bcp14> be ignored.</t>
        <t>The members defined by this document are below.</t>
        <section anchor="signature-agent-parameter-user-agent">
          <name>Expected user agent</name>
          <t>The <tt>expected-user-agent</tt> parameter specifies one or more <tt>User-Agent</tt> strings as defined in <xref section="10.1.5" sectionFormat="of" target="HTTP"/>
or prefix matches. Prefixes <bcp14>MAY</bcp14> use <tt>*</tt> as a wildcard.</t>
          <t>Example</t>
          <ul spacing="normal">
            <li>
              <t><tt>Mozilla/5.0 ExampleBot</tt></t>
            </li>
          </ul>
        </section>
        <section anchor="signature-agent-parameter-robotstxt-token">
          <name>robots.txt product token</name>
          <t>The <tt>rfc9309-product-token</tt> parameter specifies the product token used for
<tt>robots.txt</tt> directives per <xref section="2.2.1" sectionFormat="of" target="ROBOTSTXT"/>.</t>
          <t>Example</t>
          <ul spacing="normal">
            <li>
              <t><tt>ExampleBot</tt></t>
            </li>
          </ul>
        </section>
        <section anchor="signature-agent-parameter-robotstxt-compliance">
          <name>robots.txt compliance</name>
          <t>The <tt>rfc9309-compliance</tt> parameter lists directives from <tt>robots.txt</tt> that the
agent implements.</t>
          <t>Example</t>
          <ul spacing="normal">
            <li>
              <t><tt>["User-Agent", "Disallow"]</tt></t>
            </li>
            <li>
              <t><tt>["User-Agent", "Disallow", "CrawlDelay"]</tt></t>
            </li>
          </ul>
        </section>
        <section anchor="signature-agent-parameter-trigger">
          <name>Trigger</name>
          <t>The <tt>trigger</tt> parameter indicates the operational mode of the agent.</t>
          <t>Valid values:</t>
          <ol spacing="normal" type="1"><li>
              <t><tt>fetcher</tt> - request initiated by the user</t>
            </li>
            <li>
              <t><tt>crawler</tt> - autonomous scanning</t>
            </li>
          </ol>
        </section>
        <section anchor="signature-agent-parameter-purpose">
          <name>Purpose</name>
          <t>The <tt>purpose</tt> parameter describes the intended use of collected data. Values
<bcp14>SHOULD</bcp14> be drawn from a controlled vocabulary, such as <xref target="AIPREF-VOCAB"/>.</t>
          <t>Example</t>
          <ul spacing="normal">
            <li>
              <t><tt>search</tt></t>
            </li>
            <li>
              <t><tt>tdm</tt></t>
            </li>
          </ul>
        </section>
        <section anchor="signature-agent-parameter-targeted-content">
          <name>Targeted content</name>
          <t>The <tt>targeted-content</tt> parameter specifies the type of data the agent seeks.
Its format is arbitrary UTF-8 encoded string.</t>
          <t>Example</t>
          <ul spacing="normal">
            <li>
              <t><tt>SEO analysis</tt></t>
            </li>
            <li>
              <t><tt>Vulnerability scanning</tt></t>
            </li>
            <li>
              <t><tt>Ads verification</tt></t>
            </li>
          </ul>
        </section>
        <section anchor="signature-agent-parameter-rate-control">
          <name>Rate control</name>
          <t>The <tt>rate-control</tt> parameter indicates how origins can influence the agent’s
request rate.</t>
          <t>TODO: specify a format</t>
          <t>Example</t>
          <ul spacing="normal">
            <li>
              <t>CrawlDelay in robots.txt (non-standard)</t>
            </li>
            <li>
              <t>Custom tool</t>
            </li>
            <li>
              <t>429 + <xref target="RATELIMIT-HEADER"/></t>
            </li>
          </ul>
        </section>
        <section anchor="signature-agent-parameter-rate-expectation">
          <name>Rate expectation</name>
          <t>The <tt>rate-expectation</tt> parameter specifies anticipated request volume or
burstiness.</t>
          <t>TODO: consider a format such as <tt>avg=10rps;max=100rps</tt></t>
          <t>Example</t>
          <ul spacing="normal">
            <li>
              <t>500 rps</t>
            </li>
            <li>
              <t>Spikes during reindexing</t>
            </li>
          </ul>
        </section>
        <section anchor="signature-agent-parameter-known-urls">
          <name>Known URLs</name>
          <t>The <tt>known-urls</tt> parameter lists predictable endpoints accessed by the agent.</t>
          <t>These URLs may be absolute URLs like <tt>https://example.com/index.html</tt>.
They could be relative path like <tt>/ads.txt</tt>.
Or they can use <tt>*</tt> as wildcard such as <tt>*.png</tt>.</t>
          <t>Example</t>
          <ul spacing="normal">
            <li>
              <t><tt>["/"]</tt></t>
            </li>
            <li>
              <t><tt>["/ads.txt"]</tt></t>
            </li>
            <li>
              <t><tt>["/favicon.ico"]</tt></t>
            </li>
            <li>
              <t><tt>["/index.html"]</tt></t>
            </li>
          </ul>
        </section>
        <section anchor="signature-agent-parameter-ips-uri">
          <name>IP Address List URI</name>
          <t>The <tt>ips_uri</tt> parameter provides the URL of the signature agent's
IP address list as defined in <xref target="JAFAR"/>.</t>
          <t>The URI scheme <bcp14>MUST</bcp14> be <tt>https</tt>.</t>
          <t>Example</t>
          <ul spacing="normal">
            <li>
              <t><tt>https://example.com/ips.json</tt></t>
            </li>
          </ul>
        </section>
      </section>
    </section>
    <section anchor="discovery">
      <name>Discovery</name>
      <t>A Signature Agent Card is discovered by dereferencing its <tt>client_id</tt>, as
described in <xref target="cimd-discovery"/>, or from a registry.</t>
      <t>A registry is a list of URLs, each refering to a signature agent card. An entry
<bcp14>MAY</bcp14> be the <tt>client_id</tt> of a Signature Agent Card.</t>
      <t>The URI scheme <bcp14>MUST</bcp14> be one of:</t>
      <ul spacing="normal">
        <li>
          <t>https: Points to an HTTPS resource serving a signature agent card</t>
        </li>
        <li>
          <t>data: Contains an inline signature agent card</t>
        </li>
      </ul>
      <section anchor="cimd-discovery">
        <name>CIMD-based discovery</name>
        <t>A Signature Agent advertises its identity through a resolvable <tt>client_id</tt> URL,
as defined in <xref target="CIMD"/>. A consumer discovers the agent's metadata and keys as
follows:</t>
        <ol spacing="normal" type="1"><li>
            <t>Obtain a <tt>client_id</tt> URL, from a <tt>Signature-Agent</tt> header with <tt>type=cimd</tt>
(<xref target="signature-agent-header"/>), a registry entry, or out of band.</t>
          </li>
          <li>
            <t>Dereference the <tt>client_id</tt> with a <tt>GET</tt> request. The response <bcp14>MUST</bcp14> be
<tt>200 (OK)</tt>, redirects <bcp14>MUST NOT</bcp14> be followed, and the returned <tt>client_id</tt> <bcp14>MUST</bcp14>
match the requested URL (see <xref target="signature-agent-parameter-client-id"/>). The
response is the Signature Agent Card.</t>
          </li>
          <li>
            <t>Obtain key material. If the card has a <tt>jwks_uri</tt>, fetch the JWK Set at that
URL; otherwise use the inline <tt>jwks</tt> parameter.</t>
          </li>
        </ol>
        <t>The metadata document and the key set are distinct resources reached at different
hops, so no content negotiation between them is required.</t>
        <artwork><![CDATA[
GET /bot HTTP/1.1
Host: example.com

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

{
  "client_id": "https://example.com/bot",
  "client_name": "Example Bot",
  "jwks_uri": "https://example.com/.well-known/http-message-signatures-directory",
  "web_bot_auth": {
    "trigger": "fetcher",
    "purpose": "tdm"
  }
}
]]></artwork>
        <t>Example</t>
        <sourcecode type="txt"><![CDATA[
# An example list of bots
https://bot1.example.com/.well-known/http-message-signatures-directory
https://crawler2.example.com/.well-known/http-message-signatures-directory

# Now the list of platforms
https://zerotrust-gateway.example.com/v1/signature-agent-card

# Below is an inlined card with the data URL scheme
data:application/json,{"client_name":"Inline Bot","jwks_uri":"https://inline.example.com/.well-known/http-message-signatures-directory"}
]]></sourcecode>
      </section>
      <section anchor="formal-syntax">
        <name>Formal Syntax</name>
        <t>Below is an Augmented Backus-Naur Form (ABNF) description, as described in <xref target="ABNF"/>.</t>
        <t>The below definition imports <tt>https-URI</tt> from <xref target="HTTP"/>, and <tt>dataurl</tt> from
<xref target="DATAURL"/>.</t>
        <artwork><![CDATA[
registry = *(cardendpointline / emptyline)
cardendpointline = (
    https-URI /      ; As defined in Section 4.2.2 of RFC 9110
    dataurl          ; As defined in Section 3 of RFC 2397
) EOL


comment = "#" *(UTF8-char-noctl / WS / "#")
emptyline = EOL
EOL = *WS [comment] NL ; end-of-line may have
                       ; optional trailing comment
NL = %x0D / %x0A / %x0D.0A
WS = %x20 / %x09

; UTF8 derived from RFC 3629, but excluding control characters

UTF8-char-noctl = UTF8-1-noctl / UTF8-2 / UTF8-3 / UTF8-4
UTF8-1-noctl = %x21 / %x22 / %x24-7F ; excluding control, space, "#"
UTF8-2 = %xC2-DF UTF8-tail
UTF8-3 = %xE0 %xA0-BF UTF8-tail / %xE1-EC 2UTF8-tail /
         %xED %x80-9F UTF8-tail / %xEE-EF 2UTF8-tail
UTF8-4 = %xF0 %x90-BF 2UTF8-tail / %xF1-F3 3UTF8-tail /
         %xF4 %x80-8F 2UTF8-tail

UTF8-tail = %x80-BF
]]></artwork>
      </section>
      <section anchor="out-of-band-communication-between-client-and-origin">
        <name>Out-of-band communication between client and origin</name>
        <t>A signature agent <bcp14>MAY</bcp14> submit their signature agent card to an origin, or the
origin <bcp14>MAY</bcp14> manually add them to their local registry.</t>
      </section>
      <section anchor="registry-endpoint">
        <name>Registry Endpoint</name>
        <t>A registry <bcp14>MAY</bcp14> be provided via a GitHub repository, a public file server, or a
dedicated endpoint.</t>
        <t>The registry <bcp14>SHOULD</bcp14> be served over HTTPS.</t>
        <t>A client application <bcp14>SHOULD</bcp14> validate the registry format and reject malformed
entries.</t>
        <section anchor="registry-authentication">
          <name>Authentication</name>
          <t>A registry endpoint <bcp14>MAY</bcp14> require authentication to restrict access to authorized
clients. This allows a registry operator to expose registries without revealing
their contents publicly.</t>
          <t>No specific authentication mechanism is mandated. Implementations <bcp14>MAY</bcp14> use
pre-shared keys as mentioned in <xref target="PSK-TLS"/>, bearer tokens as defined in <xref target="OAUTH-BEARER"/>, or HTTP Message
Signatures as defined in <xref target="HTTP-MESSAGE-SIGNATURES"/>. HTTP Message Signatures
are <bcp14>RECOMMENDED</bcp14> when key rotation without out-of-band coordination is desired.</t>
        </section>
        <section anchor="registry-conditional-requests">
          <name>Efficient Polling with Conditional Requests</name>
          <t>Registry servers <bcp14>SHOULD</bcp14> include <tt>ETag</tt> and <tt>Last-Modified</tt> response header
fields as defined in <xref section="8.8" sectionFormat="of" target="HTTP"/>.</t>
          <t>Clients <bcp14>SHOULD</bcp14> send <tt>If-None-Match</tt> or <tt>If-Modified-Since</tt> precondition
header fields as defined in <xref section="13.1" sectionFormat="of" target="HTTP"/> on subsequent requests.
A server <bcp14>SHOULD</bcp14> respond with <tt>304 (Not Modified)</tt> when the registry has not
changed, avoiding redundant data transfer.</t>
        </section>
        <section anchor="registry-caching">
          <name>Caching</name>
          <t>Registry servers <bcp14>SHOULD</bcp14> include a <tt>Cache-Control</tt> response header field as
defined in <xref target="HTTP-CACHE"/> to communicate the intended freshness lifetime of the
registry content. Clients <bcp14>SHOULD</bcp14> respect these cache directives and <bcp14>SHOULD NOT</bcp14>
poll more frequently than indicated.</t>
        </section>
      </section>
      <section anchor="signature-agent-header">
        <name>Signature-Agent header</name>
        <t>When used for HTTP Message Signatures, a Signature Agent Card <bcp14>MAY</bcp14> be discovered
via a <tt>Signature-Agent</tt> header member with <tt>type=cimd</tt>. The URI carried in that
member is the <tt>client_id</tt> of a Signature Agent Card resolved as described in
<xref target="cimd-discovery"/>.</t>
      </section>
      <section anchor="signature-key">
        <name>Composable discovery with Signature-Key</name>
        <t>The discovery in this document is anchored on the <tt>client_id</tt> URL and is
independent of the header that carries it. <xref target="SIGNATURE-KEY"/> defines a composable
<tt>Signature-Key</tt> header with an extensible registry of key-distribution schemes.
A future scheme could carry a <tt>client_id</tt> URL, letting a verifier resolve a
Signature Agent Card per-signature alongside the keying material. This document
does not define such a scheme; it is noted as a possible composable carrier.</t>
      </section>
      <section anchor="change-notification">
        <name>Change Notification</name>
        <t>Pull-based consumption with conditional requests is sufficient for most
deployments. When lower notification latency is required (e.g., to promptly
act on entry removal), a registry operator <bcp14>MAY</bcp14> implement a push-based change
notification mechanism.</t>
        <section anchor="notification-advertisement">
          <name>Advertising the Notification Endpoint</name>
          <t>A registry operator that supports change notifications <bcp14>SHOULD</bcp14> advertise its
notification endpoint in the registry HTTP response using a <tt>Link</tt> header field
as defined in <xref target="WEB-LINKING"/>:</t>
          <artwork><![CDATA[
Link: <https://registry.example/v1/registry-changes>; rel="registry-changes"
]]></artwork>
          <t>The <tt>registry-changes</tt> link relation identifies an endpoint to which clients
may register callbacks out of band.</t>
          <t>TODO: Register the <tt>registry-changes</tt> link relation with IANA, or replace it
with an extension relation URI.</t>
        </section>
        <section anchor="notification-registration">
          <name>Callback Registration</name>
          <t>Registration of a client callback URL with the registry operator is performed
out of band. No specific registration protocol is defined by this document.
An unsubscribe mechanism <bcp14>SHOULD</bcp14> be considered, and <bcp14>MAY</bcp14> also be out of band.</t>
        </section>
        <section anchor="notification-requests">
          <name>Notification Requests</name>
          <t>When an entry is added to or removed from the registry, the registry operator
<bcp14>MUST</bcp14> send an HTTP request to each registered callback URL.</t>
          <t>The format in <xref target="CDDL"/> is as follows:</t>
          <sourcecode type="cddl"><![CDATA[
Action = "put" / "delete"

Notification = {
  action: Action,
  signature-agent: tstr
}
]]></sourcecode>
          <t>TODO: should we use application/json, a new media-type, permit binary encoding?
TODO: should signature-agent be an array?</t>
          <t><tt>action</tt> denotes the operation performed on the registry:
1. <tt>put</tt> when a new entry has been added,
2. <tt>delete</tt> when an entry has been removed.</t>
          <t>The request <bcp14>MUST</bcp14> use <tt>POST</tt>.
It <bcp14>MUST</bcp14> be signed using <xref target="HTTP-MESSAGE-SIGNATURES"/> with a key present in the
registry operator's existing signature agent card. This is the signature agent
card associated with the registry operator during out-of-band callback
registration.</t>
          <t>The <tt>Content-Type</tt> <bcp14>SHOULD</bcp14> be <tt>application/json</tt>.</t>
          <t>Example notification for an added entry:</t>
          <artwork><![CDATA[
POST /registry-callback HTTP/1.1
Host: origin.example
Content-Type: application/json
Signature-Input: sig1=("@method" "@authority" "@path" "content-digest"); \
  created=1741046400; keyid="NFcWBst6DXG-N35nHdzMrioWntdzNZghQSkjHNMMSjw"
Signature: sig1=:base64signature:
Content-Digest: sha-256=:base64hash:

{
  "action": "put",
  "signature-agent": "https://abc123.registry.example/.well-known/signature-agent-card"
}
]]></artwork>
        </section>
        <section anchor="notification-processing">
          <name>Notification Processing</name>
          <t>Upon receiving a notification, the client <bcp14>MUST</bcp14> verify the HTTP Message
Signature against the registry operator's key, discovered via the registry
operator's signature-agent card. Notifications with missing or invalid
signatures <bcp14>MUST</bcp14> be rejected.</t>
          <t>A notification is advisory only. The registry endpoint remains the authoritative
source of truth. After verifying a <tt>put</tt> notification, clients <bcp14>SHOULD</bcp14> re-fetch
the affected signature agent card to obtain current metadata.</t>
          <t>For <tt>delete</tt> notifications, clients <bcp14>SHOULD</bcp14> confirm the removal by re-fetching
the full registry. This confirmation does not need to happen synchronously with
notification processing.</t>
          <t>Registry operators <bcp14>SHOULD</bcp14> retry delivery of failed notifications with
exponential backoff. Clients that miss notifications will recover on their next
conditional pull from the registry endpoint.</t>
        </section>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Malicious actors may put properties which are not theirs in the registry. If signatures are present, clients <bcp14>MUST</bcp14> verify them.
Clients <bcp14>SHOULD</bcp14> reject cards with invalid signatures.</t>
      <section anchor="registry-integrity">
        <name>Registry Integrity</name>
        <t>When a registry is served over HTTPS, TLS provides channel integrity between
the server and the client. To additionally bind the registry contents to the
registry operator's cryptographic identity, registry servers <bcp14>SHOULD</bcp14> sign their
HTTP responses using <xref target="HTTP-MESSAGE-SIGNATURES"/> with a key present in the
registry operator's own signature agent card. Clients <bcp14>SHOULD</bcp14> verify such
signatures when present.</t>
      </section>
      <section anchor="binding-delegated-keys-to-the-directory-authority">
        <name>Binding Delegated Keys to the Directory Authority</name>
        <t>When a signature agent card delegates key discovery using <tt>jwks_uri</tt>, clients
<bcp14>SHOULD</bcp14> validate the referenced directory response to ensure the authenticity
and integrity of the delegated key material.</t>
        <t>When a directory server provides key material over HTTP or HTTPS, it is
<bcp14>RECOMMENDED</bcp14> that it include one HTTP Message Signature per key in the response,
with each key used to provide one signature. The signature <bcp14>SHOULD</bcp14> cover
<tt>@authority</tt> with the <tt>req</tt> flag set, and <bcp14>SHOULD</bcp14> include the <tt>created</tt>,
<tt>expires</tt>, <tt>keyid</tt>, and <tt>tag</tt> signature parameters. The <tt>tag</tt> value <bcp14>MUST</bcp14> be
<tt>http-message-signatures-directory</tt>.</t>
        <t>Clients <bcp14>SHOULD</bcp14> validate these signatures using the keys provided by the
directory. Clients <bcp14>SHOULD</bcp14> ignore keys from a directory response that do not have
a corresponding valid signature binding the key material to the directory
authority.</t>
      </section>
      <section anchor="private-registries">
        <name>Private Registries</name>
        <t>Registry endpoints that require authentication as described in
<xref target="registry-authentication"/> limit exposure of registry entries to authorized
clients only. Registry operators <bcp14>SHOULD</bcp14> use authenticated endpoints when the
enumeration of their registry entries is sensitive.</t>
      </section>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>TODO</t>
      <section anchor="access-patterns">
        <name>Access Patterns</name>
        <t>Registry servers <bcp14>SHOULD</bcp14> avoid logging personally identifiable information from
client requests. Clients fetching a registry reveal their interest in its
entries; registry servers <bcp14>SHOULD</bcp14> treat access logs as sensitive.</t>
      </section>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <section anchor="oauth-dynamic-client-registration-metadata-registration">
        <name>OAuth Dynamic Client Registration Metadata Registration</name>
        <t>IANA is requested to register the following parameter in the "OAuth Dynamic
Client Registration Metadata" registry established by <xref target="DCR"/>.</t>
        <dl>
          <dt><strong>Client Metadata Name:</strong></dt>
          <dd>
            <t>web_bot_auth</t>
          </dd>
          <dt><strong>Client Metadata Description:</strong></dt>
          <dd>
            <t>A JSON object carrying bot-specific metadata for a Signature Agent. Its members
are registered in the "Web Bot Auth Metadata Parameters" registry.</t>
          </dd>
          <dt><strong>Change Controller:</strong></dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt><strong>Reference:</strong></dt>
          <dd>
            <t><xref target="web-bot-auth-extension"/></t>
          </dd>
        </dl>
        <t>The remaining parameters used by a Signature Agent Card (<tt>client_id</tt>,
<tt>client_name</tt>, <tt>client_uri</tt>, <tt>logo_uri</tt>, <tt>contacts</tt>, <tt>jwks_uri</tt>, <tt>jwks</tt>) are
already registered OAuth client metadata parameters and are not registered by
this document.</t>
      </section>
      <section anchor="web-bot-auth-metadata-parameters-registry">
        <name>Web Bot Auth Metadata Parameters Registry</name>
        <t>IANA is requested to create the "Web Bot Auth Metadata Parameters" registry. This
registry governs the members of the <tt>web_bot_auth</tt> object defined in
<xref target="web-bot-auth-extension"/>.</t>
        <section anchor="registration-template">
          <name>Registration template</name>
          <t>New registrations need to list the following attributes:</t>
          <dl spacing="compact">
            <dt><strong>Parameter Name:</strong></dt>
            <dd>
              <t>The name requested (e.g. "purpose"). This name is
case sensitive.  Names may not match other registered names in a
case-insensitive manner unless the Designated Experts state that
there is a compelling reason to allow an exception</t>
            </dd>
            <dt><strong>Parameter Description:</strong></dt>
            <dd>
              <t>Brief description of the parameter</t>
            </dd>
            <dt><strong>Change Controller:</strong></dt>
            <dd>
              <t>For Standards Track RFCs, list the "IESG".  For others, give the
name of the responsible party.  Other details (e.g., postal
address, email address, home page URI) may also be included.</t>
            </dd>
            <dt><strong>Reference:</strong></dt>
            <dd>
              <t>Where this parameter is defined</t>
            </dd>
            <dt><strong>Notes:</strong></dt>
            <dd>
              <t>Any notes associated with the entry</t>
            </dd>
          </dl>
          <t>New entries in this registry are subject to the Specification Required
registration policy (<xref section="4.6" sectionFormat="comma" target="RFC8126"/>). Designated experts can reject
registrations on the basis that they do not meet the security and privacy
requirements defined in TODO.</t>
        </section>
        <section anchor="initial-registry-content">
          <name>Initial Registry content</name>
          <t>This section registers the <tt>web_bot_auth</tt> member names defined
in <xref target="web-bot-auth-extension"/> in this registry.</t>
          <section anchor="expected-user-agent-parameter">
            <name>Expected User Agent Parameter</name>
            <dl>
              <dt><strong>Parameter Name:</strong></dt>
              <dd>
                <t>expected-user-agent</t>
              </dd>
              <dt><strong>Parameter Description:</strong></dt>
              <dd>
                <t>String or fragment patterns</t>
              </dd>
              <dt><strong>Change Controller:</strong></dt>
              <dd>
                <t>IETF</t>
              </dd>
              <dt><strong>Reference:</strong></dt>
              <dd>
                <t><xref target="signature-agent-parameter-user-agent"/></t>
              </dd>
              <dt><strong>Notes:</strong></dt>
              <dd>
                <t>N/A</t>
              </dd>
            </dl>
          </section>
          <section anchor="rfc9309-product-token-parameter">
            <name>RFC9309 Product Token Parameter</name>
            <dl>
              <dt><strong>Parameter Name:</strong></dt>
              <dd>
                <t>rfc9309-product-token</t>
              </dd>
              <dt><strong>Parameter Description:</strong></dt>
              <dd>
                <t>Robots.txt product token your signature-agent satisfies.</t>
              </dd>
              <dt><strong>Change Controller:</strong></dt>
              <dd>
                <t>IETF</t>
              </dd>
              <dt><strong>Reference:</strong></dt>
              <dd>
                <t><xref target="signature-agent-parameter-robotstxt-token"/></t>
              </dd>
              <dt><strong>Notes:</strong></dt>
              <dd>
                <t>N/A</t>
              </dd>
            </dl>
          </section>
          <section anchor="rfc9309-compliance-parameter">
            <name>RFC9309 Compliance Parameter</name>
            <dl>
              <dt><strong>Parameter Name:</strong></dt>
              <dd>
                <t>rfc9309-compliance</t>
              </dd>
              <dt><strong>Parameter Description:</strong></dt>
              <dd>
                <t>Does your signature-agent respect robots.txt.</t>
              </dd>
              <dt><strong>Change Controller:</strong></dt>
              <dd>
                <t>IETF</t>
              </dd>
              <dt><strong>Reference:</strong></dt>
              <dd>
                <t><xref target="signature-agent-parameter-robotstxt-compliance"/></t>
              </dd>
              <dt><strong>Notes:</strong></dt>
              <dd>
                <t>N/A</t>
              </dd>
            </dl>
          </section>
          <section anchor="trigger-parameter">
            <name>Trigger Parameter</name>
            <dl>
              <dt><strong>Parameter Name:</strong></dt>
              <dd>
                <t>trigger</t>
              </dd>
              <dt><strong>Parameter Description:</strong></dt>
              <dd>
                <t>Fetcher/Crawler</t>
              </dd>
              <dt><strong>Change Controller:</strong></dt>
              <dd>
                <t>IETF</t>
              </dd>
              <dt><strong>Reference:</strong></dt>
              <dd>
                <t><xref target="signature-agent-parameter-trigger"/></t>
              </dd>
              <dt><strong>Notes:</strong></dt>
              <dd>
                <t>N/A</t>
              </dd>
            </dl>
          </section>
          <section anchor="purpose-parameter">
            <name>Purpose Parameter</name>
            <dl>
              <dt><strong>Parameter Name:</strong></dt>
              <dd>
                <t>purpose</t>
              </dd>
              <dt><strong>Parameter Description:</strong></dt>
              <dd>
                <t>Intended use for the collected data</t>
              </dd>
              <dt><strong>Change Controller:</strong></dt>
              <dd>
                <t>IETF</t>
              </dd>
              <dt><strong>Reference:</strong></dt>
              <dd>
                <t><xref target="signature-agent-parameter-purpose"/></t>
              </dd>
              <dt><strong>Notes:</strong></dt>
              <dd>
                <t>N/A</t>
              </dd>
            </dl>
          </section>
          <section anchor="targeted-content-parameter">
            <name>Targeted Content Parameter</name>
            <dl>
              <dt><strong>Parameter Name:</strong></dt>
              <dd>
                <t>targeted-content</t>
              </dd>
              <dt><strong>Parameter Description:</strong></dt>
              <dd>
                <t>Type of data your agent seeks</t>
              </dd>
              <dt><strong>Change Controller:</strong></dt>
              <dd>
                <t>IETF</t>
              </dd>
              <dt><strong>Reference:</strong></dt>
              <dd>
                <t><xref target="signature-agent-parameter-targeted-content"/></t>
              </dd>
              <dt><strong>Notes:</strong></dt>
              <dd>
                <t>N/A</t>
              </dd>
            </dl>
          </section>
          <section anchor="rate-control-parameter">
            <name>Rate control Parameter</name>
            <dl>
              <dt><strong>Parameter Name:</strong></dt>
              <dd>
                <t>rate-control</t>
              </dd>
              <dt><strong>Parameter Description:</strong></dt>
              <dd>
                <t>How can an origin control your crawl rate</t>
              </dd>
              <dt><strong>Change Controller:</strong></dt>
              <dd>
                <t>IETF</t>
              </dd>
              <dt><strong>Reference:</strong></dt>
              <dd>
                <t><xref target="signature-agent-parameter-rate-control"/></t>
              </dd>
              <dt><strong>Notes:</strong></dt>
              <dd>
                <t>N/A</t>
              </dd>
            </dl>
          </section>
          <section anchor="rate-expectation-parameter">
            <name>Rate expectation Parameter</name>
            <dl>
              <dt><strong>Parameter Name:</strong></dt>
              <dd>
                <t>rate-expectation</t>
              </dd>
              <dt><strong>Parameter Description:</strong></dt>
              <dd>
                <t>Expected traffic and intensity</t>
              </dd>
              <dt><strong>Change Controller:</strong></dt>
              <dd>
                <t>IETF</t>
              </dd>
              <dt><strong>Reference:</strong></dt>
              <dd>
                <t><xref target="signature-agent-parameter-rate-expectation"/></t>
              </dd>
              <dt><strong>Notes:</strong></dt>
              <dd>
                <t>N/A</t>
              </dd>
            </dl>
          </section>
          <section anchor="known-urls-parameter">
            <name>Known URLs Parameter</name>
            <dl>
              <dt><strong>Parameter Name:</strong></dt>
              <dd>
                <t>known-urls</t>
              </dd>
              <dt><strong>Parameter Description:</strong></dt>
              <dd>
                <t>Predictable endpoint accessed</t>
              </dd>
              <dt><strong>Change Controller:</strong></dt>
              <dd>
                <t>IETF</t>
              </dd>
              <dt><strong>Reference:</strong></dt>
              <dd>
                <t><xref target="signature-agent-parameter-known-urls"/></t>
              </dd>
              <dt><strong>Notes:</strong></dt>
              <dd>
                <t>N/A</t>
              </dd>
            </dl>
          </section>
          <section anchor="ip-address-list-uri-parameter">
            <name>IP Address List URI Parameter</name>
            <dl>
              <dt><strong>Parameter Name:</strong></dt>
              <dd>
                <t>ips_uri</t>
              </dd>
              <dt><strong>Parameter Description:</strong></dt>
              <dd>
                <t>URL of the signature agent's IP address list in <xref target="JAFAR"/> format.</t>
              </dd>
              <dt><strong>Change Controller:</strong></dt>
              <dd>
                <t>IETF</t>
              </dd>
              <dt><strong>Reference:</strong></dt>
              <dd>
                <t><xref target="signature-agent-parameter-ips-uri"/></t>
              </dd>
              <dt><strong>Notes:</strong></dt>
              <dd>
                <t>N/A</t>
              </dd>
            </dl>
          </section>
        </section>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="ABNF">
          <front>
            <title>Augmented BNF for Syntax Specifications: ABNF</title>
            <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker"/>
            <author fullname="P. Overell" initials="P." surname="Overell"/>
            <date month="January" year="2008"/>
            <abstract>
              <t>Internet technical specifications often need to define a formal syntax. Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications. The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power. The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges. This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="68"/>
          <seriesInfo name="RFC" value="5234"/>
          <seriesInfo name="DOI" value="10.17487/RFC5234"/>
        </reference>
        <reference anchor="AIPREF-VOCAB">
          <front>
            <title>A Vocabulary For Expressing AI Usage Preferences</title>
            <author fullname="Paul Keller" initials="P." surname="Keller">
              <organization>Open Future</organization>
            </author>
            <author fullname="Martin Thomson" initials="M." surname="Thomson">
              <organization>Mozilla</organization>
            </author>
            <date day="27" month="April" year="2026"/>
            <abstract>
              <t>   This document defines a vocabulary for expressing preferences
   regarding how digital assets are used by automated processing
   systems.  This vocabulary allows for the declaration of restrictions
   or permissions for use of digital assets by such systems.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-aipref-vocab-06"/>
        </reference>
        <reference anchor="CDDL">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="CIMD">
          <front>
            <title>OAuth Client ID Metadata Document</title>
            <author fullname="Aaron Parecki" initials="A." surname="Parecki">
              <organization>Okta</organization>
            </author>
            <author fullname="Emelia Smith" initials="E." surname="Smith">
         </author>
            <date day="1" month="March" year="2026"/>
            <abstract>
              <t>   This specification defines a mechanism through which an OAuth client
   can identify itself to authorization servers, without prior dynamic
   client registration or other existing registration.  This is through
   the usage of a URL as a client_id in an OAuth flow, where the URL
   refers to a document containing the necessary client metadata,
   enabling the authorization server to fetch the metadata about the
   client as needed.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-client-id-metadata-document-01"/>
        </reference>
        <reference anchor="DCR">
          <front>
            <title>OAuth 2.0 Dynamic Client Registration Protocol</title>
            <author fullname="J. Richer" initials="J." role="editor" surname="Richer"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="M. Machulak" initials="M." surname="Machulak"/>
            <author fullname="P. Hunt" initials="P." surname="Hunt"/>
            <date month="July" year="2015"/>
            <abstract>
              <t>This specification defines mechanisms for dynamically registering OAuth 2.0 clients with authorization servers. Registration requests send a set of desired client metadata values to the authorization server. The resulting registration responses return a client identifier to use at the authorization server and the client metadata values registered for the client. The client can then use this registration information to communicate with the authorization server using the OAuth 2.0 protocol. This specification also defines a set of common client metadata fields and values for clients to use during registration.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7591"/>
          <seriesInfo name="DOI" value="10.17487/RFC7591"/>
        </reference>
        <reference anchor="DIRECTORY">
          <front>
            <title>HTTP Message Signatures Directory</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="26" month="June" year="2026"/>
            <abstract>
              <t>   This document describes a method for clients using
   [HTTP-MESSAGE-SIGNATURES] to advertise their signing keys.

   It defines a key directory format based on JWKS as defined in
   Section 5 of [JWK], as well as a new HTTP Method Context for in-band
   key discovery.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-meunier-webbotauth-httpsig-directory-00"/>
        </reference>
        <reference anchor="HTTP-MESSAGE-SIGNATURES">
          <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="HTTP">
          <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="HTTP-CACHE">
          <front>
            <title>HTTP Caching</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 defines HTTP caches and the associated header fields that control cache behavior or indicate cacheable response messages.</t>
              <t>This document obsoletes RFC 7234.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="98"/>
          <seriesInfo name="RFC" value="9111"/>
          <seriesInfo name="DOI" value="10.17487/RFC9111"/>
        </reference>
        <reference anchor="HTTP-MORE-STATUS-CODE">
          <front>
            <title>Additional HTTP Status Codes</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <date month="April" year="2012"/>
            <abstract>
              <t>This document specifies additional HyperText Transfer Protocol (HTTP) status codes for a variety of common situations. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6585"/>
          <seriesInfo name="DOI" value="10.17487/RFC6585"/>
        </reference>
        <reference anchor="JAFAR">
          <front>
            <title>A JSON-Based Format for Publishing IP Ranges of Automated HTTP Clients</title>
            <author fullname="Gary Illyes" initials="G." surname="Illyes">
              <organization>Independent</organization>
            </author>
            <date day="21" month="April" year="2026"/>
            <abstract>
              <t>   This document defines a standardized JSON format for operators of
   automated HTTP clients (e.g., web crawlers, AI bots) to publicly
   disclose their IP address ranges.  A consistent, machine-readable
   format for IP range publication simplifies the task of identifying
   and verifying legitimate automated traffic, thereby decreasing
   maintenance load on website operators while reducing the risk of
   inadvertently blocking beneficial clients.  This specification
   codifies and extends common existing practices to provide a simple
   yet extensible format that accommodates a variety of use cases.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-illyes-webbotauth-jafar-00"/>
        </reference>
        <reference anchor="JWK">
          <front>
            <title>JSON Web Key (JWK)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>A JSON Web Key (JWK) is a JavaScript Object Notation (JSON) data structure that represents a cryptographic key. This specification also defines a JWK Set JSON data structure that represents a set of JWKs. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and IANA registries established by that specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7517"/>
          <seriesInfo name="DOI" value="10.17487/RFC7517"/>
        </reference>
        <reference anchor="JWK-OKP">
          <front>
            <title>CFRG Elliptic Curve Diffie-Hellman (ECDH) and Signatures in JSON Object Signing and Encryption (JOSE)</title>
            <author fullname="I. Liusvaara" initials="I." surname="Liusvaara"/>
            <date month="January" year="2017"/>
            <abstract>
              <t>This document defines how to use the Diffie-Hellman algorithms "X25519" and "X448" as well as the signature algorithms "Ed25519" and "Ed448" from the IRTF CFRG elliptic curves work in JSON Object Signing and Encryption (JOSE).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8037"/>
          <seriesInfo name="DOI" value="10.17487/RFC8037"/>
        </reference>
        <reference anchor="JWK-THUMBPRINT">
          <front>
            <title>JSON Web Key (JWK) Thumbprint</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="September" year="2015"/>
            <abstract>
              <t>This specification defines a method for computing a hash value over a JSON Web Key (JWK). It defines which fields in a JWK are used in the hash computation, the method of creating a canonical form for those fields, and how to convert the resulting Unicode string into a byte sequence to be hashed. The resulting hash value can be used for identifying or selecting the key represented by the JWK that is the subject of the thumbprint.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7638"/>
          <seriesInfo name="DOI" value="10.17487/RFC7638"/>
        </reference>
        <reference anchor="WEB-LINKING">
          <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="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="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="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="CBCP">
          <front>
            <title>Crawler best practices</title>
            <author fullname="Gary Illyes" initials="G." surname="Illyes">
              <organization>Independent</organization>
            </author>
            <author fullname="Mirja Kühlewind" initials="M." surname="Kühlewind">
              <organization>Ericsson</organization>
            </author>
            <author fullname="AJ Kohn" initials="K." surname="Aj">
              <organization>Blind Five Year Old</organization>
            </author>
            <date day="21" month="April" year="2026"/>
            <abstract>
              <t>   This document describes best practices for web crawlers.

Discussion Venues

   This note is to be removed before publishing as an RFC.

   Source for this draft and an issue tracker can be found at
   https://github.com/garyillyes/cbcp.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-illyes-webbotauth-cbcp-00"/>
        </reference>
        <reference anchor="DATAURL">
          <front>
            <title>The "data" URL scheme</title>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="August" year="1998"/>
            <abstract>
              <t>A new URL scheme, "data", is defined. It allows inclusion of small data items as "immediate" data, as if it had been included externally. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2397"/>
          <seriesInfo name="DOI" value="10.17487/RFC2397"/>
        </reference>
        <reference anchor="OAUTH-BEARER">
          <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="OPENID-CONNECT-DISCOVERY" target="https://openid.net/specs/openid-connect-discovery-1_0.html">
          <front>
            <title>OpenID Connect Discovery 1.0</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="PSK-TLS">
          <front>
            <title>Guidance for External Pre-Shared Key (PSK) Usage in TLS</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="J. Hoyland" initials="J." surname="Hoyland"/>
            <author fullname="M. Sethi" initials="M." surname="Sethi"/>
            <author fullname="C. A. Wood" initials="C. A." surname="Wood"/>
            <date month="July" year="2022"/>
            <abstract>
              <t>This document provides usage guidance for external Pre-Shared Keys (PSKs) in Transport Layer Security (TLS) 1.3 as defined in RFC 8446. It lists TLS security properties provided by PSKs under certain assumptions, then it demonstrates how violations of these assumptions lead to attacks. Advice for applications to help meet these assumptions is provided. This document also discusses PSK use cases and provisioning processes. Finally, it lists the privacy and security properties that are not provided by TLS 1.3 when external PSKs are used.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9257"/>
          <seriesInfo name="DOI" value="10.17487/RFC9257"/>
        </reference>
        <reference anchor="RATELIMIT-HEADER">
          <front>
            <title>RateLimit header fields for HTTP</title>
            <author fullname="Roberto Polli" initials="R." surname="Polli">
              <organization>Team Digitale, Italian Government</organization>
            </author>
            <author fullname="Alex Martínez Ruiz" initials="A. M." surname="Ruiz">
              <organization>Red Hat</organization>
            </author>
            <author fullname="Darrel Miller" initials="D." surname="Miller">
              <organization>Microsoft</organization>
            </author>
            <date day="23" month="May" year="2026"/>
            <abstract>
              <t>   This document defines the RateLimit-Policy and RateLimit HTTP header
   fields for servers to advertise their quota policies and the current
   service limits, thereby allowing clients to avoid being throttled.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-httpapi-ratelimit-headers-11"/>
        </reference>
        <reference anchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="ROBOTSTXT">
          <front>
            <title>Robots Exclusion Protocol</title>
            <author fullname="M. Koster" initials="M." surname="Koster"/>
            <author fullname="G. Illyes" initials="G." surname="Illyes"/>
            <author fullname="H. Zeller" initials="H." surname="Zeller"/>
            <author fullname="L. Sassman" initials="L." surname="Sassman"/>
            <date month="September" year="2022"/>
            <abstract>
              <t>This document specifies and extends the "Robots Exclusion Protocol" method originally defined by Martijn Koster in 1994 for service owners to control how content served by their services may be accessed, if at all, by automatic clients known as crawlers. Specifically, it adds definition language for the protocol, instructions for handling errors, and instructions for caching.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9309"/>
          <seriesInfo name="DOI" value="10.17487/RFC9309"/>
        </reference>
        <reference anchor="SIGNATURE-KEY">
          <front>
            <title>HTTP Signature Keys</title>
            <author fullname="Dick Hardt" initials="D." surname="Hardt">
              <organization>Hellō</organization>
            </author>
            <author fullname="Thibault Meunier" initials="T." surname="Meunier">
              <organization>Cloudflare</organization>
            </author>
            <date day="17" month="June" year="2026"/>
            <abstract>
              <t>   This document defines two HTTP header fields and one Accept-Signature
   parameter for use with HTTP Message Signatures as defined in RFC
   9421.  The Signature-Key request header distributes public keys used
   to verify signatures, with five initial key distribution schemes:
   pseudonymous inline keys (hwk), self-issued key delegation via JWK
   Thumbprint JWTs (jkt-jwt), identified signers with JWKS URI discovery
   (jwks_uri), JWT-based delegation (jwt), and X.509 certificate chains
   (x509).  The sigkey parameter extends Accept-Signature (RFC 9421
   Section 5) to indicate the type of Signature-Key the server requires.
   The Signature-Error response header provides structured error
   information when signature verification fails.  Together, these
   mechanisms enable flexible trust models ranging from privacy-
   preserving pseudonymous verification to horizontally-scalable
   delegated authentication and PKI-based identity chains.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-hardt-httpbis-signature-key-05"/>
        </reference>
        <reference anchor="UTF8">
          <front>
            <title>UTF-8, a transformation format of ISO 10646</title>
            <author fullname="F. Yergeau" initials="F." surname="Yergeau"/>
            <date month="November" year="2003"/>
            <abstract>
              <t>ISO/IEC 10646-1 defines a large character set called the Universal Character Set (UCS) which encompasses most of the world's writing systems. The originally proposed encodings of the UCS, however, were not compatible with many current applications and protocols, and this has led to the development of UTF-8, the object of this memo. UTF-8 has the characteristic of preserving the full US-ASCII range, providing compatibility with file systems, parsers and other software that rely on US-ASCII values but are transparent to other values. This memo obsoletes and replaces RFC 2279.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="63"/>
          <seriesInfo name="RFC" value="3629"/>
          <seriesInfo name="DOI" value="10.17487/RFC3629"/>
        </reference>
      </references>
    </references>
    <?line 917?>

<section anchor="test-vectors">
      <name>Test Vectors</name>
      <t>TODO</t>
    </section>
    <section anchor="implementations">
      <name>Implementations</name>
      <t>TODO</t>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO</t>
      <t>The editor would also like to thank the following individuals (listed in alphabetical order) for feedback, insight, and implementation of this document -</t>
    </section>
    <section numbered="false" anchor="changelog">
      <name>Changelog</name>
      <t>draft-meunier-webbotauth-registry-03</t>
      <ul spacing="normal">
        <li>
          <t>Make the Signature Agent Card an OAuth client metadata document with a
<tt>web_bot_auth</tt> object.</t>
        </li>
        <li>
          <t>Add resolvable <tt>client_id</tt> discovery: <tt>GET</tt>, <tt>200 OK</tt>, no redirects, and an
exact <tt>client_id</tt> match.</t>
        </li>
        <li>
          <t>Allow <tt>Signature-Agent</tt> members with <tt>type=cimd</tt> and registry entries to point
to a <tt>client_id</tt> URL.</t>
        </li>
        <li>
          <t>Register <tt>web_bot_auth</tt> in the OAuth Dynamic Client Registration Metadata
registry.</t>
        </li>
        <li>
          <t>Move bot-specific fields into a new Web Bot Auth Metadata Parameters registry.</t>
        </li>
        <li>
          <t>Stop redefining shared client metadata fields; reference RFC 7591 instead.</t>
        </li>
        <li>
          <t>Drop the <tt>data:text/plain</tt> restriction on <tt>client_uri</tt>.</t>
        </li>
        <li>
          <t>Rename inline keys from <tt>keys</tt> to <tt>jwks</tt> to match OAuth client metadata.</t>
        </li>
        <li>
          <t>State that <tt>jwks_uri</tt> points to a JWK Set, without requiring a media type.</t>
        </li>
        <li>
          <t>Require <tt>client_id</tt> in a card resolved through its <tt>client_id</tt>.</t>
        </li>
        <li>
          <t>Require <tt>jwks</tt> and <tt>jwks_uri</tt> to be mutually exclusive.</t>
        </li>
        <li>
          <t>Restrict registry entries and resolvable cards to <tt>https</tt>.</t>
        </li>
        <li>
          <t>Say the <tt>jwks_uri</tt> resource <bcp14>SHOULD</bcp14> be signed using HTTP Message Signatures.</t>
        </li>
        <li>
          <t>Note <tt>Signature-Key</tt> as a possible carrier.</t>
        </li>
      </ul>
      <t>draft-meunier-webbotauth-registry-02</t>
      <ul spacing="normal">
        <li>
          <t>Add <tt>ips_uri</tt> so a client can publish IP addresses.</t>
        </li>
        <li>
          <t>Add <tt>jwks_uri</tt> to separate key material from metadata.</t>
        </li>
        <li>
          <t>Fix the inline data URL example.</t>
        </li>
        <li>
          <t>Rename "Public list" to "Registry Endpoint".</t>
        </li>
        <li>
          <t>Add authentication guidance for private registry endpoints.</t>
        </li>
        <li>
          <t>Add conditional GET guidance using <tt>ETag</tt> and <tt>If-Modified-Since</tt>.</t>
        </li>
        <li>
          <t>Add caching guidance using HTTP-CACHE.</t>
        </li>
        <li>
          <t>Add change notifications using signed <tt>PUT</tt> and <tt>DELETE</tt> webhooks.</t>
        </li>
        <li>
          <t>Keep pull-based registry fetches as the source of truth.</t>
        </li>
        <li>
          <t>Add registry integrity and private registry guidance to Security
Considerations.</t>
        </li>
        <li>
          <t>Add customer list exposure and access patterns to Privacy Considerations.</t>
        </li>
        <li>
          <t>Add RFC 8288 as a normative reference.</t>
        </li>
      </ul>
      <t>draft-meunier-webbotauth-registry-01</t>
      <ul spacing="normal">
        <li>
          <t>Add contributors.</t>
        </li>
        <li>
          <t>Align the registry draft with the OAuth Dynamic Client Registration Metadata
registry.</t>
        </li>
        <li>
          <t>Add an about URL field.</t>
        </li>
        <li>
          <t>Add ABNF for registry discovery.</t>
        </li>
        <li>
          <t>Clarify known URLs.</t>
        </li>
        <li>
          <t>Add a placeholder for image size.</t>
        </li>
      </ul>
      <t>draft-meunier-webbotauth-registry-00</t>
      <ul spacing="normal">
        <li>
          <t>Initial draft.</t>
        </li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
