# JSON-LD structured data

> JSON-LD structured data: The entity type becomes unambiguous to a machine. Without authoritative data, an agent answers from whatever it can scrape.

- Source: /checks/jsonld
- Site: AgenticWebScore
- Language: English

---
The entity type becomes unambiguous to a machine. Without authoritative data, an agent answers from whatever it can scrape.

| Property | Value |
| --- | --- |
| Check id | `jsonld` |
| Dimension | Content Accessibility (22%) |
| Tier | Essential — pool 80 pts |
| Weight inside tier | 3 |
| Impact | Critical |
| Maturity | Adopted — A ratified standard with real deployment. |
| Conditional | No |
| Publishing skill | `structured-data` |
| Standards | schema.org |

## What is measured

The scanner extracts every `<script type="application/ld+json">` block from the homepage `/`, parses it as JSON and walks the graph, including members of `@graph`. Pass when at least one block is valid JSON and declares `@context` `https://schema.org` plus an `@type` that names the page entity (`WebSite`, `Organization`, `Article`); partial when a block exists but is invalid JSON, or parses yet has no `@context` or no `@type`; fail when the page has no JSON-LD block at all.

## Reproduce it yourself

You do not have to take our word for any of this. Run the same measurement against your own domain:

```bash
DOMAIN="https://example.com"
curl -sL "$DOMAIN/" | perl -0777 -ne 'while (m{<script[^>]*application/ld\+json[^>]*>(.*?)</script>}gsi) { print "$1\n" }' | jq -r '[(."@context"? // empty | tostring)] + [.. | objects | select(has("@type")) | ."@type" | tostring] | unique | @tsv'
```

## The fix

This is the artifact to ship. It is the complete change, not a description of one.

```html
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "WebSite",
  "name": "Acme Agent Readiness",
  "url": "https://www.example.com/",
  "description": "Audits how well a website serves autonomous AI agents.",
  "publisher": {
    "@type": "Organization",
    "name": "Acme",
    "url": "https://www.example.com/",
    "logo": "https://www.example.com/logo.svg"
  }
}
</script>
```

> One valid block beats five broken ones: JSON-LD is parsed, not scraped, so a single trailing comma makes the whole entity invisible.

## Standards referenced

- `schema.org`

## Related checks

| Check | Tier | Impact | Same skill |
| --- | --- | --- | --- |
| `markdown-negotiation` — Markdown content negotiation | Recommended | Critical | — |
| `headings` — Semantic heading structure | Essential | High | — |
| `meta` — Title and summary metadata | Essential | High | — |
| `faq-schema` — FAQ / question-answer schema | Recommended | High | — |
| `breadcrumb` — Breadcrumb / navigation schema | Emerging | Low | — |
| `summary` — Prominent summary block | Recommended | Medium | — |
| `lang` — Language declaration and multilingual access | Recommended | Medium | — |
| `no-js-fallback` — Content that needs no JavaScript | Essential | High | — |
