<?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-besleaga-agentic-knowledge-wellknown-00" category="info" submissionType="independent" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="knowledge-linkset Well-Known URI">The 'knowledge-linkset' Well-Known URI for Publishing Knowledge Artefacts</title>
    <seriesInfo name="Internet-Draft" value="draft-besleaga-agentic-knowledge-wellknown-00"/>
    <author initials="A. N." surname="Besleaga" fullname="Andrei N. Besleaga">
      <organization>Independent</organization>
      <address>
        <email>andrei.besleaga.nicolae@gmail.com</email>
      </address>
    </author>
    <date year="2026" month="September" day="30"/>
    <workgroup>Independent Submission</workgroup>
    <keyword>Internet-Draft</keyword>
    <keyword>Well-Known URI</keyword>
    <keyword>Linkset</keyword>
    <keyword>Link Set</keyword>
    <keyword>Knowledge Graph</keyword>
    <keyword>Discovery</keyword>
    <keyword>Integrity</keyword>
    <keyword>Agents</keyword>
    <abstract>

<t>This document defines the "knowledge-linkset" well-known URI, at which a
web origin publishes one link set describing the knowledge artefacts it
makes available: graph serializations, a JSON-LD context, an
agent-facing text file, a chunk export, a change ledger, and related
resources. Each artefact link may carry a SHA-256 digest, expressed with
the syntax of HTTP digest fields, so that a client can check that a
retrieved artefact is the one the publisher described. A profile URI
identifies the conventions the link set follows. The mechanism defines
no new media type and no new link relation type: a page points at the
resource with the existing "describedby" relation. This document
requests one well-known URI registration and records the fields of one
profile URI registration that is to be requested separately.</t>
    </abstract>
  </front>
  <middle>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Software agents that read the Web need two different things. They need
to find out <em>who can act</em>: which agent, tool server, or service is
reachable, under what name, with what capabilities. A survey of that
field is available in <xref target="I-D.jimenez-dawn-discovery-landscape"/>. They
also need to find out <em>what is known</em>: which described, versioned,
checkable artefacts an origin publishes about its own subject matter --
a graph, a vocabulary, an index, a text rendering, a change ledger.
The first question has many answers. The second has had no common one:
an origin that publishes a knowledge base in several serializations has
had no uniform place to list them, no uniform way to say which
serialization is which, and no uniform way to let a client check that
what it fetched is what was published.</t>
      <t>This document defines that place. A web origin serves one resource at
<tt>/.well-known/knowledge-linkset</tt> <xref target="RFC8615"/>. The representation is a
link set <xref target="RFC9264"/>: a JSON document whose sole top-level member,
<tt>linkset</tt>, holds link contexts and their typed links. One link context
is used, anchored at the IRI (<xref target="RFC3987"/>) of the published knowledge
Bundle. Its
links name the artefacts, each with a media type, and each optionally
with a <tt>digest</tt> target attribute whose value uses the algorithm token
and syntax of HTTP digest fields <xref target="RFC9530"/>. A profile URI
<xref target="RFC7284"/>, carried either on the media type <xref target="RFC9264"/> or in a
<tt>Link</tt> header field <xref target="RFC6906"/>, tells a client which conventions the
document follows.</t>
      <t>The design reuses what already exists and adds nothing to it beyond a
path and a profile. The document served is an ordinary link set, so a
generic link set client reads it without knowing this specification.
The relation used to point at it from a page is <tt>describedby</tt>, which is
already registered. The integrity attribute reuses an existing digest
algorithm token and an existing structured-field value syntax
<xref target="RFC9651"/>. No media type is defined (<xref target="RFC6838"/>), no URI scheme is defined, and
no registry is created. The precedent for this shape -- a well-known URI
whose representation is a link set identified by a profile URI -- is
<tt>api-catalog</tt> <xref target="RFC9727"/>, which applies it to a different object, an
origin's APIs.</t>
      <t>The canonical, normative definition of the artefacts themselves, of the
Bundle that contains them, and of the byte-level forms their digests
cover, is the AgenticSystemCore Specification <xref target="AGSC-SPEC"/>. This
document specifies the discovery resource: its location, its media
type, its structure, the conventions its profile URI names, and the
behaviour expected of a client that reads it. Everything a publisher
needs in order to serve a conformant discovery document, and everything
a client needs in order to read one, is stated here.</t>
      <section anchor="what-this-document-does-not-do">
        <name>What this document does not do</name>
        <t>This document defines no agent identity and no authentication of
fetchers; it defines no protocol, session, or transport between agents;
it defines no naming or resolution layer for agents; it defines no
expression of preferences about how content may be used; it defines no
read or write interface to an agent's memory; and it does not define
the formats of the artefacts it points at. Publishing a discovery
document grants no rights and no permissions of any kind, and asserts
no property of the artefacts other than that the origin published them.
<xref target="relationship-to-other-work"/> names the work that addresses each of
these topics.</t>
      </section>
    </section>
    <section anchor="conventions-and-terminology">
      <name>Conventions and Terminology</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

<t>Where a line in an example is too long to be shown whole, it is folded
with a trailing "\" as <xref target="RFC8792"/> describes, and the example carries
the note that specification requires.</t>
      <dl>
        <dt>Bundle:</dt>
        <dd>
          <t>The set of items and generated artefacts that one origin publishes
under one anchor. The Bundle IRI is the origin's base URL with a
trailing solidus.</t>
        </dd>
        <dt>artefact:</dt>
        <dd>
          <t>One retrievable representation that belongs to a Bundle: a graph
serialization, a JSON-LD context, a vocabulary file, a text rendering,
a chunk export, a search index, a change ledger, an attachment.</t>
        </dd>
        <dt>discovery document:</dt>
        <dd>
          <t>The link set served at the well-known URI defined by this document.</t>
        </dd>
        <dt>profile:</dt>
        <dd>
          <t>A profile in the sense of <xref target="RFC6906"/>: additional semantics that a
document follows without changing the semantics of its media type for
a client that ignores the profile. The profile URI of this document's
discovery document is given in <xref target="the-profile-uri"/>.</t>
        </dd>
        <dt>node:</dt>
        <dd>
          <t>An origin that serves a discovery document conforming to this
document.</t>
        </dd>
        <dt>peer:</dt>
        <dd>
          <t>A node that another node names in its discovery document with the
<tt>peer</tt> extension relation of <xref target="relations"/>.</t>
        </dd>
      </dl>
    </section>
    <section anchor="the-well-known-uri">
      <name>The 'knowledge-linkset' Well-Known URI</name>
      <t>A node <bcp14>MUST</bcp14> serve its discovery document at the path
<tt>/.well-known/knowledge-linkset</tt> of its origin, over HTTPS. A node <bcp14>MUST</bcp14>
serve exactly one such document; it <bcp14>MUST NOT</bcp14> split the description of
one Bundle across several discovery resources, and it <bcp14>MUST NOT</bcp14> serve a
second, differently named manifest of the same artefacts. A copy of the
document <bcp14>MAY</bcp14> be distributed by other means, for example inside a
release archive, and a node <bcp14>MAY</bcp14> additionally serve the same bytes at a
path of its own choosing.</t>
      <section anchor="media-type-and-profile">
        <name>Media type and profile</name>
        <t>The representation <bcp14>MUST</bcp14> be a JSON link set, media type
<tt>application/linkset+json</tt> <xref target="RFC9264"/>. The profile URI of
<xref target="the-profile-uri"/> <bcp14>MUST</bcp14> be carried in at least one of two ways:</t>
        <ul spacing="normal">
          <li>
            <t>as the <tt>profile</tt> parameter of the media type (<xref target="RFC9264"/>,
Section 5), which is the form a node uses by default:</t>
          </li>
        </ul>
        <figure>
          <name>The profile carried on the media type</name>
          <sourcecode type="http-message"><![CDATA[
NOTE: '\' line wrapping per RFC 8792

Content-Type: application/linkset+json; profile="https://w3id.\
org/agentic-system-core/profile/agentic-knowledge"
]]></sourcecode>
        </figure>
        <ul spacing="normal">
          <li>
            <t>or, where the hosting platform cannot attach a parameter to
<tt>Content-Type</tt>, as a response header field (<xref target="RFC6906"/>):</t>
          </li>
        </ul>
        <figure>
          <name>The profile carried in a Link header field</name>
          <sourcecode type="http-message"><![CDATA[
NOTE: '\' line wrapping per RFC 8792

Link: <https://w3id.org/agentic-system-core/profile/agentic-\
knowledge>; rel="profile"
]]></sourcecode>
        </figure>
        <t>A client <bcp14>MUST</bcp14> accept either form, and a client's conformance <bcp14>MUST NOT</bcp14>
differ according to whether it can read response header fields. A
client that can read only the media type, which is the case for a
browser-resident client reading a cross-origin response, therefore
never loses information.</t>
      </section>
      <section anchor="caching">
        <name>Caching</name>
        <t>A node <bcp14>MUST</bcp14> send an <tt>ETag</tt> on the discovery document. When the entity
tag is derived from the bytes served, it is the lowercase hexadecimal
SHA-256 of those bytes enclosed in double quotes (<xref target="RFC9110"/>,
Section 8.8.3). A node <bcp14>MUST</bcp14> send <tt>Cache-Control: no-cache</tt> on the
discovery document, so that a client revalidates before reuse
(<xref target="RFC9111"/>, Section 5.2.2.4); the document names the current state of
a Bundle and is expected to change whenever the Bundle is rebuilt.
A client <bcp14>SHOULD</bcp14> make conditional requests (<xref target="RFC9110"/>, Section 13).</t>
      </section>
      <section anchor="cross-origin-access">
        <name>Cross-origin access</name>
        <t>The discovery document, and every artefact it names that the node
