> ## Documentation Index
> Fetch the complete documentation index at: https://docs.spiralstake.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Rate limits & errors

> Limits on the MCP endpoint and how failures are surfaced.

## Rate limits

The public MCP endpoint is rate-limited per IP. The build tools make live aggregator + RPC calls, so `/mcp` is capped tighter than the cached read endpoints.

| Surface              | Limit                      |
| -------------------- | -------------------------- |
| `/mcp` (agents)      | 60 requests / minute / IP  |
| Public `/v1/*` reads | 300 requests / minute / IP |

Responses carry `RateLimit-Limit`, `RateLimit-Remaining`, and `RateLimit-Reset` headers; a `429` includes `Retry-After`. Need higher limits for a production integration? Use the [Integration API](/integration/introduction) with a partner key.

## Errors

Tools **fail closed** — on stale market data, a missing swap route, or bad input, a tool returns an error result with a clear, human-readable reason rather than a half-built transaction. Nothing is ever partially executed.

Common reasons:

* *"Market data is too stale to build a transaction"* — the freshness guard tripped; retry shortly.
* *"Market is not currently eligible for leverage"* — the strategy is hidden (thin / near-maturity / no route).
* *"Provide either desiredLtv or leverage"* — missing a required input.
