prune_memories
Permanently delete old, low-importance, or rarely accessed memories from AI systems to manage storage and maintain relevant data using customizable criteria.
Instructions
Permanently delete memories based on criteria
Tool call template
This tool declares no required parameters. Add optional parameters from the input schema as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {},
"name": "prune_memories"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| criteria | No |
Implementation Reference
- src/memory-manager.js:813-855 (handler)The main implementation of pruneMemories method that permanently deletes memories based on criteria (maxAge, minImportance, maxAccessCount, status). Updates memory status to 'deleted' and records deletion events.
async pruneMemories(criteria = {}) { try { const { maxAge = 1095, // 3 years minImportance = 0.1, maxAccessCount = 2, status = 'archived' } = criteria; const cutoffDate = new Date(Date.now() - maxAge * 24 * 60 * 60 * 1000); const prunedMemories = await this.db .update(schema.memories) .set({ status: 'deleted' }) .where( and( eq(schema.memories.status, status), lt(schema.memories.createdAt, cutoffDate), lt(schema.memories.importance, minImportance), lte(schema.memories.accessCount, maxAccessCount) ) ) .returning({ id: schema.memories.id, content: schema.memories.content, type: schema.memories.type }); // Record deletion events for (const memory of prunedMemories) { await this.db.insert(schema.memoryChanges).values({ memoryId: memory.id, changeType: 'deletion', newValue: { reason: 'Pruned based on criteria', criteria } }); } return prunedMemories; } catch (error) { console.warn('Memory pruning failed:', error.message); return []; } } - mcp.js:641-643 (handler)The MCP request handler that routes prune_memories tool calls to memoryManager.pruneMemories with the provided criteria.
case "prune_memories": const prunedMemories = await memoryManager.pruneMemories(args.criteria || {}); return { content: [{ type: "text", text: JSON.stringify(prunedMemories, null, 2) }] }; - src/tools/memory-tools.js:314-345 (schema)Schema definition for prune_memories tool as part of the exported memoryTools array, defining input properties (max_age, min_importance, max_access_count, status).
name: "prune_memories", description: "Permanently delete memories based on criteria", inputSchema: { type: "object", properties: { criteria: { type: "object", properties: { max_age: { type: "integer", description: "Maximum age in days", default: 1095 }, min_importance: { type: "number", description: "Minimum importance threshold", default: 0.1 }, max_access_count: { type: "integer", description: "Maximum access count", default: 2 }, status: { type: "string", description: "Memory status to prune", default: "archived" } } } } } - mcp.js:340-371 (registration)Tool registration in the MCP server's tools list, registering prune_memories with its description and input schema for tool discovery.
name: "prune_memories", description: "Permanently delete memories based on criteria", inputSchema: { type: "object", properties: { criteria: { type: "object", properties: { max_age: { type: "integer", description: "Maximum age in days", default: 1095 }, min_importance: { type: "number", description: "Minimum importance threshold", default: 0.1 }, max_access_count: { type: "integer", description: "Maximum access count", default: 2 }, status: { type: "string", description: "Memory status to prune", default: "archived" } } } } }