Limits and quotas
Knowing the bounds prevents two failure classes: pointless retries against hard limits, and “outage” reports about behaviour that is a quota working as designed.
Tokens and grants
Section titled “Tokens and grants”| Limit | Value | Notes |
|---|---|---|
| Agent token lifetime | 1–365 days (default 90) | Set at mint; the token cannot extend itself |
| Tokens per agent identity | Effectively one | Minting with revoke_prior (default) kills all prior tokens immediately |
| Write scope | Granted contract pool only | Default-deny; publish capability withheld unless explicitly granted |
| Task/defect tools | Global manage_task grant | Separate axis from contract grants |
Request limits (read surfaces)
Section titled “Request limits (read surfaces)”| Surface | Limit |
|---|---|
GET /api/v1/errors | limit 1–500 (default 100), newest first |
| Chat archive search | limit 1–500, since_days 1–365 |
| Board list tools (MCP) | limit default 50 |
Requests beyond a range are rejected with a validation error — lower the parameter instead of retrying.
Publish and pipeline execution
Section titled “Publish and pipeline execution”- Synchronous publish calls have a hard timeout (on the order of minutes, not seconds — site builds are slow). Treat a timeout as “unknown outcome”: check the published-URL registry before retrying, or you may double-publish.
- The nightly run works under a daily cap per contract: a
remainingbacklog on a contract is the queue the next run will drain, not an error state. - Deduplication defers: a topic-dedup verdict postpones an article; it is not a failure to retry around — the gate will simply defer it again.
MCP session limits
Section titled “MCP session limits”- Sessions do not survive a platform deploy; reconnect with a fresh handshake (details).
- Plain
GET /mcp/returns406by design — the endpoint speaks JSON-RPC, not HTML.
Idempotency
Section titled “Idempotency”Write endpoints accept an Idempotency-Key header (UUID). Send one on
every write; a retried request with the same key is safe. This is the
sanctioned retry mechanism — not resubmission loops.