Errors catalogue

Every Simp Connect tool error code with its teaching message and what the agent should do next, generated from the live catalogue.

A failure inside a tool is an in-band tool error: the JSON-RPC response is a result with isError: true, and its text content is JSON with a machine-readable error code plus a teaching message that names the field, the constraint and a valid example where one exists. Your agent can read it and correct itself.

json
{
  "error": "invalid_respond_by",
  "message": "respond_by needs a time zone offset ('Z' or '+hh:mm'): a time without one is ambiguous. For example '2026-10-07T18:00:00+01:00'."
}

Failures outside a tool are protocol errors (JSON-RPC error, with an HTTP status):

HTTPJSON-RPC codeWhen
401-32002No token, or an expired, revoked or wrong-audience token. WWW-Authenticate points at the protected resource metadata.
403-32001The token lacks the scope the tool needs (WWW-Authenticate names it).
403-32600The request carried a browser Origin Simp does not allow.
415The body is not application/json.
400-32020A routing header (Mcp-Method, Mcp-Name) disagrees with the body.
400-32021A tasks/* method without the tasks extension declared in clientCapabilities.
400-32022An unsupported MCP-Protocol-Version (including initialize); data.supported lists 2026-07-28.
404-32601A method Simp does not serve.
400-32602Invalid params, an unknown tool, or an unknown task id.
405GET or DELETE on the endpoint: there is no session and no stream to open or close.

This catalogue is generated from the same source as the Tool reference (reference version 2). Angle-bracketed parts of a message (<scope>, <n>) are filled in at runtime.

Errors any tool can return#

CodeMessage (as returned)What the agent should do next
unauthorizedNo authenticated Simp user on this connection.The OAuth token is missing or invalid. Reconnect Simp (OAuth).
insufficient_scopeinsufficient_scope: this tool requires the <scope> scope, which this connection was not granted.Ask the user to reconnect Simp granting the named scope.
rate_limitedRate limit exceeded (<limit>). Wait <n> seconds and try again.Back off for retry_after_seconds, then retry.
invalid_argumentsThe arguments do not match <tool>'s schema: <field>: <rule>.Fix the named field and resend.

Errors from support_ask#

Returned by support_ask.

CodeMessage (as returned)What the agent should do next
verification_requiredLog in to the app and I'll pick this up with your account in front of me.Relay to the user: account changes happen in the Simp app, never from here.

Errors from support_ask, support_cases#

Returned by support_ask, support_cases.

CodeMessage (as returned)What the agent should do next
support_unavailable<reason>Retry once; if it persists, tell the user to open the Simp app.

Errors from create_task#

Returned by create_task.

CodeMessage (as returned)What the agent should do next
plan_no_mcpAgent integrations aren't included in the user's Simp plan ...Relay to the user; they can upgrade their plan.
invalid_participantsEach participant needs one of phone, email, handle or party_id. / A call task has exactly one participant ... / A call needs a phone number ...Confirm who with the user and resend. Never guess a number.
invalid_respond_byrespond_by is required for this kind ... / respond_by is for get_answer, send_update and follow_up ... / Give them at least an hour to answer. / Choose a deadline within the next two weeks.Send respond_by (ISO 8601 with offset, 1 hour to 14 days) for answer tasks; drop it for a call.
invalid_optionsoptions are for get_answer and follow_up ...Drop options for a call or a send_update.
invalid_boundariesA call task always phones, so may_call cannot be false ...Use get_answer or send_update if the user does not want a call.
no_route_without_a_callSimp reaches people for this user by phone call only, so a task with may_call false cannot reach anyone ...Ask the user whether a call is acceptable.
participant_not_known<name> is not someone the user already knows, and known_contacts_only is set ...Ask the user, or drop the boundary.
question_invalidYour question includes a phone number or link ... / Keep each answer under 40 characters. / ...Reword the objective or the options as the message says.
no_numberThe user doesn't have a Simp virtual number set up yet.Ask the user to finish setting up Simp.
unknown_personapersona "<value>" is not one of the user's simps. Use one of: <names> ...Pick a name or id from get_user_info, or omit persona.
unknown_numberfrom_number "<value>" is not one of the user's AI-capable Simp numbers. Use one of: <numbers> ...Pick a number or id from get_user_info, or omit from_number.
ai_minutes_cap_reachedYou've reached your monthly <n>-minute AI calling limit ...Relay to the user; get_user_info.can_create_tasks pre-empts this.
internal_cap_reachedYou've reached your internal test cap. Contact your admin to raise it.Internal test accounts only - contact the Simp admin.
account_config_invalidThis account cannot place calls right now.Internal test accounts only - contact the Simp admin.
destination_not_allowed<number> is a premium-rate / emergency number ... or Simp's calling policy does not allow calls to <number> on this account.Use a standard geographic or mobile number; never retry the same destination.
connection_frozenThis connection was paused by Simp after an unusual pattern ...Ask the user to re-enable the connection under Connected apps in the Simp app.
connection_daily_cap_reachedThis connection has created <n> tasks today, which is its daily limit (<cap>) ...Try tomorrow, or ask the user to change the connection mode.
sandbox_limit_reachedThis account has used its 3 sandbox calls for today ... / This app has reached its daily sandbox allowance ...Try tomorrow, or call a real number the user owns.
sandbox_unavailableThe Simp sandbox is busy right now - try again shortly.Retry shortly (the sandbox fails closed on capacity checks).
sandbox_calls_onlyThe sandbox test number answers calls only: create it as kind call.Use kind call for the sandbox number.
task_creation_failed<database message>Retry once; if it persists, report it.

Errors from get_task, respond_to_decision, cancel_task, get_user_info#

Returned by get_task, respond_to_decision, cancel_task, get_user_info.

CodeMessage (as returned)What the agent should do next
not_foundNo task with that id on this account.Use a task_id from create_task or list_tasks.

Errors from respond_to_decision#

Returned by respond_to_decision.

CodeMessage (as returned)What the agent should do next
not_awaiting_inputThis task is not waiting on the user (current state: <state>). Call get_task for the latest state.Re-read the task; the decision may already be answered.
unknown_decisiondecision_id does not match the pending decision on this task. Use the decision_id from get_task.Re-read pending_decisions and resend with its decision_id.
wrong_answer_typeThis decision is an approval: pass approve true or false. / This decision asks for information: pass the user's response as text.Send the answer the decision type asks for.
answer_missingPass the user's answer ... (Your client did not declare form elicitation ...)Ask the user and send approve or response.
invalid_request_stateThat retry does not match the question Simp asked. Call respond_to_decision again.Start the round again without requestState.
resume_failed<reason>Check the task; the call may have ended.

Errors from cancel_task#

Returned by cancel_task.

CodeMessage (as returned)What the agent should do next
not_cancellableThis task can no longer be cancelled (current status: <status>).Nothing to do - the task is already terminal.

Handling errors well#

  • Read the message. It is written for the agent: it says what was wrong and usually shows a valid value. Relay the human-relevant part to the user; do not retry blindly.
  • Never retry destination_not_allowed or invalid_participants with the same number. Confirm the number with the user.
  • rate_limited carries retry_after_seconds. Wait that long.
  • connection_frozen and connection_daily_cap_reached are resolved by the user in the Simp app (Connected apps), not by your agent.
  • sandbox_limit_reached / sandbox_unavailable mean nothing was created; try again tomorrow or use a real number the user owns.
  • not_awaiting_input, unknown_decision, wrong_answer_type: call get_task again and use the decision_id and type it returns now. The earlier decision is answered or stale.
  • invalid_request_state: the signed requestState of a multi round-trip retry was altered, expired (10 minutes) or belongs to another call. Call respond_to_decision again from the start.
  • insufficient_scope (or HTTP 403 -32001): the connection was granted without that scope; the user needs to reconnect and grant it.