Limits and Quotas
Platform limits and quotas reference for MarkDocket — automation concurrency, agent turn states and expiry, MCP response size caps, file upload constraints, and polling timeouts.
This page documents the hard limits and quotas enforced by MarkDocket across automations, the AI agent, the MCP server, and file handling. Where a limit is soft or configurable, that is noted.
Automations
Concurrent Runs
Each user account may have at most 2 automation runs executing simultaneously. If you trigger a third run while two are already in progress, it will be queued until a slot becomes available.
Async Action Wait Timeout
When an automation node kicks off an async background job (such as a USPTO search or brand-intel scan), the run waits up to 2 hours for that job to reach a terminal state. If the job does not complete within 2 hours, the automation step times out and the run is marked failed at that node.
Billing Suspension
If a billing limit is reached during an automation run, the run is suspended rather than immediately failed. A suspended run can be resumed once the billing condition is resolved.
AI Agent Turns
Each interactive agent turn progresses through a defined lifecycle. Understanding these states helps you interpret errors and plan retries.
Turn States
| State | Meaning |
|---|---|
authorizing | Billing reservation is being created |
authorized | Billing reserved; ready for file upload and message commit |
uploading | File attachments are being accepted |
running | Turn is actively streaming |
completed | Turn finished successfully |
denied | Billing reservation was rejected |
failed | Turn encountered an unrecoverable error |
expired | Turn timed out before completing |
cancelled | Turn was cancelled by the user or system |
Expiry and Cleanup
Turns that do not advance to running within their authorization window are automatically moved to expired. When a turn expires, any billing reservation held for it is released and any uploaded files that were not committed to a message are cleaned up. The platform performs this sweep in the background; no action is required from you.
File Uploads per Turn
File uploads are scoped to their turn and must be completed before the message is committed. Uploads submitted under the same idempotency key are deduplicated — re-submitting an identical upload does not create a duplicate attachment.
MCP Server
Response Size Cap
Tool results returned through the MCP server are subject to a 1 MB character limit. Before this cap is applied, the server performs domain-aware compaction on certain tool outputs:
- Polling tools (for example, scan status endpoints): intermediate
findingsand report markdown fields are stripped from in-progress results, since those fields are only meaningful in the final result. - Final result tools: findings are retained in full.
- Full report tools: the full payload passes through without compaction.
If the compacted result still exceeds the size limit, the response is truncated to the first 150,000 characters and returned with a truncated: true flag. A truncated response is not an error — it is a preview of the full result. To retrieve the complete output, fetch the full report separately using the dedicated report tool.
Why compaction happens before truncation
Tool Annotations
MCP behavioral hints (readOnlyHint, idempotentHint, destructiveHint) are derived automatically from each tool's HTTP method and whether it is flagged as read-only. You do not need to configure these manually.
CLI and API Key Sessions
API Surface
Personal API key sessions and CLI sessions authenticated with a password call the MarkDocket API directly. Browser OAuth sessions (created by markdocket login using the browser flow) route through the hosted MCP endpoint. OAuth access tokens are resource-bound to the MCP endpoint and cannot be used to call API routes directly.
Write-Mutating Calls
Write-mutating tool calls made with an API key require an Idempotency-Key header. Replaying the same call with the same key returns the original result without performing the action again.
Pricing Fetch Timeout
The live pricing catalog is fetched at page-render time. If the catalog cannot be retrieved within 5 seconds, the pricing page renders a "Pricing temporarily unavailable" message and disables purchase actions. No stale or hardcoded prices are displayed as a fallback.
Summary Table
| Limit | Value | Notes |
|---|---|---|
| Automation concurrent runs | 2 per user | Additional runs are queued |
| Automation async job wait | 2 hours | Per node; exceeded → step fails |
| MCP response size cap | 1 MB (characters) | Domain compaction applied first; then truncated to 150,000 chars with truncated: true |
| Pricing fetch timeout | 5 seconds | Failure renders unavailable state; no stale fallback |
Limits may change