MCP bounds
REST bounds
A limited request gets
429 with RATE_LIMITED, a Retry-After header and RateLimit-* headers.
Designing around them
- Do not hold a call open.
request_proposalsreturns straight away withrunning; follow progress withgetor in the Proposals widget instead of waiting on one call. - Keep pages small. Use cursors and bounded
limitvalues, and preserve partial results between pages. - Expect seller latency. Sellers and their inventory systems often dominate response time even when Semicola itself is healthy.
- Reuse keys only for true retries. An idempotency key identifies one logical attempt.
Local development builds shorten some bounds so demos stay snappy, for example a two-minute tool
call and a 20-second seller window.