What this is
A coding agent can connect itself to Anona Memory without you navigating the dashboard beyond one approval screen. You approve the connection once, in a browser. You never copy an API key, and never paste a password. Which route it takes depends on your client, and The four ways to connect below is the single answer to that. The rest of this page is the native OAuth route in detail.The one thing you do
A browser window opens. You sign in with Google. You see the name of the client that is asking for access, and you press Approve. That approval is the whole security model, so read the client name before you press it.The flow
The four ways to connect
This is the one table to read; every other page links here rather than restating it. An API key is not required to connect over MCP — two of these paths need no key at all, and a third needs no account. A key is required only to call the REST API or an SDK directly.
Paths A, B and C all end with the same MCP tools. They differ only in who does
the OAuth dance: your client (A), the CLI (B), or nobody (C).
The credential paths A and B mint is MCP-scoped, and the REST API refuses
it — see Limits. For REST or an SDK you need either an API key
(path D) or a temporary profile’s token (path C), which does work wherever a key
does. This is also why
anona record / retrieve / reason run on a temporary
profile and refuse on a signed-in account.
Setup per path
- A. Native MCP OAuth
- B. anona login
- C. Temporary profile
- D. API key
The flow itself is proven. On 2026-10-09 a conforming OAuth 2.1 client ran
it against production start to finish: protected-resource discovery, the
WWW-Authenticate hint on an unauthenticated call, authorization-server
metadata, RFC 7591 dynamic registration, PKCE S256 with a loopback redirect on
an ephemeral port, a human approving on the consent screen, the code exchange,
a tools/call that returned real spaces, and a refresh that rotated the token.What that does not prove is any particular client’s own implementation. The
table above says which ones have been exercised.What you get
Once connected, the agent has the MCP tools:record, retrieve, reason,
list_spaces, get_profile, get_model, and get_user_profile. See
MCP Integration for what each one does and how transports
differ.
Limits
An OAuth credential minted this way is not an API key. It works over MCP, and only over MCP. It does not work with the SDK or with raw HTTP calls to the REST API. For those, mint a key from the dashboard (path D), or use a temporary profile’s token (path C), which the REST API does accept. This is also whyanona record, anona retrieve and anona reason never use
the MCP login: they call the REST API, and this credential is the one thing the
REST API will not take. They use an API key, the separate command-line login
that anona login also stores, or a temporary profile. See
Sign in & credentials.
Troubleshooting
Nothing happened when the agent tried to use memory, and no browser opened. Adding the MCP server does not sign you in, and a failed tool call does not start the flow. You have to begin it: run/mcp in Claude Code (or /mcps in
OpenCode), pick the Anona server, and authenticate. The browser opens from
there. An agent cannot do this for you; it is an interactive picker in your
own terminal.
Your agent says Anona is connected, but it has no memory tools. Adding the
MCP server does not load its tools into a session that is already running;
Claude Code reads its server list at startup. Restart Claude Code in the same
directory and ask again. The browser approval opens on the first memory call
after that, not when the server is added. If the server shows as disabled for
this project, run /mcp and enable it first.
The approval link expired. It is valid for 15 minutes. Start the flow again
from the beginning rather than retrying the dead link.
You approved, and the first tool call still fails with “No active API key for
this organization.” The account was created and the approval worked; the
failure is on our side, not yours. A brand-new account holds no API key by
design, and the gateway needs a way to tell the engine which organization you
are without one. If you see this, the deployment you are talking to does not
have that configured yet. Report it rather than minting a key to work around
it. The workaround hides exactly the thing we need to know is broken.
The agent says it is connected but no memory is stored. Ask it to run
retrieve on something you know it recorded. An agent that treats your “I
approved it” as proof of connection will report success it has not verified;
a tool call that returns data is the only evidence that counts.
Do not poll the login endpoint. It allows 10 attempts per 5 minutes per
address, so a polling loop locks you out within a minute. Wait for the human to
act instead of retrying.
Signed up with a password instead of Google, and the approval broke. The
password path requires verifying your email address first, and starting that
detour interrupts the consent flow you had open. Verify your address, then
start the flow again from the beginning.
A verification email cannot be resent. If it expired before you clicked it,
sign up again with the same address rather than waiting for a second email.
What the new-account response is telling you. It names verifying your
address as the next step, and that is the only thing it actually requires.