Skip to main content
Glama

Server Details

Is a hotel cheaper on its own website than on Booking.com? An honest, like-for-like check.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.4/5.0

Scored across 3 tools

Disambiguation4/5

check_direct_price initiates a comparison, report_hotel_price supplies the hotel's own prices to complete a check, and report_booking records the traveller's booking outcome. Their roles are distinct, though check_direct_price and report_hotel_price both involve price comparison and could momentarily overlap.

Naming Consistency4/5

All names use snake_case and start with a clear action verb followed by an object. 'check_direct_price' uses an adjective ('direct') unlike the report_* tools, which is a minor inconsistency but still readable.

Tool Count5/5

Three tools map directly to the narrow workflow: one check and two feedback reports. That is appropriately scoped for a single-purpose price-comparison service; each tool earns its place.

Completeness4/5

The surface covers the check-and-report lifecycle, including fallback when automated reading fails and reporting booking outcomes. Minor gaps exist, such as no explicit retrieval of prior checks or support for multiple rooms, but these are likely by design.

Available Tools

3 tools
check_direct_priceCheck the hotel's own price against Booking.comA
Read-only
Inspect

Checks whether a hotel is cheaper on its own website than on Booking.com, for one stay. Give the hotel, the dates, the guests and, when you have it, the total Booking.com shows for the whole stay with its meal plan and cancellation terms. BookHotels.direct reads the hotel's own booking site live, applying the public promo codes and free-club prices it knows for that hotel, or uses a traveller's read of the same stay from the last 24 hours, and compares like for like: same hotel, dates and guests, with every difference in room, meal plan or cancellation stated. The answer is honest either way: when Booking.com is cheaper, it says so. When the hotel's site cannot be read automatically, the answer gives the link to the hotel's own site for these dates and asks you to report the prices shown there with report_hotel_price. Without a Booking.com total, the answer gives the hotel's own price and, when the evidence allows, an estimated saving, always labelled as an estimate with its basis. Only Booking.com prices can be compared. One room per check.

NameRequiredDescriptionDefault
cityNoThe town or city the hotel is in, e.g. "Sitges". Helps find hotels we have not checked before.
hotelYesThe hotel's name as the traveller sees it, e.g. "Hotel Calipolis".
adultsNoNumber of adults (default 2).
checkinYesCheck-in date, YYYY-MM-DD.
checkoutYesCheck-out date, YYYY-MM-DD.
languageNoLanguage of the check page for the traveller (default en).
booking_urlNoOptional: the Booking.com address of the hotel's page (https://www.booking.com/hotel/…). Only the address is read, to recognise the hotel and the dates; the page is never opened.
booking_roomNoThe room name of the Booking.com offer, when shown.
booking_totalNoThe total Booking.com shows for the whole stay, in euros, when known. Without it you get the hotel's own price and, when the evidence allows, an estimated saving.
children_agesNoEach child's age on the day of check-out, one number per child. Leave out when no children travel. Hotels price children by age, so ages are needed for families.
booking_meal_planNoThe meal plan of the Booking.com offer, when Booking.com shows it.
booking_taxes_extraNoTaxes Booking.com lists on top of its total, in euros (e.g. a city tax), when shown.
booking_cancellationNoThe cancellation terms of the Booking.com offer, when Booking.com shows them: free cancellation, non-refundable, or partly refundable.
booking_taxes_includedNotrue when Booking.com says its total includes taxes and charges; false when it lists taxes on top.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond readOnlyHint/openWorldHint/openWorld it discloses how the answer is produced: a live read of the hotel's own booking site, promo-code and free-club pricing, or a traveller's read from the last 24 hours, and comparison 'like for like' with every room/meal/cancellation difference stated. It also flags the non-deterministic character implied by idempotentHint=false and is honest about failure modes and estimate labelling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and inputs come first, then behaviour, then the fallback path — a good front-loaded order with no filler sentences. It is dense but the booking_total behaviour is stated twice (prose and schema), costing a little tightness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 14-parameter, no-output-schema tool this covers what an agent needs: required inputs, which optionals improve fidelity, what the answer contains (comparison verdict, link fallback, labelled estimate with basis), and the comparison's limits. Nothing material for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 conditional priority ('when you have it', the meal plan and cancellation terms) and explains the consequence of omitting booking_total. It does not walk through the taxes or children_ages semantics, which remain schema-only.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb and comparison ('Checks whether a hotel is cheaper on its own website than on Booking.com, for one stay'), naming both data sources and the unit of work. An agent knows exactly what question this tool answers, and the sibling names (report_booking, report_hotel_price) are routed away from it explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives positive conditions (supply hotel, dates, guests and, 'when you have it', the Booking.com total), branches (without a total you get the hotel's own price plus a labelled estimate), a fallback path ('asks you to report the prices shown there with report_hotel_price'), and hard exclusions ('Only Booking.com prices can be compared. One room per check.').

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

report_bookingReport that the traveller bookedA
Idempotent
Inspect

