HotelRunner MCP by usefulapi

io.usefulapi/hotelrunner

Read HotelRunner reservations, rooms, channels; update availability and prices; confirm or cancel.

Yes, your AI can use this right now.Answered a live MCP handshake in 1548 ms with no sign-in needed and exposes 8 tools.
Is this your server? Claim the listing. Verified adds a vendor-confirmed mark on this page and matching app pages.
Claim with Verified — $49/moWant it in front of people comparing Maps & Travel tools? Feature it — $149/mo

Connect it

Settings → Connectors → Add custom connector
URL: https://hotelrunner.usefulapi.io/mcp

8 tools, pulled live

Pulled straight from the server with tools/list on 2026-10-27.
hotelrunner_list_roomsread-only

List the property's room types and rates with their inv_code and rate_code, capacity, pricing type, sales currency, connected channel codes and whether availability, restrictions and prices can be updated through the API. Use the inv_code with hotelrunner_update_room_calendar. Counts as one of the property's 250 requests per day (5 per minute). GET /api/v2/apps/rooms.

hotelrunner_list_reservationsread-only

List reservations of the property (new, modified, canceled), newest data first as HotelRunner returns them, 1-50 per page. By default ALL reservations created in the window are returned (this tool sets undelivered=false, so reading does not depend on a PMS having fetched them). from_date is the creation date (HotelRunner keeps at most 30 days back; default 10 days); from_last_update_date finds res

hotelrunner_get_reservationread-only

One reservation by its HotelRunner code (hr_number, e.g. R377873409) or the sales channel's own reservation code, with the full vendor record (rooms, daily prices, extras, payments, guest and billing details, next_states). If the reservation is older than HotelRunner's lookup window, pass from_date. Counts as one of the property's 250 requests per day (5 per minute). GET /api/v2/apps/reservations?

hotelrunner_list_channelsread-only

All sales channels HotelRunner supports (name and code, e.g. bookingcom, expedia, hrs, online). The code is what hotelrunner_update_room_calendar takes in channel_codes. Counts as one of the property's 250 requests per day (5 per minute). GET /api/v2/apps/infos/channels.

hotelrunner_list_connected_channelsread-only

The channels this property is connected to, each with counts of calendar update processes in progress, succeeded and failed. Counts as one of the property's 250 requests per day (5 per minute). GET /api/v2/apps/infos/connected_channels.

hotelrunner_get_transaction_detailsread-only

Per-channel status of a calendar update: pass the transaction_id returned by hotelrunner_update_room_calendar. Shows succeeded / failed / in-progress counts and each channel's state and error message. Counts as one of the property's 250 requests per day (5 per minute). GET /api/v2/apps/infos/transaction_details.

hotelrunner_update_room_calendarcan modify

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 e

hotelrunner_update_reservation_statecan modify

WRITE: move ONE reservation to the next state: event 'confirm' (hotelier accepts it) or 'cancel' (cancels it; cancel_reason is required: customer, no_room, no_show or invalid_price). Cancel is not reversible through this API and releases the room; HotelRunner may notify the guest or the sales channel (Booking.com, Expedia, ...), so only cancel when the user clearly asked for it, and pass confirm=t

Alternatives in Maps & Travel

Compare →
Try “Notion”, “Stripe”, “create invoice”, “browser”