CanAgentUse tools

UCP Suite

Validate Universal Commerce Protocol discovery, then test product search, carts, checkout links, and merchant handoff flows.

MCP Playground

Connect to remote MCP servers, inspect tools and resources, test prompts, auth, headers, notifications, and JSON-RPC responses.

A2A Playground

Inspect Agent Cards, validate advertised endpoints, and prepare safe requests for agent-to-agent workflows.

Agent Website Viewer

Enter a public URL and see the roles, names, landmarks, controls, and blockers that shape how AI agents understand the page.

SCANNED
Jul 5, 2026, 9:35 PM
VISIBILITY
Public
Rescan Report
Share Report
Copy Report Link
Export Report
65/100

OVERALL SCORE

Level 3, Bot-Aware

Moderate readiness for AI agents
AIDiscoverability69%Agent Easeof Use59%Security& Trust67%GEO, AIO, AEO54%SEO100%Performance71%Accessibility74%
  • AI Discoverability 69 out of 100
  • Agent Ease of Use 59 out of 100
  • Security & Trust 67 out of 100
  • GEO, AIO and AEO 54 out of 100
  • SEO 100 out of 100
  • Performance 71 out of 100
  • Accessibility 74 out of 100

CAPTURED SCREENSHOT

Captured website desktop screenshot

What AI sees of your website

The Content Operating System for the AI era | Sanity favicon

The Content Operating System for the AI era | Sanity

Sanity is the back-end built for AI content operations. Power web, mobile, and agentic applications at scale.

Open Agent View

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.

Fix with MCP / CLI
Detailed report scores grouped by capability area
MetricScoreStatusPassedFailedWarningEvidence
AI Discoverability
69
Needs work3021View details
Discoverability
100
Strong1000
Content Readiness
51
Needs work1711View details
Bot Access Control
58
Needs work310View details
Agent Ease of Use
59
Needs work1523View details
API
78
Mostly ready1100
Skill Discovery
48
Priority fix123View details
Google Agentic Browsing
100
Strong300
GEO, AIO and AEO
54
Needs work500
GEO Readiness
Not Applicable
Not Applicable100
AIO Readiness
Not Applicable
Not Applicable200
AEO Readiness
Not Applicable
Not Applicable200
SEO
100
Strong1000
SEO
100
Strong1000
Security & Trust
67
Needs work1400
Security & Trust
67
Needs work1400
Performance
71
Needs work1300
Performance
71
Needs work1300

Prioritized recommendations

Issues ranked by score impact

3 items need attention

AI DiscoverabilityBot Access ControlEstablished

AI bot rules in robots.txt

AI bot rules in robots.txt failed at "Classify AI crawler rules".

69 Fail

Needs attention

AI bot rules in robots.txt

Failed check
01

Issue

No explicit User-agent rules were found for major AI crawler tokens.

Details

02

Why it matters

AI crawler product tokens have different meanings. Explicit robots.txt groups make training, search, and retrieval access policy auditable for compliant crawler operators.

Check name

AI bot rules in robots.txt

Score

31/100

Status

fail

Category

Bot Access Control

Maturity

Established

Goal

Declare deliberate robots.txt rules for major AI training, AI search, user-triggered, and dataset crawlers.

Result

AI bot rules in robots.txt failed at "Classify AI crawler rules".

Validation steps

  1. Classify AI crawler rules

    No explicit User-agent rules were found for major AI crawler tokens.

    robots.txt lacks explicit AI crawler rules
