JTR Vacances
Shopping cart icon
MCP Server v1.0 JSON-RPC 2.0 · Protocol 2024-11-05

JTR Holidays MCP Server

Connect any AI assistant — Claude, ChatGPT, Gemini, or your own agent — to JTR Holidays' live catalog of attraction tickets, tours, and multi-day holiday packages via the Model Context Protocol.

Real-time inventory

Live activity catalog with up-to-date pricing, availability, and booking links — no stale caches.

No API key needed

All five search and browse tools are publicly accessible — no sign-up, no credentials, no waiting. Rate-limited at 100 requests/minute per IP.

MCP 2024-11-05

Fully compliant with the Model Context Protocol specification. Supports tools/call and tools/list.

How to connect

One endpoint handles all tool calls. Public browse tools require no authentication — just send Content-Type: application/json and you're ready.

Endpoint

# MCP JSON-RPC endpoint

POST https://api.jtrholidays.com/mcp/v1

# Auto-discovery (no auth)

GET https://api.jtrholidays.com/.well-known/mcp.json

Authentication

Public tools (no auth needed)

Content-Type: application/json

search, details, availability, destinations, packages

Write tools (future)

X-MCP-Secret: <your-secret-key>

create_booking, update_inventory, etc.

All five current tools (search_activities, get_activity_details, check_availability, get_destinations, get_holiday_packages) are publicly accessible. No secret key required.

Available tools

All tools are called via the standard tools/call method. The tools/list method returns the full machine-readable manifest.

search_activities

Search JTR Holidays' activity and tour catalog by destination, category, and budget.

ParameterTypeRequiredDescription
destinationstringoptionalCity or country name (e.g. "Dubai", "Singapore")
categorystringoptionalActivity category (e.g. "Desert Safari", "Sightseeing")
budget_maxnumberoptionalMaximum price per person in the activity's local currency
limitintegeroptionalMax results (default: 20, max: 50)
get_activity_details

Get full details for a single activity including inclusions, exclusions, cancellation policy, and reviews.

ParameterTypeRequiredDescription
activity_idstringrequiredActivity UUID from search_activities results
check_availability

Check if an activity is available on a specific date and return pricing options.

ParameterTypeRequiredDescription
activity_idstringrequiredActivity UUID
datestringrequiredDate to check in Y-m-d format (e.g. "2025-12-25")
paxintegeroptionalNumber of people (default: 1)
get_destinations

List all destinations (countries) where JTR Holidays offers tours, with activity counts and popular picks.

No parameters — call with an empty arguments object.
get_holiday_packages

Browse multi-day holiday packages with itineraries, departure dates, and pricing.

ParameterTypeRequiredDescription
destinationstringoptionalFilter by country or region
duration_daysintegeroptionalFilter by exact number of days
limitintegeroptionalMax results (default: 20, max: 50)

Example requests & responses

The examples below use verified test data from the live server.

No authentication header required for any of these examples. Just Content-Type: application/json.

1

Search activities in Dubai

search_activities
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "id": 1,
  "params": {
    "name": "search_activities",
    "arguments": {
      "destination": "Dubai",
      "category": "Desert Safari",
      "budget_max": 200,
      "limit": 3
    }
  }
}
2

Check availability for an activity

check_availability
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "id": 2,
  "params": {
    "name": "check_availability",
    "arguments": {
      "activity_id": "a1b2c3d4-0001-0001-0001-000000000001",
      "date": "2025-12-25",
      "pax": 2
    }
  }
}
3

List all destinations

get_destinations
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "id": 3,
  "params": {
    "name": "get_destinations",
    "arguments": {}
  }
}

Request format

Every call follows the JSON-RPC 2.0 envelope with MCP's tools/call method:

{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "id": 1,
  "params": {
    "name": "<tool_name>",
    "arguments": {
      /* tool-specific arguments */
    }
  }
}

Special methods

  • initializeMCP handshake — returns server capabilities and protocol version.
  • tools/listReturns the full machine-readable tool manifest (inputSchema included).

Error codes

  • -32600 Invalid request (HTTP 400)
  • -32601 Method not found (HTTP 404)
  • -32602 Invalid params / not found (HTTP 422)
  • -32603 Internal error (HTTP 500)

Rate limiting

Limits apply per IP address, per minute. If you exceed the limit you'll receive an HTTP 429 Too Many Requests response.

Public (no auth)

All five current tools

100 req / min

Sufficient for AI assistant workflows. Exceeding returns 429 with a Retry-After header.

Authenticated (X-MCP-Secret)

Partners and integration partners

1,000 req / min

Higher limit for partners with a valid secret key. Contact us to request authenticated access.

Security model

The MCP server uses a two-tier model that keeps read-only travel data open while protecting any future write operations.

1

Tier 1 — Public (no authentication)

Exposes the same data available on jtrholidays.com. Any AI assistant can call these tools without credentials.

search_activitiesget_activity_detailscheck_availabilityget_destinationsget_holiday_packages

Response sanitisation

All public responses are automatically stripped of internal pricing fields (supplier_cost, margin), admin notes, supplier credentials, and any customer personal data — regardless of what the database contains.

2

Tier 2 — Protected (X-MCP-Secret required)

Reserved for future write and mutation tools. These will require a valid X-MCP-Secret header matched against a Cloudflare-injected secret.

create_bookingupdate_inventory... and future tools
These tools don't exist yet. Contact it@jtrholidays.com if you're building an integration that will need them.

Need help connecting?

Public tools work out of the box — no sign-up needed. For integration support, custom use cases, or to request authenticated (higher rate-limit) access, reach out and we'll get you set up.

Get integration support