Use this file to discover all available pages before exploring further.
The MCP route follows the JSON-RPC spec for errors and maps a few categories onto HTTP statuses. This page is the reference for what each error means and what your agent (or client) should do about it.
JSON-RPC error envelope, includes a friendly retry hint
Any tool-level error
200
JSON-RPC error in the body (per MCP spec)
Healthy response
200
JSON-RPC result
The spec calls for tool errors to come back as 200 with the error inside the JSON-RPC envelope — clients that conflate HTTP status with “did the call succeed?” will misread these. The MCP SDKs all do the right thing.
Some tools are Builder-only. On a Free workspace they return -32603 with a PRO_REQUIRED message that names the gated feature and (where applicable) suggests a Free alternative. The full list lives in the tool reference — look for the Builder plan required annotation in each tool’s description.Highlights as of v1.4:
blocks.create — AI block generator. Free alternative: hand-author via blocks.init + setFiles + build + publish.
dataSources.add with type=mcp outbound MCP creates beyond the per-type cap (Free is 1).
Coding agents: tool descriptions ending in (Builder plan required.) are gated server-side. Skip these on Free workspaces — call workspace.get first to read plan and limits, and reroute via the free alternative the description names.
Per-key sliding-window via @convex-dev/rate-limiter. The cap is resolved from workspace.plan at request time:
Plan
Requests per minute (per key)
Free
60
Builder
600
Enterprise
6000
Different keys for the same workspace get independent budgets — minting a second key buys you another 60/600/6000 RPM. The platform doesn’t penalize per-workspace, just per-key.When you hit the cap, the next call returns -32002 with HTTP 429 and a hint that includes the resume-time. Back off by ~60 / RPM seconds and retry.
Two limits are time-windowed rather than rate-limited:
Limit
Free
Builder
Enterprise
Reset
Builds per month
100
1,000
100,000
First of next month UTC
AI-generated blocks per month
0
30
10,000
First of next month UTC
Builds count every call to blocks.build (success or failure). AI-generated blocks count every blocks.create invocation.When you hit either, the next call returns -32603 with a LIMIT_REACHED message. Both limits expose resetsAt on the workspace.getlimits payload, so agents can preflight.