ContextRequest (a consumer asking for context), ContextProposal (an expert’s answer), and ConsumerRegistration (how a consumer signs up). The authoritative JSON Schemas live in spec/schemas/*.json in the repository, generated directly from the reference implementation and checked for drift.
ContextRequest
A consumer’s request for context. Four fields are required:kind, topic, question, consumer.
ULID, prefix
req_. Engine-assigned if omitted.Fixed to
"default" in the single-tenant community edition.The question kind; determines the answer’s capture schema and which consumers it routes back to. See Kinds.
The routing key. Normalized to lowercase for matching against expert topics.
The raw question.
Free-form, shown to the expert.
context.asked_because becomes the “why I’m asking” line in the ask.[{ expert_id, role }]. Bypasses topic routing entirely and asks these experts directly. role defaults to "primary".Per-request overrides for the config defaults.
The submitting consumer’s id.
Requests with the same key from the same consumer, within the dedup window, are deduplicated. See Concepts.
Free-form passthrough, for example
{ "trace_id": "..." }.ISO-8601 date-time.
Example
ContextProposal
An expert’s answer, structured and attributed. Required:request_id, kind, answer, provenance, consumer.
ULID, prefix
prop_. Engine-assigned.The request this answers.
Mirrors the request’s kind.
The expert’s verbatim reply. Never dropped, even if structuring fails.
The LLM-structured form of the answer, matching the kind’s schema.
null on extraction failure or when confidence is below 0.3.The structurer’s self-assessed extraction confidence, independent of whether
structured ended up null.Who answered and how.
ISO-8601 date-time.
ConsumerRegistration
How a consumer registers to receive answers. Required:id, handles_kinds, delivery.
The consumer’s id, for example
bi.assistant.The kinds this consumer deals with.
A discriminated union on
type: { "type": "webhook", "url": "..." } or { "type": "inprocess" } for an SDK-embedded consumer.ISO-8601 duration for the deduplication window (default one day).
Deliver proposals without human review. Off by default — see the warning in Consumers.