MCPサーバー

VistaLink Hotels

com.vistalink/hotels
旅行・ホスピタリティ 公開・接続可能 MCP 2025-11-25

このMCPでできること

Searches and describes hotels using location, preferences, amenities, images, prices, and guest-review insights.

chat_about_hotels
Chat about hotels
Conversational hotel search for natural-language requests, comparisons and subjective preferences. Slower than search_hotels. Requires signing in (a linked Parley account) or an API key. Guest context (travel style, purpose, accessibility needs, loyalty programs, dietary needs) can be passed in the context parameter as a JSON object. Clarifications: if a previous response included a ``clarification_pending`` payload, show the question to the user and either pass ``clarification_id`` + ``clarification_option_id`` for the chosen option, or pass the user's free-text answer in ``message`` and leave the clarification params empty. Args: message: The user's message or question session_id: Session id from a previous response to continue the conversation (empty for a new session) currency: Currency code for prices (default EUR) context: JSON object with guest context (empty to skip). Example: {"travel_style": "luxury", "purpose": "honeymoon", "accessibility": "wheelchair", "loyalty_programs": ["Marriott Bonvoy"], "dietary": "vegetarian"} clarification_id: When replying to a prior clarification, the id from ``clarification_pending.clarification_id`` in that response. clarification_option_id: When replying to a prior clarification, the id of the option the user selected.
読み取り専用 外部アクセスあり
入力スキーマ
{'type': 'object', 'title': 'chat_about_hotelsArguments', 'required': ['message'], 'properties': {'context': {'type': 'string', 'title': 'Context', 'default': ''}, 'message': {'type': 'string', 'title': 'Message'}, 'currency': {'type': 'string', 'title': 'Currency', 'default': 'EUR'}, 'session_id': {'type': 'string', 'title': 'Session Id', 'default': ''}, 'clarification_id': {'type': 'string', 'title': 'Clarification Id', 'default': ''}, 'clarification_option_id': {'type': 'string', 'title': 'Clarification Option Id', 'default': ''}}}
get_hotel_details
Get hotel details
Full profile of one hotel by its hotel_id from search_hotels: description, amenities, images, rooms, guest reviews and guest insights. A price is included only when both check_in and check_out are given, as the all-inclusive total for that stay. Works without an API key (cached prices only).
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'title': 'get_hotel_detailsArguments', 'required': ['hotel_id'], 'properties': {'rooms': {'type': 'integer', 'title': 'Rooms', 'default': 0, 'minimum': 0, 'description': 'Number of rooms (0 = 1). Prices are only quoted for one room.'}, 'guests': {'type': 'integer', 'title': 'Guests', 'default': 0, 'minimum': 0, 'description': 'Number of adult guests (0 = default of 2).'}, 'check_in': {'type': 'string', 'title': 'Check In', 'default': '', 'pattern': '^(\\d{4}-\\d{2}-\\d{2})?$', 'examples': ['2026-11-01'], 'description': 'Check-in date, YYYY-MM-DD (today or later). Prices need check_in and check_out.'}, 'currency': {'type': 'string', 'title': 'Currency', 'default': 'EUR', 'pattern': '^[A-Za-z]{3}$', 'examples': ['EUR', 'USD'], 'description': "ISO 4217 currency code for prices, e.g. 'EUR', 'USD', 'GBP'."}, 'hotel_id': {'type': 'string', 'title': 'Hotel Id', 'format': 'uuid', 'examples': ['11111111-1111-4111-a111-111111111111'], 'description': "The hotel's id (a UUID), as returned in hotel_id by search_hotels."}, 'check_out': {'type': 'string', 'title': 'Check Out', 'default': '', 'pattern': '^(\\d{4}-\\d{2}-\\d{2})?$', 'examples': ['2026-11-03'], 'description': 'Check-out date, YYYY-MM-DD, after check_in.'}}}
search_hotels
Search hotels
Search the VistaLink hotel catalogue in one city (or around a point). Needs city, latitude+longitude, or hotel_name; describe the stay in vibe. Returns hotels with ratings, location, amenities, images and guest-review insights. A price appears only when both check_in and check_out are given (the all-inclusive total for that stay). Works without an API key (at most 20 results, cached prices only). For open-ended questions use chat_about_hotels.
読み取り専用 冪等
入力スキーマ
{'type': 'object', 'title': 'search_hotelsArguments', 'properties': {'city': {'type': 'string', 'title': 'City', 'default': '', 'examples': ['Lisbon', 'Paris'], 'description': "City to search in, e.g. 'Lisbon'. A search needs city, latitude+longitude, or hotel_name."}, 'vibe': {'type': 'string', 'title': 'Vibe', 'default': '', 'examples': ['boutique design hotel', 'romantic,quiet'], 'description': "What the traveller is looking for, as free text or comma-separated tags, e.g. 'boutique design hotel' or 'romantic,quiet'."}, 'limit': {'type': 'integer', 'title': 'Limit', 'default': 20, 'maximum': 50, 'minimum': 1, 'examples': [5], 'description': 'Maximum number of results, 1-20 without an API key (1-50 with one). Larger values are reduced to the maximum.'}, 'rooms': {'type': 'integer', 'title': 'Rooms', 'default': 0, 'minimum': 0, 'description': 'Number of rooms (0 = 1). Prices are only quoted for one room.'}, 'guests': {'type': 'integer', 'title': 'Guests', 'default': 0, 'minimum': 0, 'description': 'Number of adult guests (0 = default of 2).'}, 'country': {'type': 'string', 'title': 'Country', 'default': '', 'pattern': '^([A-Za-z]{2})?$', 'examples': ['PT', 'FR'], 'description': "ISO 3166-1 alpha-2 country code of the city, e.g. 'PT'. Use it for city names that exist in several countries (Paris FR vs Paris US)."}, 'check_in': {'type': 'string', 'title': 'Check In', 'default': '', 'pattern': '^(\\d{4}-\\d{2}-\\d{2})?$', 'examples': ['2026-11-01'], 'description': 'Check-in date, YYYY-MM-DD (today or later). Prices need check_in and check_out.'}, 'currency': {'type': 'string', 'title': 'Currency', 'default': 'EUR', 'pattern': '^[A-Za-z]{3}$', 'examples': ['EUR', 'USD'], 'description': "ISO 4217 currency code for prices, e.g. 'EUR', 'USD', 'GBP'."}, 'latitude': {'type': 'number', 'title': 'Latitude', 'default': 0.0, 'maximum': 90, 'minimum': -90, 'description': 'Search centre latitude in decimal degrees, used with longitude (0 = not set).'}, 'amenities': {'type': 'string', 'title': 'Amenities', 'default': '', 'examples': ['wifi,pool'], 'description': "Comma-separated amenities the hotel must have, e.g. 'wifi,pool'."}, 'check_out': {'type': 'string', 'title': 'Check Out', 'default': '', 'pattern': '^(\\d{4}-\\d{2}-\\d{2})?$', 'examples': ['2026-11-03'], 'description': 'Check-out date, YYYY-MM-DD, after check_in.'}, 'longitude': {'type': 'number', 'title': 'Longitude', 'default': 0.0, 'maximum': 180, 'minimum': -180, 'description': 'Search centre longitude in decimal degrees, used with latitude (0 = not set).'}, 'budget_max': {'type': 'number', 'title': 'Budget Max', 'default': 0.0, 'minimum': 0, 'description': 'Maximum price per night, in currency (0 = no maximum).'}, 'budget_min': {'type': 'number', 'title': 'Budget Min', 'default': 0.0, 'minimum': 0, 'description': 'Minimum price per night, in currency (0 = no minimum).'}, 'hotel_name': {'type': 'string', 'title': 'Hotel Name', 'default': '', 'examples': ['Four Seasons'], 'description': "Hotel name or part of it, e.g. 'Four Seasons'."}, 'include_rates': {'type': 'boolean', 'title': 'Include Rates', 'default': False, 'description': 'Fetch live rates for check_in/check_out (adds about 30-45s). Needs an API key and both dates; ignored otherwise.'}, 'radius_meters': {'type': 'integer', 'title': 'Radius Meters', 'default': 0, 'minimum': 0, 'description': 'Radius around latitude/longitude in metres (0 = default).'}}}
追加
get_hotel_details
2026年10月4日2:40
追加
chat_about_hotels
2026年10月4日2:40
追加
search_hotels
2026年10月4日2:40