wigoodocs

Test it

Requests to copy, the MCP Inspector, the TypeScript and Python SDKs, and a one-line check that a connection closes.

Every example on this page runs against the public server. None of them writes anything.

With curl

List the tools:

tools/list
curl https://api.getwigoo.com/api/mcp \
  -H 'content-type: application/json' \
  -H 'accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Read what a destination offers:

get_destination
curl https://api.getwigoo.com/api/mcp \
  -H 'content-type: application/json' \
  -H 'accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call",
       "params":{"name":"get_destination","arguments":{"destination_id":"jp","currency":"GBP"}}}'

See a tool error. An id that does not exist comes back as text for a model, not as an HTTP error:

An unknown destination
curl https://api.getwigoo.com/api/mcp \
  -H 'content-type: application/json' \
  -H 'accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":3,"method":"tools/call",
       "params":{"name":"get_destination","arguments":{"destination_id":"zz-nope"}}}'

Check that a connection closes

A request that answers 200 but never ends holds a connection open, and no status code shows it. Add a time limit and read the body to the end. Every request to this server finishes in well under a second:

Status and total time
curl --max-time 10 -sS -o /dev/null -w '%{http_code} in %{time_total}s\n' \
  https://api.getwigoo.com/api/mcp \
  -H 'content-type: application/json' \
  -H 'accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

The output looks like 200 in 0.21s. If curl stops with Operation timed out, the stream stayed open.

With the MCP Inspector

The MCP Inspector lists and calls tools from a terminal or a browser UI, with no code:

List the tools
npx @modelcontextprotocol/inspector --cli https://api.getwigoo.com/api/mcp --transport http --method tools/list
Call a tool
npx @modelcontextprotocol/inspector --cli https://api.getwigoo.com/api/mcp --transport http \
  --method tools/call --tool-name search_destinations --tool-arg query=Japan

Run npx @modelcontextprotocol/inspector with no flags to open the browser UI, choose Streamable HTTP and paste the URL.

With an SDK

quote.ts
import { Client, StreamableHTTPClientTransport } from '@modelcontextprotocol/client';

const client = new Client({ name: 'my-agent', version: '1.0.0' });
await client.connect(new StreamableHTTPClientTransport(new URL('https://api.getwigoo.com/api/mcp')));

const plans = await client.callTool({
  name: 'list_plans',
  arguments: { destination_id: 'jp', type: 'fixed', currency: 'EUR' },
});
const { plans: list } = JSON.parse(plans.content[0].text);

const quote = await client.callTool({
  name: 'get_quote',
  arguments: { destination_id: 'jp', plan_id: list[0].plan_id, currency: 'EUR' },
});
console.log(JSON.parse(quote.content[0].text).buy_url);

await client.close();

Both programs search nothing and buy nothing: they list the fixed plans for Japan, ask for a quote on the first one and print the buy_url.

When something does not work

You seeLikely cause
406 Not Acceptableaccept is missing application/json or text/event-stream. Send both
415 Unsupported Media Typecontent-type is not application/json
400 with code -32020A 2026-protocol request is missing mcp-protocol-version, mcp-method or mcp-name
405 Method not allowedYou sent GET or DELETE. Use POST
A reply with isError: trueThe arguments or an id were wrong. Read the text: it says what to call next
Prices in dollars when you asked for another currencyThe code is not one of the 55 Wigoo charges in
Claude Code does not list wigooServers load when a session starts. Open a new session

On this page