<?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-dinuzzo-best-protocol-03" category="info" submissionType="independent" version="3">
  <!-- xml2rfc v2v3 conversion 3.35.0 -->
  <front>
    <title abbrev="BEST">BEST: The Behavioral State Protocol</title>
    <seriesInfo name="Internet-Draft" value="draft-dinuzzo-best-protocol-03"/>
    <author initials="R." surname="Di Nuzzo" fullname="Riccardo Di Nuzzo">
      <organization/>
      <address>
        <email>riccardo@dinuzzo.it</email>
      </address>
    </author>
    <date year="2026" month="November" day="02"/>
    <area/>
    <workgroup/>
    <keyword>CQRS</keyword>
    <keyword>CloudEvents</keyword>
    <keyword>discovery</keyword>
    <keyword>agent interoperability</keyword>
    <abstract>
      <?line 88?>

<t>The Behavioral State Protocol (BEST) defines a discovery-first, behaviour-oriented interaction surface for services: a discovery manifest, whichever of commands, queries and events the implementor chooses to expose, and optionally the multi-step recipes (workflows) a service publishes. Services are named by DNS domain names and self-describe through a manifest at the well-known URI "/.well-known/best"; messages use a conformant profile of the CloudEvents 1.0 envelope described by JSON Schema; and an agent obtains its own credential through the OAuth 2.0 Device Authorization Grant, approved by the person it acts for in their own browser. BEST deliberately specifies only the interaction surface -- never a service's internal architecture, storage, or execution model -- allowing independent implementations across any runtime, language, or transport to interoperate without bespoke integration.</t>
    </abstract>
  </front>
  <middle>
    <?line 92?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>When an organisation operates multiple autonomous callers -- AI agents, process managers, integrations -- against heterogeneous systems, each pairing of caller and system tends to require a bespoke integration: the caller must be told, out of band, which operations the system accepts, what the payloads look like, how results are delivered, and how to associate a result with the request that caused it.</t>
      <t>Command Query Responsibility Segregation (CQRS) provides the underlying semantics BEST builds on: writes are expressed as commands, and the results of processing are recorded as events. What CQRS does not provide is a common, machine-readable way for a caller to discover a service's command surface, observe its events, and correlate outcomes, without reading documentation or source code.</t>
      <t>BEST fills this gap with five elements. The first is required; the implementor decides which of the next three to expose -- just commands, just queries, just events, or any mix; and the fifth is optional (<xref target="capability-tiers"/>):</t>
      <ol spacing="normal" type="1"><li>
          <t>A discovery manifest at the well-known URI "/.well-known/best" describing the service's capabilities, transports, and authentication requirements, reached from a DNS name the service is known by.</t>
        </li>
        <li>
          <t>A single command-ingestion entry point, "POST /commands", routed by the message "type" attribute rather than by URL structure.</t>
        </li>
        <li>
          <t>An event surface, "GET /events", plus optional push delivery, through which the immutable facts produced by processing are observed; a first-class correlation identifier ties each event to the command that caused it.</t>
        </li>
        <li>
          <t>A synchronous read surface, "GET /queries/{schema}", for reading current state before issuing a command.</t>
        </li>
        <li>
          <t>An optional read-only recipe surface, "GET /workflows", publishing named multi-step sequences of catalogue operations (<xref target="workflows"/>).</t>
        </li>
      </ol>
      <t>BEST is deliberately not REST: there are no resources to manipulate and no CRUD verb semantics. Callers invoke named operations (commands such as "ProposeCounter" or "SubmitOrder") and observe the facts that result (events such as "CounterProposed"). Resource-oriented endpoints remain valid parts of a service's own API but are outside BEST's scope.</t>
      <t>BEST's aim is that a service be agent-operable from a name alone: a person can say "use example.com" to an agent that has never heard of it, and the agent gets from that name to working use by itself. It resolves the name (<xref target="name-resolution"/>), reads the manifest, learns what each surface needs, obtains the credential it lacks (<xref target="agent-registration"/>), and operates. The person's part is reduced to what only a person can do: say what they want and -- once, in their own browser -- sign in or sign up, and approve the agent. Everything the agent needs is in the manifest and the catalogues, in structure rather than in prose. A service that needs no authentication at all is the simplest case of the same thing.</t>
      <t>The protocol's design principles are: protocol-first (the specification defines the surface; implementations derive from it); compose, don't invent (the envelope is a CloudEvents profile <xref target="CLOUDEVENTS"/>, contracts are JSON Schema <xref target="JSONSCHEMA"/>, discovery uses a well-known URI <xref target="RFC8615"/>, tenancy uses URI templates <xref target="RFC6570"/>, agent registration is the OAuth 2.0 Device Authorization Grant <xref target="RFC8628"/>); discoverable by default; transport-agnostic; modular (implementers expose only the capabilities they support); implementation-agnostic (no prescribed language, framework, storage, or execution model -- a BEST service can equally be an AI agent, a deterministic backend, a sensor, or a human-operated workflow); and operable blind: a consumer that ignores every "description" and "guidance" string can still find every surface, know what opens it, and invoke every operation with schema-valid data. Prose tells a model what an operation means; it never carries where something is, what credential opens it, or what it is called.</t>
      <t>This document specifies the protocol as released in version 0.9.20 of the living specification <xref target="BESTSPEC"/>.</t>
      <section anchor="conventions-and-definitions">
        <name>Conventions and Definitions</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

