memory

Recent Memory

Queryless newest-first feed (#404 R5) — backs MCP memory_list_recent.

A keyset walk over (created_at DESC, id DESC), complete by construction: the temporal complement of /memory/read's semantic gate. An empty feed is 200 {"items": [], "next_cursor": null} and NEVER a 404 — the shipped MCP client reads a bare 404 as "endpoint not deployed" and hides the feature behind a fallback hint.

post/api/v1/memory/recent

Request

  • Base URL: https://core.mnemoverse.com
  • URL: https://core.mnemoverse.com/api/v1/memory/recent
  • Auth: one of:
    • API key in header X-Api-Key
    • HTTP bearer

Request body

domainstring nullable

Optional domain filter (null = all the caller's domains). An 'xroom:<room_id>' address resolves through the same membership gate as /memory/read.

sincestring date-time nullable

Only entries created at or after this ISO-8601 instant (inclusive). Naive datetimes are read as UTC — same rule as /memory/read. The caller's novelty watermark.

untilstring date-time nullable

Only entries created at or before this ISO-8601 instant (inclusive). Naive datetimes are read as UTC. Pair with since to name a closed window — 'what happened on Monday' — instead of paging back from now and discarding.

exclude_authorstring nullable

Drop entries whose provenance principal equals this value — the 'everyone but me' read in a shared room. Mirrors the parameter of the same name on /memory/read (#404 R4).

limitinteger

Page size. Newest first.

cursorstring nullable

Opaque continuation cursor from a previous page's next_cursor. Malformed values fail loud (400 VALIDATION_ERROR) — a garbage cursor must never degrade into an unfiltered first page.

include_historyboolean

Return superseded revisions alongside live ones; each carries superseded_by, and every item carries supersedes when it replaced something. History is returned in the domain where each revision is stored: a read scoped to the successor's domain does not include a cross-domain predecessor — use an unscoped read or GET /memory/atoms/{id}. History items compete under normal ranking, min_relevance and top_k/limit — include_history grants eligibility, not chain completeness; for the chain itself use GET /memory/atoms/{id}/chain, which spends a 64-LOOKUP budget per call (resolved revisions AND dangling-pointer misses both count) and sets truncated when the budget ran out — so truncated means the walk stopped early, not that the chain necessarily holds more than 64 revisions. One exception to the domain rule above: when a fingerprint matches a revision that has been replaced, the live tip is returned alongside it even if that tip lives in another domain — the episodic index is domain-blind, and this makes it two atoms rather than one. No effect until the read-side supersession filter is enabled (nothing is hidden before then, so nothing needs unhiding), and inert for xroom:<room_id> domains, whose atoms cannot be superseded at all.

Response

Successful Response

next_cursorstring nullable

Opaque cursor for the next (older) page; null when nothing older remains. Always matches ^[A-Za-z0-9_=-]{1,512}$ — the MCP client refuses to echo a cursor outside that shape (CN-032).

Example response

{
  "items": [
    {
      "atom_id": "550e8400-e29b-41d4-a716-446655440000",
      "concepts": [
        "deploy",
        "staging"
      ],
      "content": "Staging moved to Fly.io — Railway config retired",
      "created_at": "2026-08-04T09:12:00Z",
      "domain": "general"
    }
  ]
}

Changes

No recorded changes to this operation across all 1 revision of this API.