Guides

Plans and limits

What each limit means, the Free plan's numbers, how calls are counted, and what happens as you approach and pass your monthly allowance.

Plans set how many projects and keys you can have, how many agents can connect, how many calls you can make each month, how long logs are kept, and how fast a project can be called. This page lists those limits with the Free plan's numbers, explains exactly what counts as a call, and says what you see as you approach and pass your allowance.

Plans

There are four plans: Free, Pro, Team and Enterprise. New accounts start on Free. Moving to another plan is not self-service yet. The Billing & plan page says "Self-serve upgrades are not open yet; ask us and we will move your account", and its upgrade buttons are disabled.

The limits

These are the Free plan's numbers.

LimitFreeWhat it counts
Calls per month2,000Calls that reached an agent, per account, across all projects, per UTC calendar month
Past the allowanceCalls are refusedPaid plans keep working and are counted instead
Log and trace history3 daysHow long Logs and Traces rows stay readable
Projects1Projects in your account
API keys per project2Active keys (not revoked, not expired) in one project
Agent connections per project3Agents (processes) connected to one project at once
Tools per agent256Tools one agent registers
Size of one tool's schema64 KiB (65,536 bytes)The JSON Schema of one tool, as text
Requests per minute, per project600Every request to the project's MCP endpoint
Agent connection attempts per minute, per project60connect requests to one project
Playground runs10 a week, per accountTool runs from the Playground or the project page's tester
Call timeout30 secondsHow long the gateway waits for your agent to answer one call

Paid plans have higher limits. Contact us for the numbers.

What each limit looks like when you reach it

LimitWhat you see
Calls per monthThe client gets 429 with JSON-RPC code -32002. See At 80% and at 100%
ProjectsCreating a project fails with The <plan> plan is limited to <n> projects.
Keys per projectCreating a key fails with The <plan> plan is limited to <n> active keys per project.
Agent connectionsYour agent's connect request fails with 429, Too many agent connections: the <plan> plan allows <n>.
Tools per agentRegistration fails with 400, Too many tools: limit is <n>.
Schema sizeRegistration fails with 400, Schema for "<tool>" exceeds <n> bytes.
Requests per minute429 with a Retry-After header. See Rate limits
Connection attempts per minute429 with a Retry-After header
Playground runsThe playground allows <n> runs a week and they are used up. It resets <date> UTC.
Call timeoutThe call fails with Request for tool "<name>" timed out after <ms>ms. and is counted

The exact text of every message is in Errors.

The call timeout

The gateway waits up to 30 seconds for your agent to answer a call. You can lower it for a project, to a whole number of seconds from 1 to 30, under Project settings, Call timeout (seconds). Leave it blank for 30. The same timeout applies to resource reads and prompts. When it runs out, the client gets an error result, your handler keeps running, and a late result is dropped. For work that takes longer, return a job reference and add a second tool to poll it.

Limits on every plan

LimitValue
Webhooks per account5
Tool overrides (disable, description, cache, reads or writes) per project256
Client allow-list entries per project20 addresses or ranges
Tool patterns in one client key's allow-list50
Key lifetime1 to 365 days, or none
Result cache time per tool0 (off) to 3,600 seconds
Resources per agent1,000
Tool and prompt namesLetters, digits, _ and -, 1 to 64 characters
Size of one registration request512 KB
Size of one tool result, and of one MCP request4 MB
CSV exports6 a minute per account, at most a year per export, 100,000 rows for logs
Failed key attempts from one address30 a minute, then 429

What counts as a call

A call is billable when it reaches your agent: a tools/call, resources/read or prompts/get that your agent answered, answered with an error, or did not answer in time. A call that times out is counted, because it ran your code.

These are free and not counted:

  • Requests refused before reaching an agent: a bad or missing key, a rate limit, a suspended project, an allowance already used up, or no agent connected.
  • Calls whose arguments fail the tool's schema. They never reach your handler.
  • Calls that found no connected agent serving that tool, even though they were logged.
  • Calls answered from the gateway's result cache.
  • initialize, tools/list, resources/list, prompts/list and ping.
  • Playground and project-page tester runs.

The count is kept per account per UTC month and resets on the 1st of each month at 00:00 UTC, with no action from you. It is enforced to within a few seconds of traffic, not to the single call, so you can slightly exceed your limit before it blocks, and the meter on screen can trail the truth by a moment.

At 80% and at 100%

PointWhat happens
80%The meter in the sidebar turns amber and Billing & plan gets a Near badge. A banner on the Dashboard reads <used> of <limit> calls used this month. Check connection on a project warns Most of the monthly allowance is used. You get one email and one allowance.warning webhook
100% on FreeThe meter and banner turn red and the badge reads Limit. Billable requests are refused with 429 and code -32002 until the 1st (UTC). You get one email and one allowance.exceeded webhook
100% on paid plansThe same meter, banner and notifications, but calls keep working and are counted as overage. Nothing is actually charged, because billing is not live

The refusal on Free looks like this:

json
{
  "jsonrpc": "2.0",
  "id": 1,
  "error": {
    "code": -32002,
    "message": "Monthly allowance of 2,000 calls on the Free plan is used up. It resets on the 1st (UTC), or upgrade the plan."
  }
}

Only billable methods are refused. Listing tools stays free, so a client can still connect and show this message instead of failing mysteriously. A batch request that contains any billable call is refused as a whole. A call that would be answered from the cache is still refused once the allowance is used up, because the check runs first.

The email and webhook checks run every 10 minutes and fire once per level per month. See Alerts and webhooks.

Rate limits

Requests to a project's MCP endpoint are limited per minute per project, not per key, so every client of the project shares one budget. Every request counts, including initialize and tools/list, and ones that later fail. Cache hits count too.

The limit is a token bucket: the full per-minute budget is available at once and refills continuously. A burst up to the budget is fine, and a steady rate above it gets a 429:

http
HTTP/1.1 429 Too Many Requests
Retry-After: 1
Content-Type: application/json

{"error":"Rate limit exceeded: 600 requests per minute."}

Retry-After is the number of whole seconds until the next request will be accepted. Wait that long before retrying. Note that this body is {"error": ...}, not JSON-RPC.

Agent connection attempts are limited the same way, with the same message and a Retry-After header. The SDKs honour Retry-After and add jitter to their reconnect delays. Results returning from an agent are never rate limited, because limiting them would time out calls already accepted.

Failed key attempts are limited separately, per address: 30 a minute, then 429 Too many failed authentication attempts. A valid key is never refused by it.

See how much you have used

  • Sidebar meter. On every page: your plan, percent used, used / limit calls and the reset date. It links to Billing & plan.
  • Billing & plan. Your plan and its status, the calls-this-month bar, an On pace for forecast, cards for projects, active API keys and log history, and a comparison of the plans. The invoices panel says "No invoices yet".
  • Usage. The This month bar, with calls per day and per tool. See Observability.
  • Projects. A meter of projects used against your limit.
  • Playground. N of M runs left this week, with the reset time.
  • Logs and Traces. The page header says how many days your plan keeps.

What is not built yet

  • No payment provider. No card is taken and no invoice is produced. On paid plans, "billed as overage" means counted, not charged.
  • No published prices or paid-plan numbers. Contact us.
  • No self-service plan change. We move your account between plans.
  • No spend controls. Alerts at 80% and 100% exist. Caps and budgets for overage do not.

Next steps