pickyourmatch
Server Details
Find exact, directly bookable hotel rooms and apartments with live availability and prices.
- Status
- Healthy
- Uptime
- 100.0% over 24 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 4 tools
Each tool targets a distinct user intent: destination inspiration (list_destinations), event-based stays (list_events), themed packages (list_packages), and general accommodation search (search_stays). The descriptions explicitly delineate when to use each, leaving no overlap or ambiguity.
All tool names follow a consistent snake_case verb_noun pattern (list_* and search_*). This makes them predictable and easy to reference in agent workflows.
Four tools cover the core discovery and search workflows (inspiration, events, packages, stays) without redundancy. This fits the well-scoped 3-15 range and each tool earns its place.
The surface covers key entry points for accommodation search and inspiration, but lacks tools for retrieving specific unit or package details by ID and managing bookings (though booking links are provided). Minor gaps exist, but core workflows are supported.
Available Tools
4 toolslist_destinationsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| dogs | No | Alias for pets. | |
| lang | No | ||
| pets | No | Pets/dogs already mentioned — always pass along; destinations are then ranked by dog-friendly units. | |
| adults | No | Adults already mentioned in the conversation — always pass along. | |
| check_in | No | Arrival YYYY-MM-DD if already known — always pass along. | |
| children | No | Children already mentioned — always pass along. | |
| check_out | No | Departure YYYY-MM-DD if already known — always pass along. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds beyond that: results carry a photo, and the passed context 'stays visible above the results' to preserve search context — a UI/state behavior an agent could not infer from the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with what the tool returns before the imperative usage guidance. The 'ALWAYS pass...' clause duplicates schema text, but the emphasis is arguably intentional and no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 7 optional parameters, no output schema and no required params, the description compensates by describing the returned content (counts, photo) and the calling convention for context params. Nothing critical is missing for correct invocation, though pagination/volume behavior is unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 86%, so the schema already explains adults/children/pets/check_in/check_out and their 'always pass along' requirement. The description mostly restates that instruction; its only added semantic is the rationale that the context remains visible above the results, which is marginal against an already well-documented schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List all destinations served by pickyourmatch') and even discloses the payload shape (unit counts, dog-friendly counts, a photo). It signals its niche against siblings like search_stays via the 'guest who has not decided where to travel yet' framing, but never names the alternatives explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear use condition — 'USE THIS to inspire a guest who has not decided where to travel yet' — and instructs the agent to always pass party and dates already known. There is no explicit when-not rule or named sibling to route to instead, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_eventsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Only events starting on/before this date YYYY-MM-DD | |
| city | No | Filter by destination city (umlaut-tolerant) | |
| from | No | Only events ending on/after this date YYYY-MM-DD | |
| limit | No | Max results (default 20, max 50) | |
| query | No | Match against the event name, e.g. "Oktoberfest" |
Output Schema
| Name | Required | Description |
|---|---|---|
| city | No | Echo of the city filter, if given |
| lang | No | Language of the response |
| query | No | Echo of the name query, if given |
| total | Yes | Number of events matching the filters (before limit) |
| events | Yes | Upcoming events, soonest first |
| guidance | Yes | How to present the results / what to do when empty |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds genuinely non-obvious behavior: results link to the property's own calendar with event dates preselected, and the tool is designed to be composed with search_stays. It stops short of return-format or pagination detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core purpose before the usage triggers, and each sentence carries distinct information (purpose, triggers, composition). Slightly verbose with the quote-heavy examples, but nothing is truly wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description needn't explain return values, yet it still characterizes the landing page behavior and the cross-tool composition. Nothing an agent needs in order to select and invoke this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters (query, city, from, to, limit) are already documented with format and semantics. The description adds no syntax or format detail beyond the schema, which is the expected baseline when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (upcoming events), enumerates the event categories covered, and even describes the shape of each result ('where to stay' page with booking links). An agent can immediately tell this apart from list_destinations, list_packages, and search_stays.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'USE THIS whenever...' trigger conditions, three concrete user-utterance examples, and an explicit orchestration instruction to combine with search_stays. This is close to ideal routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_packagesARead-onlyIdempotentInspect
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".
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | Filter by destination city (umlaut-tolerant) | |
| dogs | No | Alias for pets. | |
| lang | No | ||
| pets | No | Pets/dogs known from the conversation — always pass along. | |
| theme | No | Filter by package theme | |
| adults | No | Adults known from the conversation — always pass along (kept visible above results). | |
| check_in | No | Arrival YYYY-MM-DD if known — always pass along. | |
| children | No | Children known from the conversation — always pass along. | |
| check_out | No | Departure YYYY-MM-DD if known — always pass along. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety and world scope are covered. The description adds genuine behavioral context beyond that: results render as their own section BELOW unit results and enrich the selection, and each package carries included extras and a direct booking link. It stops short of mentioning auth needs, rate limits, or result cardinality, hence a 4 rather than 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The critical ordering constraint is front-loaded and capitalized, which is the right structure. However, the same ordering rule is restated three times ('AFTER the units', 'never call it first', 'never instead of the unit search'), which is somewhat redundant, and the theme list is repeated between the routing sentence and the resource sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter, no-required, no-output-schema tool, the description supplies the essential missing context: the ordering relationship to search_stays, the thematic trigger conditions, and what a returned package contains. Since there is no output schema, it could say slightly more about the shape/volume of results, but nothing critical for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 89%, so the schema already documents the parameters well (including the 'always pass along' guidance on adults, children, pets, check_in/out). The description reinforces the theme concept by listing romance/wellness/dog/culinary, which maps to the theme enum, but adds no format or filtering detail beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource — 'List themed holiday packages (promotional bundles) across properties' — and enumerates the themes (dog, romance, wellness, culinary) plus what each contains. It explicitly distinguishes itself from the sibling search_stays ('never instead of the unit search'), so an agent can separate it from siblings without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when ('when the brief carries a package theme... or the guest asks for deals'), an ordering rule ('call this AFTER search_stays in the same turn'), and hard exclusions ('never call it first, never instead of the unit search'). It also supplies trigger examples ('romantic getaway package', 'dog holiday with meals included'), leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_staysARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Latitude of the place to search around (a landmark or venue) — an alternative to near. | |
| lng | No | Longitude of the place to search around (a landmark or venue) — an alternative to near. | |
| city | No | The destination to search in — the town or city where the guest wants to stay, e.g. Schladming (umlaut-tolerant). | |
| dogs | No | Alias for pets. | |
| lang | No | Language for names/features/links (default en) | |
| name | No | 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 | No | 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 | No | Number of pets/dogs. Filters to units that allow at least this many pets, and is passed to the booking link. | |
| limit | No | Max results (default 10, max 30) | |
| query | No | 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 | No | 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 | No | 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 | No | Minimum total guests the unit must sleep (use adults+children instead when you know the split). | |
| check_in | No | 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 | No | Number of children. Filters to units whose child capacity fits, and is passed to the booking link. | |
| features | No | 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 | No | Departure date YYYY-MM-DD (must be after check_in, max 30 nights). | |
| max_price | No | Maximum nightly price. Dated quotes above this appear only as labeled alternatives when exact matches are insufficient. | |
| radius_km | No | 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 | No | The same radius in miles, for guests who think in miles; results then also carry approx_mi. | |
| children_ages | No | Ages of the children (0-17), if known, e.g. [16]. Child prices and capacity depend on age. | |
| free_cancellation | No | 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. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry readOnlyHint=true, idempotentHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description adds real behavioral context beyond that: each result is a specific unit guaranteed at booking ("what the product states is what the guest is assigned"), and results carry match_score, matched_features and not_confirmed_features. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and result semantics, which is good, but the long paragraph re-lists every search criterion that the 100%-covered schema already documents in full, so significant text is redundant rather than additive. It is dense but not wasteful to the point of confusion.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 22 optional parameters and no output schema, the description does well to explain the return shape (one unit per result with floor, view, beds, from-price vs stay-price, booking link) and the naming/availability guarantee. The cursor/coverage pagination semantics live only in the schema, but the description is otherwise sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The prose enumerates the same criteria (destination, dates, party, price, features, name, language, limit) that the schema already documents, and adds no syntax, defaults or format detail beyond it; the return-field names (match_score, matched_features) are result metadata rather than parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (search) and resource (accommodation: hotel rooms, apartments, holiday homes) at participating properties, with the search-criteria scope enumerated. An agent can distinguish this from list_destinations, list_events and list_packages, which enumerate catalogue entities rather than search bookable units.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear conditional behavior: without dates results carry from-prices, with check_in/check_out they are the units available for those dates with the stay price and booking link; all parameters are optional and query may restate criteria as free text. It does not explicitly route to the sibling tools (events, packages) or state when-not-to-use, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
search_stays4 fields changed- changed
Input schema / properties / check_in / descriptionPrevious value: -"Arrival date YYYY-MM-DD. When check_in+check_out are given, results are filtered to units actually AVAILABLE for those exact dates, with the real total-window nightly price and a booking link that has the dates pre-filled."New value: +"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." - changed
Input schema / properties / children_ages / descriptionPrevious value: -"Ages of the children (0-17), e.g. [16], when the guest states them. The price and the capacity check depend on each child's age, so a search without them can quote a wrong price."New value: +"Ages of the children (0-17), if known, e.g. [16]. Child prices and capacity depend on age." - changed
Input schema / properties / query / descriptionPrevious value: -"The accommodation request as free text, in any language — for example \"apartment in Schladming for 2 adults and a dog, 16–19 August, with sauna\". The server reads destination, dates (exact ranges are kept; a month alone gets a proposed window), party, dogs, budget and feature wishes from it. Explicit parameters below override."New value: +"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." - changed
Input schema / properties / radius_km / descriptionPrevious value: -"Maximum straight-line distance for near (or lat/lng), default 30, max 200. If nothing lies within, the nearest options are returned with honest distances instead of an empty answer."New value: +"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."
1 tool update
- Changed
search_stays6 fields changed- changed
Input schema / properties / children_ages / descriptionPrevious value: -"Ages of the children (0-17), e.g. [16] — ALWAYS pass them when the guest mentioned ages: the booking engine prices and checks capacity per age, a teen priced as a small child produces wrong offers."New value: +"Ages of the children (0-17), e.g. [16], when the guest states them. The price and the capacity check depend on each child's age, so a search without them can quote a wrong price." - changed
Input schema / properties / city / descriptionPrevious value: -"Destination city, e.g. Schladming (umlaut-tolerant)"New value: +"The destination to search in — the town or city where the guest wants to stay, e.g. Schladming (umlaut-tolerant)." - changed
Input schema / properties / lat / descriptionPrevious value: -"Latitude — coordinate alternative to near."New value: +"Latitude of the place to search around (a landmark or venue) — an alternative to near." - changed
Input schema / properties / lng / descriptionPrevious value: -"Longitude — coordinate alternative to near."New value: +"Longitude of the place to search around (a landmark or venue) — an alternative to near." - changed
Input schema / properties / name / descriptionPrevious value: -"A specific unit or property the guest named (\"Villa Albatros No. 1\", \"Kaiser Karl\", \"City Hotel Meckenheim\"). Use this WHENEVER the guest asks for something by name — it matches unit and property names directly, so a named unit is always findable 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."New value: +"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." - changed
Input schema / properties / query / descriptionPrevious value: -"EASIEST correct call: the guest message VERBATIM, any language, typos fine — the server translates it into place, dates (preserves exact ranges; only month-only requests use a proposed window), party, dogs, budget and feature wishes. Explicit parameters below always override."New value: +"The accommodation request as free text, in any language — for example \"apartment in Schladming for 2 adults and a dog, 16–19 August, with sauna\". The server reads destination, dates (exact ranges are kept; a month alone gets a proposed window), party, dogs, budget and feature wishes from it. Explicit parameters below override."
1 tool update
- Changed
search_stays1 field changed- changed
Input schema / properties / features / descriptionPrevious value: -"Required features (matched against localized feature names), e.g. [\"Sauna\", \"Balkon\"]"New value: +"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."
4 tool updates
- First observed
list_destinations - First observed
list_events - First observed
list_packages - First observed
search_stays
Related MCP Connectors
Search 650,000 hotels, get each hotel's direct price with full offer lists, match rooms, book.
Live hotel rates worldwide: search stays, property detail, all-in room prices, human phone desk.
Search hotels worldwide, compare live room rates, and create booking payment links.
AI hotel search and booking: millions of properties, 85,000+ cities, live rates.
Related MCP Servers
- AlicenseBqualityAmaintenanceOfficial MCP server for MAQAMI, a hotel and flight booking platform with 3M+ hotels. Search live hotel rates and flights, look up places, airports and hotel details, then prebook and book. Remote Streamable HTTP endpoint, no API key required.4186 npm2MIT
- AlicenseAqualityAmaintenanceVacation rental software. A signed stay offer on the host’s own domain. Use this when a vacation rental host wants booking software on the host’s own domain, or when a stay offer must be verified against that domain. Returns an Ed25519-signed offer (VRP) and the host’s direct booking URL. The guest books and pays the host. Do not use to compare hosts or prices.6999 npm4Apache 2.0
- FlicenseNot gradedqualityFmaintenanceProvides live hotel room rates, availability, and guest reviews from Agoda, enabling searches by destination and dates, property details, and structured review data.1-
- FlicenseAqualityBmaintenanceEnables AI assistants to search hotel rooms by number of nights within a flexible date range, returning real prices and the cheapest deals with booking links. It also supports city resolution, hotel listing, and offer details for external booking completion.4-
Glama MCP Gateway
Add one secure layer between your agents and this server.