serves publicly, <bcp14>MUST</bcp14> be served with <tt>Access-Control-Allow-Origin: *</tt>
and <tt>Access-Control-Expose-Headers: Link, ETag, Content-Type</tt>, and <bcp14>MUST
NOT</bcp14> be served with <tt>Access-Control-Allow-Credentials</tt>. A node <bcp14>MUST NOT</bcp14>
require any request header field outside the CORS-safelisted set in
order to obtain the discovery document or any public artefact, so that
a client running in a browser can read them with a simple request.</t>
        <t>A node whose content is gated <bcp14>MUST</bcp14> still serve the discovery document
publicly and with the wildcard above; the discovery document carries no
content. Such a node declares itself with the <tt>agsc-visibility</tt>
attribute of <xref target="declaration-attributes"/> and names, with the <tt>access</tt>
extension relation of <xref target="relations"/>, where a reader obtains
credentials. "Gated" means that the node's content is not public, never
that the node is invisible.</t>
      </section>
    </section>
    <section anchor="the-link-set">
      <name>The Link Set</name>
      <section anchor="top-level-structure">
        <name>Top-level structure</name>
        <t>The document is a JSON object (<xref target="RFC8259"/>) whose sole top-level member
is <tt>linkset</tt> (<xref target="RFC9264"/>, Section 4.2.1). No other top-level member
may be present. A node that produces canonical bytes serializes the
document with JSON Canonicalization Scheme <xref target="RFC8785"/>; a node that
does not <bcp14>MUST</bcp14> at least produce I-JSON. The canonical form matters
because a digest of the discovery document itself, taken by a third
party, is stable only if the bytes are.</t>
        <t>The <tt>linkset</tt> array holds exactly one link context object. Its <tt>anchor</tt>
is the Bundle IRI: the origin's base URL with a trailing solidus, for
example <tt>https://example.org/</tt>. A client <bcp14>MUST</bcp14> ignore an additional link
context object it does not understand.</t>
        <t>Within a link context object, the remaining members are relation names,
each holding an array of link objects (<xref target="RFC9264"/>, Section 4.2). Every
link object <bcp14>MUST</bcp14> carry <tt>href</tt>, and every <tt>href</tt> <bcp14>MUST</bcp14> be an absolute URI
reference (<xref target="RFC3986"/>). Within one relation's array, link objects are
ordered by <tt>href</tt> in code point order, so that two builds of the same
Bundle produce the same bytes.</t>
      </section>
      <section anchor="relations">
        <name>Relations</name>
        <t>A relation name <bcp14>MUST</bcp14> be either a registered short name from the "Link
Relation Types" registry or an extension relation expressed as a URI
(<xref target="RFC8288"/>, Section 2.1.2). An unregistered short name <bcp14>MUST NOT</bcp14> be
used.</t>
        <t>The registered short names used are <tt>describedby</tt>, <tt>alternate</tt>,
<tt>license</tt>, <tt>service-doc</tt>, and <tt>author</tt>. A node that also publishes
related-system links (<xref target="related-system-links"/>) may in addition use
<tt>related</tt>, <tt>service-desc</tt>, <tt>service-meta</tt>, <tt>collection</tt>, <tt>item</tt>, and
<tt>cite-as</tt> (<xref target="RFC8574"/>).</t>
        <t>The extension relations form a closed set. Each is the URI
<tt>https://w3id.org/agentic-system-core/rel#&lt;name&gt;</tt> with <tt>&lt;name&gt;</tt> taken
from the following list, and each such URI dereferences, through
w3id.org, to the section of the published specification that documents
it (<xref target="the-profile-uri"/>).</t>
        <table>
          <name>The closed set of extension relations</name>
          <thead>
            <tr>
              <th align="left">Extension relation name</th>
              <th align="left">Target</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>graph</tt></td>
              <td align="left">a further serialization of the Bundle's graph</td>
            </tr>
            <tr>
              <td align="left">
                <tt>ontology</tt></td>
              <td align="left">the vocabulary the graph uses</td>
            </tr>
            <tr>
              <td align="left">
                <tt>context</tt></td>
              <td align="left">the JSON-LD context of the graph</td>
            </tr>
            <tr>
              <td align="left">
                <tt>now</tt></td>
              <td align="left">the generated state page of the Bundle</td>
            </tr>
            <tr>
              <td align="left">
                <tt>skills</tt></td>
              <td align="left">the index of exported procedure packages</td>
            </tr>
            <tr>
              <td align="left">
                <tt>ledger</tt></td>
              <td align="left">the derived change ledger of the Bundle</td>
            </tr>
            <tr>
              <td align="left">
                <tt>peer</tt></td>
              <td align="left">another node's discovery document</td>
            </tr>
            <tr>
              <td align="left">
                <tt>surface</tt></td>
              <td align="left">an agent-facing surface this node serves</td>
            </tr>
            <tr>
              <td align="left">
                <tt>contribute</tt></td>
              <td align="left">an endpoint that accepts contributions</td>
            </tr>
            <tr>
              <td align="left">
                <tt>access</tt></td>
              <td align="left">a page that says how to obtain credentials</td>
            </tr>
            <tr>
              <td align="left">
                <tt>signature</tt></td>
              <td align="left">a detached signature over the discovery document</td>
            </tr>
            <tr>
              <td align="left">
                <tt>boards</tt></td>
              <td align="left">the index of the Bundle's project boards</td>
            </tr>
          </tbody>
        </table>
        <t>A client <bcp14>MUST</bcp14> ignore a relation name it does not recognize. A node <bcp14>MUST
NOT</bcp14> invent a further extension relation under the same base: the set
above is closed, and a new member is added only by a later version of
<xref target="AGSC-SPEC"/> (<xref target="versions"/>).</t>
      </section>
      <section anchor="target-attributes">
        <name>Target attributes</name>
        <t>A link object <bcp14>MAY</bcp14> carry the target attributes <tt>type</tt>, <tt>title</tt>, and
<tt>hreflang</tt> (<xref target="RFC8288"/>, Section 3.4.1; <xref target="RFC9264"/>, Section 4.2.4.1),
and the extension target attribute <tt>profile</tt>, whose values are profile
URIs (<xref target="RFC6906"/>). As <xref target="RFC9264"/>, Section 4.2.4.1 requires, the
values of <tt>type</tt> and <tt>title</tt> are strings and the value of <tt>hreflang</tt> is
an array of strings. <tt>type</tt> is an advisory hint: a client <bcp14>MUST NOT</bcp14>
depend on it, and <bcp14>MUST</bcp14> use the media type of the response it actually
receives.</t>
        <t>Every extension target attribute value, <tt>profile</tt> included, is an array
of strings, even when one value is carried (<xref target="RFC9264"/>, Section
4.2.4.3). A client <bcp14>MUST</bcp14> ignore an extension target attribute it does
not recognize.</t>
        <section anchor="the-digest-attribute">
          <name>The digest attribute</name>
          <t>A link object <bcp14>MAY</bcp14> carry the target attribute <tt>digest</tt>. Its value is an
array holding one string. That string is the serialization of a
Dictionary (<xref target="RFC9651"/>, Section 3.2) with a single member whose key is
the algorithm name <tt>sha-256</tt> from the "Hash Algorithms for HTTP Digest
Fields" registry (<xref target="RFC9530"/>, Section 7.2) and whose value is a Byte
Sequence (<xref target="RFC9651"/>, Section 3.3.5) serialized as specified in
<xref target="RFC9651"/>, Section 4.1, that is, base64 between colons:</t>
          <sourcecode type="json"><![CDATA[
"digest": [
  "sha-256=:JeigkAtOPS9f9BzKym+X6J2O4awt53GEua1AhIAiLfE=:"
]
]]></sourcecode>
          <t>The digest is taken over the canonical bytes of the target: the bytes
the publisher generated and serves, before any content coding applied
by the transfer. A client that has retrieved the target compares the
digest against the decoded representation data. The attribute name is
deliberately not prefixed, so that a generic link set client that
already understands digest fields can read it.</t>
        </section>
        <section anchor="bundle-fact-attributes">
          <name>Bundle-fact attributes</name>
          <t>Facts about the Bundle as a whole ride on one link and one link only:
the <tt>describedby</tt> link of the anchor whose target is the Bundle's
JSON-LD graph. They are:</t>
          <dl>
            <dt><tt>agsc-spec-version</tt>:</dt>
            <dd>
              <t>one value, the version of <xref target="AGSC-SPEC"/> the node publishes against.</t>
            </dd>
            <dt><tt>agsc-generated-at</tt>:</dt>
            <dd>
              <t>one value, the instant the artefacts were generated, as
<tt>YYYY-MM-DDTHH:MM:SSZ</tt> -- UTC, second precision, no offset. A node
that supports reproducible builds derives it from the build's source
date rather than from the wall clock.</t>
            </dd>
            <dt><tt>agsc-counts</tt>:</dt>
            <dd>
              <t>one string per item type, of the form <tt>&lt;type-plural&gt;=&lt;n&gt;</tt>, in code
point order of the type name, counted over the published set.</t>
            </dd>
            <dt><tt>agsc-bundle-hash</tt>:</dt>
            <dd>
              <t>one value, the digest of the Bundle's canonical N-Quads
serialization, in the syntax of <xref target="the-digest-attribute"/>; it equals
the <tt>digest</tt> of the <tt>graph</tt> link to that serialization.</t>
            </dd>
            <dt><tt>agsc-bundle-version</tt>:</dt>
            <dd>
              <t>one value, the publisher's content version for the state the
artefacts were generated from: a short name a person can read and
cite, where the hash says only whether two retrievals carry the same
content. It is derived by the publisher and is opaque to a client,
which <bcp14>MUST NOT</bcp14> order two values or infer a sequence from them.</t>
            </dd>
          </dl>
          <t>One further attribute rides on the <tt>ledger</tt> extension relation's link