Evidence log1 step · 6 lines
Classify AI crawler rules [fail]! No explicit User-agent rules were found for major AI crawler tokens.INFOClassify AI crawler rulesINFOParsing User-agent groups and Allow/Disallow records for known AI crawler tokens evaluatedPath="/"INFOEvaluating exact User-agent matches before wildcard fallback exactAiPolicyCount=0 totalCrawlerTokens=18FAILNo explicit AI crawler User-agent groups were found examplesExpected=["GPTBot","OAI-SearchBot","ClaudeBot","Google-Extended","CCBot"]FAILCompare explicit AI crawler coverage actual=0 expected="> 0 explicit non-search AI crawler policies" missingTokens=["GPTBot","OAI-SearchBot","ChatGPT-User","ClaudeBot","Claude-SearchBot","Claude-User","Google-Extended","Applebot-Extended","Amazonbot","Amzn-SearchBot","Amzn-User","PerplexityBot"]INFOResolved effective root-path policy for crawler tokens blocked=0 allowed=21 unspecified=0

Agent Ease of UseSkill DiscoveryEmerging recommendation

Agent Skills index

Agent Skills index failed at "Validate discovery index schema".

60 Fail

Needs attention

Agent Skills index

Failed check
01

Issue

Agent Skills index must use $schema https://schemas.agentskills.io/discovery/0.2.0/schema.json.

Details

02

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

40/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 discovery index schema".

