Skip to main content
Glama

Transcribe audio or video

transcribe_audio

Use this when the user wants the words: speech in an audio or video file turned into text, from a podcast, interview, lecture, meeting or voice note. Accepts a file the user attached (file) or a direct https link to a media file such as .mp3, .m4a, .wav or .mp4 (url). Returns the transcript with speaker turns, plus a page with the full text and .txt, .srt and .vtt downloads. Short files finish in this call; longer ones return status "processing" and a transcription_id for transcription_status. Up to 1 hour per file. The first transcript needs no account; after that it asks for a Slice sign-in, and a signed-in person gets 2 transcripts a month, shared with the Slice website. Do not use when the user wants short video clips made from a video (start_episode does that), for YouTube, Spotify, Apple Podcasts or other web pages (they are pages, not files), for text already in the conversation, or for live audio.

Input Schema

NameRequiredDescriptionDefault
urlNoA direct https link to an audio or video file, e.g. https://example.com/episode.mp3. Not a web page.
fileNoAn audio or video file the user attached in the conversation.
waitNoDefault true: wait briefly so short files come back finished. False returns at once with a transcription_id.

Output Schema

NameRequiredDescriptionDefault
statusYes
messageYes
languageNoDetected language code, e.g. en.
downloadsNo
duplicateNoTrue when this is the transcript already made of the same file earlier: nothing new was started or counted. Do not send the file again.
file_nameNo
transcriptNoThe transcript in paragraphs, with speaker labels when there is more than one voice.
word_countNo
results_urlYesPage with the full transcript and downloads. No sign-in; share it only with people who should see the transcript.
duration_minutesNo
transcription_idYesPass to transcription_status or email_transcript.
transcript_truncatedNoTrue when only the first part is included here; the results page has all of it.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedOutput schema / properties / duplicate
      Added value: +{
      +  "description": "True when this is the transcript already made of the same file earlier: nothing new was started or counted. Do not send the file again.",
      +  "type": "boolean"
      +}
  2. First observed

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already cover the safety profile (readOnlyHint=false, openWorldHint=true, destructiveHint=false), and the description goes well beyond them: it discloses the speaker-turn output, the derived page with .txt/.srt/.vtt downloads, the async 'processing' + transcription_id path, the 1-hour file cap, and the auth/rate-limit model (first transcript anonymous, then sign-in, 2/month). That is genuinely rich behavioral context for a non-read-only tool.

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 trigger sentence, then inputs, then returns, then limits/auth, then exclusions — a sensible order. It is a single dense paragraph with some run-on stretches (the auth/quota sentence packs three facts), but almost every clause carries information an agent needs.

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 tool with async processing, auth quota, and a nested file object, the description covers everything an agent must know: input forms, supported formats, duration limit, synchronous vs polling outcome, and sibling routing. An output schema exists, yet the description still summarizes the return shape concisely.

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%, so the schema already documents all three parameters, which sets the baseline at 3. The description does add real value by framing file vs url as mutually exclusive input paths and listing supported container formats (.mp3, .m4a, .wav, .mp4), but it never mentions the 'wait' parameter, leaving a behaviorally significant toggle to the schema alone.

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 ('speech in an audio or video file turned into text') and scopes the input sources (podcast, interview, lecture, meeting, voice note). It also explicitly separates itself from siblings like start_episode and transcription_status, so an agent can pick it without opening a schema.

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?

Gives both positive triggers ('when the user wants the words') and a full exclusion list: no clip-making (start_episode does that), no YouTube/Spotify/Apple Podcasts pages, no text already in the conversation, no live audio. The alternatives are named rather than implied.

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