Appearance
Features
See how Vio's hotel search capabilities can enhance your AI product. The examples below show common scenarios in a conversational AI assistant.
Search and discovery
User: "Find me a pet-friendly hotel in Barcelona with a pool, under 150 per night"
Your AI assistant calls search_hotels with:
json
{
"queries": ["Barcelona"],
"filters": {
"facilities": ["pet friendly", "pool"],
"maxPrice": 150
},
"include": ["location", "rating", "media", "offer"]
}Result: Curated list of hotels matching all criteria, with images, ratings, and best available prices from multiple providers.
Location-aware search
User: "What hotels are near me?" / "Hotels near the Eiffel Tower" / "Hotels at 52.37, 4.90"
The MCP server supports multiple ways to search by location:
- Near me — Uses device GPS or IP geolocation when your app provides user location
- Coordinates — Search by latitude/longitude for precise location targeting
- Address or POI — Natural language addresses and points of interest (e.g., "Dam Square, Amsterdam", "Charles de Gaulle Airport") are geocoded automatically
Result: Hotels sorted by distance from the search location, with the same rich data (images, ratings, prices) as a standard search.
Similar hotels
User: "I like the Hilton Amsterdam but it's fully booked — anything similar nearby?"
Your AI calls search_hotels with the hotel name as a query:
json
{
"queries": ["Hilton Amsterdam"],
"include": ["location", "rating", "media", "offer"]
}When a query resolves to a specific hotel, the server automatically returns similar hotels nearby. The anchor hotel is marked in the results so your AI can distinguish it from the alternatives.
Result: The original hotel plus similar properties matched by style, rating, and location — ideal for finding alternatives when the user's first choice is unavailable or out of budget.
Deep hotel comparison
User: "Compare the top 3 hotels you found — what do reviewers say about each?"
Your AI calls get_hotels for the previously found hotels:
json
{
"hotelIds": ["hotel_1", "hotel_2", "hotel_3"],
"include": ["insight", "review", "facility", "room"]
}Result: AI-generated review summaries broken down by category (Location, Service, Cleanliness, Rooms, Food, Facilities), plus room details and amenity lists. Your AI can produce a rich comparison table.
Room configuration
User: "We need two rooms — one for us and one for the kids (ages 5 and 8)"
Your AI calls search_hotels with a multi-room setup:
json
{
"queries": ["Barcelona"],
"rooms": [
{"adults": 2},
{"adults": 2, "children": [5, 8]}
],
"include": ["room", "offer"]
}Result: Hotels with availability for the exact room configuration, with prices reflecting the actual group size. Children's ages are used to find properties with appropriate room types and to calculate accurate pricing — including child discounts where available.
Filtering and ordering
User: "Show me 4- or 5-star hotels with a gym, sorted by price, with free cancellation"
Your AI calls search_hotels with filters and sort options:
json
{
"queries": ["Amsterdam"],
"filters": {
"starRatings": [4, 5],
"facilities": ["gym"],
"freeCancellation": "included"
},
"sortBy": "price",
"sortOrder": "asc"
}Filter terms are resolved via semantic vector search — natural language values like "pet friendly" or "workout room" are matched automatically to the correct facilities. No exact IDs or codes needed.
Result: Hotels matching all filter criteria, sorted by the requested field. Available sort options include price, rating, distance, and popularity. Filters can be combined freely — star rating, guest rating, property type, price range, facilities, meal plans, and more. See Filters Reference for the full list.
Price intelligence
User: "Is this a good deal? Should I book now or wait?"
Your AI calls get_hotels with the analytic data block:
json
{
"hotelIds": ["hotel_abc"],
"include": ["offer", "analytic"]
}Result: Historical pricing data and comparison to similar hotels. Your AI can confidently answer "This hotel is cheaper than similar hotels in the area - it's a good deal."
Booking flow
User: "I want to book the second hotel"
Every hotel and offer includes direct booking URLs. When a user is ready to book:
- Your AI presents the offer with provider name and price breakdown
- User clicks the booking link
- They complete the booking on the provider's site (Booking.com, Expedia, etc.)
- The booking is attributed to your integration for commission tracking
Result: A seamless handoff from your AI to the booking provider, with full attribution for revenue sharing.
Offer aggregation
User: "Show me all available rates for this hotel — I want to compare providers"
Vio compares rates from multiple providers in real time. Three retrieval modes are available:
| Mode | Description | Use case |
|---|---|---|
cheapest | Single best rate per hotel | Quick price display |
top_offers | Limited set of competitive offers | Price comparison |
all | Every available offer | Full offer listing |
Result: Side-by-side comparison of offers from multiple providers. Each offer includes: price breakdown (base, taxes, hotel fees), cancellation policy, meal plan, provider name, room type, and a direct booking URL.
Progressive detail loading
User: "Tell me more about this hotel" / "What do reviews say?" / "What's the area like?"
Your AI starts with a quick overview, then loads details on demand:
- Initial search:
include: ["location", "rating", "media", "offer"]- fast, lightweight - User clicks a hotel:
include: ["room", "facility", "policy"]- detailed room options - User asks about reviews:
include: ["review", "insight"]- social proof - User wants to see the area:
include: ["location"]- nearby attractions and area description
Result: Fast initial responses with the ability to drill deeper on demand. This progressive pattern minimizes latency while keeping all data accessible.
Localization
User: "Suche mir ein Hotel in Berlin" / "Show prices in Brazilian reais"
Your AI passes locale and currency via the _meta field on each tool call:
json
{
"_meta": {
"vio/locale": "de-DE",
"vio/userLocation": {"country": "DE"}
},
"queries": ["Berlin"],
"currency": "BRL"
}Result: Hotel names, descriptions, reviews, and insights returned in the user's language. Prices displayed in the requested currency. Locale and currency can be set independently — a German-speaking user can see prices in any supported currency.
Image optimization
User: "Show me photos of this hotel"
Hotel images are served via CDN with dynamic resizing. Each image URL supports width and height parameters, so your app can request the exact dimensions it needs.
Result: Fast-loading, properly sized images for any device or layout. The CDN handles format conversion, compression, and caching automatically.
Pagination
User: "Show me more hotels"
Your AI calls search_hotels with the offset parameter to load the next page:
json
{
"queries": ["Barcelona"],
"offset": 10,
"include": ["location", "rating", "media", "offer"]
}Result: The next set of hotels beyond the initial results. Your AI can present results incrementally, keeping responses fast and conversational while giving users access to the full inventory.
Roadmap
| Feature | Description |
|---|---|
| Deal Freeze | Lock in a price for a limited time |
| Booking | Complete bookings directly through the MCP server |
| Booking Management | View, modify, and cancel existing bookings |
| Price Watch | Monitor prices and receive drop alerts |
New features follow the same protocol and authentication. Partners integrating today can adopt them with minimal effort.
Next steps
- Try the Quick Start to explore the API
- Review the API Reference for detailed tool documentation
- See Examples for working code implementations