@mnemoverse/mcp-memory-server 0.8.0 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -200,11 +200,16 @@ If it doesn't remember: check that the client was fully restarted and the config
200
200
  |------|-------------|
201
201
  | `memory_write` | Store a memory — insight, preference, lesson learned |
202
202
  | `memory_read` | Search memories by natural language query (optional recency ordering, time bounds, author exclusion) |
203
- | `memory_list_recent` | List newest memories first — no query; `since` watermark + cursor paging |
203
+ | `memory_list_recent` | List newest memories first — no query; `since`/`until` bounds (inclusive) + cursor paging |
204
204
  | `memory_feedback` | Rate memories as helpful or not (improves future recall) |
205
205
  | `memory_stats` | Check how many memories stored, which domains exist |
206
206
  | `memory_delete` | Permanently delete a single memory by `atom_id` |
207
207
  | `memory_delete_domain` | Wipe an entire domain (requires `confirm: true` safety interlock) |
208
+ | `memory_create_room` | Create a shared memory room; its address works as a `domain` on write/read |
209
+ | `memory_invite_to_room` | Mint a one-time invite (code + link) for a room you own |
210
+ | `memory_join_room` | Join a shared room with an invite code (`mnvr_...`) |
211
+ | `memory_list_rooms` | List rooms you own or joined, with each room's address to use as `domain` |
212
+ | `vault_list` | List Vault secrets by alias and purpose — the secret value is never returned |
208
213
 
209
214
  ## Ideas: What to Remember
210
215
 
@@ -232,15 +237,29 @@ The same API key works across all tools. Write a memory in Claude Code — read
232
237
 
233
238
  | Env Variable | Required | Default |
234
239
  |-------------|----------|---------|
235
- | `MNEMOVERSE_API_KEY` | Yes | — |
240
+ | `MNEMOVERSE_API_KEY` | For every tool call — the server starts and lists its tools without one | — |
236
241
  | `MNEMOVERSE_API_URL` | No | `https://core.mnemoverse.com/api/v1` |
237
242
 
238
243
  ## Links
239
244
 
