WorkingMemory
Persistent personal memory for AI assistants — save, search, and recall across every MCP client.
Should I use this
Quality & Safety
Findings (3)
- HIGH
- MEDIUMin save_memory
- INFOin save_memory
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"memory": {
"url": "https://app.workingmemory.ai/mcp"
}
}
}Remote endpoints
https://app.workingmemory.ai/mcpstreamable-httpWhat it can do
Tool inventory
Tools (4)
🟡save_memory(text, client)
Save a thought, insight, fact, or todo to the user's Working Memory. The text is parsed and stored as one or more structured memory items, searchable a moment later via search_memory. Also use this when the user pastes memories or notes brought from another assistant — pass the full pasted text; it is split into individual memories automatically.
Input Schema
{
"type": "object",
"properties": {
"text": {
"type": "string",
"description": "The thought or note to save."
},
"client": {
"type": "object",
"description": "Optional context about the originating client session. Helps users later find saves from a specific conversation. `conversation_id` groups multiple saves; `conversation_title` is human-readable.",
"properties": {
"conversation_id": {
"type": "string",
"description": "Opaque identifier; typically the client's conversation thread ID."
},
"conversation_title": {
"type": "string",
"description": "Human-readable conversation title (max 200 chars; longer values truncated server-side)."
}
},
"additionalProperties": false
}
},
"required": [
"text"
]
}🟢search_memory(query, k, conversation_id, dedupe_recent, client)
Search the user's Working Memory for relevant past notes and facts. Use this when the user references something they may have stored earlier, or to find related context before answering. Always include your conversation id in client.conversation_id.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Semantic query."
},
"k": {
"type": "number",
"description": "Max results (1–20). Defaults to a sensible value."
},
"conversation_id": {
"type": "string",
"description": "Optional. Restrict results to notes stamped with this conversation_id at save_memory time. Empty / whitespace-only values are treated as absent."
},
"dedupe_recent": {
"type": "boolean",
"description": "Optional. When false, semantic matches that are also recent are still returned in `relevant` (raw semantic results rather than RAG-deduped). Defaults to true."
},
"client": {
"type": "object",
"description": "Context about the CURRENT client session. Pass your conversation/thread id as `conversation_id` — it identifies this session for cross-session memory instrumentation and does NOT filter results (use the top-level `conversation_id` parameter for filtering).",
"properties": {
"conversation_id": {
"type": "string",
"description": "Opaque identifier; typically the client's conversation thread ID."
},
"conversation_title": {
"type": "string",
"description": "Human-readable conversation title (max 200 chars; longer values truncated server-side)."
}
},
"additionalProperties": false
}
},
"required": [
"query"
]
}🔴manage_memory(action, id)
Manage an existing memory item. Currently supports deleting a memory by id (soft delete — recoverable for 30 days). Use search_memory to find the id first.
Input Schema
{
"type": "object",
"properties": {
"action": {
"type": "string",
"enum": [
"delete"
],
"description": "The management action to perform."
},
"id": {
"type": "string",
"description": "The memory item id to act on."
}
},
"required": [
"action",
"id"
]
}⚪capture_memory(task_content, task_description, client)
Capture durable facts from a task you just completed (drafting an email, summarizing a document, making a decision), as a byproduct — the user does nothing. Pass the task output/content; durable facts are extracted and stored automatically. Always include your conversation id in client.conversation_id. Returns immediately; extraction happens in the background.
Input Schema
{
"type": "object",
"properties": {
"task_content": {
"type": "string",
"description": "The task output/content to mine for durable facts (max 32KB)."
},
"task_description": {
"type": "string",
"description": "Optional one-line description of the task, as extraction framing."
},
"client": {
"type": "object",
"description": "Current client session context. Pass your conversation/thread id as conversation_id.",
"properties": {
"conversation_id": {
"type": "string",
"description": "Opaque conversation/thread id."
},
"conversation_title": {
"type": "string",
"description": "Human-readable title (max 200 chars)."
}
},
"additionalProperties": false
}
},
"required": [
"task_content"
]
}Recommended Prompts
search_memorysearch_memoryCommunity
Evidence