VistaLink Hotels

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

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
100%
Integridad del esquema
90%
Calidad de los nombres
93%
Riesgo de envenenamiento
100%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~1,872Tokens (definiciones de herramientas)
~4.7 KBTamaño de respuesta típico
Impacto moderado en la atención (1.46% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

{
  "mcpServers": {
    "hotels": {
      "url": "https://api.vistalink.com/mcp"
    }
  }
}

Puntos de conexión remotos

https://api.vistalink.com/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (3)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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).

Esquema de entrada

{
  "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"
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada3 herramientas