{"ok":true,"site":{"host":"dehofkamers.be","url":"https://www.dehofkamers.be/","desc":"Hotel De Hofkamers","type":"live","category":"Travel & Events","favicon":"/favicons/dehofkamers.be.ico","tools":[{"name":"thn_internal__get_state_info","kind":"answer","impl":"imperative","description":"THN internal tool for THN staff. Returns a runtime snapshot of the THN Web SDK global state on the current hotel webpage, including property and hotel identifiers, booking system, page name, language, device, SDK version, environment, and hostname. Use this when a THN staff member needs to understand the current SDK context — for example to confirm which property is loaded, which environment is active, or which SDK version is running. Do not use this tool for hotel-guest-facing tasks; it exposes internal SDK identifiers that are not meaningful to end users.","inputSchema":{"type":"object","additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/extra-1","/gallery","/local-area","/rooms","/custom/packages"]},{"name":"thn_internal__get_dom_element","kind":"answer","impl":"imperative","description":"THN internal tool for THN staff. Finds a DOM element on the current hotel webpage using a CSS selector and returns its innerHTML. Use this when a THN staff member needs to inspect the rendered HTML of a specific element — for example to verify that a THN widget or message is present in the DOM and correctly rendered. Returns found: true with the markup in html when the element exists, or found: false when no matching element exists. This tool does not modify the DOM; use thn_internal__show_message or thn_internal__hide_message to control message visibility.","inputSchema":{"type":"object","properties":{"selector":{"type":"string","minLength":1,"description":"A valid CSS selector identifying the element to inspect, e.g. \"#thn-note\" or \".thn-widget\""}},"required":["selector"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/extra-1","/gallery","/local-area","/rooms","/custom/packages"]},{"name":"thn_internal__list_messages","kind":"answer","impl":"imperative","description":"THN internal tool for THN staff. Lists all messages currently registered across all THN widget types (note, exit, layer, inliner) on the hotel webpage. Returns each message's ID, name, and the widget it belongs to. Use this as a first step when a THN staff member needs to identify which messages are available before calling thn_internal__get_message_state, thn_internal__show_message, or thn_internal__hide_message. This tool does not filter by visibility or state — it lists all registered messages regardless of whether they are currently shown, hidden, or eligible to display.","inputSchema":{"type":"object","additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/extra-1","/gallery","/local-area","/rooms","/custom/packages"]},{"name":"thn_internal__get_message_state","kind":"answer","impl":"imperative","description":"THN internal tool for THN staff. Returns the current runtime state of a specific THN message identified by its ID, including flags such as opened, closed, and the widget type it belongs to. Use this when a THN staff member needs to diagnose why a message is or is not displaying — for example to check whether it has already been opened, closed, or is being suppressed. Use thn_internal__list_messages first to discover available message IDs. Throws an error if the message ID is not found in any widget.","inputSchema":{"type":"object","properties":{"messageId":{"type":"string","description":"The ID of the message to inspect, as returned by thn_internal__list_messages"}},"required":["messageId"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/extra-1","/gallery","/local-area","/rooms","/custom/packages"]},{"name":"thn_internal__show_message","kind":"act","impl":"imperative","description":"THN internal tool for THN staff. Forces a THN message to display on the hotel webpage, bypassing all normal display guards such as frequency caps, triggers, beacons, and eligibility rules. Returns the message's previous and current state after the forced display. Use this when a THN staff member needs to preview or test a specific message regardless of whether it would normally be shown. This tool mutates widget state and stubs internal widget methods for the duration of the call — it is intended for inspection and testing only, not for production user flows. Use thn_internal__list_messages to find message IDs, and thn_internal__hide_message to reverse the effect. Throws an error if the message ID is not found.","inputSchema":{"type":"object","properties":{"messageId":{"type":"string","description":"The ID of the message to force-display, as returned by thn_internal__list_messages"}},"required":["messageId"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/extra-1","/gallery","/local-area","/rooms","/custom/packages"]},{"name":"thn_internal__hide_message","kind":"act","impl":"imperative","description":"THN internal tool for THN staff. Hides a currently displayed THN message on the hotel webpage, either by gracefully animating it out of the DOM (if it is actively rendered) or by marking it as closed in state to prevent future display. Use this when a THN staff member needs to dismiss a message during inspection or testing — for example after using thn_internal__show_message to force-display it. This tool mutates widget and message state; it is intended for inspection and testing only. Use thn_internal__list_messages to find message IDs. Throws an error if the message ID is not found in any widget.","inputSchema":{"type":"object","properties":{"messageId":{"type":"string","description":"The ID of the message to hide, as returned by thn_internal__list_messages"}},"required":["messageId"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/extra-1","/gallery","/local-area","/rooms","/custom/packages"]},{"name":"thn_internal__get_bus_history","kind":"answer","impl":"imperative","description":"THN internal tool for THN staff. Reads the recent history of events emitted on the THN Web SDK internal event bus, returning each event name and its arguments. Use this when a THN staff member needs to trace SDK activity — for example to verify that a specific event was fired, to understand the sequence of events leading to a behaviour, or to debug event-driven logic. Results can be filtered by a regex pattern on the event name and limited in count (default 50, most recent events returned last). Note that event arguments containing DOM elements or functions are collapsed to compact placeholders to avoid serialization issues.","inputSchema":{"type":"object","properties":{"limit":{"type":"number","description":"Maximum number of events to return: the most recent ones, listed oldest to newest. Defaults to 50.","default":50},"filter":{"type":"string","description":"Optional regex pattern to filter events by name, e.g. \"message\" or \"^booking\""}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/extra-1","/gallery","/local-area","/rooms","/custom/packages"]},{"name":"thn_site__get_hotel_info","kind":"answer","impl":"imperative","description":"Returns basic information about the hotel whose website the guest is currently browsing: its name, website URL, main currency, location, geographic area and type of establishment (for example Hotels, Resorts or Apartments). Use this when the guest asks what this property is, where it is located, or which currency it works in. Any piece of information that is not available is returned as null. Takes no input.","inputSchema":{"type":"object","additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/extra-1","/gallery","/local-area","/rooms","/custom/packages"]},{"name":"thn_site__check_availability","kind":"answer","impl":"imperative","description":"Checks whether the hotel has rooms available for the given check-in and check-out dates and room occupancy (adults, children and children ages per room). Use this when the guest asks if there is availability on specific dates. Currently returns a message saying it is not available yet, with the hotel website URL to continue on.","inputSchema":{"type":"object","properties":{"checkIn":{"type":"string","description":"Check-in date in YYYY-MM-DD format"},"checkOut":{"type":"string","description":"Check-out date in YYYY-MM-DD format"},"rooms":{"type":"array","description":"The rooms to check, one entry per room","items":{"type":"object","properties":{"adults":{"type":"number","description":"Number of adults in the room"},"children":{"type":"number","description":"Number of children in the room"},"childrenAges":{"type":"array","items":{"type":"number"},"description":"Age of each child in the room"}},"required":["adults"],"additionalProperties":false}}},"required":["checkIn","checkOut","rooms"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/extra-1","/gallery","/local-area","/rooms","/custom/packages"]},{"name":"thn_site__compare_rates","kind":"answer","impl":"imperative","description":"Compares the hotel's direct rate with other booking channels for the given dates and rooms. Use this when the guest asks about price comparisons or other booking channels. Currently returns a message saying it is not available yet, with the hotel website URL to continue on.","inputSchema":{"type":"object","properties":{"checkIn":{"type":"string","description":"Check-in date in YYYY-MM-DD format"},"checkOut":{"type":"string","description":"Check-out date in YYYY-MM-DD format"},"rooms":{"type":"array","description":"The rooms to compare rates for, one entry per room","items":{"type":"object","properties":{"adults":{"type":"number","description":"Number of adults in the room"},"children":{"type":"number","description":"Number of children in the room"},"childrenAges":{"type":"array","items":{"type":"number"},"description":"Age of each child in the room"}},"required":["adults"],"additionalProperties":false}}},"required":["checkIn","checkOut","rooms"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/extra-1","/gallery","/local-area","/rooms","/custom/packages"]},{"name":"thn_site__get_direct_booking_benefits","kind":"answer","impl":"imperative","description":"Describes the benefits of booking directly on the hotel website. Use this when the guest asks about why book direct. Currently returns a message saying it is not available yet, with the hotel website URL to continue on.","inputSchema":{"type":"object","additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/extra-1","/gallery","/local-area","/rooms","/custom/packages"]},{"name":"thn_site__get_rates","kind":"answer","impl":"imperative","description":"Returns the hotel's rates for the given dates and occupancy. Use this when the guest asks about prices. Currently returns a message saying it is not available yet, with the hotel website URL to continue on.","inputSchema":{"type":"object","properties":{"checkIn":{"type":"string","description":"Check-in date in YYYY-MM-DD format"},"checkOut":{"type":"string","description":"Check-out date in YYYY-MM-DD format"},"rooms":{"type":"array","description":"The rooms to get rates for, one entry per room","items":{"type":"object","properties":{"adults":{"type":"number","description":"Number of adults in the room"},"children":{"type":"number","description":"Number of children in the room"},"childrenAges":{"type":"array","items":{"type":"number"},"description":"Age of each child in the room"}},"required":["adults"],"additionalProperties":false}}},"required":["checkIn","checkOut","rooms"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/extra-1","/gallery","/local-area","/rooms","/custom/packages"]},{"name":"thn_site__list_amenities","kind":"answer","impl":"imperative","description":"Lists the hotel amenities and services. Use this when the guest asks about pool, parking, extras, etc. Currently returns a message saying it is not available yet, with the hotel website URL to continue on.","inputSchema":{"type":"object","additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/extra-1","/gallery","/local-area","/rooms","/custom/packages"]},{"name":"thn_site__list_rooms","kind":"answer","impl":"imperative","description":"Lists the room types the hotel offers. Use this when the guest asks what rooms exist. Currently returns a message saying it is not available yet, with the hotel website URL to continue on.","inputSchema":{"type":"object","additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/extra-1","/gallery","/local-area","/rooms","/custom/packages"]},{"name":"thn_site__start_booking","kind":"answer","impl":"imperative","description":"Starts a booking for the given dates and rooms, optionally with a currency, a promo code and a language. Use this when the guest wants to book. Returns a URL to the booking engine where the guest can complete the booking, so open that URL to continue. When a booking URL cannot be built it returns the hotel website URL instead, or null if that is not available either.","inputSchema":{"type":"object","properties":{"checkIn":{"type":"string","description":"Check-in date in YYYY-MM-DD format"},"checkOut":{"type":"string","description":"Check-out date in YYYY-MM-DD format"},"rooms":{"type":"array","description":"The rooms to book, one entry per room","items":{"type":"object","properties":{"adults":{"type":"number","description":"Number of adults in the room"},"children":{"type":"number","description":"Number of children in the room"},"childrenAges":{"type":"array","items":{"type":"number"},"description":"Age of each child in the room"}},"required":["adults"],"additionalProperties":false}},"currencyCode":{"type":"string","description":"Currency the guest wants to see prices in, as an ISO 4217 code such as USD. When omitted, USD is used"},"languageCode":{"type":"string","description":"Language the guest wants the booking engine in, such as en or zh_TW"},"promoCode":{"type":"string","description":"Promo code to apply to the booking"},"promoCodeType":{"type":"string","enum":["generic","rate","coupon"],"description":"Type of the promo code, when known"}},"required":["checkIn","checkOut","rooms"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/extra-1","/gallery","/local-area","/rooms","/custom/packages"]}],"apiSurface":"spec","toolCount":15}}