# 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.

- Source: /checks/provenance-declared
- Site: AgenticWebScore
- Language: English

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

| Property | Value |
| --- | --- |
| Check id | `provenance-declared` |
| Dimension | Content Accessibility (22%) |
| Tier | Emerging — pool 5 pts |
| Weight inside tier | 1 |
| Impact | Medium |
| Maturity | Draft — A published specification that is not yet ratified. |
| Conditional | No |
| Publishing skill | `provenance` |
| Standards | schema.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:

```bash
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.

```html
<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>
```

> Dates must be ISO 8601 with a timezone or an agent cannot order two versions of the page, and `dateModified` has to change when the copy changes - a stale update date is worse than none, because it is quoted as fact.

## Standards referenced

- `schema.org/author`
- `C2PA`

## 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 | — |
| `jsonld` — JSON-LD structured data | Essential | Critical | — |
| `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 | — |
