Skip to main content

Extension registry

Extensions are named, optional capability sets a writer declares in the top-level extensions array (see SPEC, "Extensions"). Core v1 parsing is never affected: a reader that doesn't know an extension ignores it — the field is never a validation input and never a reason to reject.

{
"curt": "curtis-conversation",
"version": 1,
"extensions": ["images-inline"],
"conversation": { }
}

Three properties make the mechanism safe:

  1. Declaration costs nothing. The array is itself an unknown field to old readers — never a validation input, whatever its shape.
  2. Extensions are behaviorally inert at the core. Behavior lives entirely in the fields an extension reads and writes inside the conversation and its messages; an extension must not change how the core validates.
  3. The registry is additive. New entries never change how existing v1 files parse, and entries cannot conflict with core field names.

Status rule​

Entries start draft and move to stable when two independent implementations round-trip them. Same-author emissions do not count — the registry states this per entry where it applies. deprecated retires an entry.

Registry​

NameStatusEmitted byPurpose
images-inlinestablecurtis plugin, porter, curtis-web, curtis-cloud, curtis-ai-techImage payloads ride inside content
usage-metadatastableporter, curtis-web, curtis-ai-techPer-message cost/token/provider fields
tool-linkagedraftporter, curtis-ai-tech, curt-convert (same author — does not count toward stability)Tool-call requests and their results
agent-contextdraftcurtis plugin, porter, curtis-cloud, curtis-ai-techAgent/swarm provenance on conversations and messages
consensus-receiptdrafttractumSigned k-of-n consensus decision bound to the transcript evidence

The browsable per-extension pages above are hand-authored views; the registry's full normative text is rendered at Extension registry — full text.

Full per-consumer emit/accept data lives in capabilities.json.

Adding an entry​

Open a PR against EXTENSIONS.md — see governance for the required sections and the stability bar.