RoomExpert
Server Details
Hotel verdicts on eight axes, with every quote cited to its outlet and url.
- Status
- Healthy
- Uptime
- 96.9% over 19 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 5 tools
Each tool maps to a distinct question: search_hotels finds slugs, get_hotel gives the verdict/scores, get_evidence gives the underlying quotes, get_rates gives cash prices, and find_award_stays gives points redemptions. get_hotel and get_evidence both concern a single hotel's quality, and get_rates vs find_award_stays both concern pricing, but the descriptions draw clear lines (scores vs sources, cash vs points).
All five names follow a clean verb_noun snake_case pattern: find_award_stays, get_evidence, get_hotel, get_rates, search_hotels. No style mixing or vague verbs.
Five tools is well-scoped for a hotel research server and each earns its place within a coherent search → verdict → evidence → rates/awards workflow. No redundant or filler tools.
The surface covers lookup, scoring, evidence, live rates and award redemptions, which is a full research lifecycle for a hotel choice. Minor gaps exist (e.g. no direct side-by-side comparison or saved-account handling), but these are workarounds an agent can handle by chaining calls.
Available Tools
5 toolsfind_award_staysFind award staysARead-onlyIdempotentInspect
Lists hotels a given points balance can reach for one night, ranked by how good the redemption is against that program's own norm rather than a flat cents-per-point scale. Fits a traveler who says what they hold, e.g. "I have 300k Hyatt points". The balance is supplied by the caller and is not stored. Only published chart or sampled award prices count; nothing is estimated. Returns a Markdown table of up to limit hotels (name, destination, points, value grade, score), or a sentence saying nothing priced fits the budget.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Default 10, max 25. | |
| points | Yes | Points available for one night. | |
| program | Yes | Loyalty program, e.g. "World of Hyatt", "Hilton Honors", "Marriott Bonvoy". | |
| destination | No | Optional city slug, e.g. "tokyo". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent/no-open-world annotations, the description discloses that only published chart or sampled award prices count with nothing estimated, that the caller's balance is not persisted, and the exact return shape (Markdown table or a no-fit sentence). This is meaningful behavioral context an agent cannot get from 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?
Front-loaded with what the tool does and its ranking logic, then supporting constraints and return format. Mostly tight, though the 'Fits a traveler who...' framing is slightly discursive for a tool definition.
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 covers the return value, the ranking rationale, the price-sourcing constraint, and the caller-supplied balance, so an agent knows exactly what to expect and can call 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 coverage is 100%, so the baseline is 3. The description adds semantics beyond the schema by clarifying that `points` is caller-supplied and not stored, that the balance drives feasibility for one night, and that output is capped at `limit` hotels.
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 verb and resource (lists hotels reachable with a points balance for one night) and states the distinctive ranking method (against the program's own norm rather than flat cents-per-point), which separates it from generic siblings like search_hotels and get_rates.
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 a concrete usage context: the traveler who states a holdings balance, e.g. 'I have 300k Hyatt points', and notes the balance is caller-supplied and not stored. It does not name alternatives (e.g. get_rates or search_hotels) or state when not to use it, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_evidenceGet cited evidenceARead-onlyIdempotentInspect
Returns the cited quotes behind a hotel's scores. Each one carries the outlet that published it, what kind of document it was, and its url. Answers what a hotel is actually like: whether it is quiet, whether the beds are good, whether service holds up. Returns a Markdown list of up to limit quotes (default 12, max 40), spread across the axes unless narrowed to one, each with its outlet, document kind and url. Some hosts are returned as "a guest review" with no name or link. An unknown slug returns near matches; no evidence on an axis is stated as such.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The hotel slug. | |
| limit | No | Quotes to return. Default 12, max 40. | |
| category | No | Narrow to one axis. Omit for a spread across all of them, which is the right default for an open question. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the annotations (readOnly, idempotent, non-destructive, closed world): the Markdown-list return shape, the spread-vs-narrowed behavior across axes, the edge case of unnamed 'a guest review' hosts with no link, near-match behavior on an unknown slug, and the explicit 'no evidence on an axis' case. These are exactly the non-obvious traits an agent needs.
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 purpose and then layers return format and edge cases efficiently. Some repetition of the schema's limit default/max costs it a point, but no sentence is purely 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 carries the return-value burden and does so fully: format (Markdown list), per-item fields (quote, outlet, document kind, url), sizing (limit), and the degraded cases (unnamed hosts, unknown slug, empty axis). Nothing needed to call it 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 coverage is 100%, so the schema already documents all three parameters, including limit defaults and the category enum. The description largely restates these (default 12, max 40, spread when omitted) and only marginally enriches the category choice, making the baseline 3 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: it returns the cited quotes behind a hotel's scores, including outlet, document kind, and url. This is clearly distinct from siblings like get_hotel (scores themselves), get_rates, and search_hotels, so an agent can route 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 concrete use context ('Answers what a hotel is actually like: whether it is quiet, whether the beds are good, whether service holds up') and explicitly says to omit `category` for an open question. It never names an alternative sibling or states when not to use it, 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.
get_hotelGet hotel verdictARead-onlyIdempotentInspect
Returns the RoomExpert verdict for one hotel: overall score, the eight axis scores and what each is based on, how deep the coverage is, the loyalty program, and the award price where a real one exists. Answers "is this hotel any good" and "what is it strong at". Returns Markdown: a score table with one row per axis ("no evidence" where an axis has none), the award line, and the hotel page url. An unknown slug returns up to five near matches. The quotes behind the scores come from get_evidence.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The hotel slug, e.g. "andaz-maui-at-wailea-resort". Lowercase, hyphenated. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), yet the description still adds real behavioral detail: the exact Markdown return shape, the 'no evidence' placeholder for empty axes, and the unknown-slug fallback returning up to five near matches. The degradation path on bad input is the kind of thing an agent cannot 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?
Front-loaded with purpose and return contents, then the failure mode. The second sentence is dense with comma-separated clauses but every clause conveys distinct information; minor padding in 'where a real one exists' and the trailing get_evidence sentence keeps it from a 5.
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?
Although there is no output schema, the description substitutes for it by specifying the Markdown structure, the table rows, the award line, and the URL. Combined with the input fallback behavior, an agent has everything needed to call and read 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 coverage is 100% and the single slug parameter is fully documented with format and an example, so the schema does the heavy lifting. The description only adds the behavioral consequence of a bad slug (near matches), which is useful but not parameter-level syntax guidance. 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 ('Returns the RoomExpert verdict for one hotel') and enumerates exactly what the verdict contains: overall score, eight axis scores and their basis, coverage depth, loyalty program, award price. It is clearly distinguishable from siblings like search_hotels and get_evidence within one sentence.
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?
Frames the use case in the agent's own terms ('Answers "is this hotel any good" and "what is it strong at"') and routes the supporting detail to get_evidence. It does not explicitly state when to prefer search_hotels or get_rates instead, 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_ratesGet live ratesARead-onlyInspect
Returns live rooms and prices for one hotel and a stay window, with a booking link for each. It queries a metered rate supplier and is limited to 12 calls a minute per client, so it fits a traveler who has chosen a hotel rather than browsing several. Booking links are time-limited and expire within minutes. A link opens a checkout the traveler completes with their own details and card; this tool does not reserve, hold or confirm a room. Returns a Markdown table (room, nightly, total, refundability, link). Hotels the supplier does not carry, sold-out dates and bad dates each return a plain sentence saying which; an over-limit call says how many seconds to wait.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The hotel slug. | |
| adults | No | Default 2. | |
| checkin | Yes | YYYY-MM-DD. | |
| checkout | Yes | YYYY-MM-DD. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial behavior beyond the readOnly/openWorld annotations: metered supplier quota with an exact per-minute limit, time-limited booking links that expire in minutes, and an explicit statement that it does not reserve, hold or confirm a room despite handing back checkout links. It even documents per-failure-mode responses (unsupported hotel, sold out, bad dates, over-limit with seconds-to-wait), which no annotation covers.
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 purpose in the first sentence and sequences the operational caveats (rate limit, expiry, no reservation) afterward. It is longer than most definitions, but nearly every clause carries decision-relevant information; only the phrasing is slightly dense, not padded.
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 and no annotation detail on returns, the description compensates fully: it specifies the Markdown table columns (room, nightly, total, refundability, link) and describes failure outputs as plain sentences. An agent has everything needed to call it and interpret 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 slug, checkin, checkout and adults are already documented in the schema including the YYYY-MM-DD format and adults default of 2. The description confirms the 'one hotel and a stay window' shape but adds no syntax or format meaning beyond that, 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?
States a specific verb and resource ('Returns live rooms and prices for one hotel and a stay window') and the ancillary deliverable ('a booking link for each'). It also scopes itself against browsing siblings via 'fits a traveler who has chosen a hotel rather than browsing several', so an agent can place it relative to search_hotels 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 a clear selection condition (single chosen hotel, not multi-hotel browsing) and discloses the throughput constraint (12 calls/minute) that governs how it should be called. It stops short of naming search_hotels or get_hotel as the alternatives by name, so routing 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.
search_hotelsSearch hotelsARead-onlyIdempotentInspect
Finds hotels by name, destination or brand and returns each one's RoomExpert score, slug and page url. The other tools take that slug, so this is the lookup when the slug is not already known. Can rank by a single axis: "quietest rooms in Tokyo" is destination "tokyo", sort_by_axis "noise". Returns a Markdown table of up to limit hotels (name, destination, score, axis score when sorting, loyalty program). An unknown destination returns suggested names; no match says the hotel is not covered.
| Name | Required | Description | Default |
|---|---|---|---|
| brand | No | A brand, chain or loyalty program, e.g. "Hyatt", "Autograph Collection". | |
| limit | No | Default 10, max 50. | |
| query | No | Part of a hotel name, e.g. "park hyatt". | |
| destination | No | A destination name or slug, e.g. "Kyoto" or "new-york". | |
| sort_by_axis | No | Rank by this one axis instead of the overall score. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description goes further by disclosing the return shape (Markdown table with named columns) and two edge-case behaviors: an unknown destination returns suggested names, and no match reports the hotel as not covered. That is meaningful context beyond the annotations, though rate limits or pagination beyond `limit` are unmentioned.
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 tight sentences, front-loaded with purpose, then routing, then ranking example, then output/edge cases. Dense but every sentence carries information; the parenthetical column list is the only slightly heavy element.
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 takes on the burden of describing returns and does so (Markdown table, up to limit rows, columns listed, axis score column when sorting). Combined with the error behaviors for unknown destinations and no matches, an agent has everything needed to call and interpret this tool.
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, but the description adds real meaning: it shows how `destination` and `sort_by_axis` combine ('quietest rooms in Tokyo' → destination 'tokyo', sort_by_axis 'noise'), clarifies sort_by_axis replaces overall-score ranking, and explains that limit caps the returned table rows. That exceeds what the schema alone conveys.
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 ('finds hotels by name, destination or brand') plus what it returns (score, slug, page url), and explicitly distinguishes itself from siblings by noting 'the other tools take that slug, so this is the lookup when the slug is not already known.' An agent can route to it without opening another 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 a clear use condition: this is the lookup tool when the slug is not already known, with the alternative (slug-taking tools) identified generically. No sibling is named explicitly and there is no explicit when-not guidance, but the routing logic is unambiguous.
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.
5 tool updates
- First observed
find_award_stays - First observed
get_evidence - First observed
get_hotel - First observed
get_rates - First observed
search_hotels
Related MCP Connectors
Hotels ranked by real comfort, not commission: efficient AC, comfy beds, soundproof rooms and more
Hotel prices, ratings, reviews and amenities from Google Hotels for any city, dates and guests.
Free hotel comparison for AI assistants: 77k hotels on the same criteria, with reasons. No key.
Dated, cited hotel facts from hotels' own sites and official registers, Portugal and Spain.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceProvides cited product-review verdicts synthesised from real user voices across multiple platforms, enabling AI agents to query live opinions with ratings, pros/cons, and confidence tiers.-

Find Sauna Plungeofficial
AlicenseAqualityAmaintenanceCold plunge, sauna and contrast-therapy venues across 23 US metros (548 venues). Every published water temperature and price is read from the venue's own pages and returned with its source URL, capture date and verbatim quote; every record carries the date it was last checked. Absent fields mean "not published", never zero. Five read-only tools: search_venues, get_venue, list_cities, get_city_stat5MIT- AlicenseNot gradedqualityCmaintenanceEnables cited research synthesis from verified public sources, returning extractive quotations with source URLs and refusing topics that cannot be grounded.MIT
- FlicenseNot gradedqualityDmaintenanceEnables querying a source-cited index of AI vendors' data practices—training on inputs, retention, and opt-out options—with tools to get a cited verdict for one vendor or compare a field across all 11 products.-
Glama MCP Gateway
Add one secure layer between your agents and this server.