OKstays
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Hotels ranked by real comfort, not commission: search 30,000+ hotels by quiet, beds, WiFi and more
| Author | com.okstays |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 2403 ms |
| Last measured | 2026-10-26 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"OKstays": {
"url": "https://okstays.com/api/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (7)
search_hotelsread-onlyRank hotels in a city by the OKstays Comfort Score (AI scores on the comfort filters; cleanliness, beds, shower, bugs and safety count 40%). Only hotels that pass all five must-haves are returned. Optionally rank for a travel style (persona) and/or require specific strengths. Returns up to 10 hotels with strengths, caveats, price and links.
Parameters:
location(required) — string — City name or slug, e.g. 'Barcelona' or 'new-york'. Use list_cities for coverage.tags— array — Filter ids the hotel must score 8+ on, e.g. ['soundproofing', 'reliable_wifi']. See get_filters.persona— string — Travel style to rank for: digital-nomad, deep-sleep, avoid-crowds, romantic, family, business, solo-safe, luxury, budget-comfort.sort_by— string — best = Comfort Score (default); value = Comfort Score per $100; nearest needs near_lat/near_lng.district— string — Neighbourhood to restrict to, e.g. 'Gothic Quarter'. get_city_overview lists the districts.near_lat— number — Latitude of a landmark or address the user names (not the user's own location); with near_lng restricts results to hotels within radius_km and reports distance_km.near_lng— number — Longitude of the point of interest.max_price— number — Maximum indicative price per night in USD.min_score— number — Minimum Comfort Score (0-10).radius_km— number — Search radius around near_lat/near_lng in km (default 3).
Hints: read-only yes · destructive no · idempotent yes · open-world no
get_hotelread-onlyFull details for one hotel: Comfort Score breakdown, every filter score with its explanation, caveats, price and links.
Parameters:
hotel_id(required) — string — Hotel id (numeric string) from search_hotels.
Hints: read-only yes · destructive no · idempotent yes · open-world no
list_citiesread-onlyDestinations covered, with hotel counts. Optionally only those in one country.
Parameters:
country— string — Country name to filter by, e.g. 'Spain'.
Hints: read-only yes · destructive no · idempotent yes · open-world no
get_filtersread-onlyAll comfort filters (ids, names, descriptions, categories) usable in search_hotels, plus the travel styles (personas).
Hints: read-only yes · destructive no · idempotent yes · open-world no
compare_hotelsread-onlyCompare 2-4 hotels side by side: Comfort Score breakdown, price, strengths, caveats, the filters where they differ most, and a verdict (best comfort, cheapest, best value).
Parameters:
hotel_ids(required) — array — 2-4 hotel ids from search_hotels.
Hints: read-only yes · destructive no · idempotent yes · open-world no
find_similar_hotelsread-onlyHotels in the same city with the comfort profile closest to a given hotel (similar scores across the comfort filters). Use cheaper_only for 'like this one but cheaper'.
Parameters:
hotel_id(required) — string — Hotel id to find alternatives for.limit— integer — How many to return (default 5).max_price— number — Maximum price per night in USD.cheaper_only— boolean — Only hotels priced below this one.
Hints: read-only yes · destructive no · idempotent yes · open-world no
get_city_overviewread-onlySnapshot of a destination: hotel counts, average Comfort Score, median price, where its hotels beat and trail the average hotel, the best neighbourhoods, and which travel styles it suits. Use it when the user is choosing a destination or an area; for a request for hotels (e.g. 'quiet hotels in Bangkok'), call search_hotels directly.
Parameters:
location(required) — string — City name or slug.
Hints: read-only yes · destructive no · idempotent yes · open-world no
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.