VistaLink Hotels

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

사용해야 할까요

품질 및 안전성

A
설명 품질
100%
스키마 완전성
90%
이름 품질
93%
오염 위험
100%
권한 일치
100%
프로토콜 준수
100%

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~1,872토큰 (도구 정의)
~4.7 KB일반적인 응답 크기
중간 정도의 주의 영향 (128k 컨텍스트의 1.46%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`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개