wittle labs

REFERENCE

Errors & limits

Tool errors come back as normal MCP results with isError: true and a plain sentence written for the assistant: what went wrong and what to do next.

Common errors

You seeWhyDo this
HTTP 401 + WWW-AuthenticateA sign-in-only tool was called without a valid token.Your client runs the OAuth flow, then retries the same call.
HTTP 429 rate_limitedToo many anonymous requests from one address.Wait a minute and retry.
RATE_LIMITED: too many … requests. Try again in N seconds.A signed-in customer went over a per-minute limit.Wait the stated seconds. A repeat confirm of a booking that already succeeded is never limited.
Invalid or expired optionThe option_id was changed, or its time has passed.Call get_availability again and use a fresh option_id unchanged.
Needs more information before this booking can be prepared: …A business question is missing or its answer doesn't fit.Ask the customer exactly what the message lists, then call prepare_booking again.
EXPIRED: this preparation expired …More than 15 minutes passed between prepare and confirm.Prepare again (the customer re-approves the new summary).
SLOT_UNAVAILABLESomeone else took the time between prepare and confirm.Nothing was booked. Offer other times.
Unknown preparation / Unknown bookingThe id doesn't exist, or belongs to someone else.Use the ids from this customer's own calls.
… is paused and not taking bookingsThe business has paused online booking.Offer the business's phone number or another business.
Life-safety guidance + emergency numberThe description suggests danger (gas, CO, sparking, smoke …).Pass the guidance on. Nothing was booked.

Invalid arguments (a missing required field, a wrong type) are rejected by the MCP layer before the tool runs, with the field named in the message.

Rate limits

WhoLimit
Not signed in (per client address)120 requests a minute
Signed in: search, details, availability, prepare60 a minute
Signed in: new confirms5 a minute

HTTP details

  • All MCP messages are POST. GET and DELETE on the endpoint return 405 (the server is stateless, with no streams or sessions).
  • GET /health reports liveness.