AgenticWebScore
Scan

Content Accessibility · Emerging · Medium impact

Content provenance declared

Author, publication date and update date are what let an agent judge whether a source is current and attributable before it quotes it.

  • Emerging
  • Medium impact
  • Draft standard
Content provenance declared — Property, Value
Property Value
Check idprovenance-declared
DimensionContent Accessibility (22%)
TierEmerging — pool 5 pts
Weight inside tier1
ImpactMedium
MaturityDraft — A published specification that is not yet ratified.
ConditionalNo
Publishing skillprovenance
Standardsschema.org/author, C2PA

What is measured

This check declares no probe path, so the scanner walks the JSON-LD of the already fetched homepage / for an article-level type (Article, NewsArticle, BlogPosting, ScholarlyArticle, Report) and reads author, datePublished and dateModified from it. Pass when such a type declares a named author (a Person or Organization with a name, not a bare string) plus datePublished and dateModified as ISO 8601 dates, so an agent can attribute the page and tell how current it is; partial when the entity exists but one of the three is missing, or author is an untyped string, or a date is not ISO 8601; fail when no article entity appears, or it carries no author and no dates. The scanner observes the schema.org HTML signals only: C2PA is the other standard named for this check, but it is a binary manifest embedded in a media file and is out of scope for a plain HTML page. This profile-scoped check is reported as not scored and excluded from the denominator unless the publisher or institution profile has been positively identified.

Reproduce it yourself

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

              DOMAIN="https://example.com"
curl -sL "$DOMAIN/" | perl -0777 -ne 'while (m{<script[^>]*application/ld\+json[^>]*>(.*?)</script>}gsi) { print "$1\n" }' | jq -r '.. | objects | select(([."@type"?] | flatten | map(tostring) | any(test("Article|BlogPosting|Report")))) | [((.author // "NO AUTHOR") | if type=="object" then (.name // "unnamed") elif type=="array" then ((.[0].name // .[0]) // "unnamed") else . end | tostring), (.datePublished // "NO datePublished"), (.dateModified // "NO dateModified")] | @tsv'
            

The fix

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

              <script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "NewsArticle",
  "headline": "How agent readiness is scored",
  "url": "https://www.example.com/insights/agent-readiness-scoring",
  "author": [
    { "@type": "Person", "name": "Dana Whitfield", "url": "https://www.example.com/authors/dana-whitfield" },
    { "@type": "Organization", "name": "Example Research Desk", "url": "https://www.example.com/about/research-desk" }
  ],
  "publisher": { "@type": "Organization", "name": "Example Publishing Ltd", "url": "https://www.example.com/" },
  "datePublished": "2025-11-04T09:00:00+01:00",
  "dateModified": "2026-02-17T14:30:00+01:00"
}
</script>
            

Standards referenced

  • schema.org/author
  • C2PA

Related checks

Related checks — Check, Tier, Impact, Same skill
Check Tier Impact Same skill
markdown-negotiation — Markdown content negotiationRecommendedCritical—
headings — Semantic heading structureEssentialHigh—
meta — Title and summary metadataEssentialHigh—
jsonld — JSON-LD structured dataEssentialCritical—
faq-schema — FAQ / question-answer schemaRecommendedHigh—
breadcrumb — Breadcrumb / navigation schemaEmergingLow—
summary — Prominent summary blockRecommendedMedium—
lang — Language declaration and multilingual accessRecommendedMedium—