@t0ken.ai/memoryx-mcp-server 2.2.8 → 2.2.10

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
@@ -41,6 +41,53 @@ Add to `~/.cursor/mcp.json` or VS Code MCP config:
41
41
 
42
42
  **That's it!** The server auto-registers on first use - no additional configuration needed.
43
43
 
44
+ ### Configure Your Agent (System Prompt / Rules)
45
+
46
+ The MCP server only provides the **tools**; the AI will not automatically know when or how to save memory. You must **put the following constraints into your AI’s system prompt or rules** (e.g. Cursor Rules, VS Code rules, or Claude’s custom instructions) so the agent is instructed to call `save_memory` at the right times.
47
+
48
+ **Where to add:**
49
+ - **Cursor**: `.cursor/rules/*.mdc` or project/global rules
50
+ - **VS Code / other MCP hosts**: system prompt or instructions in settings
51
+ - **Claude Desktop**: Custom instructions / system prompt in config
52
+
53
+ **Suggested rule: “MemoryX Auto-Memory Rules”**
54
+
55
+ ```markdown
56
+ # MemoryX Auto-Memory Rules
57
+
58
+ ## Task Completion Flow
59
+ 1. Complete task code changes
60
+ 2. **MUST** call `save_memory` tool to save task summary
61
+ 3. **THEN** call `attempt_completion` (or your completion flow) to report
62
+
63
+ ## save_memory Content Requirements
64
+ - What task was completed
65
+ - Which files were modified
66
+ - Important design decisions or lessons learned
67
+ - Next steps (if any)
68
+
69
+ ## When to Save (Triggers)
70
+ - **Task completion** – Summarize and save before marking done
71
+ - **Important design decisions** – Architecture, tech choices, API/schema changes
72
+ - **User requests** – "remember", "don't forget", "note this"
73
+ - **User preferences** – "I like", "I hate", "I usually..."
74
+ - **Cross-session info** – Anything that should persist to the next session
75
+ - **End of conversation** – Optional: add a rule like “At end of long sessions, call save_memory with a short summary of key points”
76
+
77
+ ## Timed / Scheduled Saving
78
+ If you want the agent to save memory on a schedule (e.g. every N messages or at idle), add to your system prompt or rules, for example:
79
+ - “After every 10 user messages, call save_memory with a 1–2 sentence summary of the current topic if it’s substantive.”
80
+ - “When the user has not sent a message for 5 minutes and the conversation had substance, offer to save a brief summary via save_memory.”
81
+
82
+ ## How to Save
83
+ - Call the **save_memory** tool with:
84
+ - **content**: One atomic fact or short summary (self-contained; use absolute dates like YYYY-MM-DD; avoid “it”/“this”—use explicit referents).
85
+ - **metadata** (optional): `category` (semantic | episodic | procedural | emotional | reflective), `tags` (string array).
86
+ - One fact per call; for multiple points, call save_memory once per fact.
87
+ ```
88
+
89
+ Copy or adapt the above into your rules so the agent consistently saves memory at the right moments.
90
+
44
91
  ### Configure Claude Desktop
45
92
 
46
93
  **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
@@ -61,7 +108,7 @@ Add to `~/.cursor/mcp.json` or VS Code MCP config:
61
108
 
62
109
  ### save_memory
63
110
 
64
- Save information to long-term memory.
111
+ Save information to long-term memory. **Important:** The agent will not call this automatically—put the [MemoryX Auto-Memory Rules](#configure-your-agent-system-prompt--rules) (when to save, task flow, content requirements) into your **system prompt or rules** so the agent is constrained to use it.
65
112
 
66
113
  **⚡ AUTO-SAVE TRIGGERS - Always call save_memory when:**
67
114
 
package/dist/index.js CHANGED
@@ -55,7 +55,7 @@ const path = __importStar(require("path"));
55
55
  const os = __importStar(require("os"));
56
56
  const DEFAULT_API_BASE = "https://t0ken.ai/api";
57
57
  // MCP Server 版本号 - 由 prebuild 脚本自动从 package.json 同步
58
- const VERSION = "2.2.8";
58
+ const VERSION = "2.2.10";
59
59
  // Detected client type from initialize request
60
60
  let detectedClient = 'mcp';
61
61
  // Lazy-loaded SDK instance
@@ -131,20 +131,23 @@ async function saveMemory(content, metadata = {}) {
131
131
  return { success: false, message: String(e), queued: 0 };
132
132
  }
133
133
  }
