Skip to main content
Glama

ffmpeg-mcp-server

CI Release License: MIT npm version Glama

A Model Context Protocol (MCP) server that gives AI tools access to FFmpeg and FFprobe to process video and audio locally.

Supports cross-platform GPU hardware encoding (Apple Silicon, NVIDIA NVENC, Intel QuickSync, AMD AMF), live progress updates via MCP progress tokens, instant cancellation via AbortSignal, and inlines image previews directly for multimodal vision models.


Why This Exists

When AI agents process media, they often hallucinate invalid flags, syntax errors, or incompatible pixel formats.

This server provides 17 typed tools using Zod schemas. The AI passes parameters (such as { inputPath: "video.mov", preset: "web_mp4" }), and the server runs the valid FFmpeg command locally with proper error handling, hardware acceleration, and progress notifications.


Related MCP server: ffmpeg-mcp

Key Features

  • Universal Hardware Acceleration: Automatically detects and leverages hardware encoders across macOS (VideoToolbox), Linux/Windows GPUs (NVIDIA NVENC, Intel QuickSync, AMD AMF, and VA-API) for 5x–20x faster exports with low CPU usage.

  • Real-time Progress Reporting: Emits live percentage updates via standard MCP progress tokens (notifications/progress), enabling progress bars in modern AI clients.

  • Instant Cancellation: Listens to client AbortSignal events to immediately terminate child FFmpeg processes when a generation is stopped.

  • Multimodal Vision Previews: Inlines base64 image data for thumbnails, audio waveforms, and multi-frame contact sheets so vision models (Claude 3.7, GPT-4o, Gemini) can "see" media content.

  • Social Formats & Automation: Reformats landscape video to 9:16 vertical video with blurred backgrounds, burns customizable hardcoded subtitles, and stacks top/bottom split-screen reels for TikTok and Instagram Reels.

  • Audio Engineering: Normalizes loudness to broadcast/streaming standards (EBU R128 / -16 LUFS), cleans vocal audio with 80Hz rumble removal, and trims dead air while preserving lip-sync.


Included Tools (17 Total)

Tool

Description

Key Parameters

media_probe

Inspects media files with ffprobe. Returns metadata, streams, codecs, resolution, and duration as JSON.

inputPath

media_convert

Converts video and audio formats. Includes presets for web MP4, WebM, and animated GIF with GPU acceleration.

inputPath, outputPath, preset, crf, resolution, fps, hardwareAcceleration

trim_media

Cuts a segment from a video or audio file using stream copy or re-encoding.

inputPath, outputPath, startTime, endTime, duration, accurateReencode

extract_audio

Rips audio tracks from video. Includes a 16kHz mono WAV preset for Whisper speech recognition.

inputPath, outputPath, format, bitrate

extract_thumbnail

Captures a still image at a timestamp or midpoint. Returns base64 image data for vision models.

inputPath, outputPath, timestamp, resolution, includeBase64

compress_video

Compresses video to fit target sizes (such as GitHub PRs under 10MB or Discord under 25MB).

inputPath, outputPath, targetSizeMB, preset, crf, maxWidth, hardwareAcceleration

reformat_aspect_ratio

Changes video ratio to 9:16 vertical, 1:1 square, or 4:5 portrait with blurred borders or center crop.

inputPath, outputPath, targetRatio, mode, blurAmount, padColor, hardwareAcceleration

create_split_screen

Stacks two videos top-and-bottom (9:16 Reels/TikTok) or side-by-side with audio mixing and subtitles.

firstVideoPath, secondVideoPath, outputPath, layout, audioSource, subtitlesPath

trim_silence

Detects and removes silent pauses from recordings while preserving video & audio lip-sync.

inputPath, outputPath, mode, thresholdDb, minDurationSeconds

concat_media

Joins multiple video or audio files in order using stream copy or re-encoding.

inputPaths, outputPath, mode

generate_waveform

Generates a PNG waveform image. Returns base64 image data for vision models.

inputPath, outputPath, width, height, color, scale, includeBase64

add_subtitles

Embeds SRT or VTT subtitle tracks into MP4/MKV video files without re-encoding video.

videoPath, subtitlesPath, outputPath, language, title

burn_subtitles (New)

Hardcodes subtitles directly onto video frames with customizable font size, colors, and margins.

videoPath, subtitlesPath, outputPath, fontSize, fontColor, outlineColor, marginV

extract_keyframes (New)

Extracts multiple representative frames across the video and generates a contact sheet grid for vision AI.

inputPath, outputPath, count, layout, includeBase64

normalize_audio (New)

Normalizes audio loudness using EBU R128 (default -16 LUFS) with optional speech clarity high-pass filter.

inputPath, outputPath, targetLufs, targetPeakDb, voiceClarity

add_overlay (New)

Places a watermark image or logo PNG over video with customizable corner position, scale, and opacity.

videoPath, overlayPath, outputPath, position, padding, scaleWidth, opacity

change_speed

Adjusts playback speed (such as 2x fast forward or 0.5x slow motion) with pitch correction.

inputPath, outputPath, speed, muteAudio


MCP Resources & Prompts

Resources

  • media://capabilities: Inspects local FFmpeg installation, active version, detected hardware accelerators (VideoToolbox, NVENC, QSV, AMF, VAAPI), and supported video encoders.

  • media://presets: Standard reference table of social aspect ratios, platform upload file size limits, and broadcast audio loudness targets.

Prompts

  • social_clip_generator: Interactive workflow that turns raw landscape video into vertical shorts with blurred background padding, trimmed silence, and hardcoded captions.

  • whisper_audio_prep: Standard pipeline for extracting 16kHz mono WAV audio and normalizing loudness for speech-to-text models.


Requirements

  • Node.js >= 18.0.0

  • FFmpeg & FFprobe installed locally:

    • macOS: brew install ffmpeg

    • Linux (Ubuntu/Debian): sudo apt update && sudo apt install ffmpeg libass-dev

    • Windows: winget install Gyan.FFmpeg or choco install ffmpeg


Installation

Quick Start (Claude Desktop, Cursor, Antigravity)

Run directly with npx (no manual cloning or building required):

{
  "mcpServers": {
    "ffmpeg": {
      "command": "npx",
      "args": ["-y", "@ash_j1997/ffmpeg-mcp-server"]
    }
  }
}

Configuration File Locations:

  • Claude Desktop (macOS): ~/Library/Application Support/Claude/claude_desktop_config.json

  • Claude Desktop (Windows): %APPDATA%\Claude\claude_desktop_config.json

  • Antigravity IDE: ~/.gemini/config/mcp_config.json

  • Cursor / Windsurf: Add as a stdio server with command npx and args ["-y", "@ash_j1997/ffmpeg-mcp-server"]


Local Development & Testing

  1. Install dependencies:

    npm install
  2. Run build and automated test suite:

    npm test

License

MIT © Ashutos1997

Available Tools

17 tools
add_overlayB

Place a watermark image, logo PNG, or branding graphic over a video with customizable position, padding, scaling, and opacity.

