matchstick

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_limited with retry_after_s beyond that.
  • Request bodies up to 1 MB on /mcp and /api/v1; 64 KB on the OAuth endpoints.
  • search_performance returns 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": "…" }
CodeHTTPMeaning
unauthenticated401No, bad, revoked or expired key or token. The WWW-Authenticate header says where the authorization server is.
not_found404No such object, or one outside the sites this credential may see.
invalid_argument400A parameter is missing or malformed; the message says which.
forbidden_scope403The credential lacks the scope; details.required names it.
policy_denied403The site's autonomy level, or the owner's not-now / never, doesn't allow this.
gate_failed409A quality gate failed: caveats not acknowledged, no review, CI, mergeable, a check that already ran.
page_frozen409The page is under evaluation from an earlier change; details.until says until when.
conflict_stale_head409The pull request moved since you read it; read the diff again and pass the new head.
idempotency_conflict409The same Idempotency-Key was used with different arguments.
insufficient_credits402The plan's credits are spent; details.topup_url is where a person adds more.
budget_exhausted429This connection's weekly budget, its drafts for today, or the site's merges for today are used up.
plan_limit402The plan doesn't allow it (pages, sites).
rate_limited429Too many calls; retry after details.retry_after_s.
upstream_unavailable503GitHub, Search Console or the worker didn't answer; retry later.
connection_broken424A connection the call needs (the repository, Search Console) isn't there or lost access.
not_a_repo_change409The 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.