Agent-Ready Video

Draft 1.0, proposed

Contents

Agent-Ready Video (ARV) Specification

Draft 1.0, proposed. Published 2026-09-23, updated 2026-09-24. This draft may change before 1.0 is final.

This version
https://agentreadyvideo.org/spec/1.0
Latest version
https://agentreadyvideo.org/spec (redirects to the latest)
No earlier versions.
Status
Draft 1.0, proposed. No implementations yet.
Maintainer
AgentCDN
Feedback
GitHub issues or team@agentreadyvideo.org
Changes
Section 6 and the changelog
Source
sandersaar/agentreadyvideo at commit 958eda6. This page renders that commit.

Conventions #

The key words MUST, MUST NOT, SHOULD, SHOULD NOT and MAY are to be read as described in RFC 2119.

  • All times are integer milliseconds unless a field says otherwise.
  • Every ARV object carries "arv": "1.0".
  • URLs in examples use example.com. Examples are not normative, except where a rule says so.
  • Every example in this spec is a file in examples/1.0/ and validates against its schema in CI.

Key terms #

Short definitions. Section 3 holds the normative rules.

Moment
A time range on one video, named arv:{asset_id}#t={start_ms},{end_ms}. An agent may ask for any range. The origin may snap it to a clean edge and returns the range it applied. The snapped range is the identity.
Evidence
Typed spans inside a moment (transcript, on-screen text, shot caption or visual) that show why the moment answers a question. Every span lies fully inside the range.
Rights summary
The public rights for one moment: whether an agent may show it, embed the source or quote it, for how long, and whether it needs a linked account or payment.
Playback descriptor
What a player needs to start a moment: a start time, optional cue points and sources. Only a playback call returns it. It never appears in search or other discovery.
Usage receipt
A signed record that an agent served a moment, under which rights policy, with the citation it showed.
Manifest
The JSON file at /.well-known/arv. It names the conformance level, license, keys, tool profiles and catalogs. Validators and agents start here.
Catalog
A JSON list of assets and their published moments, usually at /arv.json. The manifest points to it.
Conformance level
How much of ARV an origin implements. L1 is crawl-readable, L2 is agent-callable, L3 adds rights and a ledger.
Origin
The site that publishes the video and answers for its rights.

1. Purpose and definition #

Agent-Ready Video (ARV) is a profile that binds existing web and agent standards into one way to make video usable by AI.

A publisher that follows ARV is found by crawlers, called by agents and played by any player, with the same moment, rights and credit at each step.

ARV reuses schema.org, video sitemaps, Media Fragments, RSL, AIPREF, MCP, WebMCP, NLWeb and A2A as they are. It adds only what video needs and no other standard defines:

  1. Range-addressed moments.
  2. Per-moment rights.
  3. Typed evidence.
  4. Signed, player-neutral playback.
  5. Signed usage receipts.

1.1 One manifest, one validator, one badge #

No single standard covers video end to end. Without ARV, a publisher reads nine specs and still has no way to say "these 40 seconds may be shown, quoted up to 15 seconds, with credit, and here is proof they were used". ARV packages the answer as three things:

  • One manifest. /.well-known/arv names the conformance level, the license, the keys, the tool profiles and the catalogs. Every other surface is reachable from it.
  • One validator. arv validate https://example.com runs every check in section 5 and prints pass or fail per standard.
  • One badge. "ARV L1", "ARV L2" or "ARV L3", earned only by a green validator run, with a dated report URL.

1.2 What ARV adds to each standard #

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

1.3 Name #

The full name is Agent-Ready Video. The short form is ARV. Use the full name first on every page, because the short form alone is ambiguous in search. The URI scheme is arv: and the version field is "arv".

2. Scope #

ARV defines formats and behavior at the edge of a video origin: what it publishes for crawlers, what its tools accept and return, what a player receives, and what a receipt proves.

The format is open. How well a publisher fills it is up to the publisher.

2.1 In scope #

  • The objects in section 3 and their JSON Schemas.
  • How those objects appear in each bound standard (section 4).
  • The conformance checks and the badge (section 5).
  • Optional entitlement and payment fields, so an origin can say that a moment needs a linked account or a payment before playback.
  • An evaluation method for moment quality: range overlap with a reviewed answer, evidence inside the range, honest grades, and playable at the stated start.

