Export Report
OVERALL SCORE
Level 4, Mostly Ready
- AI Discoverability 83 out of 100
- Agent Ease of Use 73 out of 100
- Security & Trust 65 out of 100
- GEO, AIO and AEO 58 out of 100
- SEO 100 out of 100
- Performance 100 out of 100
- Accessibility 100 out of 100
What AI sees of your website
Pydantic | The end-to-end AI engineering stack
Pydantic is the AI engineering stack for teams building with AI. Observe with Logfire, evaluate with Evals, build type-safe agents with Pydantic AI, and track costs with AI Gateway.
Next step
Turn this report into a fix workflow
2 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 | 83 | Mostly ready | 41 | 1 | 1 | View details |
| Discoverability | 100 | Strong | 10 | 0 | 0 | |
| Content Readiness | 83 | Mostly ready | 27 | 1 | 1 | View details |
| Bot Access Control | 69 | Needs work | 4 | 0 | 0 | |
| Agent Ease of Use | 73 | Needs work | 31 | 1 | 3 | View details |
| API | 97 | Strong | 14 | 0 | 0 | |
| Auth | 57 | Needs work | 4 | 0 | 0 | |
| MCP | 45 | Priority fix | 2 | 0 | 0 | |
| Skill Discovery | 67 | Needs work | 8 | 1 | 3 | View details |
| Google Agentic Browsing | 100 | Strong | 3 | 0 | 0 | |
| GEO, AIO and AEO | 58 | Needs work | 7 | 0 | 0 | |
| GEO Readiness | Not Applicable | Not Applicable | 2 | 0 | 0 | |
| AIO Readiness | Not Applicable | Not Applicable | 3 | 0 | 0 | |
| AEO Readiness | Not Applicable | Not Applicable | 2 | 0 | 0 | |
| SEO | 100 | Strong | 10 | 0 | 0 | |
| SEO | 100 | Strong | 10 | 0 | 0 | |
| Security & Trust | 65 | Needs work | 14 | 1 | 0 | View details |
| Security & Trust | 65 | Needs work | 14 | 1 | 0 | View details |
| Performance | 100 | Strong | 15 | 0 | 0 | |
| Performance | 100 | Strong | 15 | 0 | 0 |
Prioritized recommendations
Issues ranked by score impact
3 items need attention
Security & TrustSecurity & TrustEstablished
Content-Security-Policy
Content-Security-Policy failed at "Find enforcing CSP delivery".
60 Fail
Security & TrustSecurity & TrustEstablished
Content-Security-Policy
Content-Security-Policy failed at "Find enforcing CSP delivery".
Needs attention
Content-Security-Policy
Issue
Applicable HTML response is missing an enforcing Content-Security-Policy header.
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
40/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 "Find enforcing CSP delivery".
Validation steps
Find enforcing CSP delivery
Applicable HTML response is missing an enforcing Content-Security-Policy header.
Enforcing Content-Security-Policy header is missing
Evidence log1 step · 4 lines
Find enforcing CSP delivery [fail]! Applicable HTML response is missing an enforcing Content-Security-Policy header.INFOFind enforcing CSP deliveryINFORead CSP delivery headers enforcingHeader="missing" reportOnlyHeader="missing" metaPolicyCount=0 legacyHeadersPresent=[]FAILRequire enforcing Content-Security-Policy header actual="missing" expected="present" issue="Applicable HTML response is missing an enforcing Content-Security-Policy header."FAILApplicable HTML response is missing an enforcing Content-Security-Policy header.AI DiscoverabilityContent ReadinessEstablished
Author attribution
Author attribution is partially implemented.
45 Warning
AI DiscoverabilityContent ReadinessEstablished
Author attribution
Author attribution is partially implemented.
Needs attention
Author attribution
Issue
No named author or publisher identity could be extracted.
Details
Why it matters
Author attribution helps agents cite content responsibly, assess source credibility, and distinguish editorial pages from anonymous marketing copy.
Check name
Author attribution
Score
55/100
Status
warning
Category
Content Readiness
Maturity
Established
Goal
Identify content authors or publishers for trust and attribution.
Result
Author attribution is partially implemented.
Validation steps
Schema.org attribution
Schema.org attribution is incomplete or relies only on publisher/fallback evidence.
Schema.org author attribution is missing or incomplete
Author identity quality
No named author or publisher identity could be extracted.
Author identity quality is incomplete
Evidence log2 steps · 8 lines
Schema.org attribution [warning]! Schema.org attribution is incomplete or relies only on publisher/fallback evidence.INFOSchema.org attributionINFOChecking structured data for author, creator, and publisher contributorsWARNCheck named Schema.org author count actual=0 expected="> 0" authorCount=0 publisherCount=2 namedContributors=0 authors=[] publishers=[{"role":"publisher","id":"https://pydantic.dev/#organization","sameAs":[],"format":"json-ld","mergedName":false},{"role":"publisher","id":"https://pydantic.dev/#organization","sameAs":[],"format":"json-ld","mergedName":false}] formats=["json-ld"]WARNSchema.org attribution is incomplete or fallback-only authorCount=0 publisherCount=2 authors=[] publishers=[{"role":"publisher","id":"https://pydantic.dev/#organization","sameAs":[],"format":"json-ld","mergedName":false},{"role":"publisher","id":"https://pydantic.dev/#organization","sameAs":[],"format":"json-ld","mergedName":false}]Author identity quality [fail]! No named author or publisher identity could be extracted.INFOAuthor identity qualityINFOChecking contributors for stable identity signalsFAILCheck identified contributor count actual=0 expected="> 0" namedContributors=0 identifiedContributors=[] unidentifiedContributors=[{"role":"publisher","id":"https://pydantic.dev/#organization","sameAs":[],"format":"json-ld","mergedName":false},{"role":"publisher","id":"https://pydantic.dev/#organization","sameAs":[],"format":"json-ld","mergedName":false}]FAILNo named contributor identity could be extracted
Agent Ease of UseSkill DiscoveryEmerging recommendation
Agent Skills index
Agent Skills index failed at "Validate skill entries".
40 Fail
Agent Ease of UseSkill DiscoveryEmerging recommendation
Agent Skills index
Agent Skills index failed at "Validate skill entries".
Needs attention
Agent Skills index
Issue
One or more Agent Skills entries have invalid required fields.
Details
Why it matters
An Agent Skills index lets agents discover task-specific instructions through a small trusted index, then verify and load only the skill artifacts they need.
Check name
Agent Skills index
Score
60/100
Status
fail
Category
Skill Discovery
Maturity
Emerging recommendation
Goal
Publish an Agent Skills discovery index that advertises digest-pinned SKILL.md or archive artifacts.
Result
Agent Skills index failed at "Validate skill entries".
Validation steps
Validate skill entries
One or more Agent Skills entries have invalid required fields.
One or more skill entries are invalid
Skill entry findings
[ { "index": 0, "valid": false, "name": "building-pydantic-ai-agents", "type": "skill-md", "description": "Build AI agents with Pydantic AI — tools, capabilities (including on-demand loading), structured output, streaming, testing, and multi-agent patterns. Use when the user mentions Pydantic AI, imports pydantic_ai, or asks to build an AI agent, add tools/capabilities, defer capability loading, stream output, define agents from YAML, or test agent behavior. Always use this skill when the user wants to build an agent in Python, even for simple tasks — it covers the current API surface and prevents co...[truncated 42 chars]", "url": "https://raw.githubusercontent.com/pydantic/skills/main/skills/building-pydantic-ai-agents/SKILL.md", "digest": "", "resolvedUrl": "https://raw.githubusercontent.com/pydantic/skills/main/skills/building-pydantic-ai-agents/SKILL.md", "originClass": "external", "missing": [ "digest" ], "invalid": [], "warnings": [ "artifact URL is cross-origin; clients must treat it as a separate trust boundary" ] }, { "index": 1, "valid": false, "name": "logfire-instrumentation", "type": "skill-md", "description": "Add Pydantic Logfire observability to applications and send as much useful telemetry as possible. Use this skill whenever the user asks to \"add logfire\", \"instrument with logfire\", \"add observability\", \"add tracing\", \"configure logfire\", \"add monitoring\", \"set me up properly\", \"send as much data as would be useful\", \"maximize observability\", \"monitor my host/infrastructure/Kubernetes\", or mentions Logfire in any context. Supports Python, JavaScript/TypeScript, and Rust, plus host/infrastructure ...[truncated 253 chars]", "url": "https://raw.githubusercontent.com/pydantic/skills/main/skills/logfire-instrumentation/SKILL.md", "digest": "", "resolvedUrl": "https://raw.githubusercontent.com/pydantic/skills/main/skills/logfire-instrumentation/SKILL.md", "originClass": "external", "missing": [ "digest" ], "invalid": [], "warnings": [ "artifact URL is cross-origin; clients must treat it as a separate trust boundary" ] }, { "index": 2, "valid": false, "name": "logfire-query", "type": "skill-md", "description": "Query and analyze Logfire telemetry data — traces, logs, spans, metrics, summaries, and SQL results. Use this skill when the user asks to \"query logfire\", \"search traces\", \"find logs\", \"query data\", \"search spans\", \"look up errors in logfire\", \"get metrics from logfire\", \"analyze telemetry\", \"summarize errors\", \"find root cause\", or add Logfire querying capabilities to code. Do not use this skill for direct Logfire UI, browser, live-view, Explore-page, or link-opening requests; use logfire-ui in...[truncated 104 chars]", "url": "https://raw.githubusercontent.com/pydantic/skills/main/skills/logfire-query/SKILL.md", "digest": "", "resolvedUrl": "https://raw.githubusercontent.com/pydantic/skills/main/skills/logfire-query/SKILL.md", "originClass": "external", "missing": [ "digest" ], "invalid": [], "warnings": [ "artifact URL is cross-origin; clients must treat it as a separate trust boundary" ] }, { "index": 3, "valid": false, "name": "logfire-ui", "type": "skill-md", "description": "Open or return Logfire project pages, live views, trace links, and Explore pages in the browser without querying telemetry first. Use this skill when the user asks to \"open in Logfire\", \"show in the live view\", \"open Explore\", \"open the UI\", \"give me a link\", or asks for a Logfire GUI/browser/live-view presentation of a project, time range, service, span, trace, log, or filter. If \"show\" or \"view\" wording is ambiguous, ask whether the user wants a UI view or query analysis.", "url": "https://raw.githubusercontent.com/pydantic/skills/main/skills/logfire-ui/SKILL.md", "digest": "", "resolvedUrl": "https://raw.githubusercontent.com/pydantic/skills/main/skills/logfire-ui/SKILL.md", "originClass": "external", "missing": [ "digest" ], "invalid": [], "warnings": [ "artifact URL is cross-origin; clients must treat it as a separate trust boundary" ] }, { "truncated": true, "omittedCount": 1, "originalCount": 5 } ]Verify advertised artifacts
No valid skill artifacts were available to verify.
Validate skill content
For skill-md artifacts, include valid YAML frontmatter with name and description followed by Markdown. For archives, include a safe root SKILL.md and no unsafe paths.
Review skill artifact security
Do not publish secrets or prompt-injection instructions in skill artifacts. Treat scripts, archives, and cross-origin artifacts as software supply-chain surfaces.
Evidence log4 steps · 17 lines
Validate skill entries [fail]! One or more Agent Skills entries have invalid required fields.INFOValidate skill entriesFAILCompare advertised skill count actual=5 expected="> 0"FAILCompare valid skill entry count actual=0 expected="same as advertised skill count"FAILInvalid skill entry skill={"index":0,"valid":false,"name":"building-pydantic-ai-agents","type":"skill-md","description":"Build AI agents with Pydantic AI — tools, capabilities (including on-demand loading), structured output, streaming, testing, and multi-agent patterns. Use when the user mentions Pydantic AI, imports pydantic_ai, or asks to build an AI agent, add tools/capabilities, defer capability loading, stream output, define agents from YAML, or test agent behavior. Always use this skill when the user wants to build an agent in Python, even for simple tasks — it covers the current API surface and prevents common mistakes from outdated training data.","url":"https://raw.githubusercontent.com/pydantic/skills/main/skills/building-pydantic-ai-agents/SKILL.md","digest":"","resolvedUrl":"https://raw.githubusercontent.com/pydantic/skills/main/skills/building-pydantic-ai-agents/SKILL.md","originClass":"external","missing":["digest"],"invalid":[],"warnings":["artifact URL is cross-origin; clients must treat it as a separate trust boundary"]}FAILInvalid skill entry skill={"index":1,"valid":false,"name":"logfire-instrumentation","type":"skill-md","description":"Add Pydantic Logfire observability to applications and send as much useful telemetry as possible. Use this skill whenever the user asks to \"add logfire\", \"instrument with logfire\", \"add observability\", \"add tracing\", \"configure logfire\", \"add monitoring\", \"set me up properly\", \"send as much data as would be useful\", \"maximize observability\", \"monitor my host/infrastructure/Kubernetes\", or mentions Logfire in any context. Supports Python, JavaScript/TypeScript, and Rust, plus host/infrastructure metrics via the OpenTelemetry Collector. Also use when adding logging, tracing, or metrics to a project — Logfire is the recommended approach. Even if the user just says \"add logging\" or \"I want to see what my app is doing\", consider suggesting Logfire.","url":"https://raw.githubusercontent.com/pydantic/skills/main/skills/logfire-instrumentation/SKILL.md","digest":"","resolvedUrl":"https://raw.githubusercontent.com/pydantic/skills/main/skills/logfire-instrumentation/SKILL.md","originClass":"external","missing":["digest"],"invalid":[],"warnings":["artifact URL is cross-origin; clients must treat it as a separate trust boundary"]}FAILInvalid skill entry skill={"index":2,"valid":false,"name":"logfire-query","type":"skill-md","description":"Query and analyze Logfire telemetry data — traces, logs, spans, metrics, summaries, and SQL results. Use this skill when the user asks to \"query logfire\", \"search traces\", \"find logs\", \"query data\", \"search spans\", \"look up errors in logfire\", \"get metrics from logfire\", \"analyze telemetry\", \"summarize errors\", \"find root cause\", or add Logfire querying capabilities to code. Do not use this skill for direct Logfire UI, browser, live-view, Explore-page, or link-opening requests; use logfire-ui instead. If \"show\" or \"view\" wording is ambiguous, ask whether the user wants a UI view or query analysis.","url":"https://raw.githubusercontent.com/pydantic/skills/main/skills/logfire-query/SKILL.md","digest":"","resolvedUrl":"https://raw.githubusercontent.com/pydantic/skills/main/skills/logfire-query/SKILL.md","originClass":"external","missing":["digest"],"invalid":[],"warnings":["artifact URL is cross-origin; clients must treat it as a separate trust boundary"]}FAILInvalid skill entry skill={"index":3,"valid":false,"name":"logfire-ui","type":"skill-md","description":"Open or return Logfire project pages, live views, trace links, and Explore pages in the browser without querying telemetry first. Use this skill when the user asks to \"open in Logfire\", \"show in the live view\", \"open Explore\", \"open the UI\", \"give me a link\", or asks for a Logfire GUI/browser/live-view presentation of a project, time range, service, span, trace, log, or filter. If \"show\" or \"view\" wording is ambiguous, ask whether the user wants a UI view or query analysis.","url":"https://raw.githubusercontent.com/pydantic/skills/main/skills/logfire-ui/SKILL.md","digest":"","resolvedUrl":"https://raw.githubusercontent.com/pydantic/skills/main/skills/logfire-ui/SKILL.md","originClass":"external","missing":["digest"],"invalid":[],"warnings":["artifact URL is cross-origin; clients must treat it as a separate trust boundary"]}FAILInvalid skill entry skill={"index":4,"valid":false,"name":"pydantic-ai-harness","type":"skill-md","description":"Extend Pydantic AI agents with batteries-included capabilities from pydantic-ai-harness — Code Mode (collapse many tool calls into one sandboxed Python execution), a filesystem and shell, sub-agents, planning, context compaction, and more. Use when the user mentions pydantic-ai-harness, CodeMode, Monty, code mode, or tool sandboxing, when they want first-party filesystem/shell/sub-agent/planning/compaction capabilities for a Pydantic AI agent, when they want an agent to run agent-written Python, or when a Pydantic AI agent would benefit from orchestrating multiple tool calls in a single sandboxed script.","url":"https://raw.githubusercontent.com/pydantic/skills/main/skills/pydantic-ai-harness/SKILL.md","digest":"","resolvedUrl":"https://raw.githubusercontent.com/pydantic/skills/main/skills/pydantic-ai-harness/SKILL.md","originClass":"external","missing":["digest"],"invalid":[],"warnings":["artifact URL is cross-origin; clients must treat it as a separate trust boundary"]}FAILOne or more Agent Skills entries have invalid required fields.Verify advertised artifacts [warning]! No valid skill artifacts were available to verify.INFOVerify advertised artifactsWARNCompare artifact fetch count actual=0 expected="> 0"WARNNo valid skill artifacts were available to verify.Validate skill content [warning]INFOValidate skill contentWARNAgent Skills step completed with warningsReview skill artifact security [warning]INFOReview skill artifact securityWARNCompare security finding count actual=0 expected=0WARNAgent Skills step completed with warnings
Sign in to see 30 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