and nowhere else:</t>
          <dl>
            <dt><tt>agsc-ledger-head</tt>:</dt>
            <dd>
              <t>one value, the lowercase hexadecimal SHA-256 of the last entry of the
derived change ledger. A client that keeps the head it saw on an
earlier retrieval can detect a ledger that no longer extends the one
it read.</t>
            </dd>
          </dl>
          <t>A client <bcp14>MUST NOT</bcp14> read a bundle-fact attribute from any other link.</t>
        </section>
        <section anchor="declaration-attributes">
          <name>Declaration attributes</name>
          <t>The extension target attributes below declare what a node is, rather
than what it published. They are present at every level of
completeness.</t>
          <dl>
            <dt><tt>agsc-surface</tt> and <tt>agsc-surface-version</tt>:</dt>
            <dd>
              <t>on a <tt>surface</tt> link, one value each: the kind of agent-facing surface
the node serves, and, where the surface is defined by an external
specification, the revision of that specification the node targets.</t>
            </dd>
            <dt><tt>agsc-access</tt>:</dt>
            <dd>
              <t>on a <tt>surface</tt> link, one value: <tt>none</tt>, <tt>consent</tt>, or <tt>credential</tt>.</t>
            </dd>
            <dt><tt>agsc-visibility</tt>:</dt>
            <dd>
              <t>on the anchor's <tt>describedby</tt> link, the single value <tt>restricted</tt>,
emitted only by a node whose content is gated. A node whose content
is public carries no such attribute.</t>
            </dd>
            <dt><tt>agsc-contribute-mode</tt>:</dt>
            <dd>
              <t>on a <tt>contribute</tt> link, one value naming how contributions are
accepted.</t>
            </dd>
            <dt><tt>agsc-tombstone</tt>:</dt>
            <dd>
              <t>on the anchor's <tt>describedby</tt> link, one instant in the form of
<tt>agsc-generated-at</tt>, present only on a node that has stopped
publishing (<xref target="tombstones"/>).</t>
            </dd>
          </dl>
          <t>A client that meets a value it does not know in any of these attributes
<bcp14>MUST NOT</bcp14> fail. It <bcp14>MUST</bcp14> treat the unknown value as the most restrictive
member of that attribute's list.</t>
        </section>
      </section>
      <section anchor="the-reduced-form">
        <name>The reduced form</name>
        <t>A publisher without a build engine -- a content management system or a
wiki that exports static files -- publishes the same link set with
every <tt>digest</tt> attribute and every bundle-fact attribute omitted. Such
a publisher has no ledger, no build instant, no bundle hash and no
content version, and this document does not ask for any of them. The declaration attributes of
<xref target="declaration-attributes"/> are unaffected.</t>
        <t>There is no structural difference between the two forms: <tt>linkset</tt> is
the sole top-level member in both, the anchor is the Bundle IRI in
both, and the relation set is the same. A client <bcp14>MUST</bcp14> treat a link
without a <tt>digest</tt> attribute as <em>unverified</em>, never as <em>invalid</em>.</t>
      </section>
      <section anchor="related-system-links">
        <name>Related-system links</name>
        <t>A node <bcp14>MAY</bcp14> carry, in the same link context, links to other discovery
documents and to related systems: an agent-facing text file, a dataset
description, a catalogue entry, an agent card, a tool server's
description, a query endpoint. Such links use registered short names
only, chosen by meaning: <tt>describedby</tt> when the target describes this
node, <tt>alternate</tt> when the target is the same knowledge in another
representation, <tt>related</tt> for a related resource, <tt>service-desc</tt>,
<tt>service-doc</tt>, and <tt>service-meta</tt> for an interface, <tt>collection</tt>
and <tt>item</tt> for containment, and <tt>cite-as</tt> (<xref target="RFC8574"/>) for the
identifier a reader should cite in preference to the node, such as a
persistent identifier's landing page. Each <bcp14>MUST</bcp14> carry <tt>type</tt> and <bcp14>MAY</bcp14>
carry <tt>profile</tt> and <tt>title</tt>.</t>
        <t>A client <bcp14>MUST</bcp14> ignore a related-system link it does not understand. No
related-system link affects any digest, and none is followed by the
walk of <xref target="following-peers"/>, which follows <tt>peer</tt> links only.</t>
      </section>
    </section>
    <section anchor="discovery-from-a-page">
      <name>Discovery from a Page</name>
      <t>A node <bcp14>SHOULD</bcp14> place, in the <tt>head</tt> element of every HTML page it
generates:</t>
      <sourcecode type="html"><![CDATA[
<link rel="describedby"
      href="/.well-known/knowledge-linkset"
      type="application/linkset+json">
]]></sourcecode>
      <t>and <bcp14>SHOULD</bcp14> send, at least on the origin's root route, the equivalent
response header field:</t>
      <sourcecode type="http-message"><![CDATA[
Link: </.well-known/knowledge-linkset>; rel="describedby";
  type="application/linkset+json"
]]></sourcecode>
      <section anchor="why-describedby">
        <name>Why 'describedby', and why no new relation</name>
        <t><tt>describedby</tt> is registered in the "Link Relation Types" registry by
the POWDER Description Resources Recommendation <xref target="POWDER-DR"/>, whose
Appendix D defines it and whose Section 4.1.4 uses it; <xref target="RFC6892"/> registers its
inverse, <tt>describes</tt>. Its registered meaning -- the target is a
description of the context -- is exactly the meaning of this link. What
<em>kind</em> of description the target is, is said by the target's media type
and by its profile URI, not by a new relation name. A new relation
would add a name for a distinction the media type already draws, and
would leave every existing <tt>describedby</tt>-aware client unable to use it.</t>
        <t>A page may carry several <tt>describedby</tt> links, because other
conventions, <xref target="LLMSTXT"/> among them, use the same relation for their
own description resources. A client selects this one by
<tt>type="application/linkset+json"</tt>, and, having fetched it, confirms the
profile (<xref target="media-type-and-profile"/>). Where several candidates remain,
a client <bcp14>SHOULD</bcp14> fetch the one whose <tt>href</tt> resolves to
<tt>/.well-known/knowledge-linkset</tt> on the origin.</t>
        <t>This document therefore requests no link relation registration.</t>
      </section>
    </section>
    <section anchor="the-profile-uri">
      <name>The Profile URI</name>
      <t>The profile URI of the discovery document is</t>
      <artwork><![CDATA[
https://w3id.org/agentic-system-core/profile/agentic-knowledge
]]></artwork>
      <section anchor="what-the-profile-fixes">
        <name>What the profile fixes</name>
        <t>A client that ignores the profile reads the document as a link set and
nothing is lost (<xref target="RFC6906"/>, Section 3). A client that recognizes it
may rely on the following, all of which are specified in this document:</t>
        <ul spacing="normal">
          <li>
            <t><tt>linkset</tt> is the sole top-level member, and the array holds one link
context whose <tt>anchor</tt> is the Bundle IRI
(<xref target="top-level-structure"/>);</t>
          </li>
          <li>
            <t>the relation set is the closed set of <xref target="relations"/>, which only a
later version of <xref target="AGSC-SPEC"/> extends (<xref target="versions"/>);</t>
          </li>
          <li>
            <t><tt>digest</tt>, where present, is a single-member Dictionary keyed
<tt>sha-256</tt> over the canonical bytes of the target
(<xref target="the-digest-attribute"/>);</t>
          </li>
          <li>
            <t>bundle facts ride on the anchor's <tt>describedby</tt> link to the graph,
and the ledger head on the <tt>ledger</tt> link, and nowhere else
(<xref target="bundle-fact-attributes"/>);</t>
          </li>
          <li>
            <t>every extension target attribute value is an array of strings
(<xref target="target-attributes"/>).</t>
          </li>
        </ul>
        <t>The profile constrains no other document and changes the semantics of
<tt>application/linkset+json</tt> for no client.</t>
      </section>
      <section anchor="carriage-and-resolution">
        <name>Carriage and resolution</name>
        <t>The profile URI is carried as specified in <xref target="media-type-and-profile"/>:
on the media type, or in a <tt>Link</tt> header field, or both.</t>
        <t>The profile URI, and every extension relation URI of <xref target="relations"/>,
resolves through w3id.org, a persistent-identifier service, with an
HTTP 303 redirect (<xref target="RFC9110"/>, Section 15.4.4) to a published
specification page. That page carries one fragment identifier for the
list of relations and one per relation name, so that every extension
relation URI dereferences to its own documentation, as <xref target="RFC8288"/>,
Section 2.1.2, expects of an extension relation.</t>
        <t>Registration of the profile URI is requested independently of this
document; see <xref target="iana-profile-uri"/>.</t>
      </section>
      <section anchor="versions">
        <name>Versions</name>
        <t>The profile URI carries no version number. It names the same profile
for every version of <xref target="AGSC-SPEC"/> that has the same major version
number, and a discovery document in the full form states the version
it follows in its <tt>agsc-spec-version</tt> attribute
(<xref target="bundle-fact-attributes"/>).</t>
        <t>A later minor version of <xref target="AGSC-SPEC"/> only adds to what this document
describes: further members of the closed set of extension relations of
<xref target="relations"/>, under the same base URI and each with its own fragment
on the specification page of <xref target="carriage-and-resolution"/>; further
extension target attributes with the <tt>agsc-</tt> prefix; further
related-system relations once they are registered; and further values
of the declaration attributes. A client written against this document
ignores an unknown relation name (<xref target="relations"/>), an unknown extension
target attribute (<xref target="target-attributes"/>) and a related-system link it
does not understand (<xref target="related-system-links"/>), and treats an unknown
declaration value as <xref target="declaration-attributes"/> requires, so it reads a
document written against a later minor version without error and
without change. A change that such a client could not read in that way
is made only in a new major version of <xref target="AGSC-SPEC"/>.</t>
      </section>
    </section>
    <section anchor="client-behaviour">
      <name>Client Behaviour</name>
      <t>A client of this document is any program that fetches a discovery