ParametersJSON Schema
NameRequiredDescriptionDefault
opacityNoOverlay opacity from 0.05 (subtle watermark) to 1.0 (fully opaque). Default: 1.0.
paddingNoMargin padding in pixels from the edge. Default: 20.
positionNoCorner or screen placement for the overlay. Default: 'bottom_right'.bottom_right
videoPathYesPath to the base video file.
outputPathYesDestination path for the output video (.mp4 or .mov).
scaleWidthNoOptional width in pixels to scale the overlay, keeping its original aspect ratio (e.g. 150).
overlayPathYesPath to the watermark, logo, or overlay image (.png, .jpg, or .webp).
hardwareAccelerationNoUse hardware-accelerated video encoding when available. Default: true.

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It says the tool places an image over a video, but does not clarify whether the source is modified or a new file is created, overwrite behavior, permission requirements, encoding implications, or return behavior.

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 a single front-loaded sentence with no wasted clauses. It efficiently states the capability and the main customizable dimensions.

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

Completeness3/5

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

The schema is rich and fully documented, and outputPath conveys destination behavior. However, with no annotations and no output schema, the description should say more about the result of the operation, such as whether it returns the output path, how existing files are handled, or what hardwareAcceleration changes.

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 description coverage is 100%, so all eight parameters are already documented with meaning, defaults, ranges, and format expectations. The description repeats position, padding, scaling, and opacity at a high level without adding syntax or constraints beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific action (place an overlay) and specific resource types (watermark, logo PNG, branding graphic) over a video. It is clear enough to distinguish this from subtitle or audio tools, but it does not explicitly contrast itself with siblings such as burn_subtitles or create_split_screen.

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

Usage Guidelines2/5

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

The description implies a branding/watermarking use case, but gives no explicit when-to-use guidance, prerequisites, or alternatives. It does not say when to choose add_overlay instead of related tools such as burn_subtitles or create_split_screen.

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

add_subtitlesA

Embed an SRT or VTT subtitle track into a video container (mov_text for MP4, srt for MKV) without re-encoding the video stream.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoSubtitle track label displayed in video playersEnglish
languageNoISO 639-2 three-letter language code (e.g. 'eng', 'spa', 'fra', 'deu')eng
videoPathYesPath to the source video file
outputPathYesTarget output video path (.mp4, .mkv, or .mov)
subtitlesPathYesPath to subtitle file (.srt or .vtt)

TDQS

A3.5/5.0
Behavior3/5

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

No annotations exist, so the description must carry the behavioral load; it usefully discloses no re-encoding and container-to-codec mapping. It omits write/overwrite semantics, error conditions, and .mov handling (which appears only in the schema), leaving meaningful gaps for a mutation 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?

A single, front-loaded sentence packs the essential verb, resource, formats, and key constraint with no wasted words.

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

Completeness3/5

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

Given a rich parameter schema and no output schema, the description is adequate for invocation, but for a mutation tool with no annotations it should ideally flag output overwrite behavior and explicitly distinguish itself from burn_subtitles.

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 description coverage is 100%, so the baseline is 3. The description reinforces accepted subtitle formats and adds container-codec behavior, but adds little parameter-specific meaning beyond what the schema already documents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Embed') and resource ('subtitle track into a video container'), and the 'without re-encoding' phrase implicitly separates it from hard-burn tools. However, it does not name the sibling burn_subtitles, so an agent must infer the distinction rather than being explicitly routed.

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

Usage Guidelines3/5

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

Provides implied usage (soft-subtitle embedding, accepted formats) but never states when to choose this over burn_subtitles or other subtitle/media tools, nor any exclusions. No explicit when/when-not guidance is present.

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

burn_subtitlesA

Hardcode/burn subtitles directly into video frames with customizable font size, colors, and positioning. Unlike soft subtitles, burned subtitles render on all platforms including TikTok, Instagram Reels, and YouTube Shorts.

ParametersJSON Schema
NameRequiredDescriptionDefault
marginVNoVertical margin distance in pixels from the bottom edge. Default: 35.
fontSizeNoSubtitle font size in points. Default: 24.
fontColorNoPrimary subtitle text color: 'white', 'yellow', 'cyan', or ASS hex e.g. '&H00FFFFFF'. Default: 'white'.white
videoPathYesPath to the source video file.
outputPathYesTarget output video path (.mp4, .mov, or .mkv).
outlineColorNoSubtitle border/outline color: 'black', 'white', or ASS hex. Default: 'black'.black
outlineWidthNoOutline thickness in pixels. Default: 2.
subtitlesPathYesPath to the subtitle file (.srt, .vtt, or .ass) to burn into the video.
hardwareAccelerationNoUse hardware-accelerated video encoding when available. Default: true.

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. It discloses that subtitles are physically burned into frames and render across platforms, but it omits important behavior such as whether the source video is preserved, overwrite behavior, processing time, permissions, and error handling.

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 two focused sentences with zero waste. The core action is front-loaded, and the platform compatibility note provides useful supporting context without being verbose.

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

Completeness3/5

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

For a 9-parameter media-processing tool with no annotations and no output schema, the description covers purpose and platform benefit, and the schema fully documents parameters. However, it does not describe return values, source/output file behavior, or processing side effects, leaving some contextual gaps.

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?

The schema has 100% description coverage, so all nine parameters are already documented. The description mentions font size, colors, and positioning generally, but adds no parameter-level detail beyond what the schema provides, making the baseline score appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action and target: 'Hardcode/burn subtitles directly into video frames.' It also distinguishes burned subtitles from soft subtitles conceptually, though it does not explicitly name the sibling tool add_subtitles.

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

Usage Guidelines4/5

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

It gives clear usage context by explaining that burned subtitles render on all platforms, including TikTok, Instagram Reels, and YouTube Shorts. However, it does not explicitly direct users to add_subtitles for soft subtitles or state exclusions and prerequisites.

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

change_speedB

Change video and audio playback speed (such as 2x for fast forward or 0.5x for slow motion) with pitch correction.

ParametersJSON Schema
NameRequiredDescriptionDefault
speedYesPlayback speed multiplier (e.g., 2.0 for 2x fast-forward/timelapse, 0.5 for slow-motion)
inputPathYesPath to the source video or audio file
muteAudioNoWhether to strip audio track completely
outputPathYesTarget output file path

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It usefully states that pitch correction is applied, which is a meaningful behavioral trait beyond a simple speed change. However, it omits important mutation details such as whether an existing output file is overwritten, what formats are supported, and how the muteAudio option interacts with pitch correction.

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 a single front-loaded sentence with zero waste. It names the action, media types, example values, and a key behavioral note (pitch correction) without unnecessary elaboration.

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

Completeness3/5

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

For a file-transforming tool with no annotations and no output schema, the description is minimally adequate but leaves out important context: overwrite behavior, supported input/output formats, and how muteAudio affects the result. The rich schema covers parameters, but the behavioral completeness is still thin.

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 all four parameters are already documented in the schema, including speed examples and the muteAudio flag. The description repeats the speed examples and adds 'pitch correction,' but does not add meaningful semantics for inputPath, outputPath, or muteAudio beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: changing video and audio playback speed, with examples like 2x fast forward and 0.5x slow motion. It is clearly distinct from sibling media tools, but it does not explicitly contrast itself with alternatives such as trim_media or media_convert.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives. Sibling tools like media_convert, trim_media, and compress_video are not mentioned, so the agent must infer the use case from the tool name and description alone.

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

