TL;DR.
The AI-Readiness grade of /ai-check (v1.2) sums 20 checks worth 28 points: files on the site (13), robots.txt (5) and the homepage (10). The letter is the share of 28 earned: A from 90%, B from 70%, C from 50%, D from 30%, F below. Every check counts toward the maximum, the ones /ai-check calls informational or optional included. The checks run in api/ai-check.php; the «citation readiness» block shown next to the grade is a separate score and is not part of it.
Files on the site13robots.txt5The homepage10
Changelog.
v1.2 (2026-10-26) — meta robots and X-Robots-Tag that keep the home page out of Google's AI answers (noindex, nosnippet, max-snippet:0, also scoped to googlebot) now score 0; v1.1 gave the points for any robots meta and for any X-Robots-Tag without noai, read only the header's last line, and so rewarded noindex. Weights are unchanged. The robots.txt list names Google-Extended «Gemini», not «AI Overviews»: Google says it does not affect inclusion in Search. 2026-10-06, same v1.1 — where the formula applies, not the formula: the MCP tool check_ai_readiness runs this check (20 signals) instead of probing five files with weights of its own; its score is the share of this scale on 0–100. v1.1 (2026-10-05) — the formula did not change; its description did. Since publication this page had described a formula the check never computed: 28 points, not 30; ai-plugin.json is looked for at the site root, not in /.well-known/; llms-full.txt, rel="llms-txt", meta ai-content/ai-license and «linked from RSS» are not checked; X-Robots-Tag earns 2 for any value without noai, not for «index, follow»; robots.txt earns 3 for three explicitly allowed AI bots, not ten, and 0 if any listed bot is blocked; Content-Signal is worth 1, not 2; the A2A card is worth 1, not 2; author signals are meta author, article:author and a JSON-LD author, not sameAs and a byline; OpenAPI is /openapi.yaml, not a link from agents.json; the four «buckets» were not in the code — the grade is one sum. v1.0 (2026-05-05) — first publication.
Files on the site — 13 pts
2 — /.well-known/agents.json: 2 — valid JSON; 1 — file present, JSON does not parse
1 — /ai-plugin.json (site root): 1 — answers 2xx with a body. The content is not checked; the /.well-known/ai-plugin.json path is not looked at.
2 — /llms.txt: 2 — answers 2xx with a body. /llms-full.txt is not checked.
1 — /openapi.yaml or /.well-known/openapi.yaml: 1 — present, contains openapi
1 — /.well-known/http-message-signatures-directory: 1 — answers 2xx. Marked informational on /ai-check, yet part of the maximum.
1 — /.well-known/api-catalog: 1 — answers 2xx
1 — OAuth/OIDC discovery in /.well-known/: 1 — present. oauth-authorization-server or openid-configuration. Marked optional on /ai-check, yet part of the maximum.
2 — MCP server card: 2 — valid JSON. /.well-known/mcp/server-card.json, …/server-cards.json or /.well-known/mcp.json.
3 — AI bots in robots.txt: 3 — 3+ AI bots named, none blocked; 2 — OAI-SearchBot and GPTBot named; 1 — robots.txt present, any other case. A list of 15 bots: OAI-SearchBot, GPTBot, ChatGPT-User, PerplexityBot, ClaudeBot, anthropic-ai, Google-Extended, Bingbot, YandexAdditional, Meta-ExternalAgent, Applebot-Extended, Amazonbot, DeepSeekBot, MistralBot, GigaChat-Web. «Blocked» — Disallow: / for it or for *.
1 — Sitemap: in robots.txt: 1 — present
1 — Content-Signal: in robots.txt: 1 — present
The homepage — 10 pts
2 — <link rel="ai-content"> in <head>: 2 — present
1 — meta robots or ai-robots in <head>: 1 — present, no noai/noimageai and no noindex/nosnippet/max-snippet:0 for Google. Google's rules: meta robots and meta googlebot together, the most restrictive applies. nosnippet and max-snippet:0 keep the page out of AI Overviews and AI Mode as input, noindex keeps it out of Search. The same for X-Robots-Tag — every line, «googlebot: …» included.
2 — X-Robots-Tag header on the homepage: 2 — present, no noai/noimageai and no noindex/nosnippet/max-snippet:0 for Google
1 — SpeakableSpecification in the homepage HTML: 1 — present
2 — Author signals on the homepage: 2 — 2+ of 3; 1 — one. Signals: meta name="author", meta property="article:author", "author": { in JSON-LD.
1 — Answer to Accept: text/markdown: 1 — text/markdown or text/plain
1 — Link header on the homepage: 1 — present
Grade letter mapping
A≥ 90%
B≥ 70%
C≥ 50%
D≥ 30%
F< 30%
Share of 28 points
Share of the maximum
Grade
≥ 90%
A
≥ 70%
B
≥ 50%
C
≥ 30%
D
< 30%
F
The AI-ready badge
The «AI ready» badge (/badges) uses a light formula: 20 each for /llms.txt, /.well-known/ai-plugin.json, /.well-known/agents.json and /.well-known/mcp/server-card.json answering 2xx, and 20 if robots.txt names GPTBot, ClaudeBot or PerplexityBot; capped at 100. Badge letters: A from 90, B from 80, C from 70, D from 60, E from 50, F below.
Current version — v1.2, updated . Every change to the published formula — the weights or their description — is a new version with a line in the changelog above.
Cookies on enterno.io.We use essential cookies (the site needs them) plus optional analytics and AI summaries. Accept all, reject, or customize.Essential cookies + optional (analytics, AI summaries).Details: cookie registry · consent.
Sign-in session, CSRF protection, language, your cookie choice. The site cannot work without them.
Yandex Metrica (anonymised, servers in Russia) and, on the English version, Google Analytics 4. Helps us see which tools are useful.
AI explanations of your check results via OpenAI (USA, cross-border transfer); disable anytime.