wigoodocs

Errors

The three kinds of error the Wigoo MCP server returns, with the exact messages, and what a client should do about each.

An error can come from three places. Telling them apart tells you what to do.

KindWhere you see itWho made the mistake
HTTP errorsThe HTTP status is not 200 or 202The request is malformed
Protocol errors200, with an error object in the JSON-RPC messageUnknown method or tool
Tool errors200, with result.isError: trueThe arguments, or an id that does not exist

HTTP errors

The body is a JSON-RPC error. Its id is null, except when the server could read the request's id (the -32020 header mismatch does), in which case it echoes it.

StatusCodeMessageFix
400-32700Parse error: Invalid JSONSend valid JSON
400-32020Bad Request: the request headers and body disagree: ...On the 2026 protocol, send mcp-protocol-version, mcp-method and, for tools/call, mcp-name, matching the body. See protocol
405-32000Method not allowed.Use POST. There is no stream to GET and no session to DELETE
406-32000Not Acceptable: Client must accept both application/json and text/event-streamSend accept: application/json, text/event-stream
415-32000Unsupported Media Type: Content-Type must be application/jsonSend content-type: application/json
429Too many requestsWait a few seconds and retry. See rate limits
500-32603Internal server errorRetry once after a moment. If it persists, tell support

Protocol errors

The HTTP status is 200 and the message has an error instead of a result.

A method the server does not have
{ "jsonrpc": "2.0", "id": 1, "error": { "code": -32601, "message": "Method not found" } }
A tool the server does not have
{ "jsonrpc": "2.0", "id": 2, "error": { "code": -32602, "message": "Tool nope not found" } }

Both mean the client and the server disagree about what exists. Call tools/list to see the tools.

Tool errors

The tool ran, or tried to, and could not give an answer. The message is result with isError: true and one text item written for a model to act on:

An id that does not exist
{
  "result": {
    "content": [
      { "type": "text", "text": "No destination \"zz-nope\". Call search_destinations to find the right id." }
    ],
    "isError": true
  },
  "jsonrpc": "2.0",
  "id": 3
}
CauseText
Unknown or empty destinationNo destination "{id}". Call search_destinations to find the right id.
Plan not found for the destinationNo plan "{id}" for this destination. Call list_plans for the current plan ids.
Currency Wigoo does not price inWigoo does not price in "{code}". Use one of USD, EUR, GBP, ... or omit currency for US dollars. The message lists every supported code
Missing required argumentInput validation error: Invalid arguments for tool get_destination: destination_id: Invalid input: expected string, received undefined
Value of the wrong shapeInput validation error: Invalid arguments for tool get_destination: currency: Invalid string: must match pattern /^[A-Za-z]{3}$/
Value outside an enumInput validation error: Invalid arguments for tool list_plans: type: Invalid option: expected one of "all"|"fixed"|"unlimited"

A model that reads these texts recovers by itself: each one names the tool to call next or the values to use. Do not retry a tool error with the same arguments.

What is not an error

A language that is not supported, such as ja, is answered in English: the buy page still works, only its language changes.

A currency is different: an unsupported code such as XYZ is a tool error, because a price in another currency than the one asked for is easy to repeat to the traveler as the wrong amount.

A search that matches nothing is not an error either: it returns an empty destinations array and a hint that says how to search.

On this page