Skip to main content
Glama
Akxan
by Akxan

Structured data (JSON-LD) audit

structured_data_audit
Read-onlyIdempotent

Extract JSON-LD from URLs or sitemaps; validate required schema properties, flag invalid JSON and bad dates, and verify entity consistency and sameAs profiles across pages.

Instructions

Extract JSON-LD from one or more pages, validate required/recommended properties per schema type (Organization, LocalBusiness, TravelAgency, TouristTrip, Product/Offer, Event, Article/BlogPosting, FAQPage, BreadcrumbList, WebSite, Person, Review...), flag invalid JSON and bad dates, and check entity consistency across pages (organization name, telephone, address, sameAs must match everywhere). Also checks what makes an entity resolvable rather than merely declared: whether each sameAs profile still exists, whether the schema's phone appears in the visible text of the pages that claim it, and whether one Organization node carries an @id that publisher/author reference instead of being retyped on every page. Pass explicit urls or a sitemap to sample.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlsNo
sampleSizeNo
sitemapUrlNoSample pages from this sitemap instead of explicit urls.
checkSameAsNoFetch each sameAs profile to see whether it still exists. A profile that refuses bots is reported as blocked, never as broken.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.10.0
    • addedInput schema / properties / checkSameAs
      Added value: +{
      +  "default": true,
      +  "description": "Fetch each sameAs profile to see whether it still exists. A profile that refuses bots is reported as blocked, never as broken.",
      +  "type": "boolean"
      +}
  2. Changed1 schema field changedv0.5.1
    • removedInput schema / additionalProperties
      Removed value: -false
  3. First observedv0.3.0

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description adds meaningful behavioral context beyond those: it checks whether sameAs profiles 'still exists' (implying external fetches), whether the phone appears in visible page text, and whether an Organization @id is actually referenced instead of retyped. It also mentions flagging invalid JSON and bad dates. This goes well beyond the annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but every clause adds information: it lists the schema types, the validation categories, the consistency checks, and the resolvability checks. It is front-loaded with the core extraction/validation purpose, and the detailed list is relevant for a complex audit tool. A slight trim of the schema type list (e.g., using fewer examples) would make it tighter, but it is not redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema, and the description does not describe what the return value looks like (e.g., a report, per-page results, count of issues). It says it 'flag[s]' and 'check[s]', implying findings are returned, but the structure and severity format are unspecified. Input handling is covered for urls/sitemap, but sampleSize is absent. Given the tool's complexity and lack of output schema, the description should state the return format more explicitly. Still, the extensive behavioral coverage makes it mostly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50% (sitemapUrl and checkSameAs are described there; urls and sampleSize are not). The description partially compensates by saying 'Pass explicit urls or a sitemap to sample', which clarifies that urls and sitemapUrl are alternative inputs and hints at sampling. However, sampleSize is never mentioned in the description, and the description does not explain any constraints (e.g., max 40 URLs). checkSameAs is only covered by the schema, not the description, but the schema's own description is adequate. Overall, the description adds some value but leaves sampleSize under-documented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Extract JSON-LD from one or more pages', then enumerates a concrete list of validations and checks (required properties, invalid JSON, bad dates, entity consistency, sameAs resolvability, phone visibility, @id reuse). This clearly differentiates it from siblings like schema_validate (which likely validates a single schema) and schema_generate. The range of schema types and cross-page entity checks make the tool's scope unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear input guidance: 'Pass explicit urls or a sitemap to sample', and the array/list of checks makes the intended use obvious. It does not explicitly name sibling tools or state when not to use it, but the context of a multi-page structured data audit is clear from the functionality described.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.