245
+ **Setup and reference**
246
+
240
247
  - [Documentation](https://mnemoverse.com/docs/api/mcp-server)
248
+ - [Cursor](https://mnemoverse.com/docs/api/cursor) · [VS Code](https://mnemoverse.com/docs/api/vs-code) · [Claude Code](https://mnemoverse.com/docs/api/claude) · [ChatGPT](https://mnemoverse.com/docs/api/chatgpt)
241
249
  - [Python SDK](https://mnemoverse.com/docs/api/python-sdk)
242
250
  - [API Reference](https://mnemoverse.com/docs/api/reference)
243
251
  - [Console (get API key)](https://console.mnemoverse.com)
252
+
253
+ **Background reading**
254
+
255
+ - [Memory MCP servers compared](https://mnemoverse.com/docs/library/memory-mcp-servers-compared) — thirteen shipping options, with pricing and registry presence
256
+ - [How to choose a memory MCP server](https://mnemoverse.com/docs/library/memory-mcp) — the five questions that narrow the field
257
+ - [What AI agent memory is](https://mnemoverse.com/docs/library/ai-agent-memory) — the category explained
258
+ - [Is this a vector database?](https://mnemoverse.com/docs/library/not-a-vector-database) — what makes a memory layer different
259
+ - [Shared memory for multi-agent systems](https://mnemoverse.com/docs/library/shared-memory-for-multi-agent-systems) — how Rooms work and when to use them
260
+
261
+ **Project**
262
+
244
263
  - [GitHub](https://github.com/mnemoverse/mcp-memory-server)
245
264
  - [Releases](https://github.com/mnemoverse/mcp-memory-server/releases)
246
265
  - [MCP Registry entry](https://registry.modelcontextprotocol.io/v0/servers?search=mnemoverse)
@@ -248,12 +267,27 @@ The same API key works across all tools. Write a memory in Claude Code — read
248
267
 
249
268
  ## Privacy
250
269
 
251
- This server sends only what you explicitly choose to store or search to the Mnemoverse API (`core.mnemoverse.com`), authenticated with your API key. It does **not** read your AI client's conversation history, your local files, or anything you don't pass to a `memory_*` tool. Stored memories live under your account and are never sold or shared with third parties.
270
+ This server sends to the Mnemoverse API (`core.mnemoverse.com`), authenticated with your API key, what a tool call carries — and nothing else it can see. It does **not** read your AI client's conversation history, your local files, or anything you don't pass to a `memory_*` / `vault_*` tool. Stored memories live under your account; Mnemoverse never sells them and never shares them on its own. The one sharing path is the one you create yourself: inviting someone to a shared room grants their assistant access to that room's memories, bounded by the invite's scope.
271
+
272
+ What each tool sends:
273
+
274
+ | Tool | Data sent |
275
+ |---|---|
276
+ | `memory_write` | the `content`, `concepts`, and `domain` you pass |
277
+ | `memory_read` | the `query`, plus any filters: `domain`, `since`/`until`, `exclude_author`, `top_k`, `order_by` |
278
+ | `memory_list_recent` | the feed filters: `domain`, `since`/`until`, `exclude_author`, `limit`, `cursor` |
279
+ | `memory_feedback` | the `atom_ids` being rated and the `outcome` score |
280
+ | `memory_delete` / `memory_delete_domain` | the `atom_id` / `domain` being deleted |
281
+ | `memory_create_room` | the room `name` and `description` |
282
+ | `memory_invite_to_room` | the `room_id`, invite `scope`, and expiry |
283
+ | `memory_join_room` | the invite `code` |
284
+ | `memory_stats` / `memory_list_rooms` / `vault_list` | no request body — authenticated GETs |
285
+
286
+ One thing goes out that you did not explicitly request: since 0.8.1, when a search or feed comes back empty, the server sends one or two authenticated read-only GET probes (`/memory/rooms` and/or `/memory/stats`) so the empty answer can say what it did not cover. The probes carry your API key and nothing else, change no stored state, and are disclosed in the [CHANGELOG](CHANGELOG.md).
252
287
 
253
288
  | | |
254
289
  |---|---|
255
- | **Privacy Policy** | <https://mnemoverse.com/privacy.html> |
256
- | **Data sent** | the `content` / `concepts` / `domain` you pass to `memory_write`; the `query` you pass to `memory_read` |
290
+ | **Privacy Policy** | <https://mnemoverse.com/privacy> |
257
291
  | **Retention & deletion** | delete one memory with `memory_delete`, or an entire namespace with `memory_delete_domain` |
258
292
  | **Contact** | hello@mnemoverse.com |
259
293
 
package/dist/index.d.ts CHANGED
@@ -1,2 +1,24 @@
1
1
  #!/usr/bin/env node
2
- export {};
2
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
+ /**
4
+ * Two renderers, and which one a value gets is a decision, not a style choice.
5
+ *
6
+ * `safeInline` (src/render.ts) SANITISES an untrusted display string for inline
7
+ * rendering in tool output that a DIFFERENT principal's LLM will read (CN-032
8
+ * anti-injection): strip to a conservative charset, collapse whitespace, cap
9
+ * the length. The treatment `formatAuthorTag` applies to a server-stamped
10
+ * author, and the defensive second pass the machine-shaped room fields
11
+ * (address, room_id, role, scope — all charset-validated or enum-shaped in
12
+ * core) get here. It is lossy on purpose, and everything it still renders is a
13
+ * value the reader looks at and never has to retype or compare.
14
+ *
15
+ * `exactLiteral` / `domainPhrase` / `roomNamePhrase` (src/names.ts) print a
16
+ * value as a JSON string literal, or refuse to print it. Domain names because
17
+ * the engine matches them byte-for-byte, so the reader must be able to send
18
+ * the exact bytes back. Room NAMES (0.8.1) because the sanitiser did not make
19
+ * them harmless so much as it made them WRONG: "проект" echoed back as `""` on
20
+ * create, "Zoë" as "Zo" inside quotes that claim to be the name. The literal
21
+ * is one line with quotes, backslashes and invisibles escaped, so it is as
22
+ * injection-safe as the sanitised spelling was — without the renaming.
23
+ */
24
+ export declare const server: McpServer;