MyService Hotels
Server Details
AI hotel search and booking: millions of properties, 85,000+ cities, live rates.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 10 tools
The set has three hotel-search tools: search_hotels (city/region), search_hotels_by_geo (near place/coordinate with radius), and get_nearby_hotels (near place/coordinate without radius). The latter two are nearly redundant, differing only in the radius parameter and country_code, which could cause misselection. Other tools are distinct, but the hotel-search overlap is notable.
All tools use snake_case and follow a verb-first pattern: book_on_myservice, compare_hotels, get_featured_cities, get_hotel_details, get_live_rates, get_nearby_hotels, get_nearby_places, search_hotels, search_hotels_by_geo. The pattern is predictable throughout, with search_hotels_by_geo as a readable variant.
10 tools is well-scoped for a hotel search and booking assistant. Each tool covers a distinct capability (search, details, rates, compare, nearby places, booking link) without excessive granularity.
The surface covers the core workflow: search (multiple modes), details, live rates, compare, nearby places, and booking link creation. Minor gaps exist, such as no direct way to search by hotel name, but the lifecycle is largely complete for an external booking model.
Available Tools
10 toolsbook_on_myserviceARead-onlyIdempotentInspect
Create a link to book a hotel on myservice.pk. The link opens MyService AI with the hotel, dates and party filled in; the user signs in, confirms the live price, enters guest details and pays there. This tool books, holds and charges nothing. Inputs: hotel id from search results, check-in and check-out (YYYY-MM-DD), adults, children's ages, number of rooms, and optionally the chosen room type. Returns booking_url.
| Name | Required | Description | Default |
|---|---|---|---|
| rooms | No | ||
| adults | No | ||
| checkin | Yes | ||
| checkout | Yes | ||
| hotel_id | Yes | ||
| room_type | No | ||
| children_ages | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and destructiveHint=false; the description reinforces this with the unusually useful 'This tool books, holds and charges nothing', which tells the agent no side effect or commitment occurs. It also explains the downstream handoff (sign in, confirm live price, pay) and the return value. It stops short of covering failure modes or rate limits.
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?
Four sentences, front-loaded with the action and scope, followed by the handoff mechanics, the no-charge disclaimer, and the input list. Every sentence carries information, though the handoff sentence is long and could be split for easier scanning.
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 7-parameter tool with no output schema, the description covers the essential inputs and states the single return value ('booking_url'), so an agent knows what comes back. It omits error behavior and any note on what happens if the hotel/dates are invalid, which would complete the picture.
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 0% schema description coverage, the description carries the full burden and mostly succeeds: it enumerates hotel id (sourced from search results), check-in/check-out with the YYYY-MM-DD format, adults, children's ages, rooms, and optional room type. It does not spell out that children_ages is an array of ages or note the defaults (rooms=1, adults=2), leaving minor gaps.
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 ('Create a link to book a hotel on myservice.pk') and immediately clarifies the scope: it produces a booking URL rather than a reservation. This clearly distinguishes it from the read-only sibling tools (search_hotels, get_live_rates, get_hotel_details) that supply its inputs.
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?
The description gives clear context for when this applies: after a hotel is selected, the link pre-fills hotel/dates/party and the user completes sign-in, price confirmation and payment off-tool. It also states the prerequisite that hotel_id comes from search results. It does not, however, explicitly name which sibling to call first or exclude any alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_hotelsARead-onlyIdempotentInspect
Compare 2 to 5 hotels side by side for given dates: live price, stars, rating, amenities, free cancellation, breakfast, check-in and check-out times, and key differences.
| Name | Required | Description | Default |
|---|---|---|---|
| adults | No | ||
| checkin | Yes | ||
| checkout | Yes | ||
| children | No | ||
| currency | No | USD | |
| hotel_ids | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description usefully adds that pricing is 'live' (real-time fetch) and that the comparison batch is capped at 2-5 hotels, but it says nothing about partial failures, unknown hotel ids, or rate/availability limits.
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 front-loaded sentence: verb and scope first, then the compared dimensions. The attribute list is long but each item is a distinct output field the caller is deciding on, so every token earns its place.
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 does a fair job of previewing the return (price, stars, rating, amenities, cancellation, breakfast, check-in/out, differences). However, for a 6-parameter tool with zero schema descriptions, the guest-composition and currency inputs remain unexplained, leaving a gap an agent could stumble on.
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 0% across 6 parameters, so the description carries the burden and only partially meets it: it implies hotel_ids ('2 to 5 hotels') and the date inputs ('for given dates') but never mentions adults, children, or currency, which are the parameters most likely to be mis-set. The occupancy and currency defaults are left entirely to the schema titles.
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 (compare) and resource (hotels) plus an explicit scope ('2 to 5 hotels side by side for given dates'), which naturally separates it from sibling single-item tools like get_hotel_details and from discovery tools like search_hotels. It also enumerates exactly which attributes are compared, so an agent knows what it gets back.
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?
The '2 to 5 hotels' constraint and 'for given dates' imply the intended context (side-by-side evaluation of already-known hotels), but no alternative is named and no when-not condition is given. An agent must infer that this is the follow-up to search_hotels rather than a replacement for it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_featured_citiesBRead-onlyIdempotentInspect
Popular destination cities with hotel counts, images and highlights.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is fully covered structurally. The description adds the useful detail that results include hotel counts, images and highlights, but says nothing about ordering, pagination, or locale scoping.
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 front-loaded sentence with no filler, which is appropriate for a parameterless listing tool. It is arguably a touch sparse given it is the only prose an agent gets, but nothing 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 no parameters and no output schema, the description's brief enumeration of returned content is the main source of return-value information, and it is adequate. The only real gap is the absence of any routing guidance against sibling listing tools.
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?
The tool takes zero parameters, so the schema (100% coverage) leaves nothing to document. Baseline 4 applies; the description adds no parameter meaning because none exists.
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 a specific resource (popular destination cities) and enumerates the returned payload (hotel counts, images, highlights), so the agent knows what it gets. It does not explicitly distinguish itself from the sibling get_featured_hotels, though the noun 'cities' does most of that work.
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 statement of when to call this versus get_featured_hotels, get_nearby_places, or search_hotels. The only hint at usage is the word 'featured', which the agent must infer means editorial/browse discovery rather than search.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_featured_hotelsCRead-onlyIdempotentInspect
A curated selection of well-rated hotels across destinations.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds only the notion that results are curated and well-rated, which is mild behavioral context. It says nothing about result count, ordering, or what happens when the limit is exceeded.
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 short sentence with no filler and no redundancy. It is appropriately sized for a one-parameter read tool, though it is a sentence fragment rather than a front-loaded statement of action and scope.
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?
No output schema exists, and the description does not describe the return shape, the number of hotels returned, or how the limit interacts with the curated set. For a discovery tool competing with several hotel-returning siblings, that leaves the agent guessing about both behavior and output.
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?
There is one parameter (limit, default 20) with 0% schema description coverage, so the description carries the full burden — and it never mentions limit, its default, or whether it caps the returned set. With a single undocumented param the description should have compensated, and it does not.
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 ('hotels') and a qualifier ('featured/curated, well-rated'), so an agent can guess it returns a curated hotel list. But it is a noun phrase with no verb ('returns', 'lists') and no differentiation from siblings like search_hotels or get_nearby_hotels, which also return hotels. Purpose is inferable but not stated.
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 guidance on when to call this versus search_hotels, get_nearby_hotels, compare_hotels, or get_hotel_details. 'Curated' hints at editorial selection rather than query-driven search, but the agent is left to infer that distinction. No exclusions or prerequisites are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_hotel_detailsARead-onlyIdempotentInspect
Full details for one hotel by id or slug: description, amenities, check-in and check-out times, policies, star rating, review summary, room types, photos and address.
| Name | Required | Description | Default |
|---|---|---|---|
| include_rooms | No | ||
| hotel_identifier | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety and idempotency profile is covered. The description adds the content scope (what fields come back) but nothing about auth requirements, rate limits, or whether a missing identifier errors versus returns null.
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 front-loaded sentence enumerating the returned payload with zero filler. Every clause adds information an agent can use.
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 correctly compensates by enumerating the returned fields (description, amenities, times, policies, rating, review summary, room types, photos, address). The remaining gap is the lack of sibling routing guidance and any note on the include_rooms toggle.
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 0% for both parameters, so the description has to carry the load; it does clarify that hotel_identifier accepts an id or a slug, which is genuinely useful. However, include_rooms (default true) is never explained — the mention of 'room types' among returned fields only weakly implies its effect.
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 ('Full details for one hotel') and narrows retrieval to 'by id or slug', which separates it from the search_* siblings that take queries. It does not directly name which sibling to prefer, but the single-entity scope is unambiguous.
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: the description makes clear this is a single-hotel lookup keyed by identifier, but it never states when to reach for this instead of search_hotels, get_nearby_hotels, compare_hotels, or get_live_rates. No prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_live_ratesCRead-onlyIdempotentInspect
Live room rates and availability for one hotel and date range: price, room type, meal plan, cancellation policy and payment terms for each rate. For several rooms, rooms takes one entry per room, and each rate then covers the whole party.
| Name | Required | Description | Default |
|---|---|---|---|
| rooms | No | ||
| adults | No | ||
| checkin | No | ||
| checkout | No | ||
| children | No | ||
| currency | No | USD | |
| hotel_id | No | ||
| residency | No | us | |
| can_render_3ds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and openWorldHint=true, so the safety profile is covered. The description usefully adds what each rate contains and how rates expand across a multi-room party, but says nothing about result freshness/latency for live external rates — a relevant behavioral trait for an open-world 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?
Two tight sentences, front-loaded with the resource and return content, then the multi-room nuance. The second sentence is slightly convoluted but every clause carries 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?
With 9 parameters at 0% schema coverage and no output schema, the description should compensate far more than it does; documenting one of nine parameters leaves an agent guessing about date formats, guest input shape and residency/currency semantics.
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 0% across 9 parameters, so the description carries the full burden. It clarifies only the `rooms` parameter (one entry per room, rate covers whole party) and leaves checkin/checkout formats, children, currency, residency, hotel_id and the opaque can_render_3ds completely unexplained.
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 clear verb+resource ('live room rates and availability') and even enumerates the returned fields (price, room type, meal plan, cancellation policy, payment terms). It does not distinguish itself from siblings like search_hotels or compare_hotels, so it stops short of a 5.
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 guidance relative to book_on_myservice, compare_hotels or the search_* siblings, nor any stated precondition (e.g. that hotel_id and dates are needed for a meaningful result). The multi-room sentence implies a usage scenario but never says when this tool should be chosen over the alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_nearby_hotelsBRead-onlyIdempotentInspect
List hotels near a named place or coordinate, with dates defaulting to tomorrow for three nights. Returns hotels with live prices and distance.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | ||
| lng | No | ||
| limit | No | ||
| place | No | ||
| radius | No | ||
| currency | No | USD | |
| residency | No | us | |
| country_code | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, open-world), so the bar is lower. The description still adds real behavioral context beyond structured data: the implicit stay dates default to tomorrow for three nights, and results carry live prices and distance. It omits pagination/limit behavior, but this is solid added context.
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 tight sentences with no filler, front-loaded with the core action and followed by the return summary. Efficient, though the second sentence could be slightly denser.
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 helpfully summarizes return values, and since no parameters are required the tool is callable as-is. However, for an 8-parameter tool with zero schema documentation, the description leaves too many knobs (radius units, currency, residency, limit) unexplained.
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 0% across 8 parameters, so the description must compensate and largely does not. It hints at place and coordinate inputs but says nothing about limit, radius, currency, residency, or country_code, leaving most parameters semantically opaque.
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 hotels near a named place or coordinate') and names the inputs that drive the search. It is clear on its own, but it does not differentiate itself from the sibling search_hotels_by_geo, which sounds like it does the same geo-based lookup.
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 and no alternative tool is named, despite several plausible siblings (search_hotels, search_hotels_by_geo, get_nearby_places). Usage is only implied by the word 'nearby'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_nearby_placesARead-onlyIdempotentInspect
Attractions, restaurants, airports and landmarks near a hotel, nearest first, with straight-line distance in km. place_type filters by kind.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| hotel_id | Yes | ||
| page_size | No | ||
| place_type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and open-world behaviour, so the safety profile is covered. The description adds genuine value beyond that: results are nearest-first and distances are straight-line kilometres, which tells the agent how to interpret and order the output.
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 tight sentences that lead with the resource and ordering, then the one parameter that needs explanation. No filler, no restatement of the title or annotations.
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 four-parameter, no-output-schema tool this is partially complete: the agent knows what comes back and how it is sorted, but is left to guess the accepted place_type vocabulary, pagination limits, and behaviour when a hotel has no nearby places.
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 0%, so the description must compensate, and it only partly does: it explains that place_type filters by kind and that hotel_id anchors the search, but never enumerates valid place_type values and says nothing about page/page_size pagination.
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?
It states a specific verb (implicit: retrieve) plus an enumerated resource set — attractions, restaurants, airports, landmarks — and the ordering/distance semantics. It implicitly distinguishes itself from sibling get_nearby_hotels by excluding hotels from the type list, but never names or contrasts that sibling 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?
There is no when-to-use guidance, no stated prerequisites (e.g. that hotel_id must come from get_hotel_details or search_hotels), and no mention of when to prefer search_hotels_by_geo or get_nearby_hotels. Usage is only weakly implied by the phrase 'near a hotel'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_hotelsARead-onlyIdempotentInspect
Search hotels in a city or region with live prices and availability. Filters: price range, star rating, property type, free cancellation, breakfast, and amenities (pool, parking, spa, wifi, fitness, beach, kitchen, jacuzzi, balcony, business, kids, skiing, pet-friendly, ev-charger). For several rooms, rooms takes one entry per room with its adults and children's ages, and prices then cover the whole party. Returns a paginated list of hotels with prices, ratings and amenities.
| Name | Required | Description | Default |
|---|---|---|---|
| city | Yes | ||
| page | No | ||
| sort | No | recommended | |
| board | No | ||
| rooms | No | ||
| stars | No | ||
| adults | No | ||
| balcony | No | ||
| checkin | Yes | ||
| bed_type | No | ||
| checkout | Yes | ||
| children | No | ||
| currency | No | USD | |
| language | No | en | |
| amenities | No | ||
| breakfast | No | ||
| club_room | No | ||
| max_price | No | ||
| min_price | No | ||
| page_size | No | ||
| region_id | No | ||
| residency | No | us | |
| room_view | No | ||
| family_room | No | ||
| non_smoking | No | ||
| min_bedrooms | No | ||
| pay_at_hotel | No | ||
| property_type | No | ||
| room_capacity | No | ||
| no_card_needed | No | ||
| taxes_included | No | ||
| private_bathroom | No | ||
| free_cancellation | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds useful behavior beyond that: results are live-priced, the response is a paginated list with prices/ratings/amenities, and per-room entries change what the returned prices cover.
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 purpose and scoping, then filters, then the multi-room special case, then the return shape. The amenities parenthetical is long but each item is a real accepted value, so little waste.
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 33-parameter search with no output schema and zero schema descriptions, the description covers the headline filters and return shape, but leaves a large set of filters and all pagination/sort/currency semantics unexplained. Adequate, but an agent will guess on many parameters.
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 0% across 33 parameters, so the description must carry the load. It helps with the highest-value ones (price range, stars, property type, free cancellation, breakfast, a long but partial amenity list) and explains the non-obvious `rooms` semantics, but many parameters (sort, page_size, currency, residency, min_bedrooms, room_capacity, club_room, taxes_included, pay_at_hotel, no_card_needed, bed_type, room_view, region_id) remain undefined in both schema and prose.
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 ('Search hotels in a city or region') plus the distinguishing capability of live prices and availability. It does not name or distinguish itself from siblings like search_hotels_by_geo or get_hotel_details, which matters given the crowded hotel tool family.
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 implied by 'in a city or region' and by the multi-room pricing note, but the description never says when to pick this over search_hotels_by_geo, get_nearby_hotels, or get_hotel_details. No exclusions or prerequisites are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_hotels_by_geoBRead-onlyIdempotentInspect
Search hotels around a named place (place, e.g. "Shibuya Station", "Times Square") or a coordinate (lat/lng), within a radius in metres (max 70,000). country_code narrows an ambiguous place name. Dates default to tomorrow for three nights. Returns hotels with live prices and distance.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | ||
| lng | No | ||
| sort | No | recommended | |
| board | No | ||
| limit | No | ||
| place | No | ||
| stars | No | ||
| adults | No | ||
| radius | No | ||
| balcony | No | ||
| checkin | No | ||
| bed_type | No | ||
| checkout | No | ||
| children | No | ||
| currency | No | USD | |
| language | No | en | |
| amenities | No | ||
| breakfast | No | ||
| club_room | No | ||
| max_price | No | ||
| min_price | No | ||
| residency | No | us | |
| room_view | No | ||
| family_room | No | ||
| non_smoking | No | ||
| country_code | No | ||
| min_bedrooms | No | ||
| pay_at_hotel | No | ||
| property_type | No | ||
| room_capacity | No | ||
| no_card_needed | No | ||
| taxes_included | No | ||
| private_bathroom | No | ||
| free_cancellation | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the safety profile (readOnly, openWorld, idempotent, non-destructive), and the description adds genuinely new behavior: the 70,000 m radius ceiling, the tomorrow-plus-three-nights date default, and that results carry live prices and distance. It does not mention pagination or how the radius interacts with result ordering, so it is not fully complete.
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?
Four front-loaded sentences, each carrying new information: primary anchor, disambiguation, date defaults, and return shape. It is dense without being padded, though the inline examples consume some space relative to the small amount of parameter detail conveyed.
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 34-parameter tool with 0% schema description coverage and no output schema, the description covers well under a quarter of the surface. An agent calling it would still be guessing at the meaning and valid values of most filters, and the return payload is only characterized as 'hotels with live prices and distance'.
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 0% across 34 parameters, so the description must carry the semantic burden but documents only place, lat/lng, country_code, radius and the date defaults. Filters that materially change results (sort, limit, stars, board, adults/children, currency, max/min price, property_type, amenities, free_cancellation, etc.) are left entirely unexplained.
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 (search hotels) plus the anchoring mode (named place or lat/lng coordinate with radius). It is distinguishable from search_hotels and get_nearby_hotels only implicitly through the geo-anchoring phrasing, so it stops short of a 5.
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?
It gives partial routing guidance (place name vs coordinates, country_code to disambiguate, radius cap) and default behavior for dates. It never states when to prefer this over search_hotels or get_nearby_hotels, so the usage guidance is implied rather than explicit.
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.
10 tool updates
- First observed
book_on_myservice - First observed
compare_hotels - First observed
get_featured_cities - First observed
get_featured_hotels - First observed
get_hotel_details - First observed
get_live_rates - First observed
get_nearby_hotels - First observed
get_nearby_places - First observed
search_hotels - First observed
search_hotels_by_geo
Related MCP Connectors
Live hotel rates worldwide: search stays, property detail, all-in room prices, human phone desk.
Book real hotel and resort stays from any AI agent: all-in pricing, hosted Stripe checkout, no key.
Search hotels, get live prices, and check out in chat. Guest search needs no sign-in.
Neutral hotel & stay price comparison for AI agents: live prices from 16+ booking sites. No signup.
Related MCP Servers
AlicenseNot gradedqualityDmaintenanceEnables AI agents to search and book hotels globally with real-time pricing and inventory from over 2 million properties.46MIT- FlicenseNot gradedqualityBmaintenanceAI-powered hotel search and booking for 8,000+ Marriott Bonvoy properties worldwide.-
- 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

RollingGo Hotel MCPofficial
AlicenseNot gradedqualityBmaintenanceEnables AI agents to search, compare, and book hotels worldwide through natural language, with real-time pricing and availability, plus price monitoring and order management.48MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.