When the traveller tells you they booked a hotel after a check_direct_price answer, report whether they booked it on the hotel's own website, with the check_id. Only report what the traveller told you. Nothing about the traveller is sent or kept: only that the check led to a booking, and its total when given.

NameRequiredDescriptionDefault
check_idYesThe check_id returned by check_direct_price.
total_paidNoThe total the traveller says they paid, in euros, when they say it.
booked_directYestrue when the traveller booked on the hotel's own website; false when they booked elsewhere or not at all.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, so the bar is lower. The description adds real value beyond them: a privacy guarantee ('Nothing about the traveller is sent or kept') and the data-accuracy rule to report only first-hand traveller claims. Idempotency is left to annotations, which is acceptable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences that front-load the trigger condition, then the data-source rule, then the privacy note. Every sentence carries distinct information, with only mild overlap between 'Only report what the traveller told you' and the privacy clause.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-parameter write tool with an output schema absent but annotations covering safety and idempotency, the description supplies trigger, data-source discipline, and privacy behavior. Nothing essential to invoking it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage the baseline is 3, but the description adds cross-parameter meaning: check_id must come from a prior check_direct_price call, and 'its total when given' reinforces that total_paid is optional and conditionally supplied. This goes slightly beyond the schema's own text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (report) and resource (whether a booking happened, and whether it was direct) and anchors it to the check_direct_price flow, so the agent can tell it apart from check_direct_price and report_hotel_price. No ambiguity about what the tool records.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger: 'When the traveller tells you they booked a hotel after a check_direct_price answer.' It also constrains the data source ('Only report what the traveller told you'). It doesn't name the sibling alternatives or when-not to call it, keeping it below a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

report_hotel_priceReport the prices seen on the hotel's own siteAInspect

After check_direct_price asked you to open the hotel's own website for a stay, report the prices that site showed for the same dates and guests, and get the honest comparison with Booking.com. Give the check_id from check_direct_price and one entry per room or rate you saw, each with its total for the whole stay in euros and, when shown, its meal plan and cancellation terms. Report only what the hotel's own site showed; leave a field out when the site did not say it. The report is kept anonymously so the next traveller asking about the same stay gets an answer at once.

NameRequiredDescriptionDefault
cityNoThe town or city the hotel is in, e.g. "Sitges". Helps find hotels we have not checked before.
hotelNoThe hotel's name as the traveller sees it, e.g. "Hotel Calipolis".
adultsNoNumber of adults (default 2).
offersYesThe rooms and rates the hotel's own site showed for the stay.
checkinNoCheck-in date, YYYY-MM-DD.
check_idNoThe check_id returned by check_direct_price.
checkoutNoCheck-out date, YYYY-MM-DD.
page_urlNoThe address of the hotel's page where you saw the prices (only its host is kept).
booking_urlNoOptional: the Booking.com address of the hotel's page (https://www.booking.com/hotel/…). Only the address is read, to recognise the hotel and the dates; the page is never opened.
booking_roomNoThe room name of the Booking.com offer, when shown.
booking_totalNoThe total Booking.com shows for the whole stay, in euros, when known. Without it you get the hotel's own price and, when the evidence allows, an estimated saving.
children_agesNoEach child's age on the day of check-out, one number per child. Leave out when no children travel. Hotels price children by age, so ages are needed for families.
booking_meal_planNoThe meal plan of the Booking.com offer, when Booking.com shows it.
booking_taxes_extraNoTaxes Booking.com lists on top of its total, in euros (e.g. a city tax), when shown.
booking_cancellationNoThe cancellation terms of the Booking.com offer, when Booking.com shows them: free cancellation, non-refundable, or partly refundable.
booking_taxes_includedNotrue when Booking.com says its total includes taxes and charges; false when it lists taxes on top.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and openWorldHint=false, and the description corroborates the write behavior by explaining the side effect: 'The report is kept anonymously so the next traveller asking about the same stay gets an answer at once.' It also adds a data-integrity rule ('Report only what the hotel's own site showed; leave a field out when the site did not say it') that annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the trigger and handoff ('After check_direct_price…'), then what to submit, then a one-sentence rationale for the anonymous storage. No sentence is redundant with the title or schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 16-parameter tool with no output schema, the description covers the workflow, the required check_id, the offer-entry shape and the omission rule, and hints at the returned comparison/saving. It leaves the exact response shape to be inferred, but the schema's parameter text fills most remaining gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 earns a notch above by giving an inclusion rule beyond the schema — omit fields the site did not state — and by clarifying that each offer entry needs a whole-stay total in euros plus, when present, meal plan and cancellation terms.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: report the prices the hotel's own site showed for the same stay, and get a Booking.com comparison. It distinguishes itself from the sibling check_direct_price by naming the sequencing ('After check_direct_price asked you to open the hotel's own website'), so an agent can place it 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The trigger is explicit: use this after check_direct_price has sent you to the hotel's own site, and pass the check_id it returned. It doesn't state an explicit when-not (e.g. what to do if the site showed no prices), but the preconditions and required handoff are clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updates
    • First observedcheck_direct_price
    • First observedreport_booking
    • First observedreport_hotel_price

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources