Skip to main content
Glama

Server Details

Hosted agent memory that learns from outcomes, with shared rooms. No key: mcp.mnemoverse.com/mcp

Ownership verified
Status
Healthy
Uptime
55.0% over 83 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
mnemoverse/mcp-memory-server
GitHub Stars
28
Server Listing
Mnemoverse Memory
ChatGPT
–
Claude
–

TDQS

A4.4/5.0

Scored across 11 tools

Disambiguation5/5

Each tool occupies a distinct slot: write vs read vs list_recent vs list_rooms vs list_recent-vs-read distinction is spelled out explicitly ('semantic search answers what do I know about X; this answers what happened lately'). Room lifecycle tools (create/join/invite) are cleanly separated by role, and memory_graph vs memory_stats vs memory_feedback have clearly different outputs. The only mild adjacency is stats vs graph as 'overview' tools, but the descriptions resolve it.

Naming Consistency4/5

Ten of eleven tools follow a strict memory_<verb>_<noun> snake_case pattern with consistent verb placement. vault_list breaks the namespace prefix and sits in a different resource family, which is a deliberate but visible deviation. Otherwise highly predictable.

Tool Count5/5

Eleven tools is well within the sweet spot, and every one earns its place: read/write core, recent listing, feedback signal, graph introspection, stats, and three room operations. Nothing feels padded or missing at the count level.

Completeness3/5

The memory lifecycle is strong (write, read, list, feedback, stats, graph, shared rooms), but there is no delete/forget or update path at all — the description explicitly says deletion is REST-API-only, leaving agents unable to correct or remove a bad memory. vault_list is also a dead end: it lists aliases but no tool retrieves or uses a secret, and room management lacks leave/revoke/member operations.

Available Tools

11 tools
memory_create_roomAInspect

Create a SHARED memory room — a space OTHER people's assistants can read, and write too when their membership scope is read_write, across the AI tools members connect to Mnemoverse. Members can access the room's existing history, including memories saved before they joined; joining does not expose their private account memory. Use when the user wants to share context or collaborate with someone else (e.g. 'make a room for me and my teammate'). Returns the room's address; pass that address as the domain on memory_write/memory_read to use it, and on memory_list_recent to catch up on what others added. People join through an invite minted with memory_invite_to_room.

NameRequiredDescriptionDefault
nameYesRoom name, unique within your account (e.g. 'launch-team').
descriptionNoOptional description of the room.

Output Schema

NameRequiredDescription
nameNoThe room name as stored.
addressYesDomain address (xroom:<id>); pass as `domain` on read/write.
room_idYesThe room's id (room_...); pass to memory_invite_to_room.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only say it is a non-destructive, non-readonly create; the description adds substantive behavior an agent could not infer: write access depends on membership scope (read_write), members see history saved before they joined, and joining does not leak private account memory. It also discloses that the result is a room address used as a `domain` handle elsewhere.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The sharing/permission model is front-loaded and the operational follow-through (invite, domain, list) comes after. It is slightly dense and has one overlapping clause ("across the AI tools members connect to Mnemoverse") that could be trimmed without loss.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Only two simple parameters, full schema coverage, an output schema that covers return values, and annotations covering the safety profile. The description still adds the sharing model, membership scope, privacy boundary, and downstream handle usage — the decision-relevant context is complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters are documented in-schema, so the baseline is 3. The description goes beyond that by explaining the semantic role of the returned address (`domain` on memory_write/memory_read), which is the non-obvious part of using this tool's output as input elsewhere; it adds nothing about the optional `description` parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource ("Create a SHARED memory room") and immediately contrasts it with private memory ("OTHER people's assistants can read", "joining does not expose their private account memory"). This makes it distinguishable from siblings like memory_join_room and memory_list_rooms without opening their schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states the triggering condition explicitly ("Use when the user wants to share context or collaborate with someone else") with a concrete example utterance. It also points to the follow-on tools: memory_invite_to_room for membership and memory_write/memory_read/memory_list_recent for using the returned address.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memory_feedbackAInspect

Rate memories returned by memory_read to help improve future retrieval ranking. Pass their IDs as memory_ids and an outcome from -1 (unhelpful) to 1 (helpful). Records feedback and updates ranking signals: positive feedback raises a memory's ranking; negative feedback lowers it so other memories out-rank it — nothing is erased. Saved text is not changed or deleted. For memories read from a shared room, pass that room's address as domain; your own memories need no domain. A read-only room member cannot rate the room's memories.

NameRequiredDescriptionDefault
domainNoOnly for memories read from a shared room: that room's address (xroom:...), exactly as you read it. Omit it for your own memories, which are rated by id alone.
outcomeYesHow helpful was this? 1.0 = very helpful, 0 = neutral, -1.0 = harmful/wrong
memory_idsYesIDs of the memories to rate, the `id:` line of each memory_read result.

Output Schema

NameRequiredDescription
avg_valenceNoAverage valence of the rated memories after the update. Reported as 0 in an asynchronous acknowledgement, where the real value is computed later — a 0 here is therefore not evidence of a neutral outcome.
updated_countYesHow many memories the service reports it applied the rating to. Processed synchronously this is the real count of memories that existed and were updated; processed asynchronously it is a best-effort ACCEPTED-count estimate — the number of IDs submitted — and the authoritative number is not known until the background worker runs. Zero means no submitted ID matched in the service's resolved request scope.
coactivation_edgesNoNumber of links between query concepts and result concepts that this rating changed. This connector does not send query_concepts, so live calls through this tool report 0; asynchronous acknowledgements also report 0.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint=false, destructiveHint=false), the description discloses the actual effect: positive feedback raises ranking, negative lowers it so others out-rank it, and nothing is erased or edited. It also surfaces a permission constraint (read-only room members cannot rate) that the annotations do not express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and its purpose, then progressively narrower details (outcome scale, ranking effect, domain rule, permission caveat). Dense but slightly redundant: 'nothing is erased' and 'Saved text is not changed or deleted' say nearly the same thing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has an output schema, so return values need not be described. For a 3-parameter mutation with annotations covering the safety profile, the description supplies everything an agent needs: the source of IDs, the scale, the shared-room rule, and the ranking consequence.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all three parameters and the -1..1 range. The description still adds cross-tool meaning by identifying memory_ids as the `id:` line of a memory_read result and by explaining the conditional domain requirement for shared rooms.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Rate memories returned by memory_read') and immediately names the effect on retrieval ranking. It is clearly distinguishable from siblings like memory_read (which returns memories) and memory_write (which creates text), because rating is an explicit separate action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly ties usage to memories obtained from memory_read, states how to pass IDs and outcome, tells the agent to include the room address only for shared-room memories, and names an exclusion (read-only room members cannot rate). When-to-use, when-not-to-use, and the alternative path are all covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memory_graphA
Read-onlyIdempotent
Inspect

