Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Changed the definition of "find_similar_hotels", "plan_trip" and "search_hotels"
⟨23 unchanged words⟩ same destination with the closest comfort profile,allnonepassingwiththerepeatedfivecomplaintsmust-havesabout cleanliness, beds, showers, bugs or safety, with the price difference. Read-only, no sign-in.
⟨71 unchanged words⟩ budget-comfort, long-stays.","type":"string"},"property_type":{"description":"property_type: hotels (default), apartments, hostels or any. hotels includes guest houses, B&Bs, aparthotels and resorts; apartments includes holiday homes, villas and homestays; any adds every kind, boats and campsites too. The long-stays persona defaults to any.","enum":["hotels","apartments","hostels","any"],"type":"string"},"start_date":{"description":"Check-in date of the ⟨87 unchanged words⟩
⟨34 unchanged words⟩ by the OKstays Comfort Score (0-10 fromcomfortwhatsignals;guests report: the five must-haves, cleanliness, beds, shower, bugs and safety, count 40%, sleep andonlyroomhotels30%,thatservicepass15%,themlocationare10%,rankedextras the place has 5%; repeated complaints about any must-have keep a hotel out) or by a travel style's score (half the Comfort Score, half how well it fits the style), weighing how many guests reviewed
Changed the definition of "plan_trip" and "search_hotels"
⟨66 unchanged words⟩ romantic, family, business, solo-safe, luxury,budget-comfort.budget-comfort, long-stays.","type":"string"},"start_date":{ ⟨92 unchanged words⟩
⟨222 unchanged words⟩ romantic, family, business, solo-safe, luxury,budget-comfort.budget-comfort, long-stays.","type":"string"},"radius_km":{ ⟨70 unchanged words⟩
Changed the definition of "compare_hotels", "find_similar_hotels", "get_city_overview" and 5 more
before
—after
Compare hotelsCompareUse this when the user is choosing between 2-4hotelsspecificsidehotels.byReturnsside:each hotel's Comfort Score breakdown, price, strengths
Changed the definition of "compare_hotels", "find_similar_hotels", "get_city_overview" and 2 more
{"properties":{"adults":{"description":"Guests per room, if given.","maximum":8,"minimum":1,"type":"integer"},"checkin":{"description":"User's check-in date, YYYY-MM-DD, if given: links then open on this stay.","type":"string"},"checkout":{"description":"Check-out date, YYYY-MM-DD.","type":"string"},"hotel_ids":{"description":"2-4 hotel ids from ⟨14 unchanged words⟩
{"properties":{"adults":{"description":"Guests per room, if given.","maximum":8,"minimum":1,"type":"integer"},"cheaper_only":{"description":"Only hotels priced below this one.","type":"boolean"},"checkin":{"description":"User's check-in date, YYYY-MM-DD, if given: links then open on this stay.","type":"string"},"checkout":{"description":"Check-out date, YYYY-MM-DD.","type":"string
Recently observed → Live
Added "plan_trip"; changed the definition of "search_hotels" (7 tools before, 8 now)
⟨6 unchanged words⟩ to, e.g. 'Gothic Quarter'. get_city_overview lists thedistricts.districts; another area name is matched against hotel addresses.","type":"string"},"location":{ ⟨146 unchanged words⟩ score 8+ on, e.g. ['soundproofing', 'reliable_wifi']; their names work too ('quiet'). See get_filters.","items":{"type": ⟨7 unchanged words⟩
Hotels for a multi-stop trip, one stay per destination in travel order (e.g. Lisbon 4 nights, Porto 3, Madrid 5): the best match for each stop by the OKstays Comfort Score (or the travel style's score), alternatives, the stay dates and an indicative total. Each hotel link opens its OKstays page with the stop's dates, so its Book Now button books those nights. Agree the stops and nights with the user first; list_cities shows which destinations of a country we cover.
Live → Recently observed
Certificate recorded, valid to 2026-12-04
Authorization not required
Unknown → Live
First tool surface recorded: 7 tools (server version 2.4.0)
https://okstays.com/api/mcp (mcp_streamable_http) — from mcp_registry, with the record
Showing the latest 12 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
⟨227 unchanged words⟩ budget-comfort, long-stays.","type":"string"},"property_type":{"description":"property_type: hotels (default), apartments, hostels or any. hotels includes guest houses, B&Bs, aparthotels and resorts; apartments includes holiday homes, villas and homestays; any adds every kind, boats and campsites too. The long-stays persona defaults to any.","enum":["hotels","apartments","hostels","any"],"type":"string"},"radius_km":{"description":"Search radius around near_lat/near_lng ⟨65 unchanged words⟩
{"properties":{"adults":{"description":"Guests per room (1-8), if given.","maximum":8,"minimum" ⟨4 unchanged words⟩ ":{"description":"User's check-in date, YYYY-MM-DD (e.g. 2027-03-12), if given: links then open on this ⟨3 unchanged words⟩ ,"checkout":{"description":"Check-out date,YYYY-MM-DD.YYYY-MM-DD (e.g. 2027-03-15).","type":"string"},"hotel_ids":{ ⟨19 unchanged words⟩
before
—after
Find similar hotelsHotelsUseinthis when thesameusercitylikeswithathehotelcomfortbutprofilewantsclosestalternatives,toe.g.a'likegiventhishotelone but cheaper' (similarcheaper_only).scoresReturnsacrosshotels in the same destination with the closest comfortfilters).profile,Useallcheaper_onlypassingforthe'likefivethismust-haves,onewithbutthecheaper'.price difference. Read-only, no sign-in.
{"properties":{"adults":{"description":"Guests per room (1-8), if given.","maximum":8,"minimum" ⟨14 unchanged words⟩ ":{"description":"User's check-in date, YYYY-MM-DD (e.g. 2027-03-12), if given: links then open on this ⟨3 unchanged words⟩ ,"checkout":{"description":"Check-out date,YYYY-MM-DD.YYYY-MM-DD (e.g. 2027-03-15).","type":"string"},"hotel_id":{ ⟨40 unchanged words⟩
before
—after
Destination overviewSnapshotUseofthis when the user is still choosing a destination:hotelorcountsan area to stay in. Returns how many hotels we score, the average Comfort Score, median price, where its hotels beat and trail the average hotel, the best neighbourhoods with their top hotel, and which travel styles it suits.Use it when the user is choosing a destination or an area; for aA request for hotels (e.g. 'quiet hotels in Bangkok'),callissearch_hotelssearch_hotels'directly.job. Read-only, no sign-in.
{"properties":{"adults":{"description":"Guests per room (1-8), if given.","maximum":8,"minimum" ⟨4 unchanged words⟩ ":{"description":"User's check-in date, YYYY-MM-DD (e.g. 2027-03-12), if given: links then open on this ⟨3 unchanged words⟩ ,"checkout":{"description":"Check-out date,YYYY-MM-DD.YYYY-MM-DD (e.g. 2027-03-15).","type":"string"},"location":{ ⟨11 unchanged words⟩
⟨4 unchanged words⟩ openWorldHint":false,"readOnlyHint":true,"title":"Get cityDestination overview"}
before
—after
Filters and travel stylesAllUse this to look up the comfortfilterssignals and travel styles that search_hotels accepts, when the user's wish doesn't map clearly to one. Returns every filter (idsid,namesname,descriptionsdescription,categories)category,usablewhetherinit'ssearch_hotels,aplusmust-have)theand every travelstylesstyle. Plain names also work in search_hotels tags (personas'quiet', 'wifi'). Read-only, no sign-in.
⟨4 unchanged words⟩ openWorldHint":false,"readOnlyHint":true,"title":"GetFiltersfiltersand travel styles"}
before
—after
Hotel detailsOneUsehotelthisinwhendepththe user asks about one hotel: why it scores as it does, or whether it's quiet, clean or good for sleep or work. Returns the Comfort Score breakdown, what the scores rest on ⟨8 unchanged words⟩ the reason behind each score, price andlinks.its okstays.com link. Pass focus with what the user asked about; detail='full' adds every scored signal (about four times longer). Read-only, no sign-in.
{"properties":{"adults":{"description":"Guests per room (1-8), if given.","maximum":8,"minimum" ⟨4 unchanged words⟩ ":{"description":"User's check-in date, YYYY-MM-DD (e.g. 2027-03-12), if given: links then open on this ⟨3 unchanged words⟩ ,"checkout":{"description":"Check-out date,YYYY-MM-DD.YYYY-MM-DD (e.g. 2027-03-15).","type":"string"},"detail":{ ⟨61 unchanged words⟩
⟨4 unchanged words⟩ openWorldHint":false,"readOnlyHint":true,"title":"GetHotelhoteldetails"}
before
—after
Covered destinationsDestinationsUsecoveredthis when the user asks which destinations OKstays covers, or before planning a trip through a country. Returns every destination we score withhotelitscounts.country,Optionallyslugonlyandthosenumberinof hotels; pass country to list onecountry.country only. Read-only, no sign-in.
⟨4 unchanged words⟩ openWorldHint":false,"readOnlyHint":true,"title":"ListCoveredcitiesdestinations"}
before
—after
Plan a multi-stop tripHotelsUseforthisawhenmulti-stopthe user plans a trip,onewithstayseveralperstops.destinationReturns hotels for each stay in travel order (e.g. Lisbon 4 nights, ⟨57 unchanged words⟩ shows which destinations of a country we cover. Read-only, no sign-in.
⟨5 unchanged words⟩ :false,"readOnlyHint":true,"title":"Plan a multi-stop trip"}
before
—after
Search hotelsRankUse this when the user wants hotels in acitydestination (e.g. 'quiet hotels in Bangkok under $150'), or asks about a hotel by name (hotel_name). Returns up to 10 hotels per page, ranked by the OKstays Comfort Score (0-10 from comfort signals; the five must-haves, cleanliness, beds, shower, bugs and safety, count 40%).Onlyand only hotels that passall five must-havesthem arereturned. Optionallyranked)rankorforby a travelstyle (persona) and/or requirestyle'sspecificscore,strengths.eachReturnswithupstrengths,tocomplaints,10indicativehotelspriceperandpageits(limit,okstays.compage)link.withFilters:strengths,travelcaveatsstyle,pricesignalsandthelinks.hotelTomustcheckscorea8+hotelon,theprice,userminimumalreadyscore,hasneighbourhood,indistancemind,frompassahotel_name.point. Pass the user's dates and guests(checkin,whencheckoutknown. Hotels only,adults)notwhenflightsknown.or car hire. Read-only, no sign-in.
{"properties":{"adults":{"description":"Guests per room (1-8), if given.","maximum":8,"minimum" ⟨4 unchanged words⟩ ":{"description":"User's check-in date, YYYY-MM-DD (e.g. 2027-03-12), if given: links then open on this ⟨3 unchanged words⟩ ,"checkout":{"description":"Check-out date,YYYY-MM-DD.YYYY-MM-DD (e.g. 2027-03-15).","type":"string"},"district":{ ⟨257 unchanged words⟩
{"properties":{"adults":{"description":"Guests per room, if given.","maximum":8,"minimum":1,"type":"integer"},"checkin":{"description":"User's check-in date, YYYY-MM-DD, if given: links then open on this stay.","type":"string"},"checkout":{"description":"Check-out date, YYYY-MM-DD.","type":"string"},"location":{"description":"City name or slug. ⟨6 unchanged words⟩
Full detailsOneforhoteloneinhoteldepth: Comfort Score breakdown,everywhatfilterthescorescoreswithrestitson,explanationthe five must-haves,caveatsits strengths and complaints with the reason behind each score, price and links. Pass focus with what the user asked about; detail='full' adds every scored signal (about four times longer).
{"properties":{"adults":{"description":"Guests per room, if given.","maximum":8,"minimum":1,"type":"integer"},"checkin":{"description":"User's check-in date, YYYY-MM-DD, if given: links then open on this stay.","type":"string"},"checkout":{"description":"Check-out date, YYYY-MM-DD.","type":"string"},"detail":{"description":"summary (default) or full: every scored signal with its explanation, about four times longer.","enum":["summary","full"],"type":"string"},"focus":{"description":"Signals the user asked about, as filter ids or names (e.g. ['quiet', 'bed', 'wifi']); always included with their reasons.","items":{"type":"string"},"type":"array"},"hotel_id":{"description":"Hotel id (numeric ⟨9 unchanged words⟩
Rank hotels in a city by the OKstays Comfort Score (AI scores on0-10thefrom comfortfilters;signals; cleanliness, beds, shower, bugs and safety ⟨20 unchanged words⟩ require specific strengths. Returns up to 10 hotels per page (limit, page) with strengths, caveats, price and links. To check a hotel the user already has in mind, pass hotel_name. Pass the user's dates and guests (checkin, checkout, adults) when known.
{"properties":{"adults":{"description":"Guests per room, if given.","maximum":8,"minimum":1,"type":"integer"},"checkin":{"description":"User's check-in date, YYYY-MM-DD, if given: links then open on this stay.","type":"string"},"checkout":{"description":"Check-out date, YYYY-MM-DD.","type":"string"},"district":{"description":"Neighbourhood to restrict to ⟨13 unchanged words⟩ hotel addresses.","type":"string"},"hotel_name":{"description":"Find a hotel by name in this city (part of the name works, e.g. 'Pestana'), including hotels outside our rankings; the other filters are then ignored.","type":"string"},"limit":{"description":"Hotels per page (default 10).","maximum":10,"minimum":1,"type":"integer"},"location":{"description":"City name or slug ⟨70 unchanged words⟩ the point of interest.","type":"number"},"page":{"description":"Page of results (default 1; up to 5) for 'show me more'.","maximum":5,"minimum":1,"type":"integer"},"persona":{"description":"Travel style ⟨85 unchanged words⟩