compress_videoA

Compress video files to fit upload limits (such as GitHub PRs under 10MB or Discord under 25MB) using target file sizes or CRF quality levels. Does not modify the original file.

ParametersJSON Schema
NameRequiredDescriptionDefault
crfNoQuality value between 18 (higher quality) and 45 (smaller file). Overrides preset.
presetNoPreset when targetSizeMB is not set: 'github_pr', 'discord', 'email', 'balanced', or 'high_quality'. Default: 'balanced'.balanced
maxWidthNoMaximum video width in pixels, such as 1280 for 720p. Keeps aspect ratio.
inputPathYesPath to the source video file (e.g. './recordings/demo.mov')
outputPathYesDestination path for the compressed MP4 file (e.g. './recordings/demo_compressed.mp4')
targetSizeMBNoTarget output size in megabytes, such as 9.5 for GitHub or 24 for Discord. Computes bitrates from duration.
hardwareAccelerationNoUse hardware-accelerated video encoding (VideoToolbox, NVENC, QSV, etc.) when available. Default: true.

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does disclose the key safety trait: 'Does not modify the original file,' implying a new output file is written. It omits other relevant behavior such as processing cost/time, requirements on the source file, and how the preset/CRF/targetSizeMB inputs interact or which wins.

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?

Two tightly written sentences with the purpose and the non-destructive guarantee front-loaded; no filler and every clause carries information.

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?

For a 7-parameter tool with complete schema descriptions and no output schema, the description covers the what, the why, and the safety guarantee. The only real gap is the precedence/interaction between preset, crf, and targetSizeMB, which the schema only partially signals via 'Overrides preset.'

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 3 is the baseline. The description goes slightly beyond by tying the compression goals to real size budgets (GitHub <10MB, Discord <25MB), which gives the agent intuition for choosing targetSizeMB or a preset over a raw CRF value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Compress video files') plus a concrete goal (fit upload limits) and the two mechanisms available (target file sizes, CRF quality levels). It does not, however, position itself against close siblings like media_convert or reformat_aspect_ratio, which an agent must choose between.

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

Usage Guidelines4/5

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

Gives clear situational context — compressing for GitHub PRs under 10MB or Discord under 25MB — which implies when to reach for it. It stops short of naming alternatives or stating exclusions (e.g., 'for plain format conversion use media_convert instead').

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

concat_mediaA

Join multiple video or audio files in order into a single file. Uses stream copy for matching files or re-encodes when formats differ.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoConcatenation mode. 'lossless' uses stream copy without quality loss (inputs must share codecs). 'reencode' normalizes differing resolutions/codecs.lossless
inputPathsYesList of media files to concatenate in sequential order
outputPathYesTarget output file path

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the burden, and it does disclose the key behavioral trait: stream copy versus re-encoding and the quality/codec consequences. However, it omits what happens to an existing output file, whether re-encode is slower, and how codec mismatches in lossless mode are reported.

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?

Two tight sentences, action first, mechanism second, with zero redundant phrasing. Nothing could be removed without losing information.

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?

For a three-parameter tool with a fully documented schema and no output schema, the description covers the essential behavior and the mode trade-off. Remaining gaps (overwrite semantics, return value) are modest given the rich schema.

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 description coverage is 100% and the enum for mode is fully documented in the schema, so the baseline is 3. The description's 'in order' and 're-encodes when formats differ' echo but do not extend the schema's parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (join) and resource (multiple video/audio files) plus the result (single file), which distinguishes it from siblings like media_convert or trim_media that transform rather than combine. It stops short of naming an alternative explicitly, but the operation is unambiguous.

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

Usage Guidelines3/5

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

The second sentence implies when each internal strategy applies (matching files vs differing formats), which is useful, but it never says when to choose concat_media over media_convert, create_split_screen, or repeated trim operations. Usage is inferable rather than stated.

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

create_split_screenB

Combine two video files into a split-screen video. Stacks clips vertically (1080x1920 for Reels and TikTok) or places them side-by-side. Supports audio mixing and subtitle embedding.

ParametersJSON Schema
NameRequiredDescriptionDefault
layoutNoSplit layout: 'vertical_9_16' (1080x1920 stacked top/bottom for Reels and TikTok), 'horizontal_16_9' (1920x1080 side-by-side), or 'square_1_1' (1080x1080 stacked). Default: 'vertical_9_16'.vertical_9_16
outputPathYesDestination path for the split-screen output file (e.g. './reel.mp4').
audioSourceNoAudio track selection: 'mix' (blends audio from both videos), 'first' (uses only top/left audio), 'second' (uses only bottom/right audio), or 'mute'. Default: 'mix'.mix
subtitlesPathNoOptional path to an .srt or .vtt subtitle file to embed into the output video.
firstVideoPathYesPath to the top video (vertical layout) or left video (horizontal layout).
secondVideoPathYesPath to the bottom video (vertical layout) or right video (horizontal layout).
hardwareAccelerationNoUse hardware-accelerated video encoding (VideoToolbox, NVENC, QSV, etc.) when available. Default: true.

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden, yet it omits the operationally important traits: whether an existing file at outputPath is overwritten, how mismatched clip durations or resolutions are handled, and roughly how long/reliably a two-input encode completes. It does disclose the composition model (stacked vs side-by-side, audio mixing, subtitle embedding), which is why it is not a 1.

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?

Two sentences with zero filler: the core action and output framing come first, capability details second. Nothing is repeated and every clause carries information.

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

Completeness3/5

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

For a 7-parameter, file-writing tool with no annotations and no output schema, the description is adequate on composition but silent on the return value (does it yield the output path or nothing?), overwrite behavior, and failure modes. An agent could call it correctly but not predict its side effects.

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 every parameter, including both enums and their defaults, is already documented in the schema. The description restates the layout and audio behavior in prose but adds no new constraints, formats, or edge cases, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource — 'Combine two video files into a split-screen video' — plus the spatial arrangement options, which clearly separates it from a plain concat_media call. It never names a sibling or states the boundary explicitly, so an agent must infer the distinction from the tool name alone.

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

Usage Guidelines3/5

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

Usage is only implied via the mention of Reels/TikTok and the layout options; there is no statement of when to pick this over concat_media, add_overlay, or reformat_aspect_ratio, and no prerequisites (e.g., matching durations, codec compatibility) are called out.

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

extract_audioA

Extract an audio track from a video file into a standalone audio file. Supports the 'whisper_wav' preset (16kHz mono WAV) for speech recognition models, plus MP3, AAC, FLAC, and stream copy.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoAudio format: 'whisper_wav' (16kHz mono WAV for Whisper), 'mp3', 'aac', 'flac', or 'copy' (extract without re-encoding). Default: 'mp3'.
bitrateNoTarget audio bitrate for MP3 or AAC (e.g. '128k', '192k', '320k').
inputPathYesPath to the source video or audio file.
outputPathYesDestination path for the output audio file (e.g. './extracted.wav' or './audio.mp3').

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It usefully discloses that stream copy extracts without re-encoding and that whisper_wav produces 16kHz mono WAV for speech recognition. It does not address overwrite behavior, failure modes when no audio track exists, or file operation semantics, leaving meaningful behavioral gaps.

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 two front-loaded sentences with no wasted wording. The primary action is stated first, followed by concise format support details.

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?

