Agent-Ready Video

Draft 1.0, proposed

Agent-Ready Video (ARV)

An open standard that lets AI agents find, cite and play the exact moment in a video, with rights and credit attached.

For video publishers and creators, the builders of AI assistants, and the teams that run players and video platforms.

Status
Draft 1.0, proposed
Implementations
1 origin live, self-declared
Example objects
7, served as JSON
Open licenses
W3C CLA (spec text), Apache-2.0, CC-BY-4.0
Last change
2026-09-24

How it works #

One moment, named by its time range, travels through three steps. The same rights and credit go with it each time.

A moment travels from a video to an agent to a player A video asset of 21 minutes 24 seconds with a highlighted moment from 12.4 to 31 seconds. The moment URI goes to an AI agent, which asks the origin to play it. A player then starts at 12.4 seconds. Video asset vid_8f2c · 21:24 Moment 12.4 to 31 s arv:vid_8f2c#t=12400,31000 AI agent cites, checks rights Player starts 12.4 s no stream URL in search signed receipt A moment travels from a video to an agent to a player A video asset with a highlighted moment from 12.4 to 31 seconds. The moment URI goes to an AI agent, which asks the origin to play it. A player then starts at 12.4 seconds. Video asset vid_8f2c · 21:24 Moment 12.4 to 31 s arv:vid_8f2c#t=12400,31000 AI agent cites, checks rights no stream URL in search Player starts 12.4 s signed receipt
  1. Crawl time

    Crawlers read your manifest at /.well-known/arv, your catalog and the JSON-LD Clips on each video page. Every moment has a stable id anyone can recompute.

  2. Inference time

    An agent searches moments and checks rights through fixed MCP tools. Search results carry the moment, the evidence and the rights, and never a stream URL.

  3. Playback

    A play call returns a short-lived descriptor. Any player starts at the right second and keeps playing. A signed receipt records what was served.

A real example #

These are the actual example objects from Schema 1.0, served as JSON at /examples/1.0/. Fetch them from a browser or a test.

/examples/1.0/manifest.json
{
  "arv": "1.0",
  "conformance_level": "L2",
  "publisher": {
    "name": "Example Garage",
    "contact": "agents@example.com"
  },
  "license_url": "https://example.com/license.xml",
  "jwks_url": "https://example.com/.well-known/jwks.json",
  "catalogs": [
    "https://example.com/arv.json"
  ],
  "tool_profiles": {
    "mcp_origin": {
      "url": "https://example.com/mcp",
      "version": "1.0"
    },
    "webmcp_page": {
      "adapter": "https://example.com/webmcp/v1/adapter.js",
      "version": "1.0"
    },
    "nlweb": {
      "ask": "https://example.com/ask"
    },
    "a2a": {
      "card": "https://example.com/.well-known/agent-card.json"
    }
  },
  "validator_report": "https://agentreadyvideo.org/validator/r/example.com/2026-09-23",
  "schema": "https://agentreadyvideo.org/schema/1.0/manifest.schema.json",
  "entitlement_url": "https://example.com/account/link",
  "payment_terms_url": "https://example.com/terms/payment"
}
/examples/1.0/moment.json
{
  "arv": "1.0",
  "id": "mom_rg2e4kdenkmkzilboihacumshn",
  "moment_uri": "arv:vid_8f2c#t=12400,31000",
  "moment_url": "https://example.com/videos/carb#t=12.4,31",
  "asset_id": "vid_8f2c",
  "start_ms": 12400,
  "end_ms": 31000,
  "snap": "sentence",
  "title": "Setting the idle mixture screw",
  "evidence": [
    {
      "type": "transcript",
      "start_ms": 12900,
      "end_ms": 18200,
      "text": "Turn the mixture screw a quarter turn out",
      "confidence": 0.93
    },
    {
      "type": "shot_caption",
      "start_ms": 14000,
      "end_ms": 22000,
      "text": "Close-up of a screwdriver on the idle screw",
      "confidence": 0.81
    }
  ],
  "evidence_grade": "C",
  "confidence": {
    "score": 0.84,
    "band": "high"
  },
  "aliases": [
    "amt_2b7c..."
  ]
}
/examples/1.0/playback-descriptor.json
{
  "arv": "1.0",
  "moment_uri": "arv:vid_8f2c#t=12400,31000",
  "start_ms": 12400,
  "end_ms": 31000,
  "cue_points": [
    22000
  ],
  "sources": [
    {
      "kind": "hls",
      "provider": "mux",
      "token_ref": "ptk_91",
      "start_ms": 12400
    },
    {
      "kind": "embed",
      "provider": "youtube",
      "embed_url": "https://www.youtube.com/embed/abc",
      "start_param": "start=12"
    }
  ],
  "poster": "https://example.com/poster/vid_8f2c.jpg",
  "captions": [
    {
      "lang": "en",
      "url": "https://example.com/cc/vid_8f2c.vtt"
    }
  ],
  "token": {
    "ref": "ptk_91",
    "jws_kid": "k-2026-09",
    "expires_at": "2026-09-23T12:10:00Z",
    "scope": "segment"
  },
  "entitlement": {
    "required": false,
    "kind": "none"
  },
  "payment": {
    "required": false,
    "model": "free"
  }
}
/examples/1.0/usage-receipt.json
{
  "arv": "1.0",
  "receipt_id": "rcp_5x",
  "moment_uri": "arv:vid_8f2c#t=12400,31000",
  "moment_id": "mom_rg2e4kdenkmkzilboihacumshn",
  "action": "segment_display",
  "served_to": {
    "agent": "chatgpt",
    "surface": "chat"
  },
  "policy_version": 7,
  "served_at": "2026-09-23T12:00:04Z",
  "citation": "Example Garage, Tuning a carburettor, 0:12",
  "jws": "eyJhbGciOiJFUzI1NiIsImtpZCI6ImstMjAyNi0wOSJ9...",
  "entitlement_ref": "ent_free_public"
}