document: a crawler, an agent runtime, a validator, a browser script.
This section states what such a client is required to do. A client that
only fetches one document from an origin it was given needs
<xref target="untrusted-content"/> and <xref target="fetch-safety"/>; a client that follows
<tt>peer</tt> links needs all of it.</t>
      <section anchor="fetch-safety">
        <name>Fetch safety</name>
        <ul spacing="normal">
          <li>
            <t>A client <bcp14>MUST</bcp14> fetch a discovery document with an absolute URL whose
scheme is <tt>https</tt>. <tt>http</tt> is permitted only to a loopback address and
only when the client has been explicitly placed in a development
mode. Any other scheme, and any relative reference, <bcp14>MUST</bcp14> be refused.</t>
          </li>
          <li>
            <t>Before connecting, a client <bcp14>MUST</bcp14> resolve the host and <bcp14>MUST</bcp14> refuse any
resolved address that is not globally reachable according to the IANA
IPv4 Special-Purpose Address Registry <xref target="IANA-IPV4-SPECIAL"/> or, for an
IPv6 address, according to the IANA IPv6 Special-Purpose Address
Registry <xref target="IANA-IPV6-SPECIAL"/>. A client <bcp14>MUST</bcp14> equally
refuse any IPv6 address that embeds an IPv4 address -- IPv4-mapped,
IPv4-compatible, NAT64, Teredo, and 6to4 addresses -- classifying the
embedded IPv4 address instead, and any multicast address. A host that
resolves to several addresses <bcp14>MUST</bcp14> be refused if any one of them is
refused.</t>
          </li>
          <li>
            <t>A client <bcp14>MUST</bcp14> classify addresses with a tested library or with the
platform's own classification, and <bcp14>MUST NOT</bcp14> parse address literals by
hand.</t>
          </li>
          <li>
            <t>A client <bcp14>MUST</bcp14> connect to one of the addresses it classified, <bcp14>MUST NOT</bcp14>
re-resolve the host between classification and connection, and <bcp14>MUST</bcp14>
re-verify the remote address of the established connection against
the same rules, closing the connection on a mismatch. This is the
guard against DNS rebinding.</t>
          </li>
          <li>
            <t>A client <bcp14>MUST</bcp14> bound the number of redirects it follows, <bcp14>MUST</bcp14> re-apply
the two rules above to every hop, and <bcp14>MUST NOT</bcp14> follow a redirect to a
non-<tt>https</tt> URL other than the development loopback case. The final
URL of a redirected fetch is not substituted for the URL that was
declared.</t>
          </li>
          <li>
            <t>A client <bcp14>MUST</bcp14> bound the size of a discovery document it will read.
One mebibyte is a sufficient bound for the documents this document
describes; a client <bcp14>MUST</bcp14> treat a larger response as unreadable rather
than buffering it.</t>
          </li>
          <li>
            <t>A client <bcp14>SHOULD</bcp14> bound the time it waits for a response.</t>
          </li>
        </ul>
      </section>
      <section anchor="following-peers">
        <name>Following peers</name>
        <t>A node names peers with the <tt>peer</tt> extension relation; the target is
the peer's discovery document URL. Two nodes are peers of each other
when each names the other; nothing else establishes the relation, and
nothing about it is negotiated.</t>
        <t>A client that walks from a starting node <bcp14>MUST</bcp14>:</t>
        <ul spacing="normal">
          <li>
            <t>bound the depth of the walk, the starting node being depth zero;</t>
          </li>
          <li>
            <t>consider at most a fixed number of <tt>peer</tt> links per discovery
document, in document order, ignoring the rest;</t>
          </li>
          <li>
            <t>issue at most a fixed number of requests per walk, counting every
request including redirects;</t>
          </li>
          <li>
            <t>keep a visited set keyed by the canonical well-known URL, and never
fetch a member of it twice, which is the guard against cycles across
origins;</t>
          </li>
          <li>
            <t>treat a peer whose fetch times out, returns a non-2xx status, exceeds
the size bound, or yields a document that is not a conformant
discovery document as unreachable: record it, skip it, and never
retry it within the walk.</t>
          </li>
        </ul>
        <t>A client that stops because a bound was reached, or that ignored links
beyond its per-document bound, <bcp14>MUST</bcp14> report the result as partial, with
the set of nodes it did visit. A client that completes without touching
any bound <bcp14>MUST</bcp14> report the result as complete. The number of requests a
walk can make is bounded by the smaller of the request bound and the
sum, over the permitted depths, of the per-document bound raised to the
power of the depth.</t>
        <t>Suggested defaults, which a deployment may lower and which this
document does not require a client to exceed: depth three, fifty <tt>peer</tt>
links per document, five hundred requests per walk, ten seconds per
request, three redirects per fetch.</t>
      </section>
      <section anchor="untrusted-content">
        <name>Untrusted content</name>
        <t>Everything a client obtains from a node other than the one it is acting
for is untrusted data. A client <bcp14>MUST</bcp14> carry that fact with the data: a
search hit, a retrieved item, a chunk, or a quotation derived from
another node <bcp14>MUST</bcp14> be labelled untrusted and <bcp14>MUST</bcp14> name the origin it
came from, through every interface the client offers and every export
it produces. A client <bcp14>MUST NOT</bcp14> merge another node's prose into its own
published artefacts other than through a reviewed proposal that records
the other node's IRI as the source.</t>
      </section>
      <section anchor="federation-is-client-side">
        <name>Federation is client-side</name>
        <t>The walk of <xref target="following-peers"/> is performed by the client. A node's
query surface is the set of artefacts it publishes. A node <bcp14>MUST NOT</bcp14>
fetch another node while building its own artefacts, and <bcp14>MUST NOT</bcp14>
expose an endpoint that fetches another node on a caller's behalf.
There is therefore no server-to-server call anywhere in this design,
and no node can be made into an open relay by naming it as a peer.</t>
      </section>
    </section>
    <section anchor="relationship-to-other-work">
      <name>Relationship to Other Work</name>
      <t>This section records what neighbouring work does. It is informative.
Every statement is of the form "that work addresses X"; none is a
comparison.</t>
      <t><tt>api-catalog</tt> <xref target="RFC9727"/> registers a well-known URI whose
representation is a link set identified by a profile URI, listing an
origin's APIs. It is the precedent for the shape used here, applied to
a different object.</t>
      <t><tt>llms.txt</tt> <xref target="LLMSTXT"/> is a community convention for a Markdown file at
<tt>/llms.txt</tt> that presents an origin's content for consumption by
language models. Version 2, modified 10 August 2026, recommends
<tt>rel="describedby"</tt> for pointing at the file and <tt>rel="alternate"</tt> with
<tt>type="text/markdown"</tt> for pointing at a page's Markdown rendering. A
node may name such a file with the <tt>alternate</tt> relation.</t>
      <t><xref target="I-D.arsentev-llm-context-discovery"/> defines discovery of a
publisher-curated context file, typically <tt>/llms.txt</tt>, through a
well-known URI, a link relation, and a <tt>robots.txt</tt> record, and sets
size bounds on the index and detail resources. It discovers one text
file.</t>
      <t><xref target="I-D.serra-mcp-discovery-uri"/> defines an <tt>mcp</tt> URI scheme and the
discovery of Model Context Protocol servers through a well-known path
and DNS TXT records.</t>
      <t><xref target="MCP"/> defines a protocol between a client and a tool server, and
carries proposals for server cards that describe a server. A node may
declare a Model Context Protocol server as one of its surfaces
(<xref target="declaration-attributes"/>).</t>
      <t><xref target="A2A"/> defines an agent card, served at a well-known path, that
describes an agent's capabilities and interfaces. A node may declare an
agent card as one of its surfaces.</t>
      <t>The proposed <tt>dawn</tt> working group <xref target="DAWN-CHARTER"/> addresses the
discovery of agents by name. The survey
<xref target="I-D.jimenez-dawn-discovery-landscape"/> catalogues the mechanisms in
that space.</t>
      <t>The <tt>agentproto</tt> BOF request <xref target="AGENTPROTO-BOF"/> addresses long-lived
sessions between agents and the resources they use.</t>
      <t>The <tt>aipref</tt> working group defines a vocabulary for expressing
preferences about AI usage of content <xref target="I-D.ietf-aipref-vocab"/> and the
means of attaching such preferences to content in HTTP
<xref target="I-D.ietf-aipref-attach"/>. This document defines no preference
expression; a publisher attaches preferences by those means, and by
<tt>robots.txt</tt> <xref target="RFC9309"/>, to the artefacts a discovery document names.</t>
      <t>The <tt>webbotauth</tt> working group defines HTTP message signatures for
automated traffic <xref target="I-D.ietf-webbotauth-httpsig-protocol"/>, which
identify the client making a request.</t>
      <t>The W3C AI Agent Memory Interoperability Community Group <xref target="AIMEM-CG"/>
addresses the interoperability of protocols for AI agent memory. The
artefacts a discovery document names are read-only published files, not
a memory interface.</t>
      <t>The Open Knowledge Format <xref target="OKF"/> defines a content model of Markdown
files with front matter and an index file. It calls its unit a
"Knowledge Bundle"; the Bundle of this document is a different object
and the two names are not interchangeable.</t>
      <t>VoID <xref target="VOID"/> defines a vocabulary for describing RDF datasets and is
associated with the registered well-known URI <tt>void</tt>. DCAT
<xref target="DCAT3"/> defines a vocabulary for describing catalogues and datasets.
A publisher that also publishes such a description names it with a
further <tt>describedby</tt> link (<xref target="related-system-links"/>).</t>
      <t>Two further Internet-Drafts request well-known URI suffixes for
