The full menu

Everything we check

Every signal Bot Appétit tests when you scan a page — grouped by course, with why each one matters and what good looks like. It's the same catalog the scanner runs on, so this is exactly what a scan looks at: 54 checks across six categories, plus 9 more in an Advanced (agent & MCP) course and live Core Web Vitals — 63 checks in all.

Scan your site →

AEO / content

8 checks

Answer-engine optimisation — how ready your content is to be read, quoted and cited by AI assistants.

Your answer is in the HTML

High

If the main content only appears after JavaScript runs, many AI engines never see it — and can't cite it.

Good looks likeThe core content is server-rendered and present in the raw HTML.

A visible FAQ / Q&A section

High

Question–answer pairs map exactly to how people query AI, making them the most citable content pattern.

Good looks likeA visible FAQ, phrased as real questions with concise answers, mirrored in FAQPage schema.

Semantic HTML landmarks

Medium

Real landmarks (header/nav/main/article) tell machines what each region is, so they parse and cite you cleanly.

Good looks likeThe page uses header, nav, main and article instead of generic divs.

Content is scannable in self-contained chunks

Medium

Answer engines parse by passage, not whole page; self-contained sections are far more likely to be lifted.

Good looks likeOne idea per section (~200–400 words), with descriptive headings, lists and tables.

Author / publisher is clear

Medium

Visible authorship and entity signals build the E-E-A-T that makes AI confident enough to attribute you.

Good looks likeA visible author or organisation, ideally backed by Person/Organization schema.

A visible published / updated date

Low

AI engines favour recently-updated content and use dates to judge relevance.

Good looks likeA clear published and/or last-updated date.

llms.txt is present and valid

Medium

An emerging convention that gives AI a curated map of your key content. Adoption is early and major engines haven't confirmed they use it, so it's helpful hygiene — not a ranking factor.

Good looks likeA valid /llms.txt (H1 + summary + sectioned links), advertised via a Link: rel=describedby header.

Clean content for agents (Markdown)

Low

Serving a clean markdown version to agents that ask for it gives them noise-free content. Nice-to-have; few platforms support it.

Good looks likeResponds to Accept: text/markdown with a clean markdown version.

AI access

5 checks

Whether AI crawlers are actually allowed to reach, read and cite your content.

AI crawlers aren't blocked

High

Blocking the search-and-answer bots (GPTBot, ClaudeBot, PerplexityBot, Google-Extended…) removes you from AI answers entirely.

Good looks likeThe AI crawlers you want are allowed in robots.txt.

AI bot rules are explicit and intentional

High

A deliberate allow/deny per bot (separating training bots from search bots from user-fetchers) reads as maturity and avoids accidental blocks.

Good looks likeAn explicit allow/disallow per AI crawler that matches your actual intent.

Automated visitors can reach your pages

High

If a bot challenge or WAF turns away automated visitors, it turns away the AI answer engines (GPTBot, ClaudeBot, PerplexityBot) too — they can't read or cite a page they can't load, so you vanish from AI answers. It's the most fundamental AI-access problem there is.

Good looks likeYour pages load for honest automated clients — AI crawlers aren't blocked at the door.

Content usage preferences declared

Medium

Content-Signal directives (search / ai-input / ai-train) let you state how your content may be used by AI.

Good looks likeClear Content-Signal directives that reflect your policy.

Structured data

6 checks

The machine-readable JSON-LD that tells engines exactly what your page and business are.

Structured data (JSON-LD) is present

High

Machine-readable markup makes your facts eligible for rich results and easier for AI to quote accurately.

Good looks likeAt least one valid JSON-LD block describing the page.

Structured data is valid

High

Broken or incomplete schema is ignored — or worse, distrusted. (We show the snippet + any errors below.)

Good looks likeEvery JSON-LD block parses cleanly and each entity declares its @context and @type.

FAQ / Q&A schema

Medium

A question paired with a direct answer is exactly what an AI answer engine or a search result quotes. FAQPage and QAPage markup label your Q&A content in a machine-readable format that Google and the AI/search crawlers (Bing, Perplexity, RAG crawlers) still parse. Google removed the visual FAQ rich result from search listings in May 2026, but that was only the SERP feature — the markup stays valid, is still read, and the Q&A content itself is what gets cited, so keep your answers genuine and visible on the page.

Good looks likeA JSON-LD FAQPage block (multiple questions, your own answers) backing a real, visible FAQ — or, for a page built around one user-answered question, a QAPage block.

Organization schema with sameAs

Medium

sameAs links let engines confirm you're one real entity across sources — the foundation of being named by AI.

Good looks likeOrganization JSON-LD carrying a logo and sameAs links to your profiles.

Right schema type for the page

Medium

Type-appropriate markup (Article, Product, LocalBusiness, Breadcrumb…) unlocks the matching rich results.

Good looks likeSchema types that match the page's purpose, with required fields filled.

Breadcrumb structured data

Low