For a moderately complex file-extraction tool with fully described parameters but no annotations or output schema, the description covers purpose and format behavior well. It could be more complete by mentioning return behavior or overwrite semantics, but it provides enough to call the tool correctly.

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 description coverage is 100%, so the schema already documents all four parameters thoroughly. The description reinforces the format options and whisper preset, but adds little beyond what the schema already states, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: extract an audio track from a video file into a standalone audio file. It names supported formats including the whisper_wav preset, making the tool's function clear. It does not explicitly distinguish itself from siblings like media_convert or normalize_audio, so it falls short of a 5.

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

Usage Guidelines3/5

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

Usage is implied by the extraction scenario and the note that whisper_wav is for speech recognition models. However, there is no explicit guidance on when to use this tool versus media_convert or normalize_audio, and no exclusions or prerequisites are stated.

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

extract_keyframesB

Extract multiple representative frames across a video's timeline. In 'montage' mode, merges frames into a single contact-sheet grid image and inlines base64 for vision models to inspect the whole video at once.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoNumber of representative frames to extract across the video timeline. Default: 6.
layoutNoOutput format: 'montage' combines all frames into a single contact-sheet grid image for vision models; 'individual' exports separate frame images. Default: 'montage'.montage
inputPathYesPath to the source video file.
outputPathYesDestination image path (e.g. './keyframes_grid.png' or './frames/frame_%02d.jpg').
includeBase64NoInline base64 image data in response for vision models. Default: true.

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully discloses that montage mode merges frames into a contact-sheet grid and inlines base64, but it does not state that the tool writes files, how outputPath is handled, or whether existing files are overwritten.

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 compact and front-loaded, with the core extraction purpose stated first and the montage/base64 detail following efficiently. It is appropriately sized for a tool with a fully documented schema.

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

Completeness3/5

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

The schema is rich and covers all parameters, and there is no output schema, so the description need not explain return values. However, for a file-producing media tool with no annotations, it should say more about output behavior, individual mode, or file overwrite semantics.

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 description coverage is 100%, so the schema already documents all five parameters, including defaults, enum values, and paths. The description reinforces montage mode and base64 usage but does not add new parameter-level meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: extract representative frames across a video timeline. It also clarifies the montage behavior, distinguishing it somewhat from a single-thumbnail tool, but it does not explicitly name sibling alternatives such as extract_thumbnail.

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

Usage Guidelines3/5

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

Usage is implied through the mention of vision models inspecting the whole video at once, but there is no explicit guidance on when to choose this over extract_thumbnail or when to prefer individual versus montage output.

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

extract_thumbnailA

Capture a single still image from a video. Returns the saved image path and inlined base64 image data so vision models can inspect the frame.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputPathYesPath to the source video file.
timestampNoTimestamp to capture, such as '00:00:05', '10', or 'midpoint' for the middle frame. Default: '00:00:01'.
outputPathYesDestination image path ending in .png or .jpg (e.g. './thumb.png').
resolutionNoOptional scaled size formatted as 'WIDTHxHEIGHT', such as '1280x720'. Defaults to source resolution.
includeBase64NoReturn base64 image data in response for vision models. Default: true.

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It does disclose the response shape well – a saved file path plus inlined base64 for vision models – which is genuinely useful. However, it omits write semantics to outputPath (overwrite? create directories?), failure modes for invalid timestamps, and any size/cost implications of base64 inlining, which matters for a file-writing tool with zero annotation coverage.

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?

Two sentences, front-loaded with the action and then the return contract. Every clause earns its place and nothing is padded.

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

Completeness3/5

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

Purpose and return values are covered, which offsets the missing output schema. But with no annotations and a file-writing tool, the definition leaves gaps an agent needs: overwrite/directory behavior on outputPath, behavior on invalid or out-of-range timestamps, and the distinction from extract_keyframes.

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 description coverage is 100%, so all five parameters including timestamp formats and resolution syntax are already documented in the schema. The description reinforces only the base64 return behavior and adds no new parameter semantics, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Capture a single still image from a video,' which is unambiguous. It does not differentiate itself from the sibling extract_keyframes, so an agent must infer that this tool returns one frame while that one returns many.

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

Usage Guidelines3/5

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

Usage is only implied by 'single still image' – there is no explicit statement of when to choose this over extract_keyframes, nor any prerequisite or exclusion (e.g. video-only input, overwrite behavior). The word 'single' is the only signal separating it from its closest sibling.

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

generate_waveformB

Generate a PNG waveform image from an audio or video file. Returns the file path and inlined base64 image data.

ParametersJSON Schema
NameRequiredDescriptionDefault
colorNoWaveform color in hex or name (such as '0x6366f1', 'white', or 'black'). Default: '0x6366f1'.0x6366f1
scaleNoAmplitude scale: 'lin', 'log', or 'sqrt'. Default: 'lin'.lin
widthNoImage width in pixels. Default: 1200.
heightNoImage height in pixels. Default: 280.
inputPathYesPath to the audio or video file.
outputPathYesDestination path for the PNG image.
includeBase64NoReturn base64 image data in the response for vision models. Default: true.

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description bears the full burden. It does usefully disclose the return payload ('file path and inlined base64 image data'), but it omits side-effect behavior: that a file is written to outputPath, whether an existing file is overwritten, whether parent directories are created, and whether the operation is expensive for long media. That leaves real gaps for a file-writing tool with zero annotation coverage.

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?

Two sentences, zero filler, with the core action front-loaded and the return contract in the second line. Each sentence earns its place, and the return statement is especially valuable given there is no output schema.

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?

For a 7-parameter tool with full schema coverage and no output schema, the description covers purpose and return shape adequately. It is not fully complete: supported input formats, overwrite/transactional behavior, and failure modes are unaddressed.

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 description coverage is 100%, so every parameter including color, scale, width, height, includeBase64, and the two paths is already documented in the schema. The description adds no syntax or behavioral detail beyond echoing that base64 data may be returned, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource — 'Generate a PNG waveform image from an audio or video file' — which no sibling tool does, so an agent can distinguish it from extract_thumbnail, extract_keyframes, or extract_audio without opening the schema. It stops short of an explicit sibling comparison, keeping it at 4 rather than 5.

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

Usage Guidelines2/5

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

There is no guidance on when to use this versus alternatives such as extract_thumbnail or extract_keyframes, nor any stated prerequisites (e.g., that the input must exist locally or which codecs are supported). The use case is inferable from the purpose sentence but nothing in the text actively routes the agent.

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

media_convertA

Convert video and audio files between formats. Includes presets for web MP4 (H.264/AAC), WebM (VP9/Opus), and animated GIF. Supports hardware acceleration on Apple Silicon, NVIDIA, Intel, and AMD.