2.2 Out of scope #

  • How a producer finds moments, grades evidence or ranks results.
  • Models, prompts and processing pipelines.
  • Billing systems, entitlement systems and commercial terms between parties. ARV only carries the signals (section 3.3) and the references (section 3.5).

2.3 The moment is an address, not a pre-cut list #

The agent on the user's side decides what the moment is. ARV lets it name any range on any asset and get the same rights, playback and receipt for it.

  • A moment is {asset_id, start_ms, end_ms} with a recomputable id (section 3.2).
  • Published moments (chapters, shots, evidence-backed ranges) are suggestions the origin offers. An agent MAY ignore them.
  • get_rights, play_moment and record_usage MUST accept any range on a published asset.
  • The origin MAY snap or cap the range, for example to a sentence edge or to a rights limit. It MUST return the range it actually applied, and that range is the moment's identity.

Chapters, shots and spans are all moments. The spec does not care how a range was found.

3. Core objects #

Each object has a JSON Schema (draft 2020-12) at https://agentreadyvideo.org/schema/1.0/<name>.schema.json. The source files are in schemas/1.0/.

Every object carries "arv": "1.0". Objects MAY carry fields this spec does not define. Consumers MUST ignore fields they do not understand.

3.1 Asset #

One video as published by an origin. Schema: asset.schema.json.

  • id MUST be unique within the publishing origin.
  • duration_ms MUST be present. Every moment on the asset lies inside it.
  • content_hash SHOULD be present, as sha256: plus lowercase hex.
  • c2pa MAY point to Content Credentials for the asset.
  • Vendor data MUST live under extensions, keyed by a reverse-domain name such as com.example. Core fields MUST NOT carry vendor-specific values.

Example: examples/1.0/asset.json

/examples/1.0/asset.json
{
  "arv": "1.0",
  "id": "vid_8f2c",
  "title": "Tuning a carburettor",
  "duration_ms": 1284000,
  "language": "en",
  "content_hash": "sha256:9b1e...",
  "creator": {
    "id": "cr_12",
    "name": "Example Garage",
    "url": "https://example.com"
  },
  "page_url": "https://example.com/videos/carb",
  "c2pa": {
    "credentials_url": "https://example.com/c2pa/vid_8f2c"
  },
  "extensions": {
    "com.mux": {
      "playback_id": "abc"
    }
  }
}

3.2 Moment #

A time range on an asset. Its identity is the canonical range after snapping. Two producers that snap to the same range name the same moment. Schema: moment.schema.json.

  • start_ms and end_ms MUST satisfy 0 <= start_ms < end_ms <= duration_ms.
  • moment_uri MUST equal arv:{asset_id}#t={start_ms},{end_ms}.
  • id MUST equal mom_ followed by the first 26 characters of the lowercase RFC 4648 base32 encoding (no padding) of SHA-256 over the UTF-8 string {origin}|{asset_id}|{start_ms}|{end_ms}. origin is the ASCII serialization of the publishing origin, for example https://example.com. Anyone can recompute it.
  • moment_url SHOULD be an https deep link that opens the video at start_ms, using Media Fragments in seconds (#t=12.4,31) or the player's own start parameter.
  • snap names the rule the origin used: shot, sentence, word, silence or rights_cap. Omit it when the producer does not know.
  • evidence is a list of typed spans: transcript, on_screen_text, shot_caption or visual. Each span MUST lie fully inside the moment range.
  • evidence_grade: A human-verified; B machine-produced and passed the ARV evaluation method; C machine-produced with at least one direct span inside the range; D metadata or inference only.
  • confidence carries a score from 0 to 1 and a band (low, medium or high).
  • aliases MAY list earlier ids for the same moment, so old references keep resolving.

end_ms stays on the moment. It governs rights, quote limits and receipts. Players do not enforce it (section 3.4).

Example: examples/1.0/moment.json. Its id is computed with origin https://example.com.

/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..."
  ]
}

3.3 RightsSummary #

The public rights for one moment. Terms use RSL 1.0 words where RSL has one, and the arv: extension namespace where it does not. Schema: rights-summary.schema.json.

  • rsl tokens MUST be RSL 1.0 words.
  • aipref MUST be derived from the same rights record as rsl. The two MUST NOT disagree.
  • video holds the video terms: segment_display, source_embed_display, full_video_display, clip and quote_max_ms. An absent source_embed_display means false.
  • policy_version MUST change whenever any term changes.
  • expires_at says how long a consumer may rely on this summary.
  • Finer terms (agent scope, territory, tiers) are an L3 concern and live behind tools, not in this public summary.