BreadcrumbList JSON-LD earns a distinct breadcrumb rich result in search and gives AI engines a clear sense of where a page sits in your site.

Good looks likeA valid BreadcrumbList on interior pages, matching the on-page breadcrumb trail.

SEO

24 checks

The classic search-engine fundamentals that crawlers and rankings still depend on.

Returns a healthy 200 with no redirect chains

Critical

A page that 4xx/5xxs or hops through multiple redirects wastes crawl budget and may not index at all.

Good looks likeThe URL returns 200 directly, or via a single clean redirect.

Caching or validation headers are set

Low

A Cache-Control, ETag, or Last-Modified header lets browsers and CDNs skip re-downloading an unchanged page — faster repeat visits, less server load, and a small hand to crawlers hitting you often.

Good looks likeThe page sends a Cache-Control, ETag, Last-Modified, or Expires header.

One canonical host (www vs non-www)

High

Serving the same content on both www and non-www (or http and https) splits ranking authority.

Good looks likeAll variants 301 to one preferred host.

robots.txt is present and not over-blocking

High

A stray Disallow: / can hide your whole site from search; a missing robots.txt leaves crawling ambiguous.

Good looks likeA valid robots.txt that allows your public pages and links to the sitemap.

Not accidentally set to noindex

High

A meta robots or X-Robots-Tag noindex removes the page from search entirely — often left on by mistake after launch.

Good looks likeNo noindex on pages you want found.

Has a valid canonical

High

The canonical consolidates ranking signals onto the URL you want and resolves duplicate-content ambiguity. It counts whether you declare it as a link element or an HTTP Link header — Google treats both the same.

Good looks likeA self-referencing canonical pointing to the preferred, on-domain URL — as a <link rel="canonical"> element or a Link: rel="canonical" response header.

Mobile viewport is set

High

Google indexes mobile-first; without a viewport tag the page renders broken on phones and its rankings are capped.

Good looks likeA width=device-width viewport meta tag.

Unique, well-sized title tag

Critical

The title is the strongest on-page relevance signal and the biggest driver of click-through.

Good looks likeA unique, keyword-led title around 30–60 characters.

Compelling meta description

High

It doesn't rank you directly, but it owns the search snippet and lifts click-through.

Good looks likeA unique description roughly 70–160 characters — ~120–160 is the sweet spot for a full snippet.

Exactly one H1

High

One clear H1 states the page topic to crawlers and AI; none or several muddies the signal.

Good looks likeA single H1 that states the page's topic.

Logical heading order

High

A clean H1→H2→H3 structure is how crawlers, screen readers, and AI parse your content.

Good looks likeHeadings nest in order with no skipped levels.

Topic is consistent across title, H1 and URL

Medium

When the title, H1, URL, and opening line agree on the topic, relevance is unambiguous.

Good looks likeThe main topic appears in the title, the H1, the slug, and the first paragraph.

Images have descriptive alt text

Medium

Alt text powers image search, gives screen-reader context, and helps machines understand the page.

Good looks likeMeaningful images carry concise, descriptive alt text.

Open Graph tags for sharing

Medium

OG tags control the preview card when your links are shared or cited — a growing discovery surface.

Good looks likeog:title, og:description, og:image and og:url are all set, declared with property=.

Twitter/X card tags

Low

Without a card + image, links render as a small, less clickable preview on X.

Good looks liketwitter:card, title, description and image are set.

XML sitemap is present and referenced

Medium

A sitemap speeds discovery and indexing, especially for newer pages with few inbound links.

Good looks likeA valid /sitemap.xml, referenced from robots.txt, whose URLs resolve.

Missing pages return a real 404

Medium

A soft-404 (a 200 for a missing page) confuses crawlers and can get junk indexed.

Good looks likeUnknown URLs return a true 404 with a helpful page.

Images are optimised

Medium

Heavy, unsized images are the most common cause of slow loads and layout shift.

Good looks likeModern formats (WebP/AVIF), lazy-loading below the fold, and explicit width/height.

Language and charset declared

Low

A lang attribute and UTF-8 charset help engines, browsers and screen readers render correctly.

Good looks likeA valid <!doctype html>, lang attribute, and UTF-8 charset.

hreflang for language variants

Low

hreflang serves the right language/region version and prevents duplicate-content confusion.

Good looks likeValid, reciprocal hreflang tags across your language variants.

Analytics is installed

Low

You can't improve what you don't measure; no analytics means no baseline and no lead attribution.

Good looks likeGA4 (or a privacy-first equivalent) is installed, ideally via GTM.

Search Console / Bing verification

Low

Verifying the site is your direct line to index status, errors and search performance.

Good looks likeGoogle Search Console (and ideally Bing) verification is in place.

A favicon is set

Low

Your favicon shows next to your result in search and in some AI answer interfaces — a small but real trust and brand signal.

Good looks likeA <link rel="icon"> (or apple-touch-icon) pointing at a real icon.

No meta-refresh redirect

Low

