DOCUMENTATION / MCP PROTOCOL SPECIFICATION V1

Model Context Protocol (MCP)

Connect your assistants to the same saved memories through the Model Context Protocol (MCP). Claude, ChatGPT, Cursor, VS Code, Gemini and custom agents can save and recall facts about your preferences, projects and history. MemoraMobi hosts the memory store and computes embeddings on our own servers.

1. The MCP Endpoint

Claude.ai, ChatGPT, Claude Code, Cursor and anything else that speaks MCP connect straight to our Streamable HTTP endpoint and read the same memories (see section 2 for authentication).

POST https://memoramobi.com/mcp

Canonical endpoint: https://memoramobi.com/mcp (also served on https://app.memoramobi.com/mcp).

2. Authentication

Choose the authentication method your client supports:

Bearer Token Header

Authorization: Bearer mm_live_...

Standard HTTP header for clients supporting custom headers (e.g. Claude Code, Cursor, Windsurf).

Path-Key URL (Header-less)

POST https://memoramobi.com/mcp/k/mm_live_...

For clients that accept a URL but cannot send custom headers.

OAuth 2.1 + DCR

PKCE / Dynamic Client Registration

For browser-based custom connectors such as Claude.ai and ChatGPT. Approve access through "Sign in with MemoraMobi".

Tools without remote MCP: npx -y https://memoramobi.com/memoramobi-0.3.0.tgz with your API key.

3. Quickstart Request (Curl Example)

Test your connection using a standard MCP initialize JSON-RPC 2.0 payload:

curl -X POST https://memoramobi.com/mcp \ -H "Authorization: Bearer mm_live_YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "jsonrpc": "2.0", "id": 1, "method": "initialize", "params": { "protocolVersion": "2024-11-05", "capabilities": {}, "clientInfo": { "name": "curl-test", "version": "1.0.0" } } }'

4. Available MCP Tools

MemoraMobi registers 7 core MCP tools during initialization. Tool descriptions below are pulled verbatim from the live server definitions:

Tool Name Verbatim Description
remember Store a durable fact about the user. Check `similar` in the response: if an existing memory covers the same fact, call `supersede` on it instead of storing a near-duplicate. Returns {status:"created"|"duplicate", id, similar:[{id,content,score}]}. Use tier "profile" for stable facts about who the user is, "log" for dated events, "note" (default) for everything else.
remember_many Store multiple durable facts about the user in one call. Prefer this over several separate `remember` calls whenever you notice more than one new fact worth saving — for example at a natural pause, or before your final reply in a conversation where several things were learned. Do not wait to be asked; saving proactively is expected. Each item is deduped independently against existing memories, in the order given. Returns {results:[{status:"created"|"duplicate"|"error", id?, similar?, error?}]}, same order and length as the input.
recall Call this at the start of any conversation and whenever the user references their preferences, history, projects, or people. Returns the user's stored memories ranked by relevance. Hybrid semantic + keyword search; results are {id, content, tier, tags, category, score, created_at}.
forget Soft-delete one memory. Pass `id` (from recall/list) to delete it, or `query` to find it: with a query, the memory is deleted only when one confident match exists; otherwise {candidates:[...]} is returned and you must call again with the chosen id. Never deletes on a guess.
list Browse memories newest first with keyset pagination (no search). Returns {items, next_cursor}; pass next_cursor back to get the next page.
supersede Replace an existing memory with an updated fact, keeping history. Use this instead of remember when a fact changed (new address, new preference, corrected detail). Returns {id: new, supersedes: old}.
stats Counts of stored memories by tier, pending embeddings, and the embedding model in use. Returns {total, by_tier, pending_embeddings, embedding_model}.

5. REST API

You can also read and write memories over plain HTTPS JSON with the same API keys (Authorization: Bearer mm_live_...). Good for scripts, custom GPT Actions, automations and your own apps.

RequestWhat it does
GET /api/memories?q=&limit=List memories, or search them by meaning + keywords when q is set.
POST /api/memoriesSave a memory: {"content", "tier": "profile|log|note", "tags": []}. Duplicates come back flagged.
GET /api/memories/:idOne memory with its version history.
PATCH /api/memories/:idEdit content, tier, tags or group (history kept).
POST /api/memories/:id/supersedeReplace an outdated fact with a newer one.
DELETE /api/memories/:idForget a memory (restorable with POST /api/memories/:id/restore).
GET /api/exportDownload everything.
curl -H "Authorization: Bearer mm_live_..." "https://app.memoramobi.com/api/memories?q=coffee&limit=5"

6. Encryption

Every memory — text, tags and search data — is stored encrypted with a key that is yours alone. A stolen copy of our database or backups can't read it. The key is kept by a locked-down service on our server and used only while you or an assistant you approved is using your memories.

Looking for your assistant’s setup guide?

Choose from 34 named assistants. Follow its guide, use one-click install where supported, and check that the connection worked.

Choose your assistant →