Reads the association edges around given concepts: which concepts the memory has linked together, with each link's weight, outcome valence and co-activation count. Use to inspect what a memory store has learned or to explain why a read expanded to a concept. Reads your own graph, or a shared room's when its address is passed as domain; any other domain value has no effect. At depth 2 or 3 the engine drops edges below weight 0.05 unless min_weight is set. Read-only.

NameRequiredDescriptionDefault
depthNoHops to expand from the seeds (1-3, default 1). At depth 2 or 3, if min_weight is omitted the engine floors edge weight at 0.05 at EVERY hop — including the first — so a hub concept cannot fan out across the whole store before limit applies; pass min_weight explicitly (0 included) to see every edge anyway.
limitNoMax edges to return (1-500, default 100 — mirrors memory_read's top_k bounds).
seedsYesConcepts to center the graph on (1-20, each ≤200 chars, non-blank) — e.g. ['deploy', 'staging']. An unrecognised concept simply contributes no edges; it is not an error.
domainNoRead a shared room's graph instead of your own: pass that room's address (e.g. 'xroom:room_01ABC'). Find room addresses with memory_list_rooms. Unlike memory_read, any OTHER value has no effect here — the association store has no domain column, so a plain domain name behaves exactly like omitting this field.
min_weightNoOnly include edges at or above this weight (≥ 0). Omit for no floor at depth 1; at depth 2/3 the engine applies its own 0.05 floor when this is omitted (see depth) — pass 0 to see every edge at every depth.

Output Schema

NameRequiredDescription
edgesYesAssociation edges found within the requested depth.
nodesYesConcepts touched by edges below. A seed with no surviving edge (unrecognised concept, or every edge fell below the weight floor) is not listed.
truncatedYesTrue when a per-hop server cap or limit cut the walk short — the store may hold more edges than are reported here.
min_weight_appliedYesThe weight floor actually used at every hop: your min_weight when you set one (0 included); otherwise 0.05 from depth 2, or 0 at depth 1.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false), but the description adds non-obvious behavior: the 0.05 weight floor auto-applied at depth 2/3 unless min_weight is passed, that a non-address domain value is silently a no-op, and that an unrecognised seed is not an error. These are genuine surprises an agent would otherwise hit, though the trailing 'Read-only' merely restates the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with what the tool returns, then usage, then the domain caveat, then the depth/min_weight caveat — a sensible ordering with no filler sentences. The final 'Read-only.' is redundant against the annotations, the only wasted token.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-shape explanation is unnecessary, and the annotations carry the safety profile. What remains — when to use it, the domain constraint, and the min_weight floor interaction — is fully covered, leaving nothing an agent needs to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3, but the description adds cross-parameter semantics the schema states only locally: how depth and min_weight interact (0.05 floor at every hop including the first) and that domain must be a room address, unlike memory_read. It does not add anything for seeds or limit, which the schema already documents fully.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Reads the association edges around given concepts') and enumerates what each edge carries (weight, outcome valence, co-activation count). This clearly separates it from sibling memory_read, which retrieves memories rather than the link structure between them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives two concrete use cases: inspecting what a store has learned, and explaining why a read expanded to a concept — the latter implicitly points at memory_read as the upstream operation. It also scopes the domain parameter ('reads your own graph, or a shared room's when its address is passed'). No explicit when-not or named alternative tool, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memory_invite_to_roomAInspect

Mint an invite for a room you own and get a ready-to-forward message. An invite is single-use by default; pass max_uses to let several people join with the same one. The user sends that message to the person they want to add (any messenger); the recipient opens the link or tells THEIR assistant the code to join. Use when the user asks to invite someone to a room they own, including one just created with memory_create_room.

NameRequiredDescriptionDefault
scopeNoRole the invitee gets — 'read' or 'read_write' (default read_write).
room_idYesThe room's id (room_...), from memory_create_room.
max_usesNoHow many people may join with this invite (default 1, single-use).
expires_in_daysNoDays until the invite expires (default 7).

Output Schema

NameRequiredDescription
codeNoThe invite code (mnvr_...). Single-use by default, with a configurable use limit. Shown once.
scopeNoRole the invitee will get.
join_urlNoLanding URL the invitee can open to join.
expires_atNoISO 8601 expiry, or null.
room_addressNoThe room's domain address (xroom:<id>).
share_messageYesReady-to-forward invite text.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only cover the safety flags (non-readonly, non-idempotent, non-destructive). The description adds substantial behavior beyond them: single-use default, max_uses for multi-recipient, the message flow (user forwards, recipient opens link or tells THEIR assistant the code). That workflow context is exactly what annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four tight sentences, front-loaded with the action and artifact. Each sentence carries distinct information (what it mints, the single-use default, the forwarding flow, the trigger) with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation. The description supplies the trigger, defaults, and end-to-end workflow an agent needs; nothing material is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters are already documented with defaults and ranges. The description only reinforces max_uses' single-use default, adding no syntax or format detail beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Mint an invite for a room') and immediately describes the concrete artifact produced (a ready-to-forward message). It is clearly distinguishable from siblings like memory_join_room or memory_create_room.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use it: 'when the user asks to invite someone to a room they own, including one just created with memory_create_room,' naming a sibling. It lacks an explicit when-not or an alternative for the recipient side, but the trigger context is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memory_join_roomA
Idempotent
Inspect

Join a shared memory room using an invite code (starts with 'mnvr_'). Use when the user pastes an invite code or says something like 'join room with code ...'. The result gives the room's address, which is the domain for reading the shared room with memory_read, and tells you what you may do with it: memory_write to that address is only allowed when your membership scope is read_write; a read-only membership has that write refused; and when the server does not report a scope, whether memory_write would succeed is stated as unknown rather than promised either way.

NameRequiredDescriptionDefault
codeYesThe invite code (mnvr_...).

Output Schema

