Rate Limits
The MCP server enforces two independent limits: one on protocol requests hitting the endpoint, and a stricter one on tool calls that actually run a Dialora operation. Both are counted server-side and shared across every client using the same API key.
| Limit | Allowance | Counted per | Applies to |
|---|---|---|---|
| Requests | 20 requests / 5s | Account (account keys) or tenant (agency keys) | Every HTTP request to https://api.dialora.ai/mcp β handshake, tool listing, tool calls |
| Tool calls | 1 call / 15s | API key credential | Every tool invocation (create_call, list_calls, β¦) |
The tool-call limit is the one you will actually notice: one tool call every 15 seconds per API key. Ask the assistant for one thing at a time β a prompt like βlist my calls and then look up each oneβ will trip it partway through.
Request limit
Every request to the MCP endpoint counts, including the ones the client makes on its own (initialize, tools/list, keep-alives). The counter is keyed by the identity behind your key:
- An account key is tracked per account.
- A tenant (agency) key is tracked per tenant.
Two assistants using the same key therefore share one budget β connecting Claude Desktop and Cursor with the same key halves the headroom for each.
Exceeding it returns HTTP 429 with a Retry-After response header carrying the number of seconds to wait.
Tool-call limit
Tool calls are throttled separately and much more tightly, because each one performs a real operation against your account β placing a call, creating a user, changing a subscription. The counter is keyed by the API key credential itself, so it is not shared between two different keys on the same account.
When you exceed it, the tool does not fail the connection. It returns an error result the assistant can read and relay:
rate limit exceeded: 1 tool call per 15s, retry in 12s.The retry in Ns value is the exact remaining time on the window. Most assistants will surface this message and either wait or ask you to retry.
The limit is applied before the underlying operation runs, so a throttled tool call never places a call, creates a record, or bills you. It is safe to retry once the window clears.
Working within the limits
- One action per turn. Ask for a single tool call, read the result, then ask for the next.
- Batch with pagination, not repetition.
list_callsacceptspageandlimitβ one call returning 50 results costs the same as one returning 5, and far less than 50get_callcalls. - Use a separate key per client. The tool-call budget is per credential, so Claude Desktop and Cursor each get their own window if you issue them separate keys. The request budget is still shared per account/tenant.
- Donβt retry immediately. Wait the
retry in Nsthe error reports; retrying sooner just consumes request budget. - Pass
idempotency_keyon retries. Forcreate_call,create_user,create_subscription, andupdate_subscription_plan, a retry with the same key and body returns the original result rather than creating a duplicate. See Tools Reference.
Relationship to the REST API
These limits are specific to the MCP endpoint. The Public REST API has its own, considerably higher, limits and is the right choice for bulk or automated work β the MCP server is built for interactive assistant use, not throughput.
The MCP server is in preview, and these limits are deliberately conservative while we watch real usage. They may be raised. If they block a legitimate use case, contact the Dialora team β see Getting Support.