@mnemoverse/mcp-memory-server 0.12.1 → 0.13.0

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
@@ -292,6 +292,7 @@ If it doesn't remember: check that the client was fully restarted and the config
292
292
  | `memory_invite_to_room` | Mint an invite (code + link) for a room you own; single-use unless `max_uses` allows more |
293
293
  | `memory_join_room` | Join a shared room with an invite code (`mnvr_...`) |
294
294
  | `memory_list_rooms` | List rooms you own or joined, with each room's address to use as `domain` |
295
+ | `memory_graph` | Read the association edges around given concepts — weight, outcome valence, co-activation count |
295
296
  | `vault_list` | List Vault secrets by alias and purpose — the secret value is never returned |
296
297
 
297
298
  ### Prompts
@@ -346,9 +347,9 @@ saw and diff it against what the server serves today, by version.
346
347
  tool (or parameter) stays, its description says
347
348
  `deprecated since x.y, removed in x.z`, and the change lands only in the
348
349
  announced version, with its CHANGELOG line. A renamed parameter is accepted
349
- under both names until then (0.11: `memory_feedback`'s `atom_ids` became
350
- `memory_ids`; its removal, first announced for 0.12, lands in 0.13, since
351
- 0.12 shipped sooner than that announcement assumed). A rename is announced by naming
350
+ under both names until then (0.11 renamed `memory_feedback`'s `atom_ids` to
351
+ `memory_ids`; the old name was removed in 0.13, as announced after 0.12
352
+ shipped sooner than the first announcement assumed). A rename is announced by naming
352
353
  both the old and the new name; the version pair alone does not say what a
353
354
  client should look for. Because a MINOR may add a field but not remove one, a
354
355
  renamed annotation field is declared under both names until the announced
@@ -360,8 +361,13 @@ saw and diff it against what the server serves today, by version.
360
361
  changes those three description strings and nothing else; tool names,
361
362
  input and output schemas and annotations never vary by configuration.
362
363
 
363
- The list above is the 0.12 surface: ten tools, each declaring all four hints.
364
- The hosted connector at `mcp.mnemoverse.com/mcp` serves the same ten.
364
+ The list above is the current surface: eleven tools, each declaring all four hints.
365
+ The hosted connector at `mcp.mnemoverse.com/mcp` serves the same surface, registered
366
+ from this package at the version it pins. The list itself is published as
367
+ [`tools.json`](./tools.json), generated from the built server (name, title,
368
+ description and annotations per tool); the test suite and the release workflow
369
+ fail when it does not list what the server registers, and the `.mcpb` manifest's
370
+ tool list is derived from it.
365
371
 
366
372
  **If the hosted connector stops answering in a session.** A client can keep showing the connector as connected while every call in that session fails with "not connected". Reconnecting it on claude.ai does not revive a session that is already stuck; reconnect from inside the session instead (in Claude Code, `/mcp`, then sign in again). Meanwhile this local server, set up with an API key from the same account as in the Quick Start, reaches the same memory and does not depend on that session's sign-in.
367
373
 
@@ -465,6 +471,7 @@ What each tool sends:
465
471
  | `memory_create_room` | the room `name` and `description` |
466
472
  | `memory_invite_to_room` | the `room_id`, invite `scope`, and expiry |
467
473
  | `memory_join_room` | the invite `code` |
474
+ | `memory_graph` | the `seeds`, plus any of `depth`, `domain`, `min_weight`, `limit` you pass |
468
475
  | `memory_stats` / `memory_list_rooms` / `vault_list` | no request body — authenticated GETs |
469
476
 
470
477
  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).
package/dist/limits.d.ts CHANGED
@@ -60,6 +60,23 @@ export declare const CORE_LIMITS: {
60
60
  readonly maximum: 1000;
61
61
  readonly default: 1;
62
62
  };
63
+ readonly graphSeeds: {
64
+ readonly minItems: 1;
65
+ readonly maxItems: 20;
66
+ };
67
+ readonly graphDepth: {
68
+ readonly minimum: 1;
69
+ readonly maximum: 3;
70
+ readonly default: 1;
71
+ };
72
+ readonly graphMinWeight: {
73
+ readonly minimum: 0;
74
+ };
75
+ readonly graphLimit: {
76
+ readonly minimum: 1;
77
+ readonly maximum: 500;
78
+ readonly default: 100;
79
+ };
63
80
  };
