Give every AI you use one shared, permanent memory. Store once, recall in whichever AI you open.
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.
Returns an AI-generated overview of the user, built from the chat history they have synced into their MemoryPlugin account. Use when the user asks what you know about them or asks you to load their background. If no overview exists yet, the user can generate one from their MemoryPlugin dashboard.
This tool takes no arguments.
Returns an AI-generated overview of the user, built from the chat history they have synced into their MemoryPlugin account. Use when the user asks what you know about them or asks you to load their background. If no overview exists yet, the user can generate one from their MemoryPlugin dashboard.
No arguments.
{
"type": "object",
"properties": {}
}Create a new bucket to organize memories. Buckets are folders like 'Work', 'Personal', 'Health'. Ask the user for a name if not specified.
| Argument | Type | Description |
|---|---|---|
| name* | string | Name for the new bucket |
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "Name for the new bucket"
}
}
}Download the complete transcript of a past conversation as a machine-readable JSON file. Returns a temporary download URL (expires in 15 minutes, no auth needed) that you fetch yourself to get the full conversation as structured messages (role, content, timestamp). Use when a transcript is too long to read inline, or when you need it as a file for analysis or scripting. To read a short transcript directly, use get_full_conversation instead. Requires the conversationId from recall_chat_history's sources array.
| Argument | Type | Description |
|---|---|---|
| conversationId* | string | Conversation ID from the recall_chat_history sources array |
{
"type": "object",
"required": [
"conversationId"
],
"properties": {
"conversationId": {
"type": "string",
"description": "Conversation ID from the recall_chat_history sources array"
}
}
}Get details of a specific past conversation. For short conversations (<5K tokens), returns the full transcript. For longer conversations, returns an AI-generated summary. Use when the user wants to dive deeper into a conversation returned by recall_chat_history. Requires the conversationId from that tool's sources array.
| Argument | Type | Description |
|---|---|---|
| conversationId* | string | Conversation ID from the recall_chat_history sources array |
{
"type": "object",
"required": [
"conversationId"
],
"properties": {
"conversationId": {
"type": "string",
"description": "Conversation ID from the recall_chat_history sources array"
}
}
}Get the complete transcript of a specific past conversation. Returns all messages in the conversation without summarization. Use when you need the raw conversation content. Requires the conversationId from recall_chat_history's sources array.
| Argument | Type | Description |
|---|---|---|
| conversationId* | string | Conversation ID from the recall_chat_history sources array |
{
"type": "object",
"required": [
"conversationId"
],
"properties": {
"conversationId": {
"type": "string",
"description": "Conversation ID from the recall_chat_history sources array"
}
}
}Retrieve the user's saved memories from MemoryPlugin, optionally filtered by bucket. Also returns the list of available buckets. Use when the user asks what you know about them or refers to something they saved earlier.
| Argument | Type | Description |
|---|---|---|
| all | boolean | Whether to fetch all memories |
| count | number | Number of memories to retrieve (default: 10) |
| query | string | Optional search query |
| latest | boolean | Whether to fetch only latest memories |
| bucketId | number | Optional bucket ID to filter memories |
{
"type": "object",
"properties": {
"all": {
"type": "boolean",
"description": "Whether to fetch all memories"
},
"count": {
"type": "number",
"description": "Number of memories to retrieve (default: 10)"
},
"query": {
"type": "string",
"description": "Optional search query"
},
"latest": {
"type": "boolean",
"description": "Whether to fetch only latest memories"
},
"bucketId": {
"type": "number",
"description": "Optional bucket ID to filter memories"
}
}
}List AI-generated categories within a bucket. When users activate Smart Memory, their memories are automatically organized into topic-based categories. Returns for each category: - name: Category title - summary: Dense overview of core facts, preferences, current projects, key context (~200 words) - additionalInfo: Lists specific topics available in this category and suggests when to load the full memories - memoryCount: Number of memories in category Also returns recentMemories: the 30 most recent memories in the bucket. Use the summary and additionalInfo to decide if/when to load full memories via list_category_memories.
| Argument | Type | Description |
|---|---|---|
| bucketId* | string | Bucket ID to get categories for |
{
"type": "object",
"required": [
"bucketId"
],
"properties": {
"bucketId": {
"type": "string",
"description": "Bucket ID to get categories for"
}
}
}List the user's memory buckets. Buckets are organizational folders for memories (e.g., 'Work', 'Personal', 'Health').
No arguments.
{
"type": "object",
"properties": {}
}Get all memories within a specific Smart Memory category. Use when a category's summary (from list_bucket_categories) indicates it's relevant to the current conversation. The categoryId persists across conversations.
| Argument | Type | Description |
|---|---|---|
| limit | number | Number of memories to retrieve (default: 20) |
| bucketId* | string | Bucket ID containing the category |
| categoryId* | string | Category ID to get memories from |
{
"type": "object",
"required": [
"bucketId",
"categoryId"
],
"properties": {
"limit": {
"type": "number",
"description": "Number of memories to retrieve (default: 20)"
},
"bucketId": {
"type": "string",
"description": "Bucket ID containing the category"
},
"categoryId": {
"type": "string",
"description": "Category ID to get memories from"
}
}
}Search and synthesize context from the user's past AI conversations that they have synced into their MemoryPlugin account. WHEN TO USE: When the user asks about their past decisions, patterns, preferences, relationships, projects, or a specific earlier conversation. HOW TO USE: - For simple lookups: a single query is fine - For complex/multifaceted topics: use parallel queries (via 'queries' array) approaching from different angles - timeline, emotions, people, decisions, outcomes, etc. - Set maxTokens per query (300-1000) to control how much context is returned. More tokens = richer detail but consumes more conversation window. - Use 'before'/'after' (ISO 8601 dates like "2025-01-15" or "2025-01-15T10:30:00Z") to constrain results to a date range. Bare dates are interpreted in UTC and are inclusive on both ends. - Use 'mode: "quality"' for slower but more thorough recall on hard or ambiguous queries; defaults to 'speed'. - If unclear how much context to fetch, ask the user. Returns synthesized summaries (not raw conversation logs) with source metadata for citations.
| Argument | Type | Description |
|---|---|---|
| mode | string | Retrieval mode. 'speed' (default) uses the fast path. 'quality' uses GPT-OSS planning, temporal exploration, and DeepSeek evidence judgment for more thorough recall at higher latency. |
| after | string | Optional ISO 8601 date lower bound (inclusive). Bare dates like "2025-01-15" mean start-of-day UTC. |
| query | string | Natural-language description of what the assistant is currently helping with. |
| before | string | Optional ISO 8601 date upper bound (inclusive). Bare dates like "2025-01-15" mean end-of-day UTC. |
Search the user's saved memories using hybrid semantic + keyword search. Returns matching memories ranked by relevance. MemoryPlugin stores memories the user wants to persist across AI conversations. Use when looking for specific saved information.
| Argument | Type | Description |
|---|---|---|
| limit | number | Number of memories to retrieve (default: 10) |
| query* | string | Search query |
| bucketId | string | Optional bucket ID to limit search scope |
{
"type": "object",
"required": [
"query"
],
"properties": {
"limit": {
"type": "number",
"description": "Number of memories to retrieve (default: 10)"
},
"query": {
"type": "string",
"description": "Search query"
},
"bucketId": {
"type": "string",
"description": "Optional bucket ID to limit search scope"
}
}
}Search documents the user has uploaded to their MemoryPlugin document library (not files uploaded directly to this conversation). MemoryPlugin file buckets store documents persistently across all AI chats. Returns relevant text passages with source file and page info. Use when: - User explicitly mentions their MemoryPlugin documents - User asks about "my files" or "my documents" and there are no files in the current conversation - If unsure whether they mean MemoryPlugin files or conversation files, ask to clarify
| Argument | Type | Description |
|---|---|---|
| topK | number | Number of results to return (default: 5, max: 20) |
| query* | string | Search query text |
| bucketId | number | Optional file bucket ID to limit search scope |
{
"type": "object",
"required": [
"query"
],
"properties": {
"topK": {
"type": "number",
"description": "Number of results to return (default: 5, max: 20)"
},
"query": {
"type": "string",
"description": "Search query text"
},
"bucketId": {
"type": "number",
"description": "Optional file bucket ID to limit search scope"
}
}
}Save information to the user's MemoryPlugin account. MemoryPlugin lets users build persistent memory across AI conversations. WHEN TO USE: When the user asks to remember something, or confirms that a specific fact, preference, decision, or project detail from the conversation should be kept for later. Save only that item. Ask the user which bucket to save to if unclear. Buckets are organizational folders (e.g., 'Work', 'Personal', 'Health').
| Argument | Type | Description |
|---|---|---|
| text* | string | The memory text to store |
| bucketId | number | Optional bucket ID to store the memory in |
{
"type": "object",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"description": "The memory text to store"
},
"bucketId": {
"type": "number",
"description": "Optional bucket ID to store the memory in"
}
}
}Edit a single memory's text or bucket, or move multiple memories to a different bucket. WHEN TO USE: When the user wants to correct, update, or reorganize their saved memories. Single memory: provide memoryId with optional text and/or bucketId/bucketName. Bulk move: provide memoryIds array with bucketId or bucketName. Bucket can be specified by ID (number) or name (string). If a name is given and no bucket exists with that name, one is created automatically.
| Argument | Type | Description |
|---|---|---|
| text | string | New text content (single memory only) |
| bucketId | number | Target bucket ID |
| memoryId | string | Encoded memory ID for single edit/move |
| memoryIds | array | Array of encoded memory IDs for bulk move (max 100) |
| bucketName | string | Target bucket name (auto-creates if missing) |
{
"type": "object",
"properties": {
"text": {
"type": "string",
"description": "New text content (single memory only)"
},
"bucketId": {
"type": "number",
"description": "Target bucket ID"
},
"memoryId": {
"type": "string",
"description": "Encoded memory ID for single edit/move"
},
"memoryIds": {
"type": "array",
"items": {
"type": "string"
},
"description": "Array of encoded memory IDs for bulk move (max 100)"
},
"bucketName": {
"type": "string",
"description": "Target bucket name (auto-creates if missing)"
}
}
}| queries | array | Array of query objects to process in parallel (max 15). |
| platform | string | Optional hint about the downstream chat platform. |
| maxTokens | number | Maximum tokens to allocate for injected context (defaults to 600, hard cap 2000). |
| conversationContext | string | Optional one-sentence summary of what the user is currently working on, to focus retrieval. Do not pass message text. |
{
"type": "object",
"properties": {
"mode": {
"enum": [
"speed",
"quality"
],
"type": "string",
"description": "Retrieval mode. 'speed' (default) uses the fast path. 'quality' uses GPT-OSS planning, temporal exploration, and DeepSeek evidence judgment for more thorough recall at higher latency."
},
"after": {
"type": "string",
"description": "Optional ISO 8601 date lower bound (inclusive). Bare dates like \"2025-01-15\" mean start-of-day UTC."
},
"query": {
"type": "string",
"description": "Natural-language description of what the assistant is currently helping with."
},
"before": {
"type": "string",
"description": "Optional ISO 8601 date upper bound (inclusive). Bare dates like \"2025-01-15\" mean end-of-day UTC."
},
"queries": {
"type": "array",
"items": {
"type": "object",
"required": [
"query"
],
"properties": {
"mode": {
"enum": [
"speed",
"quality"
],
"type": "string",
"description": "Per-query override for retrieval mode."
},
"after": {
"type": "string",
"description": "Per-query override; same semantics as top-level `after`."
},
"query": {
"type": "string",
"description": "The search query for this parallel request."
},
"before": {
"type": "string",
"description": "Per-query override; same semantics as top-level `before`."
},
"platform": {
"enum": [
"claude",
"chatgpt",
"typingmind"
],
"type": "string",
"description": "Optional hint about the downstream chat platform."
},
"maxTokens": {
"type": "number",
"description": "Maximum tokens for this query (defaults to 600)."
},
"conversationContext": {
"type": "string",
"maxLength": 500,
"description": "Optional one-sentence summary of what the user is currently working on, to focus retrieval. Do not pass message text."
}
}
},
"description": "Array of query objects to process in parallel (max 15)."
},
"platform": {
"enum": [
"claude",
"chatgpt",
"typingmind"
],
"type": "string",
"description": "Optional hint about the downstream chat platform."
},
"maxTokens": {
"type": "number",
"description": "Maximum tokens to allocate for injected context (defaults to 600, hard cap 2000)."
},
"conversationContext": {
"type": "string",
"maxLength": 500,
"description": "Optional one-sentence summary of what the user is currently working on, to focus retrieval. Do not pass message text."
}
}
}