GetMyHotels
Search hotels, get live prices, and check out in chat. Guest search needs no sign-in.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"getmyhotels": {
"url": "https://mcp.getmyhotels.com"
}
}
}Remote endpoints
https://mcp.getmyhotels.comstreamable-httpWhat it can do
Tool inventory
Tools (18)
🟢search(query, destination, checkIn, checkOut, adults, ...)
Search GetMyHotels for hotels matching a query. Returns a list of results with ids that can be passed to `fetch` for full details. Provide the destination and travel dates in the query.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Natural-language search, e.g. 'hotels in Lisbon 2026-08-10 to 2026-08-14 for 2 adults'."
},
"destination": {
"type": "string",
"description": "City, region, or place to search (e.g. 'Paris', 'Goa', 'Lower Manhattan')."
},
"checkIn": {
"type": "string",
"description": "Check-in date, ISO 8601 (YYYY-MM-DD)."
},
"checkOut": {
"type": "string",
"description": "Check-out date, ISO 8601 (YYYY-MM-DD). Must be after check-in."
},
"adults": {
"type": "integer",
"minimum": 1,
"maximum": 10,
"description": "Adults (1-10). Default 2."
},
"children": {
"type": "integer",
"minimum": 0,
"maximum": 6,
"description": "Children (0-6). Default 0."
},
"rooms": {
"type": "integer",
"minimum": 1,
"maximum": 6,
"description": "Rooms (1-6). Default 1."
},
"childrenAges": {
"type": "array",
"items": {
"type": "integer",
"minimum": 0,
"maximum": 17
},
"description": "Age of each child at check-in. Length should equal `children`."
},
"guestNationality": {
"type": "string",
"description": "ISO 3166-1 alpha-2 guest nationality (e.g. 'US', 'GB'). Affects supplier pricing."
},
"keywords": {
"type": "string",
"description": "Optional free-text preferences, e.g. 'beachfront pool spa'."
}
},
"required": [
"query"
],
"additionalProperties": false
}🟢fetch(id)
Fetch the full record for a result id returned by `search` (a hotel) or for a booking reference (prefixed 'bk_'). Returns a document with id, title, text, url, and metadata.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "An id from `search` results, or a 'bk_'-prefixed booking ref."
}
},
"required": [
"id"
],
"additionalProperties": false
}🟢search_hotels(destination, checkIn, checkOut, adults, children, ...)
Search live hotel availability for a destination and date range. Returns a price-sorted list of hotels (JSON in the text), each with an opaque `ref` and an indicative stay price. To book: call `get_rooms` and pass the chosen room's `offerRef` to `get_checkout_quote` then `create_checkout`. For a hotel's other rooms (or a hotel not in the list), call `get_rooms`. Narrow with `keywords` (a hotel name, area, or amenities).
Input Schema
{
"type": "object",
"properties": {
"destination": {
"type": "string",
"description": "City, region, or place to search (e.g. 'Paris', 'Goa', 'Lower Manhattan')."
},
"checkIn": {
"type": "string",
"description": "Check-in date, ISO 8601 (YYYY-MM-DD)."
},
"checkOut": {
"type": "string",
"description": "Check-out date, ISO 8601 (YYYY-MM-DD). Must be after check-in."
},
"adults": {
"type": "integer",
"minimum": 1,
"maximum": 10,
"description": "Adults (1-10). Default 2."
},
"children": {
"type": "integer",
"minimum": 0,
"maximum": 6,
"description": "Children (0-6). Default 0."
},
"rooms": {
"type": "integer",
"minimum": 1,
"maximum": 6,
"description": "Rooms (1-6). Default 1."
},
"childrenAges": {
"type": "array",
"items": {
"type": "integer",
"minimum": 0,
"maximum": 17
},
"description": "Age of each child at check-in. Length should equal `children`."
},
"guestNationality": {
"type": "string",
"description": "ISO 3166-1 alpha-2 guest nationality (e.g. 'US', 'GB'). Affects supplier pricing."
},
"keywords": {
"type": "string",
"description": "Optional free-text preferences, e.g. 'beachfront pool spa'."
}
},
"required": [
"destination",
"checkIn",
"checkOut"
],
"additionalProperties": false
}🟢get_rooms(ref, supplierCode, supplierHotelId, checkIn, checkOut, ...)
List the bookable rooms for ONE hotel and date range. Each room's `offerRef` is what you pass to `get_checkout_quote` / `create_checkout`. Use the hotel `ref` from `search_hotels` or `search`. Call this to see all of a chosen hotel's rooms, or to refresh availability before checkout.
Input Schema
{
"type": "object",
"properties": {
"ref": {
"type": "string",
"description": "The hotel `ref` from search (e.g. 'tbo:1360717')."
},
"supplierCode": {
"type": "string",
"description": "Alternative to `ref`: supplier code."
},
"supplierHotelId": {
"type": "string",
"description": "Alternative to `ref`: supplier hotel id."
},
"checkIn": {
"type": "string",
"description": "Check-in date, ISO 8601 (YYYY-MM-DD)."
},
"checkOut": {
"type": "string",
"description": "Check-out date, ISO 8601 (YYYY-MM-DD)."
},
"adults": {
"type": "integer",
"minimum": 1,
"maximum": 10,
"description": "Adults (default 2)."
},
"children": {
"type": "integer",
"minimum": 0,
"maximum": 6,
"description": "Children (default 0)."
},
"rooms": {
"type": "integer",
"minimum": 1,
"maximum": 9,
"description": "Rooms (default 1)."
}
},
"required": [
"checkIn",
"checkOut"
],
"additionalProperties": false
}🟢get_hotel_details(ref, supplierCode, supplierHotelId)
Get full property details (description, amenities, photos, policies, location) for a hotel, identified by its `ref` from `search_hotels` (or its supplierCode + supplierHotelId).
Input Schema
{
"type": "object",
"properties": {
"ref": {
"type": "string",
"description": "The hotel `ref` from search (e.g. 'tbo:1360717')."
},
"supplierCode": {
"type": "string",
"description": "Alternative to `ref`: supplier code."
},
"supplierHotelId": {
"type": "string",
"description": "Alternative to `ref`: supplier hotel id."
}
},
"additionalProperties": false
}🟢get_checkout_quote(ref, supplierCode, supplierHotelId, offerRef, supplierRoomId, ...)
Re-price a specific room live against the supplier before checkout (no booking, no charge). Use the `offerRef` and price/currency from `get_rooms`. Returns the authoritative grand total, a `rateValidUntil` timestamp, and any taxes/fees.
Input Schema
{
"type": "object",
"properties": {
"ref": {
"type": "string",
"description": "Hotel `ref` from `search_hotels` (e.g. 'TBO:1402689'). Alternative to supplierCode + supplierHotelId."
},
"supplierCode": {
"type": "string",
"description": "Supplier code (from `search_hotels`). Required if `ref` is omitted."
},
"supplierHotelId": {
"type": "string",
"description": "Supplier hotel id (from `search_hotels`). Required if `ref` is omitted."
},
"offerRef": {
"type": "string",
"description": "Opaque room offer from get_rooms."
},
"supplierRoomId": {
"type": "string",
"description": "Bookable room/rate id from the chosen room in `search_hotels`."
},
"checkIn": {
"type": "string",
"description": "Check-in date, ISO 8601 (YYYY-MM-DD)."
},
"checkOut": {
"type": "string",
"description": "Check-out date, ISO 8601 (YYYY-MM-DD)."
},
"rooms": {
"type": "integer",
"minimum": 1,
"maximum": 9,
"description": "Rooms (default 1)."
},
"adults": {
"type": "integer",
"minimum": 1,
"maximum": 10,
"description": "Adults (default 2)."
},
"children": {
"type": "integer",
"minimum": 0,
"maximum": 6,
"description": "Children (default 0)."
},
"childrenAges": {
"type": "array",
"items": {
"type": "integer",
"minimum": 0,
"maximum": 18
},
"description": "Age of each child."
},
"currency": {
"type": "string",
"description": "ISO 4217 currency of `price`/`totalPrice` (e.g. 'USD')."
},
"totalPrice": {
"type": "number",
"description": "The room's price from `search_hotels` — the TOTAL for the whole stay, not a nightly rate (used to detect price changes)."
},
"promoCode": {
"type": "string",
"description": "Optional promo code."
}
},
"required": [
"checkIn",
"checkOut",
"totalPrice",
"currency"
],
"additionalProperties": false
}🔴create_checkout(ref, supplierCode, supplierHotelId, offerRef, supplierRoomId, ...)
Create a secure checkout for a chosen hotel room and return a getmyhotels.com URL where the guest completes payment. This does NOT charge the card — the guest pays on the hosted page. Confirm the hotel, room, dates, and price with the user before calling. Call `get_checkout_quote` first to confirm the live price.
Input Schema
{
"type": "object",
"properties": {
"ref": {
"type": "string",
"description": "Hotel `ref` from `search_hotels` (e.g. 'TBO:1402689'). Alternative to supplierCode + supplierHotelId."
},
"supplierCode": {
"type": "string",
"description": "Supplier code (from `search_hotels`). Required if `ref` is omitted."
},
"supplierHotelId": {
"type": "string",
"description": "Supplier hotel id (from `search_hotels`). Required if `ref` is omitted."
},
"offerRef": {
"type": "string",
"description": "Opaque room offer from get_rooms."
},
"supplierRoomId": {
"type": "string",
"description": "Bookable room/rate id from the chosen room in `search_hotels`."
},
"checkIn": {
"type": "string",
"description": "Check-in date, ISO 8601 (YYYY-MM-DD)."
},
"checkOut": {
"type": "string",
"description": "Check-out date, ISO 8601 (YYYY-MM-DD)."
},
"rooms": {
"type": "integer",
"minimum": 1,
"maximum": 9,
"description": "Rooms (default 1)."
},
"adults": {
"type": "integer",
"minimum": 1,
"maximum": 10,
"description": "Adults (default 2)."
},
"children": {
"type": "integer",
"minimum": 0,
"maximum": 6,
"description": "Children (default 0)."
},
"childrenAges": {
"type": "array",
"items": {
"type": "integer",
"minimum": 0,
"maximum": 18
},
"description": "Age of each child."
},
"currency": {
"type": "string",
"description": "ISO 4217 currency of `price`/`totalPrice` (e.g. 'USD')."
},
"hotelName": {
"type": "string",
"description": "Hotel name (from `search_hotels`)."
},
"roomName": {
"type": "string",
"description": "Room name (from the chosen room)."
},
"price": {
"type": "number",
"description": "Total to charge for the WHOLE stay (use `grandTotal` from `get_checkout_quote` verbatim — do not multiply it by the number of nights)."
}
},
"required": [
"hotelName",
"roomName",
"checkIn",
"checkOut",
"price",
"currency"
],
"additionalProperties": false
}🟢get_booking(bookingToken)
Look up a hotel booking by its management token (sent in the confirmation email). Returns the booking status, hotel, dates, and guest details.
Input Schema
{
"type": "object",
"properties": {
"bookingToken": {
"type": "string",
"description": "The booking management token from the confirmation email/URL."
}
},
"required": [
"bookingToken"
],
"additionalProperties": false
}🟢list_trips
List the signed-in user's saved trips (itineraries).
Input Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟡save_trip(title, description, startDate, endDate, budget, ...)
Create a new saved trip (itinerary) for the signed-in user.
Input Schema
{
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "Trip title (1-255 chars)."
},
"description": {
"type": "string",
"description": "Optional notes (≤4000 chars)."
},
"startDate": {
"type": "string",
"description": "Trip start, ISO 8601 (YYYY-MM-DD)."
},
"endDate": {
"type": "string",
"description": "Trip end, ISO 8601 (YYYY-MM-DD)."
},
"budget": {
"type": "number",
"description": "Optional total budget."
},
"budgetCurrency": {
"type": "string",
"description": "ISO 4217 currency for the budget (e.g. 'USD')."
}
},
"required": [
"title",
"startDate",
"endDate"
],
"additionalProperties": false
}🟡add_trip_item(itineraryPublicId, day, type, title, description, ...)
Add an item (hotel, flight, activity, etc.) to a saved trip on a given day.
Input Schema
{
"type": "object",
"properties": {
"itineraryPublicId": {
"type": "string",
"description": "The trip's public id (from `list_trips`/`save_trip`)."
},
"day": {
"type": "integer",
"minimum": 1,
"maximum": 365,
"description": "Day number within the trip."
},
"type": {
"type": "string",
"enum": [
"hotel",
"flight",
"experience",
"transfer",
"activity",
"meal",
"note"
],
"description": "Item type."
},
"title": {
"type": "string",
"description": "Item title (1-255 chars)."
},
"description": {
"type": "string",
"description": "Optional notes (≤2000 chars)."
},
"sortOrder": {
"type": "integer",
"minimum": 0,
"description": "Order within the day (default 0)."
}
},
"required": [
"itineraryPublicId",
"day",
"type",
"title"
],
"additionalProperties": false
}🟢list_my_bookings(page, limit)
List the signed-in user's hotel bookings.
Input Schema
{
"type": "object",
"properties": {
"page": {
"type": "integer",
"minimum": 1,
"description": "Page number (default 1)."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"description": "Page size (default 20)."
}
},
"additionalProperties": false
}🟢get_my_booking(publicId)
Get full details of one of the signed-in user's bookings by its public id.
Input Schema
{
"type": "object",
"properties": {
"publicId": {
"type": "string",
"description": "The booking's public id."
}
},
"required": [
"publicId"
],
"additionalProperties": false
}⚪request_booking_action_code(publicId, action)
Email a 6-digit verification code to the booking owner, required before cancelling or modifying a booking. Step 1 of 2 — then call `cancel_booking`/`modify_booking` with the code.
Input Schema
{
"type": "object",
"properties": {
"publicId": {
"type": "string",
"description": "The booking's public id."
},
"action": {
"type": "string",
"enum": [
"cancel",
"modify"
],
"description": "Which action the code authorizes."
}
},
"required": [
"publicId",
"action"
],
"additionalProperties": false
}🔴cancel_booking(publicId, verificationCode, reason)
Cancel one of the signed-in user's bookings. Requires the 6-digit `verificationCode` from `request_booking_action_code`. This may be irreversible and can trigger a refund per policy.
Input Schema
{
"type": "object",
"properties": {
"publicId": {
"type": "string",
"description": "The booking's public id."
},
"verificationCode": {
"type": "string",
"description": "6-digit code from `request_booking_action_code`."
},
"reason": {
"type": "string",
"description": "Optional cancellation reason (≤1000 chars)."
}
},
"required": [
"publicId",
"verificationCode"
],
"additionalProperties": false
}🔴modify_booking(publicId, verificationCode, checkIn, checkOut, specialRequests)
Change one of the signed-in user's bookings. Requires the 6-digit `verificationCode` from `request_booking_action_code`. Special-request edits always apply. A DATE change is pushed to the hotel supplier as a cancel-and-rebook at current availability, so it only works for suppliers that support amendment — for others (and when no room is available for the new dates) it returns an error asking you to cancel and rebook instead. A date change can shift the price and issue a new confirmation; the result's `supplierModifyStatus` says whether the supplier reservation was actually changed (`modified`), simulated (`simulated`), or the edit stayed local (`local_only`, e.g. special requests only). Never promise a date change went through unless `supplierModifyStatus` is `modified` or `simulated`.
Input Schema
{
"type": "object",
"properties": {
"publicId": {
"type": "string",
"description": "The booking's public id."
},
"verificationCode": {
"type": "string",
"description": "6-digit code from `request_booking_action_code`."
},
"checkIn": {
"type": "string",
"description": "New check-in date, ISO 8601 (optional)."
},
"checkOut": {
"type": "string",
"description": "New check-out date, ISO 8601 (optional)."
},
"specialRequests": {
"type": "string",
"description": "New special requests (≤2000 chars, optional)."
}
},
"required": [
"publicId",
"verificationCode"
],
"additionalProperties": false
}🟢list_payment_methods
List the signed-in user's saved payment cards (brand, last 4, expiry, default). Use the returned `publicId` with `create_one_click_checkout` to pre-select a card.
Input Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}🔴create_one_click_checkout(ref, supplierCode, supplierHotelId, offerRef, supplierRoomId, ...)
Create a checkout for the signed-in user with a saved card pre-selected, and return a getmyhotels.com URL where they confirm + pay in one click. Does NOT charge the card — the user confirms on the hosted page. Get the `savedPaymentMethodPublicId` from `list_payment_methods`. Confirm the hotel, room, dates, and price with the user first.
Input Schema
{
"type": "object",
"properties": {
"ref": {
"type": "string",
"description": "Hotel `ref` from `search_hotels` (e.g. 'TBO:1402689')."
},
"supplierCode": {
"type": "string",
"description": "Supplier code (if `ref` omitted)."
},
"supplierHotelId": {
"type": "string",
"description": "Supplier hotel id (if `ref` omitted)."
},
"offerRef": {
"type": "string",
"description": "Opaque room offer from get_rooms."
},
"supplierRoomId": {
"type": "string",
"description": "Bookable room/rate id from `search_hotels`."
},
"savedPaymentMethodPublicId": {
"type": "string",
"description": "Saved card `publicId` from `list_payment_methods`."
},
"hotelName": {
"type": "string",
"description": "Hotel name."
},
"roomName": {
"type": "string",
"description": "Room name."
},
"checkIn": {
"type": "string",
"description": "Check-in date, ISO 8601."
},
"checkOut": {
"type": "string",
"description": "Check-out date, ISO 8601."
},
"price": {
"type": "number",
"description": "Total for the WHOLE stay (use `grandTotal` from `get_checkout_quote` verbatim — do not multiply it by the number of nights)."
},
"currency": {
"type": "string",
"description": "ISO 4217 currency (e.g. 'USD')."
},
"adults": {
"type": "integer",
"minimum": 1,
"maximum": 10,
"description": "Adults (default 2)."
},
"children": {
"type": "integer",
"minimum": 0,
"maximum": 6,
"description": "Children (default 0)."
},
"rooms": {
"type": "integer",
"minimum": 1,
"maximum": 9,
"description": "Rooms (default 1)."
}
},
"required": [
"savedPaymentMethodPublicId",
"hotelName",
"roomName",
"checkIn",
"checkOut",
"price",
"currency"
],
"additionalProperties": false
}Community
Evidence