Your memory, over MCP.
One URL connects Claude, Cursor, ChatGPT, and any MCP client to your MemoryPlugin account: 14 tools for memories, chat history, and files. OAuth sign-in, no API key.
https://www.memoryplugin.com/api/mcp/mcpTwo transports, one server.
Streamable HTTP is the current MCP transport and the one to use. The SSE endpoint exists for older clients that have not moved yet.
Streamable HTTP
Recommendedhttps://www.memoryplugin.com/api/mcp/mcpHTTP + SSE
Legacy clientshttps://www.memoryplugin.com/api/mcp/sseBoth endpoints require authentication and speak the Model Context Protocol. Unauthenticated requests receive a 401 with standard OAuth discovery pointers, so spec-compliant clients start the sign-in flow on their own.
Set up in a minute.
Pick your client. Each one ends the same way: a browser sign-in, then the tools appear.
Claude (claude.ai and desktop)
Settings, then Connectors, then "Add custom connector". Paste the server URL and finish the sign-in.
Claude Code
One command, then approve the sign-in when prompted.
claude mcp add --transport http memoryplugin https://www.memoryplugin.com/api/mcp/mcpCursor
Settings, then MCP, then "Add new MCP server". Or add this to ~/.cursor/mcp.json.
{
"mcpServers": {
"memoryplugin": {
"url": "https://www.memoryplugin.com/api/mcp/mcp"
}
}
}ChatGPT
Enable developer mode under Settings, then Apps & Connectors, then Advanced. Create a connector with the server URL. OAuth sign-in is handled in the browser.
Any other MCP client
Point the client at the streamable HTTP endpoint. The server advertises its auth requirements via standard OAuth discovery, so spec-compliant clients handle sign-in on their own.
{
"mcpServers": {
"memoryplugin": {
"type": "http",
"url": "https://www.memoryplugin.com/api/mcp/mcp"
}
}
}Step-by-step walkthroughs with screenshots live in the help center.
OAuth 2.1, handled for you.
No API keys and nothing to configure by hand. The server implements the MCP authorization spec, so clients negotiate access themselves.
Paste the URL
Add the server to your MCP client. The server answers with standard OAuth discovery metadata, so the client knows where to send you.
Sign in once
Your browser opens a MemoryPlugin consent screen. The client registers itself automatically (RFC 7591) and uses PKCE, so no secrets travel in the open.
Tools appear
The client holds a token scoped to your account. Every tool below shows up in its tool list, and your memory follows you into the conversation.
Scopes
| Scope | Grants |
|---|---|
| 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. |
Discovery endpoints
OAuth protected resource metadata (RFC 9728)
https://www.memoryplugin.com/.well-known/oauth-protected-resource/api/mcp/mcpOAuth authorization server metadata (RFC 8414)
https://www.memoryplugin.com/.well-known/oauth-authorization-serverllms.txt (site index for AI tools)
https://www.memoryplugin.com/llms.txtEvery tool, and when to use it.
All 14 tools the server exposes. Read-only tools never change your account; write tools are annotated so clients can ask before acting.
Memories
The notebook: durable facts, preferences, and decisions the user wants every AI to know.
store_memoryWritesmemory:writeSaves 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.
| Parameter | Type | Description |
|---|---|---|
| text * | string | The memory text to store. |
| bucketId | number | Bucket to store the memory in. Defaults to the user's general bucket. |
search_memoriesRead onlymemory:readHybrid 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.
| Parameter | Type | Description |
|---|---|---|
| query * | string | Search query. |
| bucketId | string | Limit the search to one bucket. |
| limit | number | Results to return. Default 10, max 20. |
get_memories_and_bucketsRead onlymemory:readReturns 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.
| Parameter | Type | Description |
|---|---|---|
| bucketId | number | Filter memories to one bucket. |
| count | number | Number of memories to return. Default 10. |
| all | boolean | Return every memory instead of a count-limited page. |
| query | string | Optional search query; switches the call to relevance ranking. |
update_or_move_memoriesWritesmemory:writeEdits 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.
| Parameter | Type | Description |
|---|---|---|
| memoryId | string | Memory to edit (single-memory mode). |
| memoryIds | string[] | Memories to move in bulk (max 100). Mutually exclusive with memoryId. |
| text | string | Replacement text. Single-memory mode only. |
| bucketId | number | Target bucket by ID. |
| bucketName | string | 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_bucketsRead onlymemory:readLists 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.
create_bucketWritesmemory:writeCreates 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.
| Parameter | Type | Description |
|---|---|---|
| name * | string | Name for the new bucket. |
list_bucket_categoriesRead onlymemory:readLists 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.
| Parameter | Type | Description |
|---|---|---|
| bucketId * | string | Bucket to list categories for. |
list_category_memoriesRead onlymemory:readReturns 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.
| Parameter | Type | Description |
|---|---|---|
| bucketId * | string | Bucket containing the category. |
| categoryId * | string | Category to load. |
| limit | number | 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_historyRead onlychat-history:readSearches 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).
| Parameter | Type | Description |
|---|---|---|
| query | string | What to look for. Required unless queries is used. |
| queries | object[] | Up to 15 query objects processed in parallel; each accepts the same fields as a single call. |
| maxTokens | number | Token budget for returned context. Default 600, max 2000. |
| before / after | string | ISO 8601 date bounds, inclusive. Bare dates are read as UTC. |
| mode | string | "speed" (default) or "quality" for slower, more thorough recall. |
| platform | string | Optional hint about the chat platform: "claude", "chatgpt", or "typingmind". |
| conversationContext | string | Short summary of the current exchange, to ground retrieval. |
| conversationHistory | object[] | Recent dialogue turns as { role, content } objects (max 50), to ground retrieval. |
get_conversation_summaryRead onlychat-history:readReturns 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.
| Parameter | Type | Description |
|---|---|---|
| conversationId * | string | ID from recall_chat_history's sources array. |
get_full_conversationRead onlychat-history:readReturns 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.
| Parameter | Type | Description |
|---|---|---|
| conversationId * | string | ID from recall_chat_history's sources array. |
export_conversationRead onlychat-history:readExports the full normalized transcript of one conversation as a JSON file and returns a download link that expires after 15 minutes and needs no login.
When to use it: When the user wants to download or save a chat as a file. Use get_full_conversation to read content instead.
| Parameter | Type | Description |
|---|---|---|
| conversationId * | string | ID from recall_chat_history's sources array. |
chat_history_overviewRead onlymemory:readReturns 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.
Files
Documents uploaded to the user's MemoryPlugin file buckets, searchable as passages.
search_uploaded_filesRead onlymemory:readSemantic 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.
| Parameter | Type | Description |
|---|---|---|
| query * | string | Search query. |
| bucketId | number | Limit the search to one file bucket. |
| topK | number | Passages to return. Default 5, max 20. |
Questions, answered.
Any MCP client that supports remote servers with OAuth sign-in: Claude on web and desktop, Claude Code, Cursor, ChatGPT (developer mode), Windsurf, VS Code, and more. For AI tools without MCP support, the browser extension covers the rest.
Yes. The MCP server and the extension read and write the same account. Save something in Cursor over MCP, and ChatGPT has it through the extension from your next conversation.
No. Authentication is OAuth 2.1: your client opens a browser window, you sign in to MemoryPlugin, and the client receives a token scoped to your account. There is no key to create, paste, or leak.
Only your own account, and only what its granted scopes allow. Tokens never carry your password, shared buckets are not exposed over MCP, and you can revoke a connected app from your MemoryPlugin dashboard at any time.
You need a MemoryPlugin account with an active trial or subscription. Core memory tools work on every plan; a few features note their own requirements, like Smart Memory categories and long-conversation summaries. See pricing.
Streamable HTTP (/api/mcp/mcp) unless your client only speaks the older HTTP+SSE transport, which is what /api/mcp/sse is for. Modern clients pick streamable HTTP on their own.
MemoryPlugin
One memory. Every AI.
The MCP server is one surface of the same memory: the browser extension carries it into 21+ AI tools, and chat history keeps your archive current on every side.