Skip to main content
Glama

HotelRunner MCP by usefulapi

Update room availability, prices and restrictions

hotelrunner_update_room_calendar
DestructiveIdempotent

WRITE: change availability, price, minimum/maximum stay, stop-sale, closed-to-arrival (cta) or closed-to-departure (ctd) for ONE room type (inv_code) over a date range of at most 90 days, optionally only on some weekdays and only on some channels. Only the fields you pass are changed. This is LIVE inventory: HotelRunner pushes it to every connected channel (Booking.com, Expedia, your own booking engine, ...) and it changes what guests can book and pay. The price is the base-rate price in the property's sales currency; guest-based prices derive from it. Only rooms whose availability_update / restrictions_update / price_update flag is true (hotelrunner_list_rooms) accept that kind of change. HotelRunner answers asynchronously: the reply has a transaction_id; check per-channel results with hotelrunner_get_transaction_details. Send one change per call, not a full refresh. Counts as one of the property's 250 requests per day (5 per minute). PUT /api/v2/apps/rooms/daily.

Input Schema

NameRequiredDescriptionDefault
ctaNoClosed to arrival.
ctdNoClosed to departure.
daysNoOnly these weekdays, 0 = Sunday ... 6 = Saturday (default: every day).
priceNoBase nightly price in the property's sales currency.
end_dateYesLast date to change (inclusive), yyyy-mm-dd.
inv_codeYesAn inventory code from hotelrunner_list_rooms, e.g. HR:1903.
max_stayNoMaximum nights.
min_stayNoMinimum nights.
stop_saleNotrue = close the room for sale on these dates, false = reopen.
start_dateYesFirst date to change, yyyy-mm-dd.
availabilityNoRooms available to sell.
channel_codesNoOnly these channels (codes from hotelrunner_list_connected_channels); default: all connected channels of the room.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Adds substantial context beyond annotations: this is live inventory pushed to all connected channels, it affects what guests can book and pay, changes are partial by design, and results are asynchronous with a transaction_id. These details are critical for a destructive write operation and are consistent with destructiveHint=true.

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?

Front-loads the write action and core scope, then adds constraints and operational warnings in a dense but purposeful paragraph. Every sentence mostly earns its place, though the description is long and could be more scannable with structure.

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 complex destructive live-inventory mutation with no output schema, it covers prerequisites, partial-update behavior, channel propagation, async transaction handling, rate limits, and result-checking follow-up. An agent has enough information to use it correctly without opening other documentation.

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 parameter-level descriptions are already strong. The description adds useful cross-parameter semantics: the 90-day maximum range, one-room-type constraint, optional weekday/channel scoping, and the requirement that room update flags be enabled before certain changes are accepted.

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: change availability, price, min/max stay, stop-sale, CTA/CTD for one room type over a date range. Scope is sharply bounded to one inv_code, up to 90 days, optional weekdays and channels, which clearly distinguishes this from sibling tools.

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 strong operational conditions: only fields passed are changed, one change per call, no full refresh, and only rooms with the relevant update flag enabled can accept the change. It also points to hotelrunner_list_rooms for prerequisites and hotelrunner_get_transaction_details for async results, though it does not explicitly name alternative tools for other workflows.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.