Rate Limits
The MCP server enforces three independent limits: one on protocol requests hitting the endpoint, a stricter one on tool calls that actually run a Dialora operation, and a per-tenant daily budget on writes. Tool calls are split further β reads get a generous window, writes a tight one. All are counted server-side and shared across every client using the same credential.
| 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 |
| Read tool calls | 10 calls / 30s | Credential | Read tools (list_calls, get_call, list_users, list_plans, β¦) |
| Write tool calls | 3 calls / 90s | Credential | Write tools (create_call, create_user, delete_user, create_subscription, update_subscription_plan) |
| Daily write budget | 500 writes / 24h | Tenant | Every write tool call, across all of the tenantβs credentials |
The write limit is the one you will actually notice: 3 write calls every 90 seconds. Reads are much more forgiving at 10 every 30 seconds, so browsing your call history is comfortable while placing calls in bulk is deliberately not.
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 from requests, because each one performs a real operation against your account. Reads and writes get their own budgets: a write β placing a call, creating a user, changing a subscription β is far more consequential than a lookup, so it is throttled far harder. The counter is keyed by the 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, please retry shortly.The message does not carry the remaining time β wait out the full window (30s for reads, 90s for writes) before asking again. 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
- Space out the writes. Reads are cheap; placing calls or changing subscriptions is not. Ask for one write at a time.
- 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 credential per client. The tool-call budgets are per credential, so Claude Desktop and Cursor each get their own windows if you connect them separately. The request budget is still shared per account/tenant.
- Donβt retry immediately. Wait out the window before retrying; 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.