Specification
UCP is an open, JSON-based format for packaging task context so any LLM — or human — can act without reading the underlying corpus. Version 0.1.0-draft, Apache-2.0.
Canonical source: the full normative spec lives in the repository. This page is an overview; for implementation details read SPEC.md.
Core idea
UCP is claim-based: every statement is attributable to sources, positioned in time, and scored for relevance. It complements transport protocols like MCP — MCP is the pipe, UCP is what flows through it.
- Package — one JSON document per task.
- Producer — software that assembles packages (e.g.
ucp-gen). - Consumer — agent, adapter, or app that reads packages.
- Claim — atomic statement with provenance (
must_know, etc.).
What the spec defines
| Section | Topic |
|---|---|
| §4 | Data model — entity, summary, claims, decisions, conflicts, coverage, sources |
| §5 | Conformance profiles (ucp-core, temporal, secure extensions) |
| §6 | Extensibility and versioning — unknown fields MUST be ignored |
| §7 | Canonical rendering algorithm for LLM prompts under a token budget |
| §8 | Security and privacy requirements |
Package sections
A claim without sources is schema-invalid. Under a token budget,
salience defines truncation order — noise drops first.
Coverage (§4.11)
When a producer fetches only part of a thread (for example 200 of 596
comments), the optional coverage block declares that honestly:
truncated, sources_considered vs
sources_included, and per-stream counts. Producers SHOULD drop
proposed comment decisions when a merged PR decision exists.
Schema & conformance
- JSON Schema — machine-readable validation
- Conformance fixtures — valid and invalid packages for test suites
- Example packages — realistic samples (view on this site)
Reference libraries
| Language | Package | Import |
|---|---|---|
| Python | pyucp | import ucp |
| TypeScript | @ucpcore/core | import { … } from "@ucpcore/core" |
Governance
Contributing, governance model, and versioning policy: