What this MCP does
Searches flights, hotels, and rental cars, supports flexible fare calendars and destinations, and retrieves hotel details and travel FAQs.
Tools
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['pickupLocation', 'pickupDate', 'dropoffDate'], 'properties': {'limit': {'type': 'integer', 'default': 12, 'maximum': 100, 'minimum': 1, 'description': 'Maximum number of car offers to return'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 99, 'minimum': 0, 'description': 'Number of car offers to skip for pagination (default: 0)'}, 'pickupDate': {'type': 'string', 'description': 'Pickup date (YYYY-MM-DD)'}, 'pickupTime': {'type': 'string', 'default': '10:00', 'pattern': '^\\d{2}:\\d{2}(?::\\d{2})?$', 'description': 'Pickup time (HH:mm or HH:mm:ss, default 10:00)'}, 'dropoffDate': {'$ref': '#/properties/pickupDate', 'description': 'Dropoff date (YYYY-MM-DD)'}, 'dropoffTime': {'$ref': '#/properties/pickupTime', 'default': '10:00', 'description': 'Dropoff time (HH:mm or HH:mm:ss, default 10:00)'}, 'pickupLocation': {'type': 'string', 'minLength': 1, 'description': 'Pickup city or airport code'}, 'dropoffLocation': {'$ref': '#/properties/pickupLocation', 'description': 'Dropoff city or airport code (defaults to pickup)'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['searchUrl', 'results', 'pagination'], 'properties': {'results': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'companyName', 'vehicleName', 'passengers', 'bags', 'transmission', 'unlimitedMileage', 'freeCancellation', 'allowCancellation', 'prepaid', 'ccRequired', 'ageRequired', 'priceCurrency', 'priceRateInDollars', 'totalPriceInDollars', 'pickup', 'dropoff', 'bookingLink'], 'properties': {'id': {'type': 'string', 'description': 'Opaque offer identifier; not a user identifier'}, 'bags': {'type': 'integer', 'minimum': 0, 'description': 'Bag capacity'}, 'tags': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Vehicle type tags'}, 'pickup': {'type': 'object', 'properties': {'address': {'type': 'string', 'description': 'Pickup/dropoff address'}, 'airportCode': {'type': 'string', 'description': 'Pickup/dropoff airport code'}}, 'description': 'Pickup location', 'additionalProperties': False}, 'dropoff': {'type': 'object', 'properties': {'address': {'$ref': '#/properties/results/items/properties/pickup/properties/address'}, 'airportCode': {'$ref': '#/properties/results/items/properties/pickup/properties/airportCode'}}, 'description': 'Dropoff location', 'additionalProperties': False}, 'prepaid': {'type': 'boolean', 'description': 'Whether the rate is prepaid'}, 'ccRequired': {'type': 'boolean', 'description': 'Credit card required to book'}, 'passengers': {'type': 'integer', 'minimum': 0, 'description': 'Passenger capacity'}, 'ageRequired': {'type': 'boolean', 'description': 'Driver age required'}, 'bookingLink': {'type': 'string', 'format': 'uri', 'description': 'Deep link to book this car'}, 'companyName': {'type': 'string', 'description': 'Rental company name'}, 'vehicleName': {'type': 'string', 'description': 'Vehicle name'}, 'transmission': {'enum': ['Automatic', 'Manual'], 'type': 'string', 'description': 'Transmission type'}, 'priceCurrency': {'type': 'string', 'description': 'Currency code (ISO-4217)'}, 'companyLogoUrl': {'type': 'string', 'description': 'Rental company logo URL'}, 'exampleVehicle': {'type': 'string', 'description': 'Example model text'}, 'freeCancellation': {'type': 'boolean', 'description': 'Free cancellation available'}, 'unlimitedMileage': {'type': 'boolean', 'description': 'Includes unlimited mileage'}, 'allowCancellation': {'type': 'boolean', 'description': 'Cancellation allowed (free or fee)'}, 'priceRateInDollars': {'type': 'number', 'description': 'Per-day/quoted rate in US dollars for comparison'}, 'vehicleDescription': {'type': 'string', 'description': 'Vehicle description'}, 'totalPriceInDollars': {'type': 'number', 'description': 'Total rental price in US dollars'}}, 'additionalProperties': False}, 'description': 'Available car rental offers'}, 'searchUrl': {'type': 'string', 'format': 'uri', 'description': 'Complete search URL with all parameters'}, 'pagination': {'type': 'object', 'required': ['totalAvailable', 'currentlyShowing', 'offset', 'limit', 'hasMoreResults'], 'properties': {'limit': {'type': 'integer', 'description': 'Maximum results per page'}, 'offset': {'type': 'integer', 'description': 'Current result offset for pagination'}, 'hasMoreResults': {'type': 'boolean', 'description': 'Whether additional results are available'}, 'totalAvailable': {'type': 'integer', 'description': 'Total number of cars available'}, 'currentlyShowing': {'type': 'integer', 'description': 'Number of cars in this result set'}}, 'description': 'Result pagination information', 'additionalProperties': False}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['from', 'depart'], 'properties': {'from': {'type': 'string', 'description': 'Departure IATA code or city name'}, 'adults': {'type': 'integer', 'default': 1, 'maximum': 9, 'minimum': 1, 'description': 'Number of adult passengers'}, 'depart': {'type': 'string', 'description': 'Departure date in YYYY-MM-DD format'}, 'return': {'$ref': '#/properties/depart', 'description': 'Return date in YYYY-MM-DD format (optional for one-way trips)'}, 'children': {'type': 'integer', 'default': 0, 'maximum': 8, 'minimum': 0, 'description': 'Number of child passengers'}, 'fare_class': {'enum': ['basic-economy', 'economy', 'premium', 'business', 'first'], 'type': 'string', 'default': 'economy', 'description': 'Fare class preference'}, 'infantsLap': {'type': 'integer', 'default': 0, 'maximum': 4, 'minimum': 0, 'description': 'Number of lap infants'}, 'infantsSeat': {'type': 'integer', 'default': 0, 'maximum': 4, 'minimum': 0, 'description': 'Number of seat infants'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['searchUrl', 'results', 'pagination'], 'properties': {'results': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'id', 'destination', 'price', 'flightType', 'deepLink'], 'properties': {'id': {'type': 'string', 'description': 'Travel deal card identifier; not a user identifier'}, 'type': {'type': 'string', 'const': 'DealCard'}, 'price': {'type': 'object', 'required': ['amount', 'currency'], 'properties': {'amount': {'type': 'number'}, 'currency': {'type': 'string'}}, 'additionalProperties': False}, 'deepLink': {'type': 'string', 'format': 'uri'}, 'dateRange': {'type': 'string'}, 'flightType': {'type': 'string'}, 'tripLength': {'type': 'string'}, 'description': {'type': 'string'}, 'destination': {'type': 'object', 'required': ['city', 'region', 'airport'], 'properties': {'city': {'type': 'string'}, 'region': {'type': 'string'}, 'airport': {'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}}, 'searchUrl': {'type': 'string', 'format': 'uri', 'description': 'Complete search URL with all parameters'}, 'pagination': {'type': 'object', 'required': ['totalAvailable', 'currentlyShowing', 'offset', 'limit', 'hasMoreResults'], 'properties': {'limit': {'type': 'integer', 'description': 'Maximum results per page'}, 'offset': {'type': 'integer', 'description': 'Current result offset for pagination'}, 'hasMoreResults': {'type': 'boolean', 'description': 'Whether additional results are available'}, 'totalAvailable': {'type': 'integer', 'description': 'Total number of destinations available'}, 'currentlyShowing': {'type': 'integer', 'description': 'Number of destinations in this result set'}}, 'description': 'Result pagination information', 'additionalProperties': False}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['query'], 'properties': {'query': {'type': 'string', 'minLength': 1, 'description': 'Concise FAQ question for retrieval. Do not include personal identifiers, account IDs, or session details.'}, 'top_k': {'type': 'integer', 'default': 3, 'maximum': 5, 'minimum': 1, 'description': 'Number of top FAQ sources to return (1-5)'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['chunks'], 'properties': {'chunks': {'type': 'array', 'items': {'type': 'object', 'required': ['content', 'similarity'], 'properties': {'url': {'type': 'string', 'description': 'URL of the source article'}, 'title': {'type': 'string', 'description': 'Title of the source article'}, 'content': {'type': 'string', 'description': 'The text content of the retrieved chunk'}, 'similarity': {'type': 'number', 'description': 'Similarity score (0-1)'}}, 'additionalProperties': False}, 'description': 'Retrieved relevant chunks'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['origin', 'destination', 'departureDate'], 'properties': {'sort': {'enum': ['date', 'price'], 'type': 'string', 'default': 'date', 'description': 'Sort results chronologically or by lowest price first'}, 'adults': {'type': 'integer', 'default': 1, 'maximum': 9, 'minimum': 1, 'description': 'Number of adult passengers (default: 1, max: 9)'}, 'origin': {'type': 'string', 'description': 'Departure city name or IATA code (will be resolved to IATA code automatically)'}, 'children': {'type': 'integer', 'default': 0, 'maximum': 8, 'minimum': 0, 'description': 'Number of child passengers (default: 0, max: 8)'}, 'infantsLap': {'type': 'integer', 'default': 0, 'maximum': 4, 'minimum': 0, 'description': 'Number of lap infants (default: 0, max: 4)'}, 'returnDate': {'anyOf': [{'$ref': '#/properties/departureDate'}, {'type': 'null'}], 'description': 'Return date for matching trip length (optional, YYYY-MM-DD format)'}, 'destination': {'type': 'string', 'description': 'Arrival city name or IATA code (will be resolved to IATA code automatically)'}, 'infantsSeat': {'type': 'integer', 'default': 0, 'maximum': 4, 'minimum': 0, 'description': 'Number of seat infants (default: 0, max: 4)'}, 'departureDate': {'type': 'string', 'description': 'Preferred departure date (YYYY-MM-DD format)'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['searchUrl', 'origin', 'destination', 'mode', 'sort', 'chart'], 'properties': {'mode': {'enum': ['depart', 'return'], 'type': 'string', 'description': 'Indicates whether these options vary departure dates or return dates'}, 'sort': {'enum': ['date', 'price'], 'type': 'string', 'description': 'Ordering applied to the options array'}, 'chart': {'type': 'object', 'required': ['type', 'id', 'title', 'origin', 'destination', 'mode', 'sort', 'searchUrl', 'points'], 'properties': {'id': {'type': 'string', 'description': 'Fare chart identifier; not a user identifier'}, 'mode': {'enum': ['depart', 'return'], 'type': 'string'}, 'sort': {'enum': ['date', 'price'], 'type': 'string'}, 'type': {'type': 'string', 'const': 'FlexChart'}, 'title': {'type': 'string'}, 'origin': {'type': 'string'}, 'points': {'type': 'array', 'items': {'type': 'object', 'required': ['departure', 'price'], 'properties': {'price': {'type': 'number'}, 'return': {'type': 'string'}, 'departure': {'type': 'string'}}, 'additionalProperties': False}}, 'subtitle': {'type': 'string'}, 'searchUrl': {'type': 'string', 'format': 'uri'}, 'destination': {'type': 'string'}}, 'additionalProperties': False}, 'origin': {'type': 'string', 'description': 'Resolved origin airport code used for this search'}, 'searchUrl': {'type': 'string', 'format': 'uri', 'description': 'Complete search URL with all parameters'}, 'destination': {'type': 'string', 'description': 'Resolved destination airport code used for this search'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['origin', 'destination', 'departureDate', 'returnDate'], 'properties': {'sort': {'enum': ['date', 'price'], 'type': 'string', 'default': 'date', 'description': 'Sort results chronologically or by lowest price first'}, 'adults': {'type': 'integer', 'default': 1, 'maximum': 9, 'minimum': 1, 'description': 'Number of adult passengers (default: 1, max: 9)'}, 'origin': {'type': 'string', 'description': 'Departure city name or IATA code (will be resolved to IATA code automatically)'}, 'children': {'type': 'integer', 'default': 0, 'maximum': 8, 'minimum': 0, 'description': 'Number of child passengers (default: 0, max: 8)'}, 'infantsLap': {'type': 'integer', 'default': 0, 'maximum': 4, 'minimum': 0, 'description': 'Number of lap infants (default: 0, max: 4)'}, 'returnDate': {'$ref': '#/properties/departureDate', 'description': 'Return date for the reference trip (YYYY-MM-DD format)'}, 'destination': {'type': 'string', 'description': 'Arrival city name or IATA code (will be resolved to IATA code automatically)'}, 'infantsSeat': {'type': 'integer', 'default': 0, 'maximum': 4, 'minimum': 0, 'description': 'Number of seat infants (default: 0, max: 4)'}, 'departureDate': {'type': 'string', 'description': 'Preferred departure date (YYYY-MM-DD format)'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['searchUrl', 'origin', 'destination', 'mode', 'sort', 'chart'], 'properties': {'mode': {'enum': ['depart', 'return'], 'type': 'string', 'description': 'Indicates whether these options vary departure dates or return dates'}, 'sort': {'enum': ['date', 'price'], 'type': 'string', 'description': 'Ordering applied to the options array'}, 'chart': {'type': 'object', 'required': ['type', 'id', 'title', 'origin', 'destination', 'mode', 'sort', 'searchUrl', 'points'], 'properties': {'id': {'type': 'string', 'description': 'Fare chart identifier; not a user identifier'}, 'mode': {'enum': ['depart', 'return'], 'type': 'string'}, 'sort': {'enum': ['date', 'price'], 'type': 'string'}, 'type': {'type': 'string', 'const': 'FlexChart'}, 'title': {'type': 'string'}, 'origin': {'type': 'string'}, 'points': {'type': 'array', 'items': {'type': 'object', 'required': ['departure', 'price'], 'properties': {'price': {'type': 'number'}, 'return': {'type': 'string'}, 'departure': {'type': 'string'}}, 'additionalProperties': False}}, 'subtitle': {'type': 'string'}, 'searchUrl': {'type': 'string', 'format': 'uri'}, 'destination': {'type': 'string'}}, 'additionalProperties': False}, 'origin': {'type': 'string', 'description': 'Resolved origin airport code used for this search'}, 'searchUrl': {'type': 'string', 'format': 'uri', 'description': 'Complete search URL with all parameters'}, 'destination': {'type': 'string', 'description': 'Resolved destination airport code used for this search'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['origin', 'destination', 'departureDate'], 'properties': {'sort': {'enum': ['price', 'duration', 'value'], 'type': 'string', 'default': 'value', 'description': 'Sort flights by price (cheapest first), duration (shortest first), or value (best price/time ratio, default)'}, 'limit': {'type': 'integer', 'default': 12, 'maximum': 100, 'minimum': 1, 'description': 'Maximum number of flights to return (default: 12, max: 100)'}, 'adults': {'type': 'integer', 'default': 1, 'maximum': 9, 'minimum': 1, 'description': 'Number of adult passengers (default: 1, max: 9)'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 99, 'minimum': 0, 'description': 'Number of flights to skip for pagination (default: 0)'}, 'origin': {'type': 'string', 'minLength': 1, 'description': 'Departure location - prefer IATA code'}, 'children': {'type': 'integer', 'default': 0, 'maximum': 8, 'minimum': 0, 'description': 'Number of child passengers (default: 0, max: 8)'}, 'maxStops': {'enum': ['none', 'one', 'many'], 'type': 'string', 'description': 'Maximum number of stops (none=nonstop, one=1 stop, many=2+ stops)'}, 'fareClass': {'enum': ['basic-economy', 'economy', 'premium', 'business', 'first'], 'type': 'string', 'default': 'economy', 'description': 'Fare class preference (default: economy)'}, 'infantsLap': {'type': 'integer', 'default': 0, 'maximum': 4, 'minimum': 0, 'description': 'Number of lap infants (default: 0, max: 4)'}, 'returnDate': {'$ref': '#/properties/departureDate'}, 'destination': {'type': 'string', 'minLength': 1, 'description': 'Arrival location - prefer IATA code'}, 'infantsSeat': {'type': 'integer', 'default': 0, 'maximum': 4, 'minimum': 0, 'description': 'Number of seat infants (default: 0, max: 4)'}, 'departureDate': {'type': 'string'}, 'arrivalAirports': {'anyOf': [{'anyOf': [{'not': {}}, {'type': 'array', 'items': {'type': 'string'}, 'minItems': 1}]}, {'type': 'null'}], 'description': 'Array of specific arrival airport codes to include (when destination city has multiple airports)'}, 'includeStandard': {'type': 'boolean', 'default': True, 'description': 'Include standard flights (default: true)'}, 'excludedAirlines': {'type': 'array', 'items': {'type': 'string'}, 'description': "Array of excluded airline codes (e.g., ['F9', 'NK'])"}, 'arrivalTimeLatest': {'type': 'integer', 'maximum': 1439, 'minimum': 0, 'description': 'Latest arrival time in minutes from midnight (0-1439)'}, 'departureAirports': {'anyOf': [{'anyOf': [{'not': {}}, {'type': 'array', 'items': {'type': 'string'}, 'minItems': 1}]}, {'type': 'null'}], 'description': 'Array of specific departure airport codes to include (when origin city has multiple airports)'}, 'includeHiddenCity': {'type': 'boolean', 'default': True, 'description': 'Include hidden city flights (default: true)'}, 'maxFlightDuration': {'type': 'integer', 'minimum': 0, 'description': 'Maximum total flight duration in minutes'}, 'preferredAirlines': {'type': 'array', 'items': {'type': 'string'}, 'description': "Array of preferred airline codes (e.g., ['UA', 'DL'])"}, 'maxLayoverDuration': {'type': 'integer', 'minimum': 0, 'description': 'Maximum layover duration in minutes'}, 'arrivalTimeEarliest': {'type': 'integer', 'maximum': 1439, 'minimum': 0, 'description': 'Earliest arrival time in minutes from midnight (0-1439)'}, 'departureTimeLatest': {'type': 'integer', 'maximum': 1439, 'minimum': 0, 'description': 'Latest departure time in minutes from midnight (0-1439)'}, 'departureTimeEarliest': {'type': 'integer', 'maximum': 1439, 'minimum': 0, 'description': 'Earliest departure time in minutes from midnight (0-1439)'}, 'includeVirtualInterlining': {'type': 'boolean', 'default': True, 'description': 'Include virtual interlining flights (default: true)'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['searchUrl', 'flights', 'pagination'], 'properties': {'flights': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'id', 'airlines', 'departure', 'arrival', 'duration', 'price', 'deepLink'], 'properties': {'id': {'type': 'string', 'description': 'Flight result card identifier; not a user identifier'}, 'type': {'type': 'string', 'const': 'FlightCard'}, 'price': {'type': 'object', 'required': ['amount', 'currency'], 'properties': {'amount': {'type': 'number'}, 'currency': {'type': 'string'}}, 'additionalProperties': False}, 'arrival': {'type': 'object', 'required': ['airport', 'dateTime'], 'properties': {'airport': {'type': 'string'}, 'dateTime': {'type': 'string'}}, 'additionalProperties': False}, 'airlines': {'type': 'string'}, 'deepLink': {'type': 'string', 'format': 'uri'}, 'duration': {'type': 'string'}, 'layovers': {'type': 'number'}, 'departure': {'type': 'object', 'required': ['airport', 'dateTime'], 'properties': {'airport': {'type': 'string'}, 'dateTime': {'type': 'string'}}, 'additionalProperties': False}, 'attributes': {'type': 'array', 'items': {'type': 'string'}}, 'returnFlight': {'type': 'object', 'required': ['airlines', 'departure', 'arrival', 'duration'], 'properties': {'arrival': {'type': 'object', 'required': ['airport', 'dateTime'], 'properties': {'airport': {'type': 'string'}, 'dateTime': {'type': 'string'}}, 'additionalProperties': False}, 'airlines': {'type': 'string'}, 'duration': {'type': 'string'}, 'layovers': {'type': 'number'}, 'departure': {'type': 'object', 'required': ['airport', 'dateTime'], 'properties': {'airport': {'type': 'string'}, 'dateTime': {'type': 'string'}}, 'additionalProperties': False}, 'attributes': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}}, 'additionalProperties': False}}, 'searchUrl': {'type': 'string', 'format': 'uri', 'description': 'Complete search URL with all parameters'}, 'pagination': {'type': 'object', 'required': ['totalAvailable', 'currentlyShowing', 'offset', 'limit', 'hasMoreResults'], 'properties': {'limit': {'type': 'integer', 'description': 'Maximum results per page'}, 'offset': {'type': 'integer', 'description': 'Current result offset for pagination'}, 'hasMoreResults': {'type': 'boolean', 'description': 'Whether additional results are available'}, 'totalAvailable': {'type': 'integer', 'description': 'Total number of flights available'}, 'currentlyShowing': {'type': 'integer', 'description': 'Number of flights in this result set'}}, 'description': 'Result pagination information', 'additionalProperties': False}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['hotelId', 'checkin', 'checkout'], 'properties': {'live': {'type': 'boolean', 'default': True, 'description': 'Use live rates (includes booking links). Disable for faster, less accurate cached rates.'}, 'checkin': {'type': 'string', 'description': 'Check-in date (YYYY-MM-DD format)'}, 'hotelId': {'type': 'integer', 'description': 'Hotel ID (from search results) to fetch detailed availability for', 'exclusiveMinimum': 0}, 'checkout': {'$ref': '#/properties/checkin', 'description': 'Check-out date (YYYY-MM-DD format)'}, 'numRooms': {'type': 'integer', 'default': 1, 'maximum': 5, 'minimum': 1, 'description': 'Number of rooms (default: 1, max: 5)'}, 'numAdults': {'type': 'integer', 'default': 2, 'maximum': 10, 'minimum': 1, 'description': 'Number of adults (default: 2, max: 10)'}, 'numChildren': {'type': 'integer', 'default': 0, 'maximum': 10, 'minimum': 0, 'description': 'Number of children (default: 0, max: 10)'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['hotelId', 'hotelName', 'starRating', 'reviewRating', 'pricePerNightInDollars', 'chainName', 'amenityNames', 'address', 'bookingLink', 'checkinDate', 'checkoutDate', 'rooms'], 'properties': {'rooms': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'title', 'occupancyLimit', 'pricePerNightInDollars', 'totalPriceInDollars', 'currency', 'bookingLink'], 'properties': {'id': {'type': 'string', 'description': 'Room offer identifier; not a user identifier'}, 'title': {'type': 'string', 'description': 'Room name or title'}, 'bedTypes': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Bed configuration descriptions'}, 'currency': {'type': 'string', 'description': 'Price currency code (e.g., USD)'}, 'imageUrl': {'type': 'string', 'description': 'Representative room photo'}, 'amenities': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Room-level amenity highlights'}, 'refundable': {'type': 'boolean', 'description': 'Whether the room is refundable'}, 'bookingLink': {'type': 'string', 'format': 'uri', 'description': 'Direct booking URL for this room'}, 'description': {'type': 'string', 'description': 'Short room description'}, 'occupancyLimit': {'type': 'integer', 'minimum': 1, 'description': 'Maximum guests allowed'}, 'freeCancellation': {'type': 'boolean', 'description': 'Whether cancellation is free'}, 'totalPriceInDollars': {'type': 'number', 'description': 'Total stay price (room + taxes/fees) in US dollars'}, 'taxesAndFeesInDollars': {'type': 'number', 'description': 'Portion of total that is taxes/fees in US dollars'}, 'pricePerNightInDollars': {'type': 'number', 'description': 'Nightly price in US dollars for this room'}}, 'additionalProperties': False}, 'description': 'Room offers for this search'}, 'address': {'type': 'string', 'description': 'Hotel address'}, 'hotelId': {'type': 'string', 'description': 'Skiplagged property identifier; not a user identifier'}, 'cityName': {'type': 'string', 'description': 'City name'}, 'imageUrl': {'type': 'string', 'description': 'Hotel image URL'}, 'location': {'type': 'object', 'required': ['lat', 'lng'], 'properties': {'lat': {'type': 'number', 'description': 'Hotel latitude'}, 'lng': {'type': 'number', 'description': 'Hotel longitude'}}, 'description': 'Geographic coordinates', 'additionalProperties': False}, 'chainName': {'type': 'string', 'description': "Hotel chain name or 'Independent'"}, 'hotelName': {'type': 'string', 'description': 'Hotel name'}, 'stateName': {'type': 'string', 'description': 'State name'}, 'starRating': {'type': 'integer', 'maximum': 5, 'minimum': 0, 'description': 'Hotel star rating (0-5)'}, 'bookingLink': {'type': 'string', 'format': 'uri', 'description': 'Direct booking URL for this hotel'}, 'checkInTime': {'type': 'string', 'description': 'Check-in time window'}, 'checkinDate': {'type': 'string', 'description': 'Check-in date for this detail search (YYYY-MM-DD)'}, 'countryName': {'type': 'string', 'description': 'Country name'}, 'description': {'type': 'string', 'description': 'Hotel description'}, 'reviewCount': {'type': 'integer', 'description': 'Number of guest reviews'}, 'amenityNames': {'type': 'array', 'items': {'type': 'string'}, 'description': 'List of hotel amenities'}, 'checkOutTime': {'type': 'string', 'description': 'Check-out time window'}, 'checkoutDate': {'type': 'string', 'description': 'Check-out date for this detail search (YYYY-MM-DD)'}, 'reviewRating': {'type': 'number', 'maximum': 10, 'minimum': 0, 'description': 'Review rating (0-10)'}, 'totalPriceInDollars': {'type': 'number', 'description': 'Total price for entire stay in US dollars'}, 'pricePerNightInDollars': {'type': 'number', 'description': 'Price per night in US dollars'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['city', 'checkin', 'checkout'], 'properties': {'city': {'type': 'string', 'minLength': 1, 'description': 'City name to search for hotels (will be matched against available cities)'}, 'sort': {'enum': ['price', 'ranking', 'value', 'discount'], 'type': 'string', 'default': 'value', 'description': 'Sort hotels by price (cheapest first), ranking (highest rated first), value (best value rating), or discount (best deals first, default when deals available)'}, 'limit': {'type': 'integer', 'default': 12, 'maximum': 100, 'minimum': 1, 'description': 'Maximum number of hotels to return (default: 12, max: 100)'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 99, 'minimum': 0, 'description': 'Number of hotels to skip for pagination (default: 0)'}, 'checkin': {'type': 'string', 'description': 'Check-in date (YYYY-MM-DD format)'}, 'checkout': {'$ref': '#/properties/checkin', 'description': 'Check-out date (YYYY-MM-DD format)'}, 'numRooms': {'type': 'integer', 'default': 1, 'maximum': 9, 'minimum': 1, 'description': 'Number of rooms (default: 1, max: 9)'}, 'numAdults': {'type': 'integer', 'default': 2, 'maximum': 10, 'minimum': 1, 'description': 'Number of adults (default: 2, max: 10)'}, 'numChildren': {'type': 'integer', 'default': 0, 'maximum': 10, 'minimum': 0, 'description': 'Number of children (default: 0, max: 10)'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['searchUrl', 'results', 'pagination'], 'properties': {'results': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'id', 'name', 'rating', 'price', 'chain', 'location', 'amenities', 'deepLink'], 'properties': {'id': {'type': 'string', 'description': 'Hotel result card identifier; not a user identifier'}, 'name': {'type': 'string'}, 'type': {'type': 'string', 'const': 'HotelCard'}, 'chain': {'type': 'string'}, 'price': {'type': 'object', 'required': ['amount', 'currency', 'text'], 'properties': {'text': {'type': 'string'}, 'amount': {'type': 'number'}, 'currency': {'type': 'string'}}, 'additionalProperties': False}, 'rating': {'type': 'object', 'required': ['stars', 'text'], 'properties': {'text': {'type': 'string'}, 'stars': {'type': 'number'}}, 'additionalProperties': False}, 'deepLink': {'type': 'string', 'format': 'uri'}, 'imageUrl': {'type': 'string'}, 'location': {'type': 'string'}, 'amenities': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}}, 'searchUrl': {'type': 'string', 'format': 'uri', 'description': 'Complete search URL with all parameters'}, 'pagination': {'type': 'object', 'required': ['totalAvailable', 'currentlyShowing', 'offset', 'limit', 'hasMoreResults'], 'properties': {'limit': {'type': 'integer', 'description': 'Maximum results per page'}, 'offset': {'type': 'integer', 'description': 'Current result offset for pagination'}, 'hasMoreResults': {'type': 'boolean', 'description': 'Whether additional results are available'}, 'totalAvailable': {'type': 'integer', 'description': 'Total number of hotels available'}, 'currentlyShowing': {'type': 'integer', 'description': 'Number of hotels in this result set'}}, 'description': 'Result pagination information', 'additionalProperties': False}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['input'], 'properties': {'input': {'type': 'string', 'minLength': 1, 'description': 'City name code to resolve to IATA code'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['iataCode'], 'properties': {'iataCode': {'type': 'string', 'description': 'Resolved airport IATA code'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['iata', 'city', 'country'], 'properties': {'city': {'type': 'string', 'description': 'Resolved city name'}, 'iata': {'type': 'string', 'description': 'Nearest airport IATA code'}, 'country': {'type': 'string', 'description': 'Resolved country name'}}, 'additionalProperties': False}
Recent tool changes
Similar MCP servers
Award Travel Finder
Searches award flights and hotels, tracks bookings and loyalty balances, evaluates points and credit cards, and monitors travel r…
AI 代理人任務中樞
Aggregates Taiwan-focused tools for AI service comparisons, cryptocurrency data, game information, health guidance, and other con…
Good Turn Studio (all tools)
Offers consumer utilities for insurance claim appeals, subscription cancellation, flight fare research, financial recovery resour…
Gover MCP
Searches and manages corporate travel requests, flights, hotels, rental vehicles, passengers, carts, approvals, reservations, and…
DC Member API
Provides access to Dynamite Circle membership data, community profiles, chapters, events, trips, calendars, alerts, follows, agen…
Nomad Stays
Searches and books remote-work accommodations while supporting host listing management, rooms, packages, availability, and hospit…
lilo Vacation Rentals
Supports vacation-rental discovery, availability and direct booking, property operations, short-term-rental compliance, guest and…
mcp-server
Provides immigration, citizenship and residency programme research alongside tax, wealth structuring, banking, visa, treaty and c…