Conformance
A BEST-compliant endpoint must:
Expose
GET /.well-known/bestreturning a valid manifest —200, public,application/jsonInclude at least one service in the manifest
List all supported capabilities with valid schema URLs
Implement the HTTP API for every listed capability
Return valid JSON conforming to the referenced schemas
Use standard HTTP status codes and the BEST error format — except
deviceAuthorizationUrlandtokenUrl, which answer errors per RFC 6749 §5.2 (Agent Registration)Declare authentication in the manifest (or omit for public) — never an undocumented
401Reference every declared service from at least one capability — in the same manifest or, for a multi-tenant root, in its tenant manifests
Keep every manifest
descriptionwithin the length limit and free of mechanics (Manifest Discipline)Publish no second machine-readable or agent-directed description of the service (Origin Discovery)
Where
deviceAuthorizationUrlis declared, carry the sign-in guidance verbatim — the manifest text as thatauthenticationblock'snote, the device text as the device answer'snote, the token text at the start of the token answer'snote— in the words of the version the manifest declares, or of a later one; and, from 0.9.17, acceptconnectionin the device request and give it back as the token answer'sname, keying themcpentry by it (Agent Registration)Bind a correlation id to the sender that first used it, refusing another sender's command naming it with a
400that names the field (Command Results and Correlation)Meet these obligations: the tenants of a credential answered with no
tenant_idlisted at the root, and the end of a credential (Agent Registration); the correlation id on every later fact about what a command created (Command Results and Correlation); a workflows capabilityactiveonly with a recipe (Workflows); a query'sparametersschema enforced and an/eventsrange in RFC 3339 (Queries, Events); no constant pseudo-tenant hosting a surface (Multi-Tenancy rule 5);application/cloudevents+jsonaccepted onPOST /commands(HTTP Transport); and, in specs/security.md, cleartext refused and never carrying a credential, request records without credentials or query strings, and the413and429answers
Per-capability required endpoints (for active capabilities; partial is exempt but must document available routes in endpoints):
| Capability | Required endpoints |
|---|---|
io.best.agents.commands |
GET /commands, POST /commands |
io.best.agents.events |
GET /events |
io.best.agents.queries |
GET /queries, GET /queries/{schema}/{version}, GET /queries/{schema} |
io.best.agents.workflows |
GET /workflows, GET /workflows/{id} |
Multi-tenant root manifests additionally follow the Multi-Tenancy rules.
Compliance does not require: any specific language, framework, or architecture; any specific event transport; MCP support; or AI/LLM capabilities — a BEST service can be deterministic or human-operated.
Why the root manifest's rules matter for agents
An AI agent hitting a root manifest that has an empty capabilities array but no tenants.manifest cannot proceed — it has no signal for what to do next. A root manifest that follows the Multi-Tenancy rules gives any agent unambiguous guidance: check capabilities → if absent, check tenants.manifest → ask user for tenant ID → fetch tenant manifest.