<?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.40 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-dinuzzo-best-protocol-00" category="info" submissionType="independent" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="BEST">BEST: The Behavioral State Protocol</title>
    <seriesInfo name="Internet-Draft" value="draft-dinuzzo-best-protocol-00"/>
    <author initials="R." surname="Di Nuzzo" fullname="Riccardo Di Nuzzo">
      <organization/>
      <address>
        <email>riccardo@dinuzzo.it</email>
      </address>
    </author>
    <date year="2026" month="August" day="24"/>
    <area/>
    <workgroup/>
    <keyword>CQRS</keyword>
    <keyword>CloudEvents</keyword>
    <keyword>discovery</keyword>
    <keyword>agent interoperability</keyword>
    <abstract>
      <?line 52?>

<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. Services 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. 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 56?>

<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 four 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.</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>
      </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>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"/>); discoverable by default; transport-agnostic; modular (implementers expose only the capabilities they support); and 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).</t>
      <t>This document specifies the protocol as released in version 0.9.2 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?>

<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>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>
        </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 (RFC 3339).</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>
    </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; every other endpoint <bcp14>MAY</bcp14> require the credentials declared in the manifest's "authentication" object. The path is canonical; consumers <bcp14>MUST NOT</bcp14> assume a ".json" file extension.</t>
      <t>The manifest root is a single "best" object:</t>
      <artwork><![CDATA[
{
  "best": {
    "version": "0.9.2",
    "authentication": { ... },
    "tenants": { ... },
    "services": { ... },
    "capabilities": [ ... ],
    "agents": [ ... ]
  }
}
]]></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 to service definitions. Each service declares "version" and "description" 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 } pairs appended to the service's "http.endpoint", an optional "status", 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 endpoint other than the manifest itself: "type" ("none", "bearer", "apiKey", or "oauth2") plus, per type, "scheme", "in", "scopes", "tokenUrl", and a "docs" URL. Consumers <bcp14>MUST</bcp14> read this object before calling any other endpoint. Hosts requiring credentials <bcp14>SHOULD</bcp14> set "docs" to an onboarding page.</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 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>
      </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, which <bcp14>MUST</bcp14> be documented in the "endpoints" array. "planned" means nothing is callable yet.</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="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.</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>
        </ol>
      </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", of which it is typically the kebab-case form), "version", "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), and an optional "description".</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="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>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>The envelope "id" is an idempotency key: servers <bcp14>MUST</bcp14> detect duplicate submissions (same "id" and authenticated source) within a retention window, and a reused "id" with a different payload <bcp14>MUST</bcp14> be rejected with 409. 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.</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. Events not caused by a command <bcp14>MAY</bcp14> omit the attribute.</t>
        <t>In a multi-step process, a follow-up command issued in reaction to an event <bcp14>SHOULD</bcp14> carry the same "correlationid", allowing one identifier to traverse a chain of commands and events across services. Correlation and idempotency are separate concerns: "id" remains unique per message, while "correlationid" groups messages into a process.</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.</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; may double as the event catalogue</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" (RFC 3339 time-range bounds, inclusive), "limit", and "after" (an opaque pagination cursor from a previous response's "nextCursor"). Responses are an object with an "events" array and, when further pages exist, a "nextCursor" string.</t>
        <t>"GET /events" <bcp14>MAY</bcp14> additionally serve catalogue entries mirroring the command catalogue: "schema", "version", optional "dataschema" (omitted for untyped events), and "description", which for untyped events is the primary documentation.</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. 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 and <bcp14>MUST NOT</bcp14> assume the stream is lossless.</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). Execution returns 400 for missing or invalid parameters and 404 for an unknown schema name.</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="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>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 manifest's "authentication" object: "bearer" maps to "Authorization: Bearer" credentials; "apiKey" to a header or query parameter named by the declaration. Every endpoint except "GET /.well-known/best" requires credentials when they are declared.</t>
      <t>All error responses use a consistent body:</t>
      <artwork><![CDATA[
{ "error": { "code": "SCHEMA_NOT_FOUND",
             "message": "Unknown command schema 'foo'",
             "details": {} } }
]]></artwork>
      <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)</td>
          </tr>
          <tr>
            <td align="left">401</td>
            <td align="left">Missing or invalid credentials (only when authentication is declared)</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</td>
          </tr>
          <tr>
            <td align="left">413</td>
            <td align="left">Request body exceeds server limits</td>
          </tr>
          <tr>
            <td align="left">422</td>
            <td align="left">Semantic error (capability not supported)</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", "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>
    <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"/>.</t>
        </li>
        <li>
          <t>Declare authentication in the manifest, or omit the declaration for public endpoints; an undocumented 401 is non-conformant.</t>
        </li>
      </ol>
      <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>
        </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>Two production deployments of BEST exist -- dotquant.io (fintech trading platform) and remundo.com (business platform) -- implemented as separate codebases by the specification's author, each exposing discovery, commands, events, and queries over the HTTP binding. A generic reference MCP server (@behavioralstate/best-mcp, npm) adapts any BEST endpoint for MCP-capable LLM clients, and a conformance validator (@behavioralstate/best-validate, npm) executes this document's conformance checklist against a live endpoint. No implementation independent of the specification author is known yet.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <dl>
        <dt>TLS:</dt>
        <dd>
          <t>Production endpoints <bcp14>MUST</bcp14> be served over HTTPS; MCP transports <bcp14>MUST</bcp14> provide TLS-equivalent confidentiality. Clients <bcp14>MUST</bcp14> validate certificates and <bcp14>MUST NOT</bcp14> send credentials over insecure transports.</t>
        </dd>
        <dt>Authentication surface:</dt>
        <dd>
          <t>"GET /.well-known/best" is the only endpoint defined as unauthenticated. "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>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> reject duplicates within a retention window, scoped to the authenticated tenant or sender; 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>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>Input limits:</dt>
        <dd>
          <t>Servers <bcp14>MUST</bcp14> bound request body size (returning 413), JSON nesting depth, collection sizes, string lengths, and attribute counts, and <bcp14>SHOULD</bcp14> rate-limit per authenticated client and per tenant.</t>
        </dd>
        <dt>Manifest content:</dt>
        <dd>
          <t>The manifest is publicly retrievable by design. Its content <bcp14>MUST</bcp14> be limited to information intended for unauthenticated disclosure: no internal addresses, credential material, or sensitive integration names.</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>IANA is requested to update the existing provisional registration of the "best" well-known URI suffix in the "Well-Known URIs" registry <xref target="RFC8615"/> to permanent, with this document as the specification reference:</t>
      <dl>
        <dt>URI suffix:</dt>
        <dd>
          <t>best</t>
        </dd>
        <dt>Change controller:</dt>
        <dd>
          <t>Riccardo Di Nuzzo (riccardo@dinuzzo.it)</t>
        </dd>
        <dt>Specification document:</dt>
        <dd>
          <t>this document</t>
        </dd>
        <dt>Status:</dt>
        <dd>
          <t>permanent</t>
        </dd>
      </dl>
      <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="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="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="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="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="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="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 449?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The BEST envelope is a profile of CloudEvents, and the protocol's discovery model follows the well-known URI convention of RFC 8615; the author thanks the communities behind both. Feedback from the operators of the early production deployments shaped the correlation, multi-tenancy, and authorisation requirements in this document.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA7V963Lj2JHmfz7FWVbEtLRLUJeq7nZRY3vUquptjevmUpUd
