# MemoryPlugin MCP server reference > MemoryPlugin gives AI tools one shared, permanent memory. Users save memories, sync chat history, and upload files once; every connected AI tool (21+ of them, ChatGPT, Claude, Gemini, and Cursor included) can recall them. Integration surfaces: a browser extension, a remote MCP server, and a desktop sync app. This document is the complete reference for the MemoryPlugin remote MCP (Model Context Protocol) server. The human-readable version lives at https://www.memoryplugin.com/mcp. ## Endpoints - Streamable HTTP (recommended): https://www.memoryplugin.com/api/mcp/mcp - HTTP + SSE (legacy clients): https://www.memoryplugin.com/api/mcp/sse ## Authentication OAuth 2.1 per the MCP authorization spec. No API keys. Unauthenticated requests receive a 401 with a `WWW-Authenticate` header pointing at the protected resource metadata, so spec-compliant clients run the sign-in flow on their own: dynamic client registration (RFC 7591), PKCE (S256), then a browser consent screen on memoryplugin.com. Tokens are scoped to the signed-in user's own account; shared buckets are not exposed over MCP. Discovery endpoints: - OAuth protected resource metadata (RFC 9728): https://www.memoryplugin.com/.well-known/oauth-protected-resource/api/mcp/mcp - OAuth authorization server metadata (RFC 8414): https://www.memoryplugin.com/.well-known/oauth-authorization-server Scopes: - `memory:read`: Read memories, buckets, and Smart Memory categories. Required for every connection. - `memory:write`: Store new memories, create buckets, edit and move memories. - `chat-history:read`: Recall synced chat history and read conversation summaries and transcripts. # Tools (14) ## Memories The notebook: durable facts, preferences, and decisions the user wants every AI to know. ### store_memory Writes to the account. Scope: `memory:write`. Saves a new memory to the user's account, optionally into a specific bucket. Duplicates are detected and ignored. When to use it: Whenever something worth remembering comes up: a preference, a decision, project details, personal context. Assistants should err on the side of saving and ask which bucket to use when it is unclear. Parameters: - `text` (string, required): The memory text to store. - `bucketId` (number, optional): Bucket to store the memory in. Defaults to the user's general bucket. ### search_memories Read-only. Scope: `memory:read`. Hybrid semantic and keyword search over saved memories, ranked by relevance. When to use it: When looking for specific saved information: a name, a preference, a decision. The best first call when the user references something they have told an AI before. Parameters: - `query` (string, required): Search query. - `bucketId` (string, optional): Limit the search to one bucket. - `limit` (number, optional): Results to return. Default 10, max 20. ### get_memories_and_buckets Read-only. Scope: `memory:read`. Returns recent (or all) memories plus the full bucket list in one call. Accepts an optional search query. When to use it: At the start of a conversation to load context, or when the assistant needs both memories and the bucket structure at once. Parameters: - `bucketId` (number, optional): Filter memories to one bucket. - `count` (number, optional): Number of memories to return. Default 10. - `all` (boolean, optional): Return every memory instead of a count-limited page. - `query` (string, optional): Optional search query; switches the call to relevance ranking. ### update_or_move_memories Writes to the account. Scope: `memory:write`. Edits a single memory's text or bucket, or moves up to 100 memories to another bucket in one call. Buckets can be referenced by ID or by name; a named bucket that does not exist is created. When to use it: When the user corrects a saved fact, or wants memories reorganized. Bulk moves are all-or-nothing: one unresolvable ID rejects the whole request. Parameters: - `memoryId` (string, optional): Memory to edit (single-memory mode). - `memoryIds` (string[], optional): Memories to move in bulk (max 100). Mutually exclusive with memoryId. - `text` (string, optional): Replacement text. Single-memory mode only. - `bucketId` (number, optional): Target bucket by ID. - `bucketName` (string, optional): Target bucket by name. Created automatically if missing. ## Buckets and Smart Memory Buckets are folders for memories. Smart Memory adds AI-generated categories inside a bucket so assistants can load context selectively instead of dumping everything. ### list_buckets Read-only. Scope: `memory:read`. Lists the user's memory buckets. When to use it: Before storing into or searching a specific bucket, or when the user asks how their memories are organized. Parameters: none. ### create_bucket Writes to the account. Scope: `memory:write`. Creates a new bucket. When to use it: When the user wants a new folder for a topic, project, or area of life. Ask for a name if none is given. Parameters: - `name` (string, required): Name for the new bucket. ### list_bucket_categories Read-only. Scope: `memory:read`. Lists a bucket's Smart Memory categories. Each category carries a ~200-word summary and pointers to what its full memories contain, plus the bucket's 30 most recent memories. When to use it: To get a token-efficient overview of a large bucket. Read the summaries first, then load only the relevant category with list_category_memories. Parameters: - `bucketId` (string, required): Bucket to list categories for. ### list_category_memories Read-only. Scope: `memory:read`. Returns the full memories inside one Smart Memory category. When to use it: After list_bucket_categories shows a category is relevant to the current conversation. Parameters: - `bucketId` (string, required): Bucket containing the category. - `categoryId` (string, required): Category to load. - `limit` (number, optional): Cap the number of memories returned. ## Chat history The archive: conversations synced from ChatGPT, Claude, and other platforms, searchable from any MCP client. ### recall_chat_history Read-only. Scope: `chat-history:read`. Searches past conversations and returns synthesized summaries with source citations, not raw logs. Supports up to 15 parallel queries, date-range filters, a token budget per query, and a slower quality mode for hard questions. When to use it: When the user asks about past decisions, projects, people, or anything their conversation history can answer. Use one query for simple lookups; for multifaceted questions, send parallel queries from different angles (timeline, people, decisions, outcomes). Parameters: - `query` (string, optional): What to look for. Required unless queries is used. - `queries` (object[], optional): Up to 15 query objects processed in parallel; each accepts the same fields as a single call. - `maxTokens` (number, optional): Token budget for returned context. Default 600, max 2000. - `before / after` (string, optional): ISO 8601 date bounds, inclusive. Bare dates are read as UTC. - `mode` (string, optional): "speed" (default) or "quality" for slower, more thorough recall. - `platform` (string, optional): Optional hint about the chat platform: "claude", "chatgpt", or "typingmind". - `conversationContext` (string, optional): Short summary of the current exchange, to ground retrieval. - `conversationHistory` (object[], optional): Recent dialogue turns as { role, content } objects (max 50), to ground retrieval. ### get_conversation_summary Read-only. Scope: `chat-history:read`. Returns an AI-generated summary of one conversation. Conversations under 5,000 tokens return the full transcript instead. When to use it: To dive into a specific conversation surfaced by recall_chat_history. Takes the conversationId from that tool's sources array. Parameters: - `conversationId` (string, required): ID from recall_chat_history's sources array. ### get_full_conversation Read-only. Scope: `chat-history:read`. Returns the complete transcript of one conversation, unsummarized. When to use it: When the exact wording matters or a summary is not enough. Same conversationId as get_conversation_summary. Parameters: - `conversationId` (string, required): ID from recall_chat_history's sources array. ### export_conversation Read-only. Scope: `chat-history:read`. Exports the full normalized transcript of one conversation as a JSON file and returns a temporary download URL (expires after 15 minutes, no auth) that the agent fetches to get the structured messages. When to use it: When the agent needs the whole conversation as structured data: too long to read inline, or destined for file-based analysis or scripting. Read short transcripts with get_full_conversation instead. Parameters: - `conversationId` (string, required): ID from recall_chat_history's sources array. ### chat_history_overview Read-only. Scope: `memory:read`. Returns an AI-generated overview of the user derived from their whole chat history. When to use it: For a broad picture of who the user is and what they work on, before any specific lookup. Parameters: none. ## Files Documents uploaded to the user's MemoryPlugin file buckets, searchable as passages. ### search_uploaded_files Read-only. Scope: `memory:read`. Semantic search over the user's uploaded documents. Returns relevant passages with the source file and page numbers. When to use it: When the user references their MemoryPlugin documents, or asks about "my files" and no file is attached to the current conversation. Parameters: - `query` (string, required): Search query. - `bucketId` (number, optional): Limit the search to one file bucket. - `topK` (number, optional): Passages to return. Default 5, max 20.