VistaLink Hotels
Search 650,000 hotels by place, vibe, photos and reviews. Search needs no key.
使うべきか
品質と安全性
ツール定義とプロトコルへの準拠に関する自動分析に基づいています。
コンテキストコスト
これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。
インストール
ワンクリックインストール
これを `claude_desktop_config.json` ファイルに追加してください:
{
"mcpServers": {
"hotels": {
"url": "https://api.vistalink.com/mcp"
}
}
}リモートエンドポイント
https://api.vistalink.com/mcpstreamable-httpできること
ツール一覧
ツール(3)
🟢search_hotels(city, country, latitude, longitude, radius_meters, ...)
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",
"properties": {
"city": {
"default": "",
"description": "City to search in, e.g. 'Lisbon'. A search needs city, latitude+longitude, or hotel_name.",
"examples": [
"Lisbon",
"Paris"
],
"title": "City",
"type": "string"
},
"country": {
"default": "",
"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).",
"examples": [
"PT",
"FR"
],
"pattern": "^([A-Za-z]{2})?$",
"title": "Country",
"type": "string"
},
"latitude": {
"default": 0,
"description": "Search centre latitude in decimal degrees, used with longitude (0 = not set).",
"maximum": 90,
"minimum": -90,
"title": "Latitude",
"type": "number"
},
"longitude": {
"default": 0,
"description": "Search centre longitude in decimal degrees, used with latitude (0 = not set).",
"maximum": 180,
"minimum": -180,
"title": "Longitude",
"type": "number"
},
"radius_meters": {
"default": 0,
"description": "Radius around latitude/longitude in metres (0 = default).",
"minimum": 0,
"title": "Radius Meters",
"type": "integer"
},
"check_in": {
"default": "",
"description": "Check-in date, YYYY-MM-DD (today or later). Prices need check_in and check_out.",
"examples": [
"2026-11-01"
],
"pattern": "^(\\d{4}-\\d{2}-\\d{2})?$",
"title": "Check In",
"type": "string"
},
"check_out": {
"default": "",
"description": "Check-out date, YYYY-MM-DD, after check_in.",
"examples": [
"2026-11-03"
],
"pattern": "^(\\d{4}-\\d{2}-\\d{2})?$",
"title": "Check Out",
"type": "string"
},
"guests": {
"default": 0,
"description": "Number of adult guests (0 = default of 2).",
"minimum": 0,
"title": "Guests",
"type": "integer"
},
"rooms": {
"default": 0,
"description": "Number of rooms (0 = 1). Prices are only quoted for one room.",
"minimum": 0,
"title": "Rooms",
"type": "integer"
},
"budget_min": {
"default": 0,
"description": "Minimum price per night, in currency (0 = no minimum).",
"minimum": 0,
"title": "Budget Min",
"type": "number"
},
"budget_max": {
"default": 0,
"description": "Maximum price per night, in currency (0 = no maximum).",
"minimum": 0,
"title": "Budget Max",
"type": "number"
},
"currency": {
"default": "EUR",
"description": "ISO 4217 currency code for prices, e.g. 'EUR', 'USD', 'GBP'.",
"examples": [
"EUR",
"USD"
],
"pattern": "^[A-Za-z]{3}$",
"title": "Currency",
"type": "string"
},
"amenities": {
"default": "",
"description": "Comma-separated amenities the hotel must have, e.g. 'wifi,pool'.",
"examples": [
"wifi,pool"
],
"title": "Amenities",
"type": "string"
},
"vibe": {
"default": "",
"description": "What the traveller is looking for, as free text or comma-separated tags, e.g. 'boutique design hotel' or 'romantic,quiet'.",
"examples": [
"boutique design hotel",
"romantic,quiet"
],
"title": "Vibe",
"type": "string"
},
"hotel_name": {
"default": "",
"description": "Hotel name or part of it, e.g. 'Four Seasons'.",
"examples": [
"Four Seasons"
],
"title": "Hotel Name",
"type": "string"
},
"limit": {
"default": 20,
"description": "Maximum number of results, 1-20 without an API key (1-50 with one). Larger values are reduced to the maximum.",
"examples": [
5
],
"maximum": 50,
"minimum": 1,
"title": "Limit",
"type": "integer"
},
"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.",
"title": "Include Rates",
"type": "boolean"
}
},
"title": "search_hotelsArguments"
}🟢chat_about_hotels(message, session_id, currency, context, clarification_id, ...)
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",
"properties": {
"message": {
"title": "Message",
"type": "string"
},
"session_id": {
"default": "",
"title": "Session Id",
"type": "string"
},
"currency": {
"default": "EUR",
"title": "Currency",
"type": "string"
},
"context": {
"default": "",
"title": "Context",
"type": "string"
},
"clarification_id": {
"default": "",
"title": "Clarification Id",
"type": "string"
},
"clarification_option_id": {
"default": "",
"title": "Clarification Option Id",
"type": "string"
}
},
"required": [
"message"
],
"title": "chat_about_hotelsArguments"
}🟢get_hotel_details(hotel_id, currency, check_in, check_out, guests, ...)
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",
"properties": {
"hotel_id": {
"description": "The hotel's id (a UUID), as returned in hotel_id by search_hotels.",
"examples": [
"11111111-1111-4111-a111-111111111111"
],
"format": "uuid",
"title": "Hotel Id",
"type": "string"
},
"currency": {
"default": "EUR",
"description": "ISO 4217 currency code for prices, e.g. 'EUR', 'USD', 'GBP'.",
"examples": [
"EUR",
"USD"
],
"pattern": "^[A-Za-z]{3}$",
"title": "Currency",
"type": "string"
},
"check_in": {
"default": "",
"description": "Check-in date, YYYY-MM-DD (today or later). Prices need check_in and check_out.",
"examples": [
"2026-11-01"
],
"pattern": "^(\\d{4}-\\d{2}-\\d{2})?$",
"title": "Check In",
"type": "string"
},
"check_out": {
"default": "",
"description": "Check-out date, YYYY-MM-DD, after check_in.",
"examples": [
"2026-11-03"
],
"pattern": "^(\\d{4}-\\d{2}-\\d{2})?$",
"title": "Check Out",
"type": "string"
},
"guests": {
"default": 0,
"description": "Number of adult guests (0 = default of 2).",
"minimum": 0,
"title": "Guests",
"type": "integer"
},
"rooms": {
"default": 0,
"description": "Number of rooms (0 = 1). Prices are only quoted for one room.",
"minimum": 0,
"title": "Rooms",
"type": "integer"
}
},
"required": [
"hotel_id"
],
"title": "get_hotel_detailsArguments"
}コミュニティ
エビデンス