AI-related discovery: <xref target="I-D.aiendpoint-ai-discovery"/> requests <tt>ai</tt>
(with <tt>ai-discovery</tt> as an alternative) for a description of a service's
capabilities, and <xref target="I-D.car-ai-txt-wellknown"/> requests <tt>ai.txt</tt> and
<tt>ai.json</tt> for declarations of AI usage preferences and licensing. Both
describe an endpoint or a policy. The suffix requested here names the
class of resource served -- a link set of published knowledge artefacts
-- and deliberately does not begin with <tt>ai</tt> or <tt>agent</tt>.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="what-a-digest-proves">
        <name>What a digest proves</name>
        <t>A <tt>digest</tt> attribute binds an artefact to the discovery document. It
lets a client detect that the artefact it retrieved is not the one the
publisher described: a truncated file, a cache that served an older
copy, a mirror that altered the bytes, a transfer that corrupted them.</t>
        <t>A <tt>digest</tt> attribute does not bind the discovery document to an author.
An attacker who controls the origin controls the discovery document and
the artefacts together, and can make them agree. A client obtains the
identity of the publisher from the TLS certificate and the DNS name of
the origin, and from nothing in the document. A publisher who needs a
client to verify authorship independently of the origin signs the
responses -- <xref target="RFC9421"/> defines one way -- or publishes a detached
signature and names it with the <tt>signature</tt> extension relation
(<xref target="relations"/>). This document defines no signature format: a client
<bcp14>MUST</bcp14> ignore that link if it does not understand the target, and the
link affects no digest and no walk.</t>
        <t>A client that keeps the <tt>agsc-ledger-head</tt> value it saw on an earlier
retrieval, and that later reads a head that does not extend the earlier
one, has observed a rollback or a replacement of the ledger, and <bcp14>SHOULD</bcp14>
treat it as such rather than as an ordinary update.</t>
      </section>
      <section anchor="fetching-security">
        <name>Fetching</name>
        <t>A discovery document is a list of URLs supplied by a third party, and a
client that follows them is a request forwarder. <xref target="fetch-safety"/> is
therefore normative and not advisory: the scheme restriction, the
address refusals, the rule against re-resolving between classification
and connection, the re-verification of the established connection, the
redirect bounds, and the size bound together keep a client from being
used to reach a network the attacker cannot reach, to probe an internal
address space, or to be held open. A client that omits them can be
directed, by any origin it reads, at any address its network can reach.</t>
        <t>Because no node ever fetches another node (<xref target="federation-is-client-side"/>),
a node cannot be turned into a request forwarder by being named as a
peer. The risk is entirely on the client side, where the bounds apply.</t>
      </section>
      <section anchor="content-is-data">
        <name>Content is data</name>
        <t>The artefacts a discovery document names are documents, and the prose
in them is data. A client that passes retrieved prose to a language
model, a shell, a query engine, or any other interpreter <bcp14>MUST</bcp14> treat it
as data: never executed, never interpolated into a path, a URL, or a
command string, never resolved as an identifier, and never read as an
instruction to the client. Prose retrieved from another node carries
the untrusted label of <xref target="untrusted-content"/> to every place it is used.</t>
      </section>
      <section anchor="what-is-not-claimed">
        <name>What is not claimed</name>
        <t>The mechanisms of this document prove neither safety nor the absence of
a novel attack carried in the content of an artefact. A digest proves
only that an artefact is what was published. An implementation <bcp14>MUST NOT</bcp14>
claim more.</t>
      </section>
      <section anchor="exposure">
        <name>Exposure</name>
        <t>A discovery document is public. A publisher <bcp14>MUST NOT</bcp14> name in it any
resource that is not intended to be public, and <bcp14>MUST NOT</bcp14> let the set of
links reveal the existence of resources it does not serve publicly. A
node whose content is gated serves the discovery document publicly all
the same (<xref target="cross-origin-access"/>), which is a deliberate disclosure
that the node exists.</t>
        <t>A node whose content is gated <bcp14>MUST</bcp14> omit the <tt>agsc-counts</tt>,
<tt>agsc-bundle-hash</tt> and <tt>agsc-bundle-version</tt> attributes and the
<tt>ledger</tt> link, and <bcp14>MUST</bcp14> omit every <tt>digest</tt> whose target it does not
serve without authentication: a digest over a gated artefact lets
anyone confirm a guess of its content, and the counts and the content
version disclose activity. It still carries <tt>agsc-spec-version</tt> and
<tt>agsc-generated-at</tt>, which say only that the node exists and is
current.</t>
        <t>The path <tt>/.well-known/</tt> on an origin <bcp14>MUST</bcp14> be under the publisher's
control. On static hosting this means that the file is produced by the
publisher's build and upload path and by nothing else.</t>
      </section>
      <section anchor="size">
        <name>Size</name>
        <t>A client <bcp14>MUST</bcp14> bound the size of a discovery document it reads
(<xref target="fetch-safety"/>) and the number of requests a walk may make
(<xref target="following-peers"/>). A publisher <bcp14>SHOULD</bcp14> keep a discovery document
small: it describes a Bundle's artefacts, not its items.</t>
      </section>
      <section anchor="tombstones">
        <name>Tombstones</name>
        <t>A node that stops publishing <bcp14>MUST</bcp14> keep serving a valid discovery
document whose anchor's <tt>describedby</tt> link carries the
<tt>agsc-tombstone</tt> attribute of <xref target="declaration-attributes"/>, <bcp14>MAY</bcp14> carry an
<tt>alternate</tt> link to a successor node's discovery document, and <bcp14>MAY</bcp14> omit
every other artefact link.</t>
        <t>A client <bcp14>MUST NOT</bcp14> treat a successor named that way as the same node. It
<bcp14>MUST</bcp14> establish the peer relation with the successor afresh, and
everything it derives from the successor carries the successor's own
Bundle IRI as its origin (<xref target="untrusted-content"/>). A walk
(<xref target="following-peers"/>) does not descend into a tombstoned node.</t>
      </section>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>A discovery document is a static description of an origin's own
published artefacts. Serving it collects nothing, sets no cookie,
carries no identifier of a reader, and requires no request header field
beyond those a simple cross-origin request already carries
(<xref target="cross-origin-access"/>). A client's retrieval appears in the
publisher's server logs like any other request for a static file.</t>
      <t>The document may name an <tt>author</tt> link, and the artefacts it points at
may contain personal data. What appears there is chosen by the
publisher, and this document requires no personal data anywhere in the
discovery document. A publisher <bcp14>SHOULD</bcp14> use a role rather than a
personal contact where one will do.</t>
      <t>A client <bcp14>SHOULD NOT</bcp14> send identifying header fields beyond those
<xref target="RFC9110"/> makes ordinary when fetching a discovery document, and a
client walking peers <bcp14>SHOULD NOT</bcp14> disclose to one node which other nodes
it has visited.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document requests one registration in an existing registry and
records the fields of one further registration that is to be requested
separately. It creates no
registry, requests no media type, requests no URI scheme, and requests
no link relation type. No allocation described here requires IETF
Review or Standards Action.</t>
      <section anchor="iana-well-known-uri">
        <name>Well-Known URI Registration</name>
        <t>IANA is requested to register the following entry in the "Well-Known
URIs" registry, per <xref target="RFC8615"/>, Section 3.1:</t>
        <ul spacing="normal">
          <li>
            <t><strong>URI suffix</strong>: knowledge-linkset</t>
          </li>
          <li>
            <t><strong>Change controller</strong>: Andrei N. Besleaga
(andrei.besleaga.nicolae@gmail.com)</t>
          </li>
          <li>
            <t><strong>Specification document(s)</strong>: This document.</t>
          </li>
          <li>
            <t><strong>Status</strong>: provisional</t>
          </li>
          <li>
            <t><strong>Related information</strong>: Used with the "https" URI scheme. The
resource is an <tt>application/linkset+json</tt> document <xref target="RFC9264"/>
carrying the profile URI
<tt>https://w3id.org/agentic-system-core/profile/agentic-knowledge</tt>,
whose registration is described in <xref target="iana-profile-uri"/>.</t>
          </li>
        </ul>
        <t>The suffix names the class of resource served -- a link set of the
knowledge artefacts an origin publishes -- rather than a subject area,
in keeping with the precision <xref target="RFC8615"/>, Section 3, expects of a
registered name. Provisional status is requested because this is an
Independent Submission; the designated experts may promote the entry to
permanent once the resource is found to be in wide use (<xref target="RFC8615"/>,
Section 3.1).</t>
      </section>
      <section anchor="iana-profile-uri">
        <name>Profile URI</name>
        <t>Registration of the following profile URI in the "Profile URIs"
registry (<xref target="RFC7284"/>, Section 4) is to be requested separately from
this document; that registry's policy is First Come First Served. The
fields are given here so that this document, which specifies the
profile, records them:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Profile URI</strong>:
<tt>https://w3id.org/agentic-system-core/profile/agentic-knowledge</tt></t>
          </li>
          <li>
            <t><strong>Common Name</strong>: AgenticSystemCore knowledge link set profile</t>
          </li>
          <li>
            <t><strong>Description</strong>: Identifies an <tt>application/linkset+json</tt> document
<xref target="RFC9264"/> that describes a published knowledge Bundle: one link
context whose anchor is the Bundle IRI, links to the Bundle's
artefacts -- graph serializations, a JSON-LD context, a vocabulary, a
chunk export, an agent-facing text file, a change ledger -- each
optionally carrying a <tt>digest</tt> target attribute in the syntax of
<xref target="RFC9530"/>, and the bundle-fact and declaration target attributes
this document defines. Served at <tt>/.well-known/knowledge-linkset</tt>;
linked from pages with <tt>rel="describedby"</tt> and
<tt>type="application/linkset+json"</tt>.</t>
          </li>
          <li>
            <t><strong>Reference</strong>: This document; and <xref target="AGSC-SPEC"/>, which defines the
