get_episodic_memory
Retrieve user episodic memories to access past events and experiences, enabling personalized AI interactions through historical context recall.
Instructions
Retrieve episodic memories for a user
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of memories to return | |
| userId | Yes | User identifier |
Implementation Reference
- src/handlers/ToolHandlers.ts:286-300 (handler)Tool handler case for 'get_episodic_memory' that validates inputs, retrieves memories from MemoryStore, and returns them as JSON.case "get_episodic_memory": { const { userId, limit } = request.params.arguments as any; // Validate inputs ValidationUtils.validateUserId(userId); ValidationUtils.validateLimit(limit); const memories = memoryStore.getEpisodicMemory(userId, limit); return { content: [{ type: "text", text: JSON.stringify(memories, null, 2) }] }; }
- src/handlers/ToolHandlers.ts:146-163 (registration)Registration of the 'get_episodic_memory' tool in the listTools handler, including name, description, and input schema.{ name: "get_episodic_memory", description: "Retrieve episodic memories for a user", inputSchema: { type: "object", properties: { userId: { type: "string", description: "User identifier" }, limit: { type: "number", description: "Maximum number of memories to return" } }, required: ["userId"] } },
- src/handlers/ToolHandlers.ts:149-162 (schema)Input schema definition for the 'get_episodic_memory' tool.inputSchema: { type: "object", properties: { userId: { type: "string", description: "User identifier" }, limit: { type: "number", description: "Maximum number of memories to return" } }, required: ["userId"] }
- src/store/MemoryStore.ts:161-167 (helper)Core implementation in MemoryStore that filters episodic memories by userId, sorts by timestamp descending, and applies limit if provided.getEpisodicMemory(userId: string, limit?: number): EpisodicMemory[] { const memories = Array.from(this.episodicMemory.values()) .filter(memory => memory.userId === userId) .sort((a, b) => b.timestamp - a.timestamp); return limit ? memories.slice(0, limit) : memories; }