Skip to main content
Glama

Get transcript

get_transcript
Idempotent

Get the transcript of a YouTube video, a podcast episode (an RSS feed, an Apple Podcasts link, or an episode page that links its audio), or a direct link to an audio file, so you can quote, summarise or repurpose it. Pass url, or uploadUrl for a file the writer uploaded to Narrareach. For a feed or show, episode picks an episode by title or guid; the latest is used otherwise. Short sources come back ready with the text. Long audio is transcribed in the background: the result is status processing with a transcriptId, so call get_transcript_status with it every 20 seconds or so until it is ready. Spotify links cannot be transcribed. A transcript someone already requested is returned from the cache and does not count against the allowance. When the day's audio minutes are used up, podcast feed and Apple Podcasts links are refused, even for an episode already in the cache; cached YouTube videos, audio file links (with or without an extension) and uploads still work. Uses the connected writer's own daily transcript allowance (YouTube requests and audio minutes, reset at midnight UTC), not a team workspace owner's; available on the Revenue Writer plan and above. Counts as five requests against the rate limit.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlNoA YouTube video, podcast feed or episode, Apple Podcasts link, or direct https link to an audio file (MP3, M4A, WAV, Ogg, WebM or FLAC). Pass url or uploadUrl, not both.
episodeNoFor a podcast feed or show: the episode title or guid. Defaults to the latest episode.
maxCharsNoCharacters of transcript text to return. Defaults to 60,000; truncated is true when there is more.
uploadUrlNoThe URL of an audio or video file the writer uploaded to Narrareach (for example with upload_media). Only the uploader can read its transcript. Pass url or uploadUrl, not both.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
textNo
titleNo
cachedNo
statusYes
languageNo
sourceUrlNo
truncatedNo
sourceTypeNo
transcriptIdYes
durationSecondsNo
connectedAccountNo
pollAfterSecondsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare readOnly=false, idempotent=true, destructive=false; the description goes far beyond by disclosing cache reuse, that cached results don't consume allowance, per-source quota refusal rules, midnight-UTC reset, plan gating (Revenue Writer+), and that a call costs five rate-limit requests. It also explains the asynchronous processing contract (status processing + transcriptId).

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 purpose and accepted sources, and almost every sentence carries distinct operational information (async flow, cache, quota, rate limit). It is dense — the quota/plan/rate-limit tail is a long run-on that could be split for scanability, which keeps it from a 5.

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?

For a 4-parameter tool with an output schema, the description supplies everything an agent needs: input acceptance rules, the async polling path, failure modes (Spotify, exhausted allowance), and cost/plan constraints. Nothing material is left to inference.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description adds real meaning on top by explaining the url/uploadUrl exclusivity in operational terms and clarifying that episode defaults to the latest when omitted. It does not add anything beyond the schema for maxChars, which caps it below 5.

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 ('Get the transcript') and enumerates the exact source types accepted (YouTube video, podcast RSS, Apple Podcasts link, episode page, direct audio file). The named purpose (quote, summarise, repurpose) plus the explicit handoff to get_transcript_status makes it distinguishable from every sibling at a glance.

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?

Explicitly covers when to use url vs uploadUrl, how episode resolution works for feeds, what to do for long audio (poll get_transcript_status every ~20s), and a hard exclusion ('Spotify links cannot be transcribed'). It also states quota-exhaustion behaviour per source type, so an agent knows which inputs will still succeed.

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.

Resources