artefacts and their canonical bytes.</t>
          </li>
          <li>
            <t><strong>Notes</strong>: The profile does not change the semantics of
<tt>application/linkset+json</tt> for a client that ignores it (<xref target="RFC6906"/>,
Section 3); it adds integrity, bundle-fact, and declaration target
attributes that a client <bcp14>MAY</bcp14> use. The same profile URI serves every
version of the AgenticSystemCore specification with the same major
version number; a document in the full form states the version it
follows in its <tt>agsc-spec-version</tt> attribute. Change controller:
Andrei N. Besleaga, Independent, andrei.besleaga.nicolae@gmail.com.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <ul empty="true">
        <li>
          <t>[Note to the RFC Editor: please remove this section before
publication.]</t>
        </li>
      </ul>
      <t>This section records the status of known implementations of the
protocol defined by this specification at the time of posting of
this Internet-Draft, and is based on a proposal described in
<xref target="RFC7942"/>.  The description of implementations in this section is
intended to assist the IETF in its decision processes in
progressing drafts to RFCs.  Please note that the listing of any
individual implementation here does not imply endorsement by the
IETF.  Furthermore, no effort has been spent to verify the
information presented here that was supplied by IETF contributors.
This is not intended as, and must not be construed to be, a
catalog of available implementations or their features.  Readers
are advised to note that other implementations may exist.</t>
      <t>According to <xref target="RFC7942"/>, "this will allow reviewers and working
groups to assign due consideration to documents that have the
benefit of running code, which may serve as evidence of valuable
experimentation and feedback that have made the implemented
protocols more mature.  It is up to the individual working groups
to use this information as they see fit".
      </t>
      <t>The implementations recorded here are those of the author, at the time
of writing.</t>
      <t><strong>Reference node.</strong></t>
      <ul spacing="normal">
        <li>
          <t>Organization: the author (Independent).</t>
        </li>
        <li>
          <t>Name and description: the node at <tt>https://agenticsystemcore.com/</tt>,
a static site that serves a discovery document at
<tt>/.well-known/knowledge-linkset</tt>, the artefacts it names, and the
published specification that the profile URI and the extension
relation URIs resolve to.</t>
        </li>
        <li>
          <t>Level of maturity: working implementation of a specification that is
at release-candidate status; the node is public at the address above,
and the reference engine is publicly released at 1.0.0-rc.6 (npm and
PyPI <tt>agentic-system-core</tt>).</t>
        </li>
        <li>
          <t>Coverage: <xref target="the-well-known-uri"/>, <xref target="the-link-set"/>,
<xref target="discovery-from-a-page"/>, and <xref target="the-profile-uri"/>, in the full form;
the reduced form of <xref target="the-reduced-form"/> is exercised by the
validator's level-0 mode.</t>
        </li>
        <li>
          <t>Version compatibility: <xref target="AGSC-SPEC"/>.</t>
        </li>
        <li>
          <t>Licensing: the site's own terms; see the node.</t>
        </li>
        <li>
          <t>Contact: the author.</t>
        </li>
      </ul>
      <t><strong>Validator.</strong></t>
      <ul spacing="normal">
        <li>
          <t>Organization: the author (Independent).</t>
        </li>
        <li>
          <t>Name and description: <tt>validate-wellknown</tt>, a command-line validator
that takes a URL or a local file and checks that the response media
type is <tt>application/linkset+json</tt> or that a <tt>Link</tt> header field
names the profile URI; that <tt>linkset</tt> is the sole top-level member;
that every relation name is a registered short name or a member of
the closed extension set; that every extension target attribute value
is an array of strings; that the reduced form's omissions are
accepted where the reduced form is claimed and that the digests and
bundle facts are present and recomputable otherwise. A <tt>--peer</tt> flag
performs the mutual test of <xref target="following-peers"/> and accepts two local
files, so that the test runs with no network access.</t>
        </li>
        <li>
          <t>Level of maturity: working implementation; publicly released with
the reference engine at 1.0.0-rc.6 (npm and PyPI
<tt>agentic-system-core</tt>).</t>
        </li>
        <li>
          <t>Coverage: <xref target="the-well-known-uri"/>, <xref target="the-link-set"/>, and the mutual
peer test of <xref target="following-peers"/>.</t>
        </li>
        <li>
          <t>Licensing: Apache-2.0.</t>
        </li>
        <li>
          <t>Contact: the author.</t>
        </li>
      </ul>
      <t><strong>Conformance vectors.</strong></t>
      <ul spacing="normal">
        <li>
          <t>Organization: the author (Independent).</t>
        </li>
        <li>
          <t>Name and description: a set of JSON test vectors for the discovery
layer, each naming the rule it proves: the conformant link set shape
and its target attributes, the reduced form, and the mutual peer
test. They are fixtures rather than an implementation, and any
independent implementation can be run against them.</t>
        </li>
        <li>
          <t>Level of maturity: working implementation; the vectors are fixtures,
publicly released with the reference engine at 1.0.0-rc.6.</t>
        </li>
        <li>
          <t>Coverage: <xref target="the-link-set"/>, <xref target="the-reduced-form"/>,
