{ "name": "yourmemory", "title": "YourMemory", "description": "Persistent memory for AI agents with Ebbinghaus decay, hybrid BM25 + vector retrieval, and entity graph. MCP compatible. Works with Claude, Cursor, Cline, Windsurf.", "version": "1.4.25", "tools": [ { "name": "recall_memory", "description": "Recall relevant memories using hybrid BM25 + vector retrieval with entity graph expansion. Returns top-k memories ranked by relevance, with graph-expanded neighbours included.", "annotations": { "readOnlyHint": true, "openWorldHint": false }, "inputSchema": { "type": "object", "properties": { "query": { "type": "string", "description": "The search query to find relevant memories. Use keywords from the current task or conversation." }, "user_id": { "type": "string", "description": "Unique identifier for the user whose memories to search." }, "top_k": { "type": "number", "description": "Number of top memories to return. Defaults to 5.", "default": 5 }, "current_path": { "type": "string", "description": "Optional file or directory path for spatial memory boost. Memories tagged with this path score higher." } }, "required": ["query", "user_id"] }, "outputSchema": { "type": "object", "properties": { "memoriesFound": { "type": "number", "description": "Total number of memories returned." }, "context": { "type": "string", "description": "Concatenated memory content ready to inject into context." }, "memories": { "type": "array", "description": "List of memory objects ranked by relevance.", "items": { "type": "object", "properties": { "id": { "type": "string" }, "content": { "type": "string" }, "category": { "type": "string" }, "similarity": { "type": "number" }, "score": { "type": "number" }, "strength": { "type": "number" } } } } } } }, { "name": "store_memory", "description": "Store a new memory. Automatically deduplicates, embeds, and indexes with BM25 and entity graph edges. Skips exact duplicates and bumps recall count instead.", "annotations": { "readOnlyHint": false, "openWorldHint": false }, "inputSchema": { "type": "object", "properties": { "content": { "type": "string", "description": "The memory content to store. Write as a single factual sentence: 'Sachit prefers Python' or 'The project uses DuckDB'." }, "user_id": { "type": "string", "description": "Unique identifier for the user this memory belongs to." }, "importance": { "type": "number", "description": "Importance score from 0.0 to 1.0. Controls decay rate — higher importance = slower decay. Use 0.9 for core facts, 0.7 for preferences, 0.5 for regular facts, 0.2 for transient context.", "minimum": 0.0, "maximum": 1.0, "default": 0.7 }, "category": { "type": "string", "description": "Memory category controlling decay half-life. Options: 'fact' (~24 days), 'strategy' (~38 days), 'assumption' (~19 days), 'failure' (~11 days).", "enum": ["fact", "strategy", "assumption", "failure"], "default": "fact" }, "visibility": { "type": "string", "description": "Visibility scope. 'shared' means all agents can read it. 'private' means only the storing agent can read it.", "enum": ["shared", "private"], "default": "shared" } }, "required": ["content", "user_id"] }, "outputSchema": { "type": "object", "properties": { "memory_id": { "type": "string", "description": "Unique ID of the stored memory." }, "status": { "type": "string", "description": "Result status: 'stored', 'duplicate_bumped', or 'merged'." }, "content": { "type": "string", "description": "The stored memory content." } } } }, { "name": "update_memory", "description": "Update an existing memory by ID. Re-embeds the new content, replaces the old memory, and logs the change to the audit trail.", "annotations": { "readOnlyHint": false, "openWorldHint": false }, "inputSchema": { "type": "object", "properties": { "memory_id": { "type": "string", "description": "The unique ID of the memory to update. Obtain this from a prior recall_memory call." }, "new_content": { "type": "string", "description": "The updated memory content. Write as a single factual sentence replacing the old content." }, "importance": { "type": "number", "description": "Updated importance score from 0.0 to 1.0.", "minimum": 0.0, "maximum": 1.0, "default": 0.7 } }, "required": ["memory_id", "new_content"] }, "outputSchema": { "type": "object", "properties": { "memory_id": { "type": "string", "description": "ID of the updated memory." }, "status": { "type": "string", "description": "Result status: 'updated'." }, "content": { "type": "string", "description": "The new memory content after update." } } } } ] }