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)”These are parameter ranges, not rate limits. Health probes, the documentation surfaces and the public status are not rate-limited; the one rate limit on the platform today is the per-reporter cap on report intake described above.
| 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.
Pagination
Section titled “Pagination”List endpoints page with limit and offset (most) or page and page_size (a few); the exact parameters, defaults and maxima are on each operation’s page in the REST reference. Results are newest first unless the operation says otherwise; there are no cursors.
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/with a valid token returns406by design — the endpoint speaks JSON-RPC, not HTML. Without a token, auth answers first:401.
Idempotency
Section titled “Idempotency”Every write under /api/v1/ (POST/PATCH/PUT/DELETE) honours an
Idempotency-Key header (UUID) at the HTTP layer: a retry with the same key
and body within 24 hours returns the original response instead of acting
again; the same key with a different body answers 422 idempotency_conflict.
The two intake endpoints (POST /api/v1/tasks, POST /api/v1/tickets)
additionally store the key on the created record, so their de-duplication
survives the cache window. The header is declared on every write operation
in the OpenAPI contract; the rules live on
Idempotency and retries.