<xref target="following-peers"/>.</t>
        </li>
        <li>
          <t>Licensing: Apache-2.0.</t>
        </li>
        <li>
          <t>Contact: the author.</t>
        </li>
      </ul>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <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"/>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC3986" target="https://www.rfc-editor.org/info/rfc3986" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3986.xml">
          <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"/>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
        <reference anchor="RFC7284" target="https://www.rfc-editor.org/info/rfc7284" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7284.xml">
          <front>
            <title>The Profile URI Registry</title>
            <author fullname="M. Lanthaler" initials="M." surname="Lanthaler"/>
            <date month="June" year="2014"/>
          </front>
          <seriesInfo name="RFC" value="7284"/>
          <seriesInfo name="DOI" value="10.17487/RFC7284"/>
        </reference>
        <reference anchor="RFC6906" target="https://www.rfc-editor.org/info/rfc6906" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6906.xml">
          <front>
            <title>The 'profile' Link Relation Type</title>
            <author fullname="E. Wilde" initials="E." surname="Wilde"/>
            <date month="March" year="2013"/>
          </front>
          <seriesInfo name="RFC" value="6906"/>
          <seriesInfo name="DOI" value="10.17487/RFC6906"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <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"/>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8288" target="https://www.rfc-editor.org/info/rfc8288" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8288.xml">
          <front>
            <title>Web Linking</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <date month="October" year="2017"/>
          </front>
          <seriesInfo name="RFC" value="8288"/>
          <seriesInfo name="DOI" value="10.17487/RFC8288"/>
        </reference>
        <reference anchor="RFC8615" target="https://www.rfc-editor.org/info/rfc8615" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8615.xml">
          <front>
            <title>Well-Known Uniform Resource Identifiers (URIs)</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <date month="May" year="2019"/>
          </front>
          <seriesInfo name="RFC" value="8615"/>
          <seriesInfo name="DOI" value="10.17487/RFC8615"/>
        </reference>
        <reference anchor="RFC8785" target="https://www.rfc-editor.org/info/rfc8785" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8785.xml">
          <front>
            <title>JSON Canonicalization Scheme (JCS)</title>
            <author fullname="A. Rundgren" initials="A." surname="Rundgren"/>
            <author fullname="B. Jordan" initials="B." surname="Jordan"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <date month="June" year="2020"/>
          </front>
          <seriesInfo name="RFC" value="8785"/>
          <seriesInfo name="DOI" value="10.17487/RFC8785"/>
        </reference>
        <reference anchor="RFC9110" target="https://www.rfc-editor.org/info/rfc9110" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9110.xml">
          <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"/>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="RFC9264" target="https://www.rfc-editor.org/info/rfc9264" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9264.xml">
          <front>
            <title>Linkset: Media Types and a Link Relation Type for Link Sets</title>
            <author fullname="E. Wilde" initials="E." surname="Wilde"/>
            <author fullname="H. Van de Sompel" initials="H." surname="Van de Sompel"/>
            <date month="July" year="2022"/>
          </front>
          <seriesInfo name="RFC" value="9264"/>
          <seriesInfo name="DOI" value="10.17487/RFC9264"/>
        </reference>
        <reference anchor="RFC9530" target="https://www.rfc-editor.org/info/rfc9530" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9530.xml">
          <front>
            <title>Digest Fields</title>
            <author fullname="R. Polli" initials="R." surname="Polli"/>
            <author fullname="L. Pardue" initials="L." surname="Pardue"/>
            <date month="February" year="2024"/>
          </front>
          <seriesInfo name="RFC" value="9530"/>
          <seriesInfo name="DOI" value="10.17487/RFC9530"/>
        </reference>
        <reference anchor="RFC9651" target="https://www.rfc-editor.org/info/rfc9651" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9651.xml">
          <front>
            <title>Structured Field Values for HTTP</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="P-H. Kamp" surname="P-H. Kamp"/>
            <date month="September" year="2024"/>
          </front>
          <seriesInfo name="RFC" value="9651"/>
          <seriesInfo name="DOI" value="10.17487/RFC9651"/>
        </reference>
        <reference anchor="POWDER-DR" target="https://www.w3.org/TR/2009/REC-powder-dr-20090901/">
          <front>
            <title>Protocol for Web Description Resources (POWDER): Description Resources</title>
            <author initials="P." surname="Archer" fullname="Phil Archer">
              <organization/>
            </author>
            <author initials="K." surname="Smith" fullname="Kevin Smith">
              <organization/>
            </author>
            <author initials="A." surname="Perego" fullname="Andrea Perego">
              <organization/>
            </author>
            <date year="2009" month="September" day="01"/>
          </front>
          <seriesInfo name="W3C" value="Recommendation"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC3987" target="https://www.rfc-editor.org/info/rfc3987" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3987.xml">
          <front>
            <title>Internationalized Resource Identifiers (IRIs)</title>
            <author fullname="M. Duerst" initials="M." surname="Duerst"/>
            <author fullname="M. Suignard" initials="M." surname="Suignard"/>
            <date month="January" year="2005"/>
          </front>
          <seriesInfo name="RFC" value="3987"/>
          <seriesInfo name="DOI" value="10.17487/RFC3987"/>
        </reference>
        <reference anchor="RFC6838" target="https://www.rfc-editor.org/info/rfc6838" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6838.xml">
          <front>
            <title>Media Type Specifications and Registration Procedures</title>
            <author fullname="N. Freed" initials="N." surname="Freed"/>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <author fullname="T. Hansen" initials="T." surname="Hansen"/>
            <date month="January" year="2013"/>
          </front>
          <seriesInfo name="BCP" value="13"/>
          <seriesInfo name="RFC" value="6838"/>
          <seriesInfo name="DOI" value="10.17487/RFC6838"/>
        </reference>
        <reference anchor="RFC6892" target="https://www.rfc-editor.org/info/rfc6892" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6892.xml">
          <front>
            <title>The 'describes' Link Relation Type</title>
            <author fullname="E. Wilde" initials="E." surname="Wilde"/>
            <date month="March" year="2013"/>
          </front>
          <seriesInfo name="RFC" value="6892"/>
          <seriesInfo name="DOI" value="10.17487/RFC6892"/>
        </reference>
        <reference anchor="RFC8259" target="https://www.rfc-editor.org/info/rfc8259" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8259.xml">
          <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"/>
          </front>
          <seriesInfo name="STD" value="90"/>
          <seriesInfo name="RFC" value="8259"/>
          <seriesInfo name="DOI" value="10.17487/RFC8259"/>
        </reference>
        <reference anchor="RFC8574" target="https://www.rfc-editor.org/info/rfc8574" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8574.xml">
          <front>
            <title>cite-as: A Link Relation to Convey a Preferred URI for Referencing</title>
            <author fullname="H. Van de Sompel" initials="H." surname="Van de Sompel"/>
            <author fullname="M. Nelson" initials="M." surname="Nelson"/>
            <author fullname="G. Bilder" initials="G." surname="Bilder"/>
            <author fullname="J. Kunze" initials="J." surname="Kunze"/>
            <author fullname="S. Warner" initials="S." surname="Warner"/>
            <date month="April" year="2019"/>
          </front>
          <seriesInfo name="RFC" value="8574"/>
          <seriesInfo name="DOI" value="10.17487/RFC8574"/>
        </reference>
        <reference anchor="RFC8792" target="https://www.rfc-editor.org/info/rfc8792" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8792.xml">
          <front>
            <title>Handling Long Lines in Content of Internet-Drafts and RFCs</title>
            <author fullname="K. Watsen" initials="K." surname="Watsen"/>
            <author fullname="E. Auerswald" initials="E." surname="Auerswald"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <author fullname="Q. Wu" initials="Q." surname="Wu"/>
            <date month="June" year="2020"/>
          </front>
          <seriesInfo name="RFC" value="8792"/>
          <seriesInfo name="DOI" value="10.17487/RFC8792"/>
        </reference>
        <reference anchor="RFC9111" target="https://www.rfc-editor.org/info/rfc9111" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9111.xml">
          <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"/>
          </front>
          <seriesInfo name="STD" value="98"/>
          <seriesInfo name="RFC" value="9111"/>
          <seriesInfo name="DOI" value="10.17487/RFC9111"/>
        </reference>
        <reference anchor="RFC9309" target="https://www.rfc-editor.org/info/rfc9309" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9309.xml">
          <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"/>
          </front>
          <seriesInfo name="RFC" value="9309"/>
          <seriesInfo name="DOI" value="10.17487/RFC9309"/>
        </reference>
        <reference anchor="RFC9421" target="https://www.rfc-editor.org/info/rfc9421" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9421.xml">
          <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"/>
          </front>
          <seriesInfo name="RFC" value="9421"/>
          <seriesInfo name="DOI" value="10.17487/RFC9421"/>
        </reference>
        <reference anchor="RFC9727" target="https://www.rfc-editor.org/info/rfc9727" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9727.xml">
          <front>
            <title>api-catalog: A Well-Known URI and Link Relation to Help Discovery of APIs</title>
            <author fullname="K. Smith" initials="K." surname="Smith"/>
            <date month="June" year="2025"/>
          </front>
          <seriesInfo name="RFC" value="9727"/>
          <seriesInfo name="DOI" value="10.17487/RFC9727"/>
        </reference>
        <reference anchor="I-D.jimenez-dawn-discovery-landscape" target="https://datatracker.ietf.org/doc/html/draft-jimenez-dawn-discovery-landscape-00">
          <front>
            <title>A Survey of AI Agent Discovery Mechanisms</title>
            <author initials="J." surname="Jimenez" fullname="Jaime Jimenez">
              <organization/>
            </author>
            <author initials="J." surname="Feng" fullname="Jim Feng">
              <organization/>
            </author>
            <author initials="J." surname="Arkko" fullname="Jari Arkko">
              <organization/>
            </author>
            <author initials="M." surname="Kuehlewind" fullname="Mirja Kuehlewind">
              <organization/>
            </author>
            <author initials="R." surname="Kandoi" fullname="Rajat Kandoi">
              <organization/>
            </author>
            <date year="2026" month="July" day="03"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-jimenez-dawn-discovery-landscape-00"/>
        </reference>
        <reference anchor="I-D.arsentev-llm-context-discovery" target="https://datatracker.ietf.org/doc/html/draft-arsentev-llm-context-discovery-00" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.arsentev-llm-context-discovery.xml">
          <front>
            <title>Discovery and Retrieval of Publisher-Curated Context Files for Large Language Model Consumers</title>
            <author fullname="Evgenii Arsentev" initials="E." surname="Arsentev">
              <organization>Independent</organization>
            </author>
            <date day="11" month="September" year="2026"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-arsentev-llm-context-discovery-00"/>
        </reference>
        <reference anchor="I-D.serra-mcp-discovery-uri" target="https://datatracker.ietf.org/doc/html/draft-serra-mcp-discovery-uri-04" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.serra-mcp-discovery-uri.xml">
          <front>
            <title>The "mcp" URI Scheme and MCP Server Discovery Mechanism</title>
            <author fullname="marco serra" initials="M." surname="serra">
              <organization>Mumble Group</organization>
            </author>
            <date day="26" month="March" year="2026"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-serra-mcp-discovery-uri-04"/>
        </reference>
        <reference anchor="I-D.ietf-aipref-vocab" target="https://datatracker.ietf.org/doc/html/draft-ietf-aipref-vocab-08" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-aipref-vocab.xml">
          <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="13" month="September" year="2026"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-aipref-vocab-08"/>
        </reference>
        <reference anchor="I-D.ietf-aipref-attach" target="https://datatracker.ietf.org/doc/html/draft-ietf-aipref-attach-05" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-aipref-attach.xml">
          <front>
            <title>Associating AI Usage Preferences with Content in HTTP</title>
            <author fullname="Gary Illyes" initials="G." surname="Illyes">
              <organization>Google</organization>
            </author>
            <author fullname="Martin Thomson" initials="M." surname="Thomson">
              <organization>Mozilla</organization>
            </author>
            <date day="18" month="August" year="2026"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-aipref-attach-05"/>
        </reference>
        <reference anchor="I-D.ietf-webbotauth-httpsig-protocol" target="https://datatracker.ietf.org/doc/html/draft-ietf-webbotauth-httpsig-protocol-00" xml:base="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-webbotauth-httpsig-protocol.xml">
          <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="1" month="September" year="2026"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-webbotauth-httpsig-protocol-00"/>
        </reference>
        <reference anchor="I-D.aiendpoint-ai-discovery" target="https://datatracker.ietf.org/doc/html/draft-aiendpoint-ai-discovery-01">
          <front>
            <title>The AI Discovery Endpoint: A Structured Mechanism for AI Agent Service Discovery and Capability Exposure</title>
            <author>
              <organization>AIEndpoint</organization>
            </author>
            <date year="2026" month="July" day="28"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-aiendpoint-ai-discovery-01"/>
        </reference>
        <reference anchor="I-D.car-ai-txt-wellknown" target="https://datatracker.ietf.org/doc/html/draft-car-ai-txt-wellknown-00">
          <front>
            <title>AI.TXT: A Declaration File for AI Usage Preferences, Licensing, and Policy</title>
            <author initials="K." surname="Cardillo" fullname="Kayla Cardillo">
              <organization/>
            </author>
            <date year="2026" month="June" day="12"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-car-ai-txt-wellknown-00"/>
        </reference>
        <reference anchor="DAWN-CHARTER" target="https://datatracker.ietf.org/doc/charter-ietf-dawn/">
          <front>
            <title>Discovery of Agents With Names (dawn) -- proposed working group charter</title>
            <author>
              <organization>IETF</organization>
            </author>
            <date year="2026" month="September" day="11"/>
          </front>
        </reference>
        <reference anchor="AGENTPROTO-BOF" target="https://datatracker.ietf.org/doc/bofreq-steele-agentproto/">
          <front>
            <title>Agent Communication Protocols (agentproto) -- BOF request</title>
            <author>
              <organization>IETF</organization>
            </author>
            <date year="2026" month="September" day="04"/>
          </front>
        </reference>
        <reference anchor="MCP" target="https://modelcontextprotocol.io/specification/2026-07-28">
          <front>
            <title>Model Context Protocol Specification, revision 2026-07-28</title>
            <author>
              <organization>Model Context Protocol, a Series of LF Projects, LLC</organization>
            </author>
            <date year="2026" month="July" day="28"/>
          </front>
        </reference>
        <reference anchor="A2A" target="https://a2a-protocol.org/latest/specification/">
          <front>
            <title>Agent2Agent (A2A) Protocol Specification, version 1.0</title>
            <author>
              <organization>Agentic AI Foundation</organization>
            </author>
            <date year="2026" month="May" day="28"/>
          </front>
        </reference>
        <reference anchor="LLMSTXT" target="https://llmstxt.org/">
          <front>
            <title>The /llms.txt file, version 2</title>
            <author initials="J." surname="Howard" fullname="Jeremy Howard">
              <organization/>
            </author>
            <date year="2026" month="August" day="10"/>
          </front>
        </reference>
        <reference anchor="OKF" target="https://github.com/GoogleCloudPlatform/open-knowledge-format">
          <front>
            <title>Open Knowledge Format, version 0.2</title>
            <author>
              <organization>Google Cloud</organization>
            </author>
            <date year="2026"/>
          </front>
        </reference>
        <reference anchor="AIMEM-CG" target="https://www.w3.org/community/ai-agent-memory-interop/">
          <front>
            <title>AI Agent Memory Interoperability Community Group</title>
            <author>
              <organization>W3C</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="VOID" target="https://www.w3.org/TR/void/">
          <front>
            <title>Describing Linked Datasets with the VoID Vocabulary</title>
            <author>
              <organization>W3C Semantic Web Interest Group</organization>
            </author>
            <date year="2011" month="March" day="03"/>
          </front>
          <seriesInfo name="W3C" value="Interest Group Note"/>
        </reference>
        <reference anchor="DCAT3" target="https://www.w3.org/TR/vocab-dcat-3/">
          <front>
            <title>Data Catalog Vocabulary (DCAT) -- Version 3</title>
            <author>
              <organization>W3C Dataset Exchange Working Group</organization>
            </author>
            <date year="2024" month="August" day="22"/>
          </front>
          <seriesInfo name="W3C" value="Recommendation"/>
        </reference>
        <reference anchor="IANA-IPV4-SPECIAL" target="https://www.iana.org/assignments/iana-ipv4-special-registry/">
          <front>
            <title>IANA IPv4 Special-Purpose Address Registry</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="IANA-IPV6-SPECIAL" target="https://www.iana.org/assignments/iana-ipv6-special-registry/">
          <front>
            <title>IANA IPv6 Special-Purpose Address Registry</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="AGSC-SPEC" target="https://agenticsystemcore.com/specs/">
          <front>
            <title>AgenticSystemCore Specification, version 1.0.0-rc.6 (release candidate)</title>
            <author initials="A. N." surname="Besleaga" fullname="Andrei N. Besleaga">
              <organization/>
            </author>
            <date year="2026"/>
          </front>
        </reference>
        <reference anchor="RFC7942" target="https://www.rfc-editor.org/info/rfc7942" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7942.xml">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <date month="July" year="2016"/>
          </front>
          <seriesInfo name="BCP" value="205"/>
          <seriesInfo name="RFC" value="7942"/>
          <seriesInfo name="DOI" value="10.17487/RFC7942"/>
        </reference>
      </references>

