Skip to content

Browser agents (WebMCP)

Every booking website hosted on the platform registers a small set of WebMCP tools with the browser. An assistant built into the visitor’s browser — Gemini in Chrome, Copilot in Edge, or an extension — discovers them through document.modelContext and calls them with structured arguments instead of reading the page’s DOM.

This is the guest-side counterpart of the MCP server: the MCP server serves the agency’s own agents with an API key; WebMCP serves the guest’s agent on the public website, with no key and no more data than the page shows.

ToolWhereWhat it does
search_staysevery pageHomes free for the whole stay; up to 5 results with area, bedrooms, capacity, nightly price and link. Opens the same results for the visitor.
list_areasevery pageDistricts with the number of homes and the lowest nightly price, as filter values for search_stays.
get_quoteevery pageExact price of one home for a stay from the agency’s pricing engine: nightly rates, cleaning fee, Tourism Dirham, VAT, promotions, total, availability.
prepare_booking_requestlisting page onlyFills in the enquiry form with the stay and the guest’s details and opens it for review. Nothing is sent — the guest presses “Send request”.

Argument mistakes come back as readable tool errors (Error: 'to' (check-out) must be after 'from' (check-in)., Error: Minimum stay for these dates is 5 nights.), so an agent can correct itself.

  • Tools call only the public endpoints the pages call themselves. There is no server surface that exists for agents alone; rate limits and the enquiry form’s bot protection apply unchanged.
  • The three reading tools carry readOnlyHint. The one tool with a side effect prepares a form and hands over to a human; it cannot submit.
  • Results are short (five homes, about 1,500 characters) and contain no free text written by third parties.
  • Tools are page-scoped: prepare_booking_request exists only while a home is open and disappears when the visitor leaves the page.
  • Enquiries that were prepared by an agent carry [via browser agent] in their message, so the agency sees the channel.

Agencies switch the tools off in their portal under Website → Browser assistants.

The console has its own, separate set of tools for the staff’s browser assistant — “which units are free next weekend?”, “who arrives today?”, “block Marina 2BR from the 12th to the 15th”. They run with the signed-in person’s session and rights, read from the same endpoints the console pages call, and never write: the two tools with a side effect (prepare_booking, prepare_task) open the console’s own dialog filled in, and a human presses the button. Every answer that can contain guest text carries untrustedContentHint.

This set is off by default and switched on per agency under Users & Rights → Browser assistants in this console by someone holding the corresponding right. It is not part of the partner API and needs no key.

WebMCP is in an origin trial: Chrome 149 to 156 and Edge 150 and later expose the API on websites that carry a token for their origin (the agency pastes it in the portal; it is rendered as <meta http-equiv="origin-trial">).

For local testing without a token, enable chrome://flags/#enable-webmcp-testing, relaunch, open a booking website and run in the DevTools console:

const tools = await document.modelContext.getTools();
tools.map((t) => t.name);
// ["search_stays", "list_areas", "get_quote"] — plus "prepare_booking_request" on a listing page

Chrome’s Model Context Tool Inspector extension lists the registered tools and lets you call them by hand. WebMCP is only available in a secure context (HTTPS or localhost).