ParametersJSON Schema
NameRequiredDescriptionDefault
crfNoQuality factor from 0 to 51. Lower numbers mean higher quality. Default: 23 for MP4, 30 for WebM.
fpsNoTarget frame rate in frames per second, such as 30, 60, or 15
presetNoEncoding preset: 'web_mp4' for browser playback, 'webm' for WebM video, 'gif' for animated GIF, or 'auto'. Default: 'auto'.
inputPathYesPath to the source media file to convert
outputPathYesDestination path for the converted file (e.g. ./output.mp4, ./output.webm, ./animation.gif)
resolutionNoTarget size formatted as 'WIDTHxHEIGHT', such as '1920x1080' or '1280x720'
hardwareAccelerationNoUse hardware-accelerated video encoding (VideoToolbox, NVENC, QSV, etc.) when available. Default: true.

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses useful capability details such as preset codecs and hardware-accelerated encoding, but it does not explain output-writing behavior, overwrite semantics, failure handling, or what happens when hardware acceleration is unavailable.

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 action, then adds preset and hardware details in a compact four-sentence structure. There is no redundant wording, and each sentence contributes useful context.

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

Completeness3/5

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

For a seven-parameter media mutation tool with no annotations and no output schema, the description covers purpose, presets, and hardware acceleration but leaves gaps around return values, overwrite behavior, and error conditions. The schema fills in parameter details, but the description is only partially complete for the tool's complexity.

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 description coverage is 100%, so the schema already documents all seven parameters thoroughly. The description adds some useful meaning for the preset parameter by naming codecs such as H.264/AAC and VP9/Opus, but it does not enrich the other major parameters like crf, fps, or resolution.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: convert video and audio files between formats. It also names concrete preset targets, so the tool is easy to identify. It does not explicitly differentiate itself from related siblings such as compress_video or reformat_aspect_ratio.

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

Usage Guidelines3/5

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

Usage is implicitly clear: use this when changing media container/codec formats. However, the description gives no explicit when-to-use guidance, no exclusions, and no comparison to alternatives like compress_video or reformat_aspect_ratio.

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

media_probeA

Inspect audio and video files with ffprobe. Returns container metadata, stream details, codecs, resolution, bitrate, and duration as JSON.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputPathYesPath to the media file to inspect (e.g. './video.mp4')

TDQS

A4.1/5.0
Behavior4/5

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

No annotations are provided, so the description carries the disclosure burden; it clearly frames the operation as inspection and states that results are returned as JSON with metadata, stream details, codecs, resolution, bitrate, and duration. It does not explicitly state that files are never modified or describe failure behavior, but the read-only nature is strongly implied by "Inspect" and by the return-value summary.

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 two sentences, front-loads the core action, and then summarizes the return content. Every phrase contributes useful information without redundancy.

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 simple one-parameter inspection tool, the definition is complete: the schema covers the input path, and the description compensates for the absence of an output schema by listing the key returned fields. Nothing essential for selecting or invoking the tool appears to be missing.

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?

The input schema fully documents the single required parameter, including a description and example path. The tool description itself adds no additional parameter semantics, so the baseline score of 3 is appropriate for high schema coverage.

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 uses a specific verb ("Inspect") and resource ("audio and video files"), and it names ffprobe as the underlying inspection mechanism. This clearly separates it from the sibling tools, which generate, convert, trim, extract, compress, or otherwise transform media rather than probe metadata.

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

Usage Guidelines3/5

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

Usage is implied by the word "Inspect" and by the listed metadata outputs, but the description gives no explicit guidance on when to choose this tool over siblings such as extract_audio or generate_waveform. There are also no stated prerequisites or exclusions, so an agent must infer the appropriate use case.

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

normalize_audioB

Normalize audio loudness using the broadcast standard EBU R128 (loudnorm). Supports -16 LUFS (podcasts/Reels), -14 LUFS (YouTube), and optional voice clarity enhancement (80Hz high-pass to remove mic rumble). Works on audio or video files.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputPathYesPath to the source audio or video file.
outputPathYesDestination path for the normalized media file.
targetLufsNoTarget integrated loudness in LUFS (-16 for podcasts/Reels, -14 for YouTube, -23 for broadcast). Default: -16.
targetPeakDbNoMaximum allowed true peak level in dBTP. Default: -1.5.
voiceClarityNoApply speech enhancement filters (80Hz high-pass to remove mic rumble and gentle compressor for presence). Default: false.

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully discloses the internal filter chain (loudnorm, 80Hz high-pass, compressor), but says nothing about re-encoding, quality impact, whether outputPath is overwritten, or runtime/format constraints. Helpful but incomplete for a file-mutating media operation.

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?

Three front-loaded sentences with the core function first and the differentiating options after. There is minor redundancy in restating the -16/-14 LUFS targets already in the schema, keeping it below 5.

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

Completeness3/5

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

For a 5-parameter mutation tool with no annotations and no output schema, the description covers the core behavior but omits return values, overwrite semantics, and any failure conditions. An agent can call it, but not predict consequences fully.

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 every parameter is already documented, and the description mostly repeats the schema's own LUFS examples rather than adding new meaning. No extra syntax, units, or interaction guidance (e.g., how targetPeakDb relates to targetLufs) is provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Normalize audio loudness") plus the underlying method (EBU R128 loudnorm), which clearly separates it from siblings like media_convert or compress_video. It does not explicitly name a sibling it displaces, so 4 rather than 5.

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

Usage Guidelines3/5

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

The parenthetical target examples ("-16 LUFS (podcasts/Reels)", "-14 LUFS (YouTube)") imply the intended use cases, but the description never states when to pick this tool over compress_video or media_convert, nor any prerequisites. Usage is inferable but not guided.

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

reformat_aspect_ratioB

Change video aspect ratio to 9:16 vertical, 1:1 square, or 4:5 portrait. Adds blurred video borders, solid padding, or center crops.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoFormat mode: 'blur_background' adds blurred video borders, 'fit_pad' adds solid color padding, and 'crop_center' zooms and crops the center. Default: 'blur_background'.blur_background
padColorNoBackground color for fit_pad mode, such as 'black', 'white', or hex '0x1e1e2e'. Default: 'black'.black
inputPathYesPath to the source video file.
blurAmountNoBlur strength (5 to 50) for blur_background mode. Default: 20.
outputPathYesDestination path for the reformatted video.
targetRatioNoTarget aspect ratio: '9:16' for vertical reels, '1:1' for square, '16:9' for horizontal, or '4:5' for portrait. Default: '9:16'.9:16
hardwareAccelerationNoUse hardware-accelerated video encoding (VideoToolbox, NVENC, QSV, etc.) when available. Default: true.

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. It explains the visual outcome of each mode, which is genuinely useful, but says nothing about whether the output overwrites existing files, encoding cost/quality loss, or failure behavior for invalid paths.

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?

Two tight sentences, front-loaded with the core action and immediately qualifying it with the supported ratios and modes. No filler.

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

Completeness3/5

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

For a 7-parameter mutation tool with no annotations and no output schema, the description covers purpose and mode effects but omits usage selection, overwrite semantics, and any error/return expectations.

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 description coverage is 100%, so every parameter including enums, defaults, and ranges is already documented in the schema. The description's mention of ratios and border types mirrors what the schema provides rather than adding new semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Change video aspect ratio') and enumerates the supported ratios and border strategies, which clearly separates it from media_convert or create_split_screen. It stops short of naming a sibling as the alternative.

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