Example: examples/1.0/rights-summary.json

/examples/1.0/rights-summary.json
{
  "arv": "1.0",
  "moment_uri": "arv:vid_8f2c#t=12400,31000",
  "rsl": {
    "permits": [
      "search",
      "ai-input",
      "ai-index"
    ],
    "prohibits": [
      "ai-train"
    ],
    "payment": "attribution"
  },
  "aipref": "train-ai=n, ai-use=y, search=y",
  "video": {
    "segment_display": true,
    "source_embed_display": true,
    "full_video_display": false,
    "clip": false,
    "quote_max_ms": 15000
  },
  "attribution_required": true,
  "policy_version": 7,
  "expires_at": "2026-09-24T00:00:00Z",
  "license_url": "https://example.com/license.xml",
  "entitlement": {
    "required": false,
    "kind": "none"
  },
  "payment": {
    "required": false,
    "model": "free"
  }
}

3.3.1 Entitlement and payment #

A RightsSummary MAY carry entitlement and payment, so discovery can say "this needs a linked account" or "this costs money" before playback is requested. The PlaybackDescriptor (3.4) carries the same two objects with the same shapes. Both are defined in 1.0. Implementing them is optional.

entitlement:

  • required (boolean, required).
  • kind (required): none, account_link, subscription or purchase.
  • link_url (optional): https URL where the user links an account or buys.
  • provider (optional): a string naming the entitlement provider.

payment:

  • required (boolean, required).
  • model (required): free, per_use, per_view or subscription.
  • amount (optional): currency as an ISO 4217 code and minor_units as an integer, for example cents.
  • methods (optional): strings naming accepted payment methods, for example http-402, ap2 or wallet.
  • challenge_url (optional): https URL of the payment or entitlement challenge.

Rules:

  • All URLs in these objects MUST use https.
  • A conforming L3 origin that sets required: true in either object MUST answer a playback token request that lacks the entitlement or payment with HTTP 402 or 403. The response MUST carry the challenge_url (for an entitlement without one, the link_url).
  • An absent object means the origin makes no claim. It does not mean free.

A restricted moment that needs account linking: examples/1.0/rights-summary-account-link.json

/examples/1.0/rights-summary-account-link.json
{
  "arv": "1.0",
  "moment_uri": "arv:vid_8f2c#t=12400,31000",
  "rsl": {
    "permits": [
      "search",
      "ai-input",
      "ai-index"
    ],
    "prohibits": [
      "ai-train"
    ],
    "payment": "attribution"
  },
  "aipref": "train-ai=n, ai-use=y, search=y",
  "video": {
    "segment_display": true,
    "source_embed_display": false,
    "full_video_display": false,
    "clip": false,
    "quote_max_ms": 15000
  },
  "attribution_required": true,
  "policy_version": 7,
  "expires_at": "2026-09-24T00:00:00Z",
  "license_url": "https://example.com/license.xml",
  "entitlement": {
    "required": true,
    "kind": "account_link",
    "link_url": "https://example.com/account/link?moment=vid_8f2c",
    "provider": "example-garage-members"
  },
  "payment": {
    "required": false,
    "model": "free"
  }
}

3.4 PlaybackDescriptor #

What a player needs to start a moment. It is player neutral and is returned only by a playback call, never by discovery. Schema: playback-descriptor.schema.json.

  • start_ms MUST be present. The player starts there.
  • cue_points MAY list more start times in milliseconds, for example the steps of a multi-step answer.
  • end_ms MAY be present and is advisory only. Players MUST NOT stop at it by default. Playback continues past the moment so the viewer stays with the video. The moment's end still governs rights, quote limits and receipts.
  • Each entry in sources names a kind (hls, dash, mp4 or embed), a provider, and how to start it: a token_ref plus start_ms, or an embed_url plus the player's own start_param. Sources carry a start, never an end.
  • token_ref is exchanged at the origin for a short-lived URL. A signed media URL MUST NOT appear in any cached or crawlable response.
  • token.expires_at MUST be no more than 15 minutes after issue.
  • entitlement and payment MAY be present, with the shapes and rules in 3.3.1.

Example: examples/1.0/playback-descriptor.json

/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"
  }
}

3.5 UsageReceipt #