<section anchor="a-complete-example">
      <name>A Complete Example</name>
      <t>The document below is a complete discovery document for a node at
<tt>https://example.org/</tt>, in the full form of <xref target="the-link-set"/>. It is
shown pretty-printed; a node that produces canonical bytes
<xref target="RFC8785"/> serves the equivalent document with no insignificant
whitespace.</t>
      <figure>
        <name>A complete discovery document</name>
        <sourcecode type="json"><![CDATA[
NOTE: '\' line wrapping per RFC 8792

{
  "linkset": [
    {
      "anchor": "https://example.org/",
      "alternate": [
        {
          "href": "https://example.org/llms-full.txt",
          "type": "text/plain",
          "digest": [
            "sha-256=:Nfm1AxNikrZAb82mhnWgjpi3i8rGJa9K64wnI0ZiJY0=:"
          ]
        },
        {
          "href": "https://example.org/llms.txt",
          "type": "text/plain",
          "digest": [
            "sha-256=:QjxPZtSHNKLvYtiXXCOwnjJn+fYmfqkRYmash8n7+O0=:"
          ]
        }
      ],
      "author": [
        {
          "href": "https://example.org/about/",
          "type": "text/html"
        }
      ],
      "describedby": [
        {
          "href": "https://example.org/graph.jsonld",
          "type": "application/ld+json",
          "agsc-bundle-hash": [
            "sha-256=:/WQyaCbIwaeGFFMAFw/eMonm8tK+F7amphaKNT4BpB0=:"
          ],
          "agsc-bundle-version": [
            "v1.4.0"
          ],
          "agsc-counts": [
            "clusters=6",
            "concepts=142",
            "episodes=17",
            "gates=4",
            "lessons=39",
            "procedures=28"
          ],
          "agsc-generated-at": [
            "2026-10-09T08:15:00Z"
          ],
          "agsc-spec-version": [
            "1.0.0-rc.6"
          ],
          "digest": [
            "sha-256=:JeigkAtOPS9f9BzKym+X6J2O4awt53GEua1AhIAiLfE=:"
          ]
        }
      ],
      "license": [
        {
          "href": "https://example.org/legal/",
          "type": "text/html"
        }
      ],
      "service-doc": [
        {
          "href": "https://example.org/specs/",
          "type": "text/html"
        }
      ],
      "https://w3id.org/agentic-system-core/rel#context": [
        {
          "href": "https://example.org/ns/context.jsonld",
          "type": "application/ld+json",
          "digest": [
            "sha-256=:Dv8ogyqhEZ0jxdWQj0FkVfpXbuTnyfvWEFNwtbRTSEA=:"
          ]
        }
      ],
      "https://w3id.org/agentic-system-core/rel#graph": [
        {
          "href": "https://example.org/graph.nq",
          "type": "application/n-quads",
          "digest": [
            "sha-256=:/WQyaCbIwaeGFFMAFw/eMonm8tK+F7amphaKNT4BpB0=:"
          ]
        },
        {
          "href": "https://example.org/graph.ttl",
          "type": "text/turtle",
          "digest": [
            "sha-256=:SylBDgXPkysmlRZkx+BvHSxVTbm3ZWGzFXskHf+kH80=:"
          ]
        }
      ],
      "https://w3id.org/agentic-system-core/rel#ledger": [
        {
          "href": "https://example.org/ledger.jsonl",
          "type": "application/jsonl",
          "agsc-ledger-head": [
            "6acd55d78bf24c2b7866c0e46a3bb88a4b7259cea9ca0bfa6263\
81068b0d56ed"
          ],
          "digest": [
            "sha-256=:mIn5HVeWxmn0Ecmh5Qwkc3doL+0fdO+Z7HieEDozhz0=:"
          ]
        }
      ],
      "https://w3id.org/agentic-system-core/rel#now": [
        {
          "href": "https://example.org/now.md",
          "type": "text/markdown",
          "digest": [
            "sha-256=:cJvRMVgkkW5Usdn/z0q1iNxyBErb59kLWRv83qvpx8A=:"
          ]
        }
      ],
      "https://w3id.org/agentic-system-core/rel#ontology": [
        {
          "href": "https://example.org/ns/agsc.ttl",
          "type": "text/turtle",
          "digest": [
            "sha-256=:kjVLSaNilITtebImxe9J+ukr7UOdmTG+NAtppRjsrH8=:"
          ]
        }
      ],
      "https://w3id.org/agentic-system-core/rel#peer": [
        {
          "href": "https://b.example/.well-known/knowledge-linkset",
          "type": "application/linkset+json"
        }
      ],
      "https://w3id.org/agentic-system-core/rel#skills": [
        {
          "href": "https://example.org/skills/index.json",
          "type": "application/json",
          "digest": [
            "sha-256=:NnyPQz+rxvP/Zl9ja4+0xRSCpb7gdArcAVXlAG5IoU0=:"
          ]
        }
      ],
      "https://w3id.org/agentic-system-core/rel#surface": [
        {
          "href": "https://example.org/chunks.jsonl",
          "type": "application/jsonl",
          "agsc-access": [
            "none"
          ],
          "agsc-surface": [
            "chunks"
          ],
          "digest": [
            "sha-256=:vAlDuXGRaRPyTeeRfLAFWa7acFyOL3Y7o+vbywRofDk=:"
          ]
        },
        {
          "href": "https://example.org/llms.txt",
          "type": "text/plain",
          "agsc-access": [
            "none"
          ],
          "agsc-surface": [
            "llms-txt"
          ]
        }
      ]
    }
  ]
}
]]></sourcecode>
      </figure>
      <t>The same node, publishing without a build engine, serves the reduced
form of <xref target="the-reduced-form"/>: a link set of the same structure that
names only the artefacts such a publisher has, with no <tt>digest</tt>
attribute, no bundle-fact attribute and no <tt>ledger</tt> link.</t>
      <figure>
        <name>The same document in the reduced form</name>
        <sourcecode type="json"><![CDATA[
{
  "linkset": [
    {
      "anchor": "https://example.org/",
      "alternate": [
        {
          "href": "https://example.org/llms.txt",
          "type": "text/plain"
        }
      ],
      "describedby": [
        {
          "href": "https://example.org/graph.jsonld",
          "type": "application/ld+json"
        }
      ],
      "license": [
        {
          "href": "https://example.org/legal/"
        }
      ]
    }
  ]
}
]]></sourcecode>
      </figure>
    </section>
    <section anchor="change-log">
      <name>Change Log</name>
      <ul empty="true">
        <li>
          <t>[Note to the RFC Editor: please remove this appendix before
publication.]</t>
        </li>
      </ul>
      <t>This is the initial version, -00. Later revisions record their changes
here.</t>
    </section>
  </back>

</rfc>
