Skip to main content
Glama

Video metadata and captions

video_metadata
Read-onlyIdempotent

Use this when the user names one known video and wants its licence, attribution, metadata, captions or a direct file link. Pass ref: a Commons file title such as "File:Ocean_surface_waves_06.ogv", an Internet Archive identifier such as "cat_with_green_shining_eye" or its URL, or a YouTube watch URL. Returns download_url (the one link to give the user: a direct file, the file list when no video file is listed, or null), files (every direct video and caption file listed) and captions (caption files only, vtt or srt). A YouTube URL returns title and channel only, with no download and no caption file. An item with no free licence returns not_free and no link. Not for a topic search (use search_free_videos). We do not rip videos from social platforms or remove watermarks. A TikTok, Instagram, X, Douyin, Bilibili or Xiaohongshu link returns not_offered and is not fetched.

Input Schema

NameRequiredDescriptionDefault
refYesOne item. Example call: {"ref": "File:Ocean_surface_waves_06.ogv"}. Also a Commons page URL, an Internet Archive identifier ("cat_with_green_shining_eye") or details URL, or a YouTube watch URL

Output Schema

NameRequiredDescriptionDefault
refYesThe reference as given
errorNoPresent when status is not ok: a stable code, what went wrong and what to do next.
filesYesEvery video file (up to 6) and caption file (up to 4) the source lists, each with a direct link. Use it to offer another size or format
titleNo
statusYesok: record found. not_found: no such item. not_free: the item states no free licence, so no link is given. unavailable: the source did not answer, retry later. not_offered: a platform this service does not fetch
creatorNoCreator or YouTube channel, or null when not stated
licenceNoThe licence name exactly as the source record states it. Null for YouTube, which gives no reuse licence
captionsYesCaption files the source lists, each a direct link. Empty for Commons and YouTube
page_urlNoThe item's page on the source site
attributionNoReady to paste next to a reuse of the file
explanationNoWhy no download is given, for YouTube, not_free and not_offered answers
licence_urlNoLink to the licence text, empty when the source gives none, null for YouTube
download_urlNoThe one link to hand the user: a direct video file when download_kind is file, the item's file list when it is directory, and null when none (YouTube or a refusal)
licence_noteNoReminder that the licence is what the source states
captions_noteNoWhy captions are or are not listed
download_kindYesWhat download_url points to
thumbnail_urlNoPreview image, YouTube only

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • removedInput schema / examples
      Removed value: -[
      -  {
      -    "ref": "https://commons.wikimedia.org/wiki/File:Big_Buck_Bunny_4K.webm"
      -  }
      -]
    • removedOutput schema / properties / as_of
      Removed value: -{
      -  "description": "ISO 8601 time the data was published by its source or fetched from it. A cached answer keeps the time of its fetch.",
      -  "type": "string"
      -}
    • removedOutput schema / properties / source
      Removed value: -{
      -  "description": "Who the data comes from, to cite and to check it against.",
      -  "properties": {
      -    "name": {
      -      "type": "string"
      -    },
      -    "url": {
      -      "type": "string"
      -    }
      -  },
      -  "required": [
      -    "name",
      -    "url"
      -  ],
      -  "type": "object"
      -}
    • changedOutput schema / required
      Previous value: -[
      -  "status",
      -  "ref",
      -  "download_kind",
      -  "files",
      -  "captions",
      -  "as_of",
      -  "source"
      -]New value: +[
      +  "status",
      +  "ref",
      +  "download_kind",
      +  "files",
      +  "captions"
      +]
  2. Changed6 schema fields changed
    • changedOutput schema / properties / as_of / description
      Previous value: -"Date of this answer (UTC, YYYY-MM-DD)"New value: +"ISO 8601 time the data was published by its source or fetched from it. A cached answer keeps the time of its fetch."
    • changedOutput schema / properties / source / description
      Previous value: -"The source read, with its link"New value: +"Who the data comes from, to cite and to check it against."
    • addedOutput schema / properties / source / properties
      Added value: +{
      +  "name": {
      +    "type": "string"
      +  },
      +  "url": {
      +    "type": "string"
      +  }
      +}
    • addedOutput schema / properties / source / required
      Added value: +[
      +  "name",
      +  "url"
      +]
    • changedOutput schema / properties / source / type
      Previous value: -"string"New value: +"object"
    • changedOutput schema / required
      Previous value: -[
      -  "status",
      -  "ref",
      -  "download_kind",
      -  "files",
      -  "captions",
      -  "source",
      -  "as_of"
      -]New value: +[
      +  "status",
      +  "ref",
      +  "download_kind",
      +  "files",
      +  "captions",
      +  "as_of",
      +  "source"
      +]
  3. Changed1 schema field changed
    • addedInput schema / examples
      Added value: +[
      +  {
      +    "ref": "https://commons.wikimedia.org/wiki/File:Big_Buck_Bunny_4K.webm"
      +  }
      +]
  4. Changed38 schema fields changed
    • changedInput schema / properties / ref / description
      Previous value: -"A Wikimedia Commons file title or page URL, an Internet Archive identifier or details URL, or a YouTube watch URL"New value: +"One item. Example call: {\"ref\": \"File:Ocean_surface_waves_06.ogv\"}. Also a Commons page URL, an Internet Archive identifier (\"cat_with_green_shining_eye\") or details URL, or a YouTube watch URL"
    • addedInput schema / properties / ref / examples
      Added value: +[
      +  "File:Ocean_surface_waves_06.ogv",
      +  "cat_with_green_shining_eye",
      +  "https://www.youtube.com/watch?v=jNQXAC9IVRw"
      +]
    • addedOutput schema / properties / as_of / description
      Added value: +"Date of this answer (UTC, YYYY-MM-DD)"
    • addedOutput schema / properties / attribution / description
      Added value: +"Ready to paste next to a reuse of the file"
    • addedOutput schema / properties / captions / description
      Added value: +"Caption files the source lists, each a direct link. Empty for Commons and YouTube"
    • addedOutput schema / properties / captions / items / properties / format / description
      Added value: +"Caption file format: vtt (WebVTT) or srt (SubRip)"
    • addedOutput schema / properties / captions / items / properties / format / enum
      Added value: +[
      +  "vtt",
      +  "srt"
      +]
    • addedOutput schema / properties / captions / items / properties / name / description
      Added value: +"Caption file name"
    • addedOutput schema / properties / captions / items / properties / url / description
      Added value: +"Direct link to the caption file"
    • addedOutput schema / properties / captions / items / properties / url / format
      Added value: +"uri"
    • addedOutput schema / properties / captions / maxItems
      Added value: +4
    • addedOutput schema / properties / captions_note / description
      Added value: +"Why captions are or are not listed"
    • addedOutput schema / properties / creator / description
      Added value: +"Creator or YouTube channel, or null when not stated"
    • addedOutput schema / properties / download_kind / description
      Added value: +"What download_url points to"
    • addedOutput schema / properties / download_url / description
      Added value: +"The one link to hand the user: a direct video file when download_kind is file, the item's file list when it is directory, and null when none (YouTube or a refusal)"
    • addedOutput schema / properties / download_url / format
      Added value: +"uri"
    • addedOutput schema / properties / error / properties / code / description
      Added value: +"Stable code: not_offered, no_results, not_found, not_free or source_unavailable"
    • addedOutput schema / properties / error / properties / hint / description
      Added value: +"The next step: which tool to call or what input to change"
    • addedOutput schema / properties / error / properties / message / description
      Added value: +"What went wrong, in one or two sentences"
    • addedOutput schema / properties / explanation / description
      Added value: +"Why no download is given, for YouTube, not_free and not_offered answers"
    • addedOutput schema / properties / files / description
      Added value: +"Every video file (up to 6) and caption file (up to 4) the source lists, each with a direct link. Use it to offer another size or format"
    • addedOutput schema / properties / files / items / properties / bytes / description
      Added value: +"File size in bytes, or null when the source does not state it"
    • addedOutput schema / properties / files / items / properties / kind / description
      Added value: +"video: a playable video file. caption: a subtitle file"
    • addedOutput schema / properties / files / items / properties / mime / description
      Added value: +"Media type or the source's format name, or null when not stated"
    • addedOutput schema / properties / files / items / properties / name / description
      Added value: +"File name in the source record"
    • addedOutput schema / properties / files / items / properties / url / description
      Added value: +"Direct link to this file"
    • addedOutput schema / properties / files / items / properties / url / format
      Added value: +"uri"
    • addedOutput schema / properties / files / maxItems
      Added value: +10
    • addedOutput schema / properties / licence / description
      Added value: +"The licence name exactly as the source record states it. Null for YouTube, which gives no reuse licence"
    • addedOutput schema / properties / licence_note / description
      Added value: +"Reminder that the licence is what the source states"
    • addedOutput schema / properties / licence_url / description
      Added value: +"Link to the licence text, empty when the source gives none, null for YouTube"
    • addedOutput schema / properties / page_url / description
      Added value: +"The item's page on the source site"
    • addedOutput schema / properties / page_url / format
      Added value: +"uri"
    • addedOutput schema / properties / ref / description
      Added value: +"The reference as given"
    • addedOutput schema / properties / source / description
      Added value: +"The source read, with its link"
    • addedOutput schema / properties / status / description
      Added value: +"ok: record found. not_found: no such item. not_free: the item states no free licence, so no link is given. unavailable: the source did not answer, retry later. not_offered: a platform this service does not fetch"
    • addedOutput schema / properties / thumbnail_url / description
      Added value: +"Preview image, YouTube only"
    • addedOutput schema / properties / thumbnail_url / format
      Added value: +"uri"
  5. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations, the description explains return behavior in useful detail: download_url selection, files and captions contents, YouTube-only title/channel limitation, not_free licensing outcomes, and refusal to fetch social-platform links. This is substantial behavioral context for a read-only lookup tool.

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

Conciseness5/5

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

The description is front-loaded with the core use case, then gives ref formats, return behavior, exclusions and unsupported platforms. Each sentence contributes useful routing or behavioral information without waste.

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

Completeness5/5

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

Although an output schema exists, the description still provides enough context about return shapes and edge cases for correct invocation. Combined with annotations and schema, it leaves no significant gap for an agent calling this tool.

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 coverage is 100% and the single ref parameter is already well documented with examples. The description repeats the same accepted formats rather than adding much beyond the schema, so the baseline 3 is appropriate.

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 states a specific retrieval action for a known video, covering licence, attribution, metadata, captions and direct file links. It clearly distinguishes this from topic search by naming search_free_videos and identifies unsupported social-platform links, so an agent can differentiate it from siblings.

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

Usage Guidelines5/5

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

It gives explicit when-to-use guidance: one known video, with accepted ref forms. It also states when not to use it, including topic search via search_free_videos and social-platform links that return not_offered.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.