VistaLink Hotels

Search 650,000 hotels by place, vibe, photos and reviews. Search needs no key.

我该使用它吗

质量与安全性

A
描述质量
100%
模式完整度
90%
命名质量
93%
投毒风险
100%
权限匹配度
100%
协议合规性
100%

基于对工具定义和协议合规性的自动分析。

上下文开销

~1,872token 数(工具定义)
~4.7 KB典型响应大小
对注意力有中等影响(占 128k 上下文窗口的 1.46%)

这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。

安装

一键安装

将以下内容添加到你的 `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"
}

社区

评价此服务器

证据

最近观测

已验证未记录版本3 个工具