134
- async function searchMemory(query, limit = 5) {
134
+ async function searchMemory(query, limit = 5, options) {
135
135
  if (!query || query.length < 2) {
136
136
  return { memories: [], isLimited: false, remainingQuota: 0 };
137
137
  }
138
138
  try {
139
139
  const sdk = await getSDK();
140
- const result = await sdk.search(query, limit);
140
+ const result = await sdk.search(query, limit, options);
141
+ const mapOne = (m) => ({
142
+ id: m.id,
143
+ content: m.memory || m.content,
144
+ category: m.category || "other",
145
+ score: m.score ?? 0.5
146
+ });
141
147
  return {
142
- memories: (result.data || []).map((m) => ({
143
- id: m.id,
144
- content: m.memory || m.content,
145
- category: m.category || "other",
146
- score: m.score || 0.5
147
- })),
148
+ memories: (result.data || []).map(mapOne),
149
+ related_memories: (result.related_memories || []).map(mapOne),
150
+ extracted_entities: result.extracted_entities || undefined,
148
151
  isLimited: false,
149
152
  remainingQuota: result.remaining_quota ?? -1
150
153
  };
@@ -154,10 +157,10 @@ async function searchMemory(query, limit = 5) {
154
157
  return { memories: [], isLimited: false, remainingQuota: 0 };
155
158
  }
156
159
  }
157
- async function listMemory(limit = 20) {
160
+ async function listMemory(limit = 20, offset = 0, options) {
158
161
  try {
159
162
  const sdk = await getSDK();
160
- const result = await sdk.list(limit, 0);
163
+ const result = await sdk.list(limit, offset, options);
161
164
  return {
162
165
  memories: (result.data || []).map((m) => ({
163
166
  id: m.id,
@@ -224,7 +227,7 @@ const server = new index_js_1.Server({
224
227
  },
225
228
  });
226
229
  // 检测 MCP 客户端类型
227
- // 支持的 IDE: Cline, Cursor, Windsurf, Claude, Zen, Trea, Qoder, Kiro, OpenCode, CodeBuddy, Codeium, Tabby, Kimi, ZenMux, Comate
230
+ // 支持的 IDE: Cline, Cursor, Windsurf, Claude, Zen, Trea, Qoder, Kiro, OpenCode, CodeBuddy, Codeium, Tabby, Kimi, ZenMux, Comate, Kilo, Qwen, Codex
228
231
  server.setRequestHandler(types_js_1.InitializeRequestSchema, async (request) => {
229
232
  const clientName = (request.params?.clientInfo?.name || '').toLowerCase();
230
233
  // 检测客户端类型(忽略大小写)
@@ -273,6 +276,15 @@ server.setRequestHandler(types_js_1.InitializeRequestSchema, async (request) =>
273
276
  else if (clientName.includes('tabby')) {
274
277
  detectedClient = 'tabby';
275
278
  }
279
+ else if (clientName.includes('kilo')) {
280
+ detectedClient = 'kilo';
281
+ }
282
+ else if (clientName.includes('qwen')) {
283
+ detectedClient = 'qwen';
284
+ }
285
+ else if (clientName.includes('codex')) {
286
+ detectedClient = 'codex';
287
+ }
276
288
  else if (clientName) {
277
289
  // 未知客户端,使用其名称
278
290
  detectedClient = clientName.split(/[^\w]/)[0]; // 取第一个单词
@@ -363,15 +375,13 @@ server.setRequestHandler(types_js_1.GetPromptRequestSchema, async (request) => {
363
375
 
364
376
  Task: ${task}
365
377
 
366
- Save to memory with save_memory tool:
367
- - What was done
368
- - Key files changed
369
- - Important decisions or learnings
370
- - Next steps if any
371
-
372
- Use category "reflective" and tags: task-complete, ${task}.
373
- Keep under 50 words. Then proceed to attempt_completion.
374
- DO NOT skip this step.`
378
+ Call save_memory for EACH atomic fact (one fact per call—do not merge). RULES:
379
+ - Use ONLY absolute dates (YYYY-MM-DD). NEVER "yesterday", "last week", "recently".
380
+ - If content has "it"/"this"/"that", rewrite with explicit referents (e.g. "it" → "[Component X]").
381
+ - metadata.category MUST be one of: semantic | episodic | procedural | emotional | reflective. Use "reflective" for task summaries.
382
+ - Save: what was done, key files changed, important decisions, next steps. Each as a separate save_memory call if multiple facts.
383
+ - Tags: task-complete, ${task}. Keep each fact under 50 words.
384
+ Then proceed to attempt_completion. DO NOT skip saving.`
375
385
  }
376
386
  }
377
387
  ]
@@ -386,14 +396,12 @@ DO NOT skip this step.`
386
396
  type: "text",
387
397
  text: `⚡ AUTO-ARCHIVE: Review this conversation about ${topic} and SAVE to memory immediately.
388
398
 
389
- Extract and save:
390
- 1. Key design decisions (architecture, tech choices, file structure)
391
- 2. What was accomplished (changes made, files modified)
392
- 3. Important learnings or gotchas discovered
393
- 4. Pending tasks or next steps
394
-
395
- Use save_memory tool NOW with category "reflective" and tags: ${topic}, session-summary.
396
- Keep summary under 100 words. DO NOT skip this step.`
399
+ Call save_memory for EACH atomic fact (one fact per call—do not merge into one). RULES you MUST follow:
400
+ - Dates: ONLY absolute (YYYY-MM-DD). NEVER "yesterday", "last week", "recently".
401
+ - Context: Replace "it"/"this"/"that" with explicit referents so each fact is self-contained.
402
+ - metadata.category MUST be one of: semantic | episodic | procedural | emotional | reflective. Use "reflective" for session summaries.
403
+ - Extract and save separately: (1) Key design decisions (2) What was accomplished (3) Learnings/gotchas (4) Pending tasks. Each fact = one save_memory call.
404
+ - Tags: ${topic}, session-summary. Each fact under 100 words total. DO NOT skip this step.`
397
405
  }
398
406
  }
399
407
  ]
@@ -420,17 +428,17 @@ server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => {
420
428
  tools: [
421
429
  {
422
430
  name: "save_memory",
423
- description: "Save information to long-term memory. AUTO-SAVE TRIGGERS - You MUST call this tool when: (1) IMPORTANT DESIGN DECISIONS - architecture choices, tech stack, file structure, API design, database schema - save immediately; (2) TASK COMPLETION - summarize what was done, key changes, learnings discovered; (3) USER REQUESTS - 'remember', 'note this', 'don't forget', corrections, preferences (I like/hate/usually...); (4) CROSS-SESSION INFO - anything needed in future sessions; (5) END OF CONVERSATION - generate a 100-word summary of key decisions and outcomes. DO NOT wait for user to ask - proactively save important information. Categories (metadata.category): semantic (facts), episodic (events), procedural (how-to), emotional (feelings), reflective (insights).",
431
+ description: "Save one atomic fact to long-term memory. RULES YOU MUST FOLLOW: (1) ONE fact per call—do not merge multiple facts. (2) DATES: Use ONLY absolute dates (YYYY-MM-DD or ISO 8601). NEVER use 'yesterday', 'last week', 'recently', or any relative time. (3) CONTEXT COMPLETION (mandatory): If the fact contains pronouns or references like 'it', 'this', 'that', 'the project'—you MUST rewrite so the fact is self-contained with explicit referents. Example: 'it broke' '[Device] MacBook Pro 2023 screen damaged'. Content that is not self-contained will be stored incorrectly. (4) metadata.category MUST be one of: semantic | episodic | procedural | emotional | reflective. (5) Call save_memory when: user says 'remember this', design/code decisions, task completion, or end-of-session summary (≤100 words). (6) For code-related facts, include concrete anchors when possible: class name, method/function name, file path, library/SDK name, config key, error type—e.g. 'UserService.login in src/auth/user.service.ts uses Redis' rather than 'we fixed login'—so memory can be recalled by code structure.",
424
432
  inputSchema: {
425
433
  type: "object",
426
434
  properties: {
427
435
  content: {
428
436
  type: "string",
429
- description: "Content to remember. For end-of-conversation summaries, keep within 100 words."
437
+ description: "REQUIRED. One atomic fact, self-contained. MUST use absolute dates (YYYY-MM-DD). MUST resolve any 'it/this/that' to explicit nouns. Session summary: max 100 words."
430
438
  },
431
439
  metadata: {
432
440
  type: "object",
433
- description: "Optional metadata. Supported fields: category (semantic/episodic/procedural/emotional/reflective), tags (array of strings)"
441
+ description: "category (required): semantic|episodic|procedural|emotional|reflective. tags (optional): string array."
434
442
  }
435
443
  },
436
444
  required: ["content"]
@@ -438,18 +446,32 @@ server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => {
438
446
  },
439
447
  {
440
448
  name: "search_memory",
441
- description: "Search historical memories. ALWAYS call BEFORE responding to: user questions about preferences/history, topics relating to past conversations, any personalized response. Workflow: search → review results → generate informed response.",
449
+ description: "Search historical memories. Direct results = vector DB; related = graph DB. Call BEFORE answering about preferences/history or any personalized response. Workflow: search → review results → respond. Use absolute time in time_filter (YYYY-MM-DD). Returned id is the memory_id for delete_memory.",
442
450
  inputSchema: {
443
451
  type: "object",
444
452
  properties: {
445
453
  query: {
446
454
  type: "string",
447
- description: "Search keywords or natural language question"
455
+ description: "Search intent: keywords or natural language question"
448
456
  },
449
457
  limit: {
450
458
  type: "number",
451
- description: "Number of results to return, default 5",
459
+ description: "Max results, default 5",
452
460
  default: 5
461
+ },
462
+ time_filter: {
463
+ type: "object",
464
+ description: "Optional. start/end in YYYY-MM-DD HH:mm:ss or ISO 8601"
465
+ },
466
+ categories: {
467
+ type: "array",
468
+ items: { type: "string" },
469
+ description: "Optional. Filter by category (semantic/episodic/procedural/emotional/reflective)"
470
+ },
471
+ tags: {
472
+ type: "array",
473
+ items: { type: "string" },
474
+ description: "Optional. Filter by tags"
453
475
  }
454
476
  },
455
477
  required: ["query"]
@@ -457,27 +479,27 @@ server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => {
457
479
  },
458
480
  {
459
481
  name: "list_memory",
460
- description: "List recent memories in chronological order (newest first). Use this to: (1) Review what has been stored; (2) Get context at the start of a conversation; (3) Find specific memories when you're unsure of keywords. Returns memory id, content, and category.",
482
+ description: "List recent memories by creation time (newest first). No search/lookup—only time-ordered listing. To delete a specific memory, use search_memory to get its id then delete_memory. Returns id (use as memory_id for delete), content, category.",
461
483
  inputSchema: {
462
484
  type: "object",
463
485
  properties: {
464
- limit: {
465
- type: "number",
466
- description: "Number of memories to return, default 20",
467
- default: 20
468
- }
486
+ limit: { type: "number", description: "Max items, default 20", default: 20 },
487
+ offset: { type: "number", description: "Pagination offset, default 0", default: 0 },
488
+ time_filter: { type: "object", description: "Optional. start/end YYYY-MM-DD HH:mm:ss" },
489
+ categories: { type: "array", items: { type: "string" }, description: "Optional. Filter by category" },
490
+ tags: { type: "array", items: { type: "string" }, description: "Optional. Filter by tags" }
469
491
  }
470
492
  }
471
493
  },
472
494
  {
473
495
  name: "delete_memory",
474
- description: "Delete a specific memory by ID. Use when: (1) User explicitly asks to forget something; (2) You find outdated or incorrect information. Requires memory_id from list_memory or search_memory results.",
496
+ description: "Delete a memory by id. memory_id MUST be the id returned by search_memory or list_memory—do not use any other value. Use when user asks to forget something or information is outdated.",
475
497
  inputSchema: {
476
498
  type: "object",
477
499
  properties: {
478
500
  memory_id: {
479
501
  type: "string",
480
- description: "The ID of the memory to delete"
502
+ description: "Id from search_memory or list_memory result (required)"
481
503
  }
482
504
  },
483
505
  required: ["memory_id"]
@@ -513,7 +535,10 @@ server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
513
535
  case "search_memory": {
514
536
  const query = args?.query;
515
537
  const limit = args?.limit || 5;
516
- const result = await searchMemory(query, limit);
538
+ const time_filter = args?.time_filter;
539
+ const categories = args?.categories;
540
+ const tags = args?.tags;
541
+ const result = await searchMemory(query, limit, { time_filter, categories, tags });
517
542
  return {
518
543
  content: [
519
544
  {
@@ -525,7 +550,11 @@ server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
525
550
  }
526
551
  case "list_memory": {
527
552
  const limit = args?.limit || 20;
528
- const result = await listMemory(limit);
553
+ const offset = args?.offset || 0;
554
+ const time_filter = args?.time_filter;
555
+ const categories = args?.categories;
556
+ const tags = args?.tags;
557
+ const result = await listMemory(limit, offset, { time_filter, categories, tags });
529
558
  return {
530
559
  content: [
531
560
  {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@t0ken.ai/memoryx-mcp-server",
3
- "version": "2.2.8",
3
+ "version": "2.2.10",
4
4
  "description": "MemoryX MCP Server for Cursor/VS Code/Claude Desktop (powered by @t0ken.ai/memoryx-sdk)",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -24,7 +24,7 @@
24
24
  "license": "MIT",
25
25
  "dependencies": {
26
26
  "@modelcontextprotocol/sdk": "^1.0.0",
27
- "@t0ken.ai/memoryx-sdk": "^1.4.9"
27
+ "@t0ken.ai/memoryx-sdk": "^1.5.2"
28
28
  },
29
29
  "devDependencies": {
30
30
  "@types/node": "^20.0.0",
package/src/index.ts CHANGED
@@ -32,7 +32,7 @@ import * as os from "os";
32
32
  const DEFAULT_API_BASE = "https://t0ken.ai/api";
33
33
 
34
34
  // MCP Server 版本号 - 由 prebuild 脚本自动从 package.json 同步
35
- const VERSION = "2.2.8";
35
+ const VERSION = "2.2.10";
36
36
 
37
37
  // Detected client type from initialize request
38
38
  let detectedClient: string = 'mcp';
@@ -125,8 +125,14 @@ async function saveMemory(content: string, metadata: Record<string, any> = {}):
125
125
  }
126
126
  }
127
127
 
128
- async function searchMemory(query: string, limit: number = 5): Promise<{
128
+ async function searchMemory(
129
+ query: string,
130
+ limit: number = 5,
131
+ options?: { time_filter?: { start?: string; end?: string }; categories?: string[]; tags?: string[] }
132
+ ): Promise<{
129
133
  memories: any[];
134
+ related_memories?: any[];
135
+ extracted_entities?: { name: string }[];
130
136
  isLimited: boolean;
131
137
  remainingQuota: number;
132
138
  upgradeHint?: string;
@@ -134,18 +140,19 @@ async function searchMemory(query: string, limit: number = 5): Promise<{
134
140
  if (!query || query.length < 2) {
135
141
  return { memories: [], isLimited: false, remainingQuota: 0 };
136
142
  }
137
-
138
143
  try {
139
144
  const sdk = await getSDK();
140
- const result = await sdk.search(query, limit);
141
-
145
+ const result = await (sdk as any).search(query, limit, options);
146
+ const mapOne = (m: any) => ({
147
+ id: m.id,
148
+ content: m.memory || m.content,
149
+ category: m.category || "other",
150
+ score: m.score ?? 0.5
151
+ });
142
152
  return {
143
- memories: (result.data || []).map((m: any) => ({
144
- id: m.id,
145
- content: m.memory || m.content,
146
- category: m.category || "other",
147
- score: m.score || 0.5
148
- })),
153
+ memories: (result.data || []).map(mapOne),
154
+ related_memories: (result.related_memories || []).map(mapOne),
155
+ extracted_entities: result.extracted_entities || undefined,
149
156
  isLimited: false,
150
157
  remainingQuota: result.remaining_quota ?? -1
151
158
  };
@@ -155,14 +162,14 @@ async function searchMemory(query: string, limit: number = 5): Promise<{
155
162
  }
156
163
  }
157
164
 
158
- async function listMemory(limit: number = 20): Promise<{
159
- memories: any[];
160
- total: number;
161
- }> {
165
+ async function listMemory(
166
+ limit: number = 20,
167
+ offset: number = 0,
168
+ options?: { time_filter?: { start?: string; end?: string }; categories?: string[]; tags?: string[] }
169
+ ): Promise<{ memories: any[]; total: number }> {
162
170
  try {
163
171
  const sdk = await getSDK();
164
- const result = await sdk.list(limit, 0);
165
-
172
+ const result = await (sdk as any).list(limit, offset, options);
166
173
  return {
167
174
  memories: (result.data || []).map((m: any) => ({
168
175
  id: m.id,
@@ -244,7 +251,7 @@ const server = new Server(
244
251
  );
245
252
 
246
253
  // 检测 MCP 客户端类型
247
- // 支持的 IDE: Cline, Cursor, Windsurf, Claude, Zen, Trea, Qoder, Kiro, OpenCode, CodeBuddy, Codeium, Tabby, Kimi, ZenMux, Comate
254
+ // 支持的 IDE: Cline, Cursor, Windsurf, Claude, Zen, Trea, Qoder, Kiro, OpenCode, CodeBuddy, Codeium, Tabby, Kimi, ZenMux, Comate, Kilo, Qwen, Codex
248
255
  server.setRequestHandler(InitializeRequestSchema, async (request) => {
249
256
  const clientName = (request.params?.clientInfo?.name || '').toLowerCase();
250
257
 
@@ -279,6 +286,12 @@ server.setRequestHandler(InitializeRequestSchema, async (request) => {
279
286
  detectedClient = 'codeium';
280
287
  } else if (clientName.includes('tabby')) {
281
288
  detectedClient = 'tabby';
289
+ } else if (clientName.includes('kilo')) {
290
+ detectedClient = 'kilo';
291
+ } else if (clientName.includes('qwen')) {
292
+ detectedClient = 'qwen';
293
+ } else if (clientName.includes('codex')) {
294
+ detectedClient = 'codex';
282
295
  } else if (clientName) {
283
296
  // 未知客户端,使用其名称
284
297
  detectedClient = clientName.split(/[^\w]/)[0]; // 取第一个单词
@@ -376,15 +389,13 @@ server.setRequestHandler(GetPromptRequestSchema, async (request) => {
376
389
 
377
390
  Task: ${task}
378
391
 
379
- Save to memory with save_memory tool:
380
- - What was done
381
- - Key files changed
382
- - Important decisions or learnings
383
- - Next steps if any
384
-
385
- Use category "reflective" and tags: task-complete, ${task}.
386
- Keep under 50 words. Then proceed to attempt_completion.
387
- DO NOT skip this step.`
392
+ Call save_memory for EACH atomic fact (one fact per call—do not merge). RULES:
393
+ - Use ONLY absolute dates (YYYY-MM-DD). NEVER "yesterday", "last week", "recently".
394
+ - If content has "it"/"this"/"that", rewrite with explicit referents (e.g. "it" → "[Component X]").
395
+ - metadata.category MUST be one of: semantic | episodic | procedural | emotional | reflective. Use "reflective" for task summaries.
396
+ - Save: what was done, key files changed, important decisions, next steps. Each as a separate save_memory call if multiple facts.
397
+ - Tags: task-complete, ${task}. Keep each fact under 50 words.
398
+ Then proceed to attempt_completion. DO NOT skip saving.`
388
399
  }
389
400
  }
390
401
  ]
@@ -400,14 +411,12 @@ DO NOT skip this step.`
400
411
  type: "text",
401
412
  text: `⚡ AUTO-ARCHIVE: Review this conversation about ${topic} and SAVE to memory immediately.
402
413
 
403
- Extract and save:
404
- 1. Key design decisions (architecture, tech choices, file structure)
405
- 2. What was accomplished (changes made, files modified)
406
- 3. Important learnings or gotchas discovered
407
- 4. Pending tasks or next steps
408
-
409
- Use save_memory tool NOW with category "reflective" and tags: ${topic}, session-summary.
410
- Keep summary under 100 words. DO NOT skip this step.`
414
+ Call save_memory for EACH atomic fact (one fact per call—do not merge into one). RULES you MUST follow:
415
+ - Dates: ONLY absolute (YYYY-MM-DD). NEVER "yesterday", "last week", "recently".
416
+ - Context: Replace "it"/"this"/"that" with explicit referents so each fact is self-contained.
417
+ - metadata.category MUST be one of: semantic | episodic | procedural | emotional | reflective. Use "reflective" for session summaries.
418
+ - Extract and save separately: (1) Key design decisions (2) What was accomplished (3) Learnings/gotchas (4) Pending tasks. Each fact = one save_memory call.
419
+ - Tags: ${topic}, session-summary. Each fact under 100 words total. DO NOT skip this step.`
411
420
  }
412
421
  }
413
422
  ]
@@ -437,17 +446,17 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
437
446
  tools: [
438
447
  {
439
448
  name: "save_memory",
440
- description: "Save information to long-term memory. AUTO-SAVE TRIGGERS - You MUST call this tool when: (1) IMPORTANT DESIGN DECISIONS - architecture choices, tech stack, file structure, API design, database schema - save immediately; (2) TASK COMPLETION - summarize what was done, key changes, learnings discovered; (3) USER REQUESTS - 'remember', 'note this', 'don't forget', corrections, preferences (I like/hate/usually...); (4) CROSS-SESSION INFO - anything needed in future sessions; (5) END OF CONVERSATION - generate a 100-word summary of key decisions and outcomes. DO NOT wait for user to ask - proactively save important information. Categories (metadata.category): semantic (facts), episodic (events), procedural (how-to), emotional (feelings), reflective (insights).",
449
+ description: "Save one atomic fact to long-term memory. RULES YOU MUST FOLLOW: (1) ONE fact per call—do not merge multiple facts. (2) DATES: Use ONLY absolute dates (YYYY-MM-DD or ISO 8601). NEVER use 'yesterday', 'last week', 'recently', or any relative time. (3) CONTEXT COMPLETION (mandatory): If the fact contains pronouns or references like 'it', 'this', 'that', 'the project'—you MUST rewrite so the fact is self-contained with explicit referents. Example: 'it broke' '[Device] MacBook Pro 2023 screen damaged'. Content that is not self-contained will be stored incorrectly. (4) metadata.category MUST be one of: semantic | episodic | procedural | emotional | reflective. (5) Call save_memory when: user says 'remember this', design/code decisions, task completion, or end-of-session summary (≤100 words). (6) For code-related facts, include concrete anchors when possible: class name, method/function name, file path, library/SDK name, config key, error type—e.g. 'UserService.login in src/auth/user.service.ts uses Redis' rather than 'we fixed login'—so memory can be recalled by code structure.",
441
450
  inputSchema: {
442
451
  type: "object",
443
452
  properties: {
444
453
  content: {
445
454
  type: "string",
446
- description: "Content to remember. For end-of-conversation summaries, keep within 100 words."
455
+ description: "REQUIRED. One atomic fact, self-contained. MUST use absolute dates (YYYY-MM-DD). MUST resolve any 'it/this/that' to explicit nouns. Session summary: max 100 words."
447
456
  },
448
457
  metadata: {
449
458
  type: "object",
450
- description: "Optional metadata. Supported fields: category (semantic/episodic/procedural/emotional/reflective), tags (array of strings)"
459
+ description: "category (required): semantic|episodic|procedural|emotional|reflective. tags (optional): string array."
451
460
  }
452
461
  },
453
462
  required: ["content"]
@@ -455,18 +464,32 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
455
464
  },
456
465
  {
457
466
  name: "search_memory",
458
- description: "Search historical memories. ALWAYS call BEFORE responding to: user questions about preferences/history, topics relating to past conversations, any personalized response. Workflow: search → review results → generate informed response.",
467
+ description: "Search historical memories. Direct results = vector DB; related = graph DB. Call BEFORE answering about preferences/history or any personalized response. Workflow: search → review results → respond. Use absolute time in time_filter (YYYY-MM-DD). Returned id is the memory_id for delete_memory.",
459
468
  inputSchema: {
460
469
  type: "object",
461
470
  properties: {
462
471
  query: {
463
472
  type: "string",
464
- description: "Search keywords or natural language question"
473
+ description: "Search intent: keywords or natural language question"
465
474
  },
466
475
  limit: {
467
476
  type: "number",
468
- description: "Number of results to return, default 5",
477
+ description: "Max results, default 5",
469
478
  default: 5
479
+ },
480
+ time_filter: {
481
+ type: "object",
482
+ description: "Optional. start/end in YYYY-MM-DD HH:mm:ss or ISO 8601"
483
+ },
484
+ categories: {
485
+ type: "array",
486
+ items: { type: "string" },
487
+ description: "Optional. Filter by category (semantic/episodic/procedural/emotional/reflective)"
488
+ },
489
+ tags: {
490
+ type: "array",
491
+ items: { type: "string" },
492
+ description: "Optional. Filter by tags"
470
493
  }
471
494
  },
472
495
  required: ["query"]
@@ -474,27 +497,27 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
474
497
  },
475
498
  {
476
499
  name: "list_memory",
477
- description: "List recent memories in chronological order (newest first). Use this to: (1) Review what has been stored; (2) Get context at the start of a conversation; (3) Find specific memories when you're unsure of keywords. Returns memory id, content, and category.",
500
+ description: "List recent memories by creation time (newest first). No search/lookup—only time-ordered listing. To delete a specific memory, use search_memory to get its id then delete_memory. Returns id (use as memory_id for delete), content, category.",
478
501
  inputSchema: {
479
502
  type: "object",
480
503
  properties: {
481
- limit: {
482
- type: "number",
483
- description: "Number of memories to return, default 20",
484
- default: 20
485
- }
504
+ limit: { type: "number", description: "Max items, default 20", default: 20 },
505
+ offset: { type: "number", description: "Pagination offset, default 0", default: 0 },
506
+ time_filter: { type: "object", description: "Optional. start/end YYYY-MM-DD HH:mm:ss" },
507
+ categories: { type: "array", items: { type: "string" }, description: "Optional. Filter by category" },
508
+ tags: { type: "array", items: { type: "string" }, description: "Optional. Filter by tags" }
486
509
  }
487
510
  }
488
511
  },
489
512
  {
490
513
  name: "delete_memory",
491
- description: "Delete a specific memory by ID. Use when: (1) User explicitly asks to forget something; (2) You find outdated or incorrect information. Requires memory_id from list_memory or search_memory results.",
514
+ description: "Delete a memory by id. memory_id MUST be the id returned by search_memory or list_memory—do not use any other value. Use when user asks to forget something or information is outdated.",
492
515
  inputSchema: {
493
516
  type: "object",
494
517
  properties: {
495
518
  memory_id: {
496
519
  type: "string",
497
- description: "The ID of the memory to delete"
520
+ description: "Id from search_memory or list_memory result (required)"
498
521
  }
499
522
  },
500
523
  required: ["memory_id"]
@@ -533,7 +556,10 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
533
556
  case "search_memory": {
534
557
  const query = args?.query as string;
535
558
  const limit = (args?.limit as number) || 5;
536
- const result = await searchMemory(query, limit);
559
+ const time_filter = args?.time_filter as { start?: string; end?: string } | undefined;
560
+ const categories = args?.categories as string[] | undefined;
561
+ const tags = args?.tags as string[] | undefined;
562
+ const result = await searchMemory(query, limit, { time_filter, categories, tags });
537
563
  return {
538
564
  content: [
539
565
  {
@@ -546,7 +572,11 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
546
572
 
547
573
  case "list_memory": {
548
574
  const limit = (args?.limit as number) || 20;
549
- const result = await listMemory(limit);
575
+ const offset = (args?.offset as number) || 0;
576
+ const time_filter = args?.time_filter as { start?: string; end?: string } | undefined;
577
+ const categories = args?.categories as string[] | undefined;
578
+ const tags = args?.tags as string[] | undefined;
579
+ const result = await listMemory(limit, offset, { time_filter, categories, tags });
550
580
  return {
551
581
  content: [
552
582
  {