Repository navigation
v0.16.0
A MINOR: it adds an output field to two tools.
Added
memory_readandmemory_list_recentname the shared rooms they did not
search, as data and on a hit too. Both declare a new optional output field,
rooms_not_searched: {state, rooms?, note}, present only on a call without
domainwhen the caller has rooms or the room list could not be checked.
stateislive(the rooms listed can be read by passing an address as
domain),archived-onlyorunknown;roomscarries the live rooms in
memory_list_rooms's row shape (the two now share one schema and one row
builder, so memory_list_rooms'stools/listentry is unchanged);noteis
the disclosure the text ends with. A scoped call, and a caller with no rooms,
get no field. Why: the disclosure lived in the text only, and only on an
empty result. A client that hands the modelstructuredContentinstead of
the text (Claude Code, observed 2026-10-23) got{"items":[]}from an empty
unscoped read and nothing else, while twenty live rooms held the answer.
Room content is still NOT searched or mixed into the result; whether it
should be is a separate decision. A row missingroom_id,addressor
roleis left out ofrooms(still named innote), the rule
memory_list_rooms already applies. Differs from the hosted connector:
itsmemory_readandmemory_list_recentschemas have no
rooms_not_searchedyet.
Changed
-
An unscoped
memory_readhit and an unscopedmemory_list_recentpage now
end with the same room disclosure an empty result already carried. A match
in your own domains says nothing about what a room holds. The 96,000-character
cap reserves the note, so a capped page plus the note still fits, and an
answer carries one escape legend, at its end. -
A capped
memory_readormemory_list_recentpage now fits the cap with its
escape legend too. The legend (275 characters) was appended after the cap,
so a capped page with an escaped domain or author name ran past
MAX_RESULT_CHARSby its length, scoped calls included and before this
release. The cap now reserves it whenever a name on the page would print
escaped and the room note does not already carry the legend, so such a page
is cut up to 275 characters earlier than before. Pages with no escaped name
are cut exactly where they were. Amemory_list_recentpage can
exceed its 40,000-character page budget by the note, at most about 2,200
characters; the budget is a target, the cap is the limit. -
One added read-only probe:
GET /memory/roomsonce per unscoped call
that returns results, issued after the read succeeds (an empty unscoped
result already made it, and a failed read still makes none). It spends rate
budget like any read, and it runs after the read rather than beside it, so
it adds the room list's response time to every unscoped hit: up to 4 seconds
when that endpoint is slow, the probe timeout, after which the note says the
room list could not be fetched. The README's privacy section, which lists the
probes, now names this one. -
Two descriptions name the new field.
memory_read'sdomainparameter
points torooms_not_searchednext to memory_list_rooms as a place to find
room addresses, andmemory_list_recent's description says an unscoped call
names the rooms it does not cover. The server instructions are unchanged:
they sit at their 800-character ceiling. -
npm: https://www.npmjs.com/package/@mnemoverse/mcp-memory-server
-
MCP Registry: https://registry.modelcontextprotocol.io/v0.1/servers?search=mnemoverse
What's Changed
- feat(rooms): unscoped read and feed name the rooms they did not search, as data by @izgorodin in #228
- release: v0.16.0 by @izgorodin in #229
Full Changelog: v0.15.4...v0.16.0