agentspeed.

sanity.io

scanned 7/26/2026, 5:35:34 AM · fresh · rubric 2026.08.0
Built with Webflow
robots.txt present: passrobots.txt allows AI agents: passContent-Signal directives: passllms.txt present: passSitemap present: passLink response headers: passCanonical URL: skipMCP server card: failOAuth authorization metadata: failOAuth resource metadata: failAPI catalog / OpenAPI: passWeb Bot Auth: failMarkdown negotiation: passText-to-markup ratio: failContent without JavaScript: skipHeading hierarchy: skipCookie wall blocks content: skipPage title: skipMeta description: skipJSON-LD present: failStructured data validates: skipSchema type coverage: failPaywall / login wall: skipAgent Skills manifest: failWebMCP actions: failPrimary action reachable: passReachability: passTime to first byte: passFull render time: skipPage weight: pass60/ 100 · D
Needs work

This is how AI agents (not browsers) experience sanity.io. The score weights five categories of machine-readability; the ticks on the arc are the 30 individual checks behind it.

✉ Email me this report + alert me when it changes ↓

Top fixes

Checks tagged “emerging” are 2026 agent-protocol standards most of the web hasn’t adopted yet — adopting early is an edge, not a defect.

failJSON-LD presentStructured data

No JSON-LD blocks found. Add a <script type="application/ld+json"> with a schema.org type for this page.

Fix · Webflow: Add JSON-LD in Page Settings → Custom Code (inside <head>) for the page’s type.

failText-to-markup ratioReadability

Visible text is 2.6% of HTML weight (9783/370840 bytes). Low. Markup may be crowding out agent-usable text.

Fix: Heavy ad or navigation markup crowds out agent-usable text. Aim for a text-to-DOM ratio above 15%.

failSchema type coverageStructured data

Page looks like Article|BlogPosting|NewsArticle; missing JSON-LD type(s): Article|BlogPosting|NewsArticle.

Fix: Align JSON-LD type to page purpose. Product pages without Product markup are skipped by agent shopping flows.

failMCP server cardemergingDiscoverability

No valid MCP Server Card at /.well-known/mcp/server-card.json. Publish one so agents can discover your tools without HTML scraping.

Fix: Publish an MCP Server Card describing the tools your site exposes. Agents discover capabilities via `/.well-known/mcp/server-card.json`. See modelcontextprotocol.io for the schema.

failOAuth authorization metadataemergingDiscoverability

No RFC 8414 metadata at /.well-known/oauth-authorization-server. Agents that act on behalf of users need this to discover your authorization endpoints.

Fix: Expose OAuth metadata at `/.well-known/oauth-authorization-server` per RFC 8414. Required for agents that need to perform user-authorized actions on your site.

Don’t lose this report

Get it in your inbox now — and a heads-up whenever sanity.io’s agent-readiness score changes. Free, unsubscribe anytime.

Fix it

Generated, ready-to-ship files for the gaps above — copy them or download and drop them into your repo.

Add JSON-LD structured data
Paste inside <head>. Use Article/Product instead of Organization on those page types.
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "The Content Operating System for the AI era | Sanity",
  "url": "https://sanity.io/",
  "description": "Sanity is the back-end built for AI content operations. Power web, mobile, and agentic applications at scale."
}
</script>

What the agent receives

The agent’s-eye view
The Content Operating System for the AI era | Sanity Skip to content 🗓️ Everything *[NYC] is back. A free gathering for AI builders. Sept 9 → Products Content operations Studio Content Agent App SDK Media Library Content Releases Agent API Content backend Content Lake Sanity Context MCP Server Functions Live CDN The only platform powering content operations Start building for free Solutions By Industry E-commerce &amp; Retail Media &amp; Publishing SaaS By Team Developers Content Editors Product Owners Business Leaders Tecovas strengthens their customer connections Read the story Resources Build and Share Sanity 101 Sanity Learn Pioneers Frameworks Templates Tools and plugins Schemas and snippets Join our community Insight Blog Events Customer stories Guides Grab your gear: The official Sanity swag store Read Grab your gear: The official Sanity swag store Docs Enterprise Pricing Log in Contact Sales Get started The Content Operations Platform Power content applications and AI workflows at scale. Every application, one platform. Start building Watch demo npm create sanity@latest Trusted by leaders and innovators Trusted by leaders and innovators Mirror how your content operations team works PROD Home About Shop Login Cart [1] Page title Page description goes here hero.ts terminal import {defineField, defineType} from 'sanity' export const heroType = defineType ({ name: 'hero' , title: 'Hero' , type: 'document' , fields: [ defineField ({ name: 'title' , title: 'Title' , type: 'string' , validation : ( Rule ) => Rule. required (), }), defineField ({ name: 'description' , title: 'Description' , type: 'text' , rows: 3 , }), defineField ({ name: 'image' , title: 'Image' , type: 'image' , options: { hotspot: true , }, fields: [ { name: 'alt' , type: 'string' , title: 'Alternative text' , description: 'Important for SEO and accessibility.' , }, ], }), ], preview: { select: { title: 'title' , subtitle: 'description' , media: 'image' , }, }, }) Tap to interact Click to interact Studio / Homepage / Hero Title Description Your tools shouldn&#x27;t dictate how you work. Sanity&#x27;s structured content and fully configurable Studio let you model your entire content platform around your business. Image No changes yet Publish Tap to interact Click to interact History Sanity stores revisions for every document. No changes yet Tap to interact Click to interact New Content Release Set publishing date Documents Action Locale: US-ES add Locale: EU-FR add Site nav bar change Ai Context Promo publish Run Release Tap to interact Click to interact Content Operations without the busywork Agent actions, functions, and content agents automate manual work before and after hitting publish. Update References Translate with AI Delegate from elsewhere Look up all products look up all blog posts find posts missing translations focus on content from the last 2 weeks Sanity Studio Just now @ Jason published a new product: ST07 Winter Jacket Trigger import {documentEventHandler} from '@sanity/functions' import {createClient} from '@sanity/client' const STOREFRONT_WEBHOOK = process.env. STOREFRONT_WEBHOOK_URL export const handler = documentEventHandler ( async ({ context , event }) => { const { data } = event if ( ! STOREFRONT_WEBHOOK ) { console. error ( '❌ STOREFRONT_WEBHOOK_URL not found in environment variables' ) return } const client = createClient ({ ... context.clientOptions, apiVersion: '2025-06-01' , }) // Find every document that references the published product const referencing = await client. fetch ( `*[references($id)]{ _id, _type, title, "slug": slug.current }` , {id: data._id}, ) if ( ! referencing. length ) { console. log ( `📭 No references found for ${ data . _id }` ) return } console. log ( `🔗 Found ${ referencing . length } documents referencing ${ data . _id }` ) // Notify the storefront so it can rebuild affected pages try { const response = await fetch ( STOREFRONT_WEBHOOK , { method: 'POST' , import {documentEventHandler} from '@sanity/functions' import {createClient} from '@sanity/client' const STOREFRONT_WEBHOOK = process.env. STOREFRONT_WEBHOOK_URL export const handler = documentEventHandler ( async ({ context , event }) => { const { data } = event if ( ! STOREFRONT_WEBHOOK ) { console. error ( '❌ STOREFRONT_WEBHOOK_URL not found in environment variables' ) return } const client = createClient ({ ... context.clientOptions, apiVersion: '2025-06-01' , }) // Find every document that references the published product const referencing = await client. fetch ( `*[references($id)]{ _id, _type, title, "slug": slug.current }` , {id: data._id}, ) if ( ! referencing. length ) { console. log ( `📭 No references found for ${ data . _id }` ) return } console. log ( `🔗 Found ${ referencing . length } documents referencing ${ data . _id }` ) // Notify the storefront so it can rebuild affected pages try { const response = await fetch ( STOREFRONT_WEBHOOK , { method: 'POST' , Function Update Products Update Categories Update blogs n032232 n3900-22 n05053 Bags Shoes Something else blog post 1 blog post 2 blog post 3 Learn More → Output Trigger Function Output Sanity Studio Just now @ Jason published a new product: ST07 Winter Jacket Power anything. One API, every platform Turn your content into a governed knowledge layer that powers applications and AI agents. sanity context Marketing Bot [ click to chat ] status: sanity context Current Context: learn, docs HOW DO I SET UP SANITY CONTEXT? HOW DO I CONNECT NEXT.JS TO SANITY? WHAT CAN I AUTOMATE WITH FUNCTIONS? status: enabled Learn More → sanity context Pricing Bot [ click to chat ] status: Everything your team needs in one place 0 1 Content-as-data 0 2 Editorial freedom 0 3 Content agent 0 4 Automation at scale 0 5 Power any application The database optimized for content operations Store any valid JSON document, with schemas living in your Sanity Studio configuration, not as database constraints. Schema as code Query anything Update with precision Manage different environments content lake Content workflows that mirror how you work Enable creative freedom with infinitely customizable workflows. A modern content studio Custom content applications with App SDK Preview content in context Content releases with precision Multiplayer-editing for teams Sanity Studio An agent to run content operations at scale The first content agent that knows your content, so you can action with accuracy at scale. Transform source materials into structured content Audit and edit content at scale Edit visuals with natural language Research trends and topics Prepare changes for revision Content Agent Programmable automation Automate content operations, from AI enrichment to syncing with any system, triggered by any mutation in your dataset. Event driven automation Full access to your content Any possible “If this, then that” combination Agent Actions for schema-aware AI automations Write once, use everywhere Agent actions Power web, mobile, or your own agent Now, with Sanity you can power not only web and content applications but your own agents. Structured data that powers intelligence. Structured content to agentic reasoning Build your own customer-facing or internal agents Agentic workflows Or power any web surface or content application Sanity Context Loved by 1M+ users and 6k+ teams 0 1 0 2 0 3 0 0 custom APIs 300% Faster release cycles 90% of updates owned by the content team 5x faster dev velocity 144x faster product launches 10k products updated in 30 seconds 80 hours saved per month 60 lines of code Zero added services “ Lady Gaga’s team had never used a CMS before. Now they are logging into Sanity and using Sanity Studio to make updates on their own. ” Melody Yung Creative Lead &amp; Founder at Yung Studio “ I want to build tools and systems where I never have to say &#x27;no, I can&#x27;t do that.&#x27; The question becomes &#x27;should we do that?&#x27; And if yes, we have the stack and the ability to go do it. ” Kevin Harwood CTO at T

