Skip to main content

Limits

The limits are per account and shared by all its MCP connections. Each layer applies on top of the previous one:
  1. Requests to the MCP server. Up to 60 a minute per account, or your plan’s API rate limit if it is lower. They count apart from your API calls, so a busy agent never blocks your other integrations. Over it, requests answer 429 RATE_LIMITED for 60 seconds.
  2. An account blocked on the API is blocked here too. While the account is over its API rate limit, the MCP server answers 429 RATE_LIMITED as well.
  3. The tool budget: tool calls a minute, half your plan’s API rate and at most 60, since a tool call does much more work than a request.
  4. Per-tool caps for the tools that read or write inside your application or query the edge network.
  5. The per-tool limits of Cubic, the Square Cloud AI assistant. The MCP and Cubic share them, per account.
Layers 3, 4 and 5 answer with a TOOL_RATE_LIMITED tool result, described below.
  • Every tool call counts, including calls refused for a resource or for a scope that depends on the arguments (such as restart on set_env_vars).
  • On HOBBY-1, for example, the MCP never goes past 15 tool calls a minute, and your CLI, SDKs and bots keep the plan’s whole API rate.
  • Commits share one pace with the API, the CLI and the dashboard: one every 2 seconds per account and one every 5 seconds per application. Sooner, commit_application answers RATE_LIMITED.

Zips and files

  • Zip: upload_application and commit_application take a zip of up to 1 MB, sent as base64, and up to 100 MB once unpacked. The dashboard and the CLI take zips of up to 100 MB: use them for a larger project.
  • Files: commit_application takes up to 50 text files, up to 128 KB each and 512 KB in all. They can’t be hidden files, .env files, private keys or the configuration file, which changes through edit_config_file.

TOOL_RATE_LIMITED

A tool over a limit doesn’t run. The answer is a regular tool result marked isError: true, not an HTTP error, so the connection keeps working:
When the tool budget is the limit reached, the summary says too many AI actions in a short time and every tool waits; otherwise only that tool does. If the client calls the same tool again while it is still limited, that second refusal in a row answers TOOL_EXECUTION_FAILED instead, which tells the client to stop and you to wait a few minutes or use the dashboard.

Errors

HTTP errors

These come back as the HTTP status of the request, with a JSON body carrying code.

While connecting

Tool results

These come back inside a tool result, as code, next to a summary the client reads. A tool your key can’t use, or one that doesn’t exist, answers the JSON-RPC error -32602 Unknown tool. Check the key’s scopes. Other codes come from the tool itself, and the summary explains them.