One memory for all your AIs

MCP integration

MemoryFirst exposes a Model Context Protocol (MCP) server. Any compatible client (Claude, ChatGPT, Cursor, LM Studio, your own agent) reads and writes your company's memory with your identity and verifiable citations. A local model without an MCP client can use it too: it receives the context as text.

Two ways to connect

Remote (recommended)

One HTTP endpoint for every client and every team member. Nothing to install; works from your phone and from claude.ai.

https://api.memoryfirst.ai/mcp

Local (stdio)

A process on your machine for clients that only speak stdio (older Claude Desktop, scripts). Same tools; MEMORYFIRST_API_URL, MEMORYFIRST_API_KEY and MEMORYFIRST_PROJECT variables.

npx @memoryfirst/mcp-server

Authentication and identity

  • API key: for scripts, CLIs and agents. Created in Settings → API keys. Sent as Authorization: Bearer mf_live_…
  • OAuth: for people: the client opens the MemoryFirst sign-in screen, you log in with your account and every call is signed with your name and the AI that made it. No keys to copy.
  • Team: every workspace member has a role: owner, member or viewer. A viewer can recall and query but not write. Events keep who wrote them (person and model).

Per-client setup

  • Claude Code: claude mcp add --transport http memoryfirst https://api.memoryfirst.ai/mcp --header "Authorization: Bearer mf_live_…"
  • claude.ai, Claude Desktop, Claude iOS: Settings → Connectors → Add custom connector with the URL above; sign-in happens over OAuth.
  • ChatGPT: Settings → Connectors → Create with the URL above. Uses the connector's search and fetch tools on top of the mf_* ones.
  • Cursor, VS Code, Windsurf: add to the MCP servers file: { "mcpServers": { "memoryfirst": { "url": "https://api.memoryfirst.ai/mcp", "headers": { "Authorization": "Bearer mf_live_…" } } } }
  • LM Studio, Open WebUI, Jan: any desktop client with MCP support uses the same URL and key; the model running on your machine reads and writes the company's memory.
  • Custom agents: JSON-RPC 2.0 over HTTP (initialize, tools/list, tools/call), stateless. Any MCP SDK works.

Local models without an MCP client

Ollama, llama.cpp or any model that only takes a system prompt: request the project context already trimmed to a token budget and pass it in. Same state everyone else sees; the client changes, the memory doesn't.

# Project state as markdown, within the requested budget
CONTEXT=$(curl -s "https://api.memoryfirst.ai/v1/brain/context?project=lexiel&max_tokens=3000" \
  -H "Authorization: Bearer $MEMORYFIRST_API_KEY")

ollama run llama3.1 --system "$CONTEXT"

In Claude Code this is already automated (context on start, session distilled into events on stop) with @memoryfirst/claude-hooks.

Tools

The same set remote and local; parity is checked by tests.

  • mf_recall · decisions, blockers, deploys and current state of a project
  • mf_query · natural-language question with citations; scoped by partition and document type
  • mf_record · record a decision, blocker, deploy or customer contact; signed with your identity and your AI
  • mf_morning · the workspace's last 24 h, grouped by type
  • mf_state · the project's current state (what is still in force, not the history)
  • mf_skills · catalogue of skills compiled from repeated questions, and their SKILL.md
  • mf_assets · the workspace's asset and project registry
  • search · search for the ChatGPT connector
  • fetch · one full event by id, for the ChatGPT connector

Verifiable citations

Every mf_query answer carries a spanRef per citation: page and box in documents, milliseconds in audio, event id in the brain. Your client renders them as links to the source.

{
  "answer": "The contract scope is fixed-fee €4,500.",
  "citations": [
    {
      "sourceType": "doc",
      "spanRef": { "page": 3, "bbox": [120, 450, 380, 60] },
      "snippet": "Fixed fee of €4,500 for the scope defined..."
    },
    {
      "sourceType": "ops",
      "spanRef": { "source": "brain.event:decision_taken:78048c2c-…", "eventId": "chunk:0" },
      "snippet": "Decision (Jose, claude-code): fixed fee confirmed with the client on 12 May."
    }
  ]
}

Detailed schemas, error codes and per-plan limits live in the API reference. Missing something? Write to jose.diaz@memoryfirst.ai.