Pilot Hotel Search
Server Details
Search hotels worldwide, compare total-stay prices and cancellation terms, then book on Pilot.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP ยท MCP 2025-11-25
- URL
TDQS
Scored across 3 tools
search_hotels, get_hotel_details, and get_room_rates_for_hotel each target a distinct stage: discovery, static content, and rate offers. Some overlap exists because search results include nightly prices while room rates provide detailed pricing, but descriptions make the boundary clear.
All tools use snake_case and follow a verb_noun pattern (search_hotels, get_hotel_details, get_room_rates_for_hotel). The only minor deviation is the redundant 'for_hotel' suffix in get_room_rates_for_hotel, but the convention remains predictable.
Three tools precisely cover the read-only hotel search workflow: search, details, and rates. Given booking is intentionally excluded, the count is well-scoped with no redundant tools.
The surface covers search by location/dates, static hotel details, room rates, and provides booking URLs for the excluded booking step. Minor gaps like reviews or destination browsing are non-critical for the stated search purpose.
Available Tools
3 toolsget_hotel_detailsGet hotel detailsARead-onlyInspect
Get static details (description, amenities, photos, address) for a hotel id returned by search_hotels.
| Name | Required | Description | Default |
|---|---|---|---|
| hotel_id | Yes | Hotel id from search_hotels |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered structurally. The description adds the useful trait that the returned data is static (cached catalog-style content), but says nothing about error behavior for invalid ids, latency, 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?
A single sentence with the payload fields front-loaded and the provenance constraint appended. No filler or redundancy.
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 one-parameter read tool with annotations and no output schema, this is nearly complete: it names the return fields so the agent knows what it gets. It stops short only on failure modes and the search-then-detail workflow being spelled out explicitly.
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 the single parameter is already documented as 'Hotel id from search_hotels'. The description repeats the same provenance rather than adding format, validation, or failure behavior, so the schema carries the weight.
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 (get) and resource (hotel details), and enumerates what is returned: description, amenities, photos, address. It also anchors the tool in the workflow by noting the id comes from search_hotels, which distinguishes it from search_hotels and get_room_rates_for_hotel without naming them 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 implied rather than stated: the agent must infer it should call search_hotels first, then this tool, and that rate information belongs to get_room_rates_for_hotel. The word 'static' hints at the boundary with the rates sibling, but no explicit when/when-not guidance or alternative is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_room_rates_for_hotelGet room ratesARead-onlyInspect
Get room rates for a hotel id from search_hotels. Each offer includes a price, board type and refundability. Booking is not available through this connector; send the user to Pilot to book.
| Name | Required | Description | Default |
|---|---|---|---|
| guests | No | Number of guests | |
| check_in | No | Override check-in, YYYY-MM-DD | |
| hotel_id | Yes | Hotel id from search_hotels | |
| check_out | No | Override check-out, YYYY-MM-DD |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false. The description adds useful behavioral context beyond that: each offer contains a price, board type, and refundability, and booking is unavailable in this connector. It does not cover rate limits or auth requirements, but those are less critical here.
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 short sentences, front-loaded with the core purpose. Every sentence carries operational value: what the tool returns, and the booking limitation. No 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?
No output schema exists, so the description usefully explains the offer shape (price, board type, refundability) and booking limitation. It still leaves optional date/guest override semantics to the schema, but overall the definition is sufficient for calling the tool 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 the schema already documents all four parameters. The description only restates that hotel_id comes from search_hotels and adds no meaning for guests, check_in, or check_out 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?
States a specific verb and resource: 'Get room rates for a hotel id'. This is clearly distinguishable from sibling search_hotels and get_hotel_details in substance, but the description itself does not explicitly name what it is not or contrast with those siblings.
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 prerequisite: the hotel_id comes from search_hotels. It also states a usage boundary and alternative for booking: 'Booking is not available through this connector; send the user to Pilot to book.' However, it does not explicitly compare this tool against get_hotel_details.
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
Search bookable hotels by location and dates. Returns hotels with nightly prices, photos, coordinates, a url linking to the hotel on Pilot, and an opaque id to pass to get_hotel_details and get_rates. Booking is not available through this connector, so link the user to a hotel's url when they want to book. Narrow with the rating, amenity and radius filters rather than requesting a large limit, and page with offset using next_offset from the previous result.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum hotels to return | |
| rooms | No | Rooms required | |
| guests | No | Number of adults | |
| offset | No | Hotels to skip, for paging | |
| check_in | Yes | Check-in date, YYYY-MM-DD | |
| currency | No | ISO-4217 currency for returned prices | USD |
| location | Yes | City, address, or place name | |
| ai_search | No | Free-text preference, e.g. 'boutique hotel near the old town'. Ignored when it matches no inventory. | |
| check_out | Yes | Check-out date, YYYY-MM-DD | |
| amenity_ids | No | Supplier facility ids the hotel must offer | |
| children_ages | No | Ages of children sharing the room | |
| radius_meters | No | Restrict to this radius around the location | |
| min_star_rating | No | Only hotels at or above this star rating | |
| min_guest_rating | No | Only hotels at or above this guest review score, out of 10 | |
| guest_nationality | No | ISO-2 country of the guest; affects rate eligibility | US |
| property_type_ids | No | Supplier hotel-type ids to restrict to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/non-destructive, so the safety profile is covered. The description adds real behavioral context beyond that: booking is unavailable through the connector (forcing the url hand-off), results are paged via next_offset, and broad limit requests are discouraged. It does not discuss rate limits, caching, or result-ordering, so it falls short of a 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?
Four sentences, front-loaded with purpose and return payload, then constraints, then tactical guidance. No restatement of the title and no filler; each sentence either routes the agent or prevents a misuse.
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?
Despite 16 parameters and no output schema, the description covers return contents, the id hand-off contract, the booking limitation, and pagination. Nothing an agent needs to select or correctly invoke this tool 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%, so the baseline is 3. The description adds genuine strategy beyond the schema by telling the agent which parameters to prefer for narrowing (rating, amenity, radius) and how offset/next_offset interact for paging, which the schema itself only labels neutrally.
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+scope: 'Search bookable hotels by location and dates,' and immediately enumerates the returned payload (nightly prices, photos, coordinates, url, opaque id). This clearly separates it from the sibling detail and rate tools, which consume the id this tool emits.
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?
Explicitly routes the agent: pass the opaque id to get_hotel_details and get_rates, narrow with rating/amenity/radius filters instead of a large limit, and page with offset using next_offset. It also sets an exclusion boundary by declaring booking is not available here and instructing the agent to link the user to the hotel url instead.
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.
3 tool updates
- First observed
get_hotel_details - First observed
get_room_rates_for_hotel - First observed
search_hotels
Related MCP Connectors
Search hotels worldwide, compare live room rates, and create booking payment links.
1Live hotel rates worldwide: search stays, property detail, all-in room prices, human phone desk.
Search and book flights and hotels: hundreds of airlines, plus bookable hotel rates.
Google Hotels prices for any dates and guests, ratings, amenities and every booking site's price.
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
- AlicenseAqualityBmaintenanceTravel award search: compare cash vs points on hotels, flights & cars, cents-per-point, and book319MIT

DIDA Hotel MCPofficial
AlicenseNot gradedqualityBmaintenanceEnables AI agents to search, compare, and book hotels with real-time pricing and availability, supporting multiple location types, star ratings, and price filters.12MIT- AlicenseAqualityAmaintenanceSearches hotels and vacation rentals with nightly and total rates, ratings, amenities, and detailed property information through natural language in any MCP client.195 npm46 PyPI2MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.