> ## Documentation Index
> Fetch the complete documentation index at: https://retrievalcontextprotocol.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Changelog

> What changed in each revision of the RCP specification.

RCP/1 is **stable**. Changes within the major version are additive and
capability-discovered; the wire never breaks under you.

<Update label="RCP/1 1.0 · adoption & DX" description="2026 — executable conformance, SDK parity, runnable demos">
  Closes the distance between a well-written spec and a standard people ship on.
  No wire change; everything additive.

  * **Executable, level-aware certification.** `conformance/check.py` tags every
    check L0/L1/L2, reports the highest level a server actually reaches
    (`CERTIFIED LEVEL: …`), skips checks for unadvertised capabilities, and fails
    a server that **overclaims** its `_meta.conformance` even with zero failed
    checks. `--json` emits a CI report; non-zero exit gates a release.
  * **Reference algorithms in all four SDKs, byte-for-byte identical.**
    [Reciprocal Rank Fusion](/features/federation#the-fusion-primitive-rrf-fuse)
    (`rrf_fuse` / `weighted_fuse` — deterministic §16.3 tie-break, richest-body
    dedup, origin tags) and the compact
    [`f32-base64` vector codec](/methods/embed#compact-wire-encoding-f32-base64).
    The C++ live `Federation` now delegates to the same `rcp::fusion::rrf_fuse`.
  * **Streaming (SSE), end to end.** The Python `Server` gained
    `stream(method, generator)` and a `Progress` frame type; `serve_http` honours
    `Accept: text/event-stream`, emitting `notifications/progress` frames then
    one final response frame — the same handler answers a plain unary POST
    buffered. See [Streaming](/features/streaming-progress#writing-a-streaming-handler).
  * **Runnable demos.** `examples/example_streaming.py` (HTTP+SSE progress) and
    `examples/example_federation.py` (one command: two engines fanned out and
    RRF-fused). The reference server is now a real dense + sparse → RRF → rerank
    hybrid pipeline that **certifies L2**.
</Update>

<Update label="RCP/1 1.0 · robustness" description="2026 — distinctness & abstraction hardening">
  Additive hardening driven by validating RCP against a real third-party engine
  (a [Whoosh](https://github.com/1ay1/rcp/blob/main/examples/whoosh_adapter.py)
  BM25F adapter). No wire break.

  * **Why not an MCP tool?** — the spec and
    [ecosystem docs](/ecosystem/mcp-acp) now argue RCP's distinctness on six axes
    (negotiated pipeline, funnel invariant, structured comparable hits, rank
    fusion, streaming, per-hit trust) plus a litmus test.
  * **`retrieve.scoreScale`** — an optional capability
    (`cosine`·`dot`·`bm25`·`probability`·`unbounded`) that *labels* the scale of
    `Hit.score`. Normative rule: cross-server ranking/fusion **MUST** key on rank
    or `confidence`, never raw `score`. See
    [Retrieve](/methods/retrieve#scores-are-server-scaled).
  * **Canonical filter builder + validator** in all four SDKs — a typed builder
    (`eq`/`gte`/`in_`/… + `all`/`any`/`not_`) and a server-side `validate()` that
    turns any malformed tree into a clean `-32602` with `data.field`. See
    [Metadata filtering](/features/metadata-filtering#the-canonical-builder-validator).
  * SDK **capability enums** gained the missing `filter`/`streaming`/`pagination`/`citations`/`log`
    members (the JSON schema already had them).
</Update>

<Update label="RCP/1 1.0 · SOTA" description="2026 — agentic & frontier RAG coverage">
  Additive, fully backward-compatible coverage of 2024–2026 RAG frontiers — all
  gated behind **new optional capabilities** (absent ⇒ pre-existing behaviour,
  no wire break).

  * **New optional `Hit` fields:** `confidence` (normalised `[0,1]` for
    corrective/adaptive/Self-RAG thresholds), `unit`/`level` (retrieval
    granularity & abstraction level), `provenance` (graph/tree lineage), and
    `trust.injectionSuspected`/`sanitized` safety signals (§7.7.2, §15.2).
  * **New optional `retrieve` params:** `unit`, `level`, `tokenBudget`
    (long-context / chunk-explosion packing), `sessionId` (agentic
    trajectories), plus `retrieve.units`/`levels`/`tokenBudget`/`confidence`
    metadata (§6.1, §7.7.2–§7.7.3).
  * **New optional capabilities:** `session`, `feedback`, `memory`.
  * **New optional methods:** [`feedback`](/methods/feedback) (RL / corrective /
    integrity signals, client→server) and [`memory/build` + `memory/recall`](/methods/memory)
    (MemoRAG / HippoRAG global memory → clues).
  * Appendix B maps Self-RAG, CRAG, Adaptive-RAG, FLARE, DeepRAG/Search-R1,
    DRIFT, graph granularities, HippoRAG, MemoRAG, RAPTOR, LongRAG,
    SafeRAG/PoisonedRAG defenses, and RAGAS/ARES eval onto RCP surfaces. See
    [Agentic & self-improving RAG](/concepts/agentic-rag).
</Update>

<Update label="RCP/1 1.0 · ed." description="2026 — editorial revision">
  Clarifications and one notification rename. **No changes to any
  request/response shape.**

  * Normative timestamp/date encoding, score-scale & comparability rules, and
    `trust.score ∈ [0,1]` (§4.6).
  * `filter` field-type × operator value-typing table and empty-combinator
    handling (§8).
  * Client `capabilities` semantics and tightened version-negotiation wording
    (§7.1).
  * `embed` accepts Content blocks via `inputs`, with `texts` retained as a
    legacy synonym (§7.3).
  * Explicit `strict` default and the `candidateK ≥ rerank.topN ≥ k` funnel
    invariant (§7.7).
  * `progressToken` typing/uniqueness (§9) and JSON-RPC batch edge cases (§11).
  * **Rename:** the log notification method `log` → `notifications/log`, and the
    `notifications/*` namespace is now reserved (§4.5, §17.1). The `log`
    *capability* key is unchanged.
</Update>

<Update label="RCP/1 1.0" description="2026 — initial stable release">
  The first stable release of the Retrieval Context Protocol.

  * Core methods: `initialize`, `info`, `embed`, `embed/sparse`, `embed/multi`,
    `rerank`, `retrieve`, `query/transform`, `graph`, `index/add`,
    `index/delete`, `catalog/list`, `shutdown`, `notifications/cancel`, `ping`.
  * Capability negotiation; stdio + HTTP(+SSE) transports.
  * A Content/modality model for multimodal & visual-document retrieval.
  * Metadata filtering, streaming/progress, `notifications/log` observability,
    pagination, batching.
  * Structured errors with retryability; determinism (`seed` / `indexVersion`).
  * A full threat model and federation (registry + RRF/weighted fusion).
  * Native **C++**, **Python**, **Node.js**, and **Rust** SDKs.
</Update>

<Info>
  The authoritative change log lives in
  [Appendix E of the specification](https://github.com/1ay1/rcp/blob/main/spec/rcp-1.0.md#appendix-e--change-log).
</Info>
