此 MCP 可以做什么
Searches and compares live hotel and flight prices and supports hotel booking requests, status checks, cancellation policies, and cancellations.
工具
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['confirmationCode', 'cancelToken', 'reason'], 'properties': {'reason': {'type': 'string', 'minLength': 3, 'description': 'Guest-provided cancellation reason (at least 3 characters)'}, 'cancelToken': {'type': 'string', 'minLength': 1, 'description': 'Single-use cancellation token from the email request_cancel_token sent to the guest.'}, 'confirmationCode': {'type': 'string', 'minLength': 1, 'description': '8-char booking confirmation code, e.g. K7X9M2P4'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['status', 'refundAmount', 'refundStatus', 'gatewaySettlementEta'], 'properties': {'status': {'type': 'string'}, 'refundAmount': {'type': 'number'}, 'refundStatus': {'type': ['string', 'null']}, 'gatewaySettlementEta': {'type': ['string', 'null']}}, 'additionalProperties': True}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['confirmationCode'], 'properties': {'language': {'enum': ['en', 'vi'], 'type': 'string', 'default': 'en', 'description': 'Response language'}, 'confirmationCode': {'type': 'string', 'description': "confirmationCode from request_booking structuredContent (e.g. 'K7X9M2P4')"}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['bookingId', 'confirmationCode', 'status', 'paymentStatus', 'paymentMethod', 'paymentLinkUrl', 'paidAt', 'checkIn', 'checkOut', 'roomNumber', 'guestName', 'guestEmail', 'propertyName'], 'properties': {'paidAt': {'type': ['string', 'null']}, 'status': {'type': 'string'}, 'checkIn': {'type': 'string'}, 'checkOut': {'type': 'string'}, 'bookingId': {'type': 'string'}, 'guestName': {'type': 'string'}, 'guestEmail': {'type': 'string'}, 'roomNumber': {'type': ['string', 'null']}, 'propertyName': {'type': 'string'}, 'paymentMethod': {'type': ['string', 'null']}, 'paymentStatus': {'type': 'string'}, 'paymentLinkUrl': {'type': ['string', 'null']}, 'confirmationCode': {'type': ['string', 'null']}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['propertyId', 'ratePlanId', 'checkInDate'], 'properties': {'language': {'enum': ['en', 'vi'], 'type': 'string', 'description': 'Reply language. Falls back to queryText, then English.'}, 'queryText': {'type': 'string', 'maxLength': 500, 'description': "Short excerpt of the guest's request, used only to pick the reply language."}, 'propertyId': {'type': 'string', 'format': 'uuid', 'description': 'OpenTravel propertyId UUID from search results'}, 'ratePlanId': {'type': 'string', 'format': 'uuid', 'description': 'ratePlanId from get_hotel_detail roomTypes[].ratePlanId'}, 'checkInDate': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Check-in date YYYY-MM-DD â\x80\x94 required to compute the exact free-cancel deadline'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ratePlanId', 'nonRefundable', 'freeCancelUntilHours', 'refundPercentAfterWindow', 'policyText', 'computedDeadline'], 'properties': {'policyText': {'type': 'string'}, 'ratePlanId': {'type': 'string'}, 'nonRefundable': {'type': 'boolean'}, 'computedDeadline': {'type': ['string', 'null']}, 'freeCancelUntilHours': {'type': ['number', 'null']}, 'refundPercentAfterWindow': {'type': ['number', 'null']}}, 'additionalProperties': True}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['checkIn', 'checkOut'], 'properties': {'city': {'type': 'string', 'maxLength': 100, 'description': 'City of the hotel â\x80\x94 required when resolving by hotelName.'}, 'adults': {'type': 'integer', 'default': 2, 'maximum': 20, 'minimum': 1, 'description': 'Number of adults (default 2)'}, 'checkIn': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Check-in date YYYY-MM-DD. Must be today or later.'}, 'checkOut': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Check-out date YYYY-MM-DD. Must be after checkIn.'}, 'children': {'type': 'integer', 'default': 0, 'maximum': 20, 'minimum': 0, 'description': 'Number of children (default 0)'}, 'language': {'enum': ['en', 'vi', 'de', 'ja', 'ko', 'zh', 'fr', 'es', 'ru', 'th', 'id'], 'type': 'string', 'description': 'Preferred UI language (en/vi/de/ja/ko/zh/fr/es/ru/th/id).'}, 'hotelName': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Fallback name for a confirmed OpenTravel direct listing when propertyId is unavailable'}, 'queryText': {'type': 'string', 'maxLength': 500, 'description': 'Optional short excerpt of the current request, used only to detect the UI language; it is not stored or forwarded.'}, 'propertyId': {'type': 'string', 'maxLength': 200, 'description': 'OpenTravel propertyId UUID from search results (opentravelResults[].propertyId).'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['property', 'roomTypes', 'nights', 'checkIn', 'checkOut', 'adults', 'language'], 'properties': {'adults': {'type': 'number'}, 'nights': {'type': 'number'}, 'checkIn': {'type': 'string'}, 'checkOut': {'type': 'string'}, 'language': {'enum': ['en', 'vi', 'de', 'ja', 'ko', 'zh', 'fr', 'es', 'ru', 'th', 'id'], 'type': 'string'}, 'property': {'type': 'object', 'required': ['propertyId', 'title', 'address', 'city', 'country', 'checkInTime', 'checkOutTime', 'photos', 'facilities'], 'properties': {'id': {'type': 'string'}, 'city': {'type': 'string'}, 'title': {'type': 'string'}, 'photos': {'type': 'array', 'items': {'type': 'string'}}, 'address': {'type': 'string'}, 'country': {'type': 'string'}, 'facilities': {'type': 'array', 'items': {'type': 'string'}}, 'propertyId': {'type': 'string'}, 'checkInTime': {'type': 'string'}, 'description': {'type': ['string', 'null']}, 'checkOutTime': {'type': 'string'}}, 'additionalProperties': True}, 'discovery': {'type': 'boolean'}, 'roomTypes': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'title', 'adultsMax', 'childrenMax', 'photos', 'facilities', 'availableCount', 'totalPrice', 'currency', 'perNightRates'], 'properties': {'id': {'type': 'string'}, 'size': {'type': ['number', 'null']}, 'title': {'type': 'string'}, 'photos': {'type': 'array', 'items': {'type': 'string'}}, 'currency': {'type': 'string'}, 'adultsMax': {'type': 'number'}, 'facilities': {'type': 'array', 'items': {'type': 'string'}}, 'ratePlanId': {'type': ['string', 'null']}, 'totalPrice': {'type': 'number'}, 'childrenMax': {'type': 'number'}, 'description': {'type': ['string', 'null']}, 'perNightRates': {'type': 'array', 'items': {'type': 'object', 'required': ['date', 'amount'], 'properties': {'date': {'type': 'string'}, 'amount': {'type': 'number'}}, 'additionalProperties': True}}, 'availableCount': {'type': 'number'}}, 'additionalProperties': True}}, 'bookingUrl': {'type': 'string'}}, 'additionalProperties': True}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['propertyId'], 'properties': {'language': {'enum': ['en', 'vi', 'de', 'ja', 'ko', 'zh', 'fr', 'es', 'ru', 'th', 'id'], 'type': 'string', 'description': 'Preferred reply language (en/vi/de/ja/ko/zh).'}, 'queryText': {'type': 'string', 'maxLength': 500, 'description': 'Optional short excerpt of the current request, used only to detect the reply language; it is not stored or forwarded.'}, 'propertyId': {'type': 'string', 'format': 'uuid', 'description': 'OpenTravel propertyId UUID from search results (opentravelResults[].propertyId).'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['property', 'roomTypes'], 'properties': {'property': {'type': 'object', 'required': ['id', 'title', 'description', 'address', 'city', 'country', 'checkInTime', 'checkOutTime', 'photos', 'facilities'], 'properties': {'id': {'type': 'string'}, 'city': {'type': 'string'}, 'title': {'type': 'string'}, 'photos': {'type': 'array', 'items': {'type': 'string'}}, 'address': {'type': 'string'}, 'country': {'type': 'string'}, 'facilities': {'type': 'array', 'items': {'type': 'string'}}, 'checkInTime': {'type': 'string'}, 'description': {'type': ['string', 'null']}, 'checkOutTime': {'type': 'string'}}, 'additionalProperties': True}, 'roomTypes': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'title', 'description', 'size', 'adultsMax', 'childrenMax', 'photos', 'facilities'], 'properties': {'id': {'type': 'string'}, 'size': {'type': ['number', 'null']}, 'title': {'type': 'string'}, 'photos': {'type': 'array', 'items': {'type': 'string'}}, 'adultsMax': {'type': 'number'}, 'facilities': {'type': 'array', 'items': {'type': 'string'}}, 'childrenMax': {'type': 'number'}, 'description': {'type': ['string', 'null']}}, 'additionalProperties': True}}, 'cancellationPolicy': {'type': 'object', 'required': ['nonRefundable', 'freeCancelUntilHours', 'refundPercentAfterWindow', 'policyText'], 'properties': {'source': {'type': 'string'}, 'policyText': {'type': 'string'}, 'nonRefundable': {'type': 'boolean'}, 'freeCancelUntilHours': {'type': ['number', 'null']}, 'refundPercentAfterWindow': {'type': ['number', 'null']}}, 'additionalProperties': True}}, 'additionalProperties': True}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['checkIn', 'checkOut'], 'properties': {'city': {'type': 'string', 'description': "City of the hotel, used to resolve the name, e.g. 'Da Nang'. Required with hotelName."}, 'rooms': {'type': 'integer', 'default': 1, 'minimum': 1, 'description': 'Number of rooms (default 1)'}, 'adults': {'type': 'integer', 'default': 2, 'minimum': 1, 'description': 'Number of adults (default 2)'}, 'checkIn': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Check-in date YYYY-MM-DD. Must be today or later.'}, 'checkOut': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Check-out date YYYY-MM-DD. Must be after checkIn.'}, 'language': {'enum': ['en', 'vi', 'de', 'ja', 'ko', 'zh', 'fr', 'es', 'ru', 'th', 'id'], 'type': 'string', 'description': 'Optional UI language. Indonesian (id) cannot be detected from text, so for Indonesian this is how the language is set.'}, 'hotelName': {'type': 'string', 'description': "Name of the hotel, e.g. 'Mercure Danang French Village Bana Hills'. Required unless propertyUrl is given."}, 'queryText': {'type': 'string', 'maxLength': 500, 'description': "Short excerpt (one sentence at most) of the guest's latest message in their own words, used only to detect the reply language; it is not stored or forwarded. It carries no names, contact details or other parts of the conversation."}, 'propertyUrl': {'type': 'string', 'description': 'Booking.com property URL from an earlier result (hotel.prices.booking.url); skips the name lookup.'}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['sessionId'], 'properties': {'sessionId': {'type': 'string', 'format': 'uuid', 'description': 'Session ID from search_flights_live'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['sessionId', 'status', 'cached', 'origin', 'destination', 'departureDate', 'adults', 'cabin', 'tripType', 'outboundFlights', 'returnFlights', 'totalOutbound', 'totalReturn'], 'properties': {'cabin': {'type': 'string'}, 'adults': {'type': 'number'}, 'cached': {'type': 'boolean'}, 'origin': {'type': 'string'}, 'status': {'type': 'string'}, 'language': {'enum': ['en', 'vi', 'de', 'ja', 'ko', 'zh', 'fr', 'es', 'ru', 'th', 'id'], 'type': 'string'}, 'tripType': {'type': 'string'}, 'sessionId': {'type': 'string'}, 'returnDate': {'type': 'string'}, 'destination': {'type': 'string'}, 'totalReturn': {'type': 'number'}, 'departureDate': {'type': 'string'}, 'returnFlights': {'type': 'array', 'items': {'$ref': '#/properties/outboundFlights/items'}}, 'totalOutbound': {'type': 'number'}, 'outboundFlights': {'type': 'array', 'items': {'type': 'object', 'required': ['airline', 'airlineCode', 'flightNumber', 'departure', 'arrival', 'duration', 'stops', 'stopCities', 'price', 'currency', 'cabin', 'bookingUrl'], 'properties': {'legs': {'type': 'array', 'items': {'type': 'object', 'required': ['departureAirport', 'arrivalAirport', 'departureTime', 'arrivalTime', 'departureDate', 'arrivalDate', 'airline', 'flightNumber', 'duration'], 'properties': {'airline': {'type': 'string'}, 'duration': {'type': 'number'}, 'arrivalDate': {'type': 'string'}, 'arrivalTime': {'type': 'string'}, 'flightNumber': {'type': 'string'}, 'departureDate': {'type': 'string'}, 'departureTime': {'type': 'string'}, 'arrivalAirport': {'type': 'string'}, 'departureAirport': {'type': 'string'}}, 'additionalProperties': True}}, 'cabin': {'type': 'string'}, 'price': {'type': 'number'}, 'stops': {'type': 'number'}, 'airline': {'type': 'string'}, 'arrival': {'type': 'object', 'required': ['airport', 'city', 'time', 'date'], 'properties': {'city': {'type': 'string'}, 'date': {'type': 'string'}, 'time': {'type': 'string'}, 'airport': {'type': 'string'}}, 'additionalProperties': True}, 'currency': {'type': 'string'}, 'duration': {'type': 'number'}, 'departure': {'type': 'object', 'required': ['airport', 'city', 'time', 'date'], 'properties': {'city': {'type': 'string'}, 'date': {'type': 'string'}, 'time': {'type': 'string'}, 'airport': {'type': 'string'}}, 'additionalProperties': True}, 'bookingUrl': {'type': 'string'}, 'stopCities': {'type': 'array', 'items': {'type': 'string'}}, 'airlineCode': {'type': 'string'}, 'flightNumber': {'type': 'string'}}, 'additionalProperties': True}}}, 'additionalProperties': True}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['sessionId', 'nights'], 'properties': {'area': {'type': 'string', 'maxLength': 120, 'description': 'Optional override for the area filter captured at search time'}, 'limit': {'type': 'integer', 'default': 50, 'maximum': 100, 'minimum': 0, 'description': 'Max hotels to return; 0 = all (default 50)'}, 'nights': {'type': 'integer', 'maximum': 365, 'minimum': 1, 'description': 'Number of nights'}, 'offset': {'type': 'integer', 'default': 0, 'minimum': 0, 'description': 'Skip first N hotels for pagination (default 0)'}, 'priceMax': {'type': 'number', 'maximum': 1000000000, 'minimum': 0, 'description': 'Optional override for the maximum-price filter'}, 'priceMin': {'type': 'number', 'maximum': 1000000000, 'minimum': 0, 'description': 'Optional override for the minimum-price filter'}, 'hotelName': {'type': 'string', 'maxLength': 200, 'description': 'Optional override for the hotel-name filter captured at search time'}, 'sessionId': {'type': 'string', 'maxLength': 128, 'minLength': 1, 'description': 'Session ID from search_hotels_live'}, 'priceCurrency': {'type': 'string', 'pattern': '^[A-Za-z]{3}$', 'description': "ISO 4217 code of priceMin/priceMax; defaults to the UI language's currency"}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['city', 'checkIn', 'checkOut', 'nights', 'status', 'progress', 'bookingStatus', 'agodaStatus', 'travelokaStatus', 'totalHotels', 'hotels', 'offset', 'limit', 'hasMore', 'tier', 'tier2AgodaStatus', 'tier2BookingStatus', 'tier2TravelokaStatus', 'opentravelStatus', 'opentravelResults', 'opentravelIndicativeResults', 'fxRates'], 'properties': {'city': {'type': 'string'}, 'tier': {'type': 'string'}, 'limit': {'type': 'number'}, 'cached': {'type': 'boolean'}, 'hotels': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'stars', 'rating', 'reviewCount', 'imageUrl', 'location', 'prices'], 'properties': {'name': {'type': 'string'}, 'stars': {'type': 'number'}, 'prices': {'type': 'object', 'properties': {'agoda': {'type': 'object', 'required': ['price', 'currency', 'url'], 'properties': {'url': {'type': 'string'}, 'price': {'type': 'number'}, 'currency': {'type': 'string'}}, 'additionalProperties': True}, 'booking': {'$ref': '#/properties/hotels/items/properties/prices/properties/agoda'}, 'traveloka': {'$ref': '#/properties/hotels/items/properties/prices/properties/agoda'}}, 'additionalProperties': True}, 'rating': {'type': 'number'}, 'imageUrl': {'type': 'string'}, 'location': {'type': 'string'}, 'reviewCount': {'type': 'number'}}, 'additionalProperties': True}}, 'nights': {'type': 'number'}, 'offset': {'type': 'number'}, 'status': {'type': 'string'}, 'checkIn': {'type': 'string'}, 'fxRates': {'type': 'object', 'additionalProperties': {'type': 'number'}}, 'hasMore': {'type': 'boolean'}, 'checkOut': {'type': 'string'}, 'language': {'enum': ['en', 'vi', 'de', 'ja', 'ko', 'zh', 'fr', 'es', 'ru', 'th', 'id'], 'type': 'string'}, 'progress': {'type': 'number'}, 'sessionId': {'type': 'string'}, 'agodaStatus': {'type': 'string'}, 'totalHotels': {'type': 'number'}, 'bookingStatus': {'type': 'string'}, 'longStayNotice': {'type': ['string', 'null']}, 'travelokaStatus': {'type': 'string'}, 'opentravelStatus': {'type': 'string'}, 'tier2AgodaStatus': {'type': ['string', 'null']}, 'opentravelResults': {'type': 'array', 'items': {'type': 'object', 'required': ['propertyId', 'name', 'address', 'city', 'mainImageUrl', 'cheapestPrice', 'totalForStay', 'currency', 'nights', 'source', 'priceType'], 'properties': {'city': {'type': ['string', 'null']}, 'name': {'type': 'string'}, 'nights': {'type': 'number'}, 'source': {'type': 'string', 'const': 'OPENTRAVEL_DIRECT'}, 'address': {'type': ['string', 'null']}, 'country': {'type': ['string', 'null']}, 'currency': {'type': 'string'}, 'priceType': {'enum': ['available', 'indicative'], 'type': 'string'}, 'propertyId': {'type': 'string'}, 'countryCode': {'type': ['string', 'null']}, 'mainImageUrl': {'type': ['string', 'null']}, 'totalForStay': {'type': 'number'}, 'cheapestPrice': {'type': 'number'}, 'indicativeNote': {'type': 'string'}, 'availableRoomTypes': {'type': 'number'}}, 'additionalProperties': True}}, 'tier2BookingStatus': {'type': ['string', 'null']}, 'tier2TravelokaStatus': {'type': ['string', 'null']}, 'opentravelIndicativeResults': {'type': 'array', 'items': {'$ref': '#/properties/opentravelResults/items'}}}, 'additionalProperties': True}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['propertyId', 'checkIn', 'checkOut', 'roomTypeId', 'adults', 'totalAmount', 'currency'], 'properties': {'adults': {'type': 'integer', 'minimum': 1, 'description': 'Number of adults'}, 'checkIn': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Check-in date YYYY-MM-DD. Must be today or later.'}, 'checkOut': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Check-out date YYYY-MM-DD. Must be after checkIn.'}, 'children': {'type': 'integer', 'default': 0, 'minimum': 0, 'description': 'Number of children (default 0)'}, 'currency': {'enum': ['VND', 'USD', 'EUR'], 'type': 'string', 'description': 'Currency of totalAmount, as quoted by get_hotel_detail for the chosen room.'}, 'language': {'enum': ['en', 'vi', 'de', 'ja', 'ko', 'zh', 'fr', 'es', 'ru', 'th', 'id'], 'type': 'string', 'description': 'Optional response language hint. Only used when queryText gives no signal.'}, 'guestName': {'type': 'string', 'minLength': 1, 'description': 'Full name of the primary guest. When omitted, the result asks the user for it.'}, 'queryText': {'type': 'string', 'maxLength': 500, 'description': "Short excerpt (one sentence at most) of the guest's latest message in their own words, used only to detect the reply language; it is not stored or forwarded. It carries no names, contact details or other parts of the conversation."}, 'guestEmail': {'type': 'string', 'format': 'email', 'description': 'Email address the confirmation is sent to, as the guest gave it; it cannot be changed after the request is sent. When omitted, the result asks the user for it.'}, 'guestPhone': {'type': 'string', 'minLength': 1, 'description': 'Guest phone number; the hotel calls it to confirm the request. When omitted, the result asks the user for it.'}, 'propertyId': {'type': 'string', 'description': 'OpenTravel propertyId from get_hotel_detail'}, 'roomTypeId': {'type': 'string', 'description': 'roomTypeId from get_hotel_detail roomTypes array'}, 'totalAmount': {'type': 'number', 'description': "Total amount in the property's base currency"}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['bookingId', 'confirmationCode', 'status', 'paymentRequired', 'nextStep', 'assignedRoomId', 'quotedAmount', 'quotedCurrency'], 'properties': {'status': {'type': 'string'}, 'nextStep': {'type': 'string'}, 'bookingId': {'type': 'string'}, 'quotedAmount': {'type': 'number'}, 'assignedRoomId': {'type': ['string', 'null']}, 'quotedCurrency': {'type': 'string'}, 'paymentRequired': {'type': 'boolean'}, 'confirmationCode': {'type': 'string'}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['confirmationCode', 'guestEmail'], 'properties': {'guestEmail': {'type': 'string', 'format': 'email', 'description': 'Guest email address â\x80\x94 must match the booking primary guest email'}, 'confirmationCode': {'type': 'string', 'minLength': 1, 'description': '8-char booking confirmation code, e.g. K7X9M2P4'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['success', 'message'], 'properties': {'message': {'type': 'string'}, 'success': {'type': 'boolean'}}, 'additionalProperties': True}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'cabin': {'enum': ['economy', 'premium_economy', 'business', 'first'], 'type': 'string', 'default': 'economy', 'description': 'Cabin class (default economy)'}, 'adults': {'type': 'integer', 'default': 1, 'maximum': 20, 'minimum': 1, 'description': 'Number of adults (default 1)'}, 'origin': {'type': 'string', 'pattern': '^[A-Za-z]{3}$', 'description': "Departure airport IATA code, e.g. 'SGN'. When omitted, the result asks the user for it."}, 'language': {'enum': ['en', 'vi', 'de', 'ja', 'ko', 'zh', 'fr', 'es', 'ru', 'th', 'id'], 'type': 'string', 'description': 'Preferred UI language (en/vi/de/ja/ko/zh/fr/es/ru/th/id).'}, 'queryText': {'type': 'string', 'maxLength': 500, 'description': 'Optional short excerpt of the current request, used only to detect the UI language; it is not stored or forwarded.'}, 'returnDate': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Return date YYYY-MM-DD (omit for one-way). Must be on or after departureDate.'}, 'destination': {'type': 'string', 'pattern': '^[A-Za-z]{3}$', 'description': "Arrival airport IATA code, e.g. 'HAN'. When omitted, the result asks the user for it."}, 'departureDate': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Departure date YYYY-MM-DD, today or later. When omitted, the result asks the user for it.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['sessionId', 'status', 'cached', 'origin', 'destination', 'departureDate', 'adults', 'cabin', 'tripType', 'outboundFlights', 'returnFlights', 'totalOutbound', 'totalReturn'], 'properties': {'cabin': {'type': 'string'}, 'adults': {'type': 'number'}, 'cached': {'type': 'boolean'}, 'origin': {'type': 'string'}, 'status': {'type': 'string'}, 'language': {'enum': ['en', 'vi', 'de', 'ja', 'ko', 'zh', 'fr', 'es', 'ru', 'th', 'id'], 'type': 'string'}, 'tripType': {'type': 'string'}, 'sessionId': {'type': 'string'}, 'returnDate': {'type': 'string'}, 'destination': {'type': 'string'}, 'totalReturn': {'type': 'number'}, 'departureDate': {'type': 'string'}, 'returnFlights': {'type': 'array', 'items': {'$ref': '#/properties/outboundFlights/items'}}, 'totalOutbound': {'type': 'number'}, 'outboundFlights': {'type': 'array', 'items': {'type': 'object', 'required': ['airline', 'airlineCode', 'flightNumber', 'departure', 'arrival', 'duration', 'stops', 'stopCities', 'price', 'currency', 'cabin', 'bookingUrl'], 'properties': {'legs': {'type': 'array', 'items': {'type': 'object', 'required': ['departureAirport', 'arrivalAirport', 'departureTime', 'arrivalTime', 'departureDate', 'arrivalDate', 'airline', 'flightNumber', 'duration'], 'properties': {'airline': {'type': 'string'}, 'duration': {'type': 'number'}, 'arrivalDate': {'type': 'string'}, 'arrivalTime': {'type': 'string'}, 'flightNumber': {'type': 'string'}, 'departureDate': {'type': 'string'}, 'departureTime': {'type': 'string'}, 'arrivalAirport': {'type': 'string'}, 'departureAirport': {'type': 'string'}}, 'additionalProperties': True}}, 'cabin': {'type': 'string'}, 'price': {'type': 'number'}, 'stops': {'type': 'number'}, 'airline': {'type': 'string'}, 'arrival': {'type': 'object', 'required': ['airport', 'city', 'time', 'date'], 'properties': {'city': {'type': 'string'}, 'date': {'type': 'string'}, 'time': {'type': 'string'}, 'airport': {'type': 'string'}}, 'additionalProperties': True}, 'currency': {'type': 'string'}, 'duration': {'type': 'number'}, 'departure': {'type': 'object', 'required': ['airport', 'city', 'time', 'date'], 'properties': {'city': {'type': 'string'}, 'date': {'type': 'string'}, 'time': {'type': 'string'}, 'airport': {'type': 'string'}}, 'additionalProperties': True}, 'bookingUrl': {'type': 'string'}, 'stopCities': {'type': 'array', 'items': {'type': 'string'}}, 'airlineCode': {'type': 'string'}, 'flightNumber': {'type': 'string'}}, 'additionalProperties': True}}}, 'additionalProperties': True}
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'area': {'type': 'string', 'maxLength': 120, 'description': 'Optional district, ward, or neighborhood filter within the city'}, 'city': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': "City or broad destination, e.g. 'Da Nang'. When omitted, the result asks the user for it."}, 'rooms': {'type': 'integer', 'default': 1, 'maximum': 20, 'minimum': 1, 'description': 'Number of rooms (default 1).'}, 'adults': {'type': 'integer', 'default': 2, 'maximum': 20, 'minimum': 1, 'description': 'Number of adults (default 2). Prices depend on it.'}, 'checkIn': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Check-in date (YYYY-MM-DD), today or later. When omitted, the result asks the user for it.'}, 'checkOut': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Check-out date (YYYY-MM-DD), after checkIn. When omitted, the result asks the user for it.'}, 'children': {'type': 'integer', 'default': 0, 'maximum': 20, 'minimum': 0, 'description': 'Number of children sharing the room (default 0). OTA prices cannot include children; the result says so when children are given.'}, 'language': {'enum': ['en', 'vi', 'de', 'ja', 'ko', 'zh', 'fr', 'es', 'ru', 'th', 'id'], 'type': 'string', 'description': 'Preferred UI language (en/vi/de/ja/ko/zh/fr/es/ru/th/id).'}, 'priceMax': {'type': 'number', 'maximum': 1000000000, 'minimum': 0, 'description': 'Maximum total price for the whole stay (not per night), in priceCurrency.'}, 'priceMin': {'type': 'number', 'maximum': 1000000000, 'minimum': 0, 'description': 'Minimum total price for the whole stay (not per night), in priceCurrency.'}, 'hotelName': {'type': 'string', 'maxLength': 200, 'description': 'Optional hotel-name filter when the user names a specific property'}, 'queryText': {'type': 'string', 'maxLength': 500, 'description': 'Optional short excerpt of the current request, used only to detect the UI language; it is not stored or forwarded.'}, 'priceCurrency': {'type': 'string', 'pattern': '^[A-Za-z]{3}$', 'description': 'ISO 4217 code of priceMin/priceMax (USD, EUR, VND, â\x80¦); defaults to the currency of the UI language.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['city', 'checkIn', 'checkOut', 'nights', 'status', 'progress', 'bookingStatus', 'agodaStatus', 'travelokaStatus', 'totalHotels', 'hotels', 'offset', 'limit', 'hasMore', 'tier', 'tier2AgodaStatus', 'tier2BookingStatus', 'tier2TravelokaStatus', 'opentravelStatus', 'opentravelResults', 'opentravelIndicativeResults', 'fxRates'], 'properties': {'city': {'type': 'string'}, 'tier': {'type': 'string'}, 'limit': {'type': 'number'}, 'cached': {'type': 'boolean'}, 'hotels': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'stars', 'rating', 'reviewCount', 'imageUrl', 'location', 'prices'], 'properties': {'name': {'type': 'string'}, 'stars': {'type': 'number'}, 'prices': {'type': 'object', 'properties': {'agoda': {'type': 'object', 'required': ['price', 'currency', 'url'], 'properties': {'url': {'type': 'string'}, 'price': {'type': 'number'}, 'currency': {'type': 'string'}}, 'additionalProperties': True}, 'booking': {'$ref': '#/properties/hotels/items/properties/prices/properties/agoda'}, 'traveloka': {'$ref': '#/properties/hotels/items/properties/prices/properties/agoda'}}, 'additionalProperties': True}, 'rating': {'type': 'number'}, 'imageUrl': {'type': 'string'}, 'location': {'type': 'string'}, 'reviewCount': {'type': 'number'}}, 'additionalProperties': True}}, 'nights': {'type': 'number'}, 'offset': {'type': 'number'}, 'status': {'type': 'string'}, 'checkIn': {'type': 'string'}, 'fxRates': {'type': 'object', 'additionalProperties': {'type': 'number'}}, 'hasMore': {'type': 'boolean'}, 'checkOut': {'type': 'string'}, 'language': {'enum': ['en', 'vi', 'de', 'ja', 'ko', 'zh', 'fr', 'es', 'ru', 'th', 'id'], 'type': 'string'}, 'progress': {'type': 'number'}, 'sessionId': {'type': 'string'}, 'agodaStatus': {'type': 'string'}, 'totalHotels': {'type': 'number'}, 'bookingStatus': {'type': 'string'}, 'longStayNotice': {'type': ['string', 'null']}, 'travelokaStatus': {'type': 'string'}, 'opentravelStatus': {'type': 'string'}, 'tier2AgodaStatus': {'type': ['string', 'null']}, 'opentravelResults': {'type': 'array', 'items': {'type': 'object', 'required': ['propertyId', 'name', 'address', 'city', 'mainImageUrl', 'cheapestPrice', 'totalForStay', 'currency', 'nights', 'source', 'priceType'], 'properties': {'city': {'type': ['string', 'null']}, 'name': {'type': 'string'}, 'nights': {'type': 'number'}, 'source': {'type': 'string', 'const': 'OPENTRAVEL_DIRECT'}, 'address': {'type': ['string', 'null']}, 'country': {'type': ['string', 'null']}, 'currency': {'type': 'string'}, 'priceType': {'enum': ['available', 'indicative'], 'type': 'string'}, 'propertyId': {'type': 'string'}, 'countryCode': {'type': ['string', 'null']}, 'mainImageUrl': {'type': ['string', 'null']}, 'totalForStay': {'type': 'number'}, 'cheapestPrice': {'type': 'number'}, 'indicativeNote': {'type': 'string'}, 'availableRoomTypes': {'type': 'number'}}, 'additionalProperties': True}}, 'tier2BookingStatus': {'type': ['string', 'null']}, 'tier2TravelokaStatus': {'type': ['string', 'null']}, 'opentravelIndicativeResults': {'type': 'array', 'items': {'$ref': '#/properties/opentravelResults/items'}}}, 'additionalProperties': True}
近期工具变更
类似的 MCP 服务器
Award Travel Finder
Searches award flights and hotels, tracks bookings and loyalty balances, evaluates points and credit cards, and monitors travel r…
Good Turn Studio (all tools)
Offers consumer utilities for insurance claim appeals, subscription cancellation, flight fare research, financial recovery resour…
AI 代理人任務中樞
Aggregates Taiwan-focused tools for AI service comparisons, cryptocurrency data, game information, health guidance, and other con…
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…