VistaLink Hotels
Search 650,000 hotels by place, vibe, photos and reviews. Search needs no key.
¿Debería usar esto?
Calidad y seguridad
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
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-httpQué puede hacer
Inventario de herramientas
Herramientas (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.
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
Evidencia