Search hotels worldwide, compare total-stay prices and cancellation terms, then book on Pilot.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Get static details (description, amenities, photos, address) for a hotel id returned by search_hotels.
Hotel id from search_hotels
Get static details (description, amenities, photos, address) for a hotel id returned by search_hotels.
| Argument | Type | Description |
|---|---|---|
| hotel_id* | string | Hotel id from search_hotels |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"hotel_id"
],
"properties": {
"hotel_id": {
"type": "string",
"description": "Hotel id from search_hotels"
}
}
}Get room rates for a hotel id from search_hotels. Each offer includes a price, board type and refundability. Booking is not available through this connector; send the user to Pilot to book.
| Argument | Type | Description |
|---|---|---|
| guests | integer | Number of guests |
| check_in | string | Override check-in, YYYY-MM-DD |
| hotel_id* | string | Hotel id from search_hotels |
| check_out | string | Override check-out, YYYY-MM-DD |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"hotel_id"
],
"properties": {
"guests": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Number of guests"
},
"check_in": {
"type": "string",
"description": "Override check-in, YYYY-MM-DD"
},
"hotel_id": {
"type": "string",
"description": "Hotel id from search_hotels"
},
"check_out": {
"type": "string",
"description": "Override check-out, YYYY-MM-DD"
}
}
}Search bookable hotels by location and dates. Returns hotels with nightly prices, photos, coordinates, a `url` linking to the hotel on Pilot, and an opaque id to pass to get_hotel_details and get_rates. Booking is not available through this connector, so link the user to a hotel's `url` when they want to book. Narrow with the rating, amenity and radius filters rather than requesting a large limit, and page with offset using next_offset from the previous result.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Maximum hotels to return |
| rooms | integer | Rooms required |
| guests | integer | Number of adults |
| offset | integer | Hotels to skip, for paging |
| check_in* | string | Check-in date, YYYY-MM-DD |
| currency | string | ISO-4217 currency for returned prices |
| location* | string | City, address, or place name |
| ai_search | string | Free-text preference, e.g. 'boutique hotel near the old town'. Ignored when it matches no inventory. |
| check_out* | string | Check-out date, YYYY-MM-DD |
| amenity_ids | array | Supplier facility ids the hotel must offer |
| children_ages | array | Ages of children sharing the room |
| radius_meters | integer | Restrict to this radius around the location |
| min_star_rating | number | Only hotels at or above this star rating |
| min_guest_rating | number | Only hotels at or above this guest review score, out of 10 |
| guest_nationality | string | ISO-2 country of the guest; affects rate eligibility |
| property_type_ids | array | Supplier hotel-type ids to restrict to |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"location",
"check_in",
"check_out"
],
"properties": {
"limit": {
"type": "integer",
"default": 20,
"maximum": 50,
"minimum": 1,
"description": "Maximum hotels to return"
},
"rooms": {
"type": "integer",
"default": 1,
"maximum": 9007199254740991,
"minimum": 1,
"description": "Rooms required"
},
"guests": {
"type": "integer",
"default": 2,
"maximum": 9007199254740991,
"minimum": 1,
"description": "Number of adults"
},
"offset": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0,
"description": "Hotels to skip, for paging"
},
"check_in": {
"type": "string",
"description": "Check-in date, YYYY-MM-DD"
},
"currency": {
"type": "string",
"default": "USD",
"maxLength": 3,
"minLength": 3,
"description": "ISO-4217 currency for returned prices"
},
"location": {
"type": "string",
"description": "City, address, or place name"
},
"ai_search": {
"type": "string",
"description": "Free-text preference, e.g. 'boutique hotel near the old town'. Ignored when it matches no inventory."
},
"check_out": {
"type": "string",
"description": "Check-out date, YYYY-MM-DD"
},
"amenity_ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
"description": "Supplier facility ids the hotel must offer"
},
"children_ages": {
"type": "array",
"items": {
"type": "integer",
"maximum": 17,
"minimum": 0
},
"description": "Ages of children sharing the room"
},
"radius_meters": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1000,
"description": "Restrict to this radius around the location"
},
"min_star_rating": {
"type": "number",
"maximum": 5,
"minimum": 1,
"description": "Only hotels at or above this star rating"
},
"min_guest_rating": {
"type": "number",
"maximum": 10,
"minimum": 1,
"description": "Only hotels at or above this guest review score, out of 10"
},
"guest_nationality": {
"type": "string",
"default": "US",
"maxLength": 2,
"minLength": 2,
"description": "ISO-2 country of the guest; affects rate eligibility"
},
"property_type_ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
"description": "Supplier hotel-type ids to restrict to"
}
}
}