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:
tagsandtag_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, onrecordand onretrievealike.fallback_space_idsays where to go when nothing fits, and onretrievemax_targetscaps 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"— makesreasonread past the space’s memory models. See Depth.
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
- Remote (recommended)
- Local (stdio)
Connect directly to the hosted gateway. There is no local process to run.Authentication uses the same API key as the REST API, so there is no separate credential
to manage.Hermes Agent: add a Hermes also supports To trigger sign-in:
mcp_servers entry to ~/.hermes/config.yaml:auth: oauth in place of a static header, the same OAuth flow
described below for Claude Code.OpenClaw: add the server under nodeHost.mcp.servers in openclaw.json on the
node machine. See OpenClaw below for the full block. That path takes an
API key only, not OAuth.Connecting without a key. Leave off --header and an OAuth-capable client such as
Claude Code, Claude Desktop, or Cursor signs you in instead.add does not open a browser, and that is expected. It only writes the server to your
config file. OAuth sign-in does not run until the client actually connects, which
happens at session start or when you run /mcp. After add you are not signed in yet.No API key is needed for this path. An organization that has never created
one works from its first tool call: the gateway proves your tenancy to the
memory service itself. This was not true before 2026-10-01, when a keyless
organization got
403 No active API key for this organization and had to
create a key once to work around it. If you still see that error, something is
wrong on our side rather than with your setup, so please report it instead of
minting a key.One deliberate exception: an organization that created keys and then revoked
all of them is refused, because revoking every key is how you cut off access.
Create a new key to restore it.- Run
/mcpin Claude Code, or restart it. This connects to the server for the first time. - Your browser opens the Anona consent screen. Sign in with email and password, or with Google, GitHub, or Microsoft, whichever your account uses.
- Approve, and the client stores the token. No API key ever touches its config.
anona_tmp_, created by
anona start, authenticates /mcp the same way an API key does, so no account or
sign-in is needed. On such a profile no tool needs a space_id. See
Temporary profiles for the limits and how to claim one.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
- Get a key from the dashboard, under API keys.
- Register the server:
- Run
/mcpin Claude Code, or restart it, to connect. - Try it: “Remember that I prefer dark mode and use VS Code.”
Hermes Agent
- Get a key from the dashboard, under API keys.
- Add to
~/.hermes/config.yaml: - Set
ANONA_API_KEYin~/.hermes/.envor your shell environment. - If Hermes is already running, it auto-reloads the config within 30s, or run
/reload-mcpin-session. Otherwise the server picks it up on next start. - Try it: “Remember that I prefer dark mode and use VS Code.”
OpenClaw
- Get a key from the dashboard, under API keys.
- On the node machine (not the OpenClaw gateway), add to
openclaw.json.openclaw config fileprints its path. - Set
ANONA_API_KEYin the node’s environment, thenopenclaw node restart. The node host does not watch this file. - This path takes an API key only, not OAuth.
- Try it: “Remember that I prefer dark mode and use VS Code.”
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.