XodjAgQOSbhAgA2AUtMq+VnmWebJNr/MPBeAVHXbu9MOd0skcC558vLl7ShJ
ktGTJ09GT8x11dmmsl3yokkXnVnUjelW1nz38uaD2TR1V2d1OTFFZT416Tqv
76qkWWR4bJ12U3r/u21R5jOztGt6qO3Ssuw/+S//Yj7l+CHH+Mnctl3ixk1O
T6frnAa52c7XRTczq67btLOTkzzt0q5Js0+2mRa2W0zrZnnS8kMn5mjRWGvS
LKu3VXc8wXIrY9dpUeJH3lJuN5b+VXUyctsWddWal3nR0fY2tvET3d3dTWlx
ieWveJp0Xm+7kyKMcTICnb6ztGdrWj/ejD40JjHNtjKpaeyP26Kxa3q+Tcq0
Wm7TpTWbtG1nxt7aZmdef7z5cHLzw9uPr16cvL78E1Gro4dpoJTo+/77K/Or
s2+fmbbblVZHFrrNQWCz3radmVtzlzZVUS0T0IBPsCu60s7MGAc2Mx9wdHaV
3hZ1k5bmhshozTsl93iUzueNvdWnx6O8zqp0TW/L2eRFtf3b3+q9MxplNMqy
bnYzWvSiHgUadLuNxYeeVqNi08xM19Bqz09Pn5+ej9LGpjTheHRXN5+WTb3d
8G+f7I4+yGcjbPTq9+9v5Iey3uYvb0FE/j0v2qwG9fg3oiidKOjW1HSI6bwo
i243Srfdqm5kJNnO+yLL0iavzYvCvMGW6DsD9qSvpv0PmW9mptE3/k1pMC26
UcU8XtxaDE0H9PT5r77RH7/5+ttT/RGn5n785uxr/Hj16u3HFy//8PLNh5sZ
T+LOKNoerfUPtgENzdn0dHo+5gfDVgxzAPHjTIhi3vBSzFW93mw74gDzPbE/
yQmNIHOkzdJGIrQsutV2Ps3q9UmGASxPe9JubHYyL+v5yS3Pu/clBNKYf795
++bm6oeXry/7O8Dn5iZbEdlm5tK8JrlJzQfiAlYcL2ybNcUcq+MHX9TZliXC
HDGHmfPT89Pk7Px4fHDJf23rKml5cJZEfudE34m/TTISxRF4sX9C3z5/do4f
X1+96y/7dZ3bkmhHrPNTF8nDoVWs8WwmjzohmBb1CT0Mqbl59/KqPziryuRx
sTNHZXELmoC8xaLI+NAeocHcj9JiEJ44IWWNf5l03kIrdqPRF+XcHGFJxya3
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
uxHT0f8F/VTHSnh1AAA=

-->

</rfc>
