Skip to main content
Glama

Youtube Get Timestamped Transcript

youtube_get_timestamped_transcript

Fetch a YouTube video's transcript as timed segments, optionally translated.

Instructions

Fetch a YouTube video's transcript as timed segments, optionally translated.

Returns every caption segment as {text, start, duration}, where start is seconds from the video's beginning and duration is on-screen time (segments overlap, so duration is not speech length). Use this to build chapter lists or deep links (https://youtu.be/<video_id>?t=<start>); use youtube_get_transcript when you only need the words.

translate_to returns YouTube's translation into that language code (valid targets: youtube_list_transcript_languages), with the segment timings of the track it was made from. The words are YouTube's machine translation, not the creator's words — use it to read a video whose captions are in another language, and quote it as such. is_translated and translated_from report that provenance; is_generated is always true for a translation.

Long transcripts are truncated at RESPONSE_LIMIT by cumulative text length. next_cursor is the index of the next segment — pass it back to continue; null means you have all segments. Same caching and failure modes as youtube_get_transcript; this costs no Data API quota, translated or not, and a target language the video cannot be translated into is an INVALID_REQUEST error, not a transient one.

Input Schema

NameRequiredDescriptionDefault
cursorNo
video_idYes
languagesNo
translate_toNo

Output Schema

NameRequiredDescriptionDefault
languageYes
segmentsYes
video_idYes
truncatedYes
next_cursorYes
is_generatedYes
is_translatedNo
language_codeYes
translated_fromNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changedv0.4.0
    • addedInput schema / properties / translate_to
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • changedOutput schema / description
      Previous value: -"A slice of a transcript as timed segments. `next_cursor` is a segment index."New value: +"A slice of a transcript as timed segments. `next_cursor` is a segment index.\n\n`is_translated` / `translated_from` record provenance: when set, the segments are YouTube's\ntranslation of the `translated_from` track, not the creator's words."
    • addedOutput schema / properties / is_translated
      Added value: +{
      +  "default": false,
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / translated_from
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
  2. First observedv0.1.0

TDQS

A4.5/5.0
Behavior5/5

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

No annotations exist, and the description carries the full burden well: it discloses truncation at RESPONSE_LIMIT with a cursor continuation model, that the cost is zero Data API quota, that failure modes match youtube_get_transcript, and — importantly — that an untranslatable target language is a permanent INVALID_REQUEST rather than a retryable error. It also flags that translated words are YouTube's machine translation rather than creator speech, with provenance fields is_translated/translated_from.

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

Conciseness4/5

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

Front-loaded with the core purpose and return shape, then organized into translation, pagination, and cost/failure paragraphs. Dense but nearly every sentence adds decision-relevant information; the long-form prose is justified for a tool with no annotations and rich semantics, though it runs longer than strictly necessary.

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

Completeness4/5

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

An output schema exists, so the description needn't document return fields, yet it explains them anyway. Pagination, truncation, quota cost, and error classification are all covered. The gaps are the undocumented `languages` parameter and the absence of any note on authentication or per-video availability restrictions.

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 0%, so the description must compensate. It does so thoroughly for translate_to (valid targets, provenance, error behavior) and cursor (index of next segment, null means done), and implies video_id via the deep-link example. However, the `languages` array parameter is never mentioned in either the description or the schema, leaving one of four parameters entirely opaque.

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?

States a specific verb and resource ('Fetch a YouTube video's transcript as timed segments') and immediately differentiates from the sibling youtube_get_transcript. The return shape {text, start, duration} plus the translation variant makes the tool's identity unambiguous.

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?

Explicit routing: 'Use this to build chapter lists or deep links; use youtube_get_transcript when you only need the words.' It also names the when-for-translation case and points at youtube_list_transcript_languages as the source of valid targets. Exclusions and alternatives are both present.

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