WorkingMemory

Persistent personal memory for AI assistants — save, search, and recall across every MCP client.

Should I use this

Quality & Safety

A
Description quality
95%
Schema completeness
100%
Naming quality
95%
Poisoning risk
80%
Permission match
100%
Protocol compliance
100%

Findings (3)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool 'save_memory' description contains placeholder textin save_memory
  • INFOTool description contains placeholder or incomplete textin save_memory

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~908Tokens (tool definitions)
~2.0 KBTypical response size
Moderate attention impact (0.71% of 128k context)

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-http

What it can do

Tool inventory

Tools (4)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟡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_research
Search for information about [topic] using WorkingMemory
Expected tools: search_memory
find_specific
Find [specific item] using WorkingMemory
Expected tools: search_memory

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded4 tools
verifiedversion not recorded4 tools