This document is the canonical human-facing summary of the currently implemented API surface. The runtime source of truth remains the service discovery and manifest endpoints exposed by the application:
GET /v1/manifestGET /v1/discovery/toolsGET /v1/discovery/workflows
The sections below mirror that runtime shape and group endpoints by behavior rather than implementation order.
For practical agent integration guidance, start with Agent Onboarding. For capsule structure and request/response schemas, see Payload Reference. For the higher-level system thesis, recovery model, and authority boundaries, see Reviewer Guide.
This document covers the machine-facing HTTP contract. The optional /ui operator surface is intentionally outside that API contract: it is a local-only, read-only, server-rendered observability layer over existing read-side services, not a second programmable interface.
GET /health: liveness and git-state checkGET /capabilities: high-level feature flagsGET /v1/capabilities: versioned, machine-readable feature map with per-capability metadataGET /v1/manifest: machine-readable endpoint contractGET /v1/contracts: compatibility and contract metadataGET /v1/governance/policy: governance and authority policy metadataGET /v1/discovery: machine guidance and entrypointsGET /v1/discovery/tools: tool catalog with schemas and scopesGET /v1/discovery/workflows: suggested autonomous workflowsGET /.well-known/cognirelay.json: well-known discovery entrypointGET /.well-known/mcp.json: bounded MCP supplemental descriptor advertising preferred/latest2025-11-25and initialize compatibility for2025-06-18plus2025-11-25GET /v1/mcp: deferred in slice 2; returns405withAllow: POSTPOST /v1/mcp: bounded MCP Streamable HTTP posture for the base methodsinitialize,notifications/initialized,ping,tools/list, andtools/call, plus post-bootstrap help/reference request methods including onboarding and validation-limit lookup.initializeaccepts protocol versions2025-06-18and2025-11-25;2025-11-25remains preferred/latest.clientInfofollows the MCPImplementationmetadata shape for the supported protocol versions, including standard optional fields such astitle,description,websiteUrl, andicons. Standard request-levelparams._metais accepted and ignored as MCP metadata on initialize, tools/list, tools/call, and runtime help/reference request methods.
GET /v1/help: top-level machine-facing help indexGET /v1/help/tools/{name}: bounded usage guidance for one supported toolGET /v1/help/topics/{id}: bounded guidance for one supported topicGET /v1/help/hooks: canonical hook guidanceGET /v1/help/errors/{code}: MCP error remediation guidanceGET /v1/help/onboarding: bounded onboarding section indexGET /v1/help/onboarding/bootstrap: compact startup bootstrap payloadGET /v1/help/onboarding/sections/{id}: one bounded onboarding sectionGET /v1/help/limits: validation-limit field-path indexGET /v1/help/limits/{field_path}: one validation-limit item for an exact field path
Returns a deterministic, machine-readable feature map for the current build. No request body, no query parameters, no auth required. The response is byte-identical on every call to the same build.
{
"version": "1",
"features": {
"continuity.read.startup_view": {
"summary": "Startup-oriented read view with mechanical orientation extraction"
},
"continuity.read.trust_signals": {
"summary": "Mechanical trust assessment: recency, completeness, integrity, scope match"
}
}
}Semantics: Presence of a key in features means the capability is available on this instance. Absence means it is unavailable. Keys are opaque stable identifiers — agents should treat them as exact-match strings, not parse the dots programmatically.
v1 feature registry includes:
| Feature key | Summary |
|---|---|
continuity.read.startup_view |
Startup-oriented read view with mechanical orientation extraction |
continuity.read.trust_signals |
Mechanical trust assessment: recency, completeness, integrity, scope match |
continuity.upsert.session_end_snapshot |
Additive resume-here capture on upsert for session-end handoff |
continuity.read.salience_ranking |
Deterministic multi-signal salience sorting on list and read paths |
continuity.read.thread_identity |
Thread descriptors with scope anchors and lifecycle transitions |
continuity.stable_preferences |
Stable user and peer preferences persisted on continuity capsules |
continuity.upsert.preserve_mode |
Preserve-by-default field merge on upsert with merge_mode='preserve' |
continuity.patch |
Partial list-field patch operations on existing continuity capsules |
continuity.lifecycle |
Standalone lifecycle transitions for thread and task capsules |
context.retrieve.continuity_state |
Multi-capsule continuity-oriented context bundles with fallback and degradation |
context.retrieve.graph_context |
Bounded derived graph context included by default on context retrieval responses |
continuity.read.startup_graph_summary |
Bounded derived graph summary included on startup continuity reads after base read success |
schedule.one_shot_reminders |
SQLite-backed one-shot reminders and task nudges surfaced by pull/list and orientation responses |
coordination.handoffs |
Local-first inter-agent handoff artifacts with consume tracking |
coordination.shared_state |
Owner-authored shared coordination artifacts with version control |
messaging.direct |
Tracked direct messages with ack, reject, defer, and delivery state |
peers.registry |
Peer registration, trust-level transitions, and manifest exchange |
discovery.tools |
Machine-readable tool catalog for the bounded MCP compatibility surface |
Versioning: version is the schema version, not the app version. It increments only when the response shape changes incompatibly. Adding or removing feature keys does not change the version. Clients must tolerate unknown keys. Summaries are human-readable hints, not machine-parsed contracts.
Relationship to legacy GET /capabilities: The two endpoints are independent. The legacy endpoint returns a flat string list and is unchanged.
For the bounded MCP bootstrap flow, initialize protocol compatibility, the post-bootstrap help/reference request-method additions, the tool metadata model, and the POST /v1/mcp posture, see docs/mcp.md.
POST /v1/write: write text content to a repo-relative pathGET /v1/read: read file content by pathPOST /v1/append: append one JSON object as a JSONL recordPOST /v1/index/rebuild: full index rebuildPOST /v1/index/rebuild-incremental: incremental index rebuildGET /v1/index/status: inspect derived index statePOST /v1/search: query-driven search across indexed contentPOST /v1/recent: latest indexed items without a search queryPOST /v1/schedule/items: create a one-shot reminder or task nudgeGET /v1/schedule/items/{schedule_id}: read one scheduled itemGET /v1/schedule/items: list scheduled items with status, due, link, subject, retired, limit, and offset filtersPATCH /v1/schedule/items/{schedule_id}: update mutable fields on a pending scheduled item withexpected_versionPOST /v1/schedule/items/{schedule_id}/acknowledge: mark a pending itemacknowledgedordonePOST /v1/schedule/items/{schedule_id}/retire: retire a scheduled item without deleting itPOST /v1/context/retrieve: compact continuity-oriented context bundlePOST /v1/continuity/upsert: create or replace one continuity capsulePOST /v1/continuity/read: load one active continuity capsule by exact selectorPOST /v1/continuity/compare: compare one active continuity capsule to a candidate capsule without mutating storagePOST /v1/continuity/revalidate: confirm, correct, degrade, or conflict-mark one active continuity capsulePOST /v1/continuity/retention/plan: persist the next deterministic stale-archive retention plan windowPOST /v1/continuity/list: list active continuity capsule summariesPOST /v1/continuity/archive: archive one active continuity capsule and remove the active filePOST /v1/coordination/handoff/create: create one local-first inter-agent handoff artifact from an active continuity capsuleGET /v1/coordination/handoff/{handoff_id}: read one stored handoff artifact by idGET /v1/coordination/handoffs/query: query visible handoff artifacts for one sender and/or recipient identityPOST /v1/coordination/handoff/{handoff_id}/consume: record the recipient's advisory, deferred, or rejected consume outcomePOST /v1/coordination/shared/create: create one owner-authored shared coordination artifactGET /v1/coordination/shared/{shared_id}: read one stored shared coordination artifact by idGET /v1/coordination/shared/query: query visible shared coordination artifacts for one owner and/or participant identityPOST /v1/coordination/shared/{shared_id}/update: replace one shared coordination artifact under owner-only version checkingPOST /v1/coordination/reconciliation/open: open one bounded reconciliation artifact from visible handoff/shared claimsGET /v1/coordination/reconciliation/{reconciliation_id}: read one stored reconciliation artifact by idGET /v1/coordination/reconciliations/query: query visible reconciliation artifacts for one owner and/or claimant identityPOST /v1/coordination/reconciliation/{reconciliation_id}/resolve: resolve one open reconciliation record under first-write-wins version checkingPOST /v1/context/snapshot: persist deterministic context snapshotGET /v1/context/snapshot/{snapshot_id}: load a persisted snapshotPOST /v1/compact/run: compaction planning and summary/report generation
Notable behavior:
POST /v1/searchmatches terms, not strict phrases, for multi-word queriesPOST /v1/recentis queryless and focused on recencyPOST /v1/context/retrieveis continuity-shaped output rather than a raw ranked search dumpPOST /v1/context/retrievenow supports optional continuity subject selection and returns additivecontinuity_statemetadata when availablePOST /v1/context/retrievenow also accepts boundedcontinuity_selectorspluscontinuity_max_capsulesfor deterministic multi-capsule continuity loadingPOST /v1/context/retrievenow also acceptscontinuity_verification_policyto allow degraded capsules, prefer healthy capsules first, or require healthy capsules onlyPOST /v1/context/retrievenow also acceptscontinuity_resilience_policyso callers can allow fallback snapshots, use the explicit active-firstprefer_activemode, or require active continuity only- when derived search indexes are stale,
POST /v1/context/retrievekeeps indexed retrieval and addscontinuity_index_stale; when they are missing, it falls back to a bounded raw file scan and addscontinuity_index_missing POST /v1/context/retrieveincludesbundle.graph_contextby default. The graph section is derived from existing task and continuity artifacts, uses fixed response caps, and keeps graph warnings local tobundle.graph_context.warnings. Whencontinuity_mode="off", graph derivation is suppressed and the graph section containsgraph_suppressed_by_continuity_mode.- one-shot schedule data is stored only in SQLite at
memory/schedule/schedule.db; create/update/acknowledge/retire do not mutate task files, continuity capsules, graph data, callbacks, commands, or messages POST /v1/context/retrieveincludesbundle.schedule_contextwhen scoped by primary subject or continuity selectors.POST /v1/continuity/readwithview="startup"includes top-levelschedule_context. Both are read-only, scoped to matching task/thread/subject links, and include due plus upcoming buckets.POST /v1/continuity/upsertis the V1 write path for continuity capsules undermemory/continuity/- successful
POST /v1/continuity/upsertandPOST /v1/continuity/revalidatenow refresh a recovery-only fallback snapshot undermemory/continuity/fallback/ POST /v1/continuity/upsertandPOST /v1/continuity/revalidatesurface fallback snapshot failures through additiverecovery_warningsinstead of failing the already durable active writePOST /v1/continuity/readnow returnssource_stateplusrecovery_warnings; exact-active behavior remains the default and structured fallback or missing-state degradation is enabled withallow_fallback=truePOST /v1/continuity/readnow accepts an optionalview="startup"parameter; when set, the response includes astartup_summaryblock alongside the unchanged full capsule — a mechanical extraction of startup-relevant orientation fields with no additional I/OPOST /v1/continuity/readwithview="startup"also includes top-levelgraph_summaryafter the base read succeeds. Non-startup reads remain graph-free, and base validation/error behavior is unchanged.POST /v1/continuity/refresh/plannow returns deterministic refresh candidates and persists the latest plan undermemory/continuity/refresh_state.jsonPOST /v1/continuity/retention/plannow returns a bounded next-action stale-archive window, persists it undermemory/continuity/retention_state.json, and exposestotal_candidatesplushas_moreso operators can drain backlog through repeated plan/apply cyclesPOST /v1/continuity/comparereturns deterministic changed fields, strongest signal, and a recommended verification outcome without mutating the active capsulePOST /v1/continuity/revalidatewrites verification status and capsule health through one audited git-backed continuity updatePOST /v1/continuity/listnow supportsinclude_fallback,include_archived, andinclude_cold, returns additiveartifact_stateplusretention_class, and classifiesarchive_staleusingCOGNIRELAY_CONTINUITY_RETENTION_ARCHIVE_DAYSPOST /v1/continuity/deletedeletes exact-selector active, fallback, and archive artifacts through one audited git-backed delete pathPOST /v1/continuity/archivewrites an archive envelope undermemory/continuity/archive/and removes the active capsule in one git-backed commitPOST /v1/ops/runnow supports host-localcontinuity_cold_store,continuity_cold_rehydrate, andcontinuity_retention_applyjobs for explicit continuity semi-cold storage, recovery, and stale-archive policy executionPOST /v1/coordination/handoff/createprojects onlycontinuity.active_constraintsandcontinuity.drift_signalsfrom one exact active continuity capsule into a stored handoff artifact undermemory/coordination/handoffs/- handoff artifacts are additive coordination records: they do not mutate local continuity capsules, and
POST /v1/coordination/handoff/{handoff_id}/consumerecords only recipient outcome fields GET /v1/coordination/handoffs/querylets senders and recipients discover visible handoffs without relying on successful message or task-reference delivery; corrupt handoff artifacts are skipped with a warning instead of failing the whole queryGET /v1/coordination/handoff/{handoff_id}is visible only to the sender, the recipient, or an admin caller;POST /v1/coordination/handoff/{handoff_id}/consumeis recipient-only- handoff artifacts use canonical JSON serialization and git-backed rollback on create or consume commit failure
POST /v1/coordination/shared/createstores owner-authored shared coordination artifacts undermemory/coordination/shared/rather than projecting from a continuity capsule- shared coordination artifacts expose only the bounded 5B payload of
constraints,drift_signals, andcoordination_alerts GET /v1/coordination/shared/{shared_id}is visible only to the owner, listed participants, or an admin caller; unlike query, direct read does not requireread:filesGET /v1/coordination/shared/queryrequiresread:files, skips corrupt artifacts with a warning, returns list results undershared_artifacts, and keeps non-admin discovery bounded to the caller's own owner/participant identityPOST /v1/coordination/shared/{shared_id}/updateis owner-only, requires an exactexpected_version, replaces the bounded shared arrays wholesale, and restores the prior artifact bytes if the commit fails- shared coordination artifacts are additive coordination records: they do not mutate local continuity capsules and do not yet imply multi-writer or reconciliation semantics
POST /v1/coordination/reconciliation/openstores additive reconciliation artifacts undermemory/coordination/reconciliations/from bounded visible handoff/shared claims rather than mutating local continuity or shared coordination state- reconciliation claims remain bounded to source artifact identity, claimant identity, claim summary, epistemic status, optional freeform evidence refs, and shared
observed_versionassertions GET /v1/coordination/reconciliation/{reconciliation_id}is visible only to the owner, listed participant peers, or an admin caller; like the 5A/5B direct-read pattern, it requires authentication but notread:filesGET /v1/coordination/reconciliations/queryrequiresread:files, applies all supplied filters conjunctively, skips corrupt artifacts with one warning, and keeps non-admin discovery bounded to the caller's own reconciliation identityPOST /v1/coordination/reconciliation/{reconciliation_id}/resolveis owner-only (or admin), requiresexpected_versionfor first-write-wins concurrency, and writes bounded resolve fields (status,resolution_outcome,resolution_summary,resolved_at,resolved_by,version) without mutating local continuity or 5B shared coordination state- resolve replay: if the artifact is already resolved with the same outcome and summary, the call returns
updated=falsewithout a new commit; a different outcome or summary returns HTTP 409 - resolve restores the prior artifact bytes on commit failure and returns HTTP 500
- first-slice reconciliation outcomes are bounded to
advisory_only,conflicted, andrejected; stronger agreement outcomes that would mutate 5B shared artifacts or local continuity capsules are explicit non-goals of this slice - first-slice reconciliation artifacts are disagreement records: they open, read, query, and resolve bounded disputes without mutating local continuity capsules or 5B shared coordination artifacts
- all four reconciliation endpoints are exposed through discovery tool catalog, manifest endpoint map, and MCP tool dispatch without introducing a separate transport plane
POST /v1/backup/createnow includescontinuity_countsin the manifest when continuity artifacts are part of the backup scopePOST /v1/backup/restore-testnow acceptsverify_continuityand returns structuredcontinuity_validationdetails for restored active, fallback, archive, and cold continuity artifacts- continuity capsules may now carry optional
continuity.session_trajectoryentries to preserve in-session direction changes - continuity capsules may also carry optional
continuity.trailing_notes,continuity.curiosity_queue, andcontinuity.negative_decisionsfields as additive agent-owned orientation payload POST /v1/continuity/readandPOST /v1/context/retrievereturn those additive fields unchanged when present on the stored capsule and when retrieval trimming does not need to drop them- fallback snapshots, archive envelopes, and backup/restore validation preserve those additive fields as ordinary continuity-body content;
POST /v1/continuity/listsummaries intentionally do not expand to include them POST /v1/continuity/upsertnow enforces cross-field validation forsource.update_reason=interaction_boundaryandmetadata.interaction_boundary_kindPOST /v1/continuity/upsertaccepts optionallifecycle_transition(suspend/resume/conclude/supersede) andsuperseded_byto atomically transition a capsule'sthread_descriptor.lifecycleas part of the write — see Payload Reference for field constraintsPOST /v1/continuity/listaccepts thread identity filters:lifecycle,scope_anchor,keyword,label_exact,anchor_kind, andanchor_value— see Payload Reference for filter semanticsPOST /v1/continuity/listacceptssort="salience"to apply deterministic multi-signal salience ranking; when applied, each capsule carries asalienceblock and the response includes aggregatesalience_metadata— see Payload Reference for the sort key and response structurePOST /v1/continuity/readandPOST /v1/context/retrievenow include atrust_signalsblock alongside capsule data — an objective, mechanical trust assessment across four dimensions (recency, completeness, integrity, scope_match);trust_signalsisnullwhen the capsule is missing; thestartup_summaryview also includestrust_signalsas a top-level key;build_continuity_statereturns both per-capsule and aggregatetrust_signals; age fields arenull(not0) when timestamps are missing/malformed;recency.phasefalls back to"expired"on malformedverified_at; aggregate trust handles compact per-capsule shapes;recovery_warningsincludes"trust_signals_aggregate_failed"when aggregate computation fails- Graph response warnings use object shape with stable codes including
graph_anchor_not_provided,graph_anchor_not_supported,graph_anchor_not_found,graph_derivation_failed,graph_truncated,graph_result_malformed,graph_source_denied, andgraph_suppressed_by_continuity_mode. Auth/path denials omit denied sources and never copy graph warnings intorecovery_warningsorcontinuity_state.warnings. - #255/#260 scheduling is implemented as one-shot reminders/task nudges plus a read-only
/ui/scheduleinspection page. Deferred/non-goals remain recurrence, background scheduler loops, SSE/push, schedule mutation UI, arbitrary execution, webhooks/callbacks, automatic task or continuity mutation, graph mutation, and graph DB integration. - Continuity schema is now
1.1for newly written continuity capsules and continuity archive/fallback/cold artifacts. Stabilized legacy1.0continuity payloads remain supported for load/upgrade when they already have the modern required capsule structure. Truly pre-stabilization payloads missing required modern capsule fields are still a bounded unsupported migration case.
GET /v1/peers: list known peersPOST /v1/peers/register: create or update a peer recordGET /v1/peers/{peer_id}/manifest: fetch a peer manifestPOST /v1/peers/{peer_id}/trust: apply a trust transition with policy checksPOST /v1/messages/send: send a direct tracked messagePOST /v1/messages/ack: acknowledge, reject, or defer tracked deliveryGET /v1/messages/pending: inspect pending and terminal delivery stateGET /v1/messages/inbox: read inbox messagesGET /v1/messages/thread: read thread recordsPOST /v1/relay/forward: relay a message and record transport artifactsPOST /v1/messages/verify: verify signed envelopes and nonce replay protectionPOST /v1/replay/messages: replay dead-letter tracked messages
Notable behavior:
- direct delivery supports idempotency keys and acknowledgment tracking
- relay forwarding writes immutable transport records plus inbox/thread artifacts
- signed ingress can be enforced for direct and relayed message flows
- messages and relay flows may include handoff references in
attachmentsusing the convention"handoff:{handoff_id}"; the server stores these as opaque strings without validating the referenced artifact exists
POST /v1/tasks: create a shared taskPATCH /v1/tasks/{task_id}: update task status, ownership, or metadataGET /v1/tasks/query: query tasks by workflow filtersPOST /v1/docs/patch/propose: propose a unified diff for docs/contentPOST /v1/docs/patch/apply: apply a proposed docs/content patchPOST /v1/code/patch/propose: propose a unified diff for codePOST /v1/code/checks/run: run alint,test, orbuildprofile and persist the artifactPOST /v1/code/merge: perform merge policy evaluation using recorded check artifacts
Notable behavior:
- task transitions are deterministic and constrained
- tasks may carry a handoff reference in
metadata.handoff_idby convention; the server stores this as arbitrary task metadata without validating or acting on it - patch application validates working tree state and base reference compatibility
- code merge decisions depend on persisted check evidence rather than implicit local state
GET /v1/security/tokens: inspect token metadataPOST /v1/security/tokens/issue: issue scoped peer tokensPOST /v1/security/tokens/revoke: revoke a token by identifier or hashPOST /v1/security/tokens/rotate: atomically replace a tokenPOST /v1/security/keys/rotate: rotate signing key materialGET /v1/metrics: summarize delivery, audit, check, and replication metricsPOST /v1/replication/pull: ingest a replication bundlePOST /v1/replication/push: export and optionally push a replication bundlePOST /v1/backup/create: create a backup archive and manifestPOST /v1/backup/restore-test: validate backup recovery through a restore drillGET /v1/ops/catalog: list host-local maintenance jobsGET /v1/ops/status: inspect recent host-local maintenance runs and locksPOST /v1/ops/run: execute one host-local maintenance jobGET /v1/ops/schedule/export: export suggested scheduler payloads
Boundary note:
/v1/ops/*is a host-local control surface and should stay behind a local trust boundary- token and key lifecycle operations are authority actions, not normal peer collaboration flows
Most mutating endpoints require bearer-token scopes plus namespace restrictions. The common patterns are:
- read access:
read:files,read:index, and configuredread_namespaces - write access:
write:journal,write:messages,write:projects, and configuredwrite_namespaces - search/retrieval:
searchand read namespace checks - authority actions: security and governance scopes with host-local restrictions where applicable
Implementation notes that matter for operators and client authors:
- tokens carrying
admin:peersbypass all scope and namespace checks — see the Reviewer Guide for the full authority model - split namespace controls use
read_namespacesandwrite_namespaces - legacy
namespacesis still supported as a shorthand applying to both read and write - signed message verification includes nonce replay protection
- metrics and audit behavior depend on persisted delivery, replication, and audit-log state under the repo
- incremental indexing reflects working-tree state by default, so search can temporarily include uncommitted files after a write and before commit
- compaction is a planner/orchestrator that emits structured reports; it is not the summarizing model itself
- context snapshots persist deterministic artifacts under
snapshots/context/ - relay and direct messaging rely on persisted delivery state and replay tracking rather than in-memory status only
- host-local ops endpoints should rely on local transport boundaries; forwarded headers are proxy metadata, not a remote trust substitute
For exact runtime expectations, use GET /v1/discovery/tools and GET /v1/manifest.
- #165 — Startup view: Added
view="startup"parameter onPOST /v1/continuity/read. Returns astartup_summaryblock with recovery/orientation/context tiers alongside the unchanged full capsule. See Payload Reference. - #167 — Session-end snapshot: Added
session_end_snapshotonPOST /v1/continuity/upsert. A compact helper that merges startup-critical fields into the capsule before persistence. See Payload Reference. - #121 — Trust signals: Added
trust_signalsblock onPOST /v1/continuity/readandPOST /v1/context/retrieve. Four-dimension mechanical trust assessment (recency, completeness, integrity, scope match). See Payload Reference. - #124 — Stable user preferences: Added
stable_preferences(list ofStablePreference) onContinuityCapsule. Bounded to 12 entries; only valid on user/peer capsules. Included in read, startup summary, and context-retrieve paths. List summaries includestable_preference_count. Trimmed as a whole unit under token pressure. See Payload Reference. - #122 — Rationale entries: Added
rationale_entries(list ofRationaleEntry, max 6) onContinuityState. Captures decision rationale, assumptions, and unresolved tensions with kind/status lifecycle and supersession semantics. See Payload Reference. - #120 — Thread identity and scope boundaries: Added
thread_descriptoronContinuityCapsulewithThreadDescriptormodel (label, keywords, scope anchors, identity anchors, lifecycle, superseded_by). Addedlifecycle_transitionandsuperseded_byon upsert. Added list filters:lifecycle,scope_anchor,keyword,label_exact,anchor_kind,anchor_value. See Payload Reference. - #123 — Salience ranking: Added
sort="salience"onPOST /v1/continuity/listand deterministic salience sorting on context-retrieve paths. Six-signal sort key with per-capsulesalienceblock and aggregatesalience_metadata. See Payload Reference. - #194 — Structured-entry timestamp refinement: Continuity schema
1.1replaces structured-entryset_atwithcreated_at,updated_at, andlast_confirmed_atforstable_preferences,rationale_entries, andnegative_decisions. Stabilized-shape legacy continuity payloads remain supported for upgrade; truly pre-stabilization payloads missing required modern fields are not auto-migrated. Sammy's oldest real continuity capsule sample falls into the supported stabilized-shape legacy bucket. See Payload Reference. - #179 —
GET /v1/capabilities: Added versioned, machine-readable feature map endpoint. The registry now covers continuity enhancements, graph context, schedule reminders, coordination, messaging, peers, and discovery. See Discovery and contracts above. - #163 — Python CLI client: Added
tools/cognirelay_client.py, a stdlib-only command-line client for continuity read, upsert, and token hashing. See CLI Client.