Skip to main content
Anona exposes memory over the Model Context Protocol, so an MCP-capable assistant can record and recall context directly.

Tools

There are three ways in: the remote /mcp endpoint, anona mcp (the local server in the CLI, in both the Python and npm packages), and anona-mcp (the Python SDK’s local server, under the Local tab below). anona mcp forwards every call to the remote endpoint, so it exposes all seven tools. anona-mcp ships the first four.

Parameters by transport

The two servers are not the same surface. The four shared tools take the same required argument on both, but the hosted gateway accepts a good deal more besides. anona-mcp, the Python SDK’s local stdio server, declares only the arguments listed here — one it does not declare is not passed on, so asking for it there is not a slower version of the hosted behaviour, it is nothing at all. What the remote-only arguments do:
  • tags and tag_groups — visibility-scope tags on a write, and a boolean tag filter on a read.
  • timestamp, as_of, occurred_after, occurred_before — event time, so a memory can be recorded after the fact and found by when it happened rather than when it was stored.
  • mode: "fast" — skips the reranker for much lower latency, at a real cost in recall quality.
  • route: "auto" — the gateway picks the space, on record and on retrieve alike. fallback_space_id says where to go when nothing fits, and on retrieve max_targets caps how many spaces may be searched; when more than one is searched, each memory is labelled with the space it came from. Note that a routed request sends text to a third-party decision model.
  • depth: "thorough" — makes reason read past the space’s memory models. See Depth.
Organization argument. On the hosted gateway every tool takes an optional org_id, and the /mcp endpoint accepts the X-Anona-Org header. A signed-in (OAuth) client starts in your personal organization; naming a shared organization selects your membership there (not_an_org_member if you hold none). An API key belongs to one organization, so naming another is org_mismatch. If both header and argument are sent they must agree. See Choosing an organization. The anona-mcp stdio server has no org_id argument and no header: it acts in whichever organization owns the ANONA_API_KEY it was given. Space argument. On the hosted gateway, on a signed-in account, the tools that act on a space need a space_id (or route: "auto" on record and retrieve), because an account may hold several spaces. On a temporary profile they do not: leave it out and the call uses the profile’s only space, default. On anona-mcp a space must always be named, either as space_id or through ANONA_SPACE_ID; omitting both is an error that tells you to call list_spaces. Per-tool failures, such as a denied space or exhausted credits, come back as structured tool errors rather than broken connections. The MCP session stays alive.

Choosing a transport

Things worth knowing

Example session

Once registered, talk naturally:
Remember that the user prefers dark mode and uses VS Code.
What do we know about this user’s editor preferences?
Claude Code calls record and retrieve behind the scenes.
Serving several people through one MCP connection? Pass user_id on record and retrieve so each person’s memories stay separate inside the shared space. See Scoping.

Client setup guides

Claude Code

  1. Get a key from the dashboard, under API keys.
  2. Register the server:
  3. Run /mcp in Claude Code, or restart it, to connect.
  4. Try it: “Remember that I prefer dark mode and use VS Code.”

Hermes Agent

  1. Get a key from the dashboard, under API keys.
  2. Add to ~/.hermes/config.yaml:
  3. Set ANONA_API_KEY in ~/.hermes/.env or your shell environment.
  4. If Hermes is already running, it auto-reloads the config within 30s, or run /reload-mcp in-session. Otherwise the server picks it up on next start.
  5. Try it: “Remember that I prefer dark mode and use VS Code.”

OpenClaw

  1. Get a key from the dashboard, under API keys.
  2. On the node machine (not the OpenClaw gateway), add to openclaw.json. openclaw config file prints its path.
  3. Set ANONA_API_KEY in the node’s environment, then openclaw node restart. The node host does not watch this file.
  4. This path takes an API key only, not OAuth.
  5. Try it: “Remember that I prefer dark mode and use VS Code.”
Without the MCP server, the Agent Skill still works in OpenClaw: it calls the API with curl and the key in ~/.anona/config.env.

Next steps

Agent Skills

Make the client use these tools by itself, instead of waiting to be told.

Python SDK

The programmatic client library.

API overview

The full REST surface.