Usage Guidelines2/5

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

No guidance on when to pick this over media_convert or concat_media, and no prerequisites such as required input format or that inputPath/outputPath must be supplied. The reader must infer all usage context.

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

trim_mediaA

Cut a segment from a video or audio file. Uses stream copy without re-encoding by default, or re-encodes when accurate cuts are needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
endTimeNoOptional end timestamp formatted as 'HH:MM:SS' or seconds. Do not combine with duration.
durationNoOptional duration in seconds from startTime (e.g. '30'). If neither endTime nor duration is set, trims to end of file.
inputPathYesPath to the source media file to cut.
startTimeYesStart timestamp formatted as 'HH:MM:SS' (e.g. '00:01:30') or seconds (e.g. '90').
outputPathYesDestination path for the trimmed output file (e.g. './clip.mp4').
accurateReencodeNoRe-encode video for cuts between keyframes. Default: false (uses fast stream copy).

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose a genuinely useful behavioral trait — default stream copy (fast, keyframe-boundary cuts) versus re-encoding for accuracy — which an agent could not infer from the schema alone. But it omits important behaviors for a file-writing tool: whether outputPath is overwritten if it already exists, what happens on invalid timestamps, and whether the original file is left untouched.

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?

Two sentences with zero filler, and the core purpose is front-loaded before the behavioral caveat. Every clause earns its place.

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

Completeness3/5

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

There is no output schema and no annotations, so the description has to cover more ground than it does. It is adequate for understanding what the tool does, but a mutation tool that writes a new file should say whether the result overwrites, what it returns, and how failures surface.

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 description coverage is 100%, so the schema already explains startTime, endTime, duration, inputPath, outputPath and accurateReencode in detail, including the endTime/duration mutual exclusion. The description adds only a light rationale for accurateReencode, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Cut a segment from a video or audio file.' An agent immediately knows the operation. However, it never distinguishes this from near-neighbors like trim_silence or extract_audio, so the reader must infer scope from the name alone.

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

Usage Guidelines3/5

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

Usage is implied by the operation itself, and the stream-copy vs. re-encode note hints at the speed/accuracy tradeoff that drives the accurateReencode choice. But there is no explicit when-to-use guidance, no mention of alternatives such as trim_silence for silence removal, and no prerequisites or limits stated.

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

trim_silenceA

Detect and remove silent pauses from audio or video files. Preserves video & audio lip-sync in 'start_end' mode. Returns original duration and seconds saved.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoTrim mode: 'start_end' removes silence at the start and end (preserving perfect A/V sync on videos); 'all_pauses' removes silent pauses across audio files. Default: 'start_end'.start_end
inputPathYesPath to the source audio or video file.
outputPathYesDestination path for the trimmed file (e.g. './recordings/cleaned.mp4').
thresholdDbNoVolume threshold in decibels, between -60dB and -10dB. Audio quieter than this is treated as silence. Default: -35.
minDurationSecondsNoMinimum silence duration in seconds to trigger a cut. Default: 0.5.

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It helpfully discloses that 'start_end' mode preserves A/V lip-sync and that the tool returns original duration and seconds saved, but it does not state whether the source is left untouched, whether outputPath is overwritten, or what errors may occur.

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 three tight sentences, front-loads the core operation, and adds only relevant behavioral facts about lip-sync and return values. There is no padding or redundant restatement.

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?

For a five-parameter media mutation tool with no output schema, the description covers the purpose, mode-specific lip-sync behavior, and return metrics well. The main remaining gap is overwrite and source-file handling, which keeps it short of fully complete for an unannotated file-writing 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 description coverage is 100%, so all five parameters are already documented in the schema, including enum values, defaults, ranges, and path meanings. The description reinforces 'start_end' mode but adds little parameter-level detail beyond what the schema already provides.

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 verb and resource: detect and remove silent pauses from audio or video files. This clearly distinguishes the tool from generic siblings such as trim_media, and an agent can identify its intended operation without opening the schema.

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

Usage Guidelines3/5

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

