5 Pillars
Machine-readable identity30%
Can AI identify your destination?
Content for AI20%
Can AI quote you accurately?
Crawlability & access20%
Can AI access your site?
Action readiness15%
Can AI book or contact you?
Authority & trust signals15%
Can AI trust and recommend you?
Scoring
Each check produces a numeric score from 0 to 100 and a tri-state outcome:
Critical issues
Five conditions flag a critical gap on your report. Four affect your score through the underlying checks — fix the gap and your number moves, no cliffs. One — AI crawlers blocked — also caps the public score at 24 until access is restored, because nothing else matters if agents can't reach your site.
- Critical
No schema.org markup
AI can't tell what kind of place you are — a hotel, a restaurant, a destination. You're invisible.
Technical detail
AI agents skip entities they cannot identify as structured places, hotels, restaurants, attractions, or destinations.
- Critical
No geographic identity
AI can't place you on a map or match "near me" searches.
Technical detail
Missing geo coordinates or address data prevents map placement and near-me matching.
- Critical
No agent-readable action path
AI can't help a guest take action with you (book, reserve, contact).
Technical detail
Agents cannot transact directly when there is no structured booking or reservation surface.
- Critical
No review signals
AI can't see enough reviews to feel confident recommending you.
Technical detail
Agents treat review data as a trust baseline before recommending a place.
- ≤ 24
AI crawlers blocked
Your site is telling AI assistants like ChatGPT and Gemini to stay away. They can't read or recommend you.
Technical detail
When robots.txt blocks the major AI retrieval bots (OAI-SearchBot, ChatGPT-User, Claude-User, Googlebot, PerplexityBot), agents cannot read the content at all and you disappear from answer engines.
Featured checks
Content freshness
Whether your pages look up-to-date to AI assistants.
Technical detail
Agentic search studies show freshness terms such as 2024 and 2025 dominate fan-out queries. Structured, recent dates help agents trust that seasonal advice, pricing, and availability are still valid.
Pass: structured dates updated within 12 months. Partial: dates exist but are stale or inconsistent. Fail: no reliable freshness signal.
What good looks like: A hotel keeps room, package, restaurant, and event pages marked with dateModified from the current season.
Comparison tables
Whether key info (rooms, prices, hours) is in real tables AI can read.
Technical detail
Citation research found ChatGPT answers are much more likely to cite pages with actual HTML tables. Tables help agents compare amenities, seasons, tiers, prices, and policies without guessing from prose.
Pass: decision-critical data appears in semantic HTML tables. Partial: structured comparisons exist but are incomplete or image-only in places. Fail: no machine-readable comparison structure.
What good looks like: A destination publishes activity seasons, accessibility, durations, and price bands in a table with clear column headings.
Token budget
Whether your pages are short enough for AI to read fully.
Technical detail
Agents operate inside finite context windows and often truncate long pages. Pages over roughly 30K tokens risk losing the exact facts an assistant needs to recommend or book confidently.
Pass: key pages fit comfortably inside the token budget. Partial: some pages are heavy but still extractable. Fail: important pages are too large or repetitive to read fully.
What good looks like: A restaurant page keeps menu, opening hours, booking, address, and dietary facts concise rather than burying them after repeated layout boilerplate.
Markdown availability
Whether AI assistants can fetch a clean, fast version of your pages.
Technical detail
Clean Markdown alternatives reduce token overhead and remove navigation chrome. Agents can parse headings, lists, links, and facts faster when a .md route mirrors the canonical page.
Pass: important pages expose clean .md versions. Partial: only some pages or partial content are available. Fail: no Markdown alternative is discoverable.
What good looks like: An attraction page offers /visit.md with summary, opening times, ticket links, accessibility, location, and FAQs.
Card readiness
Whether AI can show you as a rich card with image and rating, instead of plain text.
Technical detail
AI surfaces can promote entities as richer visual cards when schema includes the minimum properties needed for display. Missing one critical field, often image or aggregateRating, can drop the entity to a plain text mention.
Pass: schema includes image, rating or price cues, location, and canonical action URL. Partial: one non-critical card field is weak or missing. Fail: critical card fields are absent.
What good looks like: A hotel has image, address, geo, aggregateRating, priceRange, and ReserveAction on the canonical property page.
Schema completeness
Whether your schema fills in the properties AI assistants actually use to identify and bucket you.
Technical detail
Schema doesn't feed the LLM directly — it feeds what the LLM calls (Google Places, Maps, the Knowledge Graph). Properties are graded in three impact tiers, and properties only count when they're filled in the typed form AI engines actually parse — a primitive starRating of 4 fails the category-bucket filter that a typed Rating object passes.
Pass: critical-tier properties (name, description, url, address, primary identifier) are all filled and typed correctly. Partial: critical tier is fine but one or more high-impact properties are missing or malformed. Fail: critical-tier properties are missing or typed wrong.
Hotels get a sameAs reconciliation sub-signal — own the canonical URL on any 2 of {Wikidata, Booking, TripAdvisor, Google Maps} and you earn full credit, rendered as a binary 4-cell checklist rather than a progress bar. alternateName, typed starRating, and containsPlace (room-level structure) also feed this check on the hotel path. A wrong @type (LocalBusiness or Organization on a hotel page) cuts the score with a tiered penalty rather than a flat one.
What good looks like: A hotel publishes name, description, url, address, a typed starRating Rating object, image, aggregateRating, priceRange, sameAs to Wikidata + Booking + Google Maps, alternateName for prior brands, and containsPlace entries for room types.
Geo + Entity Enrichment
Whether AI can place a hotel on a map — or link a destination to its identity in the knowledge graph.
Technical detail
The check is entity-aware. For destinations it's reframed as "Entity Linking" and grades Wikidata QID resolution (50) + Wikipedia sameAs (25) + schema geo (15) + locality signal (10) — the QID is resolved server-side via SPARQL reverse-lookup from your Google Place ID, so a destination earns the entity-linking points even when the publisher doesn't declare a sameAs. For hotels and other places it splits into three proportional sub-signals: Address Structure (50) + Entity Reconciliation (30, skippable) + Geo Coordinates (20).
Pass: high entity-resolution evidence for the entity type. Partial: present but partial — destination has geo but no QID resolved; hotel has address but no reconciliation. Fail: AI can neither place you nor link you.
Destinations are weighted 0.08 within Machine-Readable Core (down from 0.16) because "is this city locatable?" is trivially yes for any DMO. The freed weight redistributes to schema completeness and server-rendered schema. Hotels keep the full 0.16 — address really matters for a specific property.
What good looks like: A destination resolves to its Wikidata Q-id, publishes a Wikipedia sameAs and geo coordinates, and carries a containedInPlace or addressRegion locality signal. A hotel publishes a typed PostalAddress, sameAs to Wikidata or Booking, and geo coordinates.
Brand hierarchy
Whether AI can tell your property apart from its parent chain or group.
Technical detail
Agents need to separate a local entity from a chain, parent organization, or management brand. Clear hierarchy avoids recommendations or booking links being attributed to the wrong property.
Pass: local entity, parent brand, address, and booking URL are distinct. Partial: hierarchy is inferable but incomplete. Fail: brand and local property identity are conflated.
What good looks like: A restaurant page distinguishes the venue, parent hospitality group, local address, and reservation URL.
Review depth
Whether AI can see enough recent reviews to trust recommending you.
Technical detail
Review signals are a trust baseline for agents deciding whether to recommend a place. Scores grade depth and freshness rather than treating any rating snippet as enough.
Pass: structured aggregateRating has at least 20 reviews and recent activity. Partial: review data exists but is thin, stale, or not fully structured. Fail: no reliable review signal.
What good looks like: A destination or hotel links trusted review platforms and exposes aggregateRating with reviewCount and current rating data.
Wikipedia citation
Whether the destination's Wikipedia article links to you — not whether you say it should.
Technical detail
Almost every other check reads your own website, so a determined publisher can pass them by editing their markup. This one asks Wikipedia. We resolve your destination to its Wikidata entity — from your schema when you declare it, by name when you don't — then read the external links of its article, in the local language and in English, and check whether your domain is among them. Wikipedia editors decide the answer, self-added links are routinely reverted, and Wikipedia is a primary source for both AI training data and live citation.
100 if the article links to your domain, 0 if it does not. Existing in Wikidata is a prerequisite, not points — almost every destination does, so scoring it would separate nobody. The entity's official-website property and how many languages its article exists in are shown in your report and are worth nothing.
If we cannot resolve your entity, or Wikipedia is unreachable when we audit you, this check is skipped rather than scored zero — a question we could not ask must not read as an answer against you.
What good looks like: The Wikipedia article for the destination lists the DMO's site among its external links or references.
llms.txt quality
Whether your AI guide file is detailed enough to actually help.
Technical detail
llms.txt is most useful when it gives agents task-organized routes, descriptions, and token expectations. Quality is graded rather than simple existence.
Pass: entries include descriptions, token counts, and task sections. Partial: file exists but is shallow or disorganized. Fail: no useful llms.txt signal.
Google does not use llms.txt for Google Search; we grade it because other engines and AI crawlers may. We weight it as a supplementary signal, not a primary one.
What good looks like: A destination groups Markdown URLs by plan a trip, book a hotel, find events, and practical information, with short descriptions for each entry.
Agent spec coverage
Whether your site tells AI which pages matter and what they're about.
Technical detail
Machine-readable manifests like llms.txt and JSON specs let agents discover which entities, tasks, and routes they can safely use. Broader coverage means agents need less guesswork to act.
Pass: manifests describe entities, tasks, and canonical routes with structured detail. Partial: coverage exists but is shallow or missing key task surfaces. Fail: no usable agent spec is exposed.
What good looks like: A hotel exposes llms.txt plus JSON manifests pointing to canonical entity data, booking endpoints, and task-specific Markdown pages.
Action Readiness
Whether AI can book a room, reserve a table, or contact you on a guest's behalf.
Technical detail
Agents need a structured path to transact on behalf of a user. The pillar runs a universal programmatic-endpoint sub-check on every entity, plus two lodging-only sub-checks (structured ReserveAction and a cancellation policy URL) that fire on hotels and campsites.
Pass: all applicable sub-checks pass for the entity type. Partial: some action surfaces exist but are incomplete. Fail: no agent-readable action path is present.
What good looks like: A hotel exposes a programmatic booking endpoint (well-known mcp.json / a2a.json or schema.org potentialAction), a structured ReserveAction, and a cancellation policy URL on the canonical property page.
AI Search Access
Whether AI assistants like ChatGPT and Gemini are allowed to read your site.
Technical detail
Drives answer-engine visibility — when ChatGPT, Claude, Gemini, or Perplexity fetch your site live to cite it in user answers, this is the bot set that matters. Blocking Googlebot also hurts classic SEO. We test robots.txt policy and a simulated fetch for OAI-SearchBot, ChatGPT-User, Claude-User, Googlebot, and PerplexityBot.
Pass: ≥80% of retrieval UAs allowed by robots.txt AND reach the site successfully. Partial: 50–80% on either axis. Fail: <50% on either axis.
What good looks like: robots.txt explicitly allows OAI-SearchBot, ChatGPT-User, Claude-User, Googlebot, and PerplexityBot, and the CDN's bot-protection rules don't challenge them.
AI Training Access
Whether AI vendors are allowed to learn about your brand. Both yes and no are valid choices.
Technical detail
Training crawlers build the long-term model knowledge of your brand. This is a longer-horizon brand-control decision: it's legitimate to opt out, but vendors increasingly use retrieval-only bots that respect this signal — so blocking training no longer breaks live citations. We test GPTBot, ClaudeBot, Google-Extended, and PerplexityBot.
Pass: ≥80% of training UAs allowed by robots.txt AND reach the site successfully. Partial: 50–80% on either axis. Fail: <50% on either axis.
What good looks like: robots.txt explicitly allows GPTBot, ClaudeBot, Google-Extended, and PerplexityBot — or you've made a deliberate, documented opt-out for training while still allowing retrieval bots.
Agent Interaction Quality
Whether your booking forms work properly when an AI fills them out for a guest.
Technical detail
Beyond raw HTML, agents rely on the accessibility tree, form-label association, semantic interactive elements, and stable layout. A booking widget that's invisible to the a11y tree is invisible to the agents that book on behalf of guests.
Composite of four sub-scores (A11y Tree 40 / Form Labels 25 / Interactive Semantics 20 / Layout Stability 15). Pass ≥80, Partial 40–79, Fail <40.
What good looks like: Booking CTAs are <button> with proper ARIA, every input has a label, ARIA roles are valid, and CLS is below 0.1.
How this maps to AgentReady v1.0
AgentReady is an open standard of practices that make any product readable and usable by AI agents, grouped into Find, Read and Act. It has no travel rubric. Our checks cover every one of its MUST practices, every Find and Read practice that applies to a travel website, and the Act practices for booking. Two practices are for software products and do not apply to travel: fenced code samples, and SDKs with a command-line tool.
What we measure and AgentReady does not: the identity of the place or organization (schema.org type, completeness, sameAs links, Wikidata and Wikipedia), reviews, content freshness, multilingual coverage, how usable the page is for an agent, access for each AI agent separately, hotel booking through UCP Lodging, and a benchmark against comparable destinations and hotels.
AgentReady practiceOur checksCoverage
Find
AR-FIND-01MUSTAllow agents and crawlers in robots.txtAI Search Access, AI Training Access, Content-Signal directivesCovered AR-FIND-02SHOULDPublish the answer as first-party docsFAQ coverage, Content in bodyPartial AR-FIND-03SHOULDList pages in a sitemap.xmlSitemapCovered AR-FIND-04MAYPublish an AI Catalog and link itAI catalogCovered Read
AR-READ-01MUSTFetchable without JavaScriptServer-rendered schema, Content in body, Token budgetCovered AR-READ-02MUSTReal HTTP status codes (404 for missing paths, 429 when throttling)Missing pages return 404Covered AR-READ-03SHOULDHomepage in raw HTMLServer-rendered schema, Content in bodyCovered AR-READ-04SHOULDDocs pages that answerFAQ coverage, Comparison tables, Content readabilityCovered AR-READ-05SHOULDFenced, language-tagged code—Not applicable to travel AR-READ-06SHOULD.well-known discovery filesAPI catalog, MCP server card, OAuth/OIDC discovery, Agent skills index, Link headersCovered AR-READ-07SHOULDllms.txtllms.txt qualityCovered AR-READ-08SHOULDJSON-LDSchema.org type, Schema completeness, Card readinessCovered AR-READ-09MAYMarkdown mirrorsMarkdown availabilityCovered Act
AR-ACT-01SHOULDAuthentication an agent can get throughOAuth/OIDC discoveryPartial AR-ACT-02SHOULDPublic API with a machine-readable contractAPI access, API catalogCovered AR-ACT-03SHOULDMCP serverAgent endpointCovered AR-ACT-04MAYServer cards for pre-connection discoveryMCP server cardCovered AR-ACT-05MAYMCP AppsMCP Apps (info-only, not scored)Covered AR-ACT-06SHOULDSDKs and a CLI—Not applicable to travel AR-ACT-07MAYWebMCPWebMCP declaration (info-only, not scored)Covered AR-ACT-08MAYLet agents payUniversal Commerce Protocol (UCP) (info-only, not scored), Agentic Commerce Protocol (ACP) (info-only, not scored), Reserve action, Cancellation policyCovered AR-ACT-09MAYNLWeb ask endpointNatural-language ask endpoint (NLWeb) (info-only, not scored)Covered Mapped against AgentReady v1.0 (August 2026), last checked Oct 8, 2026. agentready.org · the specification
Critical issues
Four conditions are bad enough that we call them out at the top of your report as critical issues. They degrade your site's readiness even when the rest of the audit looks fine: missing schema.org markup, missing location data, no agent-readable action path (book, reserve, contact), no review signals. Each one is a specific, fixable gap — when you fix it, the underlying checks recover and your score moves. No cliffs, no surprises.
Which of these four can fire depends on what we're auditing. A destination (DMO) is trivially locatable by name — Lyon, Bordeaux — so "missing location data" is never flagged on a destination report. "No agent-readable action path" fires only on lodging audits (hotels, campsites) where the action pillar score drops below 30. "No review signals" only fires when reviews are an applicable signal for the entity type (places, not destinations). "Missing schema.org markup" is the only critical issue that can fire on any audit.
One exception — when crawlers are blocked
If AI crawlers can't reach your site at all, the rest of the score is academic. Schema, content quality, action paths — none of it matters if agents are turned away at the door. For this one case, we hold the public score at 50 until access is restored, and we say so explicitly on the report. Your "raw potential" — what the rest of the audit measured — stays visible so you know what unlocks the moment you allow AI crawlers.
This is the only case where your displayed score doesn't equal the weighted aggregate of the checks below. Everywhere else, what you see is what the math says.
How the hotel benchmark is built
The hotels are a random sample drawn in each benchmark destination, across the same countries as the destination benchmark. Every hotel in it has its own website. Hostels, holiday rentals, campsites and timeshares are left out.
We draw about 100 hotels per country (about 150 in the United States). A fixed quota of chain hotels is drawn first; the rest are independent and affiliated hotels.
A chain hotel is audited on its own property page. The websites of 14 hotel groups refused our AI agent on the pages we tested: those groups are left out of later draws and reported separately, so chain figures describe chains whose pages let an AI agent through.
Averages cover the pages we could measure. A page that refused our audit counts in the hotel total and in the score bands, not in the average.
Frequently asked questions
Why does AI Presence Readiness matter?
AI agents — ChatGPT, Gemini, Perplexity, and the new wave of travel concierges — are taking over discovery. If they cannot find, parse, and act on your content, you are invisible no matter how strong your traditional SEO is.
Is the score subjective or LLM-generated?
The public score is 100% objective — no AI judgment in the scoring loop. It is computed from technical signals (schema.org markup, llms.txt, ai.json, sitemap, robots, action endpoints, content readability) using fixed weights. Running the same audit twice yields the same score.
How is this different from a regular SEO audit?
Traditional SEO measures whether Google can index a page for human readers. AI Presence Readiness measures whether AI agents can find structured data, parse machine-readable summaries, and trigger actions like bookings or reservations on your behalf.