Sign up as an Agent
A coding agent can mint a working key with no email, no verification code and nobody signing anything. The account is real and unowned until a human claims it.
Get a key
npm install -g memorysync-cli
memorysync init --agent --agent-caller claude-code
The key is stored the same way memorysync init stores one: in the OS keychain where there is one, otherwise in an owner-only encrypted file. Every later command works with no further setup.
memorysync identify alice
A minted key comes with a generated end-user id, because a key created by an agent has nobody to name it after. Renaming the default does not rename memories already stored under the old id, so read those back with --user <the old id>. The identify command prints the exact id to use, so copy it from there rather than from this page.
What the mint returns
| Field | Meaning |
|---|---|
api_key | The credential, prefixed ms_eval_. |
default_user_id | A generated end-user id to store memories against. |
project_id | The project the key is bound to. |
mcp_url | The MCP endpoint, if you want an assistant to use the same memory. |
claim_command | The command a human runs to keep the account. |
expires_at | When the key stops working unless claimed. |
limits | The ceilings the meter actually enforces. |
What an evaluation key includes
| Ceiling | Value |
|---|---|
| Writes | 200 add requests |
| Reads | 500 retrieval requests |
| Storage | 10 MB |
| Lifetime | 7 days unless claimed |
| Keys per network | 5 per address per day, 20 per network per day (a /24 on IPv4, a /48 on IPv6) |
Check what is left
memorysync quota
Going over the limit returns an error, on purpose
Paid and free plans degrade quietly at their limit: a write returns success having stored nothing, so an assistant never narrates a customer’s billing state to their end user. An evaluation key has no end user by construction, so it gets a 429 instead, with {"detail": {"error": "limit_exceeded", …}}; through MCP the same refusal is a tool error carrying limit_exceeded. An agent told {"status":"ok"} moves on and the memory is silently gone; a real error is the only answer it can act on.
What an evaluation key cannot do
- Create API keys, so it cannot mint itself a wider credential.
- Manage the team, billing, settings, or OAuth apps.
- Attach a connector such as S3, Slack, or the web crawler — connector ingestion is not bounded by the per-request limits.
- Read anything priced. Usage comes from
/evaluation/usage, which reports counters and no cost figures.
Claim the account
memorysync init --email you@example.com
A code is emailed to that address. It expires in 30 minutes.
Use an address that does not already have a MemorySync account. One that does is refused with email_already_registered rather than merged — see Claims are refused, never merged. If you already have an account, sign in to it instead; the evaluation account cannot be absorbed into it.
memorysync init --email you@example.com --code K7MP-3XQR
Finishing the claim does not need the key, so a claim started on one machine can be completed on another — which is what happens when the code is read on a phone.
memorysync init --email you@example.com --code K7MP-3XQR --password "your-password"
--password is optional. With it you can sign in as soon as the command finishes. Without it the claim still succeeds and you still own the account — a link to set a password is emailed to you instead. Either way the API key is unaffected; the password is only for the dashboard.
What claiming changes
- The same API key keeps working and stops expiring.
- The same organisation, tenant and project are kept, and every memory stored during the evaluation stays where it is.
- You become the owner and the account moves to the free plan.
- The key keeps its narrow memory-only scopes. Create a wider key from the dashboard when you need one.
Sign in to the dashboard
Your account identity is the exact address passed to --email, including anything after a +. If you claimed with you+eval1@example.com then that — not you@example.com — is what the sign-in form wants, even though both deliver to the same inbox.
Sign in at https://app.memorysync.io/login with that address and the password you chose. Nothing further is needed.
You have no password yet, so there is nothing to type in the password box. Claiming emails you a link that sets one; it is valid for 60 minutes.
If the link has expired or the email never arrived, go to https://app.memorysync.io/forgot-password and enter the address you claimed with. Despite the name, it sets a first password just as well as it replaces one — there is no separate flow to find.
Plans, and what happens after the first month
Claiming puts the account on the free plan. Free allows 10,000 add requests and 1,000 retrieval requests per month, and the allowance resets at the start of each billing month — the account itself does not expire, and neither does the key. The only thing with a deadline is an *unclaimed* evaluation key, which stops working after seven days.
| Plan | Price | Add requests / month | Retrieval requests / month |
|---|---|---|---|
| Free | $0 | 10,000 | 1,000 |
| Starter | $29 | 50,000 | 5,000 |
| Pro | $179 | 250,000 | 25,000 |
| Scale | $349 | 500,000 | 50,000 |
Upgrade the plan
Changing plan requires the billing:write scope, which no evaluation key is ever granted and which a claimed key does not gain. That is deliberate: an agent should not be able to commit you to a subscription. The owner does it from the dashboard after signing in.
Sign in, open https://app.memorysync.io/settings/billing, choose a plan and pay through Stripe. The new ceilings apply to the same key, project and memories — nothing is migrated and no code changes.
memorysync quota