Read window
Applies to every request on the surface, including the threepreview_*
operations.
Write window
An additional, much tighter budget on the operations that actually spend coins or publish:
Counted for
place_order, publish_opinion and back_opinion (REST:
POST /orders, /opinions, /backs). These also consume the read window.
The three previews —
preview_order, preview_opinion, preview_back — count
against the read window only. They charge nothing, so pricing a few options
before asking the user costs you nothing but ordinary read budget.Response headers
Every REST response carries the state of the binding minute window (the one that would reject you first):X-RateLimit-Reset is seconds until the window resets (not a Unix
timestamp).
When you hit 429
Retry-After: 22 header.
- Wait
retry_afterseconds, then retry. Add jitter if you run several workers on one key. - Prefer exponential backoff for repeated 429s.
- Over MCP, a rate-limited call surfaces as a tool error naming the retry delay — agents should read it and pause rather than hammer.
Staying under the limits
- Use
limit(up to 100) and cursors instead of many small pages. - Cache stable data (categories) on your side.
- Use
list_topicsfor browsing; savesearch_topics(the tighter budget) for actual keyword lookups. - Don’t poll for a write to “settle” — the execute response is the outcome.