Appearance
Tools Overview
The Vio MCP server exposes two tools via the Model Context Protocol. Each tool is discoverable via tools/list and callable via tools/call.
Tool summary
| Tool | Purpose | Requires search? |
|---|---|---|
search_hotels | Discover hotels and fetch data | Yes - searches by location, coordinates, etc. |
get_hotels | Fetch data for known hotel IDs | No - direct fetch by ID |
Coming soon
| Tool | Purpose |
|---|---|
deal_freeze | Lock in a price for a limited time |
booking | Complete hotel bookings directly |
booking_management | View, modify, and cancel bookings |
price_watch | Monitor prices and get drop alerts |
Search methods
All search tools support multiple ways to find hotels:
| Method | Description | Example |
|---|---|---|
queries | Location or hotel name (1-3) | ["Amsterdam"], ["Hilton London"] |
latitude + longitude | Coordinate-based search | 52.3676, 4.9041 |
nearMe | User's current location | Requires device GPS or geo headers |
address | Geocoded address search | "Dam Square, Amsterdam" |
hotelIds | Fetch specific hotels (via get_hotels) | ["hotel_abc", "hotel_xyz"] |
Data blocks
Control which data is returned via the include array. Fetch only what you need to reduce response size and latency.
| Block | Description |
|---|---|
location | Address, coordinates, area info, nearby attractions |
rating | Guest rating (0-10), review count, breakdown by category |
classification | Star rating, property type, themes |
facility | Facilities list (pool, gym, WiFi, etc.) |
media | Hotel images (optimized via CDN) |
offer | Room offers with pricing from multiple providers |
room | Room types with amenities, bed types, images |
review | Guest reviews with ratings and text |
faq | Frequently asked questions |
insight | AI-generated review summaries by category |
policy | Check-in/out, fees, cancellation, deposits |
analytic | Price analytics, historical data, comparison vs similar hotels |
Default: ['location', 'rating', 'classification', 'media', 'offer']
Filters
| Filter | Logic | Example |
|---|---|---|
facilities | AND (must have all) | ["pool", "gym", "pet friendly"] |
propertyTypes | OR (any match) | ["hotel", "apartment"] |
themes | OR (any match) | ["beach", "romantic"] |
starRatings | OR | [4, 5] |
guestRating | OR | [8, 9, 10] |
minPrice / maxPrice | Range | Per-night rate |
freeCancellation | Three-state | any, included, excluded |
mealIncluded | Three-state | any, included, excluded |
payLater | Three-state | any, included, excluded |
Filter terms are resolved via semantic vector search — natural language values like "pet friendly" or "workout room" are matched automatically.
Common parameters
These parameters are shared across tools:
Room configuration
json
{
"rooms": [
{"adults": 2},
{"adults": 2, "children": [5, 8]}
]
}Each room specifies the number of adults (1+) and optionally children ages. Default: [{"adults": 2}].
Date parameters
| Parameter | Format | Description |
|---|---|---|
checkIn | YYYY-MM-DD | Check-in date |
checkOut | YYYY-MM-DD | Check-out date (alternative to nights) |
nights | Integer | Stay duration (default: 3) |
dayDistance | Integer | Days from today for check-in |
If no dates are provided, defaults to check-in 15 days from today for 3 nights.
Currency and pricing
| Parameter | Description |
|---|---|
currency | ISO 4217 currency code (e.g., EUR, USD). Auto-detected from locale if not specified. |
priceMode | total (entire stay, default) or nightly (per night) |
Response structure
All tools return responses in this format:
json
{
"content": [
{
"type": "text",
"text": "{...}" // JSON string with tool output
}
],
"isError": false
}On error:
json
{
"content": [
{
"type": "text",
"text": "Actionable error message explaining how to fix the request"
}
],
"isError": true
}Data types reference
See Data Types for detailed schemas of all response objects (hotels, offers, reviews, rooms, etc.).