Export Report
OVERALL SCORE
Level 3, Bot-Aware
- AI Discoverability 64 out of 100
- Agent Ease of Use 60 out of 100
- Security & Trust 67 out of 100
- GEO, AIO and AEO 49 out of 100
- SEO 100 out of 100
- Performance 55 out of 100
- Accessibility 60 out of 100
What AI sees of your website
Data Connectors | John McLaughlin | Substack
Since 1999, Data Connectors has been facilitating relationships between senior executives who are looking for solutions and the vendors who provide them. Our community encompasses more than 650,000 professionals. Click to read Data Connect...
Next step
Turn this report into a fix workflow
3 failed checks are ready to move into MCP or CLI remediation. Generate a repair prompt, connect the scanner to your coding agent, or open the integration docs before your next rescan.
| Metric | Score | Status | Passed | Failed | Warning | Evidence |
|---|---|---|---|---|---|---|
| AI Discoverability | 64 | Needs work | 25 | 3 | 1 | View details |
| Discoverability | 67 | Needs work | 8 | 0 | 0 | |
| Content Readiness | 46 | Priority fix | 12 | 3 | 1 | View details |
| Bot Access Control | 75 | Mostly ready | 5 | 0 | 0 | |
| Agent Ease of Use | 60 | Needs work | 5 | 1 | 1 | View details |
| Auth | 51 | Needs work | 2 | 0 | 0 | |
| Skill Discovery | 53 | Needs work | 1 | 1 | 1 | View details |
| Google Agentic Browsing | 100 | Strong | 2 | 0 | 0 | |
| GEO, AIO and AEO | 49 | Priority fix | 4 | 0 | 0 | |
| GEO Readiness | Not Applicable | Not Applicable | 1 | 0 | 0 | |
| AIO Readiness | Not Applicable | Not Applicable | 2 | 0 | 0 | |
| AEO Readiness | Not Applicable | Not Applicable | 1 | 0 | 0 | |
| SEO | 100 | Strong | 10 | 0 | 0 | |
| SEO | 100 | Strong | 10 | 0 | 0 | |
| Security & Trust | 67 | Needs work | 15 | 2 | 2 | View details |
| Security & Trust | 67 | Needs work | 15 | 2 | 2 | View details |
| Performance | 55 | Needs work | 11 | 0 | 0 | |
| Performance | 55 | Needs work | 11 | 0 | 0 |
Prioritized recommendations
Issues ranked by score impact
3 items need attention
AI DiscoverabilityContent ReadinessEstablished
Content freshness signals
Content freshness signals is missing or incomplete.
100 Fail
AI DiscoverabilityContent ReadinessEstablished
Content freshness signals
Content freshness signals is missing or incomplete.
Needs attention
Content freshness signals
Issue
Content freshness signals are incomplete: missing any valid freshness date in Last-Modified, Schema.org, Open Graph, Dublin Core, generic meta, or sitemap lastmod.
Details
Why it matters
Freshness signals help agents, crawlers, and search systems decide whether content is current enough to cite, summarize, cache, or compare against newer sources.
Check name
Content freshness signals
Score
0/100
Status
fail
Category
Content Readiness
Maturity
Established
Goal
Expose modified and published dates for freshness-aware retrieval, citation, and ranking.
Result
Content freshness signals is missing or incomplete.
Validation steps
Validate Last-Modified header
No valid Last-Modified HTTP header was found.
Last-Modified freshness signal is missing or invalid
Validate structured freshness dates
No Schema.org freshness dates were found.
Structured freshness dates are missing or invalid
Validate metadata freshness dates
No Open Graph, Dublin Core, or generic meta freshness date was found.
Metadata freshness dates are missing or invalid
Corroborate with sitemap lastmod
Add a sitemap entry with a valid lastmod for the canonical page URL when sitemap corroboration is useful.
Sitemap lastmod corroboration is missing
Evidence log4 steps · 16 lines
Validate Last-Modified header [fail]! No valid Last-Modified HTTP header was found.INFOValidate Last-Modified headerINFOReading Last-Modified response headerFAILCheck Last-Modified header is present and parseable actual="missing" expected="valid" alternateDates=[]FAILLast-Modified header is missing or invalidValidate structured freshness dates [fail]! No Schema.org freshness dates were found.INFOValidate structured freshness datesINFOCollecting Schema.org freshness dates from JSON-LD, Microdata, and RDFaFAILCheck structured freshness date count actual=0 expected="> 0" invalidDateCount=0 formats={} alternateDates=[]FAILNo structured freshness dates foundValidate metadata freshness dates [fail]! No Open Graph, Dublin Core, or generic meta freshness date was found.INFOValidate metadata freshness datesINFOCollecting Open Graph, Dublin Core, and generic meta freshness datesFAILCheck metadata freshness date count actual=0 expected="> 0" metaDateCount=0 invalidDateCount=0 alternateDates=[]FAILNo metadata freshness dates foundCorroborate with sitemap lastmod [warning]INFOCorroborate with sitemap lastmodINFODiscovering sitemap candidates and matching the scanned page URL candidateCount=2 attempts=2WARNCheck matching sitemap lastmod actual="no match" expected="valid match when available" robotsStatusCode=200WARNNo matching sitemap lastmod found after sitemap attempts attempts=2
Security & TrustSecurity & TrustEstablished
Content-Security-Policy
Content-Security-Policy failed at "Evaluate fetch baseline".
50 Fail
Security & TrustSecurity & TrustEstablished
Content-Security-Policy
Content-Security-Policy failed at "Evaluate fetch baseline".
Needs attention
Content-Security-Policy
Issue
CSP does not define default-src; several fetch directives may have no restrictive fallback.
Details
Why it matters
Content Security Policy reduces the impact of injection bugs by limiting where scripts, styles, frames, forms, and other browser resources can load or execute.
Check name
Content-Security-Policy
Score
50/100
Status
fail
Category
Security & Trust
Maturity
Established
Goal
Constrain browser resource loading and script execution with an enforcing Content-Security-Policy header.
Result
Content-Security-Policy failed at "Evaluate fetch baseline".
Validation steps
Evaluate fetch baseline
CSP does not define default-src; several fetch directives may have no restrictive fallback.
CSP fetch baseline is too broad or missing
Evaluate script execution
No script-src or default-src directive constrains script execution.
CSP script execution policy is unsafe
Review hardening directives
CSP is missing recommended hardening directives: object-src, base-uri, form-action.
CSP hardening directives are missing or weak
Review CSP reporting
CSP does not define a reporting endpoint.
CSP reporting is missing or incomplete
Evidence log4 steps · 16 lines
Evaluate fetch baseline [fail]! CSP does not define default-src; several fetch directives may have no restrictive fallback.INFOEvaluate fetch baselineINFOEvaluate resource loading fallback explicitFetchDirectives=[]FAILCompare fetch baseline actual="0 explicit fetch directives" expected="restricted default-src or broad explicit fetch coverage" issue="CSP does not define default-src; several fetch directives may have no restrictive fallback."FAILCSP does not define default-src; several fetch directives may have no restrictive fallback.Evaluate script execution [fail]! No script-src or default-src directive constrains script execution.INFOEvaluate script executionINFOInspect effective script directive FAILCompare script execution posture actual={"hasNonce":false,"hasHash":false,"hasStrictDynamic":false,"hasUnsafeInline":false,"hasUnsafeEval":false,"hasWildcardHost":false,"hasBroadScheme":false,"dangerousSchemes":[]} expected="constrained script sources without unsafe execution allowances" issue="No script-src or default-src directive constrains script execution."FAILNo script-src or default-src directive constrains script execution.Review hardening directives [warning]! CSP is missing recommended hardening directives: object-src, base-uri, form-action.INFOReview hardening directivesINFOInspect CSP hardening directives frameAncestors=["'self'","https://*.substack.com","https://substack.com"] formCount=2WARNCompare recommended hardening coverage actual=["object-src","base-uri","form-action"] expected="no missing object-src/base-uri/form-action requirements" issue="CSP is missing recommended hardening directives: object-src, base-uri, form-action."WARNCSP is missing recommended hardening directives: object-src, base-uri, form-action.Review CSP reporting [warning]! CSP does not define a reporting endpoint.INFOReview CSP reportingINFOInspect CSP reporting directives reportOnlyHeaderPresent=false reportOnlyDirectives=[]WARNCompare violation reporting configuration actual="no reporting endpoint" expected="report-to or report-uri present" issue="CSP does not define a reporting endpoint."WARNCSP does not define a reporting endpoint.
Agent Ease of UseSkill DiscoveryEmerging recommendation
DNS-AID Agent Discovery
DNS-AID Agent Discovery failed at "Validate HTTPS/SVCB shape".
39 Fail
Agent Ease of UseSkill DiscoveryEmerging recommendation
DNS-AID Agent Discovery
DNS-AID Agent Discovery failed at "Validate HTTPS/SVCB shape".
Needs attention
DNS-AID Agent Discovery
Issue
One or more DNS-AID records could not be parsed as usable HTTPS/SVCB ServiceMode records.
Details
Why it matters
DNS-AID lets agents discover index, A2A, and other agent entrypoints before fetching HTTP metadata. HTTPS/SVCB records provide the service-binding substrate, while DNSSEC can authenticate the discovery answer when available.
Check name
DNS-AID Agent Discovery
Score
61/100
Status
fail
Category
Skill Discovery
Maturity
Emerging recommendation
Goal
Publish DNS-AID HTTPS/SVCB records under _agents for DNS-based agent entrypoint discovery.
Result
DNS-AID Agent Discovery failed at "Validate HTTPS/SVCB shape".
Validation steps
Validate HTTPS/SVCB shape
One or more DNS-AID records could not be parsed as usable HTTPS/SVCB ServiceMode records.
DNS-AID HTTPS/SVCB records are malformed
Malformed record issues
[ { "ownerName": "_index._agents.dataconnectors.substack.com", "rrtype": "HTTPS", "ttl": 60, "mode": "unknown", "targetName": "33", "params": [ { "key": "00", "value": "present" }, { "key": "01", "value": "present" }, { "key": "00", "value": "present" }, { "key": "00", "value": "present" }, { "truncated": true, "omittedCount": 29, "originalCount": 33 } ], "mandatory": [], "alpn": [], "endpointIssue": "missing endpoint", "unknownParams": [ "00", "01", "00", "00", { "truncated": true, "omittedCount": 29, "originalCount": 33 } ], "parseWarnings": [ "SvcPriority is missing or not numeric." ], "source": "cloudflare-doh-json", "raw": "\\# 33 00 01 00 00 01 00 06 02 68 33 02 68 32 00 06 00 10 26 06 47 00 97 62 fa 98 a7 76 00 00 5d 48 c0 23" }, { "ownerName": "_a2a._agents.dataconnectors.substack.com", "rrtype": "HTTPS", "ttl": 60, "mode": "unknown", "targetName": "33", "params": [ { "key": "00", "value": "present" }, { "key": "01", "value": "present" }, { "key": "00", "value": "present" }, { "key": "00", "value": "present" }, { "truncated": true, "omittedCount": 29, "originalCount": 33 } ], "mandatory": [], "alpn": [], "endpointIssue": "missing endpoint", "unknownParams": [ "00", "01", "00", "00", { "truncated": true, "omittedCount": 29, "originalCount": 33 } ], "parseWarnings": [ "SvcPriority is missing or not numeric." ], "source": "cloudflare-doh-json", "raw": "\\# 33 00 01 00 00 01 00 06 02 68 33 02 68 32 00 06 00 10 26 06 47 00 83 b2 fa 98 a7 76 00 00 5d 48 c0 23" } ]Check DNSSEC authentication evidence
DNSSEC authentication evidence was not visible for the DNS-AID labels or hostname.
DNSSEC authentication evidence is missing
Evidence log2 steps · 18 lines
Validate HTTPS/SVCB shape [fail]! One or more DNS-AID records could not be parsed as usable HTTPS/SVCB ServiceMode records.INFOValidate HTTPS/SVCB shapeFAILCompare parsed DNS-AID record count actual=2 expected="> 0"FAILCompare ServiceMode record count actual=0 expected="> 0"FAILDNS-AID record has parse/shape warnings ownerName="_index._agents.dataconnectors.substack.com" rrtype="HTTPS" mode="unknown" warnings=["SvcPriority is missing or not numeric."]FAILDNS-AID record has parse/shape warnings ownerName="_a2a._agents.dataconnectors.substack.com" rrtype="HTTPS" mode="unknown" warnings=["SvcPriority is missing or not numeric."]FAILOne or more DNS-AID records could not be parsed as usable HTTPS/SVCB ServiceMode records.Check DNSSEC authentication evidence [warning]! DNSSEC authentication evidence was not visible for the DNS-AID labels or hostname.INFOCheck DNSSEC authentication evidenceWARNCompare DNSSEC authenticated-data flag actual=false expected=trueWARNCompare visible DNSSEC material actual=false expected=trueWARNResolver did not confirm authenticated DNSSEC data name="_index._agents.dataconnectors.substack.com" rrtype="HTTPS" resolver="cloudflare-doh-json" ad=false dnssecTypes=[]WARNResolver did not confirm authenticated DNSSEC data name="_index._agents.dataconnectors.substack.com" rrtype="SVCB" resolver="cloudflare-doh-json" ad=false dnssecTypes=[]WARNResolver did not confirm authenticated DNSSEC data name="_a2a._agents.dataconnectors.substack.com" rrtype="HTTPS" resolver="cloudflare-doh-json" ad=false dnssecTypes=[]WARNResolver did not confirm authenticated DNSSEC data name="_a2a._agents.dataconnectors.substack.com" rrtype="SVCB" resolver="cloudflare-doh-json" ad=false dnssecTypes=[]WARNResolver did not confirm authenticated DNSSEC data name="_index._agents.dataconnectors.substack.com" rrtype="DNSKEY" resolver="cloudflare-doh-json" ad=false dnssecTypes=[]WARNResolver did not confirm authenticated DNSSEC data name="_a2a._agents.dataconnectors.substack.com" rrtype="DNSKEY" resolver="cloudflare-doh-json" ad=false dnssecTypes=[]WARNResolver did not confirm authenticated DNSSEC data name="dataconnectors.substack.com" rrtype="DNSKEY" resolver="cloudflare-doh-json" ad=false dnssecTypes=[]WARNResolver did not confirm authenticated DNSSEC data name="substack.com" rrtype="DNSKEY" resolver="cloudflare-doh-json" ad=false dnssecTypes=[]WARNDNSSEC authentication evidence was not visible for the DNS-AID labels or hostname.
Sign in to see 38 other issues and the full report
Create a free account to unlock every issue, evidence details, exports, and higher free limits.
Fix with MCP or CLI
Use this report as the handoff into remediation. Generate a coding-agent prompt with the failing checks attached, or jump to the MCP and CLI setup docs before your next rescan.
Score history