Validation steps

  1. Validate discovery index schema

    Agent Skills index must use $schema https://schemas.agentskills.io/discovery/0.2.0/schema.json.

    Agent Skills discovery index schema is invalid
    Top-level issues
    • $schema must be https://schemas.agentskills.io/discovery/0.2.0/schema.json
    Invalid skills
    [
      {
        "index": 0,
        "valid": false,
        "name": "Content Experimentation Best Practices",
        "type": "",
        "description": "Content experimentation and A/B testing guidance covering experiment design, hypotheses, metrics, sample size, statistical foundations, CMS-managed variants, and common analysis pitfalls.",
        "url": "https://github.com/sanity-io/agent-toolkit/tree/main/skills/content-experimentation-best-practices",
        "digest": "",
        "resolvedUrl": "https://github.com/sanity-io/agent-toolkit/tree/main/skills/content-experimentation-best-practices",
        "originClass": "external",
        "missing": [
          "type",
          "digest"
        ],
        "invalid": [
          "name must be lowercase alphanumeric plus hyphens, max 64 characters, with no leading/trailing or consecutive hyphen"
        ],
        "warnings": [
          "description should explain when to use the skill",
          "artifact URL is cross-origin; clients must treat it as a separate trust boundary"
        ]
      },
      {
        "index": 1,
        "valid": false,
        "name": "Content Modeling Best Practices",
        "type": "",
        "description": "Structured content modeling guidance for schema design, content architecture, content reuse, references versus embedded objects, separation of concerns, and taxonomies across Sanity and other headless CMSes.",
        "url": "https://github.com/sanity-io/agent-toolkit/tree/main/skills/content-modeling-best-practices",
        "digest": "",
        "resolvedUrl": "https://github.com/sanity-io/agent-toolkit/tree/main/skills/content-modeling-best-practices",
        "originClass": "external",
        "missing": [
          "type",
          "digest"
        ],
        "invalid": [
          "name must be lowercase alphanumeric plus hyphens, max 64 characters, with no leading/trailing or consecutive hyphen"
        ],
        "warnings": [
          "artifact URL is cross-origin; clients must treat it as a separate trust boundary"
        ]
      },
      {
        "index": 2,
        "valid": false,
        "name": "Portable Text Conversion",
        "type": "",
        "description": "Convert HTML and Markdown content into Portable Text blocks for Sanity. Covers @portabletext/markdown, @portabletext/block-tools, custom deserializers, and manual block construction.",
        "url": "https://github.com/sanity-io/agent-toolkit/tree/main/skills/portable-text-conversion",
        "digest": "",
        "resolvedUrl": "https://github.com/sanity-io/agent-toolkit/tree/main/skills/portable-text-conversion",
        "originClass": "external",
        "missing": [
          "type",
          "digest"
        ],
        "invalid": [
          "name must be lowercase alphanumeric plus hyphens, max 64 characters, with no leading/trailing or consecutive hyphen"
        ],
        "warnings": [
          "artifact URL is cross-origin; clients must treat it as a separate trust boundary"
        ]
      },
      {
        "index": 3,
        "valid": false,
        "name": "Portable Text Serialization",
        "type": "",
        "description": "Render and serialize Portable Text to React, Svelte, Vue, Astro, HTML, Markdown, and plain text. Covers custom serializers for non-standard block types and framework-specific rendering patterns.",
        "url": "https://github.com/sanity-io/agent-toolkit/tree/main/skills/portable-text-serialization",
        "digest": "",
        "resolvedUrl": "https://github.com/sanity-io/agent-toolkit/tree/main/skills/portable-text-serialization",
        "originClass": "external",
        "missing": [
          "type",
          "digest"
        ],
        "invalid": [
          "name must be lowercase alphanumeric plus hyphens, max 64 characters, with no leading/trailing or consecutive hyphen"
        ],
        "warnings": [
          "artifact URL is cross-origin; clients must treat it as a separate trust boundary"
        ]
      },
      {
        "truncated": true,
        "omittedCount": 2,
        "originalCount": 6
      }
    ]
  2. 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": "Content Experimentation Best Practices",
        "type": "",
        "description": "Content experimentation and A/B testing guidance covering experiment design, hypotheses, metrics, sample size, statistical foundations, CMS-managed variants, and common analysis pitfalls.",
        "url": "https://github.com/sanity-io/agent-toolkit/tree/main/skills/content-experimentation-best-practices",
        "digest": "",
        "resolvedUrl": "https://github.com/sanity-io/agent-toolkit/tree/main/skills/content-experimentation-best-practices",
        "originClass": "external",
        "missing": [
          "type",
          "digest"
        ],
        "invalid": [
          "name must be lowercase alphanumeric plus hyphens, max 64 characters, with no leading/trailing or consecutive hyphen"
        ],
        "warnings": [
          "description should explain when to use the skill",
          "artifact URL is cross-origin; clients must treat it as a separate trust boundary"
        ]
      },
      {
        "index": 1,
        "valid": false,
        "name": "Content Modeling Best Practices",
        "type": "",
        "description": "Structured content modeling guidance for schema design, content architecture, content reuse, references versus embedded objects, separation of concerns, and taxonomies across Sanity and other headless CMSes.",
        "url": "https://github.com/sanity-io/agent-toolkit/tree/main/skills/content-modeling-best-practices",
        "digest": "",
        "resolvedUrl": "https://github.com/sanity-io/agent-toolkit/tree/main/skills/content-modeling-best-practices",
        "originClass": "external",
        "missing": [
          "type",
          "digest"
        ],
        "invalid": [
          "name must be lowercase alphanumeric plus hyphens, max 64 characters, with no leading/trailing or consecutive hyphen"
        ],
        "warnings": [
          "artifact URL is cross-origin; clients must treat it as a separate trust boundary"
        ]
      },
      {
        "index": 2,
        "valid": false,
        "name": "Portable Text Conversion",
        "type": "",
        "description": "Convert HTML and Markdown content into Portable Text blocks for Sanity. Covers @portabletext/markdown, @portabletext/block-tools, custom deserializers, and manual block construction.",
        "url": "https://github.com/sanity-io/agent-toolkit/tree/main/skills/portable-text-conversion",
        "digest": "",
        "resolvedUrl": "https://github.com/sanity-io/agent-toolkit/tree/main/skills/portable-text-conversion",
        "originClass": "external",
        "missing": [
          "type",
          "digest"
        ],
        "invalid": [
          "name must be lowercase alphanumeric plus hyphens, max 64 characters, with no leading/trailing or consecutive hyphen"
        ],
        "warnings": [
          "artifact URL is cross-origin; clients must treat it as a separate trust boundary"
        ]
      },
      {
        "index": 3,
        "valid": false,
        "name": "Portable Text Serialization",
        "type": "",
        "description": "Render and serialize Portable Text to React, Svelte, Vue, Astro, HTML, Markdown, and plain text. Covers custom serializers for non-standard block types and framework-specific rendering patterns.",
        "url": "https://github.com/sanity-io/agent-toolkit/tree/main/skills/portable-text-serialization",
        "digest": "",
        "resolvedUrl": "https://github.com/sanity-io/agent-toolkit/tree/main/skills/portable-text-serialization",
        "originClass": "external",
        "missing": [
          "type",
          "digest"
        ],
        "invalid": [
          "name must be lowercase alphanumeric plus hyphens, max 64 characters, with no leading/trailing or consecutive hyphen"
        ],
        "warnings": [
          "artifact URL is cross-origin; clients must treat it as a separate trust boundary"
        ]
      },
      {
        "truncated": true,
        "omittedCount": 2,
        "originalCount": 6
      }
    ]
  3. Verify advertised artifacts

    No valid skill artifacts were available to verify.

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

  5. 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 log5 steps · 24 lines