<t>Some requirements in this document are marked "(Required from 0.10.0)". Each is stated from the version of the living specification that introduced it, and binds conformance from protocol version 0.10.0; until then, validators report a violation as a warning, so that every implementer has at least one version of grace. The marker dates when an obligation binds; it does not plan a release.</t>
        <dl>
          <dt>Service:</dt>
          <dd>
            <t>A BEST-compliant service, exposing whichever of commands, queries and events it chooses.</t>
          </dd>
          <dt>Command:</dt>
          <dd>
            <t>An intent to change the system, sent to a service by any caller.</t>
          </dd>
          <dt>Event:</dt>
          <dd>
            <t>An immutable fact published by a service as the result of processing.</t>
          </dd>
          <dt>Query:</dt>
          <dd>
            <t>A synchronous read of current state.</t>
          </dd>
          <dt>Workflow:</dt>
          <dd>
            <t>A published, read-only recipe: a named sequence of catalogue operations with per-step guidance (optional capability).</t>
          </dd>
          <dt>Manifest:</dt>
          <dd>
            <t>The JSON document served at "/.well-known/best" describing a service's capabilities, transports, and authentication requirements.</t>
          </dd>
          <dt>Capability:</dt>
          <dd>
            <t>A named, composable unit of protocol surface declared in the manifest. Names use reverse-domain notation; the "io.best." prefix is reserved for this specification.</t>
          </dd>
          <dt>Correlation identifier:</dt>
          <dd>
            <t>The value of the "correlationid" envelope attribute: the identifier that ties a command to the events its processing produces, across an arbitrarily long chain of commands and events.</t>
          </dd>
          <dt>Person:</dt>
          <dd>
            <t>The human an agent works for.</t>
          </dd>
          <dt>Agent:</dt>
          <dd>
            <t>A BEST consumer acting for a person; often a general-purpose language model.</t>
          </dd>
          <dt>Account:</dt>
          <dd>
            <t>The scope a credential opens: a tenant, on a multi-tenant host.</t>
          </dd>
          <dt>Approver:</dt>
          <dd>
            <t>Whoever may admit an agent to an account: the person themselves on a self-serve platform, an administrator on a provisioned one.</t>
          </dd>
        </dl>
      </section>
      <section anchor="capability-tiers">
        <name>Capability Tiers</name>
        <table>
          <name>Capability tiers</name>
          <thead>
            <tr>
              <th align="left">Tier</th>
              <th align="left">Capabilities</th>
              <th align="left">Meaning</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Core</td>
              <td align="left">"/.well-known/best" discovery</td>
              <td align="left">Required.</td>
            </tr>
            <tr>
              <td align="left">Primitives</td>
              <td align="left">"io.best.agents.commands", "io.best.agents.queries", "io.best.agents.events"</td>
              <td align="left">The implementor decides which to expose: just commands, just queries, just events, or any mix. Declared in the manifest; consumers discover them at runtime.</td>
            </tr>
            <tr>
              <td align="left">Extended</td>
              <td align="left">"io.best.agents.workflows"</td>
              <td align="left">Optional. Declared in the manifest; consumers discover it at runtime.</td>
            </tr>
            <tr>
              <td align="left">Out of scope</td>
              <td align="left">Execution runtimes, workflow execution, durable execution, retries, checkpointing, memory contracts, domain models, identity providers</td>
              <td align="left">Never owned by BEST. These belong to the service's internals or a separate execution layer.</td>
            </tr>
          </tbody>
        </table>
        <t>The core is intentionally small: a minimal BEST endpoint is two things, a discovery manifest and one primitive. Everything else is additive.</t>
      </section>
    </section>
    <section anchor="message-envelope">
      <name>Message Envelope</name>
      <t>BEST messages are CloudEvents <xref target="CLOUDEVENTS"/>: every valid BEST message is a valid CloudEvents 1.0 message, so CloudEvents SDKs, brokers, and validators process BEST traffic unchanged. BEST is a profile that restricts and extends the envelope as follows: the "type" attribute <bcp14>MUST</bcp14> be PascalCase; "datacontenttype" <bcp14>MUST</bcp14> be "application/json"; "dataschema" <bcp14>MUST</bcp14> be present on commands (it <bcp14>MAY</bcp14> be absent on events, which are then untyped); one extension attribute, "correlationid", is defined; and consumers <bcp14>MUST</bcp14> ignore unknown envelope attributes rather than reject messages carrying them.</t>
      <table>
        <name>BEST envelope attributes</name>
        <thead>
          <tr>
            <th align="left">Attribute</th>
            <th align="left">Commands</th>
            <th align="left">Events</th>
            <th align="left">Description</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">specversion</td>
            <td align="left">required</td>
            <td align="left">required</td>
            <td align="left">Always "1.0".</td>
          </tr>
          <tr>
            <td align="left">id</td>
            <td align="left">required</td>
            <td align="left">required</td>
            <td align="left">Unique message identifier (UUID recommended), unique within the scope of "source". For commands this is the idempotency key.</td>
          </tr>
          <tr>
            <td align="left">source</td>
            <td align="left">required</td>
            <td align="left">required</td>
            <td align="left">URI-reference <xref target="RFC3986"/> identifying the origin of the message. An absolute URI is recommended; a relative reference (a service name or routing key) is valid. Caller-declared; never treated as authenticated identity (see Security Considerations).</td>
          </tr>
          <tr>
            <td align="left">type</td>
            <td align="left">required</td>
            <td align="left">required</td>
            <td align="left">Message type in PascalCase (e.g. "ProposeCounter", "CounterProposed"). For commands, this <bcp14>MUST</bcp14> match a type in the command catalogue; it is the routing key.</td>
          </tr>
          <tr>
            <td align="left">datacontenttype</td>
            <td align="left">required</td>
            <td align="left">required</td>
            <td align="left">Always "application/json".</td>
          </tr>
          <tr>
            <td align="left">dataschema</td>
            <td align="left">required</td>
            <td align="left">optional</td>
            <td align="left">Absolute URI of the JSON Schema for "data". For commands, the catalogue's "dataschema" value. Events without "dataschema" are untyped: the consumer interprets "data".</td>
          </tr>
          <tr>
            <td align="left">correlationid</td>
            <td align="left">optional</td>
            <td align="left">conditional</td>
            <td align="left">Extension attribute carrying the correlation identifier (see <xref target="correlation"/>). Lowercase on the wire, per CloudEvents attribute-naming rules.</td>
          </tr>
          <tr>
            <td align="left">time</td>
            <td align="left">required</td>
            <td align="left">required</td>
            <td align="left">Timestamp of message creation, as a date-time per <xref target="RFC3339"/>.</td>
          </tr>
          <tr>
            <td align="left">data</td>
            <td align="left">required</td>
            <td align="left">required</td>
            <td align="left">The domain payload. For commands, validated against the catalogue schema before queuing. For events, semantically opaque to the protocol.</td>
          </tr>
        </tbody>
      </table>
      <t>An example command and the event its processing produced:</t>
      <artwork><![CDATA[
{
  "specversion": "1.0",
  "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "source": "https://pm.example.com/negotiation-agent",
  "type": "ProposeCounter",
  "datacontenttype": "application/json",
  "dataschema":
    "https://api.example.com/commands/propose-counter/1.0",
  "time": "2025-07-01T10:30:00Z",
  "data": { "salary": 100000, "startDate": "2025-09-01" }
}
]]></artwork>
      <artwork><![CDATA[
{
  "specversion": "1.0",
  "id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
  "source": "https://api.example.com/negotiation",
  "type": "CounterProposed",
  "datacontenttype": "application/json",
  "dataschema":
    "https://api.example.com/events/counter-proposed/1.0",
  "correlationid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "time": "2025-07-01T10:30:01Z",
  "data": { "salary": 100000, "startDate": "2025-09-01",
            "contractId": "contract-42" }
}
]]></artwork>
      <t>CloudEvents describes events -- facts, which have an origin and no destination. BEST also carries commands in the same envelope, and a command has a destination; CloudEvents has no attribute for it and BEST adds none: the destination is the endpoint the command is posted to, and within it the server routes by "type". "source" is always the caller's declared origin, never a routing key. A service is free to use any internal envelope or dialect -- its own routing keys, its own use of identifiers -- behind an edge that accepts the conformant envelope and maps it. Nothing of that dialect is ever required from a caller or shown to one: no internal component name in a published schema, no internal identifier a caller must supply that the server can derive from the credential, and on the wire "correlationid" always means what this section says it means.</t>
    </section>
    <section anchor="discovery">
      <name>Discovery</name>
      <t>Every BEST endpoint serves a manifest at the well-known URI "/.well-known/best" (<xref target="RFC8615"/>) with media type "application/json", over HTTPS. This resource <bcp14>MUST</bcp14> be retrievable without authentication. The path is canonical; "/.well-known/best.json" <bcp14>MAY</bcp14> be served as an optional alias, but consumers <bcp14>MUST NOT</bcp14> rely on it. The "best" suffix is not currently registered in the Well-Known URIs registry (see IANA Considerations).</t>
      <t>A server <bcp14>SHOULD</bcp14> send an "ETag" and a "Cache-Control" other than "no-store" on this response, as HTTP defines them (<xref target="RFC9110"/>, <xref target="RFC9111"/>), so a consumer can tell that the manifest changed without reading it again: the manifest's "version" is the protocol version and does not change with the document. A 304 answering a consumer's conditional request is conformant.</t>
      <t>The manifest root is a single "best" object:</t>
      <artwork><![CDATA[
{
  "best": {
    "version": "0.9.20",
    "authentication": { ... },
    "tenants": { ... },
    "services": { ... },
    "capabilities": [ ... ],
    "agents": [ ... ],
    "extensions": { ... }
  }
}
]]></artwork>
      <dl>
        <dt>version (required):</dt>
        <dd>
          <t>The protocol version implemented, as MAJOR.MINOR.PATCH.</t>
        </dd>
        <dt>services (required):</dt>
        <dd>
          <t>An object mapping service keys (reverse-domain names) to service definitions. Each service declares "version" and "description", an optional "spec" URL, an optional "authentication" block of its own (<xref target="surfaces"/>), and one or more transport bindings: "http" (the baseline -- its "endpoint" is the consumer-facing base URL to which all capability paths are appended) and optionally "mcp" (see <xref target="transports"/>). Multiple transports expose the same capability surface; they are alternative access methods, never separate operation sets.</t>
        </dd>
        <dt>capabilities (required):</dt>
        <dd>
          <t>An array of capability entries. Each carries "name" (reverse-domain identifier), "version", "description", "spec" and "schema" URLs (required for "io.best." capabilities; optional for custom ones), an optional "service" key naming the implementing service when the capability name prefix does not match it, an optional machine-readable "endpoints" array of { method, path, description } entries appended to the service's "http.endpoint", an optional "status", an optional "extends" naming a parent capability, an optional "extensions" object (<xref target="extensions"/>), and -- on the events capability -- an optional "push" object declaring supported push channels ("sse", "mcp").</t>
        </dd>
        <dt>authentication (optional):</dt>
        <dd>
          <t>Credential requirements for every service that declares none of its own; omitted for public endpoints (see <xref target="authentication"/>).</t>
        </dd>
        <dt>tenants (optional):</dt>
        <dd>
          <t>Multi-tenant discovery (see <xref target="multitenancy"/>).</t>
        </dd>
        <dt>agents (optional):</dt>
        <dd>
          <t>A snapshot of service descriptors hosted by the endpoint: each descriptor carries "id", "name", "accepts" and "produces" (PascalCase event type strings), "status" ("running", "paused", "stopped", or "error"), and optional "description", "type", "version", "endpoint", and opaque "metadata". This array is a discovery hint, not a live directory; BEST defines no registry endpoint. Implementations that manage services dynamically expose that as an ordinary domain (commands and queries) under their own namespace.</t>
        </dd>
        <dt>extensions (optional):</dt>
        <dd>
          <t>Vendor-defined static declarations (see <xref target="extensions"/>).</t>
        </dd>
      </dl>
      <t>Capability status semantics: "active" (the default) means every required endpoint exists and is callable; declaring "active" while returning 404 or 501 on a required route is a conformance violation. "partial" means a subset is implemented; consumers <bcp14>MUST NOT</bcp14> assume full coverage, and the available routes <bcp14>MUST</bcp14> be documented in the "endpoints" array. "planned" means nothing is callable yet. A workflows capability is "active" only while it publishes at least one recipe, and "planned" with none (<xref target="workflows"/>).</t>
      <t>Individual command types are domain data, not capabilities: a specific type such as "ProposeCounter" <bcp14>MUST NOT</bcp14> appear as a manifest capability entry. The capability declares the command surface; the types are discovered at runtime via "GET /commands".</t>
      <section anchor="origin-discovery">
        <name>Origin Discovery</name>
        <t>The manifest solves endpoint discovery: a consumer that already holds the BEST endpoint's URL learns everything else from it. It does not by itself solve origin discovery: an agent pointed at a product's public web origin ("https://example.com") has no defined path to the BEST endpoint, which commonly lives on another host ("https://api.example.com").</t>
        <t>A deployment whose BEST endpoint is not the public web origin <bcp14>SHOULD</bcp14> bridge the gap:</t>
        <ol spacing="normal" type="1"><li>
            <t>Serve "/.well-known/best" on the public origin, either returning the manifest directly or redirecting (301 or 308) to the canonical manifest on the API host. Consumers <bcp14>MUST</bcp14> follow redirects on this path; the redirect target is the canonical endpoint for all subsequent interaction. The origin copy keeps the same public, unauthenticated requirement as the canonical one.</t>
          </li>
          <li>
            <t>Advertise the bridge in the origin's HTML, so agents that fetch the page discover the manifest without prior BEST knowledge:</t>
          </li>
        </ol>
        <artwork><![CDATA[
<link rel="alternate" type="application/json"
      href="/.well-known/best" title="BEST service manifest">
]]></artwork>
        <t>The manifest is the only entry. A deployment points at its manifest -- the well-known path, the redirect, the HTML link -- and <bcp14>MUST NOT</bcp14> publish a second description of its BEST surface for agents to start from: no "llms.txt" restating operations, no skill or prompt file, no client snippet carrying behaviour, no OpenAPI document of the BEST endpoints. A consumer that has the name has everything; anything else it is handed is a copy that will disagree with the manifest the first time the service changes. (Required from 0.10.0.)</t>
        <t>A site's own "connect your assistant" page <bcp14>MAY</bcp14> give the person a sentence naming the service and the person's act -- "<tt>Sign me in to &lt;name&gt;</tt>", or "<tt>Sign me up on &lt;name&gt;</tt>" where the platform lets people sign up -- where <tt>&lt;name&gt;</tt> is a name the service is publicly known by. It <bcp14>MUST NOT</bcp14> append URLs, tenant identifiers or steps: the name is the whole instruction (<xref target="name-resolution"/>), and anything added is a second agent-directed description. A name that does not resolve yet is fixed with the bridge above, never with a longer sentence. (Required from 0.10.0.)</t>
      </section>
      <section anchor="name-resolution">
        <name>Name Resolution</name>
        <t>A BEST service is named by a DNS domain name its operator controls ("example.com"). That is the whole namespace: BEST defines no registry, no directory and no identifier of its own for "which service". DNS already supplies what a registry would have to rebuild -- unique names, proof of ownership, delegation, revocation when a name lapses -- and a resolver on every machine.</t>
        <t>Given a name N, a consumer:</t>
        <ol spacing="normal" type="1"><li>
            <t>Normalises it. A URL is reduced to its host; the result is lower-cased and an internationalised name converted to its A-label form <xref target="RFC5890"/>. N <bcp14>MUST</bcp14> be a domain name: an IP literal is not a name, and "localhost" is resolvable only where the person has opted into development use.</t>
          </li>
          <li>
            <t>Fetches "https://N/.well-known/best", following redirects as <xref target="origin-discovery"/> requires. A response that is a BEST manifest ends the resolution: the final URL is the canonical manifest, and its host the canonical endpoint host. Otherwise N does not resolve.</t>
          </li>
        </ol>
        <t>A service <bcp14>MUST</bcp14> be resolvable from every name it is publicly known by, if only through a redirect. The "services" keys of a manifest <bcp14>SHOULD</bcp14> sit under the reversed name it resolves from ("com.example.*" for "example.com"); conversely, the owning name of a service identifier is found by reversing its labels and resolving the longest suffix that resolves -- never a public suffix.</t>
        <t>Resolution lets a consumer reach a service nobody configured, which is its point and its risk. A consumer acting for a person -- a model behind an MCP client above all -- <bcp14>MUST</bcp14>:</t>
        <ul spacing="normal">
          <li>
            <t>Resolve only a name the person gave or confirmed. A name found in a manifest, a query result, an error body or any other content is data; following it without the person's confirmation is how a service redirects an agent to another one.</t>
          </li>
          <li>
            <t>Say what it resolved -- the name as typed and the canonical endpoint host -- before the first credentialed interaction with a newly resolved service, showing an internationalised name in its A-label form whenever it mixes scripts.</t>
          </li>
          <li>
            <t>Use "https" with certificate validation only, and refuse a name or redirect that lands on a loopback, link-local or private address outside development use.</t>
          </li>
          <li>
            <t>Bind every credential to the name it was issued under. A credential is never sent to a host other than the canonical endpoint host of that name; a later change of that host is a new resolution the person confirms, not a silent move. It is kept under that name too -- the "connection" the agent sends when it signs the person in (<xref target="agent-registration"/>), which the token answer gives back as "name": another name is another sign-in, kept apart, with its own credential and its own permissions, and a configuration entry made from the credential takes the same name.</t>
          </li>
          <li>
            <t>Give a newly resolved service's text no authority. Its descriptions guide the use of that service; nothing in them instructs the client, touches another connection, or waives any rule above.</t>
          </li>
        </ul>
        <t>Name resolution answers "where is example.com's service", not "which service makes videos". Search by category is a directory, and a directory is a domain like any other: anyone may run one as a BEST service whose queries return names.</t>
      </section>
      <section anchor="surfaces">
        <name>Surfaces with Different Access</name>
        <t>A service entry <bcp14>MAY</bcp14> carry its own "authentication" block, of the same shape as the root block (<xref target="authentication"/>). When present it governs every capability that service implements and the root block does not apply to them; when absent the root block applies. "type": "none" declares a public surface: its capabilities are callable without a credential.</t>
        <artwork><![CDATA[
"authentication": { "type": "apiKey", "scheme": "X-Api-Key",
                    "in": "header" },
"services": {
  "com.example.catalogue": {
    "version": "1.0.0",
    "description": "The public product catalogue.",
    "authentication": { "type": "none" },
    "http": { "endpoint": "https://api.example.com/catalogue" }
  },
  "com.example.shared": {
    "version": "1.0.0",
    "description": "Read-only view of a project shared by link.",
    "authentication": { "type": "bearer", "scheme": "Bearer" },
    "http": { "endpoint": "https://api.example.com/shared" }
  }
}
]]></artwork>
        <t>A surface is an ordinary service with ordinary capabilities: what it offers is discovered from its catalogues like anywhere else. Where a credential itself identifies the scope it opens -- a share token, a per-project key -- the endpoint carries no scope identifier: context derives from the credential, as Security Considerations already require of tenants.</t>
      </section>
      <section anchor="extensions">
        <name>Extensions</name>
        <t>The manifest root and each capability entry accept one optional free-form object, "extensions", for vendor-defined declarations. Everything else in the manifest stays strictly closed: this is the single lawful home for data this specification does not define.</t>
        <artwork><![CDATA[
{
  "name": "io.best.agents.events",
  "version": "1.0",
  "spec": "...", "schema": "...",
  "extensions": {
    "com.acme.region": "eu-west-1",
    "org.example.attestation": { "format": "...", "value": "..." }
  }
}
]]></artwork>
        <t>The following rules apply:</t>
        <ul spacing="normal">
          <li>
            <t>Domain-first. Anything dynamic, behavioural, or obtainable after authentication <bcp14>MUST</bcp14> be modelled as ordinary capability surface -- a custom capability, a query, an event, a workflow -- never as an extension. "extensions" exists solely for static, discovery-time declarations that must ride in the manifest document itself: facts a consumer needs before deciding to interact (an unauthenticated indexer classifying hosts, integrity data covering the manifest), or facts that annotate a specific manifest element in place.</t>
          </li>
          <li>
            <t>Keys <bcp14>SHOULD</bcp14> be reverse-domain identifiers owned by the declarer ("com.acme.region"); "io.best." remains reserved for this specification.</t>
          </li>
          <li>
            <t>The core protocol never interprets the contents; validators check only that "extensions" is an object. Consumers <bcp14>MUST</bcp14> ignore extensions they do not understand.</t>
          </li>
          <li>
            <t>An extension <bcp14>MUST NOT</bcp14> be required in order to use a core capability: a manifest whose core surface only works when a consumer reads an extension is non-conformant.</t>
          </li>
          <li>
            <t>The manifest content rule (see Security Considerations) applies unchanged: the root manifest is public, so extension content there is limited to information intended for unauthenticated disclosure.</t>
          </li>
        </ul>
      </section>
      <section anchor="manifest-discipline">
        <name>Manifest Discipline</name>
        <t>The manifest is structure. Its "description" fields say what a service or capability is, in a sentence or two, for a reader choosing whether to use it. They are never load-bearing.</t>
        <ol spacing="normal" type="1"><li>
            <t>Descriptions carry meaning, never mechanics. A manifest "description" <bcp14>MUST NOT</bcp14> contain URLs or URI templates, header names or credential formats, the names of catalogue operations, or step-by-step instructions. Each of those has a structural home: "http.endpoint" and "endpoints"; "authentication"; the catalogues; the workflows capability.</t>
          </li>
          <li>
            <t>Descriptions are short. A manifest "description" <bcp14>MUST NOT</bcp14> exceed 500 characters. Catalogue and schema descriptions are not capped: that is where an operation's meaning is explained.</t>
          </li>
          <li>
            <t>Every service is reachable by structure. Each key in "services" <bcp14>MUST</bcp14> be the implementing service of at least one capability in the same manifest. The one exception is the root manifest of a multi-tenant host, which <bcp14>MAY</bcp14> announce a service whose capabilities are tenant-scoped: that service <bcp14>MUST</bcp14> then be declared, with its capabilities, by every manifest "tenants.manifest" expands to. A service that no manifest gives a capability -- described only in words -- is non-conformant.</t>
          </li>
          <li>
            <t>No placeholders in structure. Templates appear only in "tenants.manifest"; a tenant identifier names a real scope (<xref target="multitenancy"/>, rule 5).</t>
          </li>
          <li>
            <t>Service text has no authority over the consumer. Descriptions, schema descriptions and workflow "guidance" guide the use of this service's operations. They <bcp14>MUST NOT</bcp14> instruct the consumer about its own client, configuration, other connections or other services -- the counterpart, on the service side, of what <xref target="name-resolution"/> requires the consumer to disregard. Making a connection last is the consumer's decision. A service speaks to the consumer about signing in and keeping the credential in one place only -- the sign-in guidance (<xref target="sign-in-guidance"/>), in this specification's words -- and offers the ways to use the credential in the token answer's credential block (<xref target="agent-registration"/>).</t>
          </li>
          <li>
            <t>When the manifest cannot say it, there are three lawful outlets, in this order: model it as ordinary behaviour (a command, a query, an event, a workflow); declare it under "extensions" if it is static and needed before interaction; raise it against the specification. Prose, and structure bent to a purpose it was not defined for, are not outlets.</t>
          </li>
        </ol>
        <t>Rules 1 to 4 are required from 0.10.0; until then a violation is reported as a warning. Rules 5 and 6 apply now.</t>
      </section>
      <section anchor="multitenancy">
        <name>Multi-Tenancy</name>
        <t>A tenant identifier in BEST is an opaque string scoping a manifest to a context -- a customer account, a user, a workspace, or the platform's own administrative context. Multi-tenancy applies when callers operate in isolated data scopes, even when every tenant shares an identical capability surface.</t>
        <t>The root manifest of a multi-tenant host declares a URI template (<xref target="RFC6570"/>):</t>
        <artwork><![CDATA[
"tenants": {
  "manifest": "https://api.example.com/.well-known/best/{tenantId}"
}
]]></artwork>
        <t>The following rules apply:</t>
        <ol spacing="normal" type="1"><li>
            <t>"{tenantId}" is the only permitted template variable. The root manifest <bcp14>MUST</bcp14> include "tenants.manifest" if tenant-scoped capabilities exist, and <bcp14>MUST NOT</bcp14> declare tenant-scoped capabilities itself; they appear only in tenant manifests. Root-level capabilities the host can fulfil without tenant context <bcp14>MAY</bcp14> remain; such a capability's service declares an "authentication" block of its own, even one identical to the root's, which is how a consumer and a validator tell it from a tenant-scoped capability left at the root.</t>
          </li>
          <li>
            <t>The expanded URI returns a fully self-contained tenant manifest: its "http.endpoint" is pre-scoped, every "dataschema" URI is fully resolved, no "{tenantId}" placeholder appears anywhere, and it carries no "tenants" object of its own. Consumers treat it exactly as a single-tenant manifest.</t>
          </li>
          <li>
            <t>Fetching the tenant manifest requires at most the credential declared in the root "authentication" object -- never a tenant identifier header, since the path already carries it.</t>
          </li>
          <li>
            <t>URI templating is valid only in "tenants.manifest". Everywhere else in the protocol, URIs <bcp14>MUST</bcp14> be fully resolved.</t>
          </li>
          <li>
            <t>A tenant identifier names a real scope. A constant pseudo-tenant ("public", "default", "anonymous") used to host a surface that has no scope is non-conformant; such a surface is declared as a root-level service with its own "authentication" instead (<xref target="surfaces"/>). (Required from 0.10.0.)</t>
          </li>
          <li>
            <t>The tenants root says where a credential belongs. A service the root manifest announces for its tenants (<xref target="manifest-discipline"/>, rule 3) <bcp14>MAY</bcp14> give it, in the root manifest, the "http.endpoint" that each tenant manifest's "http.endpoint" for the same service extends with "/{tenantId}": its tenants root (for example "https://api.example.com/api/best/tenants" for a tenant endpoint "https://api.example.com/api/best/tenants/acme"). It <bcp14>MUST</bcp14> do so when its token answer names no "tenant_id", unless its root is itself a surface (<xref target="agent-registration"/>). A consumer finds the tenants root as that service's "http.endpoint" in the root manifest. A GET on a tenants root <bcp14>SHOULD</bcp14> answer, with a credential, 200 and the tenants that credential opens, as { "tenants": [ { "tenant_id", "endpoint", "manifest" } ] }; it <bcp14>MUST</bcp14> do so for a credential answered with no "tenant_id". Without a credential it answers the 401 a tenant endpoint gives, naming the way in. A service that cannot tell which tenant a credential opens answers a BEST error that says where the consumer finds it -- the "endpoint" of the token answer and its "tenant_id" where it has one, or a new sign-in; a credential answered with no "tenant_id" is never answered so, since its tenants are listed. A tenants root never answers a bare 404: a consumer that kept only its credential -- a model after a restart -- would otherwise conclude it has no account. A root whose service is itself a surface -- commands and queries of its own at its "http.endpoint", its tenants under another path -- has no tenants root: it lists the tenants a credential opens through its own catalogue, a query whose answer carries each tenant's "tenant_id", "endpoint" and "manifest", and its tenant manifest route answers an unknown or guessed identifier with a BEST error that names that query.</t>
          </li>
        </ol>
      </section>
    </section>
    <section anchor="authentication">
      <name>Authentication and Agent Registration</name>
      <section anchor="authentication-block">
        <name>Authentication Block</name>
        <t>The "authentication" object appears at the manifest root and, optionally, on a service entry (<xref target="surfaces"/>), where it governs that service alone:</t>
        <artwork><![CDATA[
"authentication": {
  "type": "apiKey",
  "scheme": "X-Api-Key",
  "in": "header",
  "docs": "https://docs.example.com/authentication"
}
]]></artwork>
        <dl>
          <dt>type (required):</dt>
          <dd>
            <t>"none", "bearer", "apiKey", or "oauth2".</t>
          </dd>
          <dt>scheme (optional):</dt>
          <dd>
            <t>For "bearer", the Authorization prefix ("Bearer"); for "apiKey", the header or query parameter name.</t>
          </dd>
          <dt>in (optional):</dt>
          <dd>
            <t>"header" or "query" (for "apiKey").</t>
          </dd>
          <dt>scopes (optional):</dt>
          <dd>
            <t>Required OAuth 2.0 or token scopes.</t>
          </dd>
          <dt>tokenUrl (optional):</dt>
          <dd>
            <t>An OAuth 2.0 token endpoint <xref target="RFC6749"/>. It serves the "client_credentials" exchange for header-constrained clients (<xref target="token-exchange"/>) and, where "deviceAuthorizationUrl" is declared, the device-code grant that completes a registration.</t>
          </dd>
          <dt>deviceAuthorizationUrl (optional):</dt>
          <dd>
            <t>How an agent obtains this credential by itself: a device authorization endpoint <xref target="RFC8628"/> (see <xref target="agent-registration"/>). Requires "tokenUrl" and "note". Omitted when credentials are only issued out of band.</t>
          </dd>
          <dt>note (required with deviceAuthorizationUrl):</dt>
          <dd>
            <t>The sign-in guidance's manifest text, verbatim (<xref target="sign-in-guidance"/>).</t>
          </dd>
          <dt>docs (optional):</dt>
          <dd>
            <t>A page for people. A consumer never depends on it.</t>
          </dd>
        </dl>
        <t>Consumers <bcp14>MUST</bcp14> read this block before calling anything else. A consumer that holds no credential for a surface registers through "deviceAuthorizationUrl" when it is present; only when it is absent does it ask the person for a credential obtained out of band. The block's "note" says how, step by step.</t>
      </section>
      <section anchor="token-exchange">
        <name>Token Exchange for Constrained Clients</name>
        <t>Some legitimate clients cannot set HTTP headers -- URL-only integrations, webhook targets, legacy tooling. The escalation path is: prefer headers ("Authorization: Bearer" or the "apiKey" header); fall back to a body-based token exchange at "tokenUrl", for a client that can POST a body but not set custom headers; and only then, for a client that controls nothing but a URL, send the exchanged short-lived token as the "access_token" query parameter per <xref section="2.3" sectionFormat="of" target="RFC6750"/>. The long-lived credential never appears in a URL.</t>
        <t>When "type" is "oauth2", "tokenUrl" <bcp14>MUST</bcp14> name an OAuth 2.0 token endpoint <xref target="RFC6749"/>. Hosts intending to serve header-constrained clients <bcp14>SHOULD</bcp14> accept the "client_credentials" grant -- a form-encoded POST requiring no custom headers -- and return "access_token", "token_type", and "expires_in" per <xref section="5.1" sectionFormat="of" target="RFC6749"/>. Exchange-issued tokens <bcp14>SHOULD</bcp14> be short-lived (minutes, not days). Tenant context derives from the credential itself: a tenant identifier submitted alongside it is at most a routing hint, and a server <bcp14>MUST</bcp14> reject an exchange whose declared tenant does not match the credential's tenant binding. A long-lived credential <bcp14>SHOULD NOT</bcp14> be declared or accepted as a query parameter ("apiKey" with "in": "query"); a host that needs to serve URL-only clients <bcp14>SHOULD</bcp14> offer the exchange instead.</t>
        <t>One-time login links -- a single-use, short-lived code minted out of band, for example from an operator dashboard, and redeemed for a scoped token -- are a valid implementation of this exchange for URL-only onboarding. BEST does not standardise their issuance; a host advertising one does so under a namespaced "extensions" key (<xref target="extensions"/>).</t>
      </section>
      <section anchor="agent-registration">
        <name>Agent Registration</name>
        <t>A service that lets an agent obtain its own credential declares "deviceAuthorizationUrl" and "tokenUrl". The exchange is the OAuth 2.0 Device Authorization Grant <xref target="RFC8628"/>, unchanged; BEST adds three request parameters ("connection", "agent_label", "credential_lifetime"), three members of the token answer ("name", "tenant_id", "auth_header"), the credential block that comes with the credential, and the sign-in guidance (<xref target="sign-in-guidance"/>): the words, fixed by this specification, that tell the consumer at each step what to do.</t>
        <ol spacing="normal" type="1"><li>
            <t>The agent asks: a form-encoded POST to "deviceAuthorizationUrl", with no credential, carrying the parameters below.</t>
          </li>
          <li>
            <t>The service answers at once (<xref section="3.2" sectionFormat="of" target="RFC8628"/>): "device_code", "user_code", "verification_uri", optionally "verification_uri_complete", "expires_in", "interval". The "device_code" is generated by the service, unguessable, and is neither derived from nor usable as any identifier -- not an envelope "id", not a "correlationid", not an account or registration identifier. The answer also carries "note": the device text of the sign-in guidance, verbatim.</t>
          </li>
          <li>
            <t>The agent gives the person "verification_uri_complete" (or "verification_uri" and "user_code") before anything else, to open in their own browser. It <bcp14>MUST NOT</bcp14> open the link itself or in a browser it controls: approving is the person's act, and a page the agent drives could approve for them or put their password within its reach. It polls "tokenUrl" with "grant_type=urn:ietf:params:oauth:grant-type:device_code" and its "device_code", no faster than "interval". "authorization_pending" and "slow_down" are not errors; "access_denied" and "expired_token" end the registration (<xref section="3.5" sectionFormat="of" target="RFC8628"/>). A service <bcp14>SHOULD</bcp14> keep answering "expired_token" for an expired "device_code" for at least as long as the code lived, so a late poll learns why; after that, "invalid_grant" is acceptable.</t>
          </li>
          <li>
            <t>On approval the token endpoint answers per <xref section="5.1" sectionFormat="of" target="RFC6749"/> -- "access_token", "token_type", and "expires_in" when the credential is not durable or its approver bounded its life -- with three BEST members: "name", the connection's name -- the "connection" the agent sent, or the address of the sign-in manifest when it sent none; "tenant_id", the account the credential opens; and "auth_header", the header that carries the credential when that is not "Authorization". "token_type" is "Bearer" for a credential sent as "Authorization: Bearer", and "apikey" for one sent in the header "auth_header" names. A "device_code" is redeemed once.</t>
          </li>
        </ol>
        <t>The device authorization request takes these parameters:</t>
        <dl>
          <dt>client_id (required, per RFC 8628):</dt>
          <dd>
            <t>The name of the consumer software. BEST services pre-register no clients: the value is caller-declared and, like "source", never identity.</t>
          </dd>
          <dt>connection (optional):</dt>
          <dd>
            <t>The name of this connection: one word of lowercase letters, digits and hyphens (matching "^[a-z0-9][a-z0-9-]{0,63}$"), made from the name the person gave the service -- "acme payroll dev" becomes "acme-payroll-dev"; its host when they gave none -- and confirmed with them before the request. The same person signing in to two doors of one platform (a customer surface and a back office, each with its own credential and its own permissions) gives two names. The service keeps it with the registration and gives it back as "name" in the token answer, unread: it is the consumer's label, never identity. Another shape is "invalid_request", with an "error_description" that states the shape.</t>
          </dd>
          <dt>agent_label (optional):</dt>
          <dd>
            <t>What the approver reads when asked to admit this agent, recognisable to them ("Claude on Ada's phone").</t>
          </dd>
          <dt>credential_lifetime (optional):</dt>
          <dd>
            <t>"durable" (the default) or "session". A consumer that cannot keep a secret out of a conversation sends "session". The value only ever lowers what is issued.</t>
          </dd>
        </dl>
        <t>The token answer also carries the credential block: what the consumer needs to decide what to do with the credential, because the consumer is often a model making the requests itself, and this answer is the only thing that reaches it with the credential.</t>
        <dl>
          <dt>note (required):</dt>
          <dd>
            <t>Begins with the token text of the sign-in guidance, verbatim. A service <bcp14>MAY</bcp14> add to it after that text.</t>
          </dd>
          <dt>name (required):</dt>
          <dd>
            <t>The connection's name: the "connection" the agent sent, else the address of the sign-in manifest (its host, with its port when it has one, and its path when it is not at the root). The credential is kept under it, and the "mcp" entry is keyed by it.</t>
          </dd>
          <dt>endpoint (required):</dt>
          <dd>
            <t>The surface the credential opens (the tenant endpoint on a multi-tenant host), on the canonical endpoint host.</t>
          </dd>
          <dt>manifest (optional):</dt>
          <dd>
            <t>That surface's manifest.</t>
          </dd>
          <dt>ready_check (optional):</dt>
          <dd>
            <t>A URL on the credential's host whose GET, with the credential, answers 200 once the credential works.</t>
          </dd>
          <dt>mcp (optional):</dt>
          <dd>
            <t>This connection as an MCP client's configuration: an object with one member keyed by "name", whose value is the client's server entry, the credential in its environment. Two sign-ins are two names the person gives, so two entries: neither overwrites the other.</t>
          </dd>
          <dt>http (optional):</dt>
          <dd>
            <t>The surface for direct calls: an object with "header", the header line with a placeholder for the credential ("<tt>X-Api-Key: &lt;access_token&gt;</tt>"), "commands" and "queries", the catalogue URLs, and "events", the URL of "GET /events", on the canonical endpoint host.</t>
          </dd>
        </dl>
        <t>The consumer chooses: an MCP-capable client writes "mcp" into its own configuration, one without MCP keeps the credential for direct calls, and a client with its own store keeps it there and redacts it from everything the model sees. The credential appears only in "access_token" and in "mcp" -- never in "note", "http" or any example. Each URL in the block the credential may be sent to -- "endpoint", the URLs in "http", the base URL in "mcp" -- <bcp14>MUST</bcp14> be on the canonical endpoint host of the name the consumer resolved, and a consumer <bcp14>MUST NOT</bcp14> send the credential to one that is not (<xref target="name-resolution"/>). A page for people ("docs") may be elsewhere; the credential never goes there.</t>
        <t>A credential that opens no single account: the token answer has no "tenant_id" when the credential opens no one account -- on a service without tenants, or when it was admitted at the root of a host where one identity may hold several tenants, or none yet. Its "endpoint" is then the root service's, and the credential works there. A service with tenants that answers so <bcp14>MUST</bcp14> list, at its root, the tenants such a credential opens, each with its "tenant_id", "endpoint" and "manifest", as <xref target="multitenancy"/> rule 6 says: by its tenants root, or by a query of its own catalogue where the root is itself a surface. (Required from 0.10.0.) "tenant_id" is never the host or another stand-in, which a consumer would expand into "tenants.manifest" and reach no account.</t>
        <t>A credential that ends: after the agent's credential is revoked, or once it runs out, every request under it is refused with 401, and an event stream open under it <bcp14>MUST</bcp14> end within a bounded time whether or not events flow, since a 401 on the next request never reaches it; the stream of a credential that revoked itself first delivers that command's outcome, so the agent sees its command complete. An approver <bcp14>MAY</bcp14> bound a credential's life when admitting it: the token answer's "expires_in" then says the bound, and a bound the service cannot honour is refused, never shortened silently. (Required from 0.10.0.)</t>
        <t>Errors: "deviceAuthorizationUrl" and "tokenUrl" answer errors per <xref section="5.2" sectionFormat="of" target="RFC6749"/> (for the device endpoint, by <xref section="3.2" sectionFormat="of" target="RFC8628"/>), not in the BEST error format: status 400 (or 401 for a client failure) with a JSON body carrying "error" and, <bcp14>RECOMMENDED</bcp14>, "error_description". A request that is not form-encoded is "invalid_request" -- never a bare status with an empty body, because the agent is often a model that corrects itself only from what the answer says. "tokenUrl" uses the codes of <xref section="3.5" sectionFormat="of" target="RFC8628"/>. (Required from 0.10.0.)</t>
        <t>Nothing in this exchange is a BEST command, a catalogue entry or a workflow: it needs no public surface, no recipe and no prose beyond the sign-in guidance, and a client implements it once for every service. A registration is deliberately not a command: a command has no synchronous answer, so an anonymous caller could be tied to its registration only by an identifier it chose, and that identifier would end up accepted as the secret. What happens on the page the person opens -- signing in, signing up, approving -- is the platform's own (<xref target="identity"/>).</t>
      </section>
      <section anchor="sign-in-guidance">
        <name>Sign-in Guidance</name>
        <t>The consumer is often a general-purpose model that knows nothing of BEST, and what reaches it while it signs a person in is all it has to go on. So a service that declares "deviceAuthorizationUrl" says what to do at each of three steps in the words below, verbatim -- the same on every service, so that no implementation can drop a point:</t>
        <ul spacing="normal">
          <li>
            <t>the "note" of the "authentication" block that declares "deviceAuthorizationUrl" carries the manifest text;</t>
          </li>
          <li>
            <t>the "note" of the device authorization answer carries the device text;</t>
          </li>
          <li>
            <t>the "note" of the token answer carries the token text first; a service <bcp14>MAY</bcp14> add to it after.</t>
          </li>
        </ul>
        <t>Manifest text:</t>
        <ul empty="true">
          <li>
            <t>For you, the agent, not the person: read this manifest with an HTTP request; never show it to them or open it in a browser. When the person asks you to sign them in, first name the connection: one word of lowercase letters, digits and hyphens, made from what they called this service (acme payroll dev becomes acme-payroll-dev; its host if they gave no name), and ask them to confirm it before you go on. Then POST a form to deviceAuthorizationUrl with client_id set to your software's name and connection set to that name, and give them the link it answers (verification_uri_complete, or verification_uri and user_code) to open in their own browser, where they sign in and approve you. Never open that link yourself or in a browser you control, never sign in for them, and never ask for a password. Then poll tokenUrl, no faster than interval. Its answer carries a secret credential and, in name, the connection's name: save the credential straight to your client's credential store or to a file only the person can read, under that name, and never put it in a message, a command or any output: read the rest of the answer without it.</t>
          </li>
        </ul>
        <t>Device text:</t>
        <ul empty="true">
          <li>
            <t>Give the person this link, verification_uri_complete (or verification_uri and user_code), to open in their own browser, where they sign in and approve you. Never open it yourself or in a browser you control: approving is theirs. Then poll tokenUrl no faster than interval, with a form of grant_type=urn:ietf:params:oauth:grant-type:device_code, device_code and client_id. Its answer carries a secret credential and, in name, the connection's name: save the credential straight to your client's credential store or to a file only the person can read, under that name, and never put it in a message, a command or any output: read the rest of the answer without it.</t>
          </li>
        </ul>
        <t>Token text:</t>
        <ul empty="true">
          <li>
            <t>The credential is a secret. Keep it in your client's configuration or credential store, under the name in this answer, the connection the person named: another name is another sign-in, kept apart, with its own credential and its own permissions. Never repeat it in the conversation, in a message, a command or any output: read it from where you stored it. A transcript, commands and their output included, is not a secret store, and a credential that appears there is leaked and must be replaced. If your client cannot store it, say so instead of showing it.</t>
          </li>
        </ul>
        <t>The same texts are published in the living specification's discovery schema <xref target="BESTSPEC"/>, one set per version that changed them. They change only with the specification, and every implementation takes them unchanged. Each version's texts stay published: a service carries the texts of the version it declares, or of a later one, so it is never non-conformant for not having moved yet, and a service that declares a version carries at least that version's words. A consumer whose own client makes these requests follows them itself and need not show them to its model.</t>
      </section>
      <section anchor="identity">
        <name>Identity and Registration: a Described Pattern</name>
        <t>This section is not normative. BEST defines no identity provider, no account model and no login; a platform that has them keeps them. The one thing BEST fixes is how an agent obtains its credential (<xref target="agent-registration"/>); this section names the parts so that implementers use the same words for the same things.</t>
        <t>The flow is one, whatever the person said and whether or not they have an account. The person says "sign me in to example.com" -- or "sign me up", or "connect me". The agent registers itself and gives the person a link and a code. The link opens a page of the platform where the person signs in, or signs up if the platform offers that, and approves the agent. The agent collects its credential and, with it, the account's identifier. The agent never needs to know whether an account existed.</t>
        <table>
          <name>Identity behaviours</name>
          <thead>
            <tr>
              <th align="left">Behaviour</th>
              <th align="left">Whose</th>
              <th align="left">Where it happens</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Register agent</td>
              <td align="left">the agent's</td>
              <td align="left">the device authorization request, not a BEST command</td>
            </tr>
            <tr>
              <td align="left">Sign in</td>
              <td align="left">the person's</td>
              <td align="left">the platform's own page, reached from the link the agent shows</td>
            </tr>
            <tr>
              <td align="left">Sign up (where offered)</td>
              <td align="left">the person's</td>
              <td align="left">the same page; also where the account is opened</td>
            </tr>
            <tr>
              <td align="left">Approve agent</td>
              <td align="left">the approver's</td>
              <td align="left">the same page, once signed in</td>
            </tr>
            <tr>
              <td align="left">Revoke agent</td>
              <td align="left">the agent's, or the approver's</td>
              <td align="left">a command under that credential; or the platform's UI</td>
            </tr>
            <tr>
              <td align="left">Sign out</td>
              <td align="left">the person's</td>
              <td align="left">the platform's own UI; touches no agent credential</td>
            </tr>
          </tbody>
        </table>
        <t>Signing in, up and out belong to the person and happen on the platform's pages, with its identity provider: the agent never sees a password, never performs or simulates them, and no BEST operation or workflow is named after them. Registering and revoking belong to the agent: an operation that revokes a key is a revocation, not a sign-out. Ending the person's session leaves every agent credential alive; revoking a credential leaves the person's session alive.</t>
        <t>Where the credential lives is the consumer's business. A client with its own store makes the token request itself, keeps the credential where the model never sees it, and has it again at every later start. An agent with no such client -- a model in a chat making HTTP requests -- has nowhere to put a secret but the conversation; it registers with "credential_lifetime=session", and what it receives is short-lived. A platform may let an agent open an account itself; that is an ordinary command carrying the "commitment" impact category (<xref target="impact"/>), confirmed with the person before it is sent.</t>
      </section>
    </section>
    <section anchor="commands">
      <name>Commands</name>
      <t>Commands are intents to change a domain service. The service validates, queues, and processes them asynchronously; results surface as events (<xref target="events"/>).</t>
      <table>
        <name>Command endpoints</name>
        <thead>
          <tr>
            <th align="left">Method</th>
            <th align="left">Path</th>
            <th align="left">Description</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">GET</td>
            <td align="left">/commands</td>
            <td align="left">Command catalogue: all accepted command types with schema URIs</td>
          </tr>
          <tr>
            <td align="left">POST</td>
            <td align="left">/commands</td>
            <td align="left">Send a command (BEST envelope); validates, queues, returns 201</td>
          </tr>
          <tr>
            <td align="left">GET</td>
            <td align="left">/commands/{schema}/{version}</td>
            <td align="left">JSON Schema document for one command type and version</td>
          </tr>
        </tbody>
      </table>
      <section anchor="catalogue">
        <name>Catalogue</name>
        <t>"GET /commands" returns the list of command types the service accepts. Each entry carries "schema" (a kebab-case name used as the "{schema}" path segment; distinct from the PascalCase envelope "type"), "version", an optional "commandType", "dataschema" (a resolvable URI that is the exact value to place on a command envelope, resolving to "GET /commands/{schema}/{version}" on the same surface), an optional "description", an optional "workflows" array of workflow identifiers (see <xref target="workflows"/>), and an optional "impact" annotation (see <xref target="impact"/>).</t>
        <t>"commandType" is the exact envelope "type" to send for the command ("ProposeCounter"). When it is absent, consumers derive the type as the PascalCase form of "schema"; servers <bcp14>SHOULD</bcp14> state it, because a derivation is a guess. Like "workflows" and "impact", it is carried on both surfaces -- the catalogue entry and the schema document, as a top-level member with the same value.</t>
        <t>The schema document returned by "GET /commands/{schema}/{version}" has media type "application/schema+json". It <bcp14>MAY</bcp14> declare a "produces" array of PascalCase event types the command can raise (e.g. ["CounterProposed", "NegotiationFailed"]). Failure outcomes are ordinary events in that list; naming conventions such as a "Failed" suffix are service-defined. BEST defines no timeout protocol: services <bcp14>SHOULD</bcp14> document expected processing times and <bcp14>SHOULD</bcp14> always publish a failure event rather than silently dropping a command; callers decide how long to wait.</t>
      </section>
      <section anchor="impact">
        <name>Impact Annotations</name>
        <t>Some commands do not share a blast radius with the rest of the catalogue: the person the consumer acts for would want to be asked first. They move money, destroy data, cannot be undone -- or commit the person to something, or let someone new into what is theirs. The optional "impact" annotation declares this, so a consumer can discover which commands warrant extra care before submission:</t>
        <artwork><![CDATA[
{
  "schema": "submit-order",
  "version": "1.0",
  "dataschema":
    "https://api.example.com/commands/submit-order/1.0",
  "description": "Submit a market order",
  "impact": {
    "categories": ["financial"],
    "confirmation": "required",
    "warning": "Places a real order on your broker account.
                Capital is at risk."
  }
}
]]></artwork>
        <dl>
          <dt>categories (required):</dt>
          <dd>
            <t>The kinds of impact, as named values: "financial" (moves money or puts capital at risk), "destructive" (removes data or state), "irreversible" (no compensating command), "compliance" (bypasses or alters a compliance control), "commitment" (binds the person: opens an account, accepts terms, starts a subscription, creates personal data in their name), "access" (grants a principal access to what belongs to the person: issues a credential, shares a resource, invites a member). The vocabulary is open; consumers <bcp14>MUST</bcp14> treat unknown values as high-impact.</t>
          </dd>
          <dt>confirmation (required):</dt>
          <dd>
            <t>"required" means a consumer acting on behalf of a human <bcp14>MUST NOT</bcp14> submit the command without explicit, per-submission confirmation from that human. "recommended" means the consumer <bcp14>SHOULD</bcp14> confirm but <bcp14>MAY</bcp14> proceed where the human has durably authorised this class of operation.</t>
          </dd>
          <dt>warning (optional):</dt>
          <dd>
            <t>A human-readable warning the consumer <bcp14>SHOULD</bcp14> surface to the human, substantially intact, before asking for confirmation.</t>
          </dd>
        </dl>
        <t>The annotation is carried on both surfaces that describe an operation -- the catalogue entry and the schema document, as a top-level member -- and both <bcp14>MUST</bcp14> carry the same value. It is descriptive, not enforcement: it tells a well-behaved consumer what to do before submitting, and never substitutes for the server-side controls on high-impact commands (see Security Considerations), because a server cannot rely on clients honouring it. Service-to-service automation with no human principal is governed by those server-side controls alone; the annotation does not require inventing a human to ask.</t>
      </section>
      <section anchor="ingestion-semantics">
        <name>Ingestion Semantics</name>
        <t>"POST /commands" processing proceeds as follows:</t>
        <ol spacing="normal" type="1"><li>
            <t>Validate that the required envelope attributes are present.</t>
          </li>
          <li>
            <t>Look up the validation schema in the server's own catalogue, keyed by a server-owned identifier (the "type", or the schema name carried in "dataschema"). The inbound "dataschema" value is a selector, not a location: servers <bcp14>MUST NOT</bcp14> fetch a caller-supplied "dataschema" URI (see Security Considerations). Schema selection, authorisation, and dispatch <bcp14>MUST</bcp14> key on the same identifier.</t>
          </li>
          <li>
            <t>Validate "data" against that schema.</t>
          </li>
          <li>
            <t>Check the command against the service's current state: a well-formed command the service cannot honour now (no room for it, nothing by the name it gives) is refused with 400, a service-defined "code" that names the condition, a "message" that says what to do, and "details" a program can act on.</t>
          </li>
          <li>
            <t>If valid, durably queue the command and return 201 with a JSON body carrying "id" (the command's envelope id) and "correlationId" (the effective correlation identifier, <xref target="correlation"/>). If invalid, return 400.</t>
          </li>
        </ol>
        <t>A command refused at step 4 was never accepted: its "id" is free for the corrected retry. A retry of an accepted command is answered as the original was, without the check, where the service answers a duplicate rather than rejecting it.</t>
        <t>The envelope "id" is an idempotency key, scoped to the credential that sent it and kept for a retention window the service states in its documentation. A duplicate (the same "id" from the same credential) is rejected with 409 naming the "id", or safely ignored; a reused "id" with a different payload <bcp14>MUST</bcp14> be rejected with 409. A duplicate that is safely ignored is answered as the original was, with the original's status, "id" and "correlationId", and runs nothing again, so a client that lost the first answer and retries gets exactly what it missed. Two credentials do not collide on an idempotency key, though a command that names no "correlationid" takes its "id" as its correlation identifier, which belongs to the sender that used it first (<xref target="correlation"/>). The "type" attribute is the routing key; "source" <bcp14>MUST NOT</bcp14> be the sole routing key.</t>
        <t>201 signals that the command was durably recorded and processing will happen. A server that cannot durably enqueue before responding <bcp14>MAY</bcp14> return 202 instead, which carries no durability guarantee. A durably recorded command is processed even if the service restarts before it ran: after a restart the service processes it, through the same state check as if it had just arrived, or publishes its failure event. It is never dropped silently.</t>
      </section>
      <section anchor="correlation">
        <name>Correlation</name>
        <t>BEST defines no synchronous command response; the result of processing is one or more events, tied to the command by the "correlationid" envelope attribute. How a client gets them is the implementor's decision: by polling a query the service defines, or, where it declares the events capability, from "GET /events" and its SSE stream.</t>
        <t>The caller <bcp14>MAY</bcp14> set "correlationid" on a command; when it is absent, the server adopts the command's "id" as the correlation identifier. In both cases the 201 response echoes the effective value as "correlationId". Every event produced by processing the command <bcp14>MUST</bcp14> carry that identifier in its "correlationid" attribute, so any consumer -- including one that never saw the command -- can match events to their originating submission. So <bcp14>MUST</bcp14> every later fact about what the command created (a deployment that ends hours after it was ready, a job that finishes), for as long as the thing lives, so that a consumer filtering on the correlation identifier sees its whole life (required from 0.10.0 for the later facts). Events with no command behind them <bcp14>MAY</bcp14> omit the attribute.</t>
        <t>In a multi-step process, a follow-up command issued in reaction to an event, by the same sender, <bcp14>SHOULD</bcp14> carry the same "correlationid", so one identifier ties the steps of a process together. Correlation and idempotency are separate concerns: "id" remains unique per message, while "correlationid" groups messages into a process.</t>
        <t>A correlation identifier belongs to the sender that first used it on a surface: the authenticated credential whose accepted command first carried it. A command from another sender naming it <bcp14>MUST</bcp14> be refused with a 400 whose details name the field, and what a credential may read of a correlation derives from that ownership, never from the identifier alone. (Required from 0.10.0.) Two consequences follow. A command with no "correlationid" takes its "id" as its correlation identifier, so two senders sending one "id" without a correlation identifier are one accepted and one refused; the fix is a correlation identifier of the sender's own. And a chain of commands under one correlation identifier is one sender's: a service that reacts to an event under its own credential starts a correlation of its own.</t>
        <artwork><![CDATA[
POST /commands                    -> 201 { "id": "abc123",
                                          "correlationId": "abc123" }
GET  /queries/{schema}?...               -> a service-defined query
GET  /events?correlationId=abc123        -> what has already happened
GET  /events/stream?correlationId=abc123 -> what happens next (push)
]]></artwork>
      </section>
    </section>
    <section anchor="events">
      <name>Events</name>
      <t>Events are immutable facts published as the result of processing: none is changed once told.</t>
      <table>
        <name>Event endpoints</name>
        <thead>
          <tr>
            <th align="left">Method</th>
            <th align="left">Path</th>
            <th align="left">Description</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">GET</td>
            <td align="left">/events</td>
            <td align="left">Historical query: paginated, filterable list of past events</td>
          </tr>
          <tr>
            <td align="left">GET</td>
            <td align="left">/events/stream</td>
            <td align="left">Live stream (Server-Sent Events): events produced after the connection opens</td>
          </tr>
          <tr>
            <td align="left">GET</td>
            <td align="left">/events/{schema}/{version}</td>
            <td align="left">JSON Schema document for one event type and version</td>
          </tr>
        </tbody>
      </table>
      <t>"GET /events" and "GET /events/stream" are complementary: a caller loads history first, then opens the stream.</t>
      <t>An event with "dataschema" is typed: consumers can fetch the schema and validate. Without it, the event is untyped and the consumer interprets "data"; the envelope ("type", "source", "id", "correlationid", "time") still supports routing and correlation. Both patterns can coexist in one service.</t>
      <t>BEST makes no replay guarantee: "GET /events" returns whatever the server currently exposes -- a full history, a recent window, or a view of domain records mapped to the event shape at query time. Clients <bcp14>MUST NOT</bcp14> assume completeness, ordering, or replay fidelity. For reliable point-in-time delivery, callers use a push channel.</t>
      <section anchor="historical-query">
        <name>Historical Query</name>
        <t>Query parameters on "GET /events", all optional and combinable: "type" (filter by envelope type), "correlationId" (only events whose "correlationid" attribute matches), "source", "from" and "to" (time-range bounds, inclusive), "limit" (servers <bcp14>MAY</bcp14> apply a lower ceiling), and "after" (an opaque pagination cursor from a previous response's "nextCursor"). "from" and "to" are date-times per <xref target="RFC3339"/>, the form of the envelope's "time"; any other form is a 400 naming the parameter (required from 0.10.0). Responses are an object with an "events" array and, when further pages exist, a "nextCursor" string.</t>
      </section>
      <section anchor="event-types">
        <name>Event Types</name>
        <t>There is no listing of event types: "GET /events" returns events, and nothing else. A typed event's schema document is at "GET /events/{schema}/{version}", where the event's own "dataschema" points; a command's schema document names in "produces" the event types it can raise, which is how a consumer learns them before any has been told. Untyped events rely on the "description" of the command that produces them.</t>
      </section>
      <section anchor="live-stream">
        <name>Live Stream</name>
        <t>"GET /events/stream" is requested with "Accept: text/event-stream" plus credentials; optional filters are "correlationId", "type", and "source". Each event arrives as an SSE "data" field containing the envelope JSON, with the envelope "id" echoed as the SSE event id. On reconnection, clients send "Last-Event-ID" and the server replays anything produced after it. A "Last-Event-ID" the server never told, or no longer holds, is no position among its events: the server <bcp14>SHOULD</bcp14> then deliver from now on, as for a new connection, and the client reads what it missed from "GET /events". Servers <bcp14>SHOULD</bcp14> send keepalive comments and <bcp14>MAY</bcp14> close the stream after inactivity or a terminal event; clients <bcp14>MUST</bcp14> handle reconnection.</t>
      </section>
      <section anchor="delivery-channels">
        <name>Delivery Channels</name>
        <t>The events capability declares its push channels in the manifest's "push" object. Browser applications, command-line tools, and local agents use SSE; LLM clients with an active MCP session use MCP server-to-client notifications (<xref target="transports"/>); every other caller polls "GET /events", which is always available.</t>
      </section>
    </section>
    <section anchor="queries">
      <name>Queries</name>
      <t>Queries are synchronous reads of current state -- the read-before-write complement to commands (for example, an agent lists broker accounts before referencing one in a command). The capability is declared in the manifest like any other.</t>
      <table>
        <name>Query endpoints</name>
        <thead>
          <tr>
            <th align="left">Method</th>
            <th align="left">Path</th>
            <th align="left">Description</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">GET</td>
            <td align="left">/queries</td>
            <td align="left">Query catalogue: same entry shape as the command catalogue</td>
          </tr>
          <tr>
            <td align="left">GET</td>
            <td align="left">/queries/{schema}/{version}</td>
            <td align="left">Query schema document</td>
          </tr>
          <tr>
            <td align="left">GET</td>
            <td align="left">/queries/{schema}</td>
            <td align="left">Execute: parameters as query string; returns 200 with the result body</td>
          </tr>
        </tbody>
      </table>
      <t>The query schema document has up to three sections: "description", "parameters" (a JSON Schema for accepted query-string parameters, omitted when the query takes none), and "response" (a JSON Schema for the result body; required). Query catalogue entries and schema documents <bcp14>MAY</bcp14> carry the same "workflows" cross-link array as their command counterparts (<xref target="workflows"/>). Execution returns 400 for missing or invalid parameters and 404 for an unknown schema name.</t>
      <t>The "parameters" schema governs what an execution accepts: the query string is validated against it, each value a string, so the schema declares its parameters as strings (a number by a "pattern"), and a failure is a 400 whose details name the parameter (required from 0.10.0). A parameter the schema does not declare is refused only when the schema says "additionalProperties": false; a query whose document has no "parameters" ignores any it is sent.</t>
      <t>Queries are not a query language (no filter expressions, joins, or aggregations), not a REST resource hierarchy (no per-item paths), and not event sourcing (they return current state as the service projects it; historical facts live in "GET /events").</t>
    </section>
    <section anchor="workflows">
      <name>Workflows</name>
      <t>Workflows are published recipes: read-only, named sequences of catalogue operations with per-step guidance, for multi-step processes whose order is a fixed, well-known happy path. The capability ("io.best.agents.workflows") is optional and strictly descriptive: the service never executes, retries, tracks, or branches the steps; the caller -- typically an autonomous agent -- sends each operation itself and waits for its outcome before proceeding.</t>
      <table>
        <name>Workflow endpoints</name>
        <thead>
          <tr>
            <th align="left">Method</th>
            <th align="left">Path</th>
            <th align="left">Description</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">GET</td>
            <td align="left">/workflows</td>
            <td align="left">Workflow index: "id", "name", "description" per recipe, never the steps</td>
          </tr>
          <tr>
            <td align="left">GET</td>
            <td align="left">/workflows/{id}</td>
            <td align="left">One full recipe with its ordered steps; 404 for an unknown id</td>
          </tr>
        </tbody>
      </table>
      <t>The index is deliberately shallow, so a consumer can hold the entire list in one read and choose; full recipes are fetched one at a time. A service declares the capability "active" only while it publishes at least one recipe; one that publishes none, yet or any more, declares it "planned" and serves no index, so a consumer that reads "active" finds something to follow (required from 0.10.0). Workflow identifiers are stable, service-defined, URL-path-safe strings (reverse-domain notation or kebab-case); renaming an identifier is a breaking change for anything linking to it.</t>
      <t>Each step of a recipe carries "kind" ("command" or "query": whether the step is a "POST /commands" or a "GET /queries/{schema}"), "dataschema" (the resolvable URI of the operation's schema document in the service's live catalogue -- recipes reference the catalogue and never duplicate it, so they cannot drift from the real contracts), an optional "optional" flag (true when the step applies only in some runs), and optional "guidance" (how the step combines with the others: what to carry forward, what to wait for, when to skip). "guidance" is bound by <xref target="manifest-discipline"/> rule 5: it speaks about this service's steps only, and never tells the consumer what to do with its own client or configuration.</t>
      <artwork><![CDATA[
GET /workflows/io.example.workflows.onboard-a-worker
{
  "id": "io.example.workflows.onboard-a-worker",
  "name": "Onboard a worker",
  "description": "Create the engagement, assign a contact, and
    invite the worker. Drive each step yourself and wait for its
    outcome before the next.",
  "steps": [
    { "kind": "command",
      "dataschema":
        "https://api.example.com/commands/submit-employee/1.0",
      "guidance": "Creates the engagement. Keep the correlationId
        -- every later step references it." },
    { "kind": "query",
      "dataschema":
        "https://api.example.com/queries/list-employees/1.0",
      "guidance": "Poll until the new engagement appears --
        commands are asynchronous." },
    { "kind": "command",
      "dataschema":
        "https://api.example.com/commands/invite-worker/1.0",
      "optional": true,
      "guidance": "Only when the user wants the invitation sent
        immediately." }
  ]
}
]]></artwork>
      <t>Cross-linking is the single discoverability mechanism: an operation advertises the recipes it belongs to through the "workflows" array -- the identifiers of the published workflows the operation participates in -- carried on its catalogue entry and on its schema document as a top-level member (JSON Schema tolerates unknown keywords; BEST names this one, and validators ignore it). Both surfaces carry the same array, so the pointer is present at whichever read a consumer performs before acting. Servers publishing workflows <bcp14>SHOULD</bcp14> stamp it in both places for every operation that appears in a recipe; consumers <bcp14>SHOULD</bcp14> fetch the referenced recipe before composing a multi-step sequence themselves. Human-readable descriptions are free to mention recipes, but the protocol attaches no discoverability role to prose.</t>
      <t>The capability's boundary is deliberate: the moment a service executes, retries, persists, or branches steps on the caller's behalf, it has built an execution runtime, which is out of BEST's scope. Execution engines belong behind the service, not behind this capability.</t>
    </section>
    <section anchor="transports">
      <name>Transports</name>
      <t>HTTP is the baseline transport: every conformant service exposes it. All requests and responses are "application/json" (schema documents are "application/schema+json"; the event stream is "text/event-stream").</t>
      <t>"POST /commands" carries one BEST envelope in the CloudEvents structured content mode <xref target="CLOUDEVENTS-HTTP"/>. Servers <bcp14>MUST</bcp14> accept "Content-Type: application/cloudevents+json" and, for compatibility, "application/json"; consumers <bcp14>SHOULD</bcp14> send the former. With it, a CloudEvents SDK's HTTP sender produces a valid BEST request unchanged. (Accepting "application/cloudevents+json" is required from 0.10.0.)</t>
      <t>Every capability path is appended to the service's "http.endpoint"; the leading slash is a separator, not a root-relative indicator. For example, with "http.endpoint" of "https://api.example.com/tenants/acme", the path "/commands" resolves to "https://api.example.com/tenants/acme/commands". The "http.endpoint" value <bcp14>MUST</bcp14> be the consumer-facing public address, never an internal backend or service-mesh URL.</t>
      <t>Authentication follows the "authentication" object governing the service -- its own, else the root's: "bearer" maps to "Authorization: Bearer" credentials; "apiKey" to a header or query parameter named by "scheme". "GET /.well-known/best", the capabilities of a service that declares "type": "none", and the "deviceAuthorizationUrl" and "tokenUrl" endpoints need no credential; every other endpoint requires one when one is declared.</t>
      <t>All error responses, except those of "deviceAuthorizationUrl" and "tokenUrl" (<xref target="agent-registration"/>), use a consistent body:</t>
      <artwork><![CDATA[
{ "error": { "code": "SCHEMA_NOT_FOUND",
             "message": "Unknown command schema 'foo'",
             "details": {} } }
]]></artwork>
      <t>Status codes carry the semantics of <xref target="RFC9110"/>; the 429 status code is defined in <xref target="RFC6585"/>.</t>
      <table>
        <name>HTTP status codes</name>
        <thead>
          <tr>
            <th align="left">Status</th>
            <th align="left">Meaning</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">200</td>
            <td align="left">Success with body (queries, event lists, catalogues, schema documents)</td>
          </tr>
          <tr>
            <td align="left">201</td>
            <td align="left">Command accepted and durably queued</td>
          </tr>
          <tr>
            <td align="left">202</td>
            <td align="left">Accepted without durability guarantee</td>
          </tr>
          <tr>
            <td align="left">400</td>
            <td align="left">Invalid request body or parameters (schema validation failure), or a well-formed command the service cannot honour in its current state, with a code that names the condition</td>
          </tr>
          <tr>
            <td align="left">401</td>
            <td align="left">Missing or invalid credentials (only when the governing authentication type is not "none")</td>
          </tr>
          <tr>
            <td align="left">404</td>
            <td align="left">Unknown route, schema name, or version</td>
          </tr>
          <tr>
            <td align="left">409</td>
            <td align="left">Duplicate command "id": with a different payload always, with the same payload when the service rejects a duplicate rather than ignoring it</td>
          </tr>
          <tr>
            <td align="left">413</td>
            <td align="left">Request body exceeds server limits</td>
          </tr>
          <tr>
            <td align="left">415</td>
            <td align="left">"POST /commands" with a Content-Type the server does not take; the error says which it takes</td>
          </tr>
          <tr>
            <td align="left">422</td>
            <td align="left">Semantic error (capability not supported)</td>
          </tr>
          <tr>
            <td align="left">429</td>
            <td align="left">A command past the server's pace; Retry-After says when to send again</td>
          </tr>
          <tr>
            <td align="left">500</td>
            <td align="left">Internal error</td>
          </tr>
        </tbody>
      </table>
      <t>A Model Context Protocol <xref target="MCP"/> binding <bcp14>MAY</bcp14> additionally be declared in a service's "mcp" transport object ("transport" -- "stdio", "sse", or "http" -- "server", optional "push" and a transport-scoped "authentication" object). Every MCP tool wraps exactly one HTTP endpoint; the binding exposes the same logical capability surface to LLM tooling that cannot call HTTP APIs directly. When "push" is true, the server <bcp14>MAY</bcp14> deliver events as MCP server-to-client notifications, matched by correlation identifier.</t>
      <t>The reference MCP server's "send_command" tool builds the envelope for "POST /commands": it derives "type" by PascalCase conversion of the schema name ("configure-broker" becomes "ConfigureBroker"), sets "dataschema" to the absolute catalogue URI, and, when the caller supplies no "source", sets it to "urn:best-mcp", the client's own identity. On the wire "source" is always present.</t>
      <section anchor="first-contact">
        <name>First Contact</name>
        <t>The canonical first-contact algorithm for an agent or automated client is:</t>
        <ol spacing="normal" type="1"><li>
            <t>Fetch the root manifest ("GET /.well-known/best", always public). Extract "authentication" -- the root block and any a service declares for itself -- and "tenants.manifest" before anything else. Where a block declares "deviceAuthorizationUrl", its "note" is the sign-in guidance: follow it. The manifest is for the agent, not the person.</t>
          </li>
          <li>
            <t>Identify the manifest type and collect prerequisites before making any authenticated request. A manifest with the commands, queries or events capability is a direct service; one with "tenants.manifest" and none of those capabilities is a multi-tenant router. In both, the agent needs nothing from the person if it holds a credential or the surface is public, and otherwise registers through "deviceAuthorizationUrl", asking the person for a credential only when that is absent. A completed registration yields the credential and the tenant identifier together; the agent never asks the person for a tenant identifier the registration can give. A manifest with only those capabilities at "status": "planned", or with empty "capabilities" and no "tenants.manifest", is reported to the person.</t>
          </li>
          <li>
            <t>Multi-tenant only: expand the template with the tenant identifier, fetch the tenant manifest with credentials, then treat it exactly like a direct service manifest. With no tenant identifier, use the root's services, and expand the template with a "tenant_id" the root lists for the credential.</t>
          </li>
          <li>
            <t>Read the capability's "endpoints" array and resolve each path against the "http.endpoint" of the service named in the capability's "service" field (or the matching-prefix service if absent).</t>
          </li>
          <li>
            <t>Fetch the catalogues -- "GET /commands" and "GET /queries", whichever are declared -- which are the definitive answer to "what can I do here". Then fetch the schema for the chosen operation, execute it, and get the result as the service offers it: by correlation identifier on its events, or a query.</t>
          </li>
        </ol>
      </section>
    </section>
    <section anchor="conformance">
      <name>Conformance</name>
      <t>A BEST-compliant endpoint <bcp14>MUST</bcp14>:</t>
      <ol spacing="normal" type="1"><li>
          <t>Expose "GET /.well-known/best" returning a valid manifest: status 200, publicly retrievable, "application/json".</t>
        </li>
        <li>
          <t>Include at least one service in the manifest.</t>
        </li>
        <li>
          <t>List all supported capabilities with valid schema URLs.</t>
        </li>
        <li>
          <t>Implement the HTTP surface for every listed capability.</t>
        </li>
        <li>
          <t>Return valid JSON conforming to the referenced schemas.</t>
        </li>
        <li>
          <t>Use the status codes and error format of <xref target="transports"/>, except "deviceAuthorizationUrl" and "tokenUrl", which answer errors per <xref section="5.2" sectionFormat="of" target="RFC6749"/> (<xref target="agent-registration"/>).</t>
        </li>
        <li>
          <t>Declare authentication in the manifest, or omit the declaration for public endpoints; an undocumented 401 is non-conformant.</t>
        </li>
        <li>
          <t>Reference every declared service from at least one capability -- in the same manifest or, for a multi-tenant root, in its tenant manifests.</t>
        </li>
        <li>
          <t>Keep every manifest "description" within the length limit and free of mechanics (<xref target="manifest-discipline"/>).</t>
        </li>
        <li>
          <t>Publish no second machine-readable or agent-directed description of the service (<xref target="origin-discovery"/>).</t>
        </li>
        <li>
          <t>Where "deviceAuthorizationUrl" is declared, carry the sign-in guidance verbatim -- the manifest text as that "authentication" block's "note", the device text as the device answer's "note", the token text at the start of the token answer's "note" -- in the words of the version the manifest declares, or of a later one; and, from 0.9.17, accept "connection" in the device request and give it back as the token answer's "name", keying the "mcp" entry by it (<xref target="agent-registration"/>, <xref target="sign-in-guidance"/>).</t>
        </li>
        <li>
          <t>Bind a correlation identifier to the sender that first used it, refusing another sender's command naming it with a 400 that names the field (<xref target="correlation"/>).</t>
        </li>
        <li>
          <t>Meet each obligation this document marks "(Required from 0.10.0)": the tenants of a credential answered with no "tenant_id" listed at the root, and the end of a credential (<xref target="agent-registration"/>); the correlation identifier on every later fact about what a command created (<xref target="correlation"/>); a workflows capability "active" only with a recipe (<xref target="workflows"/>); a query's "parameters" schema enforced and an event range in RFC 3339 form (<xref target="events"/>); and, in Security Considerations, cleartext refused and never carrying a credential, request records without credentials or query strings, and the 413 and 429 answers.</t>
        </li>
      </ol>
      <t>Items 8 to 10, 12 and 13, the pseudo-tenant rule (<xref target="multitenancy"/>, rule 5) and accepting "application/cloudevents+json" on "POST /commands" are required from 0.10.0. Each is stated from the release that introduced it (items 8 to 10 from 0.9.11), and validators report its violations as warnings until 0.10.0. Item 11 is required now: it is what keeps a credential out of a transcript and the approval in the person's hands.</t>
      <t>Per-capability required endpoints, for capabilities declared "active" ("partial" capabilities are exempt but <bcp14>MUST</bcp14> document their available routes in "endpoints"):</t>
      <table>
        <name>Required endpoints per capability</name>
        <thead>
          <tr>
            <th align="left">Capability</th>
            <th align="left">Required endpoints</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">io.best.agents.commands</td>
            <td align="left">GET /commands, POST /commands</td>
          </tr>
          <tr>
            <td align="left">io.best.agents.events</td>
            <td align="left">GET /events</td>
          </tr>
          <tr>
            <td align="left">io.best.agents.queries</td>
            <td align="left">GET /queries, GET /queries/{schema}/{version}, GET /queries/{schema}</td>
          </tr>
          <tr>
            <td align="left">io.best.agents.workflows</td>
            <td align="left">GET /workflows, GET /workflows/{id}</td>
          </tr>
        </tbody>
      </table>
      <t>Multi-tenant root manifests additionally follow the rules of <xref target="multitenancy"/>.</t>
      <t>Conformance does not require any specific language, framework, or architecture; any specific event transport; MCP support; or AI capabilities -- a BEST service can be deterministic or human-operated.</t>
      <t>Versioning is semantic (MAJOR.MINOR.PATCH) at the manifest root, per service, and per capability. Consumers <bcp14>MUST</bcp14> ignore unknown fields for forward compatibility. All BEST identifiers use reverse-domain notation; the "io.best." prefix is reserved for this specification.</t>
      <t>This document establishes no new IANA registries (see IANA Considerations).</t>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>This section records the implementation status at the time of writing, per <xref target="RFC7942"/>; it is to be removed by the RFC Editor before publication.</t>
      <t>Three production deployments of BEST exist -- a fintech trading platform, a business platform and a video studio, implemented as separate codebases -- each exposing discovery, commands, events, and queries over the HTTP binding; the video studio also offers agent registration through the device authorization grant. A further implementation, best-peer (Rust, a BEST service in front of GPU machines), was written from the specification text alone, and every place the text was silent or ambiguous was recorded against the specification. A generic reference MCP server (@behavioralstate/best-mcp, npm) adapts any BEST endpoint for MCP-capable LLM clients and performs agent registration itself, keeping the credential out of the model's view, and a conformance validator (@behavioralstate/best-validate, npm) executes this document's conformance checklist against a live endpoint, including the sign-in guidance. All of these are by the specification's author or the author's organisation. The first implementation independent of the author is live: belmontcottage.co.uk, a holiday-rental website whose maintainer added a BEST surface to it. Checked on 2026-11-01, it serves a manifest at protocol version 0.9.17 with one public service offering commands, queries and workflows and no events capability (<xref target="capability-tiers"/>).</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <dl>
        <dt>TLS:</dt>
        <dd>
          <t>Endpoints <bcp14>MUST</bcp14> be served over HTTPS, but for the cleartext this paragraph allows. Cleartext HTTP <bcp14>MAY</bcp14> be used only where both ends are the same machine's loopback, judged on the address a service listens on and the host of the endpoint it advertises, or where its operator states that the network already encrypts the hop. Elsewhere a service <bcp14>MUST</bcp14> refuse to serve in cleartext, not warn, and its refusal <bcp14>MUST</bcp14> name the setting and the fix. A service's own outbound calls that carry a credential follow the same rule: it <bcp14>MUST NOT</bcp14> send one in cleartext but to loopback or over a hop its operator stated encrypted. (The refusal and the outbound rule are required from 0.10.0.) MCP transports <bcp14>MUST</bcp14> provide TLS-equivalent confidentiality. Clients and servers <bcp14>MUST</bcp14> validate certificates and host names and <bcp14>MUST NOT</bcp14> send credentials over a transport this paragraph does not allow.</t>
        </dd>
        <dt>Authentication surface:</dt>
        <dd>
          <t>"GET /.well-known/best" is always unauthenticated. Beyond it, only two things are reachable without a BEST credential: the capabilities of a service that declares "type": "none" (a public surface), and the "deviceAuthorizationUrl" and "tokenUrl" endpoints, which <bcp14>MUST</bcp14> be rate-limited per client and per "device_code". Since "client_id" is the caller's own word, a service <bcp14>SHOULD</bcp14> also bound the registrations pending per network origin, an IPv6 origin by its /64, without reading a forwarded address the caller writes; a refusal <bcp14>SHOULD</bcp14> be a 503 whose Retry-After says when a place frees. A public surface <bcp14>MUST NOT</bcp14> return data belonging to any account and <bcp14>MUST</bcp14> be rate-limited per client; a command accepted on a public surface <bcp14>MUST</bcp14> have no effect on any account until a person signed in to the platform has approved it. "GET /events" <bcp14>MUST</bcp14> require authentication and tenant-scoped authorisation unless a stream is explicitly designated public. Distinct read and write scopes are <bcp14>RECOMMENDED</bcp14>. Because "POST /commands" is a single endpoint through which every named operation is invoked, coarse scopes are insufficient on their own: servers <bcp14>SHOULD</bcp14> enforce per-command authorisation policies per credential, evaluated deny-by-default on every submission.</t>
        </dd>
        <dt>High-impact commands:</dt>
        <dd>
          <t>Commands that are destructive, irreversible, bypass a compliance control, commit a person (open an account, accept terms, start a subscription) or grant access to what is theirs (issue a credential, share a resource, invite a member) <bcp14>SHOULD</bcp14> require a control beyond the submitting credential -- human approval, a second principal, or out-of-band confirmation -- and that control <bcp14>MUST NOT</bcp14> be self-serviceable by the submitting credential. On a public surface there is no submitting credential at all, so the control is the whole of the authorisation: the person signing in to the platform and approving, in their own browser, is the out-of-band confirmation, and the agent cannot perform it. Servers <bcp14>SHOULD</bcp14> declare the "impact" annotation (<xref target="impact"/>) on such commands so consumers can discover the obligation; the annotation is advisory to consumers and never substitutes for the server-side control.</t>
        </dd>
        <dt>Schema-selection SSRF:</dt>
        <dd>
          <t>Servers select validation schemas from their own catalogue, keyed by a server-owned identifier. Servers <bcp14>MUST NOT</bcp14> fetch a caller-supplied "dataschema" URI: a caller-controlled fetch is a server-side request forgery vector. Servers <bcp14>SHOULD</bcp14> reject commands whose "dataschema" does not match a catalogue entry.</t>
        </dd>
        <dt>Replay protection:</dt>
        <dd>
          <t>The envelope "id" is an idempotency key. Servers <bcp14>MUST</bcp14> detect and reject or safely ignore duplicates (the same "id" from the same credential) within a retention window, scoped to the authenticated tenant and to the sending credential, and <bcp14>SHOULD</bcp14> state that window in their documentation; a safely ignored duplicate is answered as the original was, and a reused "id" with a different payload <bcp14>MUST</bcp14> return 409.</t>
        </dd>
        <dt>Untrusted "source":</dt>
        <dd>
          <t>The "source" attribute is caller-declared. Servers <bcp14>MUST NOT</bcp14> grant permissions or make security decisions from it, and <bcp14>SHOULD</bcp14> either overwrite it with the verified principal for audit purposes or record both values. Payload fields naming a principal likewise carry no authority.</t>
        </dd>
        <dt>Identifiers are not secrets:</dt>
        <dd>
          <t>A value that names something -- an envelope "id", a "correlationid", a tenant, account or registration identifier -- <bcp14>MUST NOT</bcp14> be accepted as proof of anything; what a credential reads under a correlation identifier follows from who owns it (<xref target="correlation"/>), not from naming it. Identifiers are logged, projected and indexed by design. Every secret a service relies on <bcp14>MUST</bcp14> be generated by the service, never minted by the caller: a caller may be a model, and a model cannot produce randomness.</t>
        </dd>
        <dt>Credentials stay out of transcripts:</dt>
        <dd>
          <t>A conversation with a model is not a secret store: it is kept, synced, summarised and shared. A consumer that has a store of its own <bcp14>MUST</bcp14> run the token request outside the model's view, keep the credential there, and redact it from everything it returns to the model. A consumer that has none -- a model making the requests itself -- <bcp14>SHOULD</bcp14> register with "credential_lifetime=session", and a service <bcp14>SHOULD</bcp14> then issue a short-lived credential (hours, with "expires_in"), so that what the transcript holds is soon worthless. The service <bcp14>MUST</bcp14> say all this itself, at each step, in the words of the sign-in guidance (<xref target="sign-in-guidance"/>): the consumer is often a model with nothing else to tell it.</t>
        </dd>
        <dt>The person approves in their own browser:</dt>
        <dd>
          <t>The agent gives the person the verification link and <bcp14>MUST NOT</bcp14> open it itself or in a browser it controls: approving is the person's act, and a page the agent drives could approve on their behalf or put their password within its reach.</t>
        </dd>
        <dt>Name resolution:</dt>
        <dd>
          <t>Resolving a name reaches a service nobody configured. The consumer's obligations in <xref target="name-resolution"/> -- resolving only a name the person gave or confirmed, saying what it resolved, refusing loopback, link-local and private targets outside development use, binding each credential to its name, and giving a newly resolved service's text no authority -- are what keep a service from redirecting an agent to another one or instructing its client. A name that resolves is a service that exists, not one that is safe; the person's confirmation of the name is the trust decision.</t>
        </dd>
        <dt>Tenant isolation:</dt>
        <dd>
          <t>Tenant context <bcp14>MUST</bcp14> derive from authenticated identity, never from caller-supplied paths, parameters, or payload fields. Caches, deduplication stores, and event streams <bcp14>MUST</bcp14> be isolated per tenant; knowledge of another tenant's identifier grants nothing.</t>
        </dd>
        <dt>Query-string credentials:</dt>
        <dd>
          <t>Long-lived credentials <bcp14>SHOULD NOT</bcp14> ride in URLs, where they leak through request logs, proxies, Referer headers and browser history; URL-only clients bootstrap through the exchange of <xref target="token-exchange"/>. Servers accepting any credential in a query parameter <bcp14>MUST NOT</bcp14> write its value to logs, <bcp14>SHOULD</bcp14> send "Cache-Control: no-store" on responses to such requests, and <bcp14>SHOULD</bcp14> issue query-eligible tokens with reduced scope; in particular, a query-borne token <bcp14>SHOULD NOT</bcp14> be able to submit high-impact commands.</t>
        </dd>
        <dt>Request records:</dt>
        <dd>
          <t>A service <bcp14>SHOULD</bcp14> keep a record of the requests it answers that names the verified principal when there is one, refused requests included. It <bcp14>MUST NOT</bcp14> record a credential, a header carrying one, or a query string, which may carry an exchanged token. (Required from 0.10.0.)</t>
        </dd>
        <dt>Input limits:</dt>
        <dd>
          <t>Servers <bcp14>MUST</bcp14> bound request body size, JSON nesting depth, collection sizes, string lengths, and attribute counts. A body over the limit <bcp14>SHOULD</bcp14> be refused with 413 carrying "details.limit_bytes", the largest body the endpoint accepts, and a service that forwards a command to another service <bcp14>MUST</bcp14> accept no body it cannot forward whole (required from 0.10.0). Servers <bcp14>SHOULD</bcp14> rate-limit command submission per authenticated client and per tenant; a server that does <bcp14>MUST</bcp14> answer a command past the limit with 429 and a Retry-After header, <bcp14>MUST NOT</bcp14> count a retry of a command it accepted or a command it refused, and <bcp14>SHOULD</bcp14> count a client once across the tenants it opens (required from 0.10.0).</t>
        </dd>
        <dt>Event streams:</dt>
        <dd>
          <t>A server <bcp14>MAY</bcp14> bound the event streams a client holds open. Past the bound it <bcp14>SHOULD</bcp14> end the client's oldest stream rather than refuse the new one: a client cannot close a stream whose connection it lost, and its reconnect must not be refused by a stream the server still believes open. A service that bounds streams <bcp14>SHOULD</bcp14> state the bound in its documentation.</t>
        </dd>
        <dt>Manifest content:</dt>
        <dd>
          <t>The manifest is publicly retrievable by design. Its content, extension content included, <bcp14>MUST</bcp14> be limited to information intended for unauthenticated disclosure: no internal addresses, credential material, or sensitive integration names. An extension is not a private channel.</t>
        </dd>
        <dt>Credential passthrough:</dt>
        <dd>
          <t>Intermediaries such as MCP servers or gateways forward caller credentials. Passthrough <bcp14>MUST</bcp14> be opt-in per connection and off by default, credentials <bcp14>MUST</bcp14> be forwarded only to the configured endpoint and never logged, explicit per-request credentials take precedence over ambient ones, and multi-user intermediaries <bcp14>SHOULD</bcp14> fail closed.</t>
        </dd>
      </dl>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
      <t>The protocol uses the well-known URI path prefix "/.well-known/best" (<xref target="RFC8615"/>). The "best" suffix is not registered in the "Well-Known URIs" registry: a provisional registration was requested in August 2026 and declined by the designated expert, under the registry's policy that single common words and short terms are registrable only by recognised standards development organisations. The suffix is therefore used without registration. Registration in that registry serves collision avoidance rather than being a precondition for use; readers should nonetheless be aware that unregistered use carries a collision risk, mitigated in practice by the same policy preventing other registrants from claiming the suffix. The author intends to pursue registration again should this specification be adopted within the IETF.</t>
      <t>This document establishes no new registries.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC3339" target="https://www.rfc-editor.org/info/rfc3339" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3339.xml">
          <front>
            <title>Date and Time on the Internet: Timestamps</title>
            <author fullname="G. Klyne" initials="G." surname="Klyne"/>
            <author fullname="C. Newman" initials="C." surname="Newman"/>
            <date month="July" year="2002"/>
            <abstract>
              <t>This document defines a date and time format for use in Internet protocols that is a profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3339"/>
          <seriesInfo name="DOI" value="10.17487/RFC3339"/>
        </reference>
        <reference anchor="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"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
        <reference anchor="RFC5890" target="https://www.rfc-editor.org/info/rfc5890" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5890.xml">
          <front>
            <title>Internationalized Domain Names for Applications (IDNA): Definitions and Document Framework</title>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <date month="August" year="2010"/>
            <abstract>
              <t>This document is one of a collection that, together, describe the protocol and usage context for a revision of Internationalized Domain Names for Applications (IDNA), superseding the earlier version. It describes the document collection and provides definitions and other material that are common to the set. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5890"/>
          <seriesInfo name="DOI" value="10.17487/RFC5890"/>
        </reference>
        <reference anchor="RFC6570" target="https://www.rfc-editor.org/info/rfc6570" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6570.xml">
          <front>
            <title>URI Template</title>
            <author fullname="J. Gregorio" initials="J." surname="Gregorio"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="M. Hadley" initials="M." surname="Hadley"/>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="D. Orchard" initials="D." surname="Orchard"/>
            <date month="March" year="2012"/>
            <abstract>
              <t>A URI Template is a compact sequence of characters for describing a range of Uniform Resource Identifiers through variable expansion. This specification defines the URI Template syntax and the process for expanding a URI Template into a URI reference, along with guidelines for the use of URI Templates on the Internet. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6570"/>
          <seriesInfo name="DOI" value="10.17487/RFC6570"/>
        </reference>
        <reference anchor="RFC6749" target="https://www.rfc-editor.org/info/rfc6749" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6749.xml">
          <front>
            <title>The OAuth 2.0 Authorization Framework</title>
            <author fullname="D. Hardt" initials="D." role="editor" surname="Hardt"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing the third-party application to obtain access on its own behalf. This specification replaces and obsoletes the OAuth 1.0 protocol described in RFC 5849. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6749"/>
          <seriesInfo name="DOI" value="10.17487/RFC6749"/>
        </reference>
        <reference anchor="RFC6750" target="https://www.rfc-editor.org/info/rfc6750" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6750.xml">
          <front>
            <title>The OAuth 2.0 Authorization Framework: Bearer Token Usage</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="D. Hardt" initials="D." surname="Hardt"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>This specification describes how to use bearer tokens in HTTP requests to access OAuth 2.0 protected resources. Any party in possession of a bearer token (a "bearer") can use it to get access to the associated resources (without demonstrating possession of a cryptographic key). To prevent misuse, bearer tokens need to be protected from disclosure in storage and in transport. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6750"/>
          <seriesInfo name="DOI" value="10.17487/RFC6750"/>
        </reference>
        <reference anchor="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"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="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"/>
            <abstract>
              <t>This memo defines a path prefix for "well-known locations", "/.well-known/", in selected Uniform Resource Identifier (URI) schemes.</t>
              <t>In doing so, it obsoletes RFC 5785 and updates the URI schemes defined in RFC 7230 to reserve that space. It also updates RFC 7595 to track URI schemes that support well-known URIs in their registry.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8615"/>
          <seriesInfo name="DOI" value="10.17487/RFC8615"/>
        </reference>
        <reference anchor="RFC8628" target="https://www.rfc-editor.org/info/rfc8628" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8628.xml">
          <front>
            <title>OAuth 2.0 Device Authorization Grant</title>
            <author fullname="W. Denniss" initials="W." surname="Denniss"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="August" year="2019"/>
            <abstract>
              <t>The OAuth 2.0 device authorization grant is designed for Internet- connected devices that either lack a browser to perform a user-agent- based authorization or are input constrained to the extent that requiring the user to input text in order to authenticate during the authorization flow is impractical. It enables OAuth clients on such devices (like smart TVs, media consoles, digital picture frames, and printers) to obtain user authorization to access protected resources by using a user agent on a separate device.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8628"/>
          <seriesInfo name="DOI" value="10.17487/RFC8628"/>
        </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"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="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"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document defines HTTP caches and the associated header fields that control cache behavior or indicate cacheable response messages.</t>
              <t>This document obsoletes RFC 7234.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="98"/>
          <seriesInfo name="RFC" value="9111"/>
          <seriesInfo name="DOI" value="10.17487/RFC9111"/>
        </reference>
        <reference anchor="CLOUDEVENTS" target="https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/spec.md">
          <front>
            <title>CloudEvents - Version 1.0.2</title>
            <author>
              <organization>Cloud Native Computing Foundation</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="CLOUDEVENTS-HTTP" target="https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/bindings/http-protocol-binding.md">
          <front>
            <title>HTTP Protocol Binding for CloudEvents - Version 1.0.2</title>
            <author>
              <organization>Cloud Native Computing Foundation</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="JSONSCHEMA" target="https://json-schema.org/draft/2020-12/json-schema-core">
          <front>
            <title>JSON Schema: A Media Type for Describing JSON Documents (draft 2020-12)</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <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"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC6585" target="https://www.rfc-editor.org/info/rfc6585" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6585.xml">
          <front>
            <title>Additional HTTP Status Codes</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <date month="April" year="2012"/>
            <abstract>
              <t>This document specifies additional HyperText Transfer Protocol (HTTP) status codes for a variety of common situations. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6585"/>
          <seriesInfo name="DOI" value="10.17487/RFC6585"/>
        </reference>
        <reference anchor="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"/>
            <abstract>
              <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
              <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="205"/>
          <seriesInfo name="RFC" value="7942"/>
          <seriesInfo name="DOI" value="10.17487/RFC7942"/>
        </reference>
        <reference anchor="MCP" target="https://modelcontextprotocol.io/">
          <front>
            <title>Model Context Protocol</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="BESTSPEC" target="https://behavioralstate.io/">
          <front>
            <title>BEST - Behavioral State Protocol (living specification)</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
      </references>
    </references>
    <?line 940?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The BEST envelope is a profile of CloudEvents, the protocol's discovery model follows the well-known URI convention of RFC 8615, and agent registration is the OAuth 2.0 Device Authorization Grant; the author thanks the communities behind all three. Feedback from the operators of the early production deployments, and the gaps an implementation written from the text alone exposed, shaped the correlation, multi-tenancy, registration and authorisation requirements in this document.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+y963ob2ZUl+J9PEQPN1yI9AETqkpkCy65iSkqnyqmLRaU9
PR6PKggEybAABCoCIMWSVM/SzzJPNnutvfe5BEClMrt7vvkx7i5bBAIRJ85l
X9deezQa7d25c2fvTvF8ua7aZbUePW3L83Vx3rTF+rIqvn92+rZYtc26mTbz
YVEvi/dtuZg118tRez7FZYtyPZbff7+p57NhcV2vL4tlU8ybaTkv1k0zr5cX
Q7lV22wuLnnL58/e/lCcbNaX8oi3ckFXnLx+Pi6eldNLuU9bLWdVW5TL7rpq
u+JfT1+9LK4vm64qBpt2PijqjjfRy6pZcV7PK7l/U5xX6+ml/G5WdOVVNZFb
FcVUflKMutNi9AMv/P2/zPB2o1m93PzHfzSjs6pbj/ztRocPxotZ8X/yl0Vx
uV6vusm9eyVHOsKrdOO6Wp+Pm/biXrmq7+kY7n1YzH/bw+SHv/5p6+rD+v+N
x12V83pWriv5wVuZb/uzbpbFYtOtZf5XTbvGSldt28hCYeLlr3q2rNddcT4v
r7vjAv9slpV9Kre6LtslN4Tc54c/P32JxSzXRdlW8uN18eaHJ8X9bw6/KZbl
ouqGWOzNcnpZLi+w0m2zKEaH97HbXrW6w+Y3k+KiWsi+7NbyV745/8t/Kd7P
8I9fXHS54+nmbFGvJ2Fm5GXLdVtO31dtnJiOF90r9s/bqirK6bTZLNcHY87Q
rJluFtUSi4N5yzcqPzrmB8mNcYdqJXNUr3lw5HTJQalwzU0nrym3kvEVOgEy
k1fyE5mASdGtqmnRLctVdymztlnh7rPicPx4fPS4GP2B/7p/OOZij4on5ao8
q+f1+qZY13KoJsWTpuUAZ3U3xV1vinIu63RcTJvFQlZSpv7fN1VbV7qu1ZW8
V2dbB2uF93jd1jIX9RXWCX/Xi9W8wgQ07d1OxtzUU7nhddO+P583110hC3RT
PPuwxnzMxnazH+pWNtOTZrkup9hU0+ZiWXd4bNFV7ZXcojiTwS1vRAbZ4/yt
Tnyw8rS26jZzmUeMTQc7LC5kZuS3q2YOESQ3xBvdcKh2axvDrDqvl5jeVsTX
ZYWZWcuH07ncTddQb1lMwzwOdTMO/vjsbXFPvx349Mh8Ydufnj6TV26rcuED
xiaR6Zhh4vmbie4HPL7myWrOi2f4QgWorHkrsuxGlqlZlPVyiHvbU8Koim7T
npdTrmb8FU6GbIhS/r5IH99W5/J+S7n8xZPXnIYKi9XJmryz2ZQ/ZPSDrtm0
02oAwbpplxOemcV0ZY+XaVpyDHyQjHKzWs2xW5bcRY1+eV3LXIY7yQDL+TVe
ZyXzKkP3gT31Tajz8extecFZfCIKoRphb7TNvJCdvpnP/NYy0vpcxlTsQ2Q8
Pjo6HNrQ7O+jA9NFZfHg8KFslSVVVXzqS5EwxZuqa+Ybzv1lKWt93ciaVXL+
+ZCnL0+5JWXJ5k3zfrPCO1zIG9qt63Amqg8ldv+QK//85OVJsSrb8qItV6qR
cDcM7OjwwaO4CD6U535yVL6eyv9ubAjnPB+1HJkVzo2sd51fLCOa66EQLb6u
1/NqUgygtCdc8O+ry/KqblrRxbgtTq3KvcFeeXbWVld29WBPxBeE7uQXhOXe
VO5y0WCxapnSPUrErpOhrG9W1SQd6l69auUtWlEX9w8PHx/e35MDVcoDB3uQ
ChdiEaz41/vqBudiskdh9ec3p/qPebOZPVPJg7+DrOJf5QUnA0ZLs6paO5d7
qs/0Tvo6b+rptGxnjWyz4iVeaQ8LJvpCvhrnH1ZyyuaTorVf/IvNwbhe7y1p
59SwK7jFHjx48Nj/+fi7b+yfj757fGj//ObRt+Gf3z58HP75yD/97ujbh/7P
b44ehX/e/87+iU0d/3mEfz756dXPT5/95dnLt6cTjtgXPJkrefG/iIzH3jga
H47vD3hhnJeCW06U2URnWA4C3ktk8GIlJ0Ek5Q+i1FTV6zPK9qJKFOOFbP3N
2VjExb0pbqDi7x5U0r2zeXN274rP3foSajZ7hdGPb9++zt8Dn4QtWnwvmwkD
gi36//U3PNOxdvdwk3hg7GN9d9iyp09+fPbiJH9r2rinIuwWcjpOihfVrC6L
t3Kc+OZPq27a1mcYNy98anZGV+zzqBb3D+8fjo7uHwx2vsw/umY56nhzmjD8
zT37TfrtSARdtVernEy2+jePvvPd+e3jh/fxT1Ee+Ru8aGbVnGpcrNNExuwa
0ALXTvVSn6dx3dyTiyGJTl8/e5LfnC7I6HZRVuyLBMT0YIHq83rKlb1lOs7C
XTrchA8eiROE/yrKsw6W2Xpv74uys9jHkA6C4VBG2TSiwB4W9phNO2rEilrC
OqOskptj37rSxvqaMSLyKLlPUHAwSWpZH5h+Yh58yT7rW2GwwRrYUqLDqw8r
+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
UroO2wZmo5WLMLwEaAvg0zWsyEbtZ4PWKn/ZfoIq9FiiKkvGohr0ikQ7bhil
v5It4cBtC3m47fjUklQyReNI2VYwuKn+Xi7JSR52QXJhyiHGOkm6zCVAZToZ
W3uuOHFyCFbaQxS4crCJdaMZ6pY6811WlaHppjXR8NwLuI8TVKtn09vLf/Um
FUGCa+2UVlR17xV3o12Hudd5qyHbEMqKqgVqdfji+DyZl8i+ynydzEpwl14i
iwS3c4c31c/dmE7p8xfDxusqruFgOxRtMVVV6GCJa6u1BwBKZzZyMn0ExJN7
vQ0yQlkfteiIuvTaBLYGmUzy5Qn41Pzd5cxNvP1MlcbmLTaiXYUTl2q3vyfH
tQwY8NCerws9qTUxvlCEfHIAPavtHmPtiIQMAbo2jBt5mEqSbqT7P+M3yLMf
XLDv5XwsE0dVp+crzf7EJmOty8yI0RLbiLfCoyFHtttubFkMk1+2F4hx+xqL
Yd+FYVIpw34VbkoEiIVLG4bek5QFnaqIvzwwkuTMkkrIa+p19O61D4WmmHnV
jbqKTOQEs297RiIubtuE0UPVx77s7j9+ECo5bqNL29uLM9XTjZBAOo4k2yU/
IGbxnZaf9tNZYHFr+qbm3aCNEBD947O3w9tiImr+AqjULLdfn0h0jHi62hps
prytYDpyezk3lhfGTGJ1rLEwLD0SFBfJjVoddjBBOCi/q4WAucJbkSBz58R1
r9tmqf173orOsj1qFV+uxDIbQJFMnSrYSttSTEIAAeL9uq1dOVDVyLwALLDD
wkm5Zo2uCmZUtzUJg10WMetPDfmRwnodG5i87/7g3wKwYVL8U+qi/OHfYPgM
AgW42rexi7tuUa80VFpS9WKMmoBXcHedG514+OYXd/jbVOaybLXSl5cNMiLS
eu5LWti06sEll2KwS3qVVcvIIIONFimce6nUdMoDz5M9LLV72MYqGi9rq55k
LJv17o4VT9jKCXah5ugqN4NS+8mSVwE3nOfKSuWn03cN+OV6aTGgoTfyMVo6
h59oASb5GnXmPeKZPRucSGdV4B2DEZvAq2w1mVfTp+hnoflPOi4HLX95oV0D
BHs6KSJ3nHpg2dIvQlgoJBxzojWscerw7WS6HW9n8eUkEMBz4LMAbUU0x3H/
KTrnF40e5VYZKtNR4PEq94GNViYQ83An2xFrA6X1sIRbvn+4IRmrzF/WZjJJ
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
LM5J7Blz81OzvNiS2MGVYcAP21TOEbDjSaOHG8CM34c4k6tBMUs6GiUfiJlR
zHJrNAvqVbo4stYxx2Rn5CH0dOhZ06xhqK2ylHT1wSgWFR0O7Tvyz1LSlAgw
Y/fHeIQoDPs0D0F4upXcuf3Z2MukrCgDLunoiYpR9J0acTmJVov0NEjVwD93
zZtZ5qotlVpbjLALBKXUmDDIvox4o8D5BmxKtTNdbcRZGPorjM6adulGSLJc
MMH0hhY+kXnejpnRwcywgmpj9bS7yQjzAuz8JeaEwwT72NUd/oVXfmpwhzl8
hzXGG2oJxIytaP+fxq5lt4kgCN75ilUucDARAYFQJA6ReChCCA5IHJHt3Tgr
HDvatQHDzzNV1T3Ts44lrnH2Nc+e6uqqgDjz6TVSlpU7MhOStyyVH1nlWggo
olNLZG3ySGrVfCcd+2A9ib1Mxe0RyNBMVeIpVsWP/Z/0FqyJSOEtB2GbBuPt
zMsTuQCkfyJyyAkpZryfQPMpUWL8WFMlpeBYjhj0BdqvPe8vXgTHeBO4OOcl
3xeHHSuAeBPsQv7OVW7TtMWn0Z5ozko/jAG5D3tDFZAZRrrZ6hF9RsCc9SSY
7pTC6xRRySmEouyRUWEukhMPyjrR4yuoozmWkwIGo5c1r+9jWQA9U01LUiza
JCZQNAhnZbBa/qMpXvbFmXQXEh1D/YP1YrVO+K1ciRMB6pxS9k2kbsOTkzZp
JxrT7PV8kynz3CrdS9aq3ozygxWGb2m3/cVbRleVkeiSUaU2ew0E3rMhUVzC
09m30mpM8/ayPMxr92likpMpgtCC610vw/aY87ZfmztEBBIuy5ND6KHuVeBL
c11b4CSMSGUbHMXzoJcvVm6VCSaVG0KhbYVHpZb/5GwO0/zyED9WPj9UJRbP
79c0+uTlqIICQ4E1qaYi5mvmLEcPnmtDxCiOjnFfdhLFAtIzSQQTLk4Nusex
meLNpmhheUYsV5VxKjyDLVkw4oVMFWvXrQxe4V4At8/wyvmY7sFwcVgrIACP
DLbto7korkEVSxJZuK1WagzEqVK83zHDnVmVAiVCTMPB63fOjbW9hxuc8lJl
eLEG+uZG3cB81KwKj/zqkpBV9jxnJOxsEtbVDKc7cOPZQabNfBOJD4HUCdic
S/wJ9B4yBe4Wthp4CKmyLQqC9nVbufhi2gQ0oVqxNI/pm1MmqFkf8D9lojz6
QdY5SXtX6Agq+tCPZpmscVDPHiAjPCGF8/Wri5e01iBGql+Ybvzto8ShiVJD
e/YN9/roT6IyGgE9eknyNDtKtKQC+kT8c8utdK+r/QpLBBhY0kDqlmtKNRmy
FXK1qY+6IfX93mp9cmYf9SBMapovuaVfsaILqmiNLXJLSkdHXt9QiAEsVsOQ
WRy4dK02hKTSsgJFyXaszoWR3OboR24rhlRkuOYwQKSB0gQoHYzI58ZPaPoU
J58hQmELNvOfWwNE4rq96Bzn7YqSEhcTqNcPFuGnLwY6ADgqXcqcOELSX8pt
zZGsD127H4v8+Ty8wdCP6Qyd1jGc5NVt9xDEwLIcHbytD+AliGmDMJAv7J+P
DVIHuPW8zw5/aj21pPP/uDoycr/fDwjQq0EkyR/7tmMqNT+x3WbBLBux1+++
vv8flnUhWKf/fpoO6YAQMFWvln7qIzP50d9L+a907Zszmpe4M8FEf3LUhLjp
lQoNoo1WtWOz+PFYSMYGZkWtvsnUJgC78aM4KNaYxhYqPkBa1U0+g8HTPD9/
1rwVp7hi9DQfhrnr/1hXYLD9KPZN+41YRaZDKphv6DrUwXctaWQ5R+XssYzw
dfNhfTjB8y452hXEiZBGq9miR3TkQkA2jaJ2Jrsp94fNMP4sVtMuD7PJaDoi
SFjoJv55P6nkO3/0D0JTHJUBbAEA

-->

</rfc>
