{"name":"HotelOne PMS MCP contract","version":"2026-10-18","description":"Tools a PMS vendor’s MCP server should expose so HotelOne’s agents (console, voice front desk, phone line) can read and act in the PMS. Names are recommendations: HotelOne also recognises common aliases and adapts parameter names. Read tools should set annotations.readOnlyHint = true.","transport":{"type":"streamable-http","mcpProtocolVersion":"2025-06-18","auth":["Authorization: Bearer <token>","custom header (e.g. X-API-Key: <token>)"]},"docs":"https://hotelone.site/developers/pms","tools":[{"name":"list_arrivals","title":"List arrivals","description":"Reservations arriving on a date (default today), including whether each is checked in and its room.","annotations":{"readOnlyHint":true,"destructiveHint":false},"inputSchema":{"type":"object","properties":{"date":{"type":"string","format":"date","description":"Calendar day, YYYY-MM-DD (hotel’s local date)."}},"additionalProperties":false},"returns":"An array of reservations (top level, or under \"reservations\"/\"items\"/\"data\"): { reservation_id, confirmation_code, guest_name, arrival, departure, room_number?, room_type?, status, adults?, children?, balance? }.","aliases":["arrivals","get_arrivals","arrivals_list","list_arrival","todays_arrivals","get_todays_arrivals","search_arrivals","reservations_arriving"]},{"name":"list_departures","title":"List departures","description":"Reservations departing on a date (default today), with balance due and room.","annotations":{"readOnlyHint":true,"destructiveHint":false},"inputSchema":{"type":"object","properties":{"date":{"type":"string","format":"date","description":"Calendar day, YYYY-MM-DD (hotel’s local date)."}},"additionalProperties":false},"returns":"An array of reservations (top level, or under \"reservations\"/\"items\"/\"data\"): { reservation_id, confirmation_code, guest_name, arrival, departure, room_number?, room_type?, status, adults?, children?, balance? }.","aliases":["departures","get_departures","departures_list","list_departure","todays_departures","get_todays_departures","search_departures","reservations_departing"]},{"name":"list_in_house","title":"List in-house guests","description":"Guests currently checked in, with room numbers and departure dates.","annotations":{"readOnlyHint":true,"destructiveHint":false},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"returns":"An array of reservations (top level, or under \"reservations\"/\"items\"/\"data\"): { reservation_id, confirmation_code, guest_name, arrival, departure, room_number?, room_type?, status, adults?, children?, balance? }.","aliases":["in_house","get_in_house","list_inhouse","inhouse","in_house_guests","list_in_house_guests","get_in_house_guests","current_guests","list_current_guests","list_occupied_rooms","guests_in_house"]},{"name":"get_reservation","title":"Find a reservation","description":"Find reservations by confirmation code or guest name (partial names allowed). Returns every match.","annotations":{"readOnlyHint":true,"destructiveHint":false},"inputSchema":{"type":"object","properties":{"confirmation_code":{"type":"string","description":"Confirmation / booking code."},"guest_name":{"type":"string","description":"Guest name or part of it, e.g. \"Moreno\"."},"reservation_id":{"type":"string","description":"The PMS’s reservation id (from list_* or get_reservation)."}},"additionalProperties":false,"description":"Give at least one of confirmation_code, guest_name, reservation_id."},"returns":"An array of reservations (top level, or under \"reservations\"/\"items\"/\"data\"): { reservation_id, confirmation_code, guest_name, arrival, departure, room_number?, room_type?, status, adults?, children?, balance? }.","aliases":["find_reservation","search_reservations","search_reservation","reservations_list","list_reservations","lookup_reservation","get_booking","find_booking","search_bookings","get_reservations","reservation_search","find_guest","search_guests","get_guest"]},{"name":"check_in","title":"Check in","description":"Check a reservation in, optionally into a specific room.","annotations":{"readOnlyHint":false,"destructiveHint":false},"inputSchema":{"type":"object","properties":{"reservation_id":{"type":"string","description":"The PMS’s reservation id (from list_* or get_reservation)."},"room_number":{"type":"string","description":"Room number as shown at the front desk, e.g. \"14\"."}},"required":["reservation_id"],"additionalProperties":false},"returns":"The updated reservation (status checked_in, room_number) or { ok: true, message }.","aliases":["checkin","check_in_guest","checkin_guest","check_in_reservation","checkin_reservation","guest_check_in","reservation_check_in","do_check_in"]},{"name":"check_out","title":"Check out","description":"Check a reservation out (the PMS decides how balances are handled).","annotations":{"readOnlyHint":false,"destructiveHint":false},"inputSchema":{"type":"object","properties":{"reservation_id":{"type":"string","description":"The PMS’s reservation id (from list_* or get_reservation)."}},"required":["reservation_id"],"additionalProperties":false},"returns":"The updated reservation (status checked_out) or { ok: true, message }.","aliases":["checkout","check_out_guest","checkout_guest","check_out_reservation","checkout_reservation","guest_check_out","reservation_check_out","do_check_out"]},{"name":"assign_room","title":"Assign a room","description":"Assign (or move) a reservation to a room.","annotations":{"readOnlyHint":false,"destructiveHint":false},"inputSchema":{"type":"object","properties":{"reservation_id":{"type":"string","description":"The PMS’s reservation id (from list_* or get_reservation)."},"room_number":{"type":"string","description":"Room number as shown at the front desk, e.g. \"14\"."}},"required":["reservation_id","room_number"],"additionalProperties":false},"returns":"The updated reservation with room_number.","aliases":["assign_room_to_reservation","set_room","room_assign","assign_reservation_room","move_room","change_room","reservation_assign_room","allocate_room"]},{"name":"add_reservation_note","title":"Add a note","description":"Add a note or comment to a reservation, visible to the front desk.","annotations":{"readOnlyHint":false,"destructiveHint":false},"inputSchema":{"type":"object","properties":{"reservation_id":{"type":"string","description":"The PMS’s reservation id (from list_* or get_reservation)."},"note":{"type":"string","maxLength":1000}},"required":["reservation_id","note"],"additionalProperties":false},"returns":"{ ok: true } or the note as stored.","aliases":["add_note","create_note","reservation_add_note","add_reservation_comment","add_comment","post_note","note_reservation","add_booking_note"]},{"name":"get_availability","title":"Check availability","description":"Rooms or room types available for a stay, with prices if the PMS has them.","annotations":{"readOnlyHint":true,"destructiveHint":false},"inputSchema":{"type":"object","properties":{"check_in":{"type":"string","format":"date","description":"First night, YYYY-MM-DD."},"check_out":{"type":"string","format":"date","description":"Departure day (exclusive), YYYY-MM-DD."},"room_type":{"type":"string"}},"required":["check_in","check_out"],"additionalProperties":false},"returns":"An array of { room_type, available, rate? } or of free room numbers.","aliases":["availability","check_availability","search_availability","list_availability","get_room_availability","room_availability","available_rooms","list_available_rooms","get_inventory"]},{"name":"update_rates","title":"Update rates","description":"Change the nightly rate of a room type for a date range or a list of dates — to an amount, or by a percentage.","annotations":{"readOnlyHint":false,"destructiveHint":false},"inputSchema":{"type":"object","properties":{"room_type":{"type":"string","description":"Room type name or code, e.g. \"King\"."},"start_date":{"type":"string","format":"date","description":"First night, YYYY-MM-DD."},"end_date":{"type":"string","format":"date","description":"Last night (inclusive), YYYY-MM-DD. Omit for one night."},"dates":{"type":"array","items":{"type":"string","format":"date","description":"Calendar day, YYYY-MM-DD (hotel’s local date)."},"description":"Alternative to start/end: specific nights."},"amount":{"type":"number","description":"New nightly rate in the hotel’s currency."},"percent":{"type":"number","description":"Change by this percentage instead, e.g. 10 or -15."}},"required":["room_type"],"additionalProperties":false,"description":"Give start_date (+ end_date) or dates, and amount or percent."},"returns":"{ ok: true, updated_nights } or the new rates.","aliases":["set_rates","update_rate","set_rate","change_rates","adjust_rates","rates_update","update_room_rates","set_room_rate","update_prices","set_prices"]},{"name":"set_room_status","title":"Set room status","description":"Set a room’s housekeeping status: clean, dirty, inspected, out_of_order or out_of_service.","annotations":{"readOnlyHint":false,"destructiveHint":false},"inputSchema":{"type":"object","properties":{"room_number":{"type":"string","description":"Room number as shown at the front desk, e.g. \"14\"."},"status":{"type":"string","enum":["clean","dirty","inspected","out_of_order","out_of_service"]},"reason":{"type":"string","description":"Why, for out of order."}},"required":["room_number","status"],"additionalProperties":false},"returns":"The room with its new status.","aliases":["update_room_status","room_status","set_housekeeping_status","update_housekeeping_status","set_room_condition","mark_room","housekeeping_update"]}],"events":{"url":"https://hotelone.site/api/pms/events/{connectionId}","method":"POST","headers":{"Content-Type":"application/json","X-HotelOne-Timestamp":"Unix time in seconds","X-HotelOne-Signature":"sha256=<hex HMAC-SHA256 of `${timestamp}.${rawBody}` using the connection’s events secret>"},"body":{"id":"optional unique event id (deduplicated for 24 h)","type":"reservation.created","occurred_at":"ISO 8601","data":{}},"types":["reservation.created","reservation.updated","reservation.cancelled","reservation.checked_in","reservation.checked_out","room.status_changed","rates.updated","availability.changed","ping"],"toleranceSeconds":300,"maxBytes":65536}}