Hotelumo Hotel Operations
What this MCP does
Provides read-only hotel inventory, room availability, rates, extras, schedules, and aggregate operational summaries.
Tools
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['hotelId'], 'properties': {'hotelId': {'type': 'string', 'pattern': '^[0-9a-f]{24}$', 'description': 'Hotel id: 24 lowercase hexadecimal characters'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['status', 'hotel'], 'properties': {'hotel': {'anyOf': [{'type': 'object', 'required': ['id', 'name', 'currency', 'locale', 'timezone', 'countryCode', 'checkInDefaultTime', 'checkOutDefaultTime', 'lastEditTime'], 'properties': {'id': {'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, 'name': {'anyOf': [{'type': 'string', 'maxLength': 200}, {'type': 'null'}]}, 'locale': {'$ref': '#/properties/hotel/anyOf/0/properties/name'}, 'currency': {'$ref': '#/properties/hotel/anyOf/0/properties/name'}, 'timezone': {'$ref': '#/properties/hotel/anyOf/0/properties/name'}, 'countryCode': {'$ref': '#/properties/hotel/anyOf/0/properties/name'}, 'lastEditTime': {'$ref': '#/properties/hotel/anyOf/0/properties/name'}, 'checkInDefaultTime': {'$ref': '#/properties/hotel/anyOf/0/properties/name'}, 'checkOutDefaultTime': {'$ref': '#/properties/hotel/anyOf/0/properties/name'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'Operational hotel metadata; null when not found. Contact details, addresses, integrations, credentials, payment configuration, reminders and guest data are never returned.'}, 'status': {'enum': ['found', 'not-found'], 'type': 'string'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['hotelId', 'checkInDate', 'checkOutDate'], 'properties': {'adults': {'type': 'integer', 'maximum': 20, 'minimum': 1, 'description': 'Adults staying, from 1 to 20; defaults to 2'}, 'hotelId': {'type': 'string', 'pattern': '^[0-9a-f]{24}$', 'description': 'Hotel id: 24 lowercase hexadecimal characters'}, 'infants': {'type': 'integer', 'maximum': 20, 'minimum': 0, 'description': 'Infants staying, from 0 to 20; defaults to 0'}, 'children': {'type': 'integer', 'maximum': 20, 'minimum': 0, 'description': 'Children staying, from 0 to 20; defaults to 0'}, 'checkInDate': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': "Arrival date as YYYY-MM-DD, from today to 365 days ahead in the hotel's timezone"}, 'checkOutDate': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Departure date as YYYY-MM-DD, 1 to 30 nights after checkInDate'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['search', 'offers', 'offersAreTruncated'], 'properties': {'offers': {'type': 'array', 'items': {'type': 'object', 'required': ['roomTypeId', 'roomTypeName', 'ratePlanId', 'ratePlanTitle', 'mealPlan', 'sellMode', 'availableRooms', 'nightlyRate', 'totalPrice', 'currency', 'nightlyRates'], 'properties': {'currency': {'$ref': '#/properties/offers/items/properties/roomTypeName'}, 'mealPlan': {'$ref': '#/properties/offers/items/properties/roomTypeName'}, 'sellMode': {'$ref': '#/properties/offers/items/properties/roomTypeName'}, 'ratePlanId': {'$ref': '#/properties/offers/items/properties/roomTypeId'}, 'roomTypeId': {'anyOf': [{'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, {'type': 'null'}]}, 'totalPrice': {'$ref': '#/properties/offers/items/properties/nightlyRate'}, 'nightlyRate': {'anyOf': [{'type': 'number', 'maximum': 1000000000000, 'minimum': 0}, {'type': 'null'}]}, 'nightlyRates': {'type': 'array', 'items': {'type': 'object', 'required': ['date', 'price'], 'properties': {'date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, 'price': {'$ref': '#/properties/offers/items/properties/nightlyRate'}}, 'additionalProperties': False}, 'maxItems': 30}, 'roomTypeName': {'anyOf': [{'type': 'string', 'maxLength': 200}, {'type': 'null'}]}, 'ratePlanTitle': {'$ref': '#/properties/offers/items/properties/roomTypeName'}, 'availableRooms': {'anyOf': [{'type': 'integer', 'maximum': 100000, 'minimum': 0}, {'type': 'null'}]}}, 'additionalProperties': False}, 'maxItems': 100, 'description': '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': {'type': 'object', 'required': ['checkInDate', 'checkOutDate', 'nights', 'adults', 'children', 'infants'], 'properties': {'adults': {'type': 'integer', 'maximum': 20, 'minimum': 1}, 'nights': {'type': 'integer', 'maximum': 30, 'minimum': 1}, 'infants': {'type': 'integer', 'maximum': 20, 'minimum': 0}, 'children': {'type': 'integer', 'maximum': 20, 'minimum': 0}, 'checkInDate': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, 'checkOutDate': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}}, 'additionalProperties': False}, 'offersAreTruncated': {'type': 'boolean', 'description': 'True when more than 100 offers matched the search'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['hotelId'], 'properties': {'dateTo': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Last day as YYYY-MM-DD (inclusive), at most 31 days in total; defaults to six days after dateFrom'}, 'hotelId': {'type': 'string', 'pattern': '^[0-9a-f]{24}$', 'description': 'Hotel id: 24 lowercase hexadecimal characters'}, 'dateFrom': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'First day as YYYY-MM-DD (inclusive); defaults to today in UTC'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['hotel', 'range', 'reservationCount', 'reservationCountIsLowerBound', 'statusCounts', 'days'], 'properties': {'days': {'type': 'array', 'items': {'type': 'object', 'required': ['day', 'arrivals', 'departures', 'inHouseReservations'], 'properties': {'day': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, 'arrivals': {'type': 'integer', 'maximum': 500, 'minimum': 0}, 'departures': {'type': 'integer', 'maximum': 500, 'minimum': 0}, 'inHouseReservations': {'type': 'integer', 'maximum': 500, 'minimum': 0}}, 'additionalProperties': False}, 'maxItems': 31, 'description': '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': {'type': 'object', 'required': ['id', 'name', 'timezone'], 'properties': {'id': {'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, 'name': {'anyOf': [{'type': 'string', 'maxLength': 200}, {'type': 'null'}]}, 'timezone': {'$ref': '#/properties/hotel/properties/name'}}, 'additionalProperties': False}, 'range': {'type': 'object', 'required': ['dateFrom', 'dateTo'], 'properties': {'dateTo': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, 'dateFrom': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}}, 'additionalProperties': False}, 'statusCounts': {'type': 'object', 'description': 'Reservations overlapping the range by status, inquiries, requests, no-shows and cancellations included', 'propertyNames': {'enum': ['INQUIRY', 'REQUESTED', 'CONFIRMED', 'CHECKED_IN', 'CHECKED_OUT', 'NO_SHOW', 'CANCELED', 'UNSPECIFIED']}, 'additionalProperties': {'type': 'integer', 'maximum': 500, 'minimum': 0}}, 'reservationCount': {'type': 'integer', 'maximum': 500, 'minimum': 0}, 'reservationCountIsLowerBound': {'type': 'boolean', 'description': 'True when more than 500 reservations overlap the range'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['roomTypeId'], 'properties': {'roomTypeId': {'type': 'string', 'pattern': '^[0-9a-f]{24}$', 'description': 'Room type id: 24 lowercase hexadecimal characters'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['status', 'roomType'], 'properties': {'status': {'enum': ['found', 'not-found'], 'type': 'string'}, 'roomType': {'anyOf': [{'type': 'object', 'required': ['id', 'hotelId', 'name', 'maxGuests', 'lastEditTime'], 'properties': {'id': {'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, 'name': {'anyOf': [{'type': 'string', 'maxLength': 200}, {'type': 'null'}]}, 'hotelId': {'anyOf': [{'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, {'type': 'null'}]}, 'maxGuests': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'lastEditTime': {'$ref': '#/properties/roomType/anyOf/0/properties/name'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'Null when not found. Free-text descriptions, facilities, photos, channel mappings, integrations, credentials and arbitrary metadata are never returned.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['hotelId', 'ratePlanId', 'dateFrom', 'dateTo'], 'properties': {'dateTo': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Last night as YYYY-MM-DD (inclusive); the range covers at most 90 days'}, 'hotelId': {'type': 'string', 'pattern': '^[0-9a-f]{24}$', 'description': 'Hotel id: 24 lowercase hexadecimal characters'}, 'dateFrom': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'First night as YYYY-MM-DD (inclusive)'}, 'ratePlanId': {'type': 'string', 'pattern': '^[0-9a-f]{24}$', 'description': 'Rate plan id, belonging to hotelId: 24 lowercase hexadecimal characters'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['status', 'dailyRates'], 'properties': {'status': {'enum': ['found', 'not-found'], 'type': 'string'}, 'dailyRates': {'type': 'array', 'items': {'type': 'object', 'required': ['ratePlanId', 'date', 'price', 'minStay', 'closedToArrival', 'closedToDeparture', 'stopSell'], 'properties': {'date': {'anyOf': [{'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, {'type': 'null'}]}, 'price': {'anyOf': [{'type': 'number', 'maximum': 1000000000000, 'minimum': 0}, {'type': 'null'}]}, 'minStay': {'anyOf': [{'type': 'integer', 'maximum': 365, 'minimum': 0}, {'type': 'null'}]}, 'stopSell': {'type': 'boolean'}, 'ratePlanId': {'anyOf': [{'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, {'type': 'null'}]}, 'closedToArrival': {'type': 'boolean'}, 'closedToDeparture': {'type': 'boolean'}}, 'additionalProperties': False}, 'maxItems': 90, 'description': "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."}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'description': 'Extras per page, from 1 to 100; defaults to 20', 'exclusiveMinimum': 0}, 'offset': {'type': 'integer', 'maximum': 10000, 'minimum': 0, 'description': 'Extras to skip, from 0 to 10000; defaults to 0. For the next page pass offset + limit'}, 'hotelId': {'type': 'string', 'pattern': '^[0-9a-f]{24}$', 'description': 'Only this hotel (24 lowercase hexadecimal characters); every hotel when absent'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['extras', 'page'], 'properties': {'page': {'type': 'object', 'required': ['limit', 'offset', 'returned', 'hasMore'], 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'exclusiveMinimum': 0}, 'offset': {'type': 'integer', 'maximum': 10000, 'minimum': 0}, 'hasMore': {'type': 'boolean'}, 'returned': {'type': 'integer', 'maximum': 100, 'minimum': 0}}, 'description': 'hasMore is true when another page exists; request it with offset + limit', 'additionalProperties': False}, 'extras': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'price', 'currency', 'taxable', 'category'], 'properties': {'name': {'anyOf': [{'type': 'string', 'maxLength': 200}, {'type': 'null'}]}, 'price': {'anyOf': [{'type': 'number', 'maximum': 1000000000000, 'minimum': 0}, {'type': 'null'}]}, 'taxable': {'type': 'boolean'}, 'category': {'anyOf': [{'$ref': '#/properties/extras/items/properties/name/anyOf/0'}, {'type': 'null'}], 'description': 'BREAKFAST, PARKING, SPA, TRANSFER, FEE or OTHER'}, 'currency': {'$ref': '#/properties/extras/items/properties/name'}}, 'additionalProperties': False}, 'maxItems': 100, 'description': 'Active extras; price is in integer minor currency units. Guest charges, folio data, display colors and credentials are excluded.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'description': 'Hotels per page, from 1 to 100; defaults to 20', 'exclusiveMinimum': 0}, 'offset': {'type': 'integer', 'maximum': 10000, 'minimum': 0, 'description': 'Hotels to skip, from 0 to 10000; defaults to 0. For the next page pass offset + limit'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['hotels', 'page'], 'properties': {'page': {'type': 'object', 'required': ['limit', 'offset', 'returned', 'hasMore'], 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'exclusiveMinimum': 0}, 'offset': {'type': 'integer', 'maximum': 10000, 'minimum': 0}, 'hasMore': {'type': 'boolean'}, 'returned': {'type': 'integer', 'maximum': 100, 'minimum': 0}}, 'description': 'hasMore is true when another page exists; request it with offset + limit', 'additionalProperties': False}, 'hotels': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'currency', 'locale', 'timezone', 'lastEditTime'], 'properties': {'id': {'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, 'name': {'anyOf': [{'type': 'string', 'maxLength': 200}, {'type': 'null'}]}, 'locale': {'$ref': '#/properties/hotels/items/properties/name'}, 'currency': {'$ref': '#/properties/hotels/items/properties/name'}, 'timezone': {'$ref': '#/properties/hotels/items/properties/name'}, 'lastEditTime': {'$ref': '#/properties/hotels/items/properties/name'}}, 'additionalProperties': False}, 'maxItems': 100, 'description': 'Hotels in the signed-in organization. Addresses, phone numbers, channel credentials, payment configuration, reminder configuration and guest data are excluded.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['hotelId'], 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'description': 'Rate plans per page, from 1 to 100; defaults to 20', 'exclusiveMinimum': 0}, 'offset': {'type': 'integer', 'maximum': 10000, 'minimum': 0, 'description': 'Rate plans to skip, from 0 to 10000; defaults to 0. For the next page pass offset + limit'}, 'hotelId': {'type': 'string', 'pattern': '^[0-9a-f]{24}$', 'description': 'Hotel id: 24 lowercase hexadecimal characters'}, 'roomTypeId': {'type': 'string', 'pattern': '^[0-9a-f]{24}$', 'description': 'Only this room type (24 lowercase hexadecimal characters)'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ratePlans', 'page'], 'properties': {'page': {'type': 'object', 'required': ['limit', 'offset', 'returned', 'hasMore'], 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'exclusiveMinimum': 0}, 'offset': {'type': 'integer', 'maximum': 10000, 'minimum': 0}, 'hasMore': {'type': 'boolean'}, 'returned': {'type': 'integer', 'maximum': 100, 'minimum': 0}}, 'description': 'hasMore is true when another page exists; request it with offset + limit', 'additionalProperties': False}, 'ratePlans': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'roomTypeId', 'title', 'basePrice', 'currency', 'mealPlan', 'sellMode', 'rateMode', 'isDefault'], 'properties': {'id': {'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, 'title': {'anyOf': [{'type': 'string', 'maxLength': 200}, {'type': 'null'}]}, 'currency': {'$ref': '#/properties/ratePlans/items/properties/title'}, 'mealPlan': {'$ref': '#/properties/ratePlans/items/properties/title'}, 'rateMode': {'anyOf': [{'$ref': '#/properties/ratePlans/items/properties/title/anyOf/0'}, {'type': 'null'}], 'description': 'manual or derived'}, 'sellMode': {'$ref': '#/properties/ratePlans/items/properties/title'}, 'basePrice': {'anyOf': [{'type': 'number', 'maximum': 1000000000000, 'minimum': 0}, {'type': 'null'}]}, 'isDefault': {'type': 'boolean'}, 'roomTypeId': {'anyOf': [{'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, {'type': 'null'}]}}, 'additionalProperties': False}, 'maxItems': 100, 'description': 'basePrice is in integer minor currency units. Channel-manager mappings, integration metadata and credentials are excluded.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'description': 'Rooms per page, from 1 to 100; defaults to 20', 'exclusiveMinimum': 0}, 'offset': {'type': 'integer', 'maximum': 10000, 'minimum': 0, 'description': 'Rooms to skip, from 0 to 10000; defaults to 0. For the next page pass offset + limit'}, 'hotelId': {'type': 'string', 'pattern': '^[0-9a-f]{24}$', 'description': 'Only this hotel (24 lowercase hexadecimal characters); every hotel when absent'}, 'roomTypeId': {'type': 'string', 'pattern': '^[0-9a-f]{24}$', 'description': 'Only this room type (24 lowercase hexadecimal characters)'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['rooms', 'page'], 'properties': {'page': {'type': 'object', 'required': ['limit', 'offset', 'returned', 'hasMore'], 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'exclusiveMinimum': 0}, 'offset': {'type': 'integer', 'maximum': 10000, 'minimum': 0}, 'hasMore': {'type': 'boolean'}, 'returned': {'type': 'integer', 'maximum': 100, 'minimum': 0}}, 'description': 'hasMore is true when another page exists; request it with offset + limit', 'additionalProperties': False}, 'rooms': {'type': 'array', 'items': {'type': 'object', 'required': ['hotelId', 'roomTypeId', 'name', 'status', 'housekeepingStatus', 'lastEditTime'], 'properties': {'name': {'anyOf': [{'type': 'string', 'maxLength': 200}, {'type': 'null'}]}, 'status': {'anyOf': [{'$ref': '#/properties/rooms/items/properties/name/anyOf/0'}, {'type': 'null'}], 'description': 'AVAILABLE (in service, not a statement about occupancy), OUT_OF_ORDER or OUT_OF_SERVICE'}, 'hotelId': {'anyOf': [{'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, {'type': 'null'}]}, 'roomTypeId': {'$ref': '#/properties/rooms/items/properties/hotelId'}, 'lastEditTime': {'$ref': '#/properties/rooms/items/properties/name'}, 'housekeepingStatus': {'anyOf': [{'$ref': '#/properties/rooms/items/properties/name/anyOf/0'}, {'type': 'null'}], 'description': 'CLEAN, DIRTY or INSPECTED'}}, 'additionalProperties': False}, 'maxItems': 100, 'description': 'Physical rooms sorted by name. Internal room ids, reservation, occupant, guest, access-control and channel data are excluded.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'description': 'Room types per page, from 1 to 100; defaults to 20', 'exclusiveMinimum': 0}, 'offset': {'type': 'integer', 'maximum': 10000, 'minimum': 0, 'description': 'Room types to skip, from 0 to 10000; defaults to 0. For the next page pass offset + limit'}, 'hotelId': {'type': 'string', 'pattern': '^[0-9a-f]{24}$', 'description': 'Only this hotel (24 lowercase hexadecimal characters); every hotel when absent'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['roomTypes', 'page'], 'properties': {'page': {'type': 'object', 'required': ['limit', 'offset', 'returned', 'hasMore'], 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'exclusiveMinimum': 0}, 'offset': {'type': 'integer', 'maximum': 10000, 'minimum': 0}, 'hasMore': {'type': 'boolean'}, 'returned': {'type': 'integer', 'maximum': 100, 'minimum': 0}}, 'description': 'hasMore is true when another page exists; request it with offset + limit', 'additionalProperties': False}, 'roomTypes': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'hotelId', 'name', 'maxGuests', 'lastEditTime'], 'properties': {'id': {'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, 'name': {'anyOf': [{'type': 'string', 'maxLength': 200}, {'type': 'null'}]}, 'hotelId': {'anyOf': [{'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, {'type': 'null'}]}, 'maxGuests': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'lastEditTime': {'$ref': '#/properties/roomTypes/items/properties/name'}}, 'additionalProperties': False}, 'maxItems': 100, 'description': 'Room types sorted by name. Photos, public descriptions, rate-plan internals, channel mappings and credentials are excluded.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['hotelId'], 'properties': {'hotelId': {'type': 'string', 'pattern': '^[0-9a-f]{24}$', 'description': 'Hotel id: 24 lowercase hexadecimal characters'}}}
Output schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['hotel', 'scheduleRange', 'reservations', 'rooms', 'roomTypes', 'reservationStatusCounts', 'roomStatusCounts', 'housekeepingStatusCounts'], 'properties': {'hotel': {'anyOf': [{'type': 'object', 'required': ['id', 'name', 'currency', 'locale', 'timezone'], 'properties': {'id': {'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, 'name': {'anyOf': [{'type': 'string', 'maxLength': 200}, {'type': 'null'}]}, 'locale': {'anyOf': [{'type': 'string', 'maxLength': 200}, {'type': 'null'}]}, 'currency': {'anyOf': [{'type': 'string', 'maxLength': 200}, {'type': 'null'}]}, 'timezone': {'anyOf': [{'type': 'string', 'maxLength': 200}, {'type': 'null'}]}}, 'additionalProperties': False}, {'type': 'null'}], 'description': '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': {'type': 'object', 'required': ['count', 'hasMore'], 'properties': {'count': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'hasMore': {'type': 'boolean'}}, 'description': 'Physical rooms, sampled up to 100; hasMore marks a lower bound', 'additionalProperties': False}, 'roomTypes': {'type': 'object', 'required': ['count', 'hasMore'], 'properties': {'count': {'type': 'integer', 'maximum': 50, 'minimum': 0}, 'hasMore': {'type': 'boolean'}}, 'description': 'Room types, sampled up to 50; hasMore marks a lower bound', 'additionalProperties': False}, 'reservations': {'type': 'object', 'required': ['count', 'hasMore'], 'properties': {'count': {'type': 'integer', 'maximum': 50, 'minimum': 0}, 'hasMore': {'type': 'boolean'}}, 'description': 'Reservations overlapping the next seven UTC days, any status, sampled up to 50; hasMore marks a lower bound', 'additionalProperties': False}, 'scheduleRange': {'type': 'object', 'required': ['dateFrom', 'dateTo'], 'properties': {'dateTo': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, 'dateFrom': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}}, 'additionalProperties': False}, 'roomStatusCounts': {'type': 'object', 'propertyNames': {'enum': ['AVAILABLE', 'OUT_OF_ORDER', 'OUT_OF_SERVICE', 'UNSPECIFIED'], 'type': 'string'}, 'additionalProperties': {'type': 'integer', 'maximum': 100, 'minimum': 0}}, 'reservationStatusCounts': {'type': 'object', 'propertyNames': {'enum': ['INQUIRY', 'REQUESTED', 'CONFIRMED', 'CHECKED_IN', 'CHECKED_OUT', 'NO_SHOW', 'CANCELED', 'UNSPECIFIED'], 'type': 'string'}, 'additionalProperties': {'type': 'integer', 'maximum': 50, 'minimum': 0}}, 'housekeepingStatusCounts': {'type': 'object', 'propertyNames': {'enum': ['CLEAN', 'DIRTY', 'INSPECTED', 'UNSPECIFIED'], 'type': 'string'}, 'additionalProperties': {'type': 'integer', 'maximum': 100, 'minimum': 0}}}, 'additionalProperties': False}
Recent tool changes
Similar MCP servers
Gover MCP
Searches and manages corporate travel requests, flights, hotels, rental vehicles, passengers, carts, approvals, reservations, and…
Gsa Perdiem
Returns official US federal per diem lodging and meal rates by city, state, or ZIP code.
smoobu
Manages vacation-rental properties, reservations, availability, rates, guest communications and channel-synchronized bookings.
beds24
Manages Beds24 lodging properties, bookings, availability, rates, room calendars, guest messages, reviews and booking invoices.
delegacja
Calculates, stores, summarizes, and exports domestic and international business-trip per diem allowances using bundled rate schem…
per-diem
Calculates and records travel allowances from Poland, HMRC, and GSA CONUS rate tables, with trip listings and reports.
Partelisto
Manages Spanish vacation-rental properties, bookings, guest check-in links, and SES.HOSPEDAJES submission statuses without exposi…
reservations
Lists bookable resources and availability and manages reservations for a booking tenant.