Serveur MCP

The Hill Kinabalu

io.github.tasutagazo/the-hill-kinabalu
Voyage et hôtellerie Public et accessible MCP 2025-11-25

Ce que fait ce MCP

Provides hotel room listings, date-specific availability, booking links, and wedding venue information for The Hill Kinabalu.

check_room_availability
Check room availability
Check The Hill Kinabalu room availability for an exact stay and party size. Before calling, collect check_in_date, check_out_date, and total_pax from the user; never invent missing values. Dates must use YYYY-MM-DD, check-out must be after check-in, and the maximum stay is 30 nights. Returns suitable room-type options and the number of rooms required. This is a read-only availability snapshot and does not create or hold a booking.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['check_in_date', 'check_out_date', 'total_pax'], 'properties': {'total_pax': {'type': 'integer', 'maximum': 40, 'minimum': 1, 'description': 'Total number of staying guests, including adults and children.'}, 'check_in_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Guest check-in date in YYYY-MM-DD format.'}, 'check_out_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Guest check-out date in YYYY-MM-DD format.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['apiVersion', 'property', 'query', 'available', 'availableRoomOptions', 'meta'], 'properties': {'meta': {'type': 'object', 'required': ['availableOptionCount', 'availabilityIsSnapshot', 'holdCreated', 'liveGuestOrBookingDataIncluded', 'note'], 'properties': {'note': {'type': 'string'}, 'holdCreated': {'type': 'boolean', 'const': False}, 'availableOptionCount': {'type': 'integer', 'minimum': 0}, 'availabilityIsSnapshot': {'type': 'boolean', 'const': True}, 'liveGuestOrBookingDataIncluded': {'type': 'boolean', 'const': False}}, 'additionalProperties': False}, 'query': {'type': 'object', 'required': ['checkInDate', 'checkOutDate', 'nights', 'totalPax'], 'properties': {'nights': {'type': 'integer', 'exclusiveMinimum': 0}, 'totalPax': {'type': 'integer', 'exclusiveMinimum': 0}, 'checkInDate': {'type': 'string'}, 'checkOutDate': {'type': 'string'}}, 'additionalProperties': False}, 'property': {'type': 'object', 'required': ['name', 'currency', 'timeZone'], 'properties': {'name': {'type': 'string', 'const': 'The Hill Kinabalu'}, 'currency': {'type': 'string', 'const': 'MYR'}, 'timeZone': {'type': 'string', 'const': 'Asia/Kuching'}}, 'additionalProperties': False}, 'available': {'type': 'boolean'}, 'apiVersion': {'type': 'string', 'const': '1.0'}, 'availableRoomOptions': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'slug', 'roomsRequired', 'maximumGuestsPerRoom', 'unitsAvailableForEntireStay', 'rates', 'links'], 'properties': {'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'links': {'type': 'object', 'required': ['details', 'booking'], 'properties': {'booking': {'type': 'string', 'format': 'uri'}, 'details': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'rates': {'type': 'object', 'required': ['currency', 'weekday', 'weekend', 'unit'], 'properties': {'unit': {'type': 'string', 'const': 'room_per_night'}, 'weekday': {'type': ['number', 'null']}, 'weekend': {'$ref': '#/properties/availableRoomOptions/items/properties/rates/properties/weekday'}, 'currency': {'type': 'string', 'const': 'MYR'}}, 'additionalProperties': False}, 'roomsRequired': {'type': 'integer', 'exclusiveMinimum': 0}, 'maximumGuestsPerRoom': {'type': 'integer', 'exclusiveMinimum': 0}, 'unitsAvailableForEntireStay': {'type': 'integer', 'minimum': 0}}, 'additionalProperties': False}}}, 'additionalProperties': False}
generate_booking_link
Generate booking link
Generate a verified The Hill Kinabalu checkout link only after the guest has supplied room_slug, check_in_date, check_out_date, and total_pax. Use a room_slug returned by check_room_availability. Never invent or calculate nights, room quantity, rates, totals, funnelSessionId, or visitorId: this tool validates availability and derives all of them on the server. If any required value is missing, invalid, or the selected room is unavailable, no checkout link is returned. This creates no booking and holds no inventory.
Lecture seule
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['room_slug', 'check_in_date', 'check_out_date', 'total_pax'], 'properties': {'room_slug': {'type': 'string', 'minLength': 1, 'description': 'Exact room slug selected from check_room_availability.'}, 'total_pax': {'type': 'integer', 'maximum': 40, 'minimum': 1, 'description': 'Total number of staying guests, including adults and children.'}, 'check_in_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Guest check-in date in YYYY-MM-DD format.'}, 'check_out_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Guest check-out date in YYYY-MM-DD format.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['apiVersion', 'property', 'selection', 'stay', 'pricing', 'verification', 'checkout'], 'properties': {'stay': {'type': 'object', 'required': ['checkInDate', 'checkOutDate', 'nights', 'totalPax'], 'properties': {'nights': {'type': 'integer', 'exclusiveMinimum': 0}, 'totalPax': {'type': 'integer', 'exclusiveMinimum': 0}, 'checkInDate': {'type': 'string'}, 'checkOutDate': {'type': 'string'}}, 'additionalProperties': False}, 'pricing': {'type': 'object', 'required': ['currency', 'total', 'totalFormatted', 'unit', 'calculatedByServer', 'nightlyBreakdown'], 'properties': {'unit': {'type': 'string', 'const': 'stay_total'}, 'total': {'type': 'number', 'exclusiveMinimum': 0}, 'currency': {'type': 'string', 'const': 'MYR'}, 'totalFormatted': {'type': 'string'}, 'nightlyBreakdown': {'type': 'array', 'items': {'type': 'object', 'required': ['date', 'rateType', 'ramadanRateApplied', 'ratePerRoom', 'rooms', 'lineTotal'], 'properties': {'date': {'type': 'string'}, 'rooms': {'type': 'integer', 'exclusiveMinimum': 0}, 'rateType': {'enum': ['weekday', 'weekend'], 'type': 'string'}, 'lineTotal': {'type': 'number', 'exclusiveMinimum': 0}, 'ratePerRoom': {'type': 'number', 'exclusiveMinimum': 0}, 'ramadanRateApplied': {'type': 'boolean'}}, 'additionalProperties': False}}, 'calculatedByServer': {'type': 'boolean', 'const': True}}, 'additionalProperties': False}, 'checkout': {'type': 'object', 'required': ['url', 'generatedByServer', 'analyticsSource'], 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'analyticsSource': {'type': 'string', 'const': 'mcp'}, 'generatedByServer': {'type': 'boolean', 'const': True}}, 'additionalProperties': False}, 'property': {'type': 'object', 'required': ['name', 'currency', 'timeZone'], 'properties': {'name': {'type': 'string', 'const': 'The Hill Kinabalu'}, 'currency': {'type': 'string', 'const': 'MYR'}, 'timeZone': {'type': 'string', 'const': 'Asia/Kuching'}}, 'additionalProperties': False}, 'selection': {'type': 'object', 'required': ['name', 'slug', 'inventoryKey', 'roomsRequired', 'maximumGuestsPerRoom', 'unitsAvailableForEntireStay'], 'properties': {'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'inventoryKey': {'type': 'string'}, 'roomsRequired': {'type': 'integer', 'exclusiveMinimum': 0}, 'maximumGuestsPerRoom': {'type': 'integer', 'exclusiveMinimum': 0}, 'unitsAvailableForEntireStay': {'type': 'integer', 'minimum': 0}}, 'additionalProperties': False}, 'apiVersion': {'type': 'string', 'const': '1.0'}, 'verification': {'type': 'object', 'required': ['allRequiredParametersSatisfied', 'liveAvailabilityChecked', 'totalCalculatedByServer', 'availabilityIsSnapshot', 'holdCreated', 'note'], 'properties': {'note': {'type': 'string'}, 'holdCreated': {'type': 'boolean', 'const': False}, 'availabilityIsSnapshot': {'type': 'boolean', 'const': True}, 'liveAvailabilityChecked': {'type': 'boolean', 'const': True}, 'totalCalculatedByServer': {'type': 'boolean', 'const': True}, 'allRequiredParametersSatisfied': {'type': 'boolean', 'const': True}}, 'additionalProperties': False}}, 'additionalProperties': False}
get_wedding_information
Get wedding information
Retrieve The Hill Kinabalu’s official public wedding venue and 2026/2027 package information, including capacity, event sizes, starting package prices, key inclusions, add-ons without prices, payment structures, and enquiry links. Use this when someone asks about weddings, wedding packages, the event venue, guest capacity, package pricing, or how to enquire. This tool does not check date availability or submit an enquiry.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['apiVersion', 'property', 'venue', 'collection', 'packages', 'addOns', 'paymentPlans', 'contact', 'meta'], 'properties': {'meta': {'type': 'object', 'required': ['catalogueOnly', 'liveAvailabilityIncluded', 'pricesAreStartingPrices', 'addOnPricesIncluded'], 'properties': {'catalogueOnly': {'type': 'boolean', 'const': True}, 'addOnPricesIncluded': {'type': 'boolean', 'const': False}, 'pricesAreStartingPrices': {'type': 'boolean', 'const': True}, 'liveAvailabilityIncluded': {'type': 'boolean', 'const': False}}, 'additionalProperties': False}, 'venue': {'type': 'object', 'required': ['name', 'location', 'description', 'maximumGuests', 'usableSpace', 'parkingCapacityVehicles', 'spaces', 'viewNote'], 'properties': {'name': {'type': 'string'}, 'spaces': {'type': 'array', 'items': {'type': 'string'}}, 'location': {'type': 'string'}, 'viewNote': {'type': 'string'}, 'description': {'type': 'string'}, 'usableSpace': {'type': 'string'}, 'maximumGuests': {'type': 'integer', 'exclusiveMinimum': 0}, 'parkingCapacityVehicles': {'type': 'integer', 'exclusiveMinimum': 0}}, 'additionalProperties': False}, 'addOns': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'description', 'pricePublished'], 'properties': {'name': {'type': 'string'}, 'description': {'type': 'string'}, 'pricePublished': {'type': 'boolean', 'const': False}}, 'additionalProperties': False}}, 'contact': {'type': 'object', 'required': ['weddingHotline', 'details', 'enquiry'], 'properties': {'details': {'type': 'string', 'format': 'uri'}, 'enquiry': {'type': 'string', 'format': 'uri'}, 'weddingHotline': {'type': 'string'}}, 'additionalProperties': False}, 'packages': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'description', 'startingPrice', 'keyInclusions'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'description': {'type': 'string'}, 'keyInclusions': {'type': 'array', 'items': {'type': 'string'}}, 'startingPrice': {'type': 'object', 'required': ['currency', 'amount', 'qualifier'], 'properties': {'amount': {'type': 'number', 'minimum': 0}, 'currency': {'type': 'string', 'const': 'MYR'}, 'qualifier': {'type': 'string', 'const': 'from'}}, 'additionalProperties': False}}, 'additionalProperties': False}}, 'property': {'type': 'object', 'required': ['name', 'currency'], 'properties': {'name': {'type': 'string', 'const': 'The Hill Kinabalu'}, 'currency': {'type': 'string', 'const': 'MYR'}}, 'additionalProperties': False}, 'apiVersion': {'type': 'string', 'const': '1.0'}, 'collection': {'type': 'object', 'required': ['years', 'eventDurationHours', 'eventSizes', 'commonInclusions'], 'properties': {'years': {'type': 'string'}, 'eventSizes': {'type': 'array', 'items': {'type': 'object', 'required': ['guests', 'setup'], 'properties': {'setup': {'type': 'string'}, 'guests': {'type': 'integer', 'exclusiveMinimum': 0}}, 'additionalProperties': False}}, 'commonInclusions': {'type': 'array', 'items': {'type': 'string'}}, 'eventDurationHours': {'type': 'number', 'exclusiveMinimum': 0}}, 'additionalProperties': False}, 'paymentPlans': {'type': 'array', 'items': {'type': 'object', 'required': ['label', 'structure', 'terms'], 'properties': {'label': {'type': 'string'}, 'terms': {'type': 'string'}, 'structure': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
list_rooms
List rooms
Retrieve The Hill Kinabalu’s official current room catalogue, including room types, indicative weekday and weekend rates, guest capacity, beds, amenities, unit counts, images, and booking links. Use this when someone asks which rooms The Hill Kinabalu offers or what its room rates are. This catalogue does not check availability for specific dates.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['apiVersion', 'property', 'rooms', 'meta'], 'properties': {'meta': {'type': 'object', 'required': ['count', 'catalogueOnly', 'liveAvailabilityIncluded'], 'properties': {'count': {'type': 'integer', 'minimum': 0}, 'catalogueOnly': {'type': 'boolean', 'const': True}, 'liveAvailabilityIncluded': {'type': 'boolean', 'const': False}}, 'additionalProperties': False}, 'rooms': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'slug', 'category', 'description', 'occupancy', 'beds', 'amenities', 'rates', 'totalUnits', 'media', 'links'], 'properties': {'id': {'type': 'string'}, 'beds': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'count'], 'properties': {'type': {'$ref': '#/properties/rooms/items/properties/category'}, 'count': {'$ref': '#/properties/rooms/items/properties/occupancy/properties/standardGuests'}}, 'additionalProperties': False}}, 'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'links': {'type': 'object', 'required': ['details', 'booking'], 'properties': {'booking': {'type': 'string', 'format': 'uri'}, 'details': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}, 'media': {'type': 'object', 'required': ['mainImageUrl', 'mainImageAlt'], 'properties': {'mainImageAlt': {'$ref': '#/properties/rooms/items/properties/category'}, 'mainImageUrl': {'$ref': '#/properties/rooms/items/properties/category'}}, 'additionalProperties': False}, 'rates': {'type': 'object', 'required': ['currency', 'weekday', 'weekend', 'unit', 'availabilityIncluded'], 'properties': {'unit': {'type': 'string', 'const': 'room_per_night'}, 'weekday': {'$ref': '#/properties/rooms/items/properties/occupancy/properties/standardGuests'}, 'weekend': {'$ref': '#/properties/rooms/items/properties/occupancy/properties/standardGuests'}, 'currency': {'type': 'string', 'const': 'MYR'}, 'availabilityIncluded': {'type': 'boolean', 'const': False}}, 'additionalProperties': False}, 'category': {'type': ['string', 'null']}, 'amenities': {'type': 'array', 'items': {'type': 'string'}}, 'occupancy': {'type': 'object', 'required': ['standardGuests', 'maximumGuests'], 'properties': {'maximumGuests': {'$ref': '#/properties/rooms/items/properties/occupancy/properties/standardGuests'}, 'standardGuests': {'type': ['number', 'null']}}, 'additionalProperties': False}, 'totalUnits': {'$ref': '#/properties/rooms/items/properties/occupancy/properties/standardGuests'}, 'description': {'$ref': '#/properties/rooms/items/properties/category'}}, 'additionalProperties': False}}, 'property': {'type': 'object', 'required': ['name', 'currency'], 'properties': {'name': {'type': 'string', 'const': 'The Hill Kinabalu'}, 'currency': {'type': 'string', 'const': 'MYR'}}, 'additionalProperties': False}, 'apiVersion': {'type': 'string', 'const': '1.0'}}, 'additionalProperties': False}
Ajouté
get_wedding_information
17 September 2026 12:52
Ajouté
generate_booking_link
17 September 2026 12:52
Ajouté
check_room_availability
17 September 2026 12:52
Ajouté
list_rooms
17 September 2026 12:52