Rate Limits

Alpha Ladder's request-rate posture, backoff guidance, and the rule against auto-retrying destructive operations.

Alpha Ladder does not publish specific numeric rate limits (requests per minute, concurrent connections, etc.) in this documentation. This page describes the expected behaviour, how to write well-behaved clients, and what to do if you need higher throughput.


General posture

Alpha Ladder's MCP server is designed for conversational and agentic workloads — a user asking questions or an automated pipeline running sequential compliance checks. The server applies rate controls appropriate to this usage model.

What this means in practice:

  • Make requests at a pace consistent with the task at hand. Do not fire tool calls in tight loops or fan out many parallel calls simultaneously.
  • If you receive an error response that indicates throttling or resource exhaustion, back off before retrying.
  • For read-only tools (e.g. get_account_summary, get_deposit_list), a simple exponential backoff is appropriate: wait 1 second after the first failure, double on each subsequent failure, and cap at a reasonable ceiling (e.g. 30 seconds).

Destructive operations: never auto-retry

Certain tools execute irreversible financial actions. These must never be auto-retried on failure:

ToolAction
confirm_otc_tradeLocks an OTC trade at the quoted rate
execute_fiat_withdrawalSubmits a fiat withdrawal

If any of these return an error, surface the error to the user and wait for explicit re-confirmation before submitting a new request. Silently retrying a withdrawal or trade confirmation is a safety violation.

For OTC-specific errors (410 Gone — quote expired, 409 Conflict — rate drift), the correct action is to call get_otc_quote again and present the updated quote to the user. See Status & Errors for the full error reference.


Handling backoff in code

When a read-only tool call fails with a transient error, apply exponential backoff:

async function callWithBackoff(toolFn, maxAttempts = 4) {
  for (let attempt = 0; attempt < maxAttempts; attempt++) {
    try {
      return await toolFn();
    } catch (err) {
      if (attempt === maxAttempts - 1) throw err;
      const delayMs = Math.min(1000 * 2 ** attempt, 30_000);
      await new Promise(r => setTimeout(r, delayMs));
    }
  }
}

Do not apply this pattern to destructive operations.


Requesting higher throughput

Specific quotas are not published here. If your integration requires a throughput level beyond what the server permits, contact the Alpha Ladder team to discuss your use case. See Support for contact details.


Cross-references

  • Status & Errors — full error shapes including OTC HTTP 410 / 409.
  • Support — contact and escalation options.
Was this page helpful?
© 2026 Alpha Ladder