A signed record that an agent served a moment. Schema: usage-receipt.schema.json.

  • moment_uri and moment_id MUST resolve to a moment at the origin.
  • action names what was done, using the terms in the RightsSummary, for example segment_display.
  • policy_version MUST be the rights policy in force when the moment was served.
  • jws MUST be a compact JWS over the receipt, verifiable with a key from the origin's jwks_url.
  • payment_ref and entitlement_ref MAY point at what paid for or unlocked the use. Both are defined in 1.0 and optional to implement.

Example: examples/1.0/usage-receipt.json

/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"
}

3.6 Manifest #

Served at /.well-known/arv as JSON. It is the entry point for every validator and agent. Schema: manifest.schema.json.

  • conformance_level is the level the publisher claims: L1, L2 or L3. A claim counts only with a current validator report.
  • catalogs lists one or more catalog URLs.
  • tool_profiles lists the declared inference surfaces: mcp_origin, webmcp_page, nlweb and a2a. Omit what you do not offer.
  • jwks_url is REQUIRED at L3.
  • schema SHOULD point to the manifest schema for the version in use.
  • entitlement_url MAY name where users link accounts or manage entitlements for the origin. payment_terms_url MAY name the origin's payment terms. Both MUST use https.

Example: examples/1.0/manifest.json

/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"
}

3.7 Catalog #

A list of assets and their published moments, usually at /arv.json. Schema: catalog.schema.json.

  • origin is the publishing origin. It is the origin in every moment id preimage.
  • Every asset MUST validate as an Asset. Every moment MUST validate as a Moment and reference an asset in the same catalog or in another catalog the manifest lists.

Example: examples/1.0/catalog.json

4. Bindings #

How ARV objects appear inside the standards it binds. Section 1.2 lists them all.

4.1 Crawl time #

  • schema.org. JSON-LD VideoObject with hasPart Clip items. Clip @id MUST equal moment_uri. Clip url MUST equal moment_url. A Clip MUST NOT be emitted for a moment whose rights do not allow segment_display. SeekToAction SHOULD be emitted only when the rights allow public playback of the full video.
  • Sitemaps and MRSS. Video sitemap and MRSS entries per asset, with <link rel="arv"> to the manifest.
  • llms.txt. Sections in this order: what this is, manifest, tools, license, example questions.
  • IndexNow. Publishers SHOULD push when a moment or its rights change, not only when a page changes.
  • RSL. A License: line in robots.txt, and Link: <license.xml>; rel="license"; type="application/rsl+xml" on pages and on the catalog. Tokens MUST be RSL 1.0 words.
  • AIPREF. A Content-Usage header from the same rights record as RSL. The AIPREF vocabulary is still an IETF draft. ARV cites it as informative, and the validator pins the tokens it accepts.

4.2 Inference time #

  • MCP origin profile. Tool names: search_moments, get_moment, get_rights, play_moment, record_usage, plus search and fetch for clients that only speak those two. A server MAY declare other names as aliases. MCP Apps UI is optional and declared with _meta.ui.resourceUri and ui.csp.
  • WebMCP page profile. Three tools on document.modelContext: search_this_catalog, get_moment_context and play_moment, with ask_this_video optional. Results use a short-lived moment_ref. The page rechecks rights before it returns context or starts playback.
  • NLWeb. /ask returns an ItemList. Items are Clip objects with isPartOf the VideoObject, and each carries moment_uri.
  • A2A. Agent card at /.well-known/agent-card.json, with skills mapped one to one to the MCP origin profile.

get_rights, play_moment and record_usage accept any range on a published asset, not only published moments (section 2.3).

Forbidden-field rule (normative) #

Discovery responses (search, list, ask, JSON-LD, feeds, sitemaps, llms.txt) MUST NOT carry playback_url, stream_url, playback_token, or any manifest or media URL that plays without an origin check.

Discovery finds moments. Only a playback call starts them. The validator fails L1 or L2 on any hit.

4.3 Playback #

The descriptor is enough for a small adapter per player, under 100 lines, that maps start_ms and any cue_points to the player's own API. Examples: a plain <video> element with Media Fragments, hls.js, commercial web players, and iframe embeds such as YouTube (start parameter, t= on watch links).

  • Adapters MUST start at start_ms.
  • Adapters MUST NOT stop at the moment's end by default. An end parameter is optional and off unless the host asks for it.
  • Adapters SHOULD report how the start was reached: sought, cued or fallback.

5. Conformance levels and the badge #

The validator is a command-line tool and a hosted page. It runs against a live origin or a local folder. Each check names the standard it comes from.

