Quub hotel search and booking
Server Details
Live hotel prices worldwide, sourced destination guides, prebooking. No key needed for reads.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 8 tools
Each tool targets a distinct resource+action: search_hotels returns lists, get_hotel returns a single hotel's full detail, prebook holds a room, get_booking reports status, and cancel_booking cancels. The list/detail pairs (list_destinations vs get_destination_guide, search_hotels vs get_hotel) are clearly differentiated by their descriptions, with only mild conceptual adjacency between searching and fetching a hotel.
Names are snake_case verb_noun throughout (search_hotels, get_hotel, prebook, get_booking, cancel_booking, list_destinations, get_destination_guide, request_api_key). The lone deviation is 'prebook', which is a bare verb without a noun, but the convention remains readable and predictable.
Eight tools is well-scoped for a hotel search and booking server. Each tool maps to a clear step in the search-to-booking lifecycle plus supporting utilities (guides, API key), with no redundant or filler tools.
The full booking lifecycle is covered: search -> prebook -> pay -> get_booking -> cancel_booking, plus destination guides and API key provisioning. Minor gaps exist (e.g. no booking modification or multi-room handling), but core workflows have no dead ends.
Available Tools
8 toolscancel_bookingCancel bookingADestructiveIdempotentInspect
Cancels a confirmed booking with a refundable rate that this key made. The refund follows the rate terms (free before the deadline, the hotel charge after it) and goes back to the card through Nuitee. Non-refundable rates cannot be cancelled online. Only call this when the guest asked for it. Needs the guest email. Needs a Quub API key (this connection has none yet: use request_api_key).
| Name | Required | Description | Default |
|---|---|---|---|
| booking_id | Yes | booking_id from prebook. | |
| guest_email | Yes | The guest email used for the booking. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare the safety profile (destructive=true, idempotent=true), but the description adds material context they cannot carry: the refund follows the rate terms, is credited back to the card through Nuitee, and the free-cancellation window is bounded by a deadline. It also discloses the auth blocker (no Quub API key on this connection), which is exactly the kind of precondition an agent needs before invoking a destructive tool.
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 the purpose and refund consequence, then constraints, then prerequisites. Five short sentences with little waste, though 'Needs the guest email' is mildly redundant against a required schema field and could be dropped.
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 destructive, irreversible cancellation with no output schema, the description covers everything an agent needs: what is refunded, where the money goes, which rates are eligible, who must request it, and that the call is currently blocked pending an API key. Nothing material 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 coverage is 100% and both parameters are required, so the schema already documents booking_id and guest_email. The description only restates that the guest email is needed, adding no format, provenance, or edge-case detail beyond what is structured. 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?
States a specific verb and resource ('Cancels a confirmed booking') and narrows the scope with two qualifiers: the rate must be refundable and the booking must have been made with this key. No sibling tool performs cancellation, so the agent can immediately place it in the toolset.
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 gate ('Only call this when the guest asked for it'), an explicit exclusion ('Non-refundable rates cannot be cancelled online'), and routes to the correct alternative tool for the blocking prerequisite ('this connection has none yet: use request_api_key'). When-to-use, when-not-to, and the prerequisite path are all named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_bookingGet bookingARead-onlyInspect
Status of a booking this key made: awaiting_payment (with pay_url), confirming, confirmed (confirmation number, hotel reference, voucher_url), outcome_pending, failed or cancelled (refund), plus the total, the cancellation terms and the free cancellation deadline. Needs the guest email or the booking_secret from prebook. Needs a Quub API key (this connection has none yet: use request_api_key).
| Name | Required | Description | Default |
|---|---|---|---|
| booking_id | Yes | booking_id from prebook, starts with Q. | |
| guest_email | No | The guest email used for the booking. | |
| booking_secret | No | booking_secret from prebook. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=true, and the description adds real operational context beyond that: the auth requirement (Quub API key), the fact this connection lacks one, the remediation path (request_api_key), and the dependency on prebook output. It does not contradict the read-only annotation.
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?
Purpose is front-loaded and every sentence carries information, but the middle enumeration of status values is dense and parenthetical-heavy, making it feel like a run-on rather than cleanly structured prose.
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 no output schema, the description steps in to describe the returned statuses and fields (pay_url, confirmation number, hotel reference, voucher_url, refund, total, cancellation terms, free cancellation deadline), plus auth and prerequisites. An agent has everything needed to call and interpret it.
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 100%, but the description adds meaning the schema does not: that the caller needs guest_email OR booking_secret even though the schema marks only booking_id as required, and it ties booking_secret/booking_id back to prebook. This resolves a genuine ambiguity in the required-parameter list.
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+resource: retrieves the status of a booking created by this key, and enumerates the concrete return states (awaiting_payment, confirming, confirmed, outcome_pending, failed/cancelled). This clearly distinguishes it from siblings like get_hotel or prebook.
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 prerequisites (needs guest_email or booking_secret from prebook) and routes to a sibling when the key is missing (use request_api_key). It does not explicitly state when-not-to-use it versus cancel_booking, so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_destination_guideGet destination guideARead-onlyInspect
The facts of one destination guide as data, each with its source URL: tourist tax, short-term rental rules, guest registration, parking with a rental car, monthly stays, airport, emergency number (key_facts), the areas to stay in (who each suits, how parking and car access work, distances), the articles, the FAQ and every source.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Destination slug from list_destinations, e.g. "lisbon". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already establishes the safety profile, so the bar is lower, and the description earns credit by disclosing the shape of what comes back (key_facts, areas with suitability/parking/distances, articles, FAQ, and per-fact source URLs). It still omits error behavior for an unknown slug and any auth expectations, keeping it short of the top mark.
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?
It is a single front-loaded sentence that leads with the resource and then enumerates contents, with no filler or redundancy. The enumeration is long, but because there is no output schema it is doing real work rather than padding.
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 no output schema, the description effectively substitutes for one by cataloguing the returned sections and noting each fact carries a source URL. The main remaining gap is failure handling for an invalid slug, which is not covered anywhere.
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?
With a single parameter and 100% schema coverage, the schema already documents slug fully, including its source tool and an example. The description adds nothing about the parameter, so the baseline 3 applies.
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 makes clear this retrieves a single destination guide's content and enumerates what that content comprises (key facts, areas to stay, articles, FAQ, sources), so the verb+resource is unambiguous. It does not, however, position itself against the obvious sibling list_destinations, which is only referenced inside the schema rather than the description.
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?
There is no explicit when-to-use or when-not-to-use guidance; the only routing hint (the slug comes from list_destinations) lives in the input schema, not the description. An agent must infer that this is the drill-down call after list_destinations, with no stated prerequisite or alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_hotelGet hotelARead-onlyInspect
One hotel's details (address, coordinates, stars, rating, photos, description, facilities, check-in and check-out times, parking) and, when dates are given, every bookable room for them: offer_id, room name, board, refundable and the free cancellation deadline, total, per night, taxes included and taxes at the property, and a book_url where a person can fill in the guest form. Prices are the total for the whole stay for one room, in the currency asked (EUR by default), as Nuitee, the booking partner and merchant of record, charges them, with the taxes Nuitee collects included. Taxes and fees paid at the property (often a city or tourist tax) are listed separately in taxes_at_property and are not in the total.
| Name | Required | Description | Default |
|---|---|---|---|
| adults | No | Adults in the one room, 1 to 8. Default 2. | |
| checkin | No | Check-in date, YYYY-MM-DD, today or later. | |
| checkout | No | Check-out date, YYYY-MM-DD, 1 to 30 nights after check-in. | |
| children | No | Ages of children in the room, if any. | |
| currency | No | ISO 4217 currency for the prices, default EUR. | |
| hotel_id | Yes | The hotel id from search_hotels. | |
| nationality | No | Guest nationality, ISO 3166 alpha-2 (prices can depend on it). Default from the client's language, else NL. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint and openWorldHint; the description carries the real behavioral burden. It defines what the prices numerically represent (total for the whole stay, one room, in the requested currency, Nuitee as merchant of record, taxes Nuitee collects included) and separates property-paid taxes into taxes_at_property, plus explains the purpose of book_url. This is exactly the context an agent needs before quoting prices.
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?
Information-dense with no filler, and the returned payload is front-loaded before the pricing caveats. The first sentence is an unusually long run-on with nested parenthetical enumerations, which hurts scannability, but every clause carries substantive meaning.
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 no output schema, the description fully owns explaining the return shape and does so thoroughly (hotel fields, offer fields, pricing, taxes, book_url). Minor gaps remain: it never says what happens if no dates are passed for availability, and it doesn't point to prebook for continuing the booking flow.
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 seven parameters are already documented, which sets the baseline at 3. The description restates the currency default and the fact that prices are per-room totals, but adds no new syntax or constraint detail for adults, children, dates, or nationality beyond what the schema already provides.
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+resource ('One hotel's details') and enumerates the exact fields returned, including room offers when dates are supplied. It is distinguishable in substance from search_hotels and the booking siblings, though it never names an alternative 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?
Usage is only implied by the conditional clause 'when dates are given, every bookable room for them', which hints at the two operating modes. There is no explicit guidance on when to call this versus search_hotels (to find hotel_id) or prebook (to obtain a booking token), so the agent must infer the workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_destinationsList destination guidesARead-onlyInspect
The destinations Quub has a sourced guide for (slug, name, country, one line, last fact check, guide URL). Hotels can be searched anywhere, not only in these. Optional q filters by name or country.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Filter by name, country or slug, e.g. "Spain". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=true; the description goes further by disclosing the response shape (slug, name, country, one line, last fact check, guide URL), which matters since there is no output schema. It omits pagination/result-count behavior, but for a small reference list that is a minor gap.
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 tight sentences with the resource definition front-loaded, then the hotel caveat, then the parameter note. The parenthetical field list is dense but earns its place by standing in for a missing output schema.
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 zero-required-parameter read tool with no output schema, the description covers what is returned, the one optional filter, and the key scope caveat about hotels. Only pagination or ordering behavior is left unspecified.
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 100%, so the baseline is 3. The description adds that q is optional and filters by name or country, but it drops 'slug', which the schema explicitly supports — a small loss of precision rather than added meaning.
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 names the resource (destination guides Quub has sourced) and enumerates the returned fields, so the agent knows exactly what this lists versus get_destination_guide (singular fetch). It never states the verb 'list' explicitly, relying on the name/title, but the scope is unmistakable.
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?
'Hotels can be searched anywhere, not only in these' is an explicit exclusion that steers the agent away from treating this as a hotel inventory filter, implicitly routing hotel queries to search_hotels. It stops short of naming the sibling or stating when to prefer get_destination_guide for a single entry.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prebookPrebook a roomAIdempotentInspect
Holds one room (an offer_id from search_hotels or get_hotel) with the partner for the named guest and returns booking_id, booking_secret (shown once), the confirmed total (price_changed and previous_total when the hotel repriced it), the cancellation terms and pay_url. Nothing is ever charged by a tool: the person named as guest pays on the pay_url page, Nuitee's payment form, and the booking exists only after that payment. Give the guest pay_url and tell them the total and the cancellation terms; if price_changed is true, say so. The guest's name must match the ID shown at check-in; email and phone with country code are required. Send an idempotency_key to make a retry safe. Needs a Quub API key (this connection has none yet: use request_api_key).
| Name | Required | Description | Default |
|---|---|---|---|
| adults | No | Adults in the one room, 1 to 8. Default 2. | |
| checkin | Yes | Check-in date, YYYY-MM-DD, today or later. | |
| remarks | No | Special requests for the hotel, not guaranteed. | |
| checkout | Yes | Check-out date, YYYY-MM-DD, 1 to 30 nights after check-in. | |
| currency | No | ISO 4217 currency for the prices, default EUR. | |
| hotel_id | Yes | The hotel id the offer belongs to. | |
| offer_id | Yes | offer_id from search_hotels or get_hotel, for these dates and adults. | |
| guest_email | Yes | The confirmation goes here; the guest needs it to cancel. | |
| guest_phone | Yes | With country code, e.g. +31 6 1234 5678. | |
| nationality | No | Guest nationality, ISO 3166 alpha-2 (prices can depend on it). Default from the client's language, else NL. | |
| expected_total | No | The total you saw for this offer, so a change is flagged. | |
| guest_last_name | Yes | As on the ID shown at check-in. | |
| idempotency_key | No | Any unique string; the same key returns the same booking instead of a second one. | |
| guest_first_name | Yes | As on the ID shown at check-in. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the mutation/idempotency profile, but the description carries much more: nothing is charged by any tool, the booking exists only after payment on Nuitee's form, booking_secret is shown once, price_changed flags repricing, and idempotency_key makes retries safe. These are real behavioral traits beyond the structured hints.
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-loads the core action and return values, then moves to guest-facing instructions, with no filler sentences. It is dense and slightly long, but each clause (repricing, cancellation terms, API key) carries actionable information.
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 14-parameter mutation with no output schema, the description adequately explains what is returned (booking_id, booking_secret, total, price_changed, cancellation terms, pay_url) and the auth prerequisite, so an agent has everything needed to call it and act on the result.
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 schema already documents dates, nationality defaults, currency, and idempotency semantics. The description largely restates the critical constraints (guest name matching the ID, phone with country code, sending an idempotency key) rather than adding new format or edge-case detail, so 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?
States a specific verb and resource ('Holds one room ... with the partner for the named guest') and names where the offer_id comes from (search_hotels, get_hotel), which cleanly separates it from those exploration siblings. An agent can identify this as the committing step of the booking flow without opening the 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 clear sequencing context — this follows search_hotels/get_hotel, and the guest pays on pay_url rather than through the tool — plus a concrete fallback (request_api_key) when the connection lacks a key. It never states an explicit when-not or a named alternative for the booking step (e.g., vs cancel_booking), so it stops short of 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_api_keyRequest an API keyAInspect
Sends an email with a one-time link to a free Quub API key. The owner of the address opens the link, sees the key once and adds it to this connector (Authorization: Bearer quub_..., or ?key=quub_... on the server URL). A key is needed for prebook, get_booking and cancel_booking and raises the search limits. Bookings made with a key carry an 8 percent margin. Only send it to an address the person gave you for this.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | Where the link goes. | ||
| label | No | A name for the key, e.g. the agent or app. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false and openWorldHint=true; the description adds the externally visible side effect (an email is sent), the one-time/link-shown-once semantics, how the caller later authenticates with the key, and a commercial consequence (8 percent margin on bookings made with a key). That is substantial behavior beyond the 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?
A single tight paragraph with the core action front-loaded, followed by the follow-up flow, prerequisites, cost implication, and safety constraint in descending priority. No sentence is filler.
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 no output schema, the description still conveys what happens after the call (email sent, key revealed once to the recipient, not returned here) and the downstream auth format. Minor gaps remain, such as rate limits or delivery failure behavior, but the agent has enough to invoke it correctly.
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 both 'email' and 'label' are already documented in the schema ('Where the link goes.', 'A name for the key'). The description only implicitly clarifies that email must be the address owner's, adding little 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?
Opens with a concrete verb and effect: 'Sends an email with a one-time link to a free Quub API key.' The resource (API key) and mechanism (emailed one-time link) are unambiguous and cannot be confused with any sibling such as search_hotels or prebook.
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?
States the trigger condition explicitly: a key is needed for prebook, get_booking and cancel_booking and raises search limits, naming the exact sibling tools that depend on it. It also gives a consent constraint ('Only send it to an address the person gave you for this'), which functions as a when-not rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_hotelsSearch hotelsARead-onlyInspect
Live hotel prices for a place and dates. place can be a city, region, island, airport or landmark name anywhere in the world, a Quub destination slug (see list_destinations) or a Google place id. Returns up to limit hotels, cheapest first (or best rated): id, name, stars, guest rating (0 to 10) and review count, coordinates, photo, area or distance from the centre, the cheapest room with its total, board, refund rule and free cancellation deadline, its offer_id for prebook, and hotel_url / book_url pages a person can open. Prices are the total for the whole stay for one room, in the currency asked (EUR by default), as Nuitee, the booking partner and merchant of record, charges them, with the taxes Nuitee collects included. Taxes and fees paid at the property (often a city or tourist tax) are listed separately in taxes_at_property and are not in the total.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | price (cheapest total first, default) or rating. | |
| limit | No | How many hotels, 1 to 60. Default 20. | |
| place | Yes | Where: "Lisbon", "Kotor, Montenegro", "lisbon" (slug) or a Google place id. | |
| adults | No | Adults in the one room, 1 to 8. Default 2. | |
| checkin | Yes | Check-in date, YYYY-MM-DD, today or later. | |
| checkout | Yes | Check-out date, YYYY-MM-DD, 1 to 30 nights after check-in. | |
| children | No | Ages of children in the room, if any. | |
| currency | No | ISO 4217 currency for the prices, default EUR. | |
| nationality | No | Guest nationality, ISO 3166 alpha-2 (prices can depend on it). Default from the client's language, else NL. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld, but the description adds substantial behavioral context beyond them: prices are whole-stay totals for one room, in the requested currency, charged by Nuitee as merchant of record, with Nuitee-collected taxes included and property taxes listed separately. That pricing/merchant semantics materially affects interpretation of results.
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, then result fields, then pricing semantics. Dense but each clause carries real content; the pricing/merchant paragraph is long but earns its place given there is no output schema.
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 no output schema, the description fully enumerates the returned fields (id, name, stars, guest rating, coordinates, area/distance, cheapest room with total, board, refund rule, free-cancellation deadline, offer_id, and booking URLs) plus the pricing basis, leaving nothing essential ambiguous 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 coverage is 100%, so baseline is 3. The description still adds meaning by widening 'place' beyond the schema's examples to city, region, island, airport, or landmark anywhere in the world, and by clarifying that results are capped at limit and ordered via sort (cheapest or best rated).
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?
Opens with a specific verb+resource+scope: 'Live hotel prices for a place and dates.' It is immediately distinguishable from siblings like get_hotel, list_destinations, and prebook, and it explicitly names two of them in routing roles.
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?
Routes the agent to siblings: slugs come from list_destinations, and the returned offer_id is the input for prebook. This gives clear context for when to use this tool and what to do with its output, though it never states explicit exclusions or when not to use it.
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.
8 tool updates
- First observed
cancel_booking - First observed
get_booking - First observed
get_destination_guide - First observed
get_hotel - First observed
list_destinations - First observed
prebook - First observed
request_api_key - First observed
search_hotels
Related MCP Connectors
Read-only Asian hotel search and guides with canonical sources and non-live rates.
Search hotels and get hotel details. Search-only; book on hotely.travel.
Search and book 3M+ hotels in 200+ countries. Agents pay per reservation in USDC on Base over x402. Hosted, no auth.
Live hotel rates worldwide: search stays, property detail, all-in room prices, human phone desk.
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.1241428 npm2MIT

Dida Hotel MCPofficial
AlicenseNot gradedqualityDmaintenanceEnables AI agents to search and book hotels globally with real-time pricing and inventory from over 2 million properties.46MIT- AlicenseAqualityDmaintenanceEnables AI agents to search, browse, and book hotels from a database of 2 million properties worldwide. Provides comprehensive hotel search capabilities with location lookup, filtering by amenities, detailed property information, and integrated booking functionality.69 npm1ISC
- AlicenseAqualityAmaintenanceEnables searching CuddlyNest hotels and retrieving listing details, including live room options, prices, availability, and cancellation policies.259 npm1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.