Een test in juli onder 200 Amsterdamse restaurants toonde aan dat huidige AI-assistenten geen tafelreserveringen kunnen voltooien omdat de boekingswidget verborgen zit in een iframe.
Waarom de iframe agents blokkeert
De meeste online reserveringstools worden geleverd als een ingesloten iframe. Een bezoeker klikt op een "Reserveer"-knop, er verschijnt een kalender en de gebruiker selecteert een tijdslot. Voor een mens werkt het proces; voor een AI-agent loopt het vast.
- De agent analyseert de hoofd-HTML-pagina.
- De boekingsknop verwijst naar een URL op een ander domein.
- De browser laadt die URL in een iframe, waardoor deze wordt geïsoleerd van de bovenliggende pagina.
Omdat de same-origin policy voorkomt dat scripts op de bovenliggende pagina de DOM van de iframe kunnen lezen of netwerkoproepen kunnen onderscheppen, ziet een AI-agent die paginagegevens leest en HTTP-verzoeken verstuurt alleen de knop. De agent ziet nooit de kalender, de tijdslots of het bevestigingsproces. Zelfs als de agent op de knop klikt, moet hij nog steeds captcha's oplossen, zich aanpassen aan lay-outwijzigingen of anti-automatiseringverdedigingen omzeilen die veel boekingsdiensten gebruiken.
De ontbrekende machineleesbare link
Een aparte audit van 163 functionerende restaurantwebsites vond slechts negen sites die machineleesbare boekingsgegevens exposeerden. Deze negen vermeldden basisinformatie — naam en adres — met behulp van schema.org-markup, maar geen enkele bevatte reserveringsacties die een agent zou kunnen aanroepen. Schema.org definieert types zoals ReserveAction voor dit doel, maar de meeste sites publiceren alleen beschrijvende metadata en geen uitvoerbare instructies.
In de praktijk zoekt een assistent naar gestructureerde gegevens die aangeven hoe een taak moet worden uitgevoerd, en niet alleen wat de taak is. Zonder een ReserveAction of een vergelijkbaar endpoint valt de agent terug op het nabootsen van een menselijke klik, wat, zoals hierboven beschreven, onbetrouwbaar is.
Een praktische oplossing zonder de UI te slopen
- Publiceer een boekings-API – Maak een lichtgewicht HTTP-endpoint aan dat JSON-verzoeken accepteert voor beschikbaarheidsvragen en het aanmaken van reserveringen. De API geeft velden terug zoals datum, tijd, groepsgrootte en bevestigingscode. Elke agent kan deze gebruiken zonder een pagina te renderen.
- Maak de API vindbaar – Plaats een verwijzing op een bekende locatie, zoals
/.well-known/booking, of voeg eenReserveAction-vermelding toe aan de schema.org-markup van de pagina. Dit vertelt agents: "er is een programmeerbare manier om hier te boeken", zonder dat scraping nodig is. - Adopteer het Model Context Protocol (MCP) – MCP stelt assistenten in staat om rechtstreeks externe tools aan te roepen, waarbij invoer wordt doorgegeven en gestructureerde uitvoer wordt ontvangen. Grote AI-aanbieders ondersteunen MCP al, dus een restaurant dat een MCP-compatibel endpoint implementeert, kan door agents worden aangeroepen alsof het een ingebouwde functie is.
Met deze stappen kan de visuele iframe behouden blijven voor menselijke gebruikers, terwijl agents een helder en betrouwbaar pad krijgen naar dezelfde reserveringsgegevens.
Kernboodschap
Het insluiten van een kalender in een iframe beschermt de visuele flow voor mensen, maar maakt AI-assistenten blind. Het toevoegen van een bescheiden, goed gedocumenteerde boekings-API en het promoten ervan via standaard metadata of MCP opent een nieuw reserveringskanaal zonder de website volledig te hoeven herzien. Deze inspanning vergroot de zichtbaarheid voor de volgende generatie digitale assistenten, en het risico kan worden beheerst met dezelfde beveiligingscontroles die al voor de huidige UI worden gebruikt.