A client-side <meta http-equiv="refresh"> redirect is slower than a server 301, can be ignored by crawlers, and is treated as a mild cloaking smell.

Good looks likeRedirects use a server 301/302, not a meta refresh.

Security

7 checks

How safely your site is served — HTTPS, secure headers, and no leaked internals.

Served over a secure HTTPS connection

Critical

HTTPS is a baseline trust and ranking signal; browsers warn users away from insecure pages, and AI engines skip them.

Good looks likeEvery page loads over HTTPS with a valid, unexpired certificate.

HTTP redirects to HTTPS

High

If the insecure http:// version still loads, you split trust and risk duplicate content.

Good looks likehttp:// requests 301-redirect to the https:// version.

No mixed (insecure) content

Medium

Browsers outright block insecure scripts, styles and frames on an https page — breaking the page — and auto-upgrade insecure images/media, which then break if the host doesn't serve https.

Good looks likeEvery script, style, frame, image and media file is referenced over https.

Core security headers are set

Medium

Headers like HSTS, X-Content-Type-Options and a referrer policy harden the site and are a recognised best-practice signal.

Good looks likeHSTS, X-Content-Type-Options, X-Frame-Options/CSP frame-ancestors, and a Referrer-Policy are present.

Not flagged for malware or phishing

Medium

A site flagged by Google Safe Browsing is hidden behind warnings and won't be recommended.

Good looks likeThe site is clean in Google Safe Browsing.

No server version leakage

Low

Headers that reveal exact server/framework versions hand attackers a head start.

Good looks likeServer and X-Powered-By headers are absent or generic.

security.txt is published

Low

A /.well-known/security.txt (RFC 9116) gives security researchers a standard way to report a vulnerability — a maturity signal shipped by Google, GitHub and Meta.

Good looks likeA /.well-known/security.txt with the two fields RFC 9116 requires: Contact: and a future Expires: date.

Advanced

9 checks

Agent & MCP readiness — MCP server cards, agent-skills manifests, API catalogs, OAuth & OpenID discovery, web-bot-auth and AI DNS records: the emerging well-known signals AI agents use to act on your site. These run on every scan and appear as their own Advanced sub-score in your results (kept separate from the headline, since most sites don't need them yet).

MCP Server Card

Low

Advertises an MCP server so agents can discover and use your tools. Only relevant if you expose agent-facing infrastructure.

Good looks likeA valid MCP Server Card at /.well-known/mcp.json or /.well-known/mcp/server-card.json (the two paths served in the wild — the spec proposals are still drafts).

Agent Skills index

Low

A discoverable manifest of skills an agent can use on your site.

Good looks likeA valid Agent Skills index at /.well-known/agent-skills/index.json.

API catalog

Low

A machine-readable index of your APIs (RFC 9727) lets agents find and use them.

Good looks likeA valid /.well-known/api-catalog.

OAuth authorization-server metadata

Low

Discovery metadata lets agents learn how to authenticate against protected resources.

Good looks likeValid OAuth authorization-server metadata at the well-known path.

OAuth protected-resource metadata

Low

RFC 9728 protected-resource metadata is how an MCP server tells an agent which authorization server guards it — the entry point of the MCP auth handshake.

Good looks likeA valid /.well-known/oauth-protected-resource pointing at your authorization server.

OpenID Connect discovery

Low

OIDC discovery metadata lets agents and clients learn your token, authorization and JWKS endpoints without hard-coding them.

Good looks likeValid OpenID Connect discovery metadata at /.well-known/openid-configuration.

Web Bot Auth (operates a signed bot)

Low

Web Bot Auth (IETF draft) lets a BOT OPERATOR cryptographically prove its traffic: the operator publishes signing keys on its own domain, and websites verify them. This one only applies if this domain operates a bot or agent — a normal publisher site has nothing to publish here, and that's expected.

Good looks likeOnly if you operate a bot/agent: a JWKS at /.well-known/http-message-signatures-directory on the domain your bot signs as (e.g. chatgpt.com publishes one).

Auth.md agent registration

Low

OAuth tells an agent how to authenticate. auth.md tells it how to register in the first place — the step before that. Without one, an AI agent acting for a customer has no documented way to get credentials for your service.

Good looks likeA /auth.md describing your registration flows, scopes and endpoints, alongside your OAuth protected-resource metadata.

AI discovery via DNS

Low

DNS-based AI-discovery records help agents find your endpoints without fetching the page.

Good looks likeAI-discovery DNS records are published.

Performance

Measured live

On top of the 63 checks above, every scan measures your Core Web Vitals live through Google PageSpeed — both what real Chrome users experience (field data, including INP) and a simulated mobile lab test (LCP, CLS, FCP, TBT, Speed Index, TTFB, page weight and render-blocking — INP itself can only be measured from real users, so the lab uses Total Blocking Time as its interactivity proxy).

See where your site stands

A free scan gives you a 0–100 score and a course-by-course breakdown in seconds — no signup.

Scan your site →