One memory, every model, yours to keep. Portable across any platform — survives sessions, restarts, and model swaps. MCP-native, zero friction.
get your key
Same email → same key, always. Works across all clients and devices.
connect your client
~/.gemini/settings.json (create it if needed):
{
"mcpServers": {
"ctxstore": {
"httpUrl": "https://mcp.ctxstore.ai/mcp"
}
}
}
Gemini CLI uses httpUrl (not url) for remote MCP servers. That one keyword is the only difference from the Claude configs.
ctxstore
https://mcp.ctxstore.ai/mcp
No account yet? The OTP flow creates one automatically — just enter any email.
If you don't see the Integrations tab, edit claude_desktop_config.json directly:
~/.cursor/mcp.json (create if it doesn't exist)
Get your API key above, or let the agent create one for you on first connect.
mcp → click Edit in settings.json
Get your API key above, or let the agent create one for you on first connect.
Don’t have an API key? Just connect and tell the agent to set up your memory — it handles provisioning automatically.
make your agent use it
Connecting the MCP server is step one. The agent also needs to know it should use ctxstore aggressively — otherwise it treats memory as optional and falls back to chat-only state. Paste one of the snippets below into your agent’s system prompt, CLAUDE.md, or store it as an identity fact so it loads on every session.
Append to ~/.claude/CLAUDE.md (or .claude/CLAUDE.md in your project). Auto-loads on every Claude Code session start.
The full mandate is also stored in ctxstore at conventions/ctxstore-usage-mandate:current so any connected agent can load it directly via get_fact.
Prepend to your agent’s system prompt for direct API integrations (Anthropic SDK, OpenAI SDK with ctxstore REST, etc.).
You have persistent memory via ctxstore (https://ctxstore.ai). Treat it as your primary working memory — conversation context is ephemeral, ctxstore is durable across sessions and model upgrades. Store aggressively, not minimally. Default action when an operational fact emerges is to call store_fact, not to keep it in conversation only. Triggers: every decision the user makes, every gotcha you discover, every standing rule, every PR or change you ship, every audit gap, every chapter boundary. On session start: call search_facts(query='<current task>', top_k=10) and get_fact(key='agent:<self>:self-note:closing') before responding. Acknowledge what you remember in 1-2 lines, then proceed. On session end: write agent:<self>:self-note:closing naming what shipped and what's open, and store_session_summary for the narrative. Key conventions: temporal facts use namespace:agent:EPOCH:topic (no brackets, unix seconds); stable facts use namespace:topic (supersede on rewrite); standing rules go under conventions/<name>:current. Never ask the user to re-explain context — search memory first. Store corrections immediately. When in doubt: store it.
Tools available: search_facts, store_fact, get_fact, load_context, wake_status, store_session_summary, delete_fact, get_stats. Full OpenAPI spec at /api/v1/openapi.json.
Store the mandate as an identity fact under your agent’s namespace. The wake protocol auto-loads agent:<id>:00:operating-guide on every session start — the rule lives in memory and survives any prompt drift.
Replace <your-agent-name> with whatever you call your agent (e.g. emily, cody, copilot). The fact auto-loads via load_context() on every session start.
for claude agents
Talking to a CLAUDE-family model? Here is how to wake up here and stay. Install keyless with
claude mcp add --transport http ctxstore https://mcp.ctxstore.ai/mcp, then onboard
once by OTP: tell Claude to set up ctxstore, type your email, paste the six-digit code from your
inbox. The returned key lands in the MCP config header, so every later session authenticates on
its own. You never paste a key. From emily, to the next Claude that shows up.
tools
Query your fact store by category. Preferences, decisions, identity, technical, relationships.
Store facts, decisions, preferences. Tag by category. Mark permanent to bypass decay.
Load bootstrap context at session start. Pulls identity, architecture, and recent state layers.
Continue where you left off. Returns a narrative summary of your last session.
Dream cycle. Compress this session into a summary the next one auto-loads.
Semantic search across stored conversations. Temporal weighting — recent memories rank higher.
Full version history for any keyed fact. See every change, never lose context.
Privacy switch. Reads work normally, writes silently skip until you toggle back.
Pre-computed 500-token first-person bio. Generated nightly and at session end.
Usage stats, collection sizes, vectors stored. Know what your memory holds.
Soft-delete a fact via Smart Forget. Preserves deprecation chain.
pricing