AI Readiness Report - https://aireadytest.com

AI Ready Test does not verify domain ownership. Anyone may submit any public URL for scanning, including URLs they do not own.

Overall grade

F

Overall score: 35.2%

Category breakdown

  • Agent Actions 0% 0%
  • Content Clarity 87% 87%
  • Crawlability 86% 86%
  • Emerging Standards 17.6% 17.6%
  • Entity 0% 0%
  • Multimodal 0% 0%
  • Performance 50% 50%
  • Structured Data 0% 0%
  • Trust & Provenance 10% 10%

Signal results

Signal Category Result How to fix it
Agent Payments Protocol (AP2) signals Agent Actions Fail Track AP2 spec evolution at ap2-protocol.org / github.com/google-agentic-commerce/AP2; adopt once stable discovery lands.
API endpoints emit Link rel=describedby Agent Actions Fail Emit Link: </openapi.json>; rel="service-desc" on JSON API responses.
CORS allows agent fetches on public APIs Agent Actions Fail Set Access-Control-Allow-Origin: * on truly public endpoints; for credentialed flows use explicit origin allowlist + Allow-Credentials.
GraphQL endpoint with introspection Agent Actions Fail Expose introspection in non-prod, or publish static SDL and link via Link rel=describedby.
HTTP 429 with Retry-After on rate limits Agent Actions Skipped -
Machine-actionable mailto:/tel: links Agent Actions Fail Replace text/image addresses with <a href=mailto:...> and <a href=tel:+...>.
OAuth/OIDC authorization-server metadata Agent Actions Fail If you operate OAuth/OIDC, publish metadata per RFC 8414 / OIDC Discovery. Most IDPs (Auth0, Okta, Keycloak) do this automatically.
OpenActive dataset site + Open Booking API Agent Actions Skipped -
OpenAPI document at conventional path Agent Actions Fail Publish openapi.json at /openapi.json (recommended per OAS 3.1) or behind /.well-known/; keep current with deployed routes.
BuyAction/OrderAction potentialAction with EntryPoint Agent Actions Skipped -
Machine-readable quote/RFQ endpoint Agent Actions Fail Document a /quote OpenAPI endpoint with JSON request body; link via potentialAction.
RateLimit headers on API responses Agent Actions Fail Emit RateLimit / RateLimit-Policy per IETF draft. Example: 'RateLimit: "default";r=50;t=60' + 'RateLimit-Policy: "default";q=100;w=60'.
ReserveAction for bookable services Agent Actions Skipped -
Shopify Storefront API reachable Agent Actions Skipped -
Stripe Payment Link / Buy Button discoverable Agent Actions Fail Add buy.stripe.com link or buy-button to each purchasable item; embed inside Schema.org Offer JSON-LD via 'url'.
vCard (.vcf) file published Agent Actions Fail Generate vCard 4.0 per RFC 6350; link from contact page with Content-Type text/vcard.
Webhook subscription endpoint declared Agent Actions Fail Declare webhook subscriptions in openapi.json under 'webhooks' (OAS 3.1) or publish AsyncAPI document.
x402 agent-payment support Agent Actions Fail Integrate x402 middleware (Coinbase SDKs for TS/Go/Python); even a single tip-jar endpoint at /api/x402/tip is useful.
Acronyms use <abbr> and defined terms use <dfn> Content Clarity Fail On first use expand acronyms inline as 'Full Name (XYZ)' or wrap in <abbr title>. Convert glossary pairs to <dl>.
Alt text presence and quality on content images Content Clarity Skipped -
Single main landmark + HTML5 landmark coverage Content Clarity Pass -
Primary content wrapped in <article> Content Clarity Pass -
Main-content text dominates boilerplate Content Clarity Fail Reduce nav/footer text; wrap primary content in <main>; collapse mega-menus.
Anchor text is descriptive Content Clarity Pass -
Standalone media wrapped in <figure>/<figcaption> Content Clarity Skipped -
Flesch Reading Ease on key pages Content Clarity Skipped -
Heading hierarchy without skipped levels Content Clarity Pass -
html element has valid lang attribute Content Clarity Pass -
Inline language switches marked with lang Content Clarity Skipped -
Visual lists use <ul>/<ol>/<li> Content Clarity Pass -
Page extracts cleanly to Markdown Content Clarity Pass -
Readable URLs (no opaque IDs) Content Clarity Pass -
Data tables use thead/tbody and th[scope] Content Clarity Skipped -
Explicit robots.txt policy for major AI crawlers Crawlability Fail Add deliberate User-agent: <Token> blocks for each AI bot (https://github.com/ai-robots-txt/ai.robots.txt reference list).
AI-search bots not blocked Crawlability Pass -
Consistent AI-training opt-out posture Crawlability Pass -
Vendor IP ranges not WAF-blocked Crawlability Pass -
rel=canonical on every indexable page Crawlability Pass -
hreflang annotations bidirectional with valid codes Crawlability Skipped -
HSTS with sufficient max-age Crawlability Pass -
Correct HTTP status semantics (no soft 404s) Crawlability Pass -
HTTPS everywhere with HTTP->HTTPS redirect Crawlability Pass -
Site reachable over IPv6 Crawlability Fail Enable IPv6 at CDN or origin; publish AAAA.
Mobile and desktop content parity Crawlability Pass -
Clean redirect chains (<=2 hops, 301/308 for permanent) Crawlability Pass -
robots.txt present and RFC 9309 valid Crawlability Pass -
Sitemap directive in robots.txt Crawlability Pass -
Sitemap <lastmod> present and accurate Crawlability Fail Emit lastmod from CMS last-edited timestamp, not sitemap build time.
sitemap.xml present, valid, within limits Crawlability Pass -
Snippet/preview directives permit AI rendering Crawlability Pass -
Robots meta and X-Robots-Tag coherent Crawlability Pass -
/.well-known/agent-card.json (A2A protocol) Emerging Standards Fail Generate Agent Card via A2A SDK and serve at /.well-known/agent-card.json.
/.well-known/ai-plugin.json (legacy) Emerging Standards Fail Migrate to MCP; consider removing ai-plugin.json if not actively used.
Content-Usage header/robots rule (IETF aipref) Emerging Standards Fail Emit `Content-Usage: train-ai=n, search=y` header; mirror in robots.txt once attach draft stabilizes.
did:web identity document Emerging Standards Fail Generate did:web document (DIF universal-resolver, Spruce DIDKit) and host at /.well-known/did.json.
/llms-full.txt expanded content dump Emerging Standards Fail Generate llms-full.txt via static site generator or Mintlify (auto-generates).
/llms.txt curated overview Emerging Standards Pass -
Markdown mirror via .md URL suffix Emerging Standards Fail Configure site to serve .md alongside .html (Mintlify, Nextra, Docusaurus plugins).
MCP server reachable via Streamable HTTP Emerging Standards Fail Deploy MCP server (Anthropic, Cloudflare, Stripe, Vercel SDKs); expose Streamable HTTP endpoint; advertise via <link rel=mcp> and /llms.txt until .well-known standardized.
noai/noimageai directives (where intended) Emerging Standards Fail If opt-out aligns with site policy, add <meta name=robots content="noai, noimageai"> and/or X-Robots-Tag: noai, noimageai header.
W3C TDM Reservation Protocol signals Emerging Standards Fail Publish /.well-known/tdmrep.json with `[{"location":"/","tdm-reservation":1,"tdm-policy":"https://..."}]` or set headers.
DUNS number on Organization Entity Fail Add `duns` to Organization JSON-LD using D&B-assigned number.
Founders as structured Person entities Entity Fail Replace string founder values with full Person objects with sameAs.
Link to Google Business Profile / Knowledge Panel Entity Fail Claim Google Business Profile/Knowledge Panel; add public g.page/maps URL to sameAs.
GTIN on Product schema Entity Skipped -
ISBN/ISSN for publications Entity Skipped -
Organization/Person knowsAbout topics Entity Fail Replace string topics with Wikidata URLs in knowsAbout array.
LEI code for financial/legal entities Entity Fail Obtain LEI from GLEIF; add `leiCode` field to Organization JSON-LD.
NAP parity across pages Entity Fail Pick one canonical NAP and propagate to JSON-LD, contact page, footer, and citation directories.
Author ORCID iD Entity Skipped -
Organization.contactPoint structured Entity Fail Add contactPoint with @type ContactPoint, contactType, telephone/email, areaServed, availableLanguage, hoursAvailable.
sameAs to official social profiles Entity Fail Add canonical social profile URLs to Organization JSON-LD sameAs.
sameAs link to Wikidata QID Entity Fail Claim or create a Wikidata item; add its URL to Organization JSON-LD sameAs.
sameAs link to Wikipedia article Entity Fail Add canonical Wikipedia URL to sameAs (do NOT create promotional Wikipedia pages).
Organization schema with core identity properties Entity Fail Add Organization JSON-LD to homepage with the six fields per Google's Organization docs.
parentOrganization / subOrganization linkage Entity Skipped -
ROR identifier for research organizations Entity Fail Look up institution at ror.org; add URL to Organization JSON-LD sameAs.
ARIA labels on custom media controls Multimodal Skipped -
AudioObject schema with transcript Multimodal Skipped -
Descriptive image filenames Multimodal Skipped -
Image lazy-loading and decoding hints Multimodal Skipped -
Image sitemap extension Multimodal Fail Add image:image entries for each page's significant images.
MathML for mathematical equations Multimodal Skipped -
AVIF or WebP served Multimodal Fail Convert to AVIF/WebP; serve with <picture><source type=image/avif><source type=image/webp><img src=fallback.jpg>.
PodcastSeries and PodcastEpisode schema Multimodal Skipped -
Responsive images via srcset or picture Multimodal Skipped -
VideoObject schema with transcript Multimodal Skipped -
Video sitemap extension Multimodal Fail Add video entries with required tags including duration, publication_date, uploader.
WebVTT captions/subtitles on HTML video Multimodal Skipped -
color-scheme declares dark/light support Performance Fail Add <meta name=color-scheme content="light dark">.
Favicon declared and reachable Performance Fail Add <link rel=icon href=/favicon.ico> or modern <link rel=icon type=image/svg+xml href=/icon.svg>.
Brotli or gzip on text resources Performance Fail Enable brotli at origin (nginx ngx_brotli, Apache mod_brotli) or CDN (Cloudflare/Fastly/CloudFront).
HTTP/2 via ALPN Performance Skipped -
HTTP/3 via Alt-Svc or direct h3 ALPN Performance Pass -
CSS respects prefers-reduced-motion Performance Fail Add @media (prefers-reduced-motion: reduce) { *,*::before,*::after { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; } }.
TTFB and total response time within budget Performance Pass -
Skip link as first focusable element Performance Fail Add <a href="#main" class="skip-link">Skip to main content</a> as first <body> element; ensure <main id="main"> exists.
viewport meta for mobile rendering Performance Pass -
Article schema on editorial pages Structured Data Fail Emit Article JSON-LD on every editorial page; dates ISO 8601 with timezone.
Author as Person/Organization with sameAs Structured Data Skipped -
BreadcrumbList on interior pages Structured Data Fail Emit BreadcrumbList on category/detail pages.
Dataset schema on data pages Structured Data Skipped -
datePublished/dateModified in ISO 8601 with timezone Structured Data Skipped -
DiscussionForumPosting on forum threads Structured Data Skipped -
Event schema on event pages Structured Data Skipped -
FAQPage schema Structured Data Skipped -
HowTo schema on procedural content Structured Data Skipped -
JobPosting schema on job pages Structured Data Skipped -
JSON Feed autodiscovery link Structured Data Fail Publish JSON Feed at /feed.json with version, title, home_page_url, feed_url, items[].
JSON-LD structured data present Structured Data Fail Add JSON-LD with @context https://schema.org and appropriate @type (WebSite home, Article posts, Product PDPs, Organization site-wide).
LocalBusiness with address and geo Structured Data Skipped -
MerchantReturnPolicy in structured data Structured Data Skipped -
HTML microdata or RDFa as alternative Structured Data Fail Prefer JSON-LD; if microdata/RDFa, ensure itemtype/vocab point to Schema.org.
Google News sitemap extension Structured Data Fail Generate news sitemap with required fields for fresh articles (<=2 days old typical).
Offer.availability uses Schema.org enumeration Structured Data Skipped -
Offer.price and priceCurrency present Structured Data Skipped -
Offer.priceValidUntil declared Structured Data Skipped -
OfferShippingDetails declared Structured Data Skipped -
og:type matches page vertical with namespace properties Structured Data Fail Set og:type correctly and emit corresponding namespace metadata.
Open Graph required tags (og:title, og:type, og:image, og:url) Structured Data Fail Add four required OG meta tags; og:url absolute and canonical; og:image >=1200x630.
Paywalled content marked with isAccessibleForFree Structured Data Skipped -
/pricing exposes Offer/UnitPriceSpecification per tier Structured Data Fail Emit Offer per tier with priceSpecification of UnitPriceSpecification including billingIncrement, billingDuration, unitCode.
Product schema on PDPs Structured Data Skipped -
ProfilePage schema on author/user pages Structured Data Fail Add ProfilePage JSON-LD with mainEntity Person on author bio pages.
QAPage for single-question pages Structured Data Skipped -
Recipe schema on recipe pages Structured Data Skipped -
Review/AggregateRating attached to supported types Structured Data Skipped -
RSS/Atom feed autodiscovery link Structured Data Fail Generate feed; add <link rel=alternate type=application/rss+xml href=/feed.xml> in <head>.
SoftwareApplication on app/SaaS pages Structured Data Skipped -
Twitter/X Card meta tags Structured Data Fail Add twitter:card with appropriate type; provide twitter:title/description/image or rely on og:* fallback.
WebSite schema with SearchAction Structured Data Fail Add WebSite JSON-LD with potentialAction SearchAction.target as URLTemplate.
BIMI with VMC published Trust & Provenance Fail Reach DMARC enforcement; obtain VMC from Entrust/DigiCert (requires trademark); publish BIMI TXT.
CAA DNS record restricts issuance Trust & Provenance Fail Add `example.com. CAA 0 issue "letsencrypt.org"` and CAA 0 iodef mailto:security@example.com.
Certificate Transparency SCTs present Trust & Provenance Skipped -
ClaimReview structured data Trust & Provenance Skipped -
DKIM public key discoverable Trust & Provenance Fail Generate DKIM keypair via mail provider; publish public key at selector._domainkey.{domain}.
DMARC at quarantine or reject Trust & Provenance Fail Stage from p=none (with rua=) to p=quarantine to p=reject. Publish v=DMARC1; p=reject; rua=mailto:dmarc@example.com.
Global Privacy Control well-known Trust & Provenance Fail Publish /.well-known/gpc.json: {"gpc":true,"lastUpdate":"2026-05-22"}; backend honors Sec-GPC: 1.
HTTP Message Signatures (RFC 9421) Trust & Provenance Fail Implement RFC 9421 signing middleware (http-message-signatures libraries for Node/Go/Python); sign @status, content-digest, date with Ed25519 or ECDSA P-256.
MTA-STS policy enforced Trust & Provenance Fail Publish _mta-sts TXT v=STSv1; id=...; serve policy at mta-sts subdomain with mode=enforce.
Schema.org Citation to primary sources Trust & Provenance Skipped -
Schema.org license / Dublin Core rights Trust & Provenance Fail Add `license` to JSON-LD Article block (e.g., https://creativecommons.org/licenses/by/4.0/); add DC.license meta tag.
RFC 9116 security.txt published Trust & Provenance Pass -
SPF DNS record published Trust & Provenance Fail Publish TXT `v=spf1 include:_spf.provider.example -all`.
SRI on cross-origin assets Trust & Provenance Fail Add integrity="sha384-..." (computed from bytes) and crossorigin="anonymous" to third-party tags; use https://www.srihash.org/.
TLS 1.3 supported Trust & Provenance Skipped -