Hotelumo Hotel Operations
Server Details
See your hotel's room availability, rates, housekeeping and upcoming arrivals and departures.
- Status
- Healthy
- Uptime
- 100.0% over 21 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 11 tools
Each tool targets a distinct resource or aggregation (hotel, room type, physical room, rate plan, daily rates, extras, availability, schedule) and nearly every description includes explicit 'Not for...' boundaries that steer selection. The only real friction is between get_hotel and show_hotel_overview and between get_room_type and list_room_types, where a single-entity getter and a list/aggregate tool cover adjacent ground, but the descriptions clarify the split.
All names are snake_case and follow a verb-first convention (get_*, list_*, show_*). The only variation is get/list versus show, and 'show' is consistently reserved for the computed overview card, which is a defensible semantic distinction rather than an inconsistency.
Eleven tools is well within the healthy range and each one maps to a distinct noun in the hotel domain (hotels, room types, rooms, rate plans, rates, extras) plus three aggregate/query views. No tool looks redundant enough to remove.
The surface is coherent but explicitly read-only: it covers configuration, availability, pricing and aggregate stay counts, yet there is no reservation or guest lookup and no create/update/delete for any entity. Several descriptions fence these off deliberately ('Not for making a booking', 'Not for looking up a guest or reservation'), so an agent asked to book, modify, or find a specific reservation hits a dead end.
Available Tools
11 toolsget_hotelGet hotel detailsARead-onlyIdempotentInspect
Use this when someone asks about one hotel's setup, such as its default check-in and check-out times, currency, country or timezone. Returns the hotel's name, currency, language, timezone, country code and default check-in and check-out times, or not-found. Not for room availability or prices.
| Name | Required | Description | Default |
|---|---|---|---|
| hotelId | Yes | Hotel id: 24 lowercase hexadecimal characters |
Output Schema
| Name | Required | Description |
|---|---|---|
| hotel | Yes | Operational hotel metadata; null when not found. Contact details, addresses, integrations, credentials, payment configuration, reminders and guest data are never returned. |
| status | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile needs no restating. The description adds the 'or not-found' outcome, which is genuine behavioral information beyond the annotations, but says nothing about permissions, error conditions, or lookup constraints such as whether the hotel must be active.
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 trigger and scoping constraint. The middle sentence re-lists return fields that an existing output schema already covers, so it is mildly redundant, but nothing is padded or ambiguous.
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 one fully documented required parameter, rich annotations and an output schema present, the description covers everything an agent needs: when to call it, what it returns conceptually, the not-found case, and what it is not for. No material gaps remain.
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 a single parameter and schema description coverage is 100%, with the schema itself documenting the 24-hex-character id format and pattern. The description adds no extra meaning about the identifier, so the baseline 3 applies since the schema does all the work.
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 one hotel's setup') and enumerates the concrete attributes returned (check-in/check-out times, currency, country, timezone). It also explicitly rules out neighboring concerns ('Not for room availability or prices'), so an agent can separate it from get_hotel_availability and list_daily_rates 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 trigger ('Use this when someone asks about one hotel's setup') plus an explicit exclusion for availability and prices. It does not name the specific sibling tool to use instead (e.g., get_hotel_availability), so routing is implied by category rather than stated, but the when/when-not framing is present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_hotel_availabilityCheck room availability and pricesARead-onlyIdempotentInspect
Use this when someone asks if rooms are free for certain dates or what a stay would cost. Returns the room types and rate plans with a free room every night for the party, with rooms left and nightly and total prices in minor currency units. Stays of 1–30 nights, check-in within 365 days. Not for making a booking.
| Name | Required | Description | Default |
|---|---|---|---|
| adults | No | Adults staying, from 1 to 20; defaults to 2 | |
| hotelId | Yes | Hotel id: 24 lowercase hexadecimal characters | |
| infants | No | Infants staying, from 0 to 20; defaults to 0 | |
| children | No | Children staying, from 0 to 20; defaults to 0 | |
| checkInDate | Yes | Arrival date as YYYY-MM-DD, from today to 365 days ahead in the hotel's timezone | |
| checkOutDate | Yes | Departure date as YYYY-MM-DD, 1 to 30 nights after checkInDate |
Output Schema
| Name | Required | Description |
|---|---|---|
| offers | Yes | One row per bookable room type and rate plan with a free room every night. Amounts are integer minor currency units (12000 is 120.00 in a two-decimal currency). Guest records, reservations, room assignments, access data, notes, payments, channel references, photos, free-text descriptions and credentials are excluded. |
| search | Yes | |
| offersAreTruncated | Yes | True when more than 100 offers matched the search |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, so the safety profile is covered. The description still adds real behavioral context beyond them: results are filtered to rate plans that have availability on every night for the party, prices are in minor currency units, and searches are bounded to 1-30 nights and check-in within 365 days.
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 the usage trigger, then what is returned, then constraints and the exclusion. No filler or redundancy; each sentence carries distinct 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 an output schema already present, the description need not enumerate return fields. It supplies the scope, the availability filter semantics, currency-unit convention, and date-range limits, which is everything needed to call 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 every parameter (dates, headcounts, hotelId format) is already documented in the schema. The description's date-window constraints largely restate what the schema says, and it adds no new syntax or party-composition detail. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource and scope: it returns room types and rate plans with a free room every night for the party, plus inventory counts and prices. The filtering semantics ('free room every night') are more precise than the title alone. It does not name any sibling (e.g. list_daily_rates, list_rate_plans) as the adjacent alternative, so it falls short of full sibling differentiation.
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 trigger ('when someone asks if rooms are free for certain dates or what a stay would cost') and a negative boundary ('Not for making a booking'). It does not, however, steer the agent toward or away from any actual sibling tool that overlaps on rates or room lists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_hotel_schedule_summaryCount arrivals, departures and staysARead-onlyIdempotentInspect
Use this when someone asks how busy the hotel is, or how many arrivals, departures or in-house stays fall on each day. Returns daily counts of confirmed, checked-in and checked-out stays plus reservation totals by status, for 7 days from today by default and at most 31 days; counting stops at 500. Not for looking up a guest or reservation.
| Name | Required | Description | Default |
|---|---|---|---|
| dateTo | No | Last day as YYYY-MM-DD (inclusive), at most 31 days in total; defaults to six days after dateFrom | |
| hotelId | Yes | Hotel id: 24 lowercase hexadecimal characters | |
| dateFrom | No | First day as YYYY-MM-DD (inclusive); defaults to today in UTC |
Output Schema
| Name | Required | Description |
|---|---|---|
| days | Yes | One row per day. arrivals, departures and inHouseReservations count confirmed, checked-in and checked-out stays; a stay is not in-house on its checkout day. Reservation or allocation identifiers, individual stay records, guest data, room assignments, notes, documents, payments, access data, channel references and credentials are never returned. |
| hotel | Yes | |
| range | Yes | |
| statusCounts | Yes | Reservations overlapping the range by status, inquiries, requests, no-shows and cancellations included |
| reservationCount | Yes | |
| reservationCountIsLowerBound | Yes | True when more than 500 reservations overlap the range |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the safety profile is covered. The description adds real operational context beyond that: a default 7-day window, a 31-day maximum, and a counting cap of 500. It does not explain response shape, but the output schema makes that unnecessary.
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 sentences, front-loaded with the triggering intent, followed by the return contents and limits, then the exclusion. No filler and nothing buried.
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 read-only aggregate tool with full schema coverage and an output schema, the description supplies everything an agent needs: what is counted, the default and maximum window, the 500 cap, and what the tool is not for. No meaningful gap remains.
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%: dateFrom/dateTo defaults, the inclusive YYYY-MM-DD format and the 31-day limit are all documented in the schema already. The description's window and cap statements largely restate that, so baseline 3 is appropriate with no added syntax or format detail beyond the schema.
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: it returns daily counts of arrivals, departures and in-house stays, plus reservation totals by status. That is concrete enough to distinguish it from lookup-style siblings like get_hotel or list_rooms without opening any 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?
It gives an explicit trigger ("Use this when someone asks how busy the hotel is, or how many arrivals, departures or in-house stays fall on each day") and an explicit exclusion ("Not for looking up a guest or reservation"). It does not name a specific sibling tool as the alternative for a caller who wanted an occupied-rooms view, so it falls just short of the 5 bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_room_typeGet room type detailsARead-onlyIdempotentInspect
Use this when someone asks about one room type, such as its name or how many guests it sleeps. Returns the room type's name, hotel and maximum guests, or not-found. Not for its prices or free dates.
| Name | Required | Description | Default |
|---|---|---|---|
| roomTypeId | Yes | Room type id: 24 lowercase hexadecimal characters |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| roomType | Yes | Null when not found. Free-text descriptions, facilities, photos, channel mappings, integrations, credentials and arbitrary metadata are never returned. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description still adds value by disclosing the not-found outcome, which annotations do not convey.
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 with zero waste; the trigger condition is front-loaded, followed by return shape and then exclusions. Every clause 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 an output schema present, return values need not be spelled out, yet the description still summarizes them. For a one-parameter read tool with full annotation coverage, the only minor gap is not naming the sibling to use for prices or dates.
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% and the single roomTypeId parameter is fully documented in the schema, including its 24-hex-character pattern. The description adds no format or lookup semantics 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 (get) and resource (room type) and names exactly what it returns: name, hotel, maximum guests. The exclusion of prices and free dates cleanly separates it from rate/availability 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 triggering condition ("when someone asks about one room type") and explicit exclusions ("Not for its prices or free dates"), which routes the agent away from list_daily_rates and get_hotel_availability. It stops short of naming the alternative tool to use instead, so it is strong but not maximal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_daily_ratesShow daily prices and restrictionsARead-onlyIdempotentInspect
Use this when someone asks what a rate costs on specific nights, or about minimum stays, stop-sell or closed-to-arrival dates. Returns the stored per-day price and restrictions of one rate plan over up to 90 days; days without a row use the plan's base price. Not for whether rooms are free.
| Name | Required | Description | Default |
|---|---|---|---|
| dateTo | Yes | Last night as YYYY-MM-DD (inclusive); the range covers at most 90 days | |
| hotelId | Yes | Hotel id: 24 lowercase hexadecimal characters | |
| dateFrom | Yes | First night as YYYY-MM-DD (inclusive) | |
| ratePlanId | Yes | Rate plan id, belonging to hotelId: 24 lowercase hexadecimal characters |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| dailyRates | Yes | Stored per-day rows sorted by date; a date without a row sells at the plan's base price. price is in integer minor currency units. Guest, payment, channel, credential and arbitrary metadata are excluded. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, and closed-world behavior. The description adds useful operational context beyond annotations: the 90-day range limit and the default behavior that 'days without a row use the plan's base price.' It does not cover auth or rate limits, but it meaningfully extends the behavioral picture.
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?
The description is three tightly written sentences. It is front-loaded with the usage trigger, follows with the return behavior and fallback semantics, and closes with the exclusion. Every sentence 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?
An output schema exists, so return formatting need not be explained. Annotations cover the safety profile, and the description supplies the usage trigger, scope, fallback behavior, and explicit exclusion. Nothing an agent needs in order to call this 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 description coverage is 100%, so the schema already documents all four parameters with patterns and descriptions. The description reinforces that the tool operates on one rate plan and specific nights, but adds no syntax or format detail beyond the schema. Baseline 3 is appropriate when the schema carries the parameter burden.
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: it 'Returns the stored per-day price and restrictions of one rate plan over up to 90 days.' It also distinguishes the tool from siblings by specifying that it is 'Not for whether rooms are free,' which contrasts with the availability-focused tools.
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 an explicit when-to-use trigger ('when someone asks what a rate costs on specific nights, or about minimum stays, stop-sell or closed-to-arrival dates') and an explicit when-not ('Not for whether rooms are free'). The exclusion effectively routes the agent away from availability tools, even though the alternative tool is not named by exact name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_extrasList extras and add-onsARead-onlyIdempotentInspect
Use this when someone asks what extras a hotel sells, such as breakfast, parking, spa, transfers or fees, and what they cost. Returns each active extra's name, price in minor currency units, currency, category and taxable flag, 20 per page by default. Not for what a guest bought or was charged.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Extras per page, from 1 to 100; defaults to 20 | |
| offset | No | Extras to skip, from 0 to 10000; defaults to 0. For the next page pass offset + limit | |
| hotelId | No | Only this hotel (24 lowercase hexadecimal characters); every hotel when absent |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | Yes | hasMore is true when another page exists; request it with offset + limit |
| extras | Yes | Active extras; price is in integer minor currency units. Guest charges, folio data, display colors and credentials are excluded. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so safety is covered. The description adds real behavioral context beyond that: only *active* extras are returned, prices are in minor currency units, and results are paginated at 20 per page by default.
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 sentences, zero filler: the first front-loads the use case and the key returned fields, the second states the exclusion. Nothing is redundant or buried.
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 full param coverage, an output schema handling return values, and annotations covering the safety profile, the description supplies everything else an agent needs: domain scope, active-only filtering, price units, pagination, and the exclusion boundary.
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%, with limit, offset and hotelId all self-documented including defaults and the offset+limit paging recipe. The description only echoes the 20-per-page default already present in the schema, so it adds little beyond the baseline.
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+resource ('list extras a hotel sells') and enumerates the domain (breakfast, parking, spa, transfers, fees) so an agent can distinguish it from siblings like list_rate_plans or list_daily_rates. It also closes the boundary with 'Not for what a guest bought or was charged.'
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 states the trigger explicitly ('Use this when someone asks what extras a hotel sells... and what they cost') and pairs it with a negative condition ('Not for what a guest bought or was charged'), which is the main risk of misuse for an extras-listing tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_hotelsList your hotelsARead-onlyIdempotentInspect
Use this when someone asks which hotels or properties they manage in Hotelumo, or a hotel's id is needed. Returns each hotel's id, name, currency, language and timezone, 20 per page by default (no addresses or guest data). Not for room availability.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Hotels per page, from 1 to 100; defaults to 20 | |
| offset | No | Hotels to skip, from 0 to 10000; defaults to 0. For the next page pass offset + limit |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | Yes | hasMore is true when another page exists; request it with offset + limit |
| hotels | Yes | Hotels in the signed-in organization. Addresses, phone numbers, channel credentials, payment configuration, reminder configuration and guest data are excluded. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly/idempotent/safe semantics, but the description adds real value beyond them: the returned field set (id, name, currency, language, timezone), the 20-per-page default, and what is deliberately excluded (no addresses or guest data). It does not describe error or auth behavior, 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?
Three short sentences ordered by importance — trigger, return shape, exclusion — with no filler and no 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 zero-required-param list tool with an output schema and full annotation coverage, the description supplies everything an agent needs: when to call it, what comes back, and what it is not for.
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?
Both parameters are fully documented in the schema (limit 1-100 default 20, offset 0-10000 with offset+limit paging guidance), so the description's mention of "20 per page by default" only restates it. With 100% schema coverage, 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 (list) and resource (hotels/properties the user manages) and explicitly carves out scope with "Not for room availability," separating it from get_hotel_availability and list_room_types. An agent can identify this tool's job 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 a concrete trigger ("when someone asks which hotels... or a hotel's id is needed") and one exclusion ("Not for room availability"). It stops short of naming the alternative sibling tool to use instead, so routing still needs a small inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_rate_plansList rate plans and base pricesARead-onlyIdempotentInspect
Use this when someone asks what rate plans a hotel sells, such as room-only or breakfast-included rates, and their base prices. Returns each plan's title, room type, base price in minor currency units, meal plan, per-room or per-person pricing and default flag, 20 per page by default. Not for prices on specific dates.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Rate plans per page, from 1 to 100; defaults to 20 | |
| offset | No | Rate plans to skip, from 0 to 10000; defaults to 0. For the next page pass offset + limit | |
| hotelId | Yes | Hotel id: 24 lowercase hexadecimal characters | |
| roomTypeId | No | Only this room type (24 lowercase hexadecimal characters) |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | Yes | hasMore is true when another page exists; request it with offset + limit |
| ratePlans | Yes | basePrice is in integer minor currency units. Channel-manager mappings, integration metadata and credentials are excluded. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only/idempotent/non-destructive profile, but the description adds genuinely new context: the returned field set (title, room type, base price, meal plan, per-room/per-person, default flag) and the pagination default of 20 per page. It does not mention auth requirements or total-count behavior, so not a full 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?
Three tight sentences: trigger, returned payload, then exclusion. Front-loaded and 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 an output schema present and full schema coverage, the description need only establish purpose, scope, and the date-specific exclusion, all of which it does. Nothing essential for correct invocation 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 all four parameters including limit/offset syntax are already documented in the schema. The description only restates the 20-per-page default, adding no meaning beyond the schema; 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 concrete verb+resource (list rate plans) plus what is returned (base prices), and explicitly carves out the boundary against date-specific pricing. An agent can distinguish it from list_daily_rates without reading any 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 triggering condition ('when someone asks what rate plans a hotel sells... and their base prices') and an exclusion ('Not for prices on specific dates'). It stops short of naming the alternative tool to use instead, leaving that inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_roomsCheck room and housekeeping statusARead-onlyIdempotentInspect
Use this when someone asks which rooms are clean, dirty or inspected, or which are out of order or out of service. Returns each physical room's name or number, room type and hotel with its room and housekeeping status, 20 per page by default (no guest or occupant data). Not for which rooms are free on given dates.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Rooms per page, from 1 to 100; defaults to 20 | |
| offset | No | Rooms to skip, from 0 to 10000; defaults to 0. For the next page pass offset + limit | |
| hotelId | No | Only this hotel (24 lowercase hexadecimal characters); every hotel when absent | |
| roomTypeId | No | Only this room type (24 lowercase hexadecimal characters) |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | Yes | hasMore is true when another page exists; request it with offset + limit |
| rooms | Yes | Physical rooms sorted by name. Internal room ids, reservation, occupant, guest, access-control and channel data are excluded. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuinely useful context beyond that: the default page size of 20 and the privacy constraint that no guest or occupant data is returned. It stops short of describing pagination limits or ordering, which keeps it out of the top range.
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 tightly packed sentences: trigger condition first, return contents second, exclusion last. No filler, and the most decision-relevant information is front-loaded.
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?
An output schema exists, yet the description still summarizes the salient return shape, and it covers the filter parameters implicitly via the schema. For a read-only list tool with full annotation coverage, nothing an agent needs to select or invoke it 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 limit/offset/hotelId/roomTypeId semantics are already fully documented in the schema. The description adds the pagination default but does not mention the hotel or room-type filters, so it neither compensates for nor extends the schema meaningfully. 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 (list) and resource (rooms) with the exact status dimension it exposes — clean/dirty/inspected, out of order/service. It also names what the result contains (name/number, room type, hotel, statuses), which an agent can use to differentiate it from siblings like get_hotel_availability.
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 explicit trigger conditions ('when someone asks which rooms are clean, dirty or inspected') and an explicit exclusion ('Not for which rooms are free on given dates'), which routes the agent to the availability tool for the adjacent use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_room_typesList room typesARead-onlyIdempotentInspect
Use this when someone asks what kinds of rooms a hotel offers or how many guests each room type sleeps. Returns each room type's id, hotel, name and maximum guests, sorted by name, 20 per page by default. Not for whether a room type is free on given dates.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Room types per page, from 1 to 100; defaults to 20 | |
| offset | No | Room types to skip, from 0 to 10000; defaults to 0. For the next page pass offset + limit | |
| hotelId | No | Only this hotel (24 lowercase hexadecimal characters); every hotel when absent |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | Yes | hasMore is true when another page exists; request it with offset + limit |
| roomTypes | Yes | Room types sorted by name. Photos, public descriptions, rate-plan internals, channel mappings and credentials are excluded. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint, and openWorldHint, so the safety profile is covered. The description adds genuinely new behavioral context beyond the annotations: the sort order (by name) and the default pagination size (20 per page).
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 the use condition, then the return/sort/paging behavior, then the exclusion. No filler and every sentence carries a distinct piece of 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 a full output schema, complete parameter descriptions, and annotations covering the safety profile, the description only needs to cover scope, ordering, paging default, and boundaries — all of which it does. Nothing an agent needs to call this 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 description coverage is 100%, so limit, offset, and hotelId are already fully documented including defaults, ranges, and the offset+limit paging hint. The description only restates the 20-per-page default, adding no syntax or semantics 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?
The description states a specific verb and resource ('List room types') and frames it in the user-language scenario ('what kinds of rooms a hotel offers or how many guests each room type sleeps'), which lets an agent distinguish it from siblings like get_room_type (singular) and list_rooms.
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 an explicit when-to-use trigger and an explicit when-not ('Not for whether a room type is free on given dates'), which routes the agent away from this tool toward the availability sibling. The only gap is not naming that alternative by exact name, but the exclusion condition is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
show_hotel_overviewShow hotel operations overviewARead-onlyIdempotentInspect
Use this when someone wants a quick overview or dashboard of one hotel's operations. Returns an overview card with the hotel's details, reservation status counts for the next 7 days, and room, room-type, room-status and housekeeping counts from bounded samples (no guest, stay or payment data). Not for a single reservation.
| Name | Required | Description | Default |
|---|---|---|---|
| hotelId | Yes | Hotel id: 24 lowercase hexadecimal characters |
Output Schema
| Name | Required | Description |
|---|---|---|
| hotel | Yes | Null when not found. Guest identities, contact details, reservation or allocation identifiers, individual stay records, notes, documents, occupant ids, payments, access data, integration configuration, credentials and arbitrary metadata are excluded. |
| rooms | Yes | Physical rooms, sampled up to 100; hasMore marks a lower bound |
| roomTypes | Yes | Room types, sampled up to 50; hasMore marks a lower bound |
| reservations | Yes | Reservations overlapping the next seven UTC days, any status, sampled up to 50; hasMore marks a lower bound |
| scheduleRange | Yes | |
| roomStatusCounts | Yes | |
| reservationStatusCounts | Yes | |
| housekeepingStatusCounts | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world. The description adds real context beyond that: it enumerates what the card contains (reservation status counts for next 7 days, room/room-type/room-status/housekeeping counts), notes these come from bounded samples, and explicitly excludes guest, stay and payment data — useful privacy/scope disclosure.
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 that are tightly ordered: usage trigger, then return contents, then exclusion. No filler or redundancy, and the most decision-relevant information (when to use) is front-loaded.
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 single-parameter read tool with rich annotations and an existing output schema, the description supplies everything else an agent needs: what it returns, the bounded-sample caveat, and what data is deliberately absent. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Single parameter with 100% schema description coverage (pattern and format already documented in the schema). The description adds no syntax or constraint detail for hotelId, so the schema does all the work — baseline 3.
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 ('Show') plus the resource ('hotel operations overview' / dashboard) and constrains scope to one hotel. It also names the adjacent-but-different case ('Not for a single reservation'), letting an agent separate it from get_hotel and get_hotel_schedule_summary.
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 triggering condition ('when someone wants a quick overview or dashboard of one hotel's operations') and one explicit exclusion ('Not for a single reservation'). It stops short of naming which sibling to use instead for detail or schedule, so it is strong but not fully routing.
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.
11 tool updates
- Changed
get_hotel2 fields changed- changed
Input schema / properties / hotelId / descriptionPrevious value: -"24-character lowercase hexadecimal hotel id"New value: +"Hotel id: 24 lowercase hexadecimal characters" - added
Output schema / properties / hotel / descriptionAdded value: +"Operational hotel metadata; null when not found. Contact details, addresses, integrations, credentials, payment configuration, reminders and guest data are never returned."
- Changed
get_hotel_availability8 fields changed- added
Input schema / properties / adults / descriptionAdded value: +"Adults staying, from 1 to 20; defaults to 2" - changed
Input schema / properties / checkInDate / descriptionPrevious value: -"YYYY-MM-DD check-in"New value: +"Arrival date as YYYY-MM-DD, from today to 365 days ahead in the hotel's timezone" - changed
Input schema / properties / checkOutDate / descriptionPrevious value: -"YYYY-MM-DD check-out"New value: +"Departure date as YYYY-MM-DD, 1 to 30 nights after checkInDate" - added
Input schema / properties / children / descriptionAdded value: +"Children staying, from 0 to 20; defaults to 0" - changed
Input schema / properties / hotelId / descriptionPrevious value: -"24-character lowercase hexadecimal hotel id"New value: +"Hotel id: 24 lowercase hexadecimal characters" - added
Input schema / properties / infants / descriptionAdded value: +"Infants staying, from 0 to 20; defaults to 0" - added
Output schema / properties / offers / descriptionAdded value: +"One row per bookable room type and rate plan with a free room every night. Amounts are integer minor currency units (12000 is 120.00 in a two-decimal currency). Guest records, reservations, room assignments, access data, notes, payments, channel references, photos, free-text descriptions and credentials are excluded." - added
Output schema / properties / offersAreTruncated / descriptionAdded value: +"True when more than 100 offers matched the search"
- Changed
get_hotel_schedule_summary6 fields changed- changed
Input schema / properties / dateFrom / descriptionPrevious value: -"Inclusive UTC date as YYYY-MM-DD; defaults to today"New value: +"First day as YYYY-MM-DD (inclusive); defaults to today in UTC" - changed
Input schema / properties / dateTo / descriptionPrevious value: -"Inclusive UTC date as YYYY-MM-DD; defaults to six days later"New value: +"Last day as YYYY-MM-DD (inclusive), at most 31 days in total; defaults to six days after dateFrom" - changed
Input schema / properties / hotelId / descriptionPrevious value: -"24-character lowercase hexadecimal hotel id"New value: +"Hotel id: 24 lowercase hexadecimal characters" - added
Output schema / properties / days / descriptionAdded value: +"One row per day. arrivals, departures and inHouseReservations count confirmed, checked-in and checked-out stays; a stay is not in-house on its checkout day. Reservation or allocation identifiers, individual stay records, guest data, room assignments, notes, documents, payments, access data, channel references and credentials are never returned." - added
Output schema / properties / reservationCountIsLowerBound / descriptionAdded value: +"True when more than 500 reservations overlap the range" - added
Output schema / properties / statusCounts / descriptionAdded value: +"Reservations overlapping the range by status, inquiries, requests, no-shows and cancellations included"
- Changed
get_room_type2 fields changed- changed
Input schema / properties / roomTypeId / descriptionPrevious value: -"24-character lowercase hexadecimal room-type id"New value: +"Room type id: 24 lowercase hexadecimal characters" - added
Output schema / properties / roomType / descriptionAdded value: +"Null when not found. Free-text descriptions, facilities, photos, channel mappings, integrations, credentials and arbitrary metadata are never returned."
- Changed
list_daily_rates5 fields changed- changed
Input schema / properties / dateFrom / descriptionPrevious value: -"Inclusive YYYY-MM-DD start"New value: +"First night as YYYY-MM-DD (inclusive)" - changed
Input schema / properties / dateTo / descriptionPrevious value: -"Inclusive YYYY-MM-DD end"New value: +"Last night as YYYY-MM-DD (inclusive); the range covers at most 90 days" - changed
Input schema / properties / hotelId / descriptionPrevious value: -"24-character lowercase hexadecimal hotel id"New value: +"Hotel id: 24 lowercase hexadecimal characters" - changed
Input schema / properties / ratePlanId / descriptionPrevious value: -"24-character lowercase hexadecimal rate-plan id"New value: +"Rate plan id, belonging to hotelId: 24 lowercase hexadecimal characters" - added
Output schema / properties / dailyRates / descriptionAdded value: +"Stored per-day rows sorted by date; a date without a row sells at the plan's base price. price is in integer minor currency units. Guest, payment, channel, credential and arbitrary metadata are excluded."
- Changed
list_extras8 fields changed- added
Input schema / properties / hotelId / descriptionAdded value: +"Only this hotel (24 lowercase hexadecimal characters); every hotel when absent" - added
Input schema / properties / limit / descriptionAdded value: +"Extras per page, from 1 to 100; defaults to 20" - added
Input schema / properties / offset / descriptionAdded value: +"Extras to skip, from 0 to 10000; defaults to 0. For the next page pass offset + limit" - added
Output schema / properties / extras / descriptionAdded value: +"Active extras; price is in integer minor currency units. Guest charges, folio data, display colors and credentials are excluded." - removed
Output schema / properties / extras / items / properties / category / $refRemoved value: -"#/properties/extras/items/properties/name" - added
Output schema / properties / extras / items / properties / category / anyOfAdded value: +[ + { + "$ref": "#/properties/extras/items/properties/name/anyOf/0" + }, + { + "type": "null" + } +] - added
Output schema / properties / extras / items / properties / category / descriptionAdded value: +"BREAKFAST, PARKING, SPA, TRANSFER, FEE or OTHER" - added
Output schema / properties / page / descriptionAdded value: +"hasMore is true when another page exists; request it with offset + limit"
- Changed
list_hotels4 fields changed- added
Input schema / properties / limit / descriptionAdded value: +"Hotels per page, from 1 to 100; defaults to 20" - added
Input schema / properties / offset / descriptionAdded value: +"Hotels to skip, from 0 to 10000; defaults to 0. For the next page pass offset + limit" - added
Output schema / properties / hotels / descriptionAdded value: +"Hotels in the signed-in organization. Addresses, phone numbers, channel credentials, payment configuration, reminder configuration and guest data are excluded." - added
Output schema / properties / page / descriptionAdded value: +"hasMore is true when another page exists; request it with offset + limit"
- Changed
list_rate_plans9 fields changed- changed
Input schema / properties / hotelId / descriptionPrevious value: -"24-character lowercase hexadecimal hotel id"New value: +"Hotel id: 24 lowercase hexadecimal characters" - added
Input schema / properties / limit / descriptionAdded value: +"Rate plans per page, from 1 to 100; defaults to 20" - added
Input schema / properties / offset / descriptionAdded value: +"Rate plans to skip, from 0 to 10000; defaults to 0. For the next page pass offset + limit" - added
Input schema / properties / roomTypeId / descriptionAdded value: +"Only this room type (24 lowercase hexadecimal characters)" - added
Output schema / properties / page / descriptionAdded value: +"hasMore is true when another page exists; request it with offset + limit" - added
Output schema / properties / ratePlans / descriptionAdded value: +"basePrice is in integer minor currency units. Channel-manager mappings, integration metadata and credentials are excluded." - removed
Output schema / properties / ratePlans / items / properties / rateMode / $refRemoved value: -"#/properties/ratePlans/items/properties/title" - added
Output schema / properties / ratePlans / items / properties / rateMode / anyOfAdded value: +[ + { + "$ref": "#/properties/ratePlans/items/properties/title/anyOf/0" + }, + { + "type": "null" + } +] - added
Output schema / properties / ratePlans / items / properties / rateMode / descriptionAdded value: +"manual or derived"
- Changed
list_room_types5 fields changed- added
Input schema / properties / hotelId / descriptionAdded value: +"Only this hotel (24 lowercase hexadecimal characters); every hotel when absent" - added
Input schema / properties / limit / descriptionAdded value: +"Room types per page, from 1 to 100; defaults to 20" - added
Input schema / properties / offset / descriptionAdded value: +"Room types to skip, from 0 to 10000; defaults to 0. For the next page pass offset + limit" - added
Output schema / properties / page / descriptionAdded value: +"hasMore is true when another page exists; request it with offset + limit" - added
Output schema / properties / roomTypes / descriptionAdded value: +"Room types sorted by name. Photos, public descriptions, rate-plan internals, channel mappings and credentials are excluded."
- Changed
list_rooms12 fields changed- added
Input schema / properties / hotelId / descriptionAdded value: +"Only this hotel (24 lowercase hexadecimal characters); every hotel when absent" - added
Input schema / properties / limit / descriptionAdded value: +"Rooms per page, from 1 to 100; defaults to 20" - added
Input schema / properties / offset / descriptionAdded value: +"Rooms to skip, from 0 to 10000; defaults to 0. For the next page pass offset + limit" - added
Input schema / properties / roomTypeId / descriptionAdded value: +"Only this room type (24 lowercase hexadecimal characters)" - added
Output schema / properties / page / descriptionAdded value: +"hasMore is true when another page exists; request it with offset + limit" - added
Output schema / properties / rooms / descriptionAdded value: +"Physical rooms sorted by name. Internal room ids, reservation, occupant, guest, access-control and channel data are excluded." - removed
Output schema / properties / rooms / items / properties / housekeepingStatus / $refRemoved value: -"#/properties/rooms/items/properties/name" - added
Output schema / properties / rooms / items / properties / housekeepingStatus / anyOfAdded value: +[ + { + "$ref": "#/properties/rooms/items/properties/name/anyOf/0" + }, + { + "type": "null" + } +] - added
Output schema / properties / rooms / items / properties / housekeepingStatus / descriptionAdded value: +"CLEAN, DIRTY or INSPECTED" - removed
Output schema / properties / rooms / items / properties / status / $refRemoved value: -"#/properties/rooms/items/properties/name" - added
Output schema / properties / rooms / items / properties / status / anyOfAdded value: +[ + { + "$ref": "#/properties/rooms/items/properties/name/anyOf/0" + }, + { + "type": "null" + } +] - added
Output schema / properties / rooms / items / properties / status / descriptionAdded value: +"AVAILABLE (in service, not a statement about occupancy), OUT_OF_ORDER or OUT_OF_SERVICE"
- Changed
show_hotel_overview5 fields changed- changed
Input schema / properties / hotelId / descriptionPrevious value: -"24-character lowercase hexadecimal hotel id"New value: +"Hotel id: 24 lowercase hexadecimal characters" - added
Output schema / properties / hotel / descriptionAdded value: +"Null when not found. Guest identities, contact details, reservation or allocation identifiers, individual stay records, notes, documents, occupant ids, payments, access data, integration configuration, credentials and arbitrary metadata are excluded." - added
Output schema / properties / reservations / descriptionAdded value: +"Reservations overlapping the next seven UTC days, any status, sampled up to 50; hasMore marks a lower bound" - added
Output schema / properties / roomTypes / descriptionAdded value: +"Room types, sampled up to 50; hasMore marks a lower bound" - added
Output schema / properties / rooms / descriptionAdded value: +"Physical rooms, sampled up to 100; hasMore marks a lower bound"
11 tool updates
- First observed
get_hotel - First observed
get_hotel_availability - First observed
get_hotel_schedule_summary - First observed
get_room_type - First observed
list_daily_rates - First observed
list_extras - First observed
list_hotels - First observed
list_rate_plans - First observed
list_room_types - First observed
list_rooms - First observed
show_hotel_overview
Related MCP Connectors
See your clinic's free slots, doctors, rooms, service prices and how busy each day is.
See your gym's open slots, services, how busy each day is and your payment totals.
Live hotel rates worldwide: search stays, property detail, all-in room prices, human phone desk.
Manage your GuruHotel hotel: reservations, revenue, rates, KPIs, traffic and ARI updates (OAuth).
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceProvides tools to check room availability, create bookings with automatic price calculation, and list bookings. Uses in-memory data with no authentication for demo purposes.-
- 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

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.45MIT- FlicenseNot gradedqualityBmaintenanceProvides live hotel room rates, availability, and guest reviews from Agoda, enabling searches by destination and dates, property details, and structured review data.1-
Glama MCP Gateway
Add one secure layer between your agents and this server.