NameRequiredDescription
nameNoThe room name.
scopeNoYour role in the room ('read' | 'read_write').
addressYesDomain address (xroom:<id>); pass as `domain` on read/write.
room_idYesThe room's id (room_...).
next_stepsYesHow to use the room now.
already_memberNoTrue if you were already a member (no-op join).

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations declaring readOnlyHint=false, idempotentHint=true, destructiveHint=false and openWorldHint=false, the description still adds real content: the join returns a room address usable as `domain`, and write permission depends on membership scope, with read-only writes refused and unknown scopes reported as unknown rather than promised. This is unusually candid about permission outcomes, though it stops short of describing what happens on an invalid or expired code.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and trigger are front-loaded in the first two sentences, and every sentence carries information about downstream use. The closing scope sentence is dense and slightly convoluted, but it is not padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return structure need not be re-explained, yet the description covers the one fact an agent needs to chain correctly (the address is the `domain` for reads) plus the write-permission conditionality. Complete for a single-parameter join tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter exists and schema coverage is 100%, so the schema already documents `code` and its 'mnvr_...' form. The description repeats the prefix convention without adding syntax, error behavior, or length/format nuance beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (join) and resource (shared memory room) plus the required input format 'mnvr_'. It is immediately distinguishable from siblings like memory_create_room and memory_invite_to_room, which are the adjacent operations in the same lifecycle.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger ('use when the user pastes an invite code or says something like "join room with code ..."') and routes onward: the returned address is the `domain` for memory_read, and memory_write is conditional on scope. Alternatives and conditions are named rather than inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memory_list_recentA
Read-onlyIdempotent
Inspect

List the NEWEST memories first — no search query needed. Semantic search answers 'what do I know about X'; this answers 'what happened lately': resuming work after a break, catching up on a shared room ('any new messages?'), or reviewing what was saved recently. Pass since (your last-seen time) to get only what's new, and page through older entries with the returned cursor. Complete by construction WITHIN ONE SCOPE — nothing is skipped there, unlike a semantic search. A page is also bounded by SIZE, so a page of long entries comes back shorter than limit and hands you a cursor for the rest — nothing is dropped, and following the cursor is how you get it. To catch up on a shared room you MUST pass its address as domain: rooms are separate stores and an unscoped call never covers them, though it names the ones you have (rooms_not_searched).

NameRequiredDescriptionDefault
limitNoMost entries per page (default: 20). Newest first. ⚠️ A CEILING, not a promise: the page is ALSO bounded by size, so a page of long entries stops early and returns a cursor for the rest. In rooms whose entries run long, ask for 5–10 — a large `limit` there buys nothing the size budget will not take back, and costs round trips.
sinceNoOnly entries created at/after this ISO-8601 instant (naive = UTC) — your novelty watermark.
untilNoOnly entries created at/before this ISO-8601 instant (inclusive). Pair with `since` to read a closed window — 'what happened on Monday' — instead of paging back from now.
cursorNoOpaque cursor from a previous page's 'More older entries exist' line — continues the listing without skips or duplicates.
domainNoRestrict to one domain. REQUIRED to read a shared room — pass its address ('xroom:room_01ABC'), because rooms are separate stores that an unscoped feed does NOT cover. Omit only when you mean your own domains. Room addresses come from memory_list_rooms. Room entries are often long — a room feed usually reaches its size budget after a handful of them, so expect to page (see `limit`).
exclude_authorNoDrop entries written by this author PRINCIPAL. ⚠️ NOT USABLE FROM HERE YET — the principal is never shown in these results, so there is no value you can get through this tool; a guess like 'me' filters nothing, silently. Same caveat as on memory_read.

Output Schema

NameRequiredDescription
itemsYesEntries newest-first (creation time descending).
next_cursorNoPass back as cursor for the next (older) page; null = listing complete. Absent when the service sent a continuation token this client will not pass on; the text then says the token could not be displayed.
rooms_not_searchedNoPresent only on a call WITHOUT `domain`, when you have shared rooms or they could not be checked: rooms are separate stores that call did not search.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds real behavioral context beyond them: completeness-within-a-scope, the size budget that can truncate a page below `limit`, the guarantee of no skips/duplicates across pages, and the `rooms_not_searched` signal on unscoped calls. It also discloses a limitation not visible elsewhere ('nothing is skipped there, unlike a semantic search').

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening sentence is well front-loaded and the paragraph advances from purpose to paging to scope. However, the size-budget/cursor mechanic is explained twice (once in prose, again in the `limit` description) and the paragraph is dense enough to be mildly repetitive.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 6 optional parameters and an output schema present, the description supplies exactly what the schema cannot: which scope the call covers, why a page may be short, how to continue, and where the room-address list comes from. An agent has everything needed to call it correctly on the first try.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds synthesis the schema cannot: `since` as a novelty watermark, `domain` as mandatory for room access, and the interaction between `limit` and the size budget that makes large limits wasteful in rooms. It largely restates the schema's per-parameter caveats rather than adding new semantics, which keeps it below a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description leads with a specific verb and ordering ('List the NEWEST memories first') and immediately contrasts itself with the sibling capability of semantic search ('what happened lately' vs 'what do I know about X'). An agent can pick between this and memory_read without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It names concrete use cases (resuming after a break, catching up on a room, reviewing recent saves), states when to pass `since` versus paging with the cursor, and gives an explicit MUST for the alternative store ('to catch up on a shared room you MUST pass its address as `domain`'). When-not guidance is present: unscoped calls never cover rooms.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memory_list_roomsA
Read-onlyIdempotent
Inspect

List the shared memory rooms you can use — the ones you OWN plus the ones you've JOINED — each with the address to pass as domain on memory_read, and on memory_write too where your membership scope is read_write; a read-only membership has that write refused. Use this to RE-FIND a room in a new session (e.g. 'what rooms do I have?', 'resume the room with my teammate') instead of having to create or re-join it.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
roomsYes

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already supply readOnly/idempotent/non-destructive, so the bar is lower, yet the description adds real behavioral context: the returned address is the value to pass as `domain` on memory_read and memory_write, and write is refused for read-only memberships. That permission nuance is not derivable from the schema or annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded and dense with useful content, but the middle clause nesting the `domain` usage for two other tools inside a dash-heavy sentence makes it harder to parse than a two-sentence split would be. Still, essentially every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need no explanation, and rich annotations cover the safety profile. The description fills the remaining gaps: usage scenario, cross-tool handoff via `domain`, and membership-based write refusal. Nothing needed to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters (schema coverage 100% trivially), so the baseline is 4. The description's mention of `domain` belongs to sibling tools, not this one, so there is no additional parameter meaning to add here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb + resource ('List the shared memory rooms') with scope made explicit: rooms you OWN plus rooms you've JOINED. It is unambiguously distinguishable from siblings memory_create_room and memory_join_room, which the description implicitly contrasts against.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States the triggering scenario ('RE-FIND a room in a new session') with concrete user phrasings, and explicitly says to use this instead of creating or re-joining. Both the when and the not-this alternatives are named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memory_readA
Read-onlyIdempotent
Inspect

Search long-term memory for user preferences, past decisions, project setup, people, or earlier context. The memory persists across sessions and across every AI tool the user has connected. It applies when an answer may depend on something from an earlier session or another tool; it is not needed for general world knowledge. Returns matches ranked by relevance (or newest-first with order_by: 'recency'); each result carries an id; after the answer, memory_feedback takes these ids to record which memories helped. A correction is a fresh memory_write: it is stored alongside the earlier memory, which is not deleted or hidden, unless it is too close to an existing memory, in which case the write is refused. No MCP deletion tool is exposed; a user can permanently delete an individual personal memory through the REST API or with help from support.

NameRequiredDescriptionDefault
queryYesNatural-language description of what you're looking for, e.g. 'database choice for the API' or 'user's preferred testing framework'.
sinceNoOnly memories created at/after this ISO-8601 instant (naive = UTC) — e.g. your last-seen watermark in a shared room.
top_kNoRequested number of results (default: 5, what this connector asks for when you omit it; the engine's own default of 10 never applies, because the field is always sent). ⚠️ Not a hard cap: association expansion can return MORE than this, and the relevance floor can return fewer — raising it does not reliably widen the result set. For a complete, exactly-bounded listing use memory_list_recent instead.
untilNoOnly memories created at/before this ISO-8601 instant.
domainNoRestrict the search to one domain namespace (e.g. 'project:acme'). Omitting it searches your OWN domains — it does NOT include shared rooms, which are separate stores: to search a room, pass its address here (e.g. 'xroom:room_01ABC'). Find room addresses with memory_list_rooms, or in `rooms_not_searched`, which an answer without `domain` carries when you have rooms.
order_byNo'relevance' (default) = ranking order. 'recency' = the matched set re-sorted newest-first. For a complete newest-first feed with no search at all, use memory_list_recent instead.
diversityNo0 (default) returns the matches as ranked. Above 0, a match that is a near-copy of one already picked gives its slot to the next distinct memory (maximal marginal relevance); 1 lets similarity alone decide after the first pick. It changes which memories come back, not their scores, and applies only when there are more matches than top_k and top_k is below 200.
exclude_authorNoDrop memories written by this author PRINCIPAL — the server-side identity. ⚠️ NOT USABLE FROM HERE YET: the principal is not shown in these results, so there is no value you can obtain through this tool, and a guess like 'me' silently matches nothing and filters nothing. Only pass it if your system knows the exact principal from elsewhere (e.g. the REST API).

Output Schema

NameRequiredDescription
itemsYesMatching memories, ordered per order_by.
rooms_not_searchedNoPresent only on a call WITHOUT `domain`, when you have shared rooms or they could not be checked: rooms are separate stores that call did not search.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, non-destructive, but the description adds valuable context annotations cannot: cross-session/cross-tool persistence scope, relevance ranking with newest-first fallback, the id handoff to memory_feedback, and the surprising fact that a near-duplicate write is refused rather than overwriting. The deletion-policy sentences lean toward memory_write's concerns, which keeps this just below a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and applicability before any mechanics, and each sentence handles a distinct concern. It runs long, however, and the correction/deletion paragraph is only loosely tied to a read tool, arguably belonging to memory_write.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description need not explain return shapes, and it still covers persistence scope, ranking behavior, id usage, and the fact that no MCP delete path exists. Nothing essential to calling this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already carries parameter meaning; the description only echoes order_by: 'recency' and notes that results carry ids for memory_feedback. That id/feedback loop is a genuine addition, but query, since, until, domain, top_k, diversity, and exclude_author are left entirely to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource ('Search long-term memory') and enumerates the content classes it targets (preferences, decisions, project setup, people, earlier context). It also draws explicit boundaries against memory_feedback (post-answer feedback) and memory_write (corrections), so an agent can place it among the siblings without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a positive trigger ('applies when an answer may depend on something from an earlier session or another tool') and an explicit exclusion ('not needed for general world knowledge'). It also states the follow-up step with memory_feedback, so the when-and-what-next is fully specified.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memory_statsA
Read-onlyIdempotent
Inspect

Get an overview of the stored memory: total count, the number of learned concept associations, the list of domains, and average quality scores. This memory is shared across all AI tools the user has connected to Mnemoverse. Use it to orient yourself, to confirm the exact domain name before writing to it, or when the user asks what you remember. Read-only — changes nothing.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
domainsYesUser-defined memory domains.
episodesNoNumber of individual memories (not merged into a summary).
prototypesNoNumber of summary memories merged from several individual ones. Consolidation is not running on the hosted service, so this count does not currently grow.
avg_valenceNoAverage valence of stored memories: how well recalls turned out, on a scale from -1 to 1.
memory_countYesNumber of saved memories.
hebbian_edgesNoNumber of learned concept-to-concept associations; memory_graph reads them.
avg_importanceNoAverage importance of stored memories, on a scale from 0 to 1.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint/idempotentHint/destructiveHint, so the "Read-only — changes nothing" clause is redundant. The genuinely additive fact is that the memory is shared across all AI tools connected to Mnemoverse, which is scope information not available in the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the returned data, then sharing scope, then usage triggers — a sensible order with no filler. The final "Read-only — changes nothing" clause is redundant against the annotations and could be dropped.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Zero parameters, an output schema (so returns need not be explained), and annotations covering the safety profile mean the description only needs context — which it supplies via the cross-tool sharing scope and usage triggers. Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the schema-baseline of 4 applies and there is nothing for the description to compensate for. No parameter semantics are needed or missing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb ("Get an overview") plus resource (stored memory), with the exact contents enumerated: total count, learned concept associations, domain list, average quality scores. This makes the aggregate nature clear against siblings like memory_read and memory_list_recent. However, no sibling is named or explicitly contrasted, so it stops short of full differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives three concrete when-to-use triggers: orienting yourself, confirming the exact domain name before writing, and answering "what do you remember." These are actionable contexts. No when-not condition or named alternative (e.g., memory_list_recent for recency) is provided, so it isn't a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

memory_writeAInspect

Store a long-term memory that persists across sessions and across every AI tool the user has connected to Mnemoverse. Suited to durable information: a stated preference, a decision, a fact about people, roles or project setup, a lesson learned; transient chatter that only matters this turn does not belong here. Never store passwords, API keys, payment data, MFA codes, government IDs, or health records. Behavior: outside shared rooms, a novelty gate refuses a write the embedder cannot tell apart from a memory already stored in the same domain, so the result tells you whether the memory was stored or refused. Write content as a self-contained statement that still makes sense when recalled out of context.

NameRequiredDescriptionDefault
domainNoNamespace to organize memories (e.g. 'engineering', 'user:alice', 'project:acme'). Matched byte-for-byte — a leading space, a different case, or an invisible character opens a SEPARATE, permanent store, so reuse an exact name from memory_stats rather than retyping one. To write into a shared room, pass its address here instead (e.g. 'xroom:room_01ABC'). Find room addresses with memory_list_rooms.
contentYesThe memory to store as a self-contained statement, e.g. 'User prefers TypeScript strict mode' or 'Decided to deploy the API on Cloudflare Workers (2026-06)'.
conceptsNoKey concepts for linking related memories (e.g. ['deploy', 'friday', 'staging'])

Output Schema

NameRequiredDescription
reasonNoThe memory service's own explanation of this outcome, quoted as sent — when stored is false this is the ONLY statement of WHY, e.g. "Below importance threshold (0.047 < 0.1)". Ordinary text is preserved exactly; only control, bidi, zero-width, and repeated-whitespace characters are normalized before display, and the value is capped at 400 characters. Absent when the service sent no explanation, or when nothing remains after that normalization.
storedYesWhether the memory passed the novelty gate and was stored.
memory_idYesIdentifier of the stored memory, or null when it was not stored.
importanceNoNovelty score for this write (0-1): how much it adds over the nearest memories already saved in the same domain. Outside shared rooms, a write that scores below the service's importance threshold is not stored, and `reason` says why when the service sends one. The score is approximate and can read lower for non-English text. It is not a verdict on whether the memory was worth keeping. Absent when the service sent no score.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this is a mutating, non-idempotent, non-destructive write. The description adds substantial behavioral context beyond that: the novelty gate outside shared rooms, the possibility of refusal, and the fact that the result reports whether the memory was stored or refused. This is exactly the kind of condition an agent could not infer from annotations alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and then layers in usage, safety exclusions, and novelty-gate behavior in a logical order. It is somewhat dense, but every sentence carries real information and none is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that an output schema exists and annotations cover the safety profile, the description supplies what structured fields cannot: persistence semantics, acceptable content categories, prohibited data, and the novelty-gate refusal behavior. An agent has enough to decide whether and how to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents `domain`, `content`, and `concepts` thoroughly, including byte-for-byte domain matching and room addresses. The description reinforces the self-contained-content requirement but largely restates what the schema already says, so it sits at the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Store a long-term memory') and scopes it precisely: persistence across sessions and across every connected AI tool. It is clearly distinguishable from sibling tools like memory_read or memory_list_recent, which retrieve rather than store.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly names when to use the tool ('durable information: a stated preference, a decision, a fact about people, roles or project setup, a lesson learned') and when not to ('transient chatter that only matters this turn does not belong here'). The prohibition list for sensitive data adds a hard exclusion boundary that leaves little room for misuse.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

vault_listA
Read-onlyIdempotent
Inspect

List the secrets stored in your Mnemoverse Vault — by ALIAS and purpose only; the secret VALUE is never returned or shown to you, and no tool on this connector returns it. Use this to check WHICH secrets the user has stored and under what alias (e.g. the user says 'do I have a GitHub token saved?'). Only YOUR account's secrets are listed.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
secretsYes

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, but the description adds crucial non-obvious behavior: the secret VALUE is never returned by this or any other tool on the connector, which prevents the agent from promising the user something impossible. It also discloses the account scoping constraint ('only YOUR account's secrets').

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The critical constraint (no values returned) is front-loaded in the first sentence, and the use-case example is second. Slightly dense with em-dash asides, but every clause carries information an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite a rich output schema, the description conveys the one thing the schema cannot: that only aliases, never values, are exposed. For a zero-param, read-only listing tool, nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless tool applies. The description adds no misleading parameter-like claims.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and resource (secrets stored in the Mnemoverse Vault) and immediately bounds the scope to alias and purpose only. This is clearly distinguishable from siblings like memory_read or memory_list_recent, which deal with memories rather than vault secrets.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger scenario ('the user says do I have a GitHub token saved?'), which is strong usage context. It does not name an alternative tool to use instead for retrieving a secret, though the description implies no such tool exists.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updates
    • Changedmemory_list_recent1 field changed
      • addedOutput schema / properties / rooms_not_searched
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Present only on a call WITHOUT `domain`, when you have shared rooms or they could not be checked: rooms are separate stores that call did not search.",
        +  "properties": {
        +    "note": {
        +      "description": "The same disclosure the text ends with.",
        +      "type": "string"
        +    },
        +    "rooms": {
        +      "description": "The live rooms this call did not search; present only when state is 'live'. A row missing room_id, address or role is omitted here and still named in `note`.",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "address": {
        +            "description": "Domain address (xroom:<id>); pass as `domain` on read/write.",
        +            "type": "string"
        +          },
        +          "archived": {
        +            "description": "True if archived (owned rooms only).",
        +            "type": "boolean"
        +          },
        +          "name": {
        +            "description": "The room name.",
        +            "type": "string"
        +          },
        +          "role": {
        +            "description": "'owner' or 'member'.",
        +            "type": "string"
        +          },
        +          "room_id": {
        +            "description": "The room's id (room_...).",
        +            "type": "string"
        +          },
        +          "scope": {
        +            "description": "'read' or 'read_write'.",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "room_id",
        +          "address",
        +          "role",
        +          "archived"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "state": {
        +      "description": "'live': the rooms listed can be read by passing an address as `domain`. 'archived-only': every room you have is archived and refuses reads. 'unknown': the room list could not be checked, so whether any room went unsearched is not known.",
        +      "enum": [
        +        "live",
        +        "archived-only",
        +        "unknown"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "state",
        +    "note"
        +  ],
        +  "type": "object"
        +}
    • Changedmemory_read2 fields changed
      • changedInput schema / properties / domain / description
        Previous value: -"Restrict the search to one domain namespace (e.g. 'project:acme'). Omitting it searches your OWN domains — it does NOT include shared rooms, which are separate stores: to search a room, pass its address here (e.g. 'xroom:room_01ABC'). Find room addresses with memory_list_rooms."New value: +"Restrict the search to one domain namespace (e.g. 'project:acme'). Omitting it searches your OWN domains — it does NOT include shared rooms, which are separate stores: to search a room, pass its address here (e.g. 'xroom:room_01ABC'). Find room addresses with memory_list_rooms, or in `rooms_not_searched`, which an answer without `domain` carries when you have rooms."
      • addedOutput schema / properties / rooms_not_searched
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Present only on a call WITHOUT `domain`, when you have shared rooms or they could not be checked: rooms are separate stores that call did not search.",
        +  "properties": {
        +    "note": {
        +      "description": "The same disclosure the text ends with.",
        +      "type": "string"
        +    },
        +    "rooms": {
        +      "description": "The live rooms this call did not search; present only when state is 'live'. A row missing room_id, address or role is omitted here and still named in `note`.",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "address": {
        +            "description": "Domain address (xroom:<id>); pass as `domain` on read/write.",
        +            "type": "string"
        +          },
        +          "archived": {
        +            "description": "True if archived (owned rooms only).",
        +            "type": "boolean"
        +          },
        +          "name": {
        +            "description": "The room name.",
        +            "type": "string"
        +          },
        +          "role": {
        +            "description": "'owner' or 'member'.",
        +            "type": "string"
        +          },
        +          "room_id": {
        +            "description": "The room's id (room_...).",
        +            "type": "string"
        +          },
        +          "scope": {
        +            "description": "'read' or 'read_write'.",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "room_id",
        +          "address",
        +          "role",
        +          "archived"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "state": {
        +      "description": "'live': the rooms listed can be read by passing an address as `domain`. 'archived-only': every room you have is archived and refuses reads. 'unknown': the room list could not be checked, so whether any room went unsearched is not known.",
        +      "enum": [
        +        "live",
        +        "archived-only",
        +        "unknown"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "state",
        +    "note"
        +  ],
        +  "type": "object"
        +}
  2. 11 tool updates
    • Changedmemory_create_room2 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedOutput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
    • Changedmemory_feedback2 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedOutput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
    • Changedmemory_graph2 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedOutput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
    • Changedmemory_invite_to_room2 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedOutput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
    • Changedmemory_join_room2 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedOutput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
    • Changedmemory_list_recent2 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedOutput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
    • Changedmemory_list_rooms2 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedOutput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
    • Changedmemory_read2 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedOutput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
    • Changedmemory_stats2 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedOutput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
    • Changedmemory_write2 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedOutput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
    • Changedvault_list2 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedOutput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
  3. 1 tool update
    • Changedmemory_read1 field changed
      • addedInput schema / properties / diversity
        Added value: +{
        +  "description": "0 (default) returns the matches as ranked. Above 0, a match that is a near-copy of one already picked gives its slot to the next distinct memory (maximal marginal relevance); 1 lets similarity alone decide after the first pick. It changes which memories come back, not their scores, and applies only when there are more matches than top_k and top_k is below 200.",
        +  "maximum": 1,
        +  "minimum": 0,
        +  "type": "number"
        +}
  4. 1 tool update
    • Changedmemory_create_room1 field changed
      • changedInput schema / properties / name / description
        Previous value: -"Room name, unique within your account (e.g. 'me-and-olya')."New value: +"Room name, unique within your account (e.g. 'launch-team')."
  5. 4 tool updates
    • Changedmemory_feedback1 field changed
      • changedOutput schema / properties / coactivation_edges / description
        Previous value: -"Number of feedback-driven query/result concept co-activation edges changed by the service. This is separate from ordinary Hebbian strengthening among a memory's own concepts. This connector does not send query_concepts, so live calls through this tool report 0; asynchronous acknowledgements also report 0."New value: +"Number of links between query concepts and result concepts that this rating changed. This connector does not send query_concepts, so live calls through this tool report 0; asynchronous acknowledgements also report 0."
    • Changedmemory_read1 field changed
      • changedInput schema / properties / exclude_author / description
        Previous value: -"Drop memories written by this author PRINCIPAL — the server-side identity. ⚠️ NOT USABLE FROM HERE YET: the principal is not shown in these results, so there is no value you can obtain through this tool, and a guess like 'me' silently matches nothing and filters nothing. Only pass it if your system knows the exact principal from elsewhere (e.g. the REST API). A self-exclusion shortcut is planned."New value: +"Drop memories written by this author PRINCIPAL — the server-side identity. ⚠️ NOT USABLE FROM HERE YET: the principal is not shown in these results, so there is no value you can obtain through this tool, and a guess like 'me' silently matches nothing and filters nothing. Only pass it if your system knows the exact principal from elsewhere (e.g. the REST API)."
    • Changedmemory_stats3 fields changed
      • changedOutput schema / properties / episodes / description
        Previous value: -"Number of episodic (not yet consolidated) memories."New value: +"Number of individual memories (not merged into a summary)."
      • changedOutput schema / properties / hebbian_edges / description
        Previous value: -"Number of Hebbian concept-to-concept links, learned from concepts that occur together as memories are stored and used."New value: +"Number of learned concept-to-concept associations; memory_graph reads them."
      • changedOutput schema / properties / prototypes / description
        Previous value: -"Number of consolidated prototype memories."New value: +"Number of summary memories merged from several individual ones. Consolidation is not running on the hosted service, so this count does not currently grow."
    • Changedmemory_write1 field changed
      • changedOutput schema / properties / importance / description
        Previous value: -"Novelty score for this write (0-1): how much it adds over the nearest memories already saved in the same domain. A first-generation metric UNDER ACTIVE DEVELOPMENT and known to be unreliable — the same content has measured ~0.08 in Russian against ~0.55 in English, so it under-reads non-English text. It is not a verdict on whether the memory was worth keeping. Absent when the service sent no score."New value: +"Novelty score for this write (0-1): how much it adds over the nearest memories already saved in the same domain. Outside shared rooms, a write that scores below the service's importance threshold is not stored, and `reason` says why when the service sends one. The score is approximate and can read lower for non-English text. It is not a verdict on whether the memory was worth keeping. Absent when the service sent no score."
  6. 2 tool updates
    • Changedmemory_feedback3 fields changed
      • removedInput schema / properties / atom_ids
        Removed value: -{
        -  "description": "Deprecated since 0.11, removed in 0.13: atom_ids is the old name of memory_ids, still accepted on its own until then. Pass memory_ids instead.",
        -  "items": {
        -    "type": "string"
        -  },
        -  "minItems": 1,
        -  "type": "array"
        -}
      • changedInput schema / properties / memory_ids / description
        Previous value: -"Required: IDs of the memories to rate, the `id:` line of each memory_read result. (Optional in this schema only while the deprecated atom_ids is still accepted in its place.)"New value: +"IDs of the memories to rate, the `id:` line of each memory_read result."
      • changedInput schema / required
        Previous value: -[
        -  "outcome"
        -]New value: +[
        +  "memory_ids",
        +  "outcome"
        +]
    • Addedmemory_graph
  7. 10 tool updates
    • Changedmemory_create_room3 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / description / description
        Previous value: -"Optional human description of the room."New value: +"Optional description of the room."
      • changedOutput schema / required
        Previous value: -[
        -  "room_id",
        -  "address",
        -  "name"
        -]New value: +[
        +  "room_id",
        +  "address"
        +]
    • Changedmemory_feedback9 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / atom_ids
        Added value: +{
        +  "description": "Deprecated since 0.11, removed in 0.13: atom_ids is the old name of memory_ids, still accepted on its own until then. Pass memory_ids instead.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / domain
        Added value: +{
        +  "description": "Only for memories read from a shared room: that room's address (xroom:...), exactly as you read it. Omit it for your own memories, which are rated by id alone.",
        +  "type": "string"
        +}
      • changedInput schema / properties / memory_ids / description
        Previous value: -"Personal-scope memory IDs from a prior memory_read. Shared-room IDs cannot currently be rated because this tool has no domain input."New value: +"Required: IDs of the memories to rate, the `id:` line of each memory_read result. (Optional in this schema only while the deprecated atom_ids is still accepted in its place.)"
      • removedInput schema / properties / memory_ids / items / format
        Removed value: -"uuid"
      • removedInput schema / properties / memory_ids / items / pattern
        Removed value: -"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"
      • removedInput schema / properties / memory_ids / maxItems
        Removed value: -20
      • changedInput schema / properties / outcome / description
        Previous value: -"Outcome signal: -1.0 (failure) to +1.0 (success)."New value: +"How helpful was this? 1.0 = very helpful, 0 = neutral, -1.0 = harmful/wrong"
      • changedInput schema / required
        Previous value: -[
        -  "memory_ids",
        -  "outcome"
        -]New value: +[
        +  "outcome"
        +]
    • Changedmemory_invite_to_room6 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / expires_in_days / description
        Previous value: -"Days until the invite expires (1-90, default 7)."New value: +"Days until the invite expires (default 7)."
      • changedInput schema / properties / max_uses / description
        Previous value: -"How many accounts may redeem the invite (1-1000, default 1)."New value: +"How many people may join with this invite (default 1, single-use)."
      • changedInput schema / properties / room_id / maxLength
        Previous value: -200New value: +100
      • changedInput schema / properties / scope / description
        Previous value: -"Role the invitee gets: 'read' or 'read_write' (default read_write)."New value: +"Role the invitee gets — 'read' or 'read_write' (default read_write)."
      • changedOutput schema / required
        Previous value: -[
        -  "code",
        -  "join_url",
        -  "share_message",
        -  "scope",
        -  "room_address",
        -  "expires_at"
        -]New value: +[
        +  "share_message"
        +]
    • Changedmemory_join_room2 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedOutput schema / required
        Previous value: -[
        -  "room_id",
        -  "address",
        -  "name",
        -  "scope",
        -  "already_member",
        -  "next_steps"
        -]New value: +[
        +  "room_id",
        +  "address",
        +  "next_steps"
        +]
    • Changedmemory_list_recent13 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / cursor / description
        Previous value: -"Opaque cursor from the previous page's next_cursor — continues the listing without skips or duplicates."New value: +"Opaque cursor from a previous page's 'More older entries exist' line — continues the listing without skips or duplicates."
      • changedInput schema / properties / domain / description
        Previous value: -"Restrict to one namespace (e.g. a shared room address 'xroom:...'); omit for all."New value: +"Restrict to one domain. REQUIRED to read a shared room — pass its address ('xroom:room_01ABC'), because rooms are separate stores that an unscoped feed does NOT cover. Omit only when you mean your own domains. Room addresses come from memory_list_rooms. Room entries are often long — a room feed usually reaches its size budget after a handful of them, so expect to page (see `limit`)."
      • removedInput schema / properties / domain / maxLength
        Removed value: -100
      • changedInput schema / properties / exclude_author / description
        Previous value: -"Drop entries written by this author PRINCIPAL — the 'everyone but me' read in a shared room. Same parameter memory_read takes."New value: +"Drop entries written by this author PRINCIPAL. ⚠️ NOT USABLE FROM HERE YET — the principal is never shown in these results, so there is no value you can get through this tool; a guess like 'me' filters nothing, silently. Same caveat as on memory_read."
      • changedInput schema / properties / limit / description
        Previous value: -"Page size (default: 20). Newest first."New value: +"Most entries per page (default: 20). Newest first. ⚠️ A CEILING, not a promise: the page is ALSO bounded by size, so a page of long entries stops early and returns a cursor for the rest. In rooms whose entries run long, ask for 5–10 — a large `limit` there buys nothing the size budget will not take back, and costs round trips."
      • removedInput schema / properties / since / maxLength
        Removed value: -40
      • changedInput schema / properties / until / description
        Previous value: -"Only entries created at/before this ISO-8601 instant (inclusive). Pair with `since` to read a closed window — 'what happened on Monday' — instead of paging back from now and discarding."New value: +"Only entries created at/before this ISO-8601 instant (inclusive). Pair with `since` to read a closed window — 'what happened on Monday' — instead of paging back from now."
      • removedInput schema / properties / until / maxLength
        Removed value: -40
      • removedOutput schema / properties / items / items / properties / memory_id / format
        Removed value: -"uuid"
      • removedOutput schema / properties / items / items / properties / memory_id / pattern
        Removed value: -"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"
      • changedOutput schema / properties / next_cursor / description
        Previous value: -"Pass back as cursor for the next (older) page; null = listing complete."New value: +"Pass back as cursor for the next (older) page; null = listing complete. Absent when the service sent a continuation token this client will not pass on; the text then says the token could not be displayed."
      • changedOutput schema / required
        Previous value: -[
        -  "items",
        -  "next_cursor"
        -]New value: +[
        +  "items"
        +]
    • Changedmemory_list_rooms2 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedOutput schema / properties / rooms / items / required
        Previous value: -[
        -  "room_id",
        -  "name",
        -  "address",
        -  "role",
        -  "scope",
        -  "archived"
        -]New value: +[
        +  "room_id",
        +  "address",
        +  "role",
        +  "archived"
        +]
    • Changedmemory_read11 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / domain / description
        Previous value: -"Restrict recall to a single namespace, e.g. 'project:x' (default: all)."New value: +"Restrict the search to one domain namespace (e.g. 'project:acme'). Omitting it searches your OWN domains — it does NOT include shared rooms, which are separate stores: to search a room, pass its address here (e.g. 'xroom:room_01ABC'). Find room addresses with memory_list_rooms."
      • removedInput schema / properties / domain / maxLength
        Removed value: -100
      • changedInput schema / properties / exclude_author / description
        Previous value: -"Drop memories written by this author PRINCIPAL (the server-side identity, not shown in these results). Useful when your system knows principals; a self-exclusion shortcut is planned server-side."New value: +"Drop memories written by this author PRINCIPAL — the server-side identity. ⚠️ NOT USABLE FROM HERE YET: the principal is not shown in these results, so there is no value you can obtain through this tool, and a guess like 'me' silently matches nothing and filters nothing. Only pass it if your system knows the exact principal from elsewhere (e.g. the REST API). A self-exclusion shortcut is planned."
      • changedInput schema / properties / order_by / description
        Previous value: -"'relevance' (default) keeps ranking order; 'recency' re-sorts the matched set newest-first. For a complete newest-first listing without a search, use memory_list_recent."New value: +"'relevance' (default) = ranking order. 'recency' = the matched set re-sorted newest-first. For a complete newest-first feed with no search at all, use memory_list_recent instead."
      • changedInput schema / properties / query / description
        Previous value: -"Natural-language query for saved memories. Do not include passwords, API keys, payment data, MFA codes, government IDs, or health records."New value: +"Natural-language description of what you're looking for, e.g. 'database choice for the API' or 'user's preferred testing framework'."
      • changedInput schema / properties / since / description
        Previous value: -"Only memories created at/after this ISO-8601 instant (naive = UTC) — e.g. a last-seen watermark in a shared room."New value: +"Only memories created at/after this ISO-8601 instant (naive = UTC) — e.g. your last-seen watermark in a shared room."
      • changedInput schema / properties / top_k / description
        Previous value: -"Maximum number of memories to return (1-50, default 5)."New value: +"Requested number of results (default: 5, what this connector asks for when you omit it; the engine's own default of 10 never applies, because the field is always sent). ⚠️ Not a hard cap: association expansion can return MORE than this, and the relevance floor can return fewer — raising it does not reliably widen the result set. For a complete, exactly-bounded listing use memory_list_recent instead."
      • changedInput schema / properties / top_k / maximum
        Previous value: -50New value: +500
      • removedOutput schema / properties / items / items / properties / memory_id / format
        Removed value: -"uuid"
      • removedOutput schema / properties / items / items / properties / memory_id / pattern
        Removed value: -"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$"
    • Changedmemory_stats6 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedOutput schema / properties / avg_importance
        Added value: +{
        +  "description": "Average importance of stored memories, on a scale from 0 to 1.",
        +  "type": "number"
        +}
      • addedOutput schema / properties / avg_valence
        Added value: +{
        +  "description": "Average valence of stored memories: how well recalls turned out, on a scale from -1 to 1.",
        +  "type": "number"
        +}
      • addedOutput schema / properties / episodes
        Added value: +{
        +  "description": "Number of episodic (not yet consolidated) memories.",
        +  "maximum": 9007199254740991,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedOutput schema / properties / hebbian_edges
        Added value: +{
        +  "description": "Number of Hebbian concept-to-concept links, learned from concepts that occur together as memories are stored and used.",
        +  "maximum": 9007199254740991,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedOutput schema / properties / prototypes
        Added value: +{
        +  "description": "Number of consolidated prototype memories.",
        +  "maximum": 9007199254740991,
        +  "minimum": 0,
        +  "type": "integer"
        +}
    • Changedmemory_write7 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / concepts
        Added value: +{
        +  "description": "Key concepts for linking related memories (e.g. ['deploy', 'friday', 'staging'])",
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 256,
        +  "type": "array"
        +}
      • changedInput schema / properties / content / description
        Previous value: -"The text to remember (1-10,000 chars). Do not store passwords, API keys, payment data, MFA codes, government IDs, or health records."New value: +"The memory to store as a self-contained statement, e.g. 'User prefers TypeScript strict mode' or 'Decided to deploy the API on Cloudflare Workers (2026-06)'."
      • changedInput schema / properties / domain / description
        Previous value: -"Namespace: 'general', 'user:X', 'project:Z' (default 'general')."New value: +"Namespace to organize memories (e.g. 'engineering', 'user:alice', 'project:acme'). Matched byte-for-byte — a leading space, a different case, or an invisible character opens a SEPARATE, permanent store, so reuse an exact name from memory_stats rather than retyping one. To write into a shared room, pass its address here instead (e.g. 'xroom:room_01ABC'). Find room addresses with memory_list_rooms."
      • removedOutput schema / properties / memory_id / anyOf
        Removed value: -[
        -  {
        -    "format": "uuid",
        -    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$",
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / memory_id / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / reason / description
        Previous value: -"The memory service's own explanation of this outcome, quoted as sent — when stored is false this is the ONLY statement of WHY, e.g. \"Below importance threshold (0.047 < 0.1)\". Ordinary text is preserved exactly; only control, bidi, zero-width, and repeated-whitespace characters are normalized before display. Absent when the service sent no explanation."New value: +"The memory service's own explanation of this outcome, quoted as sent — when stored is false this is the ONLY statement of WHY, e.g. \"Below importance threshold (0.047 < 0.1)\". Ordinary text is preserved exactly; only control, bidi, zero-width, and repeated-whitespace characters are normalized before display, and the value is capped at 400 characters. Absent when the service sent no explanation, or when nothing remains after that normalization."
    • Changedvault_list1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
  8. 10 tool updates
    • First observedmemory_create_room
    • First observedmemory_feedback
    • First observedmemory_invite_to_room
    • First observedmemory_join_room
    • First observedmemory_list_recent
    • First observedmemory_list_rooms
    • First observedmemory_read
    • First observedmemory_stats
    • First observedmemory_write
    • First observedvault_list

Publisher details

Operator
Mnemoverse · Publisher source
Operator website
https://mnemoverse.com
Vendor relationship
First-party · Publisher source
Restrictions
Requires a free Mnemoverse account (OAuth sign-in on first connect). Free plan: 1,000 queries/day and 10,000 stored memories, no credit card. Paid Pro and Team plans raise the limits; Enterprise adds SSO/SAML and dedicated infrastructure. · Publisher source

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    A persistent world your agents share across sessions and models. MCP memory server with semantic memory retrieval, cross-agent handoff, a hosted remote endpoint with OAuth, a free 24-hour room, and an open-source local stdio server.
    4
    2
    Apache 2.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides a self-hosted shared memory service that lets AI agents capture and recall durable facts, decisions, and context across multiple tools and MCP-capable clients.
    3
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.