Matchstick for agents
Version 1.5.0 · All sections
Limits and errors
- 120 read calls a minute and 20 write calls an hour per key or grant;
rate_limitedwithretry_after_sbeyond that. - Request bodies up to 1 MB on
/mcpand/api/v1; 64 KB on the OAuth endpoints. search_performancereturns at most 1,000 rows over at most 16 months.- Every write takes an idempotency key (≤ 64 characters, kept 24 hours): the same key with the same arguments replays the first answer; different arguments are
idempotency_conflict. - Access tokens live an hour, refresh tokens thirty days (rotated on use); API keys until revoked.
Errors
Every failure is the same object, as JSON on REST and as the text of an isError result over MCP:
{ "error": { "code": "page_frozen", "message": "…", "retryable": false, "details": { "until": "2026-10-29", "change_id": "…" }, "hint": "…" }, "request_id": "…" }
| Code | HTTP | Meaning |
|---|---|---|
unauthenticated | 401 | No, bad, revoked or expired key or token. The WWW-Authenticate header says where the authorization server is. |
not_found | 404 | No such object, or one outside the sites this credential may see. |
invalid_argument | 400 | A parameter is missing or malformed; the message says which. |
forbidden_scope | 403 | The credential lacks the scope; details.required names it. |
policy_denied | 403 | The site's autonomy level, or the owner's not-now / never, doesn't allow this. |
gate_failed | 409 | A quality gate failed: caveats not acknowledged, no review, CI, mergeable, a check that already ran. |
page_frozen | 409 | The page is under evaluation from an earlier change; details.until says until when. |
conflict_stale_head | 409 | The pull request moved since you read it; read the diff again and pass the new head. |
idempotency_conflict | 409 | The same Idempotency-Key was used with different arguments. |
insufficient_credits | 402 | The plan's credits are spent; details.topup_url is where a person adds more. |
budget_exhausted | 429 | This connection's weekly budget, its drafts for today, or the site's merges for today are used up. |
plan_limit | 402 | The plan doesn't allow it (pages, sites). |
rate_limited | 429 | Too many calls; retry after details.retry_after_s. |
upstream_unavailable | 503 | GitHub, Search Console or the worker didn't answer; retry later. |
connection_broken | 424 | A connection the call needs (the repository, Search Console) isn't there or lost access. |
not_a_repo_change | 409 | The fix is a dashboard setting (Cloudflare), DNS or hosting, not a change in the repository: a person applies it; details name the exact setting and the matchstick.io page with the Apply button. |
Quote request_id when you write to us: it is on the activity page too.