<?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-02" 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-02"/>
    <author initials="R." surname="Di Nuzzo" fullname="Riccardo Di Nuzzo">
      <organization/>
      <address>
        <email>riccardo@dinuzzo.it</email>
      </address>
    </author>
    <date year="2026" month="October" day="30"/>
    <area/>
    <workgroup/>
    <keyword>CQRS</keyword>
    <keyword>CloudEvents</keyword>
    <keyword>discovery</keyword>
    <keyword>agent interoperability</keyword>
    <abstract>
      <?line 102?>

<t>The Behavioral State Protocol (BEST) defines a discovery-first, behaviour-oriented interaction surface for domain services: the commands a service accepts, the events it publishes, and optionally the queries it answers and the multi-step recipes (workflows) it 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 106?>

<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:</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>A queryable event log, "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>An optional 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.19 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 domain service that accepts commands and publishes events.</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 domain fact published by a service as the result of processing.</t>
          </dd>
          <dt>Query:</dt>
          <dd>
            <t>A synchronous read of current state (optional capability).</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>
    <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>The manifest root is a single "best" object:</t>
      <artwork><![CDATA[
{
  "best": {
    "version": "0.9.19",
    "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.</t>
          </li>
          <li>
            <t>Only if step 2 found no manifest (no HTTPS service on N, or a 404) and the consumer can query DNS, looks up the TXT record <xref target="RFC1035"/> at "_best.N". Exactly one record of the form below names the manifest; zero, several, or a malformed one means N does not resolve. "manifest" <bcp14>MUST</bcp14> be an absolute "https" URL. The record exists for names whose origin serves no HTTP at all; it is never consulted when the well-known path answers, so every consumer -- including one that can only make HTTPS requests -- reaches the same manifest whenever step 2 succeeds.</t>
          </li>
        </ol>
        <artwork><![CDATA[
_best.example.com.  IN TXT  (
  "v=BEST1; manifest=https://api.example.com/.well-known/best" )
]]></artwork>
        <t>A service <bcp14>MUST</bcp14> be resolvable from every name it is publicly known by, through step 2 wherever that name serves HTTPS. A service that publishes both <bcp14>MUST</bcp14> make them agree. 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 event log's URL, 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 published events, tied to the command by the "correlationid" envelope attribute.</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  /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 log 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 log, 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 events: "GET /events" is the log, 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 in its log: 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 optional and 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>
      <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 capability is a direct service; one with "tenants.manifest" and no commands capability 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 commands capability with "status": "planned", or empty "capabilities" with 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" if declared -- which are the definitive answer to "what can I do here". Then fetch the schema for the chosen operation, execute it, and observe results by correlation identifier.</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 in progress: belmontcottage.co.uk, a holiday-rental website whose maintainer is adding a BEST surface to it; it was not yet serving a manifest at the time of writing.</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>The protocol also uses the underscored DNS node name "_best" for the TXT record of <xref target="name-resolution"/>. It is not registered in the "Underscored and Globally Scoped DNS Node Names" registry.</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="RFC1035" target="https://www.rfc-editor.org/info/rfc1035" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.1035.xml">
          <front>
            <title>Domain names - implementation and specification</title>
            <author fullname="P. Mockapetris" initials="P." surname="Mockapetris"/>
            <date month="November" year="1987"/>
            <abstract>
              <t>This RFC is the revised specification of the protocol and format used in the implementation of the Domain Name System. It obsoletes RFC-883. This memo documents the details of the domain name client - server communication.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="13"/>
          <seriesInfo name="RFC" value="1035"/>
          <seriesInfo name="DOI" value="10.17487/RFC1035"/>
        </reference>
        <reference anchor="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="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 946?>

<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+y963ob6ZEm+J9XkYvaZ0R6AUjUoaoEtt3NklQutUuHFlX2
zHq96iSQJNMCkOhMgBStUl/LXste2cb7RsR3SAAqVc3MPvtjPdO2CCS+/A7x
xfGNiNFodPDVV18dfFU8X66rdlmtR0/b8mJdXDRtsb6qiu+enb0tVm2zbqbN
fFjUy+J9Wy5mzc1y1F5M8diiXI/l999t6vlsWNzU66ti2RTzZlrOi3XTzOvl
5VCGapvN5RWHfP7s7ffF6WZ9Ja94Kw90xenr5xMZoiimm3ZejLqzYvR9cVHP
q9//ywyzGc3q5eYf/2hG51W3HvlsRvfujxez4v/gL4viar1edZO7d0uOPMKr
u3FdrS/GTXt5t1zVd9tqOavaux8W8o6m+IWR5anfNiUM/6vntK4+rL9gUusP
6/83JnVdzutZua7kB2/lwOzPulkWi023Ltpq1bRrnHLVtk3bFeVyhr/q2bJe
d8XFvLzpQBKvWiWD+e2kuKwWQjzdWv7KKei//Jfi/Qz/+MWTlhHPNueLej0J
S5BZleu2nL6v2riCjg/dLQ4v2qoqyum02SzXR2MuZdZMN4tqiV3EAou6I0nq
KfCjE36QDIwRqpWsq16TuuUKCDVXeOYWy5ShZH7F9KpcXlZd0VzLT0b3jidF
t6qmRbcsV91Vsy42K4w+K+6NH4+/LkZ/4D+OH495KKPiad1N8VPZqldtfSkv
CZ/YpcK0FuWyvpCdKUqdd7Oc3xaynPYWZ2Dne3NVygNFV8v65NU3+uiqajs5
wEO+9nior79/dFK8LBdV8abqmvkGRzyUnz59eWZjLfGlvezmqplX/KRbldPK
plUWb//r2+JCzvVctoukoDsqA8rs73Q2UnM+ry9JRJ1N4p5N4pH97zdHuvcD
uQvVssOTA/nZ36up7B7Pp7SxZs2irJeji7oFNW5kVhwRA3Sb9kIm1+nkZvXF
RSWHu+Yhdl3gQz6S7Mqoq9rreirvxYWQZ+sppzkozoV63/uOydgvfPdxNPVK
OFtlwyTPbObrevS2WpbL6S3n1hWPuCtf9/b+a/vfb4+cBk6z90+Ee76vlkX1
QUmLLPmqKmUjRlPZGyFPmcCsmM5r+ZFv8+Gb758UX3/z8PGw0H89unekL/5W
ZldeYi/a6rLGz3mjfUfw9Ldf3/926FTkNCfvWsoR4Fmc/VA/bKsZpio8XncJ
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

-->

</rfc>
