Persistent personal memory for AI assistants — save, search, and recall across every MCP client.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
The task output/content to mine for durable facts (max 32KB).
Current client session context. Pass your conversation/thread id as conversation_id.
Optional one-line description of the task, as extraction framing.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
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.
| Argument | Type | Description |
|---|---|---|
| client | object | Current client session context. Pass your conversation/thread id as conversation_id. |
| task_content* | string | The task output/content to mine for durable facts (max 32KB). |
| task_description | string | Optional one-line description of the task, as extraction framing. |
{
"type": "object",
"required": [
"task_content"
],
"properties": {
"client": {
"type": "object",
"properties": {
"conversation_id": {
"type": "string",
"description": "Opaque conversation/thread id."
},
"conversation_title": {
"type": "string",
"description": "Human-readable title (max 200 chars)."
}
},
"description": "Current client session context. Pass your conversation/thread id as conversation_id.",
"additionalProperties": false
},
"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."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| id* | string | The memory item id to act on. |
| action* | string | The management action to perform. |
{
"type": "object",
"required": [
"action",
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The memory item id to act on."
},
"action": {
"enum": [
"delete"
],
"type": "string",
"description": "The management action to perform."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| text* | string | The thought or note to save. |
| client | object | 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. |
{
"type": "object",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"description": "The thought or note to save."
},
"client": {
"type": "object",
"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)."
}
},
"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.",
"additionalProperties": false
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| k | number | Max results (1–20). Defaults to a sensible value. |
| query* | string | Semantic query. |
| client | object | 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). |
| dedupe_recent | boolean | Optional. When false, semantic matches that are also recent are still returned in `relevant` (raw semantic results rather than RAG-deduped). Defaults to true. |
| conversation_id | string | Optional. Restrict results to notes stamped with this conversation_id at save_memory time. Empty / whitespace-only values are treated as absent. |
{
"type": "object",
"required": [
"query"
],
"properties": {
"k": {
"type": "number",
"description": "Max results (1–20). Defaults to a sensible value."
},
"query": {
"type": "string",
"description": "Semantic query."
},
"client": {
"type": "object",
"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)."
}
},
"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).",
"additionalProperties": false
},
"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."
},
"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."
}
}
}