The description implies the tool is for cleaning silence and notes lip-sync preservation in 'start_end' mode, but it does not explicitly say when to use this versus generic trimming tools or when not to use it. Usage is inferable but not explicitly routed against alternatives.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 11 tool updatesv0.5.0
    • Addedadd_overlay
    • Addedburn_subtitles
    • Changedcompress_video1 field changed
      • changedInput schema / properties / hardwareAcceleration / description
        Previous value: -"Use Apple Silicon VideoToolbox encoding when available. Default: true."New value: +"Use hardware-accelerated video encoding (VideoToolbox, NVENC, QSV, etc.) when available. Default: true."
    • Changedcreate_split_screen1 field changed
      • changedInput schema / properties / hardwareAcceleration / description
        Previous value: -"Use Apple Silicon VideoToolbox encoding when available. Default: true."New value: +"Use hardware-accelerated video encoding (VideoToolbox, NVENC, QSV, etc.) when available. Default: true."
    • Changedextract_audio1 field changed
      • changedInput schema / properties / format / description
        Previous value: -"Audio format: 'whisper_wav' (16kHz mono WAV for Whisper), 'mp3', 'aac', 'flac', or 'copy' (extract without re-encoding)."New value: +"Audio format: 'whisper_wav' (16kHz mono WAV for Whisper), 'mp3', 'aac', 'flac', or 'copy' (extract without re-encoding). Default: 'mp3'."
    • Addedextract_keyframes
    • Changedgenerate_waveform1 field changed
      • addedInput schema / properties / includeBase64 / default
        Added value: +true
    • Changedmedia_convert1 field changed
      • changedInput schema / properties / hardwareAcceleration / description
        Previous value: -"Use Apple Silicon VideoToolbox encoding when available. Default: true."New value: +"Use hardware-accelerated video encoding (VideoToolbox, NVENC, QSV, etc.) when available. Default: true."
    • Addednormalize_audio
    • Changedreformat_aspect_ratio1 field changed
      • changedInput schema / properties / hardwareAcceleration / description
        Previous value: -"Use Apple Silicon VideoToolbox encoding when available. Default: true."New value: +"Use hardware-accelerated video encoding (VideoToolbox, NVENC, QSV, etc.) when available. Default: true."
    • Changedtrim_silence1 field changed
      • changedInput schema / properties / mode / description
        Previous value: -"Trim mode: 'start_end' removes silence at the start and end; 'all_pauses' removes silent pauses across the file. Default: 'start_end'."New value: +"Trim mode: 'start_end' removes silence at the start and end (preserving perfect A/V sync on videos); 'all_pauses' removes silent pauses across audio files. Default: 'start_end'."
  2. 10 tool updatesv0.4.2
    • Changedcompress_video7 fields changed
      • changedInput schema / properties / crf / description
        Previous value: -"Custom Constant Rate Factor (18=near lossless, 23=default, 28=small, 35=very small)"New value: +"Quality value between 18 (higher quality) and 45 (smaller file). Overrides preset."
      • changedInput schema / properties / hardwareAcceleration / description
        Previous value: -"Whether to use Apple Silicon VideoToolbox acceleration if available (default: true)"New value: +"Use Apple Silicon VideoToolbox encoding when available. Default: true."
      • changedInput schema / properties / inputPath / description
        Previous value: -"Path to the source video file"New value: +"Path to the source video file (e.g. './recordings/demo.mov')"
      • changedInput schema / properties / maxWidth / description
        Previous value: -"Optional maximum width to downscale (e.g. 1280 for 720p)"New value: +"Maximum video width in pixels, such as 1280 for 720p. Keeps aspect ratio."
      • changedInput schema / properties / outputPath / description
        Previous value: -"Target path for compressed output file"New value: +"Destination path for the compressed MP4 file (e.g. './recordings/demo_compressed.mp4')"
      • changedInput schema / properties / preset / description
        Previous value: -"Compression preset if targetSizeMB is not specified"New value: +"Preset when targetSizeMB is not set: 'github_pr', 'discord', 'email', 'balanced', or 'high_quality'. Default: 'balanced'."
      • changedInput schema / properties / targetSizeMB / description
        Previous value: -"Optional target file size in Megabytes (e.g., 10 for GitHub PRs, 25 for Discord)"New value: +"Target output size in megabytes, such as 9.5 for GitHub or 24 for Discord. Computes bitrates from duration."
    • Addedcreate_split_screen
    • Changedextract_audio4 fields changed
      • changedInput schema / properties / bitrate / description
        Previous value: -"Audio bitrate, e.g. '192k', '320k' (for mp3/aac)"New value: +"Target audio bitrate for MP3 or AAC (e.g. '128k', '192k', '320k')."
      • changedInput schema / properties / format / description
        Previous value: -"Audio format preset. 'whisper_wav' generates 16kHz mono PCM. 'copy' extracts audio without re-encoding."New value: +"Audio format: 'whisper_wav' (16kHz mono WAV for Whisper), 'mp3', 'aac', 'flac', or 'copy' (extract without re-encoding)."
      • changedInput schema / properties / inputPath / description
        Previous value: -"Path to the input video file"New value: +"Path to the source video or audio file."
      • changedInput schema / properties / outputPath / description
        Previous value: -"Destination audio file path (e.g. ./audio.mp3, ./audio.wav)"New value: +"Destination path for the output audio file (e.g. './extracted.wav' or './audio.mp3')."
    • Changedextract_thumbnail5 fields changed
      • changedInput schema / properties / includeBase64 / description
        Previous value: -"Whether to include base64 image data in response for AI vision (default: true)"New value: +"Return base64 image data in response for vision models. Default: true."
      • changedInput schema / properties / inputPath / description
        Previous value: -"Path to the input video file"New value: +"Path to the source video file."
      • changedInput schema / properties / outputPath / description
        Previous value: -"Destination image file path (e.g. ./thumb.png or ./thumb.jpg)"New value: +"Destination image path ending in .png or .jpg (e.g. './thumb.png')."
      • changedInput schema / properties / resolution / description
        Previous value: -"Optional scaled resolution, e.g. '1280x720' or '640x360'"New value: +"Optional scaled size formatted as 'WIDTHxHEIGHT', such as '1280x720'. Defaults to source resolution."
      • changedInput schema / properties / timestamp / description
        Previous value: -"Timestamp to capture, e.g. '00:00:05', '10' (seconds), or 'midpoint' (calculates exact middle of video). Default: '00:00:01'."New value: +"Timestamp to capture, such as '00:00:05', '10', or 'midpoint' for the middle frame. Default: '00:00:01'."
    • Changedgenerate_waveform7 fields changed
      • changedInput schema / properties / color / description
        Previous value: -"Waveform color in hex format (e.g. 0x6366f1, 0x10b981, white, red)"New value: +"Waveform color in hex or name (such as '0x6366f1', 'white', or 'black'). Default: '0x6366f1'."
      • changedInput schema / properties / height / description
        Previous value: -"Waveform image height in pixels"New value: +"Image height in pixels. Default: 280."
      • changedInput schema / properties / includeBase64 / description
        Previous value: -"Whether to include base64 image data in response for AI vision (default: true)"New value: +"Return base64 image data in the response for vision models. Default: true."
      • changedInput schema / properties / inputPath / description
        Previous value: -"Path to audio or video file"New value: +"Path to the audio or video file."
      • changedInput schema / properties / outputPath / description
        Previous value: -"Target output image path (typically .png)"New value: +"Destination path for the PNG image."
      • changedInput schema / properties / scale / description
        Previous value: -"Waveform amplitude scale"New value: +"Amplitude scale: 'lin', 'log', or 'sqrt'. Default: 'lin'."
      • changedInput schema / properties / width / description
        Previous value: -"Waveform image width in pixels"New value: +"Image width in pixels. Default: 1200."
    • Changedmedia_convert7 fields changed
      • changedInput schema / properties / crf / description
        Previous value: -"Constant Rate Factor quality (0-51). Lower is higher quality. Default: 23 for H.264, 30 for VP9."New value: +"Quality factor from 0 to 51. Lower numbers mean higher quality. Default: 23 for MP4, 30 for WebM."
      • changedInput schema / properties / fps / description
        Previous value: -"Target frame rate, e.g. 30, 60, or 15 (great for GIFs)"New value: +"Target frame rate in frames per second, such as 30, 60, or 15"
      • changedInput schema / properties / hardwareAcceleration / description
        Previous value: -"Use Apple Silicon VideoToolbox hardware acceleration if available (default: true)"New value: +"Use Apple Silicon VideoToolbox encoding when available. Default: true."
      • changedInput schema / properties / inputPath / description
        Previous value: -"Path to the input media file"New value: +"Path to the source media file to convert"
      • changedInput schema / properties / outputPath / description
        Previous value: -"Destination file path (e.g. ./output.mp4)"New value: +"Destination path for the converted file (e.g. ./output.mp4, ./output.webm, ./animation.gif)"
      • changedInput schema / properties / preset / description
        Previous value: -"Encoding preset. 'web_mp4' ensures universal browser playback (H.264/yuv420p/faststart). 'gif' uses 2-pass palette generation."New value: +"Encoding preset: 'web_mp4' for browser playback, 'webm' for WebM video, 'gif' for animated GIF, or 'auto'. Default: 'auto'."
      • changedInput schema / properties / resolution / description
        Previous value: -"Target resolution, e.g. '1920x1080', '1280x720', '640x360'"New value: +"Target size formatted as 'WIDTHxHEIGHT', such as '1920x1080' or '1280x720'"
    • Changedmedia_probe1 field changed
      • changedInput schema / properties / inputPath / description
        Previous value: -"Absolute or relative path to the media file to inspect"New value: +"Path to the media file to inspect (e.g. './video.mp4')"
    • Changedreformat_aspect_ratio7 fields changed
      • changedInput schema / properties / blurAmount / description
        Previous value: -"Blur intensity (5-50) for 'blur_background' mode. Default: 20"New value: +"Blur strength (5 to 50) for blur_background mode. Default: 20."
      • changedInput schema / properties / hardwareAcceleration / description
        Previous value: -"Whether to use Apple Silicon VideoToolbox hardware acceleration if available (default: true)"New value: +"Use Apple Silicon VideoToolbox encoding when available. Default: true."
      • changedInput schema / properties / inputPath / description
        Previous value: -"Path to the source video file"New value: +"Path to the source video file."
      • changedInput schema / properties / mode / description
        Previous value: -"Reformatting mode. 'blur_background' adds an aesthetic blurred background of the video itself. 'fit_pad' adds solid colored padding. 'crop_center' zooms and crops the center."New value: +"Format mode: 'blur_background' adds blurred video borders, 'fit_pad' adds solid color padding, and 'crop_center' zooms and crops the center. Default: 'blur_background'."
      • changedInput schema / properties / outputPath / description
        Previous value: -"Destination path for the reformatted video"New value: +"Destination path for the reformatted video."
      • changedInput schema / properties / padColor / description
        Previous value: -"Background color when using 'fit_pad' mode (e.g. 'black', 'white', or hex '0x1e1e2e')"New value: +"Background color for fit_pad mode, such as 'black', 'white', or hex '0x1e1e2e'. Default: 'black'."
      • changedInput schema / properties / targetRatio / description
        Previous value: -"Target aspect ratio. '9:16' (Reels/Shorts/TikTok), '1:1' (Square), '16:9' (Landscape), '4:5' (Portrait Feed)"New value: +"Target aspect ratio: '9:16' for vertical reels, '1:1' for square, '16:9' for horizontal, or '4:5' for portrait. Default: '9:16'."
    • Changedtrim_media6 fields changed
      • changedInput schema / properties / accurateReencode / description
        Previous value: -"If true, re-encodes video for frame-accurate cuts. If false (default), uses instantaneous lossless stream copy."New value: +"Re-encode video for cuts between keyframes. Default: false (uses fast stream copy)."
      • changedInput schema / properties / duration / description
        Previous value: -"Duration to cut from startTime, e.g. '30' (seconds)"New value: +"Optional duration in seconds from startTime (e.g. '30'). If neither endTime nor duration is set, trims to end of file."
      • changedInput schema / properties / endTime / description
        Previous value: -"End time timestamp, e.g. '00:02:15' or '135'"New value: +"Optional end timestamp formatted as 'HH:MM:SS' or seconds. Do not combine with duration."
      • changedInput schema / properties / inputPath / description
        Previous value: -"Path to the input media file"New value: +"Path to the source media file to cut."
      • changedInput schema / properties / outputPath / description
        Previous value: -"Destination file path for the trimmed clip"New value: +"Destination path for the trimmed output file (e.g. './clip.mp4')."
      • changedInput schema / properties / startTime / description
        Previous value: -"Start time timestamp, e.g. '00:01:30' or '90' (in seconds)"New value: +"Start timestamp formatted as 'HH:MM:SS' (e.g. '00:01:30') or seconds (e.g. '90')."
    • Changedtrim_silence5 fields changed
      • changedInput schema / properties / inputPath / description
        Previous value: -"Path to the source audio or video file"New value: +"Path to the source audio or video file."
      • changedInput schema / properties / minDurationSeconds / description
        Previous value: -"Minimum silence duration to trigger trimming (in seconds). Default: 0.5s"New value: +"Minimum silence duration in seconds to trigger a cut. Default: 0.5."
      • changedInput schema / properties / mode / description
        Previous value: -"'start_end' removes dead air at the beginning and end of recording. 'all_pauses' strips silent gaps throughout the entire recording."New value: +"Trim mode: 'start_end' removes silence at the start and end; 'all_pauses' removes silent pauses across the file. Default: 'start_end'."
      • changedInput schema / properties / outputPath / description
        Previous value: -"Destination path for the trimmed file"New value: +"Destination path for the trimmed file (e.g. './recordings/cleaned.mp4')."
      • changedInput schema / properties / thresholdDb / description
        Previous value: -"Silence volume threshold in dB (e.g. -35). Audio quieter than this is treated as silence."New value: +"Volume threshold in decibels, between -60dB and -10dB. Audio quieter than this is treated as silence. Default: -35."
  3. 6 tool updatesv0.3.0
    • Changedcompress_video1 field changed
      • addedInput schema / properties / hardwareAcceleration
        Added value: +{
        +  "description": "Whether to use Apple Silicon VideoToolbox acceleration if available (default: true)",
        +  "type": "boolean"
        +}
    • Changedextract_thumbnail1 field changed
      • addedInput schema / properties / includeBase64
        Added value: +{
        +  "description": "Whether to include base64 image data in response for AI vision (default: true)",
        +  "type": "boolean"
        +}
    • Changedgenerate_waveform1 field changed
      • addedInput schema / properties / includeBase64
        Added value: +{
        +  "description": "Whether to include base64 image data in response for AI vision (default: true)",
        +  "type": "boolean"
        +}
    • Changedmedia_convert1 field changed
      • addedInput schema / properties / hardwareAcceleration
        Added value: +{
        +  "description": "Use Apple Silicon VideoToolbox hardware acceleration if available (default: true)",
        +  "type": "boolean"
        +}
    • Addedreformat_aspect_ratio
    • Addedtrim_silence
  4. 10 tool updatesv0.1.0
    • First observedadd_subtitles
    • First observedchange_speed
    • First observedcompress_video
    • First observedconcat_media
    • First observedextract_audio
    • First observedextract_thumbnail
    • First observedgenerate_waveform
    • First observedmedia_convert
    • First observedmedia_probe
    • First observedtrim_media

