⏺ webmcp-ai.dev

Live score · last scanned 2026-08-29 · 1 scan recorded · static analysis

25 / 100
F

Invisible to agents.

booking.com

Agent capabilities

weight 30% · score 0/100
  • ✕

    WebMCP tools registered

    No WebMCP registration found in page HTML or script bundles.

    Fix — Register page capabilities with document.modelContext.registerTool() so browser agents can act on your site instead of guessing at your UI.

    Fix with AI — prompt for your coding agent
    My website booking.com has no WebMCP tools registered. WebMCP (the W3C draft at https://webmachinelearning.github.io/webmcp/, shipping behind a Chrome origin trial and supported in the ChatGPT desktop browser) lets a page expose typed tools that AI agents can call instead of guessing at the UI.
    
    Task: identify the 2-3 core actions a visitor performs on this site (e.g. search, check availability, get pricing, submit an inquiry) and register each as a WebMCP tool on page load:
    
    document.modelContext.registerTool({
      name: 'search_products',            // snake_case, specific
      description: 'Search the catalog; returns names, prices and URLs.', // written FOR the model: what it does, when to call it, what it returns
      inputSchema: { type: 'object', properties: { query: { type: 'string' } }, required: ['query'] },
      async execute({ query }) { /* call the site's existing search endpoint and return JSON */ }
    });
    
    Guard for environments without the API (if (!('modelContext' in document)) use the @mcp-b/global polyfill or return early). Wire execute() to existing endpoints — do not invent new backend functionality. When you are done, verify the fix by re-scanning at https://webmcp-ai.dev/score/booking.com (or POST the URL to https://webmcp-ai.dev/api/scan) and confirm the check now passes.
  • ✕

    Declarative form tools

    No declarative WebMCP form annotations found.

    Fix — Annotate key forms with toolname/tooldescription attributes — the zero-JS path to expose them as agent tools.

    Fix with AI — prompt for your coding agent
    My website booking.com has HTML forms but none are annotated as declarative WebMCP tools. The WebMCP draft defines a zero-JavaScript path: annotate a form with toolname/tooldescription attributes and agents can invoke it as a structured tool.
    
    Task: find the site's most important forms (search, contact, booking, newsletter) and add declarative tool attributes, e.g.:
    
    <form toolname="contact_sales" tooldescription="Send a message to the sales team; expects name, email and message." action="/contact" method="post">
    
    Keep names snake_case and descriptions written for an AI model (what it does + what it expects). Do not change form behavior for human users. When you are done, verify the fix by re-scanning at https://webmcp-ai.dev/score/booking.com (or POST the URL to https://webmcp-ai.dev/api/scan) and confirm the check now passes.
  • ✕

    Chrome origin-trial token

    No WebMCP origin-trial token found (Chrome 149–156 requires one in production).

    Fix — Request a WebMCP origin-trial token at developer.chrome.com/origintrials and serve it via meta tag or header.

    Fix with AI — prompt for your coding agent
    My website booking.com registers WebMCP tools but serves no Chrome origin-trial token, so the modelContext API does not exist for real Chrome users (Chrome 149-156 gates WebMCP behind an origin trial).
    
    Task: register the site's origin for the WebMCP origin trial at https://developer.chrome.com/origintrials, then serve the token on every page that registers tools — either <meta http-equiv="origin-trial" content="TOKEN"> in the <head>, or an Origin-Trial HTTP response header. When you are done, verify the fix by re-scanning at https://webmcp-ai.dev/score/booking.com (or POST the URL to https://webmcp-ai.dev/api/scan) and confirm the check now passes.
  • ✕

    MCP server card (.well-known)

    No MCP server card found at /.well-known/mcp/server-card.json.

    Fix — Publish a server card so agents can discover your backend MCP server, if you have one.

    Fix with AI — prompt for your coding agent
    My website booking.com serves no MCP server card. Agents probe /.well-known/mcp/server-card.json to discover whether a site offers a backend MCP server.
    
    Task: if the site has (or should advertise) an MCP endpoint, publish a valid JSON server card at /.well-known/mcp/server-card.json describing it (name, description, endpoint URL, transport). If there is no MCP server, this check is optional — skip it rather than publishing a card that points nowhere. When you are done, verify the fix by re-scanning at https://webmcp-ai.dev/score/booking.com (or POST the URL to https://webmcp-ai.dev/api/scan) and confirm the check now passes.
  • ✕

    Actionable HTML (forms with labels)

    No labeled forms detected on the homepage.

    Fix — Even without WebMCP, well-labeled semantic forms are what agents fall back to.

    Fix with AI — prompt for your coding agent
    My website booking.com's homepage has no labeled forms. Without WebMCP tools, well-labeled semantic forms are what browser agents fall back to for taking actions.
    
    Task: audit the site's key interactive flows and ensure each form uses real <form> elements with <label for=...> bound to every input (not placeholder-only, not div-with-onclick). Keep markup semantic: correct input types, a submit button, and descriptive button text. When you are done, verify the fix by re-scanning at https://webmcp-ai.dev/score/booking.com (or POST the URL to https://webmcp-ai.dev/api/scan) and confirm the check now passes.

Discoverability

weight 20% · score 85/100
  • ✓

    robots.txt present

    robots.txt found.

  • ✓

    AI crawlers allowed

    No blanket blocks on major AI crawlers.

  • ✓

    XML sitemap

    Sitemap found.

  • ✕

    Canonical URL

    No canonical link tag.

    Fix — Add <link rel="canonical"> so agents and indexes resolve one authoritative URL.

    Fix with AI — prompt for your coding agent
    My website booking.com's pages are missing <link rel="canonical"> tags, so agents and indexes cannot resolve one authoritative URL per page.
    
    Task: add a canonical link tag to every page's <head> pointing at the page's clean absolute URL (no query strings or tracking params). In most frameworks this belongs in the shared layout using the current route. When you are done, verify the fix by re-scanning at https://webmcp-ai.dev/score/booking.com (or POST the URL to https://webmcp-ai.dev/api/scan) and confirm the check now passes.

Content accessibility

weight 20% · score 0/100
  • ✕

    llms.txt

    No /llms.txt file.

    Fix — Publish llms.txt — a curated, markdown map of what your site is and where its key content lives.

    Fix with AI — prompt for your coding agent
    My website booking.com has no /llms.txt. llms.txt is a curated markdown map that tells LLMs what a site is and where its key content lives (spec: https://llmstxt.org).
    
    Task: create /llms.txt as static markdown: an H1 with the site name, a one-paragraph summary, then sections linking the site's most important pages with one-line descriptions each. Keep it under ~200 lines, factual, and free of marketing fluff. When you are done, verify the fix by re-scanning at https://webmcp-ai.dev/score/booking.com (or POST the URL to https://webmcp-ai.dev/api/scan) and confirm the check now passes.
  • ✕

    llms-full.txt

    No /llms-full.txt.

    Fix — Optionally serve llms-full.txt with full flattened content for LLM ingestion.

    Fix with AI — prompt for your coding agent
    My website booking.com serves /llms.txt but no /llms-full.txt. llms-full.txt is the companion file with full flattened content for LLM ingestion.
    
    Task: generate /llms-full.txt containing the full markdown content of the site's key pages (docs, guides, product pages) concatenated under clear H1/H2 headings, ideally regenerated at build time so it never goes stale. When you are done, verify the fix by re-scanning at https://webmcp-ai.dev/score/booking.com (or POST the URL to https://webmcp-ai.dev/api/scan) and confirm the check now passes.
  • ✕

    Content readable without JavaScript

    Almost no text in the raw HTML — the page depends on client-side JS most agents will not execute.

    Fix — Server-render your primary content; JS-only pages are blank to most crawlers and many agents.

    Fix with AI — prompt for your coding agent
    My website booking.com renders almost no text in its raw HTML — the content only appears after client-side JavaScript runs. Most crawlers and many agents never execute that JS, so to them the site is blank.
    
    Task: identify the rendering setup and enable server-side rendering or static pre-rendering for the primary content (Next.js: server components/SSG; Nuxt/SvelteKit: SSR; SPA: prerender critical routes). The raw HTML response for each page must contain its actual text content. When you are done, verify the fix by re-scanning at https://webmcp-ai.dev/score/booking.com (or POST the URL to https://webmcp-ai.dev/api/scan) and confirm the check now passes.
  • ✕

    Semantic structure (main/article + h1)

    Missing <main>/<article> landmark or <h1>.

    Fix — Use semantic landmarks and a single clear h1 so machines can segment your page.

    Fix with AI — prompt for your coding agent
    My website booking.com's pages lack semantic structure — no <main>/<article> landmark and/or no <h1>. Machines segment pages by landmarks and heading hierarchy.
    
    Task: wrap primary content in <main> (one per page), use <article>/<section>/<nav> where appropriate, and give every page exactly one specific <h1> with a logical h2/h3 hierarchy below it. When you are done, verify the fix by re-scanning at https://webmcp-ai.dev/score/booking.com (or POST the URL to https://webmcp-ai.dev/api/scan) and confirm the check now passes.

Machine comprehension

weight 20% · score 0/100
  • ✕

    Schema.org JSON-LD

    No structured data found.

    Fix — Add JSON-LD for your core entities (Organization, Product, FAQ…) — agents lean on it to understand what you sell.

    Fix with AI — prompt for your coding agent
    My website booking.com has no valid Schema.org JSON-LD structured data. Agents lean on JSON-LD to understand what a site is, sells, and offers without parsing prose.
    
    Task: add <script type="application/ld+json"> blocks to the site's layout/pages covering its core entities — Organization (or LocalBusiness) sitewide, plus the type matching each page (Product with offers, Service, Article, FAQPage…). Validate every block parses as JSON and passes https://validator.schema.org. When you are done, verify the fix by re-scanning at https://webmcp-ai.dev/score/booking.com (or POST the URL to https://webmcp-ai.dev/api/scan) and confirm the check now passes.
  • ✕

    OpenGraph metadata

    Missing OpenGraph tags.

    Fix — Add og:title/og:description/og:image so shared and quoted pages carry their meaning.

    Fix with AI — prompt for your coding agent
    My website booking.com is missing OpenGraph metadata (og:title / og:description). Shared and quoted pages lose their meaning without it.
    
    Task: add og:title, og:description, og:image (1200x630), og:url and og:type meta tags to the shared layout, populated per page. Reuse each page's existing title/description rather than inventing new copy. When you are done, verify the fix by re-scanning at https://webmcp-ai.dev/score/booking.com (or POST the URL to https://webmcp-ai.dev/api/scan) and confirm the check now passes.
  • ✕

    Meta description

    Missing or trivial meta description.

    Fix — Write a 120–160 char description that states what the page does.

    Fix with AI — prompt for your coding agent
    My website booking.com's pages are missing substantive meta descriptions.
    
    Task: add a unique <meta name="description"> of 120-160 characters to every indexable page stating concretely what the page does or offers — no keyword stuffing, no boilerplate repeated across pages. When you are done, verify the fix by re-scanning at https://webmcp-ai.dev/score/booking.com (or POST the URL to https://webmcp-ai.dev/api/scan) and confirm the check now passes.
  • ✕

    Descriptive title

    No <title> found.

    Fix — Give every page a specific, descriptive title.

    Fix with AI — prompt for your coding agent
    My website booking.com has a missing or trivial <title> tag.
    
    Task: give every page a specific, descriptive title of roughly 50-60 characters ("What it is — Site name" pattern), unique per page. When you are done, verify the fix by re-scanning at https://webmcp-ai.dev/score/booking.com (or POST the URL to https://webmcp-ai.dev/api/scan) and confirm the check now passes.

Trust & security

weight 10% · score 75/100
  • ✓

    HTTPS

    Served over HTTPS.

  • ✓

    No mixed content

    No insecure subresources detected.

  • ✕

    Permissions-Policy declared

    No Permissions-Policy header.

    Fix — Declare a Permissions-Policy; WebMCP tool exposure is governed by the "tools" policy (default self).

    Fix with AI — prompt for your coding agent
    My website booking.com sends no Permissions-Policy header. WebMCP tool exposure is governed by this policy (the "tools" directive, default self), and declaring one signals deliberate configuration.
    
    Task: add a Permissions-Policy response header at the server/CDN layer declaring the powerful features the site actually uses and disabling the rest, e.g.: geolocation=(), microphone=(), camera=(). When you are done, verify the fix by re-scanning at https://webmcp-ai.dev/score/booking.com (or POST the URL to https://webmcp-ai.dev/api/scan) and confirm the check now passes.

Fix everything with AI

One prompt covering all 15 failing checks — paste it into Claude Code, Cursor, or any coding agent pointed at your site's repository.

You are working on the website booking.com. An agent-readiness scan (https://webmcp-ai.dev/score/booking.com) scored it 25/100. Fix the following 15 failing checks, in order. Work through them one at a time, committing after each. Where a fix touches robots.txt, llms.txt, meta tags or JSON-LD, generate content from the site's real pages — never placeholder text.

1. [Agent capabilities] WebMCP tools registered
   Finding: No WebMCP registration found in page HTML or script bundles.
   Fix: Register page capabilities with document.modelContext.registerTool() so browser agents can act on your site instead of guessing at your UI.

2. [Agent capabilities] Declarative form tools
   Finding: No declarative WebMCP form annotations found.
   Fix: Annotate key forms with toolname/tooldescription attributes — the zero-JS path to expose them as agent tools.

3. [Agent capabilities] Chrome origin-trial token
   Finding: No WebMCP origin-trial token found (Chrome 149–156 requires one in production).
   Fix: Request a WebMCP origin-trial token at developer.chrome.com/origintrials and serve it via meta tag or header.

4. [Agent capabilities] MCP server card (.well-known)
   Finding: No MCP server card found at /.well-known/mcp/server-card.json.
   Fix: Publish a server card so agents can discover your backend MCP server, if you have one.

5. [Agent capabilities] Actionable HTML (forms with labels)
   Finding: No labeled forms detected on the homepage.
   Fix: Even without WebMCP, well-labeled semantic forms are what agents fall back to.

6. [Discoverability] Canonical URL
   Finding: No canonical link tag.
   Fix: Add <link rel="canonical"> so agents and indexes resolve one authoritative URL.

7. [Content accessibility] llms.txt
   Finding: No /llms.txt file.
   Fix: Publish llms.txt — a curated, markdown map of what your site is and where its key content lives.

8. [Content accessibility] llms-full.txt
   Finding: No /llms-full.txt.
   Fix: Optionally serve llms-full.txt with full flattened content for LLM ingestion.

9. [Content accessibility] Content readable without JavaScript
   Finding: Almost no text in the raw HTML — the page depends on client-side JS most agents will not execute.
   Fix: Server-render your primary content; JS-only pages are blank to most crawlers and many agents.

10. [Content accessibility] Semantic structure (main/article + h1)
   Finding: Missing <main>/<article> landmark or <h1>.
   Fix: Use semantic landmarks and a single clear h1 so machines can segment your page.

11. [Machine comprehension] Schema.org JSON-LD
   Finding: No structured data found.
   Fix: Add JSON-LD for your core entities (Organization, Product, FAQ…) — agents lean on it to understand what you sell.

12. [Machine comprehension] OpenGraph metadata
   Finding: Missing OpenGraph tags.
   Fix: Add og:title/og:description/og:image so shared and quoted pages carry their meaning.

13. [Machine comprehension] Meta description
   Finding: Missing or trivial meta description.
   Fix: Write a 120–160 char description that states what the page does.

14. [Machine comprehension] Descriptive title
   Finding: No <title> found.
   Fix: Give every page a specific, descriptive title.

15. [Trust & security] Permissions-Policy declared
   Finding: No Permissions-Policy header.
   Fix: Declare a Permissions-Policy; WebMCP tool exposure is governed by the "tools" policy (default self).

Standards to follow: the W3C WebMCP draft (https://webmachinelearning.github.io/webmcp/) for tool registration, https://llmstxt.org for llms.txt, and Schema.org for JSON-LD. When done, re-scan at https://webmcp-ai.dev/score/booking.com and confirm the score improved.

Share & embed

Agent readiness badge for booking.com: 25/100 (F)

Put your score on your site or README. The badge always shows this domain's latest score and links back here:

<a href="https://webmcp-ai.dev/score/booking.com"><img src="https://webmcp-ai.dev/badge/booking.com.svg" width="230" height="44" alt="booking.com agent readiness score 25/100 (F) — webmcp-ai.dev" /></a>

Monitor this domain

Agent-readiness standards move fast — Chrome trials, ChatGPT's browser, new checks. Get a weekly rescan of booking.com by email with score changes flagged. Free, unsubscribe anytime.

This is the surface scan.

On a free 25-minute strategy call we walk through these results live and map the exact WebMCP tools booking.com should register — prioritized, with a roadmap you can hand to a developer.