Skip to main content
Glama

process_media

Idempotent

Ingest a local video or audio file and transcribe its speech, extract keyframes, OCR on-screen text, and diarize speakers to make the media queryable.

Instructions

Ingest a LOCAL video or audio file and make it queryable: validates the file, transcribes speech locally (whisper), extracts scene-change keyframes, OCRs on-screen text, resolves the wall-clock start time, and (opt-in) labels who said what via local speaker diarization. Returns a compact summary (job_id, media info, wall_clock, transcript preview, speaker roster when diarized) — full data stays on disk and is served lazily by the other tools. Idempotent by content hash: re-calling on an already-processed file returns instantly. For MULTI-PERSON recordings (meetings, interviews, calls) diarize=true is part of a proper analysis — pass it even when the user only asks for a summary. When NOT to use: to re-fetch data you already processed (use the retrieval tools), or for URLs — local file paths only. Examples:

  • process_media(path="/Users/sam/Desktop/bug-repro.mov") — narrated screencast, defaults are right

  • meetings: model="large-v3-turbo" + vocabulary=<attendees, terms> + num_speakers=N — turbo's extra cost is trivial

  • process_media(path="/tmp/standup.m4a") — audio-only: transcript tools work, frame tools will error

  • process_media(path="/rec/panel.mov", diarize=true, num_speakers=4) — headcount known? ALWAYS pass it: best accuracy

  • job already processed + diarize=true → amend re-runs ONLY diarization (whisper reused; long files: minutes)

  • error mentions [diarization] → the extra is missing: install via uvx "talkthrough-mcp[diarization]"

  • know the attendees? process_media(path=..., vocabulary="Anastasia, Evgenii, OKR") — names+jargon survive STT

  • user: "analyze/summarize this meeting" → include diarize=true — speaker structure is not optional extra credit

  • noisy threshold roster (clusters ≫ people)? ASK your user for the real headcount, then re-run with num_speakers=N

  • cap_hit or sampling_interval_s in summary → for slide hunts raise TALKTHROUGH_MAX_FRAMES or use extract_frame

  • summary shows wall_clock=null → ask when recording started, re-call with recorded_at=... and force=true

  • transcript garbled or language_probability low → re-call with model="large-v3-turbo" (or language="ru") + force=true

  • after success, do NOT dump everything — continue with get_transcript / get_moment / search on the job_id

  • anti-example: frames from an already-processed job → get_frames(job_id=...), never process_media again

  • anti-example: YouTube/URL input → unsupported in v1; have the user download the file first

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pathYes
forceNo
modelNo
diarizeNo
languageNo
vocabularyNo
recorded_atNo
num_speakersNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Behavior5/5

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

Beyond the idempotentHint annotation, it explains idempotency via content hash, instant returns, and amend re-runs that only diarize. It discloses file-locality, lazy serving from disk, audio-only limitations (frame tools will error), and installation error messages, which are not implied by annotations.

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?

The description is well-structured with a front-loaded summary, a dedicated 'When NOT to use' section, and a long list of examples. While most examples add distinct value, the message about diarize=true for meetings is repeated several times, making it somewhat verbose—still, it earns a high score for clear organization.

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?

Covers workflow end-to-end: input constraints, processing steps, return values, idempotency, error handling, optional parameters, and post-success handoff to sibling tools. The output schema exists, so return values are not over-explained, but the description still provides the necessary operational context.

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

Parameters5/5

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

Schema has 0% description coverage, and the description compensates by explaining each parameter's purpose through examples: path, model='large-v3-turbo', diarize=true for multi-person, vocabulary for names/jargon, num_speakers for accuracy, recorded_at with force=true for wall-clock null, and language for garbled transcripts. It clarifies behavior like force, defaults, and error conditions.

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 opens with a specific verb and resource: 'Ingest a LOCAL video or audio file and make it queryable' and enumerates the full processing pipeline (validate, transcribe, keyframes, OCR, wall-clock, diarization). It also distinguishes from siblings by explicitly directing re-fetching to retrieval tools and frame extraction to extract_frame/get_frames.

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?

Provides an explicit 'When NOT to use' section and multiple anti-examples ('never process_media again' for frames, URL unsupported). It gives concrete selection guidance: use retrieval tools for already-processed data, use get_frames for frames, and includes decision rules for diarize/model when analyzing meetings.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/korovin-aa97/talkthrough-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server