Skip to main content
RCP/1 is stable. Changes within the major version are additive and capability-discovered; the wire never breaks under you.
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 (rrf_fuse / weighted_fuse — deterministic §16.3 tie-break, richest-body dedup, origin tags) and the compact f32-base64 vector codec. 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.
  • 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.
2026 — distinctness & abstraction hardening
Additive hardening driven by validating RCP against a real third-party engine (a Whoosh BM25F adapter). No wire break.
  • Why not an MCP tool? — the spec and ecosystem docs 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.
  • 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.
  • SDK capability enums gained the missing filter/streaming/pagination/citations/log members (the JSON schema already had them).
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 (RL / corrective / integrity signals, client→server) and memory/build + memory/recall (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.
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 lognotifications/log, and the notifications/* namespace is now reserved (§4.5, §17.1). The log capability key is unchanged.
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.
The authoritative change log lives in Appendix E of the specification.