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
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 | - |