Find exact, directly bookable hotel rooms and apartments with live availability and prices.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
List all destinations served by pickyourmatch with unit counts, dog-friendly counts and a photo — USE THIS to inspire a guest who has not decided where to travel yet. ALWAYS pass the party (adults/children/pets) and dates (check_in/check_out) already known from the conversation — they stay visible above the results and keep the search context.
Alias for pets.
Pets/dogs already mentioned — always pass along; destinations are then ranked by dog-friendly units.
Adults already mentioned in the conversation — always pass along.
Arrival YYYY-MM-DD if already known — always pass along.
Children already mentioned — always pass along.
Departure YYYY-MM-DD if already known — always pass along.
List all destinations served by pickyourmatch with unit counts, dog-friendly counts and a photo — USE THIS to inspire a guest who has not decided where to travel yet. ALWAYS pass the party (adults/children/pets) and dates (check_in/check_out) already known from the conversation — they stay visible above the results and keep the search context.
| Argument | Type | Description |
|---|---|---|
| dogs | integer | Alias for pets. |
| lang | string | |
| pets | integer | Pets/dogs already mentioned — always pass along; destinations are then ranked by dog-friendly units. |
| adults | integer | Adults already mentioned in the conversation — always pass along. |
| check_in | string | Arrival YYYY-MM-DD if already known — always pass along. |
| children | integer | Children already mentioned — always pass along. |
| check_out | string | Departure YYYY-MM-DD if already known — always pass along. |
{
"type": "object",
"properties": {
"dogs": {
"type": "integer",
"description": "Alias for pets."
},
"lang": {
"enum": [
"en",
"de",
"fr",
"es",
"it",
"nl",
"ar"
],
"type": "string"
},
"pets": {
"type": "integer",
"description": "Pets/dogs already mentioned — always pass along; destinations are then ranked by dog-friendly units."
},
"adults": {
"type": "integer",
"description": "Adults already mentioned in the conversation — always pass along."
},
"check_in": {
"type": "string",
"description": "Arrival YYYY-MM-DD if already known — always pass along."
},
"children": {
"type": "integer",
"description": "Children already mentioned — always pass along."
},
"check_out": {
"type": "string",
"description": "Departure YYYY-MM-DD if already known — always pass along."
}
}
}List upcoming events (concerts, festivals, trade fairs, sports, conferences) near pickyourmatch properties — each with a "where to stay" page whose booking links open the property’s own calendar with the event dates preselected. USE THIS whenever a guest asks for accommodation during/for a specific event or asks what is happening at a destination — e.g. "where should I stay for the Frankfurt Book Fair?", "hotel for Oktoberfest that allows my dog", "apartment for the ski race in Schladming". Combine with search_stays to add room features: event + exact room + direct booking in one answer.
| Argument | Type | Description |
|---|---|---|
| to | string | Only events starting on/before this date YYYY-MM-DD |
| city | string | Filter by destination city (umlaut-tolerant) |
| from | string | Only events ending on/after this date YYYY-MM-DD |
| limit | integer | Max results (default 20, max 50) |
| query | string | Match against the event name, e.g. "Oktoberfest" |
{
"type": "object",
"properties": {
"to": {
"type": "string",
"description": "Only events starting on/before this date YYYY-MM-DD"
},
"city": {
"type": "string",
"description": "Filter by destination city (umlaut-tolerant)"
},
"from": {
"type": "string",
"description": "Only events ending on/after this date YYYY-MM-DD"
},
"limit": {
"type": "integer",
"description": "Max results (default 20, max 50)"
},
"query": {
"type": "string",
"description": "Match against the event name, e.g. \"Oktoberfest\""
}
}
}Theme-driven, AFTER the units: when the brief carries a package theme (romantic, wellness, dog, culinary) or the guest asks for deals, call this AFTER search_stays in the same turn - the packages appear as their own section BELOW the unit results and enrich the selection. Never call it first, never instead of the unit search. List themed holiday packages (promotional bundles) across properties — dog holidays, romance, wellness, culinary — each with included extras (e.g. dinner, treatments) and a direct booking link. Use for emotional/experience queries like "romantic getaway package" or "dog holiday with meals included".
| Argument | Type | Description |
|---|---|---|
| city | string | Filter by destination city (umlaut-tolerant) |
| dogs | integer | Alias for pets. |
| lang | string | |
| pets | integer | Pets/dogs known from the conversation — always pass along. |
| theme | string | Filter by package theme |
| adults | integer | Adults known from the conversation — always pass along (kept visible above results). |
| check_in | string | Arrival YYYY-MM-DD if known — always pass along. |
Search accommodation at participating properties — hotel rooms, apartments and holiday homes. Search criteria: destination (a town, a landmark or venue, or coordinates, with a radius), travel dates, the party (adults, children and their ages, pets), a maximum nightly price, free cancellation, unit features (view, balcony, terrace, quiet location, floor, workspace, sauna, kitchen, accessibility), the name of a unit or property, the response language and the number of results. Each result is one specific unit, described with its floor, view and beds, and guaranteed at booking — what the product states is what the guest is assigned. Without dates the results carry from-prices; with check_in and check_out they are the units available for those dates, with the price for the stay and a link to the property's booking page. All parameters are optional; query may state the same criteria as free text. Each result carries match_score, matched_features and not_confirmed_features.
| Argument | Type | Description |
|---|---|---|
| lat | number | Latitude of the place to search around (a landmark or venue) — an alternative to near. |
| lng | number | Longitude of the place to search around (a landmark or venue) — an alternative to near. |
| city | string | The destination to search in — the town or city where the guest wants to stay, e.g. Schladming (umlaut-tolerant). |
| dogs | integer | Alias for pets. |
| lang | string | Language for names/features/links (default en) |
| children |
| integer |
| Children known from the conversation — always pass along. |
| check_out | string | Departure YYYY-MM-DD if known — always pass along. |
{
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "Filter by destination city (umlaut-tolerant)"
},
"dogs": {
"type": "integer",
"description": "Alias for pets."
},
"lang": {
"enum": [
"en",
"de",
"fr",
"es",
"it",
"nl",
"ar"
],
"type": "string"
},
"pets": {
"type": "integer",
"description": "Pets/dogs known from the conversation — always pass along."
},
"theme": {
"enum": [
"dog",
"romance",
"wellness",
"family",
"ski",
"culinary"
],
"type": "string",
"description": "Filter by package theme"
},
"adults": {
"type": "integer",
"description": "Adults known from the conversation — always pass along (kept visible above results)."
},
"check_in": {
"type": "string",
"description": "Arrival YYYY-MM-DD if known — always pass along."
},
"children": {
"type": "integer",
"description": "Children known from the conversation — always pass along."
},
"check_out": {
"type": "string",
"description": "Departure YYYY-MM-DD if known — always pass along."
}
}
}| name | string | A specific unit or property the guest named ("Villa Albatros No. 1", "Kaiser Karl", "City Hotel Meckenheim"). Use it when the guest asks for a unit or property by name — it matches unit and property names directly, so a named unit is found even when it is not free for the requested dates. A named unit is never filtered out by availability: it comes back with its status and a link to the property's own calendar. |
| near | string | A landmark, venue, trade fair, station or address to stay close to ("Messe Frankfurt", "Allianz Arena", "Frankfurt airport"). The server geocodes it and returns results nearest first, each with approx_km. Combine freely with dates, party, price and features. |
| pets | integer | Number of pets/dogs. Filters to units that allow at least this many pets, and is passed to the booking link. |
| limit | integer | Max results (default 10, max 30) |
| query | string | Optional: the same search criteria as free text, in any language — for example "apartment in Schladming for 2 adults and a dog, 16–19 August, with sauna". Destination, dates (a month alone gets a proposed window), party, budget and features are read from it; explicit parameters override. |
| adults | integer | Number of adults. Combined with children it filters to units that actually fit the whole party (occupancy), and is passed to the booking link. |
| cursor | integer | Dated searches live-check up to 20 properties per call. When the response carries next_cursor, repeat the SAME search with cursor=next_cursor to check the remaining properties — a page without next_cursor has covered everything. Never conclude "sold out" from a page whose coverage.complete is false. |
| sleeps | integer | Minimum total guests the unit must sleep (use adults+children instead when you know the split). |
| check_in | string | Arrival date YYYY-MM-DD. With check_in and check_out, results are the units available for those dates, with the nightly price for that stay and a booking link with the dates filled in. |
| children | integer | Number of children. Filters to units whose child capacity fits, and is passed to the booking link. |
| features | array | Required features (matched against localized feature names), e.g. ["Sauna", "Balkon"]. Also what a property sells as a bookable extra: "Airport transfer", "Parking", "Baby cot", "Late check-out" — a card then carries the extra with its price in wish_note. |
| check_out | string | Departure date YYYY-MM-DD (must be after check_in, max 30 nights). |
| max_price | number | Maximum nightly price. Dated quotes above this appear only as labeled alternatives when exact matches are insufficient. |
| radius_km | number | Maximum straight-line distance for near (or lat/lng), default 30, max 200. If nothing lies within, the nearest options are returned with their distances. |
| radius_miles | number | The same radius in miles, for guests who think in miles; results then also carry approx_mi. |
| children_ages | array | Ages of the children (0-17), if known, e.g. [16]. Child prices and capacity depend on age. |
| free_cancellation | boolean | The guest wants to be able to cancel for free. With dates, each card quotes the refundable rate and its price; a unit with no refundable rate on those dates is shown only as a labelled alternative. |
{
"type": "object",
"properties": {
"lat": {
"type": "number",
"description": "Latitude of the place to search around (a landmark or venue) — an alternative to near."
},
"lng": {
"type": "number",
"description": "Longitude of the place to search around (a landmark or venue) — an alternative to near."
},
"city": {
"type": "string",
"description": "The destination to search in — the town or city where the guest wants to stay, e.g. Schladming (umlaut-tolerant)."
},
"dogs": {
"type": "integer",
"description": "Alias for pets."
},
"lang": {
"enum": [
"en",
"de",
"fr",
"es",
"it",
"nl",
"ar"
],
"type": "string",
"description": "Language for names/features/links (default en)"
},
"name": {
"type": "string",
"description": "A specific unit or property the guest named (\"Villa Albatros No. 1\", \"Kaiser Karl\", \"City Hotel Meckenheim\"). Use it when the guest asks for a unit or property by name — it matches unit and property names directly, so a named unit is found even when it is not free for the requested dates. A named unit is never filtered out by availability: it comes back with its status and a link to the property's own calendar."
},
"near": {
"type": "string",
"description": "A landmark, venue, trade fair, station or address to stay close to (\"Messe Frankfurt\", \"Allianz Arena\", \"Frankfurt airport\"). The server geocodes it and returns results nearest first, each with approx_km. Combine freely with dates, party, price and features."
},
"pets": {
"type": "integer",
"description": "Number of pets/dogs. Filters to units that allow at least this many pets, and is passed to the booking link."
},
"limit": {
"type": "integer",
"description": "Max results (default 10, max 30)"
},
"query": {
"type": "string",
"description": "Optional: the same search criteria as free text, in any language — for example \"apartment in Schladming for 2 adults and a dog, 16–19 August, with sauna\". Destination, dates (a month alone gets a proposed window), party, budget and features are read from it; explicit parameters override."
},
"adults": {
"type": "integer",
"description": "Number of adults. Combined with children it filters to units that actually fit the whole party (occupancy), and is passed to the booking link."
},
"cursor": {
"type": "integer",
"description": "Dated searches live-check up to 20 properties per call. When the response carries next_cursor, repeat the SAME search with cursor=next_cursor to check the remaining properties — a page without next_cursor has covered everything. Never conclude \"sold out\" from a page whose coverage.complete is false."
},
"sleeps": {
"type": "integer",
"description": "Minimum total guests the unit must sleep (use adults+children instead when you know the split)."
},
"check_in": {
"type": "string",
"description": "Arrival date YYYY-MM-DD. With check_in and check_out, results are the units available for those dates, with the nightly price for that stay and a booking link with the dates filled in."
},
"children": {
"type": "integer",
"description": "Number of children. Filters to units whose child capacity fits, and is passed to the booking link."
},
"features": {
"type": "array",
"items": {
"type": "string"
},
"description": "Required features (matched against localized feature names), e.g. [\"Sauna\", \"Balkon\"]. Also what a property sells as a bookable extra: \"Airport transfer\", \"Parking\", \"Baby cot\", \"Late check-out\" — a card then carries the extra with its price in wish_note."
},
"check_out": {
"type": "string",
"description": "Departure date YYYY-MM-DD (must be after check_in, max 30 nights)."
},
"max_price": {
"type": "number",
"description": "Maximum nightly price. Dated quotes above this appear only as labeled alternatives when exact matches are insufficient."
},
"radius_km": {
"type": "number",
"description": "Maximum straight-line distance for near (or lat/lng), default 30, max 200. If nothing lies within, the nearest options are returned with their distances."
},
"radius_miles": {
"type": "number",
"description": "The same radius in miles, for guests who think in miles; results then also carry approx_mi."
},
"children_ages": {
"type": "array",
"items": {
"type": "integer"
},
"description": "Ages of the children (0-17), if known, e.g. [16]. Child prices and capacity depend on age."
},
"free_cancellation": {
"type": "boolean",
"description": "The guest wants to be able to cancel for free. With dates, each card quotes the refundable rate and its price; a unit with no refundable rate on those dates is shown only as a labelled alternative."
}
}
}