Show your score

Embed this badge on your site. It links back to this live scan and updates on every rescan.

AgentSpeed score for sanity.io
<a href="https://agentspeed.com/scan/sanity.io"><img src="https://agentspeed.com/badge/sanity.io" alt="AgentSpeed agent-readiness score" height="56"></a>

Track this score

Get this report by email, then a heads-up when sanity.io’s agent-readiness actually changes — a check regressing, or the composite dropping.

Two things never trigger an email: a score change caused by us publishing a new rubric, because that is a different instrument rather than a change to your site, and movement explained only by timing-derived checks, which shift run to run on a site nobody touched.

Want it on your own schedule, with Slack or a webhook instead of email? Score-drift monitoring is on every paid plan.

This score says whether an AI agent could read sanity.io. AI traffic analytics says whether one actually came — and which pages turned it away.

Full breakdown

12 pass0 warn9 fail9 skip
Discoverability
pass
robots.txt present
A robots.txt is reachable at the site root.
100/100
pass
robots.txt allows AI agents
All 9 answer-time access agents allowed.
100/100
pass
Content-Signal directivesemerging
Content-Signal directives are advertised, declaring fine-grained AI usage preferences.
100/100
pass
llms.txt present
Found /llms.txt (126271 bytes), H1 + at least one link present. Not scored.
100/100
pass
Sitemap present
sitemap.xml reachable and referenced from robots.txt.
100/100
pass
Link response headers
Link: header carries useful relation(s): describedby.
100/100
skip
Canonical URL
Check could not run.
fail
MCP server cardemerging
No valid MCP Server Card at /.well-known/mcp/server-card.json. Publish one so agents can discover your tools without HTML scraping.
0/100
fail
OAuth authorization metadataemerging
No RFC 8414 metadata at /.well-known/oauth-authorization-server. Agents that act on behalf of users need this to discover your authorization endpoints.
0/100
fail
OAuth resource metadataemerging
No RFC 9728 metadata at /.well-known/oauth-protected-resource. Publish it so agents can discover required scopes without hand-coded credentials.
0/100
pass
API catalog / OpenAPIemerging
An API catalog (RFC 9727) or an OpenAPI document is reachable, so agents can plan API calls against your site.
100/100
fail
Web Bot Authemerging
No Web Bot Auth JWKS at /.well-known/http-message-signatures-directory.json. Publish one to allow trusted agents while keeping a default-deny posture for the rest.
0/100
Readability
pass
Markdown negotiationemerging
Requests with Accept: text/markdown return a markdown representation — agents prefer markdown over HTML for summarization and citation.
100/100
fail
Text-to-markup ratio
Visible text is 2.6% of HTML weight (9783/370840 bytes). Low. Markup may be crowding out agent-usable text.
20/100
skip
Content without JavaScript
Browser pass unavailable; cannot measure JS dependency.
skip
Heading hierarchy
Check could not run.
skip
Cookie wall blocks content
Check could not run.
skip
Page title
Check could not run.
skip
Meta description
Check could not run.
Structured data
fail
JSON-LD present
No JSON-LD blocks found. Add a <script type="application/ld+json"> with a schema.org type for this page.
0/100
skip
Structured data validates
No JSON-LD blocks present; nothing to validate (covered by structured_data.jsonld_present).
fail
Schema type coverage
Page looks like Article|BlogPosting|NewsArticle; missing JSON-LD type(s): Article|BlogPosting|NewsArticle.
0/100
Actionability
skip
Paywall / login wall
Check could not run.
fail
Agent Skills manifestemerging
No Agent Skills manifest at /.well-known/agent-skills.json. Enumerate the tasks agents can perform (search, add-to-cart, contact-support) so they pick the right one without scraping.
0/100
fail
WebMCP actionsemerging
No WebMCP detected. On pages with first-class actions (cart, support, account), embed a WebMCP server so on-page agents invoke tools directly.
0/100
pass
Primary action reachable
Primary offering identified ("Content Operating System") with price/CTA ("Start building for free").
100/100
pass
Reachability
HTTP 200 after 1 redirect.
100/100
Performance
pass
Time to first byte
TTFB 245ms. Healthy.
80/100
skip
Full render time
Full-render time unavailable (browser pass skipped or failed).
pass
Page weight
Initial document is a lean 362 KB.
100/100
Beyond the scan

Running AI agents of your own? AgentSpeed also monitors them in production — every run, its latency, cost, and failures, with alerts when something breaks. Free for 10,000 events a month, no credit card.

Start watching free →See plans