The validator is not released yet. Until it is, use the conformance checklist and the JSON Schemas.

5.1 L1 crawl-readable #

  1. /.well-known/arv returns 200 JSON that validates against the manifest schema.
  2. Every catalog URL returns a valid catalog. Every moment has start_ms < end_ms, both inside duration_ms, and a recomputable id.
  3. Every evidence span lies inside its moment range.
  4. At least one sampled page carries JSON-LD VideoObject whose Clip @id values match catalog moment_uri values.
  5. A sitemap is reachable from robots.txt, and listed video pages return 200.
  6. llms.txt is present and links the manifest.
  7. The RSL license.xml parses and uses only RSL 1.0 tokens. robots.txt License: or a Link header points to it.
  8. No forbidden field appears in any L1 surface.

5.2 L2 agent-callable (L1 plus) #

  1. The MCP endpoint lists the origin profile names or declared aliases. Each input and result validates.
  2. search_moments returns moments that resolve through get_moment to the same range.
  3. No forbidden field appears in any search, ask or list result, fuzzed over 20 queries.
  4. play_moment returns a descriptor whose token expires within 15 minutes and fails after expiry.
  5. If a WebMCP adapter is declared, a headless run registers exactly the page profile tools.
  6. If NLWeb or A2A is declared, the endpoint responds and items carry moment_uri.

5.3 L3 rights and ledger (L2 plus) #

  1. jwks_url serves keys, and playback tokens and receipts verify against them.
  2. Negative tests pass: a moment with segment_display=false yields no descriptor; a revoked policy stops a live token; an agent outside scope is refused; a quote over quote_max_ms is refused.
  3. record_usage returns a signed receipt that references a resolvable moment.
  4. RSL, the AIPREF header and the RightsSummary agree for sampled moments.

An L3 origin that sets required: true on entitlement or payment also follows the 402 or 403 rule in section 3.3.1.

5.4 The badge #

An SVG reading "ARV L1", "ARV L2" or "ARV L3" that links to a dated validator report.

  • Reports expire after 90 days unless the validator is run again.
  • A site may say it conforms at a level only while a current report shows it.
  • Use of the name and badge follows a conformance mark policy, to be published with the validator. The spec text itself may be forked under its license.

6. Changes #

Every change to the spec, schemas and examples, newest first, from CHANGELOG.md in the source repository. The changelog page shows the same entries.

  • Unreleased.
    • Public source repository created with the spec text, schemas, examples, conformance checklist and CI checks.
  • 2026-09-25.
  • 2026-09-24.
    • W3C Community Group proposal under staff review; AgentCDN will contribute the draft under the W3C CLA at launch; draft charter added.
    • First origin live: AgentCDN serves an ARV 1.0 manifest at https://agentcdn.com/.well-known/arv, an ARV catalog, RSL 1.0 license terms, the Content-Usage header, range-addressed moment ids and an MCP origin profile (server agentcdn-arv). Self-declared, not yet validated; the validator is not released.
    • Added optional entitlement and payment objects to RightsSummary and PlaybackDescriptor, optional payment_ref and entitlement_ref to UsageReceipt, and optional entitlement_url and payment_terms_url to Manifest. Defined in 1.0, optional to implement. An L3 origin that sets required: true returns 402 or 403 with the challenge URL.
    • Added the example rights-summary-account-link.json for a restricted moment that needs account linking.
    • Launched the website at https://agentreadyvideo.org.
    • Submitted a provisional URI scheme request for arv: to IANA.
    • Proposed a W3C Community Group for Agent-Ready Video.
    • Opened a schema.org issue for the Clip @id convention: https://github.com/schemaorg/schemaorg/issues/4923
  • 2026-09-23.
    • Draft 1.0 proposed: Asset, Moment, RightsSummary, PlaybackDescriptor, UsageReceipt, Manifest and Catalog, with JSON Schemas at https://agentreadyvideo.org/schema/1.0/.
    • Name: Agent-Ready Video (ARV). URI scheme arv:. Version field "arv": "1.0".
    • A moment is an address: an agent may name any range, the origin may snap or cap it and returns the range it applied.
    • Playback is start only, with optional cue points. end_ms on a descriptor is advisory, and players do not stop at it.
    • Three conformance levels (L1, L2, L3) with 18 checks.

How to cite #

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

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

Questions this page does not answer: see the FAQ. To start: the quick start. To change it: Governance.