Validate discovery index schema [fail]! Agent Skills index must use $schema https://schemas.agentskills.io/discovery/0.2.0/schema.json.INFOValidate discovery index schemaINFOParse Agent Skills index JSON validJson=true contentTypeCompatible=trueFAILCompare $schema URI actual="https://agentskills.io/schemas/discovery/v0.2.0/config.json" expected="https://schemas.agentskills.io/discovery/0.2.0/schema.json"FAILCompare top-level schema issue count actual=1 expected=0FAILCompare unknown top-level field count actual=0 expected=0FAILAgent Skills index must use $schema https://schemas.agentskills.io/discovery/0.2.0/schema.json.Validate skill entries [fail]! One or more Agent Skills entries have invalid required fields.INFOValidate skill entriesFAILCompare advertised skill count actual=6 expected="> 0"FAILCompare valid skill entry count actual=0 expected="same as advertised skill count"FAILInvalid skill entry skill={"index":0,"valid":false,"name":"Content Experimentation Best Practices","type":"","description":"Content experimentation and A/B testing guidance covering experiment design, hypotheses, metrics, sample size, statistical foundations, CMS-managed variants, and common analysis pitfalls.","url":"https://github.com/sanity-io/agent-toolkit/tree/main/skills/content-experimentation-best-practices","digest":"","resolvedUrl":"https://github.com/sanity-io/agent-toolkit/tree/main/skills/content-experimentation-best-practices","originClass":"external","missing":["type","digest"],"invalid":["name must be lowercase alphanumeric plus hyphens, max 64 characters, with no leading/trailing or consecutive hyphen"],"warnings":["description should explain when to use the skill","artifact URL is cross-origin; clients must treat it as a separate trust boundary"]}FAILInvalid skill entry skill={"index":1,"valid":false,"name":"Content Modeling Best Practices","type":"","description":"Structured content modeling guidance for schema design, content architecture, content reuse, references versus embedded objects, separation of concerns, and taxonomies across Sanity and other headless CMSes.","url":"https://github.com/sanity-io/agent-toolkit/tree/main/skills/content-modeling-best-practices","digest":"","resolvedUrl":"https://github.com/sanity-io/agent-toolkit/tree/main/skills/content-modeling-best-practices","originClass":"external","missing":["type","digest"],"invalid":["name must be lowercase alphanumeric plus hyphens, max 64 characters, with no leading/trailing or consecutive hyphen"],"warnings":["artifact URL is cross-origin; clients must treat it as a separate trust boundary"]}FAILInvalid skill entry skill={"index":2,"valid":false,"name":"Portable Text Conversion","type":"","description":"Convert HTML and Markdown content into Portable Text blocks for Sanity. Covers @portabletext/markdown, @portabletext/block-tools, custom deserializers, and manual block construction.","url":"https://github.com/sanity-io/agent-toolkit/tree/main/skills/portable-text-conversion","digest":"","resolvedUrl":"https://github.com/sanity-io/agent-toolkit/tree/main/skills/portable-text-conversion","originClass":"external","missing":["type","digest"],"invalid":["name must be lowercase alphanumeric plus hyphens, max 64 characters, with no leading/trailing or consecutive hyphen"],"warnings":["artifact URL is cross-origin; clients must treat it as a separate trust boundary"]}FAILInvalid skill entry skill={"index":3,"valid":false,"name":"Portable Text Serialization","type":"","description":"Render and serialize Portable Text to React, Svelte, Vue, Astro, HTML, Markdown, and plain text. Covers custom serializers for non-standard block types and framework-specific rendering patterns.","url":"https://github.com/sanity-io/agent-toolkit/tree/main/skills/portable-text-serialization","digest":"","resolvedUrl":"https://github.com/sanity-io/agent-toolkit/tree/main/skills/portable-text-serialization","originClass":"external","missing":["type","digest"],"invalid":["name must be lowercase alphanumeric plus hyphens, max 64 characters, with no leading/trailing or consecutive hyphen"],"warnings":["artifact URL is cross-origin; clients must treat it as a separate trust boundary"]}FAILInvalid skill entry skill={"index":4,"valid":false,"name":"Sanity Best Practices","type":"","description":"Sanity development best practices for schema design, GROQ queries, TypeGen, Visual Editing, images, Portable Text, Studio structure, localization, migrations, Sanity Functions, Blueprints, and framework integrations including Next.js, Nuxt, Astro, Remix, SvelteKit, Angular, and Hydrogen.","url":"https://github.com/sanity-io/agent-toolkit/tree/main/skills/sanity-best-practices","digest":"","resolvedUrl":"https://github.com/sanity-io/agent-toolkit/tree/main/skills/sanity-best-practices","originClass":"external","missing":["type","digest"],"invalid":["name must be lowercase alphanumeric plus hyphens, max 64 characters, with no leading/trailing or consecutive hyphen"],"warnings":["artifact URL is cross-origin; clients must treat it as a separate trust boundary"]}FAILInvalid skill entry skill={"index":5,"valid":false,"name":"SEO & AEO Best Practices","type":"","description":"SEO and AEO best practices for metadata, Open Graph, sitemaps, robots.txt, hreflang, JSON-LD structured data, EEAT, and content optimized for search engines and AI answer surfaces like Google, ChatGPT, and Perplexity.","url":"https://github.com/sanity-io/agent-toolkit/tree/main/skills/seo-aeo-best-practices","digest":"","resolvedUrl":"https://github.com/sanity-io/agent-toolkit/tree/main/skills/seo-aeo-best-practices","originClass":"external","missing":["type","digest"],"invalid":["name must be lowercase alphanumeric plus hyphens, max 64 characters, with no leading/trailing or consecutive hyphen"],"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

AI DiscoverabilityContent ReadinessEstablished

Author attribution

Author attribution is partially implemented.

45 Warning

Needs attention

Author attribution

Warning
01

Issue

No named author or publisher identity could be extracted.

Details

02

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

  1. Schema.org attribution

    Schema.org attribution is incomplete or relies only on publisher/fallback evidence.

    Schema.org author attribution is missing or incomplete
  2. 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=0 namedContributors=0 authors=[] publishers=[] formats=[]WARNSchema.org attribution is incomplete or fallback-only authorCount=0 publisherCount=0 authors=[] publishers=[]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=[]FAILNo named contributor identity could be extracted

Sign in to see 35 other issues and the full report

Create a free account to unlock every issue, evidence details, exports, and higher free limits.

Email code

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.

Fix with MCP / CLI

Score history

Public scan score over time

Public reports for this website origin. Select any point or report link to open that canonical report.

1 reports
Public score history report links
Scan dateScoreReadinessReport
65/100Level 3, Bot-AwareCurrent report