64
81
  /** The contract this file was generated from, for the freshness check. */
65
82
  export declare const CORE_CONTRACT: {
package/dist/limits.js CHANGED
@@ -60,6 +60,23 @@ export const CORE_LIMITS = {
60
60
  maximum: 1000,
61
61
  default: 1,
62
62
  },
63
+ graphSeeds: {
64
+ minItems: 1,
65
+ maxItems: 20,
66
+ },
67
+ graphDepth: {
68
+ minimum: 1,
69
+ maximum: 3,
70
+ default: 1,
71
+ },
72
+ graphMinWeight: {
73
+ minimum: 0,
74
+ },
75
+ graphLimit: {
76
+ minimum: 1,
77
+ maximum: 500,
78
+ default: 100,
79
+ },
63
80
  };
64
81
  /** The contract this file was generated from, for the freshness check. */
65
82
  export const CORE_CONTRACT = {
@@ -1 +1 @@
1
- {"version":3,"file":"limits.js","sourceRoot":"","sources":["../src/limits.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,YAAY,EAAE;QACZ,SAAS,EAAE,CAAC;QACZ,SAAS,EAAE,KAAK;KACjB;IACD,aAAa,EAAE;QACb,QAAQ,EAAE,GAAG;KACd;IACD,MAAM,EAAE;QACN,SAAS,EAAE,GAAG;KACf;IACD,SAAS,EAAE;QACT,SAAS,EAAE,CAAC;QACZ,SAAS,EAAE,IAAI;KAChB;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,GAAG;QACZ,OAAO,EAAE,EAAE;KACZ;IACD,WAAW,EAAE;QACX,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,GAAG;QACZ,OAAO,EAAE,EAAE;KACZ;IACD,YAAY,EAAE;QACZ,SAAS,EAAE,GAAG;KACf;IACD,eAAe,EAAE;QACf,OAAO,EAAE,CAAC,CAAC;QACX,OAAO,EAAE,CAAC;KACX;IACD,QAAQ,EAAE;QACR,SAAS,EAAE,CAAC;QACZ,SAAS,EAAE,GAAG;KACf;IACD,eAAe,EAAE;QACf,SAAS,EAAE,IAAI;KAChB;IACD,mBAAmB,EAAE;QACnB,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,CAAC;KACX;IACD,aAAa,EAAE;QACb,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,CAAC;KACX;CACO,CAAC;AAEX,0EAA0E;AAC1E,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,GAAG,EAAE,0CAA0C;IAC/C,UAAU,EAAE,OAAO;CACX,CAAC"}
1
+ {"version":3,"file":"limits.js","sourceRoot":"","sources":["../src/limits.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,YAAY,EAAE;QACZ,SAAS,EAAE,CAAC;QACZ,SAAS,EAAE,KAAK;KACjB;IACD,aAAa,EAAE;QACb,QAAQ,EAAE,GAAG;KACd;IACD,MAAM,EAAE;QACN,SAAS,EAAE,GAAG;KACf;IACD,SAAS,EAAE;QACT,SAAS,EAAE,CAAC;QACZ,SAAS,EAAE,IAAI;KAChB;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,GAAG;QACZ,OAAO,EAAE,EAAE;KACZ;IACD,WAAW,EAAE;QACX,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,GAAG;QACZ,OAAO,EAAE,EAAE;KACZ;IACD,YAAY,EAAE;QACZ,SAAS,EAAE,GAAG;KACf;IACD,eAAe,EAAE;QACf,OAAO,EAAE,CAAC,CAAC;QACX,OAAO,EAAE,CAAC;KACX;IACD,QAAQ,EAAE;QACR,SAAS,EAAE,CAAC;QACZ,SAAS,EAAE,GAAG;KACf;IACD,eAAe,EAAE;QACf,SAAS,EAAE,IAAI;KAChB;IACD,mBAAmB,EAAE;QACnB,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,CAAC;KACX;IACD,aAAa,EAAE;QACb,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,CAAC;KACX;IACD,UAAU,EAAE;QACV,QAAQ,EAAE,CAAC;QACX,QAAQ,EAAE,EAAE;KACb;IACD,UAAU,EAAE;QACV,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;KACX;IACD,cAAc,EAAE;QACd,OAAO,EAAE,CAAC;KACX;IACD,UAAU,EAAE;QACV,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,GAAG;QACZ,OAAO,EAAE,GAAG;KACb;CACO,CAAC;AAEX,0EAA0E;AAC1E,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,GAAG,EAAE,0CAA0C;IAC/C,UAAU,EAAE,OAAO;CACX,CAAC"}
@@ -52,6 +52,13 @@ export interface WriteArgs {
52
52
  concepts?: string[];
53
53
  domain?: string;
54
54
  }
55
+ export interface GraphArgs {
56
+ seeds: string[];
57
+ depth?: number;
58
+ domain?: string;
59
+ min_weight?: number;
60
+ limit?: number;
61
+ }
55
62
  /**
56
63
  * Supplier-vouched authorship for a write (STEP4-5, owner 2026-09-24),
57
64
  * mirroring core's `ProvenanceWriteSchema` field for field
@@ -89,6 +96,21 @@ export declare function searchedScope(domain?: string): string | undefined;
89
96
  export declare function readRequestBody(a: ReadArgs): Record<string, unknown>;
90
97
  /** memory_list_recent. */
91
98
  export declare function recentRequestBody(a: RecentArgs): Record<string, unknown>;
99
+ /**
100
+ * memory_graph. `depth` and `limit` are sent with an explicit default (1 and
101
+ * 100), the same convention `readRequestBody` uses for `top_k` — this
102
+ * server's own default rather than a field left out for the engine's to
103
+ * apply, so it stays stated here even though, unlike `top_k`, both currently
104
+ * match the engine's own (GraphRequestSchema `depth.default`/`limit.default`).
105
+ *
106
+ * `min_weight` is `??`, never `||`: `0.0` is a meaningful, contract-honoured
107
+ * value (an explicit floor of zero, honoured at every hop with no server
108
+ * override — GraphRequestSchema), not a falsy placeholder for "unset". It is
109
+ * omitted from the body entirely when the caller passed none, so core applies
110
+ * its OWN default (no floor at depth 1; its own 0.05 floor from depth 2) —
111
+ * this package does not invent one.
112
+ */
113
+ export declare function graphRequestBody(a: GraphArgs): Record<string, unknown>;
92
114
  /**
93
115
  * memory_write. `"general"` is the server-side default made explicit, and is
94
116
  * what 0.8.0 sent — NOT a normalisation of the caller's value.
package/dist/requests.js CHANGED
@@ -71,6 +71,29 @@ export function recentRequestBody(a) {
71
71
  cursor: a.cursor || undefined,
72
72
  };
73
73
  }
74
+ /**
75
+ * memory_graph. `depth` and `limit` are sent with an explicit default (1 and
76
+ * 100), the same convention `readRequestBody` uses for `top_k` — this
77
+ * server's own default rather than a field left out for the engine's to
78
+ * apply, so it stays stated here even though, unlike `top_k`, both currently
79
+ * match the engine's own (GraphRequestSchema `depth.default`/`limit.default`).
80
+ *
81
+ * `min_weight` is `??`, never `||`: `0.0` is a meaningful, contract-honoured
82
+ * value (an explicit floor of zero, honoured at every hop with no server
83
+ * override — GraphRequestSchema), not a falsy placeholder for "unset". It is
84
+ * omitted from the body entirely when the caller passed none, so core applies
85
+ * its OWN default (no floor at depth 1; its own 0.05 floor from depth 2) —
86
+ * this package does not invent one.
87
+ */
88
+ export function graphRequestBody(a) {
89
+ return {
90
+ seeds: a.seeds,
91
+ depth: a.depth ?? 1,
92
+ domain: searchedScope(a.domain),
93
+ ...(a.min_weight === undefined ? {} : { min_weight: a.min_weight }),
94
+ limit: a.limit ?? 100,
95
+ };
96
+ }
74
97
  /**
75
98
  * memory_write. `"general"` is the server-side default made explicit, and is
76
99
  * what 0.8.0 sent — NOT a normalisation of the caller's value.
@@ -1 +1 @@
1
- {"version":3,"file":"requests.js","sourceRoot":"","sources":["../src/requests.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,4EAA4E;AAC5E,4EAA4E;AAC5E,6EAA6E;AAC7E,wDAAwD;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAmDvC;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,MAAe;IAC3C,OAAO,MAAM,IAAI,SAAS,CAAC;AAC7B,CAAC;AAED;mEACmE;AACnE,MAAM,UAAU,eAAe,CAAC,CAAW;IACzC,OAAO;QACL,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC;QACnB,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC;QAC/B,oBAAoB,EAAE,IAAI;QAC1B,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtC,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAClE,CAAC;AACJ,CAAC;AAED,0BAA0B;AAC1B,MAAM,UAAU,iBAAiB,CAAC,CAAa;IAC7C,OAAO;QACL,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,SAAS;QAC3B,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,SAAS;QAC3B,cAAc,EAAE,CAAC,CAAC,cAAc,IAAI,SAAS;QAC7C,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;QACpB,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,SAAS;KAC9B,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,gBAAgB,CAAC,CAAY,EAAE,MAAoB;IACjE,OAAO;QACL,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,EAAE;QAC1B,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,SAAS;QAC7B,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;KAC5C,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAM,UAAU,oBAAoB,CAClC,GAAW;IAEX,MAAM,qBAAqB,GAAG,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjE,MAAM,qBAAqB,GAAG,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7D,IAAI,CAAC,qBAAqB,IAAI,CAAC,qBAAqB;QAAE,OAAO,SAAS,CAAC;IACvE,OAAO;QACL,QAAQ,EACN,mEAAmE;YACnE,kEAAkE;YAClE,sEAAsE;YACtE,mEAAmE;YACnE,yCAAyC,QAAQ,kBAAkB;YACnE,qEAAqE;YACrE,mEAAmE;YACnE,gCAAgC;QAClC,UAAU,EACR,+DAA+D;YAC/D,yDAAyD;YACzD,gDAAgD,QAAQ,cAAc;YACtE,kEAAkE;YAClE,mDAAmD;KACtD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"requests.js","sourceRoot":"","sources":["../src/requests.ts"],"names":[],"mappings":"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"}
@@ -22,8 +22,22 @@ import type { ReadScope } from "./scope.js";
22
22
  * - No delete tool on this surface (2026-08-20): deletion was withdrawn to an
23
23
  * administrative REST-only operation, so the instructions point a model at
24
24
  * writing a corrected memory instead of asking to delete one.
25
+ *
26
+ * memory_graph (0.13): mentioning the eleventh tool here pushed the string
27
+ * past 800 at 833 chars. Two sentences were shortened to make room, both
28
+ * with margin under the cap left afterward (793 total) rather than trimmed to
29
+ * the wire:
30
+ * - the room sentence dropped its "(memory_list_rooms)" parenthetical —
31
+ * that tool name is not one of the ones this file's own tests require
32
+ * present (`test/descriptions.test.ts` pins
33
+ * "...pass its address as domain" and "unscoped reads never cover rooms"
34
+ * as two independent substrings, not the text between them, so removing
35
+ * only the aside between those two anchors keeps both intact);
36
+ * - "deletion is administrative, not a tool" lost its last three words —
37
+ * the sentence still states the fact ("write a fresh one" and
38
+ * "administrative" both survive, and both are separately asserted).
25
39
  */
26
- export declare const SERVER_INSTRUCTIONS = "You own this long-term memory. It persists across sessions and every AI tool this user connects. Use it as a habit: memory_read before answering anything that may have come up; memory_write the moment you learn a durable fact, preference or decision \u2014 don't wait to be asked. Shared rooms are SEPARATE stores: to read one, pass its address as domain (memory_list_rooms); unscoped reads never cover rooms. Rate recalls with memory_feedback; memory_stats shows counts; memory_list_recent is newest-first. To correct a wrong memory, write a fresh one \u2014 deletion is administrative, not a tool. Rooms: memory_create_room, memory_invite_to_room, memory_join_room. vault_list names secrets by alias, never values. Never store passwords, API keys, payment data, MFA codes, government IDs, or health records.";
40
+ export declare const SERVER_INSTRUCTIONS = "You own this long-term memory. It persists across sessions and every AI tool this user connects. Use it as a habit: memory_read before answering anything that may have come up; memory_write the moment you learn a durable fact, preference or decision \u2014 don't wait to be asked. Shared rooms are SEPARATE stores: to read one, pass its address as domain; unscoped reads never cover rooms. Rate recalls with memory_feedback; memory_stats shows counts; memory_list_recent is newest-first; memory_graph shows links. To correct a wrong memory, write a fresh one \u2014 deletion is administrative. Rooms: memory_create_room, memory_invite_to_room, memory_join_room. vault_list names secrets by alias, never values. Never store passwords, API keys, payment data, MFA codes, government IDs, or health records.";
27
41
  /** The pre-existing zero-result message — kept as the fail-open fallback. */
28
42
  export declare const NO_MATCH_MESSAGE = "No memories found for this query.";
29
43
  /** Hint for an UNSCOPED no-match against a non-empty store: widen the query.
package/dist/teaching.js CHANGED
@@ -21,8 +21,22 @@
21
21
  * - No delete tool on this surface (2026-08-20): deletion was withdrawn to an
22
22
  * administrative REST-only operation, so the instructions point a model at
23
23
  * writing a corrected memory instead of asking to delete one.
24
+ *
25
+ * memory_graph (0.13): mentioning the eleventh tool here pushed the string
26
+ * past 800 at 833 chars. Two sentences were shortened to make room, both
27
+ * with margin under the cap left afterward (793 total) rather than trimmed to
28
+ * the wire:
29
+ * - the room sentence dropped its "(memory_list_rooms)" parenthetical —
30
+ * that tool name is not one of the ones this file's own tests require
31
+ * present (`test/descriptions.test.ts` pins
32
+ * "...pass its address as domain" and "unscoped reads never cover rooms"
33
+ * as two independent substrings, not the text between them, so removing
34
+ * only the aside between those two anchors keeps both intact);
35
+ * - "deletion is administrative, not a tool" lost its last three words —
36
+ * the sentence still states the fact ("write a fresh one" and
37
+ * "administrative" both survive, and both are separately asserted).
24
38
  */
25
- export const SERVER_INSTRUCTIONS = "You own this long-term memory. It persists across sessions and every AI tool this user connects. Use it as a habit: memory_read before answering anything that may have come up; memory_write the moment you learn a durable fact, preference or decision — don't wait to be asked. Shared rooms are SEPARATE stores: to read one, pass its address as domain (memory_list_rooms); unscoped reads never cover rooms. Rate recalls with memory_feedback; memory_stats shows counts; memory_list_recent is newest-first. To correct a wrong memory, write a fresh one — deletion is administrative, not a tool. Rooms: memory_create_room, memory_invite_to_room, memory_join_room. vault_list names secrets by alias, never values. Never store passwords, API keys, payment data, MFA codes, government IDs, or health records.";
39
+ export const SERVER_INSTRUCTIONS = "You own this long-term memory. It persists across sessions and every AI tool this user connects. Use it as a habit: memory_read before answering anything that may have come up; memory_write the moment you learn a durable fact, preference or decision — don't wait to be asked. Shared rooms are SEPARATE stores: to read one, pass its address as domain; unscoped reads never cover rooms. Rate recalls with memory_feedback; memory_stats shows counts; memory_list_recent is newest-first; memory_graph shows links. To correct a wrong memory, write a fresh one — deletion is administrative. Rooms: memory_create_room, memory_invite_to_room, memory_join_room. vault_list names secrets by alias, never values. Never store passwords, API keys, payment data, MFA codes, government IDs, or health records.";
26
40
  /** The pre-existing zero-result message — kept as the fail-open fallback. */
27
41
  export const NO_MATCH_MESSAGE = "No memories found for this query.";
28
42
  /** Hint for an UNSCOPED no-match against a non-empty store: widen the query.
@@ -1 +1 @@
1
- {"version":3,"file":"teaching.js","sourceRoot":"","sources":["../src/teaching.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"teaching.js","sourceRoot":"","sources":["../src/teaching.ts"],"names":[],"mappings":"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"}
package/dist/tools.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * The ten memory tools, as one function any MCP server can register.
2
+ * The eleven tools (ten memory tools and vault_list), as one function any MCP server can register.
3
3
  *
4
4
  * ADR-025 (mnemoverse-core): this package defines the MCP surface, and every
5
5
  * server that exposes Mnemoverse memory over MCP registers the SAME tools from
@@ -128,7 +128,7 @@ export declare function structured(text: string, data: Record<string, unknown>):
128
128
  structuredContent: Record<string, unknown>;
129
129
  };
130
130
  /**
131
- * Register the ten memory tools on `server`. Call once per server instance.
131
+ * Register the eleven tools on `server`. Call once per server instance.
132
132
  * `deps.apiFetch` is the only way the tools reach the API.
133
133
  */
134
134
  export declare function registerMemoryTools(server: McpServer, deps: MemoryToolDeps): void;