Skip to Content

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.

LimitAllowanceCounted perApplies to
Requests20 requests / 5sAccount (account keys) or tenant (agency keys)Every HTTP request to https://api.dialora.ai/mcp β€” handshake, tool listing, tool calls
Tool calls1 call / 15sAPI key credentialEvery 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_calls accepts page and limit β€” one call returning 50 results costs the same as one returning 5, and far less than 50 get_call calls.
  • 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 Ns the error reports; retrying sooner just consumes request budget.
  • Pass idempotency_key on retries. For create_call, create_user, create_subscription, and update_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.