Errors

Errors come back at one of two layers.

Protocol errors

Malformed requests, unknown methods, or auth failures return a standard JSON-RPC error response. These are handled by your MCP host, not your prompt. Examples: a missing or invalid bearer token (401, with a WWW-Authenticate header), a disallowed origin (403), or a missing MCP-Protocol-Version header.

Tool failures

When a tool runs but can't complete, it returns a normal tool result whose body carries a structured error:

{
  "status": "failed",
  "error": {
    "code": "workflow_not_published",
    "message": "Workflow ast_123 has no published version to run.",
    "retry_after": null,
    "support_id": "a1b2c3d4e5f6"
  }
}
  • code: a stable, machine-readable string (see the table below).
  • message: human-readable explanation, safe to show the user.
  • retry_after: seconds to wait, when the error is transient (e.g. rate limits).
  • support_id: the Sentry trace id for this call. Quote it when contacting support; it's how we find your exact request.
Tip

When you report a problem, include the support_id. We cross-reference it against the audit log to see precisely what happened, without you having to re-share your data.

Error codes by tool

ToolCodeMeaning
confirm_savebuild_expiredThe preview is older than one hour; re-run build_system.
confirm_savealready_savedThis build was already saved (idempotent, safe).
confirm_savepartial_saveSome assets saved; push_errors lists the rest. Re-running is safe.
trigger_workflowworkflow_not_foundNo workflow with that id.
trigger_workflowworkflow_not_publishedThe workflow is a draft; publish it first.
trigger_workflowworkflow_failedThe workflow ran but errored; see result.
trigger_workflowexecution_timeoutExceeded the execution cap.
send_via_integrationintegration_not_connectedThe user hasn't connected this app; the error includes a connect_url.
send_via_integrationoperation_not_foundBad operation slug for that integration.
send_via_integrationoauth_token_expiredThe connection needs re-authorizing in the web app.
send_via_integrationprovider_errorThe third-party API rejected the request.
run_enrichment / check_enrichmentjob_not_foundUnknown or expired job id (jobs are kept 7 days).
anyscope_deniedThe key lacks the scope this tool needs; see Authentication & scopes.
anyrate_limitedPer-key rate limit hit; honor retry_after. See Rate limits.

Cancellation

A dropped connection is not a cancellation. To intentionally stop an in-flight build, your host sends an MCP CancelledNotification (or you call abort_build). The server aborts the upstream work, records it, and closes the stream.