Who it is for #

Publish

Publishers and creators

You own video and want AI assistants to find it, play the right second and credit you. Start at L1 with JSON files on the site you already run.

Five-minute quick start

Build

Agent and assistant builders

You want to cite and play video moments without guessing at URLs or rights. Call one tool profile on any ARV origin.

Read the tool profile

Play

Player and platform vendors

You run a player or a video platform. One descriptor tells your player where to start. An adapter is under 100 lines.

Read the playback rules

The five things ARV adds #

ARV reuses thirteen standards as they are, including schema.org, Media Fragments, RSL, AIPREF and MCP. It adds only what video needs and nobody else defines.

1

Moments

A time range on a video, named by its range: arv:vid_8f2c#t=12400,31000. Anyone can recompute its id.

2

Per-moment rights

What an agent may do with each moment: show it, quote up to N seconds, embed the source, and whether credit is required.

3

Evidence

Typed spans (transcript, on-screen text, shot caption, visual) inside the moment that show why it answers the question.

4

Player-neutral playback

One descriptor any player can use to start at the right second. Start time is the rule; the end is advisory.

5

Usage receipts

A signed record of which moment an agent served, under which rights policy, with the citation it showed.

The thirteen standards it binds #

ARV reuses each of these as it is. The third column is all ARV adds.

StandardWhat it coversWhat ARV addsWhen it applies
schema.org VideoObject, Clip, SeekToActionVideo and chapter metadata for search enginesClip @id equals the moment URI; a Clip appears only when the rights allow segment displayCrawl time
W3C Media Fragments (#t=start,end)Addressing a time range in a media URLThe snapped range is the identity, with millisecond precision in the URICrawl, inference, playback
Video sitemaps, MRSSListing videos for crawlers and feedsPer-moment entries and a link to the manifestCrawl time
llms.txtA plain guide for language modelsFixed section order that points at the manifest and toolsCrawl time
IndexNowPush notice of changed URLsPush when a moment or its rights change, not only when a page changesCrawl time
RSL 1.0Machine-readable license and payment termsPer-moment video terms (clip, segment display, source embed, quote limits)Crawl time, inference time
IETF AIPREF (Content-Usage)Train, AI-use and search preferencesHeader derived from the same rights record as RSL, so they never disagreeCrawl time
MCP and MCP AppsAgent tool calls and in-chat UIOrigin tool profile with fixed names and shapes; forbidden-field ruleInference time
WebMCP (document.modelContext)Tools a page exposes to an in-browser agentPage profile: three tools plus an optional ask toolInference time
NLWeb/ask returning schema.org itemsItems are Clips with moment URIsInference time
A2A agent cardAgent-to-agent discoveryCard skills map to the MCP origin profileInference time
JSON Schema, JWS, JWKSShape validation, signatures, key setsVersioned $id URLs; signed playback tokens and receiptsAll
HLS, DASH, MP4, iframe playersDelivery and playersPlayer-neutral descriptor with a start for each sourcePlayback

Status and roadmap #

ItemState
SpecificationDraft 1.0, proposed. Published 2026-09-23 at /spec/1.0. It may change before 1.0 is final. See the changelog.
Quick start and examplesLive now. Reach L1 on a static site with seven example objects.
JSON SchemasLive. Seven schemas at fixed, versioned URLs.
Validator and badgeComing. One command checks L1, L2 and L3.
StartersComing: reference producer, player adapter, MCP origin profile.
URI schemeProvisional registration of arv: requested from IANA on 2026-09-24.
W3C Community GroupAnnounced for support. Support the proposal at W3C.
ImplementationsNone yet. The draft says "proposed" until an outside implementation passes the validator. Implementations.

Common questions #

Why not just use schema.org or MCP?

ARV does use them, as they are. Neither says how to name a moment so two systems agree on it, what an agent may do with it, or how to prove what was served. Full answer.

Does the player stop at the end of the moment?

No. ARV sets the start only. The player keeps playing so the viewer stays with the video. The end still governs rights and receipts. Full answer.

Who implements ARV today?

No implementations yet. ARV is Draft 1.0, proposed, and we do not list supporters we do not have. Full answer.

All sixteen questions

How to cite #

Agent-Ready Video (ARV) Specification, Draft 1.0 (proposed). AgentCDN, 2026. https://agentreadyvideo.org/spec/1.0

Link to a section with its anchor, for example https://agentreadyvideo.org/spec/1.0#moment.