Agent Ready
Structured data, scored for agents

Structured data validator for AI agents

Not “is this valid Schema.org?” — that’s what validator.schema.org is for. This asks whether your JSON-LD is agent-extractable and trustworthy.

Last updated

What does it check?

Two layers. The first is a lint every schema validator does; the second is the part they don’t — the coherence signals an autonomous agent uses to decide whether to extract and cite your page.

  • D1–D4 — schema lint. Parseable JSON-LD, a recognised primary @type, the core agent fields (identity, description, URL, freshness), and well-formed date/URL values.
  • D5 — freshness honesty. dateModified agrees with your sitemap.xml <lastmod> and any visible date.
  • D6 — canonical & markdown coherence. The JSON-LD URL matches your canonical, and a markdown mirror exists.
  • D7 — entity-name consistency. Your organisation/site name matches across JSON-LD, llms.txt, and AGENTS.md.
  • D8 — extraction signal. The primary entity has a description and the page ships real text, not an empty shell.

Why a separate tool from a schema validator?

A schema validator grades your markup for Google’s rich-snippet pipeline. An AI agent reads JSON-LD differently: it wants a coherent entity with an identity, a freshness signal it can trust, a URL it can re-fetch cleanly, and enough text to quote. Those are the things D5–D8 measure — and the things the first-party validators don’t. For full Schema.org and Rich Results conformance, run validator.schema.org alongside this.

Frequently asked questions

How is this different from validator.schema.org?
validator.schema.org and Google's Rich Results Test grade your markup against the full Schema.org vocabulary and Google's rich-snippet eligibility rules — that's the right tool for SEO rich results. This validator answers a different question: is your structured data agent-extractable and trustworthy? It lints the basics (parseable JSON, recognised type, well-formed values) and then runs checks the schema validators don't: does the JSON-LD date agree with your sitemap and visible date, does its URL match your canonical and a markdown mirror, does the entity name match your llms.txt and AGENTS.md, and is there actually enough content for an agent to quote. For full Schema.org conformance, use validator.schema.org; for agent-readiness, use this.
What do the agent-coherence checks (D5–D8) look at?
D5 (freshness honesty) compares the JSON-LD dateModified/datePublished against your sitemap.xml <lastmod> and a visible on-page date, flagging dates that don't agree. D6 (canonical & markdown coherence) checks the JSON-LD url matches your <link rel="canonical"> and that a /<slug>.md markdown mirror exists. D7 (entity-name consistency) compares the Organization/site name in your JSON-LD against your llms.txt and AGENTS.md headings. D8 (extraction signal) checks the primary entity has a description and the page ships real visible text rather than an empty JS-rendered shell.
Can I validate a JSON-LD snippet without a URL?
Yes. Paste mode runs the four schema-lint checks (parseable JSON, recognised @type, core agent fields, well-formed values) on a snippet directly. The four agent-coherence checks need a live page to compare against (sitemap, canonical, llms.txt, page text), so they only run in URL mode.
Which @type should my page use?
Use the most specific Schema.org type that fits: Article/BlogPosting/NewsArticle for content, Product for products, FAQPage for FAQs, HowTo for guides, Organization and WebSite for site-wide identity. The validator recognises the common types and is permissive about unusual ones — an unrecognised type is a warning, not a failure, because agents can still read it.
Does a warning mean my structured data is broken?
No. Failures are real defects (no parseable JSON-LD, malformed dates/URLs, no identity). Warnings are agent-readiness gaps — a missing recommended field, a freshness signal that can't be corroborated, an entity name that doesn't match your llms.txt. A warning marked 'could not verify' just means a corroborating source (sitemap, llms.txt) wasn't found, not that anything is wrong.

Related reading