{"schema_version":"1.0","rule_version":"2026-10-28","results":["PASS","WARNING","FAIL","NOT_TESTED"],"not_tested_reasons":["not_applicable","deadline_exceeded","budget_exceeded","dependency_failed","fetch_failed","dns_lookup_failed","unsupported"],"severity_weights":{"CRITICAL":10,"HIGH":6,"MEDIUM":3,"LOW":1,"INFO":0},"category_weights":{"security":20,"seo":20,"tls":15,"performance":12,"transport":10,"accessibility":10,"links":5,"mobile":5,"dns":3},"caps":{"CRITICAL":49,"HIGH":79},"min_overall_coverage":0.59999999999999997779553950749686919152736663818359375,"min_category_coverage":0.5,"grades":{"A":90,"B":80,"C":70,"D":50,"F":0},"checks":[{"id":"transport.page.reachable","category":"transport","severity":"CRITICAL","name":"Page is reachable","passes_when":"Final status 200-299","warning_when":null,"fails_when":"DNS, connect, timeout, or final status 4xx/5xx","docs_url":"https://agentsiteaudit.com/docs/checks/transport.page.reachable"},{"id":"transport.https.available","category":"transport","severity":"HIGH","name":"Page is served over HTTPS","passes_when":"Final URL is https","warning_when":null,"fails_when":"Page only served over http","docs_url":"https://agentsiteaudit.com/docs/checks/transport.https.available"},{"id":"transport.https.redirect","category":"transport","severity":"HIGH","name":"HTTP redirects to HTTPS","passes_when":"http:// version redirects to https://","warning_when":null,"fails_when":"http:// version serves the page or errors","docs_url":"https://agentsiteaudit.com/docs/checks/transport.https.redirect"},{"id":"transport.redirects.chain","category":"transport","severity":"LOW","name":"Redirect chain is short","passes_when":"0-1 redirects","warning_when":"2-3 redirects","fails_when":"4-5 redirects","docs_url":"https://agentsiteaudit.com/docs/checks/transport.redirects.chain"},{"id":"transport.host.consistent","category":"transport","severity":"LOW","name":"www and non-www agree","passes_when":"www and non-www end at the same URL","warning_when":null,"fails_when":"They end at different URLs, or one fails","docs_url":"https://agentsiteaudit.com/docs/checks/transport.host.consistent"},{"id":"transport.http2.supported","category":"transport","severity":"LOW","name":"HTTP/2 supported","passes_when":"HTTP/2 negotiated","warning_when":"HTTP/1.1 only","fails_when":null,"docs_url":"https://agentsiteaudit.com/docs/checks/transport.http2.supported"},{"id":"transport.compression.enabled","category":"transport","severity":"MEDIUM","name":"HTML is compressed","passes_when":"HTML sent gzip or brotli","warning_when":null,"fails_when":"HTML over 1 KB sent uncompressed","docs_url":"https://agentsiteaudit.com/docs/checks/transport.compression.enabled"},{"id":"transport.caching.headers","category":"transport","severity":"LOW","name":"Caching headers present","passes_when":"Cache-Control or ETag/Last-Modified present","warning_when":null,"fails_when":"None present","docs_url":"https://agentsiteaudit.com/docs/checks/transport.caching.headers"},{"id":"transport.ttfb.fast","category":"transport","severity":"MEDIUM","name":"Server responds quickly","passes_when":"TTFB under 600 ms","warning_when":"600-1800 ms","fails_when":"Over 1800 ms","docs_url":"https://agentsiteaudit.com/docs/checks/transport.ttfb.fast"},{"id":"tls.certificate.valid","category":"tls","severity":"CRITICAL","name":"SSL certificate is valid","passes_when":"Trusted chain, in date, hostname matches","warning_when":null,"fails_when":"Verification ran and rejected the certificate","docs_url":"https://agentsiteaudit.com/docs/checks/tls.certificate.valid"},{"id":"tls.certificate.expiry","category":"tls","severity":"HIGH","name":"SSL certificate is not close to expiry","passes_when":"30+ days left","warning_when":"14-29 days","fails_when":"Under 14 days","docs_url":"https://agentsiteaudit.com/docs/checks/tls.certificate.expiry"},{"id":"tls.protocol.modern","category":"tls","severity":"MEDIUM","name":"Modern TLS version","passes_when":"TLS 1.3 or 1.2","warning_when":null,"fails_when":"TLS 1.1 or lower","docs_url":"https://agentsiteaudit.com/docs/checks/tls.protocol.modern"},{"id":"dns.address.ipv6","category":"dns","severity":"LOW","name":"IPv6 address published","passes_when":"AAAA record present","warning_when":"No AAAA record","fails_when":null,"docs_url":"https://agentsiteaudit.com/docs/checks/dns.address.ipv6"},{"id":"dns.mx.present","category":"dns","severity":"INFO","name":"Mail records present","passes_when":"MX record present","warning_when":"No MX record","fails_when":null,"docs_url":"https://agentsiteaudit.com/docs/checks/dns.mx.present"},{"id":"dns.spf.present","category":"dns","severity":"MEDIUM","name":"SPF record present","passes_when":"One valid SPF record","warning_when":"SPF ends +all or ?all","fails_when":"No SPF, or more than one","docs_url":"https://agentsiteaudit.com/docs/checks/dns.spf.present"},{"id":"dns.dmarc.present","category":"dns","severity":"MEDIUM","name":"DMARC policy present","passes_when":"DMARC with p=quarantine or reject","warning_when":"DMARC with p=none","fails_when":"No DMARC","docs_url":"https://agentsiteaudit.com/docs/checks/dns.dmarc.present"},{"id":"dns.caa.present","category":"dns","severity":"LOW","name":"CAA record present","passes_when":"CAA record present","warning_when":"No CAA record","fails_when":null,"docs_url":"https://agentsiteaudit.com/docs/checks/dns.caa.present"},{"id":"performance.html.size","category":"performance","severity":"MEDIUM","name":"HTML size is reasonable","passes_when":"HTML under 100 KB","warning_when":"100-500 KB","fails_when":"Over 500 KB","docs_url":"https://agentsiteaudit.com/docs/checks/performance.html.size"},{"id":"performance.page.weight","category":"performance","severity":"MEDIUM","name":"Total page weight is reasonable","passes_when":"Under 2 MB","warning_when":"2-5 MB","fails_when":"Over 5 MB","docs_url":"https://agentsiteaudit.com/docs/checks/performance.page.weight"},{"id":"performance.requests.count","category":"performance","severity":"LOW","name":"Number of resources is reasonable","passes_when":"Under 80 resources","warning_when":"80-150","fails_when":"Over 150","docs_url":"https://agentsiteaudit.com/docs/checks/performance.requests.count"},{"id":"performance.render_blocking.scripts","category":"performance","severity":"MEDIUM","name":"No render-blocking scripts","passes_when":"No blocking scripts in head","warning_when":"1-2","fails_when":"3 or more","docs_url":"https://agentsiteaudit.com/docs/checks/performance.render_blocking.scripts"},{"id":"performance.images.oversized","category":"performance","severity":"MEDIUM","name":"No oversized images","passes_when":"No image over 200 KB","warning_when":null,"fails_when":"Any image over 200 KB","docs_url":"https://agentsiteaudit.com/docs/checks/performance.images.oversized"},{"id":"performance.images.modern_format","category":"performance","severity":"LOW","name":"Images use modern formats","passes_when":"All large images WebP or AVIF","warning_when":"Some JPEG/PNG over 50 KB","fails_when":null,"docs_url":"https://agentsiteaudit.com/docs/checks/performance.images.modern_format"},{"id":"performance.images.dimensions","category":"performance","severity":"LOW","name":"Images declare their size","passes_when":"All images have width and height","warning_when":"Some missing","fails_when":null,"docs_url":"https://agentsiteaudit.com/docs/checks/performance.images.dimensions"},{"id":"seo.title.present","category":"seo","severity":"HIGH","name":"Page has a title","passes_when":"One non-empty title","warning_when":null,"fails_when":"Missing or empty","docs_url":"https://agentsiteaudit.com/docs/checks/seo.title.present"},{"id":"seo.title.length","category":"seo","severity":"LOW","name":"Title length is good","passes_when":"30-60 characters","warning_when":"10-29 or 61-70","fails_when":"Under 10 or over 70","docs_url":"https://agentsiteaudit.com/docs/checks/seo.title.length"},{"id":"seo.meta_description.present","category":"seo","severity":"MEDIUM","name":"Page has a meta description","passes_when":"One non-empty description","warning_when":null,"fails_when":"Missing or empty","docs_url":"https://agentsiteaudit.com/docs/checks/seo.meta_description.present"},{"id":"seo.meta_description.length","category":"seo","severity":"LOW","name":"Meta description length is good","passes_when":"70-160 characters","warning_when":"50-69 or 161-200","fails_when":"Under 50 or over 200","docs_url":"https://agentsiteaudit.com/docs/checks/seo.meta_description.length"},{"id":"seo.h1.single","category":"seo","severity":"MEDIUM","name":"Page has one H1","passes_when":"Exactly one H1","warning_when":"More than one H1","fails_when":"No H1","docs_url":"https://agentsiteaudit.com/docs/checks/seo.h1.single"},{"id":"seo.headings.order","category":"seo","severity":"LOW","name":"Heading levels are in order","passes_when":"No skipped levels","warning_when":"Levels skipped","fails_when":null,"docs_url":"https://agentsiteaudit.com/docs/checks/seo.headings.order"},{"id":"seo.canonical.valid","category":"seo","severity":"MEDIUM","name":"Canonical URL is valid","passes_when":"Absolute, same site, points to this URL","warning_when":"Points to another URL","fails_when":"Missing, relative, or another site","docs_url":"https://agentsiteaudit.com/docs/checks/seo.canonical.valid"},{"id":"seo.indexable.meta","category":"seo","severity":"HIGH","name":"Page can be indexed","passes_when":"No noindex in meta or X-Robots-Tag","warning_when":"noindex present (confirm intent)","fails_when":null,"docs_url":"https://agentsiteaudit.com/docs/checks/seo.indexable.meta"},{"id":"seo.robots_txt.allows","category":"seo","severity":"HIGH","name":"robots.txt allows this page","passes_when":"robots.txt allows this URL, or no robots.txt","warning_when":null,"fails_when":"robots.txt disallows this URL","docs_url":"https://agentsiteaudit.com/docs/checks/seo.robots_txt.allows"},{"id":"seo.robots_txt.present","category":"seo","severity":"LOW","name":"robots.txt exists","passes_when":"robots.txt returns 200","warning_when":null,"fails_when":"404 or error","docs_url":"https://agentsiteaudit.com/docs/checks/seo.robots_txt.present"},{"id":"seo.sitemap.found","category":"seo","severity":"LOW","name":"XML sitemap found","passes_when":"Sitemap found and parses","warning_when":"Found but contains no URLs","fails_when":"None found","docs_url":"https://agentsiteaudit.com/docs/checks/seo.sitemap.found"},{"id":"seo.hreflang.valid","category":"seo","severity":"MEDIUM","name":"hreflang tags are valid","passes_when":"Valid codes, includes self","warning_when":null,"fails_when":"Invalid codes or no self-reference","docs_url":"https://agentsiteaudit.com/docs/checks/seo.hreflang.valid"},{"id":"seo.open_graph.present","category":"seo","severity":"LOW","name":"Open Graph tags present","passes_when":"og:title, og:description, og:image","warning_when":"Some present","fails_when":"None present","docs_url":"https://agentsiteaudit.com/docs/checks/seo.open_graph.present"},{"id":"seo.structured_data.present","category":"seo","severity":"LOW","name":"Structured data present","passes_when":"JSON-LD present","warning_when":"None present","fails_when":null,"docs_url":"https://agentsiteaudit.com/docs/checks/seo.structured_data.present"},{"id":"seo.structured_data.parsable","category":"seo","severity":"MEDIUM","name":"Structured data parses","passes_when":"All JSON-LD blocks parse, @type set","warning_when":null,"fails_when":"Any block fails to parse","docs_url":"https://agentsiteaudit.com/docs/checks/seo.structured_data.parsable"},{"id":"seo.content.word_count","category":"seo","severity":"LOW","name":"Enough body text","passes_when":"200+ words of body text","warning_when":"Under 200 words","fails_when":null,"docs_url":"https://agentsiteaudit.com/docs/checks/seo.content.word_count"},{"id":"links.internal.broken","category":"links","severity":"MEDIUM","name":"No broken internal links","passes_when":"No checked internal link 4xx/5xx","warning_when":null,"fails_when":"Any internal link 4xx/5xx","docs_url":"https://agentsiteaudit.com/docs/checks/links.internal.broken"},{"id":"links.external.broken","category":"links","severity":"LOW","name":"No broken external links","passes_when":"No checked external link 4xx/5xx","warning_when":null,"fails_when":"Any external link 4xx/5xx","docs_url":"https://agentsiteaudit.com/docs/checks/links.external.broken"},{"id":"accessibility.lang.present","category":"accessibility","severity":"MEDIUM","name":"Page language declared","passes_when":"Valid lang on html","warning_when":null,"fails_when":"Missing or empty","docs_url":"https://agentsiteaudit.com/docs/checks/accessibility.lang.present"},{"id":"accessibility.images.alt","category":"accessibility","severity":"MEDIUM","name":"Images have alt text","passes_when":"Every img has alt (empty allowed)","warning_when":null,"fails_when":"Any img with no alt attribute","docs_url":"https://agentsiteaudit.com/docs/checks/accessibility.images.alt"},{"id":"accessibility.forms.labels","category":"accessibility","severity":"MEDIUM","name":"Form fields are labelled","passes_when":"Every input has a label or aria-label","warning_when":null,"fails_when":"Any unlabelled input","docs_url":"https://agentsiteaudit.com/docs/checks/accessibility.forms.labels"},{"id":"accessibility.links.names","category":"accessibility","severity":"MEDIUM","name":"Links have names","passes_when":"Every link has text or aria-label","warning_when":null,"fails_when":"Any link with no name","docs_url":"https://agentsiteaudit.com/docs/checks/accessibility.links.names"},{"id":"accessibility.buttons.names","category":"accessibility","severity":"MEDIUM","name":"Buttons have names","passes_when":"Every button has a name","warning_when":null,"fails_when":"Any button with no name","docs_url":"https://agentsiteaudit.com/docs/checks/accessibility.buttons.names"},{"id":"accessibility.headings.empty","category":"accessibility","severity":"LOW","name":"No empty headings","passes_when":"No empty headings","warning_when":null,"fails_when":"Any empty heading","docs_url":"https://agentsiteaudit.com/docs/checks/accessibility.headings.empty"},{"id":"mobile.viewport.present","category":"mobile","severity":"HIGH","name":"Viewport tag present","passes_when":"Viewport meta present","warning_when":null,"fails_when":"Missing","docs_url":"https://agentsiteaudit.com/docs/checks/mobile.viewport.present"},{"id":"mobile.viewport.width","category":"mobile","severity":"LOW","name":"Viewport uses device width","passes_when":"width=device-width","warning_when":null,"fails_when":"Fixed pixel width","docs_url":"https://agentsiteaudit.com/docs/checks/mobile.viewport.width"},{"id":"mobile.viewport.zoomable","category":"mobile","severity":"MEDIUM","name":"Page can be zoomed","passes_when":"Zoom allowed","warning_when":null,"fails_when":"user-scalable=no or maximum-scale under 2","docs_url":"https://agentsiteaudit.com/docs/checks/mobile.viewport.zoomable"},{"id":"security.hsts.present","category":"security","severity":"MEDIUM","name":"HSTS enabled","passes_when":"HSTS with max-age 15552000+","warning_when":"HSTS with shorter max-age","fails_when":"Missing on https","docs_url":"https://agentsiteaudit.com/docs/checks/security.hsts.present"},{"id":"security.csp.present","category":"security","severity":"MEDIUM","name":"Content Security Policy set","passes_when":"Content-Security-Policy present","warning_when":"Report-only only","fails_when":"Missing","docs_url":"https://agentsiteaudit.com/docs/checks/security.csp.present"},{"id":"security.frame_protection.present","category":"security","severity":"MEDIUM","name":"Clickjacking protection set","passes_when":"X-Frame-Options or CSP frame-ancestors","warning_when":null,"fails_when":"Neither present","docs_url":"https://agentsiteaudit.com/docs/checks/security.frame_protection.present"},{"id":"security.content_type_options.present","category":"security","severity":"LOW","name":"MIME sniffing disabled","passes_when":"X-Content-Type-Options: nosniff","warning_when":null,"fails_when":"Missing","docs_url":"https://agentsiteaudit.com/docs/checks/security.content_type_options.present"},{"id":"security.referrer_policy.present","category":"security","severity":"LOW","name":"Referrer-Policy set","passes_when":"Referrer-Policy present","warning_when":null,"fails_when":"Missing","docs_url":"https://agentsiteaudit.com/docs/checks/security.referrer_policy.present"},{"id":"security.permissions_policy.present","category":"security","severity":"LOW","name":"Permissions-Policy set","passes_when":"Permissions-Policy present","warning_when":null,"fails_when":"Missing","docs_url":"https://agentsiteaudit.com/docs/checks/security.permissions_policy.present"},{"id":"security.mixed_content.active","category":"security","severity":"HIGH","name":"No active mixed content","passes_when":"No http scripts, styles or iframes on https","warning_when":null,"fails_when":"Any found","docs_url":"https://agentsiteaudit.com/docs/checks/security.mixed_content.active"},{"id":"security.mixed_content.passive","category":"security","severity":"MEDIUM","name":"No passive mixed content","passes_when":"No http images or media on https","warning_when":null,"fails_when":"Any found","docs_url":"https://agentsiteaudit.com/docs/checks/security.mixed_content.passive"},{"id":"security.cookies.flags","category":"security","severity":"MEDIUM","name":"Cookies are set securely","passes_when":"All cookies Secure, HttpOnly where sensible, SameSite set","warning_when":"Missing HttpOnly or SameSite","fails_when":"Any cookie without Secure on https","docs_url":"https://agentsiteaudit.com/docs/checks/security.cookies.flags"}]}