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

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.9";
59
59
  // Detected client type from initialize request
60
60
  let detectedClient = 'mcp';
61
61
  // Lazy-loaded SDK instance
@@ -131,13 +131,13 @@ 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
141
  return {
142
142
  memories: (result.data || []).map((m) => ({
143
143
  id: m.id,
@@ -154,10 +154,10 @@ async function searchMemory(query, limit = 5) {
154
154
  return { memories: [], isLimited: false, remainingQuota: 0 };
155
155
  }
156
156
  }
157
- async function listMemory(limit = 20) {
157
+ async function listMemory(limit = 20, offset = 0, options) {
158
158
  try {
159
159
  const sdk = await getSDK();
160
- const result = await sdk.list(limit, 0);
160
+ const result = await sdk.list(limit, offset, options);
161
161
  return {
162
162
  memories: (result.data || []).map((m) => ({
163
163
  id: m.id,
@@ -224,7 +224,7 @@ const server = new index_js_1.Server({
224
224
  },
225
225
  });
226
226
  // 检测 MCP 客户端类型
227
- // 支持的 IDE: Cline, Cursor, Windsurf, Claude, Zen, Trea, Qoder, Kiro, OpenCode, CodeBuddy, Codeium, Tabby, Kimi, ZenMux, Comate
227
+ // 支持的 IDE: Cline, Cursor, Windsurf, Claude, Zen, Trea, Qoder, Kiro, OpenCode, CodeBuddy, Codeium, Tabby, Kimi, ZenMux, Comate, Kilo, Qwen, Codex
228
228
  server.setRequestHandler(types_js_1.InitializeRequestSchema, async (request) => {
229
229
  const clientName = (request.params?.clientInfo?.name || '').toLowerCase();
230
230
  // 检测客户端类型(忽略大小写)
@@ -273,6 +273,15 @@ server.setRequestHandler(types_js_1.InitializeRequestSchema, async (request) =>
273
273
  else if (clientName.includes('tabby')) {
274
274
  detectedClient = 'tabby';
275
275
  }
276
+ else if (clientName.includes('kilo')) {
277
+ detectedClient = 'kilo';
278
+ }
279
+ else if (clientName.includes('qwen')) {
280
+ detectedClient = 'qwen';
281
+ }
282
+ else if (clientName.includes('codex')) {
283
+ detectedClient = 'codex';
284
+ }
276
285
  else if (clientName) {
277
286
  // 未知客户端,使用其名称
278
287
  detectedClient = clientName.split(/[^\w]/)[0]; // 取第一个单词
@@ -363,15 +372,13 @@ server.setRequestHandler(types_js_1.GetPromptRequestSchema, async (request) => {
363
372
 
364
373
  Task: ${task}
365
374
 
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.`
375
+ Call save_memory for EACH atomic fact (one fact per call—do not merge). RULES:
376
+ - Use ONLY absolute dates (YYYY-MM-DD). NEVER "yesterday", "last week", "recently".
377
+ - If content has "it"/"this"/"that", rewrite with explicit referents (e.g. "it" → "[Component X]").
378
+ - metadata.category MUST be one of: semantic | episodic | procedural | emotional | reflective. Use "reflective" for task summaries.
379
+ - Save: what was done, key files changed, important decisions, next steps. Each as a separate save_memory call if multiple facts.
380
+ - Tags: task-complete, ${task}. Keep each fact under 50 words.
381
+ Then proceed to attempt_completion. DO NOT skip saving.`
375
382
  }
376
383
  }
377
384
  ]
@@ -386,14 +393,12 @@ DO NOT skip this step.`
386
393
  type: "text",
387
394
  text: `⚡ AUTO-ARCHIVE: Review this conversation about ${topic} and SAVE to memory immediately.
388
395
 
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.`
396
+ Call save_memory for EACH atomic fact (one fact per call—do not merge into one). RULES you MUST follow:
397
+ - Dates: ONLY absolute (YYYY-MM-DD). NEVER "yesterday", "last week", "recently".
398
+ - Context: Replace "it"/"this"/"that" with explicit referents so each fact is self-contained.
399
+ - metadata.category MUST be one of: semantic | episodic | procedural | emotional | reflective. Use "reflective" for session summaries.
400
+ - Extract and save separately: (1) Key design decisions (2) What was accomplished (3) Learnings/gotchas (4) Pending tasks. Each fact = one save_memory call.
401
+ - Tags: ${topic}, session-summary. Each fact under 100 words total. DO NOT skip this step.`
397
402
  }
398
403
  }
399
404
  ]
@@ -420,17 +425,17 @@ server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => {
420
425
  tools: [
421
426
  {
422
427
  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).",
428
+ 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
429
  inputSchema: {
425
430
  type: "object",
426
431
  properties: {
427
432
  content: {
428
433
  type: "string",
429
- description: "Content to remember. For end-of-conversation summaries, keep within 100 words."
434
+ 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
435
  },
431
436
  metadata: {
432
437
  type: "object",
433
- description: "Optional metadata. Supported fields: category (semantic/episodic/procedural/emotional/reflective), tags (array of strings)"
438
+ description: "category (required): semantic|episodic|procedural|emotional|reflective. tags (optional): string array."
434
439
  }
435
440
  },
436
441
  required: ["content"]
@@ -438,18 +443,32 @@ server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => {
438
443
  },
439
444
  {
440
445
  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.",
446
+ 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
447
  inputSchema: {
443
448
  type: "object",
444
449
  properties: {
445
450
  query: {
446
451
  type: "string",
447
- description: "Search keywords or natural language question"
452
+ description: "Search intent: keywords or natural language question"
448
453
  },
449
454
  limit: {
450
455
  type: "number",
451
- description: "Number of results to return, default 5",
456
+ description: "Max results, default 5",
452
457
  default: 5
458
+ },
459
+ time_filter: {
460
+ type: "object",
461
+ description: "Optional. start/end in YYYY-MM-DD HH:mm:ss or ISO 8601"
462
+ },
463
+ categories: {
464
+ type: "array",
465
+ items: { type: "string" },
466
+ description: "Optional. Filter by category (semantic/episodic/procedural/emotional/reflective)"
467
+ },
468
+ tags: {
469
+ type: "array",
470
+ items: { type: "string" },
471
+ description: "Optional. Filter by tags"
453
472
  }
454
473
  },
455
474
  required: ["query"]
@@ -457,27 +476,27 @@ server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => {
457
476
  },
458
477
  {
459
478
  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.",
479
+ 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
480
  inputSchema: {
462
481
  type: "object",
463
482
  properties: {
464
- limit: {
465
- type: "number",
466
- description: "Number of memories to return, default 20",
467
- default: 20
468
- }
483
+ limit: { type: "number", description: "Max items, default 20", default: 20 },
484
+ offset: { type: "number", description: "Pagination offset, default 0", default: 0 },
485
+ time_filter: { type: "object", description: "Optional. start/end YYYY-MM-DD HH:mm:ss" },
486
+ categories: { type: "array", items: { type: "string" }, description: "Optional. Filter by category" },
487
+ tags: { type: "array", items: { type: "string" }, description: "Optional. Filter by tags" }
469
488
  }
470
489
  }
471
490
  },
472
491
  {
473
492
  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.",
493
+ 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
494
  inputSchema: {
476
495
  type: "object",
477
496
  properties: {
478
497
  memory_id: {
479
498
  type: "string",
480
- description: "The ID of the memory to delete"
499
+ description: "Id from search_memory or list_memory result (required)"
481
500
  }
482
501
  },
483
502
  required: ["memory_id"]
@@ -513,7 +532,10 @@ server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
513
532
  case "search_memory": {
514
533
  const query = args?.query;
515
534
  const limit = args?.limit || 5;
516
- const result = await searchMemory(query, limit);
535
+ const time_filter = args?.time_filter;
536
+ const categories = args?.categories;
537
+ const tags = args?.tags;
538
+ const result = await searchMemory(query, limit, { time_filter, categories, tags });
517
539
  return {
518
540
  content: [
519
541
  {
@@ -525,7 +547,11 @@ server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
525
547
  }
526
548
  case "list_memory": {
527
549
  const limit = args?.limit || 20;
528
- const result = await listMemory(limit);
550
+ const offset = args?.offset || 0;
551
+ const time_filter = args?.time_filter;
552
+ const categories = args?.categories;
553
+ const tags = args?.tags;
554
+ const result = await listMemory(limit, offset, { time_filter, categories, tags });
529
555
  return {
530
556
  content: [
531
557
  {
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.9",
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.1"
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.9";
36
36
 
37
37
  // Detected client type from initialize request
38
38
  let detectedClient: string = 'mcp';
@@ -125,20 +125,17 @@ 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<{
129
- memories: any[];
130
- isLimited: boolean;
131
- remainingQuota: number;
132
- upgradeHint?: string;
133
- }> {
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<{ memories: any[]; isLimited: boolean; remainingQuota: number; upgradeHint?: string }> {
134
133
  if (!query || query.length < 2) {
135
134
  return { memories: [], isLimited: false, remainingQuota: 0 };
136
135
  }
137
-
138
136
  try {
139
137
  const sdk = await getSDK();
140
- const result = await sdk.search(query, limit);
141
-
138
+ const result = await (sdk as any).search(query, limit, options);
142
139
  return {
143
140
  memories: (result.data || []).map((m: any) => ({
144
141
  id: m.id,
@@ -155,14 +152,14 @@ async function searchMemory(query: string, limit: number = 5): Promise<{
155
152
  }
156
153
  }
157
154
 
158
- async function listMemory(limit: number = 20): Promise<{
159
- memories: any[];
160
- total: number;
161
- }> {
155
+ async function listMemory(
156
+ limit: number = 20,
157
+ offset: number = 0,
158
+ options?: { time_filter?: { start?: string; end?: string }; categories?: string[]; tags?: string[] }
159
+ ): Promise<{ memories: any[]; total: number }> {
162
160
  try {
163
161
  const sdk = await getSDK();
164
- const result = await sdk.list(limit, 0);
165
-
162
+ const result = await (sdk as any).list(limit, offset, options);
166
163
  return {
167
164
  memories: (result.data || []).map((m: any) => ({
168
165
  id: m.id,
@@ -244,7 +241,7 @@ const server = new Server(
244
241
  );
245
242
 
246
243
  // 检测 MCP 客户端类型
247
- // 支持的 IDE: Cline, Cursor, Windsurf, Claude, Zen, Trea, Qoder, Kiro, OpenCode, CodeBuddy, Codeium, Tabby, Kimi, ZenMux, Comate
244
+ // 支持的 IDE: Cline, Cursor, Windsurf, Claude, Zen, Trea, Qoder, Kiro, OpenCode, CodeBuddy, Codeium, Tabby, Kimi, ZenMux, Comate, Kilo, Qwen, Codex
248
245
  server.setRequestHandler(InitializeRequestSchema, async (request) => {
249
246
  const clientName = (request.params?.clientInfo?.name || '').toLowerCase();
250
247
 
@@ -279,6 +276,12 @@ server.setRequestHandler(InitializeRequestSchema, async (request) => {
279
276
  detectedClient = 'codeium';
280
277
  } else if (clientName.includes('tabby')) {
281
278
  detectedClient = 'tabby';
279
+ } else if (clientName.includes('kilo')) {
280
+ detectedClient = 'kilo';
281
+ } else if (clientName.includes('qwen')) {
282
+ detectedClient = 'qwen';
283
+ } else if (clientName.includes('codex')) {
284
+ detectedClient = 'codex';
282
285
  } else if (clientName) {
283
286
  // 未知客户端,使用其名称
284
287
  detectedClient = clientName.split(/[^\w]/)[0]; // 取第一个单词
@@ -376,15 +379,13 @@ server.setRequestHandler(GetPromptRequestSchema, async (request) => {
376
379
 
377
380
  Task: ${task}
378
381
 
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.`
382
+ Call save_memory for EACH atomic fact (one fact per call—do not merge). RULES:
383
+ - Use ONLY absolute dates (YYYY-MM-DD). NEVER "yesterday", "last week", "recently".
384
+ - If content has "it"/"this"/"that", rewrite with explicit referents (e.g. "it" → "[Component X]").
385
+ - metadata.category MUST be one of: semantic | episodic | procedural | emotional | reflective. Use "reflective" for task summaries.
386
+ - Save: what was done, key files changed, important decisions, next steps. Each as a separate save_memory call if multiple facts.
387
+ - Tags: task-complete, ${task}. Keep each fact under 50 words.
388
+ Then proceed to attempt_completion. DO NOT skip saving.`
388
389
  }
389
390
  }
390
391
  ]
@@ -400,14 +401,12 @@ DO NOT skip this step.`
400
401
  type: "text",
401
402
  text: `⚡ AUTO-ARCHIVE: Review this conversation about ${topic} and SAVE to memory immediately.
402
403
 
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.`
404
+ Call save_memory for EACH atomic fact (one fact per call—do not merge into one). RULES you MUST follow:
405
+ - Dates: ONLY absolute (YYYY-MM-DD). NEVER "yesterday", "last week", "recently".
406
+ - Context: Replace "it"/"this"/"that" with explicit referents so each fact is self-contained.
407
+ - metadata.category MUST be one of: semantic | episodic | procedural | emotional | reflective. Use "reflective" for session summaries.
408
+ - Extract and save separately: (1) Key design decisions (2) What was accomplished (3) Learnings/gotchas (4) Pending tasks. Each fact = one save_memory call.
409
+ - Tags: ${topic}, session-summary. Each fact under 100 words total. DO NOT skip this step.`
411
410
  }
412
411
  }
413
412
  ]
@@ -437,17 +436,17 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
437
436
  tools: [
438
437
  {
439
438
  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).",
439
+ 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
440
  inputSchema: {
442
441
  type: "object",
443
442
  properties: {
444
443
  content: {
445
444
  type: "string",
446
- description: "Content to remember. For end-of-conversation summaries, keep within 100 words."
445
+ 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
446
  },
448
447
  metadata: {
449
448
  type: "object",
450
- description: "Optional metadata. Supported fields: category (semantic/episodic/procedural/emotional/reflective), tags (array of strings)"
449
+ description: "category (required): semantic|episodic|procedural|emotional|reflective. tags (optional): string array."
451
450
  }
452
451
  },
453
452
  required: ["content"]
@@ -455,18 +454,32 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
455
454
  },
456
455
  {
457
456
  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.",
457
+ 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
458
  inputSchema: {
460
459
  type: "object",
461
460
  properties: {
462
461
  query: {
463
462
  type: "string",
464
- description: "Search keywords or natural language question"
463
+ description: "Search intent: keywords or natural language question"
465
464
  },
466
465
  limit: {
467
466
  type: "number",
468
- description: "Number of results to return, default 5",
467
+ description: "Max results, default 5",
469
468
  default: 5
469
+ },
470
+ time_filter: {
471
+ type: "object",
472
+ description: "Optional. start/end in YYYY-MM-DD HH:mm:ss or ISO 8601"
473
+ },
474
+ categories: {
475
+ type: "array",
476
+ items: { type: "string" },
477
+ description: "Optional. Filter by category (semantic/episodic/procedural/emotional/reflective)"
478
+ },
479
+ tags: {
480
+ type: "array",
481
+ items: { type: "string" },
482
+ description: "Optional. Filter by tags"
470
483
  }
471
484
  },
472
485
  required: ["query"]
@@ -474,27 +487,27 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
474
487
  },
475
488
  {
476
489
  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.",
490
+ 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
491
  inputSchema: {
479
492
  type: "object",
480
493
  properties: {
481
- limit: {
482
- type: "number",
483
- description: "Number of memories to return, default 20",
484
- default: 20
485
- }
494
+ limit: { type: "number", description: "Max items, default 20", default: 20 },
495
+ offset: { type: "number", description: "Pagination offset, default 0", default: 0 },
496
+ time_filter: { type: "object", description: "Optional. start/end YYYY-MM-DD HH:mm:ss" },
497
+ categories: { type: "array", items: { type: "string" }, description: "Optional. Filter by category" },
498
+ tags: { type: "array", items: { type: "string" }, description: "Optional. Filter by tags" }
486
499
  }
487
500
  }
488
501
  },
489
502
  {
490
503
  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.",
504
+ 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
505
  inputSchema: {
493
506
  type: "object",
494
507
  properties: {
495
508
  memory_id: {
496
509
  type: "string",
497
- description: "The ID of the memory to delete"
510
+ description: "Id from search_memory or list_memory result (required)"
498
511
  }
499
512
  },
500
513
  required: ["memory_id"]
@@ -533,7 +546,10 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
533
546
  case "search_memory": {
534
547
  const query = args?.query as string;
535
548
  const limit = (args?.limit as number) || 5;
536
- const result = await searchMemory(query, limit);
549
+ const time_filter = args?.time_filter as { start?: string; end?: string } | undefined;
550
+ const categories = args?.categories as string[] | undefined;
551
+ const tags = args?.tags as string[] | undefined;
552
+ const result = await searchMemory(query, limit, { time_filter, categories, tags });
537
553
  return {
538
554
  content: [
539
555
  {
@@ -546,7 +562,11 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
546
562
 
547
563
  case "list_memory": {
548
564
  const limit = (args?.limit as number) || 20;
549
- const result = await listMemory(limit);
565
+ const offset = (args?.offset as number) || 0;
566
+ const time_filter = args?.time_filter as { start?: string; end?: string } | undefined;
567
+ const categories = args?.categories as string[] | undefined;
568
+ const tags = args?.tags as string[] | undefined;
569
+ const result = await listMemory(limit, offset, { time_filter, categories, tags });
550
570
  return {
551
571
  content: [
552
572
  {