TDQS

A3.6/5.0

Scored across 17 tools

Disambiguation5/5

Each tool maps to a distinct operation: extraction (audio, thumbnail, keyframes), transformation (convert, compress, speed, aspect ratio, split-screen), audio processing (normalize, trim_silence), and assembly (concat, overlay, subtitles). The few potentially confusable pairs—extract_thumbnail vs extract_keyframes, add_subtitles vs burn_subtitles, trim_media vs trim_silence—are explicitly differentiated in their descriptions. An agent should reliably pick the right tool.

Naming Consistency4/5

Strong snake_case verb_noun convention throughout (extract_audio, compress_video, trim_silence, add_overlay, concat_media). The only deviations are the resource-prefixed names media_convert and media_probe, which put the noun first, but they remain readable and predictable within the pattern.

Tool Count4/5

17 tools is on the high side of the ideal 3-15 band but well justified for a media-manipulation domain with many independent operations. Each tool covers a genuinely distinct capability, so nothing feels padded, though the surface is nearing the point where discoverability could suffer.

Completeness4/5

The surface covers the core media lifecycle: probe, trim, trim silence, compress, convert, audio extract/normalize, subtitles, overlays, overlays/speed/concat, and vertical-format output. Minor gaps exist for rotation/flip, arbitrary cropping or resolution scaling as a standalone tool, and multi-audio-track mixing, but these are workaroundable.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    F
    maintenance
    A lightweight server that exposes FFmpeg's video processing capabilities to AI assistants through the Model Context Protocol (MCP), supporting operations like video format conversion, audio extraction, and adding watermarks.
    8
    9 npm
    25
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables LLMs to perform FFmpeg operations like clipping, merging, extracting audio, adding subtitles, and transcoding videos via a set of tools exposed as an MCP server.
    5
    8
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that exposes FFmpeg as a structured tool set for AI agents, enabling timeline-based video editing, preview, rendering, and analysis with an optional LLM autopilot.
    MIT