Skip to main content
Glama

MCP-FFmpeg

FFmpeg video & audio editing tools via Model Context Protocol (MCP)

Python 3.10+ License: MIT MCP Compatible FFmpeg

Give your AI assistant the power to edit video and audio — trim, transcode, overlay, compose, and more.

Quick Start · Tools · Configuration · Architecture


Why MCP-FFmpeg?

AI assistants are great at understanding what you want to do with media files, but they can't actually do it — until now. MCP-FFmpeg bridges the gap by exposing 30+ FFmpeg operations as MCP tools that any compatible AI assistant can call directly.

You: "Trim this video from 00:30 to 02:00, add a fade-in, and convert to 720p"
AI:  Calls trim_video → add_basic_transitions → set_video_resolution → Done!

Related MCP server: ffmpeg-mcp

Architecture

┌─────────────────────┐     MCP Protocol     ┌──────────────────────────┐
│   AI Assistants     │◄───────────────────►  │   mcp-ffmpeg Server      │
│                     │    JSON-RPC/stdio     │                          │
│  · Claude Code      │                       │  ┌────────┐ ┌────────┐  │
│  · Claude Desktop   │                       │  │ Video  │ │ Audio  │  │
│  · Cursor           │                       │  │ Tools  │ │ Tools  │  │
│  · Any MCP Client   │                       │  └────────┘ └────────┘  │
└─────────────────────┘                       │  ┌────────┐ ┌────────┐  │
                                              │  │Overlay │ │Compose │  │
                                              │  │ Tools  │ │ Tools  │  │
                                              │  └────────┘ └────────┘  │
                                              └──────────┬─────────────┘
                                                         │
                                                         ▼
                                              ┌──────────────────────┐
                                              │    FFmpeg Engine      │
                                              └──────────────────────┘

Quick Start

Prerequisites

Requirement

Version

Purpose

Python

3.10+

Runtime

FFmpeg

Any recent

Media processing engine

uv

Latest

Python package manager (recommended)

Install & Run

git clone https://github.com/kevinten-ai/mcp-ffmpeg.git
cd mcp-ffmpeg
uv sync
uv run python main.py

MCP Client Configuration

Claude Code

Add to your project's .mcp.json:

{
  "mcpServers": {
    "ffmpeg-tools": {
      "command": "uv",
      "args": ["--directory", "/path/to/mcp-ffmpeg", "run", "python", "main.py"]
    }
  }
}

Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "ffmpeg-tools": {
      "command": "uv",
      "args": ["--directory", "/path/to/mcp-ffmpeg", "run", "python", "main.py"]
    }
  }
}

Cursor / Other MCP Clients

Use the same server configuration — any client that supports MCP's stdio transport will work.


Available Tools (30+)

Video Processing

Tool

Description

trim_video

Trim video to specific start/end times

convert_video_format

Convert between formats (mp4, mov, avi, etc.)

convert_video_properties

Batch convert format, resolution, codecs, bitrate, frame rate

change_aspect_ratio

Change aspect ratio with pad or crop mode

set_video_resolution

Scale to target resolution (e.g., 1920x1080)

set_video_codec

Change video codec (libx264, libx265, vp9)

set_video_bitrate

Set video bitrate (e.g., 2500k, 5M)

set_video_frame_rate

Adjust frame rate (24, 30, 60 fps)

change_video_speed

Speed up or slow down playback (0.25x to 4x+)

Audio Processing

Tool

Description

extract_audio_from_video

Extract audio track from video file

convert_audio_format

Convert between audio formats (mp3, wav, aac)

convert_audio_properties

Batch convert format, bitrate, sample rate, channels

set_audio_bitrate

Set audio bitrate (128k, 192k, 320k)

set_audio_sample_rate

Set sample rate (44100, 48000 Hz)

set_audio_channels

Set mono (1) or stereo (2)

Video Audio Track

Tool

Description

set_video_audio_track_codec

Change audio codec within video (aac, mp3)

set_video_audio_track_bitrate

Set audio bitrate within video

set_video_audio_track_sample_rate

Set audio sample rate within video

set_video_audio_track_channels

Set audio channels within video

Overlays & Subtitles

Tool

Description

add_text_overlay

Add timed text overlays with full styling control

add_image_overlay

Add image watermarks/logos with position & opacity

add_subtitles

Burn SRT subtitles with customizable font styling

Composition & Editing

Tool

Description

concatenate_videos

Join multiple videos with optional xfade transitions

add_b_roll

Insert B-roll clips as overlays at specific timestamps

add_basic_transitions

Add fade-in / fade-out effects

remove_silence

Detect and remove silent segments automatically

System

Tool

Description

health_check

Verify server is running and responsive


Usage Examples

Basic Video Editing

"Trim intro.mp4 from 10s to 2:30 and save as intro_trimmed.mp4"
→ trim_video(video_path="intro.mp4", output_video_path="intro_trimmed.mp4",
             start_time="10", end_time="2:30")

Format Conversion

"Convert recording.mov to mp4 at 720p with h265 codec"
→ convert_video_properties(input_video_path="recording.mov",
                           output_video_path="recording.mp4",
                           target_format="mp4", resolution="720",
                           video_codec="libx265")

Adding Subtitles

"Burn subtitles.srt onto my video with large white text"
→ add_subtitles(video_path="video.mp4", srt_file_path="subtitles.srt",
                output_video_path="video_subtitled.mp4",
                font_style={"font_size": 28, "font_color": "&HFFFFFF"})

Video Composition

"Join clip1.mp4 and clip2.mp4 with a dissolve transition"
→ concatenate_videos(video_paths=["clip1.mp4", "clip2.mp4"],
                     output_video_path="final.mp4",
                     transition_effect="dissolve",
                     transition_duration=1.0)

Supported Transitions

The concatenate_videos tool supports 30+ xfade transitions for joining two videos:

Category

Transitions

Fade

fade, fadeblack, fadewhite, fadegrays, dissolve, distance

Wipe

wipeleft, wiperight, wipeup, wipedown

Slide

slideleft, slideright, slideup, slidedown

Smooth

smoothleft, smoothright, smoothup, smoothdown

Shape

circlecrop, rectcrop, circleopen, circleclose

Split

vertopen, vertclose, horzopen, horzclose

Diagonal

diagtl, diagtr, diagbl, diagbr

Slice

hlslice, hrslice, vuslice, vdslice

Other

pixelize, radial, hblur

Project Structure

mcp-ffmpeg/
├── main.py                          # Entry point
├── pyproject.toml                   # Project config & dependencies
├── src/ffmpeg_tools/
│   ├── __init__.py
│   ├── server.py                    # MCP server setup & tool registration
│   ├── utils.py                     # Shared utilities (probe, clip prep, etc.)
│   └── tools/
│       ├── audio.py                 # Audio processing tools (6 tools)
│       ├── video.py                 # Video & video-audio tools (13 tools)
│       ├── overlay.py               # Text/image/subtitle overlay tools (3 tools)
│       └── compose.py               # Concatenation, B-roll, transitions (4 tools)
├── tests/
│   ├── test_video_functions.py      # Test suite
│   └── sample_files/                # Test media files
└── assets/                          # Images for documentation

Testing

uv run pytest tests/ -v

Contributing

Contributions are welcome! Here are some ways to help:

  • Add new FFmpeg tools (e.g., video stabilization, noise reduction)

  • Improve error handling and validation

  • Add more test coverage

  • Improve documentation

License

MIT License — see LICENSE for details.

Acknowledgments

Based on video-audio-mcp by misbahsy.


Built with FastMCP and FFmpeg

Available Tools

27 tools
add_basic_transitionsA

Adds basic fade transitions to the beginning or end of a video.

Args: video_path: Path to the input video file. output_video_path: Path to save the video with the transition. transition_type: Type of transition. Options: 'fade_in', 'fade_out'. duration_seconds: Duration of the fade effect in seconds. Returns: A status message indicating success or failure.

ParametersJSON Schema
NameRequiredDescriptionDefault
video_pathYes
transition_typeYes
duration_secondsYes
output_video_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the behavioral transparency burden. It discloses that the tool adds a fade and returns a status message, which is helpful. However, it does not mention potential limitations, such as codec support, file size constraints, or whether the input file is modified despite the presence of an output path.

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 concise and well-structured: a one-sentence summary followed by Args and Returns sections. Every sentence adds value, and the most important information is front-loaded. No redundant or vague phrasing.

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?

Given the tool's simplicity and the existence of an output schema, the description is nearly complete. It covers the purpose, all parameters, and return value. The only gap is the lack of explicit usage guidance and edge-case behavior, but this does not prevent an agent from selecting and invoking the tool correctly.

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

Parameters5/5

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

The schema provides only parameter types and titles with 0% description coverage. The description's Args section fully compensates by explaining each parameter: video_path, output_video_path, transition_type (with explicit options 'fade_in' and 'fade_out'), and duration_seconds. This adds meaning beyond the schema, making it clear what values to provide.

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 'Adds basic fade transitions to the beginning or end of a video.' This uses a specific verb ('adds') and resource ('basic fade transitions'), clearly distinguishing it from sibling tools like trim_video or convert_video_format. No ambiguity exists about what the tool does.

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 usage by explaining the tool's function, but it does not explicitly state when to use it versus alternatives, nor does it mention exclusions or when not to use it. There is no reference to other transition types or sibling tools in the description.

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

add_b_rollA

Inserts B-roll clips into a main video as overlays.

Args: main_video_path: Path to the main video file. broll_clips: A list of dicts, each with keys: Required: 'clip_path' (str), 'insert_at_timestamp' (str/float). Optional: 'duration' (str/float), 'position' ('fullscreen'|'top-left'|'top-right'| 'bottom-left'|'bottom-right'|'center'), 'scale' (float), 'transition_in'/'transition_out' ('fade'), 'transition_duration' (float), 'audio_mix' (float, 0.0-1.0). output_video_path: The path to save the output video. Returns: A status message indicating success or failure.

ParametersJSON Schema
NameRequiredDescriptionDefault
broll_clipsYes
main_video_pathYes
output_video_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It reveals that the tool reads a main video and writes to an output path, and that it returns a status message, but it does not disclose whether input files are modified, what happens on failure, or processing limitations. Some behavioral context is present, but key details are missing.

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

Conciseness4/5

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

The description is well-structured with a one-sentence summary followed by Args and Returns. It is somewhat detailed, but the complexity of the broll_clips parameter justifies the length. The organization is clear and front-loaded, though it could be slightly more concise by trimming redundant phrasing.

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?

Given the complex nested parameter and absence of annotations, the description covers the essential semantics thoroughly. It explains the main inputs, output path, and return status. However, it omits usage guidance and edge-case behavior, which would make it fully complete.

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

Parameters5/5

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

The input schema has zero descriptions, so the description fully compensates by specifying required and optional keys for broll_clips, including valid values for 'position', ranges for 'audio_mix', and the structure of transitions. This goes far beyond the schema and gives the agent complete parameter understanding.

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 clearly states 'Inserts B-roll clips into a main video as overlays,' using a specific verb and resource. This distinguishes it from sibling overlay tools like add_text_overlay and add_image_overlay, while also being distinct from editing tools like concatenate_videos or trim_video.

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 usage by detailing what the tool does, but it does not explicitly state when to use it versus alternatives. There are no exclusions, prerequisites, or comparison to sibling tools, leaving the user to infer the appropriate context from the functionality described.

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

add_image_overlayA

Adds an image overlay (watermark/logo) to a video.

Args: video_path: Path to the input video file. output_video_path: Path to save the video with the image overlay. image_path: Path to the image file for the overlay. position: Position of the overlay. Options: 'top_left', 'top_right', 'bottom_left', 'bottom_right', 'center'. Or specify custom coordinates like 'x=10:y=10'. opacity: Opacity of the overlay (0.0 to 1.0). If None, image's own alpha is used. start_time: Start time for the overlay (HH:MM:SS or seconds). If None, starts from beginning. end_time: End time for the overlay (HH:MM:SS or seconds). If None, lasts till end. width: Width for the overlay image (e.g., '100', 'iw0.1'). Original if None. height: Height for the overlay image (e.g., '50', 'ih0.1'). Original if None. Returns: A status message indicating success or failure.

ParametersJSON Schema
NameRequiredDescriptionDefault
widthNo
heightNo
opacityNo
end_timeNo
positionNotop_right
image_pathYes
start_timeNo
video_pathYes
output_video_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It adds meaningful behavioral context: default handling for opacity (uses image's alpha if None), start/end time behavior (full length if None), and position format options. However, it does not mention potential side effects like file overwriting or format constraints, but the return type and parameter defaults are well disclosed.

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 well-structured: a front-loaded one-sentence summary, then a clean Args section with each parameter on its own line, followed by a Returns note. Every line adds necessary information without redundancy; the length is justified by the number of parameters.

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?

Given the tool's moderate complexity (9 params, no annotations, minimal schema), the description is fairly complete. It covers all parameter behaviors and returns a status message, and an output schema exists for return details. Minor gaps include lack of explicit format support or overwrite behavior, but these are not critical for typical usage.

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

Parameters5/5

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

Schema description coverage is 0%, so the description fully compensates. It explains each parameter in detail: position options including custom coordinate syntax, opacity range and default behavior, time formats, and width/height expression examples (e.g., 'iw*0.1'). This goes far beyond the basic types and defaults in the schema.

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 starts with a clear, specific verb phrase: 'Adds an image overlay (watermark/logo) to a video.' This identifies the action, the target resource (video), and the object (image overlay), distinguishing it from siblings like add_text_overlay and 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 Guidelines3/5

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

The description implies usage—use this when you need to overlay an image—but it does not explicitly compare with alternatives or state when not to use it. No exclusions or sibling references are provided, so the guidance is inferred rather than direct.

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

add_subtitlesA

Burns subtitles from an SRT file onto a video, with optional styling.

Args: video_path: Path to the input video file. srt_file_path: Path to the SRT subtitle file. output_video_path: Path to save the video with subtitles. font_style (dict, optional): A dictionary for subtitle styling. Supported keys: 'font_name', 'font_size', 'font_color', 'outline_color', 'outline_width', 'shadow_color', 'shadow_offset_x', 'shadow_offset_y', 'alignment', 'margin_v', 'margin_l', 'margin_r'. Default is None, which uses FFmpeg's default subtitle styling. Returns: A status message indicating success or failure.

ParametersJSON Schema
NameRequiredDescriptionDefault
font_styleNo
video_pathYes
srt_file_pathYes
output_video_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It explains the return value (status message) and the optional styling behavior, but it does not disclose potential side effects such as whether the original video is modified or whether the output file is overwritten. This is adequate but leaves some behavioral ambiguity.

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 well-structured as a docstring with a one-sentence summary followed by an Args list and Returns section. Every sentence provides necessary information about parameters or return behavior, with no redundancy or filler. It is appropriately sized for the tool's complexity.

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?

The description covers all parameters, the return value, and the core behavior, making it sufficient for a tool with a nested object parameter. It lacks explicit mention of error handling or edge cases, but given the output schema is present and the tool is relatively straightforward, it is nearly complete.

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

Parameters5/5

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

The schema has 0% description coverage, but the description comprehensively documents all parameters in the Args section, including the supported keys for the font_style dictionary. This adds significant meaning beyond the raw schema, which only lists property names and types without any descriptions.

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 clearly states the tool's function: 'Burns subtitles from an SRT file onto a video, with optional styling.' This is specific, uses a clear verb-resource pair, and distinguishes it from sibling tools like 'add_text_overlay' or 'add_image_overlay' by focusing on SRT subtitle burning rather than generic text or image overlays.

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 used when subtitles need to be embedded into a video, but it provides no explicit guidance on when to choose it over alternatives like 'add_text_overlay' or when not to use it. There is no mention of prerequisites or exclusions, so the usage context is clear but not fully delineated.

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

add_text_overlayA

Adds one or more text overlays to a video at specified times and positions.

Args: video_path: Path to the input main video file. output_video_path: Path to save the video with text overlays. text_elements: A list of dictionaries, where each dictionary defines a text overlay. Required keys: 'text', 'start_time', 'end_time'. Optional keys: 'font_size' (24), 'font_color' ('white'), 'x_pos' ('center'), 'y_pos' ('h-th-10'), 'box' (False), 'box_color' ('black@0.5'), 'box_border_width' (0), 'font_file'. Returns: A status message indicating success or failure.

ParametersJSON Schema
NameRequiredDescriptionDefault
video_pathYes
text_elementsYes
output_video_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It explains that the tool writes to an output path, implying it is not destructive to the original video, and it describes the structure of text_elements. However, it does not mention potential side effects, error handling, or system requirements. This is adequate but not deeply transparent.

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 well-structured as a concise docstring with Args and Returns sections. It is front-loaded with the main purpose, then provides necessary details for each parameter without unnecessary verbosity. Every line adds value, making it efficiently sized.

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?

The description is complete for a tool of this complexity: it covers all parameters, provides detailed structure for text_elements, and states the return type. It lacks explicit information about failure modes or performance but is sufficient for an agent to invoke the tool correctly. Given the rich parameter documentation, a 4 is appropriate.

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

Parameters5/5

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

The schema provides almost no parameter details (0% coverage), but the description compensates excellently. It enumerates required and optional keys for text_elements, including default values for font_size, font_color, positions, and box options. It also clarifies the purpose of video_path and output_video_path. This far exceeds the schema's minimal 'array of objects' definition.

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 clearly states the tool's function: 'Adds one or more text overlays to a video at specified times and positions.' This is a specific verb+resource with clear scope, and it distinguishes itself from siblings like add_subtitles and add_image_overlay by focusing on text overlays with position/timing control.

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?

The description provides clear context for use ('Adds one or more text overlays to a video at specified times and positions'), making it obvious when this tool is appropriate. It does not explicitly mention alternatives or exclusions, but the unique focus on text overlays at specific times/positions implies its distinct use case, earning a 4 rather than a 5.

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

change_aspect_ratioA

Changes the aspect ratio of a video, using padding or cropping.

Args: video_path: Path to the input video file. output_video_path: Path to save the video with the new aspect ratio. target_aspect_ratio: Target aspect ratio (e.g., '16:9', '4:3', '1:1'). resize_mode: 'pad' to add letterbox/pillarbox, or 'crop' to crop. Defaults to 'pad'. padding_color: Color for padding (e.g., 'black', 'white'). Defaults to 'black'. Returns: A status message indicating success or failure.

ParametersJSON Schema
NameRequiredDescriptionDefault
video_pathYes
resize_modeNopad
padding_colorNoblack
output_video_pathYes
target_aspect_ratioYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description must carry the burden of behavioral disclosure. It communicates the output behavior ('save the video with the new aspect ratio') and the resize mode/padding color options, but it lacks details on potential side effects (e.g., overwriting existing files), error conditions, or performance considerations. It is adequate but not rich.

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

Conciseness4/5

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

The description is well-structured with a one-sentence summary followed by a clear Args breakdown and a Returns note. It is slightly longer than necessary but every sentence serves a purpose, and the formatting aids readability. It earns a 4 for being informative without excessive fluff.

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?

Given the tool's complexity (video processing) and the absence of annotations, the description covers the essential inputs, output path, mode, color, and return value. It does not mention error handling, required codecs, or side effects, but for a 5-parameter tool with an output schema, this is reasonably complete. The description sufficiently grounds an agent to invoke it correctly.

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

Parameters5/5

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

The schema has no descriptions for any parameters (0% coverage), so the description's Args section provides crucial meaning. It explains each parameter, including examples for target_aspect_ratio ('16:9', '4:3', '1:1'), defaults for resize_mode and padding_color, and the purpose of each argument. This fully compensates for the schema's lack of detail.

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 clearly states the tool's primary function with a specific verb and resource: 'Changes the aspect ratio of a video, using padding or cropping.' This distinguishes it from sibling tools like set_video_resolution or trim_video. The two methods (pad/crop) and example ratios add further specificity.

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 explains what the tool does and the two resize modes, but it does not explicitly state when to use this tool versus alternatives. There is no mention of exclusions or comparisons with related video tools, so the usage context is implied rather than explicitly guided.

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

change_video_speedA

Changes the playback speed of a video (and its audio).

Args: video_path: Path to the input video file. output_video_path: Path to save the speed-adjusted video file. speed_factor: The factor by which to change the speed (e.g., 2.0 for 2x speed, 0.5 for half speed). Must be positive. Returns: A status message indicating success or failure.

ParametersJSON Schema
NameRequiredDescriptionDefault
video_pathYes
speed_factorYes
output_video_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations provided, the description carries full behavioral burden. It states that audio is also affected and that a status message is returned, but it does not disclose potential side effects like re-encoding, pitch preservation, or handling of output file overwrites. This is adequate but not rich.

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 concise, well-structured with an Args section and Returns note, and front-loaded with the primary purpose. Every sentence contributes useful information without redundancy or fluff.

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 relatively simple tool (3 scalar parameters, no enums or nested objects), the description covers the tool's effect, parameter meanings, and return value. The output is a simple status message, so no additional return details are necessary. The presence of an output schema (even if not shown) further reduces the need to explain return values.

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

Parameters5/5

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

Even though the input schema has no descriptions (0% coverage), the tool description itself includes detailed parameter explanations with examples and constraints (e.g., speed_factor must be positive, example values 2.0/0.5). This fully compensates for the schema's lack of semantic detail.

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 ('Changes') and resource ('playback speed of a video'), clearly indicating the tool's function. It distinguishes itself from siblings like 'set_video_frame_rate' or 'trim_video' by focusing on playback speed and explicitly including audio.

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 provides clear context for what the tool does but does not explicitly state when to use it over alternatives or when not to use it. There are no exclusions or references to sibling tools. Usage is implied by the purpose, but no explicit guidance is given.

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

concatenate_videosA

Concatenates multiple video files into a single output file. Supports optional xfade transition when concatenating exactly two videos.

Args: video_paths: A list of paths to the video files to concatenate. output_video_path: The path to save the concatenated video file. transition_effect: The xfade transition type (e.g., 'dissolve', 'fade', 'wipeleft'). Only applied if exactly two videos are provided. Defaults to None. transition_duration: The duration of the xfade transition in seconds. Required if transition_effect is specified. Returns: A status message indicating success or failure.

ParametersJSON Schema
NameRequiredDescriptionDefault
video_pathsYes
output_video_pathYes
transition_effectNo
transition_durationNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.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. It discloses the return behavior ('status message') and the transition condition ('Only applied if exactly two videos are provided'). However, it omits important behavioral details such as what happens if transition_effect is specified with more than two videos, whether existing files are overwritten, or how errors are handled.

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 well-structured with a one-sentence summary followed by an Args/Returns section. Every sentence provides useful information, and the format is clear and easy to parse. There is no fluff or redundancy.

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?

The description covers the main functionality, all parameters, and the return type, which is sufficient for a tool of this complexity. It lacks explicit handling of edge cases like incompatible video formats, but those are typically outside the scope of a tool description. The presence of sibling tools like add_basic_transitions suggests a boundary that could be clarified, but the description is still reasonably complete.

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

Parameters5/5

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

Schema coverage is 0%, so the description must fully explain parameters, and it does. Each parameter is described with its type, default, and constraints (e.g., 'transition_duration... Required if transition_effect is specified'). This adds significant meaning beyond the schema's raw titles.

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 ('Concatenates') and resource ('video files into a single output file'), clearly distinguishing it from sibling tools like trim_video or convert_video_format. The optional xfade transition feature is also mentioned, further scoping the tool's purpose.

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?

The description clearly states the primary use case (concatenating multiple videos) and provides a specific constraint for the transition feature ('when concatenating exactly two videos'). However, it does not explicitly mention alternatives or when not to use the tool, such as when using add_basic_transitions for standalone transition effects.

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

convert_audio_formatA

Converts an audio file to the specified target format.

Args: input_audio_path: Path to the source audio file. output_audio_path: Path to save the converted audio file. target_format: Desired output audio format (e.g., 'mp3', 'wav', 'aac'). Returns: A status message indicating success or failure.

ParametersJSON Schema
NameRequiredDescriptionDefault
target_formatYes
input_audio_pathYes
output_audio_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 burden of behavioral disclosure. It mentions conversion and a status message return, but does not disclose file overwrite behavior, supported formats, error conditions, or any side effects. This is a significant gap for a tool that writes files.

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 well-structured with a one-sentence summary, a clear Args block, and a Returns note. It is concise with no filler, and each element 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?

The description covers the core purpose and all parameters, but lacks important contextual details such as supported formats, overwrite behavior, and differentiation from similar sibling tools. Given the tool's simplicity, it is adequate but not fully complete.

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 0%, so the description must compensate. It explains all three parameters with meaningful context, including path purposes and an example list for target_format ('mp3', 'wav', 'aac'). While not exhaustive, it adds value beyond the raw schema.

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 clearly states the tool's function with a specific verb and resource: 'Converts an audio file to the specified target format.' This distinguishes it from sibling audio tools like set_audio_bitrate or convert_audio_properties by focusing specifically on format conversion.

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 is provided on when to use this tool versus alternatives. The description does not mention when to prefer this over convert_audio_properties or other sibling tools, nor exclude any use cases.

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

convert_audio_propertiesA

Converts audio file format and ALL specified properties like bitrate, sample rate, and channels.

Args: input_audio_path: Path to the source audio file. output_audio_path: Path to save the converted audio file. target_format: Desired output audio format (e.g., 'mp3', 'wav', 'aac'). bitrate: Target audio bitrate (e.g., '128k', '192k'). Optional. sample_rate: Target audio sample rate in Hz (e.g., 44100, 48000). Optional. channels: Number of audio channels (1 for mono, 2 for stereo). Optional. Returns: A status message indicating success or failure.

ParametersJSON Schema
NameRequiredDescriptionDefault
bitrateNo
channelsNo
sample_rateNo
target_formatYes
input_audio_pathYes
output_audio_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It explicitly lists output behavior ('Returns: A status message indicating success or failure') and clarifies that properties are optional ('Optional') and applied if specified. It does not explicitly state side effects like overwriting the output file, but for a conversion tool the expected behavior is clear enough. This is more transparent than a minimal description.

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 well-structured: a one-sentence summary, an Args list with clear parameter explanations, and a Returns section. It is front-loaded with the main purpose and every line serves a purpose. No redundant or superfluous text.

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?

Given the tool's complexity (6 parameters, 3 optional) and lack of annotations, the description covers all parameter meanings, optionality, and return value. It does not mention potential errors or edge cases, but the output schema likely covers return structure. The description is sufficient for correct selection and invocation, though it could add explicit notes on overwriting behavior or format compatibility.

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

Parameters5/5

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

Schema description coverage is 0%, meaning the schema provides only types and defaults. The description compensates fully by explaining each parameter with examples (e.g., 'target_format' with 'mp3', 'wav', 'aac'), clarifying optionality, and defining expected formats for bitrate and sample_rate. This goes beyond the schema and enables correct invocation.

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 the specific verb 'converts' and clearly identifies the resource: 'audio file format and ALL specified properties like bitrate, sample rate, and channels.' This distinguishes it from siblings like convert_audio_format which only handles format, and set_audio_bitrate which handles a single property. The purpose 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 Guidelines4/5

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

The description clearly indicates this tool is for converting format plus any specified properties, which provides context for when it would be used. However, it does not explicitly state when to use alternatives like convert_audio_format for format-only changes or set_* tools for single-property changes. The guidance is implied but not explicitly contrasted with siblings.

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

convert_video_formatA

Converts a video file to the specified target format, attempting to copy codecs first.

Args: input_video_path: Path to the source video file. output_video_path: Path to save the converted video file. target_format: Desired output video format (e.g., 'mp4', 'mov', 'avi'). Returns: A status message indicating success or failure.

ParametersJSON Schema
NameRequiredDescriptionDefault
target_formatYes
input_video_pathYes
output_video_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/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 for behavioral disclosure. It mentions the codec-copy attempt and a status return, which is helpful, but omits fallback behavior if codec copying fails, whether output file will be overwritten, and specific error conditions. This leaves important operational details unclear.

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 compact and well-structured: a one-sentence behavior statement followed by a clear Args/Returns list. Every sentence serves a purpose, with no filler or redundant schema repetition.

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?

The tool is simple (3 parameters, output schema present) and the description covers purpose, parameters, and return type. The fallback behavior for codec-copy failures is implied ('attempting to copy codecs first') but not explicit, and edge cases like unsupported formats are not addressed. Still, it is largely complete for a straightforward conversion tool.

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?

The input schema has 0% description coverage, so the Args section is the sole source of parameter meaning. It provides clear, useful descriptions for all three parameters, including examples for target_format. This adds real value beyond the bare property names.

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 clearly states the tool's function: 'Converts a video file to the specified target format'. It uses a specific verb and resource, and the phrase 'attempting to copy codecs first' distinguishes it from sibling tools like convert_video_properties or set_video_codec.

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 usage context is implied: use this tool to change the container format. However, it provides no explicit guidance on when not to use it, such as when re-encoding is required, or alternatives like set_video_codec for codec changes. The 'attempting to copy codecs first' hint suggests a remux scenario but does not clearly exclude other tools.

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

convert_video_propertiesA

Converts video file format and ALL specified properties like resolution, codecs, bitrates, and frame rate.

Args: input_video_path: Path to the source video file. output_video_path: Path to save the converted video file. target_format: Desired output video format (e.g., 'mp4', 'mov', 'avi'). resolution: Target resolution (e.g., '1920x1080' or '720' for height). Optional. video_codec: Target video codec (e.g., 'libx264', 'libx265'). Optional. video_bitrate: Target video bitrate (e.g., '1M', '2500k'). Optional. frame_rate: Target frame rate (e.g., 24, 30, 60). Optional. audio_codec: Target audio codec (e.g., 'aac', 'mp3'). Optional. audio_bitrate: Target audio bitrate (e.g., '128k', '192k'). Optional. audio_sample_rate: Target audio sample rate in Hz (e.g., 44100, 48000). Optional. audio_channels: Number of audio channels (1 for mono, 2 for stereo). Optional. Returns: A status message indicating success or failure.

ParametersJSON Schema
NameRequiredDescriptionDefault
frame_rateNo
resolutionNo
audio_codecNo
video_codecNo
audio_bitrateNo
target_formatYes
video_bitrateNo
audio_channelsNo
input_video_pathYes
audio_sample_rateNo
output_video_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/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 explains the input/output paths and return value, and makes it clear it saves a new file. However, it does not disclose whether existing output files are overwritten, any dependencies on external tools (e.g., ffmpeg), or potential lengthy processing for large videos.

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 front-loaded with a clear purpose sentence, followed by a structured Args block. It is longer than ideal but all 11 parameters are meaningfully described, so the length is justified. No filler or redundant content beyond necessary parameter documentation.

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?

Given the tool's complexity (11 parameters), the description covers all parameters and the return value, which is sufficient for basic invocation. It lacks examples of complete calls, notes on parameter combinations, or constraints (e.g., matching codecs to format), but the presence of an output schema partially compensates for return value expectations.

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

Parameters5/5

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

The schema has 0% description coverage, but the description thoroughly explains every parameter with examples and optionality. This adds substantial meaning beyond the raw schema types, making it easy for an agent to construct valid arguments.

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 clearly states it converts video file format and all specified properties like resolution, codecs, bitrates, and frame rate, which distinguishes it from single-property sibling tools. The verb 'converts' plus the resource 'video file' makes the purpose unmistakable.

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 it is a comprehensive converter for multiple properties at once, but it does not explicitly state when to use it over the individual set_* tools. No exclusions or alternative tool names are mentioned, so the context is only inferred from the tool's name and purpose.

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

extract_audio_from_videoA

Extracts audio from a video file and saves it.

Args: video_path: The path to the input video file. output_audio_path: The path to save the extracted audio file. audio_codec: The audio codec to use for the output (e.g., 'mp3', 'aac', 'wav'). Defaults to 'mp3'. Returns: A status message indicating success or failure.

ParametersJSON Schema
NameRequiredDescriptionDefault
video_pathYes
audio_codecNomp3
output_audio_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/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 burden of behavioral disclosure. It states that the tool saves the extracted audio and returns a status but does not clarify whether the original video is modified, what codecs are actually supported, or any prerequisites. The term 'extracts' could be misinterpreted as removing audio from the source, so transparency is lacking.

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 well-structured, with a one-sentence summary followed by clearly labeled Args and Returns sections. Every sentence serves a purpose, and there is no wasted wording.

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 simple tool with an output schema, the description covers all essential aspects: purpose, parameters, and return type. It could mention edge cases or explicitly state non-destructive behavior, but overall it is sufficiently 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.

Parameters5/5

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

The description thoroughly documents all three parameters, providing clear definitions and an example codec list. Since schema_description_coverage is 0%, this compensation fully addresses parameter semantics, earning a 5.

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

Purpose5/5

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

The description clearly states that the tool extracts audio from a video and saves it, using a specific verb and resource. This distinguishes it from sibling tools like convert_audio_format or trim_video by focusing on the extraction operation.

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 usage (when you need to extract audio from video) but provides no explicit guidance on when to use this tool versus alternatives such as convert_audio_format or convert_audio_properties. There are no exclusions or comparisons, so it scores a 3.

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

health_checkA

Returns a simple health status to confirm the server is running.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/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 states the tool returns a simple health status and confirms server running, implying a non-destructive, read-only operation. However, it does not disclose details like response format, potential delays, or authentication requirements, though the output schema exists.

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, focused sentence that delivers all essential information without unnecessary words. It is well-structured and immediately understandable.

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?

Given the tool's simplicity (zero parameters), the presence of an output schema, and the stark contrast with media-processing siblings, the description is complete. It effectively covers the tool's purpose and context without excess.

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?

The tool has zero parameters, and schema coverage is 100% (vacuously). With no parameters to explain, the description need not add parameter details. The baseline of 4 applies here.

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 clearly states the tool's function: "Returns a simple health status to confirm the server is running." It uses a specific verb (returns) and resource (health status), and uniquely distinguishes itself from all sibling tools, which are audio/video processing operations.

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?

The intended use is clearly implied: to check if the server is running. Since no alternative health-check tools exist among siblings, explicit exclusions are unnecessary. The description makes it obvious when this tool should be invoked versus any media-processing tool.

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

remove_silenceA

Removes silent segments from an audio or video file.

Args: media_path: Path to the input audio or video file. output_media_path: Path to save the media file with silences removed. silence_threshold_db: The noise level (in dBFS) below which is considered silence. min_silence_duration_ms: Minimum duration (in milliseconds) of silence to be removed. Returns: A status message indicating success or failure.

ParametersJSON Schema
NameRequiredDescriptionDefault
media_pathYes
output_media_pathYes
silence_threshold_dbNo
min_silence_duration_msNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/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 states the core behavior (removes silent segments) and indicates a status-message return, but does not disclose side effects such as whether the original file is preserved, overwrite behavior, or failure modes. It is not misleading, but it lacks deeper behavioral context.

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

Conciseness4/5

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

The description is well-structured with an Args/Returns format and front-loaded purpose statement. Each parameter line earns its place, though the overall length is slightly more than the minimum needed. No redundant fluff.

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 4-parameter tool, the description covers purpose, all parameters, and return value. Since an output schema is indicated, detailed return formatting is unnecessary. Minor gaps remain around edge cases like missing output directories or unsupported media types, but overall the tool is well specified.

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

Parameters5/5

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

Schema description coverage is 0%, and the description fully compensates by defining each parameter's purpose and units: 'noise level (in dBFS) below which is considered silence' and 'Minimum duration (in milliseconds) of silence to be removed.' This adds significant meaning beyond the bare schema titles.

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 'Removes' with a clear resource: 'silent segments from an audio or video file.' It clearly distinguishes itself from sibling tools like trim_video or convert_* because no other tool targets silence removal.

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?

The description clearly implies when to use the tool: whenever silent segments need to be removed from media. It does not mention explicit alternatives or exclusions, but the purpose statement itself provides clear context, and no sibling tool competes for this functionality.

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

set_audio_bitrateA

Sets the bitrate for an audio file.

Args: input_audio_path: Path to the source audio file. output_audio_path: Path to save the audio file with the new bitrate. bitrate: Target audio bitrate (e.g., '128k', '192k', '320k'). Returns: A status message indicating success or failure.

ParametersJSON Schema
NameRequiredDescriptionDefault
bitrateYes
input_audio_pathYes
output_audio_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

There are no annotations, so the description carries the full burden. It states the operation, the parameters, and that it returns a status message. However, it does not disclose whether the output file overwrites existing files, supported audio formats, or any potential side effects (e.g., re-encoding). This is a moderate gap 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?

The description is well-structured with an Args section and a Returns section. Each sentence serves a purpose: defining the operation, listing parameters with explanations, and indicating the return value. There is no wasted text, and the format is easy to scan.

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?

Given the simple nature of the tool (3 parameters, no nested objects), the description covers the required inputs and return type. However, it omits details about accepted audio formats, behavior when the output file already exists, and potential errors. These omissions are not severe but prevent it from being fully complete, especially with no annotations.

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

Parameters5/5

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

Schema coverage is 0% (no parameter descriptions in the schema). The description explicitly explains each parameter: input_audio_path, output_audio_path, and bitrate, including an example ('128k', '192k', '320k'). This adds significant semantic meaning beyond the schema, which only provides property names and types.

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 clearly states the tool's function: 'Sets the bitrate for an audio file.' This is a specific verb (sets) and resource (audio file bitrate), and it is easily distinguished from sibling tools like set_audio_sample_rate or set_audio_channels.

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?

The description provides clear context that this tool is for changing audio bitrate, with input and output paths. However, it does not explicitly mention when to use it over alternatives like convert_audio_properties, nor does it state exclusions. It is clear enough for most agents, but lacks explicit when-to-use guidance.

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

set_audio_channelsA

Sets the number of channels for an audio file (1 for mono, 2 for stereo).

Args: input_audio_path: Path to the source audio file. output_audio_path: Path to save the audio file with the new channel layout. channels: Number of audio channels (1 for mono, 2 for stereo). Returns: A status message indicating success or failure.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelsYes
input_audio_pathYes
output_audio_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description must convey behavioral traits. It explains the inputs and return type (status message) but does not disclose whether it overwrites an existing output file, preserves other audio properties, or has file format requirements. This is a moderate level of transparency for a simple 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?

The description is a well-structured docstring with a clear one-sentence summary followed by an Args section and Returns. Every sentence serves a purpose, and the most important information is front-loaded.

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?

The tool is simple, and the description covers the purpose, arguments, and return value. An output schema exists, so detailed return format is not needed. Minor gaps remain around overwrite behavior and workspace requirements, but the description is adequate for a straightforward file manipulation utility.

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 description coverage is 0%, so the description must compensate. It lists all three parameters and adds meaningful detail for 'channels' (1 for mono, 2 for stereo), clarifying the allowed values. The paths are self-explanatory, so the description adds value beyond the bare schema.

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, 'Sets the number of channels for an audio file,' and explicitly scopes to audio files with channel values. This clearly distinguishes it from sibling tools like set_audio_sample_rate and set_video_audio_track_channels.

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?

The description provides clear context: this tool is for setting channel count on audio files, with no ambiguity about its resource. However, it does not explicitly mention when to use it over alternatives like convert_audio_properties or set_video_audio_track_channels, so it lacks explicit exclusions or alternatives.

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

set_audio_sample_rateA

Sets the sample rate for an audio file.

Args: input_audio_path: Path to the source audio file. output_audio_path: Path to save the audio file with the new sample rate. sample_rate: Target audio sample rate in Hz (e.g., 44100, 48000). Returns: A status message indicating success or failure.

ParametersJSON Schema
NameRequiredDescriptionDefault
sample_rateYes
input_audio_pathYes
output_audio_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations provided, the description must disclose behavioral traits. It states that the output is saved to output_audio_path and that a status message is returned, but it does not mention whether existing files are overwritten, whether the input file is modified in place, or any format limitations. This is minimal but not entirely absent.

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 well-structured and concise: a one-line summary, a clear Args block, and a Returns line. Every sentence adds value, with no redundant or unnecessary text.

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 simple tool, the description covers all required parameters and the return value, making it largely complete. Minor gaps include lack of information about overwrite behavior and supported audio formats, but these are edge cases for a straightforward operation.

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

Parameters5/5

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

The input schema contains no parameter descriptions (0% coverage), but the description's Args section fully explains each parameter: input_audio_path, output_audio_path, and sample_rate with example values (44100, 48000). This thoroughly compensates for the schema's lack of descriptive information.

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

Purpose5/5

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

The description opens with 'Sets the sample rate for an audio file', using a specific verb and resource that directly matches the tool name. It clearly distinguishes this tool from siblings like set_audio_bitrate or set_audio_channels by focusing on the sample rate property.

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 usage when a user needs to change the sample rate of an audio file, but provides no explicit guidance on when to choose this tool over alternatives such as convert_audio_properties. No exclusions or alternative tool recommendations are mentioned.

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

set_video_audio_track_bitrateA

Sets the audio bitrate of a video's audio track, attempting to copy the video stream.

Args: input_video_path: Path to the source video file. output_video_path: Path to save the video with the new audio bitrate. audio_bitrate: Target audio bitrate (e.g., '128k', '192k'). Returns: A status message indicating success or failure.

ParametersJSON Schema
NameRequiredDescriptionDefault
audio_bitrateYes
input_video_pathYes
output_video_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations, the description carries full burden. It mentions 'attempting to copy the video stream' but does not disclose whether the audio is re-encoded, file overwrite behavior, failure handling, or required permissions. Missing critical mutation side effects.

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?

Cleanly structured with short description, args, and returns. Efficient and to the point, with no unnecessary 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?

For a simple 3-parameter mutation tool, the description covers parameter semantics and return value. However, it omits side effects like file overwriting and lacks usage guidance relative to siblings. Adequate but with clear gaps.

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 0%, but the description explains each parameter, including an example format for audio_bitrate ('128k', '192k'). This provides meaning beyond the bare type strings in the schema.

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 clearly states the action ('Sets the audio bitrate of a video's audio track') and resource, distinguishing it from sibling tools like set_audio_bitrate (which likely targets standalone audio) and set_video_audio_track_codec.

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?

Implies use for video files with audio tracks, but does not explicitly state when to use this tool over alternatives such as set_audio_bitrate or convert_audio_properties. No exclusions or alternative recommendations given.

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

set_video_audio_track_channelsA

Sets the number of audio channels of a video's audio track, attempting to copy the video stream.

Args: input_video_path: Path to the source video file. output_video_path: Path to save the video with the new audio channel layout. audio_channels: Number of audio channels (1 for mono, 2 for stereo). Returns: A status message indicating success or failure.

ParametersJSON Schema
NameRequiredDescriptionDefault
audio_channelsYes
input_video_pathYes
output_video_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It discloses that the tool 'attempts' to copy the video stream, indicating a potential fallback or limitation. It also notes the return value is a status message. However, it does not mention side effects like overwriting existing files, behavior for invalid audio_channels values, or any format compatibility constraints. The transparency is partial and not deeply detailed.

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 concise, front-loaded with the purpose, and structured clearly with Args and Returns sections. Every sentence earns its place, and there is no redundant or filler content. It efficiently conveys the operation and all parameter semantics.

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?

Despite having no annotations and a simple schema, the description covers the tool's purpose, all parameter meanings, and the return value, which is sufficient for basic invocation. However, it lacks guidance on edge cases (e.g., invalid channel counts, output overwriting, or video stream copy failure), and there is no explicit usage context beyond the implied use. For a tool of this complexity, it is mostly complete but has minor gaps.

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?

The input schema provides only titles and types with no descriptions (0% coverage). The description compensates by documenting all three parameters: input_video_path, output_video_path, and audio_channels, with a useful clarification that audio_channels takes 1 for mono and 2 for stereo. This adds meaning beyond the schema, though the explanations are brief.

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 clearly states the tool 'Sets the number of audio channels of a video's audio track, attempting to copy the video stream.' It specifies a precise action (set audio channels) targeting a specific resource (video's audio track) and distinguishes itself from siblings like set_audio_channels (which likely targets standalone audio files) by explicitly referencing a video context.

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 a use case (changing audio channels on a video while preserving video stream) but does not explicitly state when to choose this over alternatives or mention exclusions. Sibling tools exist (e.g., set_audio_channels for pure audio), but no direct comparison is given. The 'attempting to copy the video stream' hints at the intent to avoid re-encoding, which is useful, but explicit guidance is lacking.

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

set_video_audio_track_codecA

Sets the audio codec of a video's audio track, attempting to copy the video stream.

Args: input_video_path: Path to the source video file. output_video_path: Path to save the video with the new audio codec. audio_codec: Target audio codec (e.g., 'aac', 'mp3'). Returns: A status message indicating success or failure.

ParametersJSON Schema
NameRequiredDescriptionDefault
audio_codecYes
input_video_pathYes
output_video_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are present, so the description must carry the full burden of behavioral disclosure. It does mention 'attempting to copy the video stream,' which is a notable behavioral trait, and states that it returns a status message. However, it fails to specify failure behavior, whether the output file overwrites existing files, or if the input is preserved, leaving important safety information undisclosed.

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 concise and well-structured: a one-sentence summary, an Args list, and a Returns note. Each section provides necessary information without redundancy or filler, earning 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?

For a simple tool with three string parameters and an output schema, the description adequately covers the main purpose, parameter roles, and return value. However, it omits important context such as which audio track is targeted (e.g., first track), supported codec limitations, or how failures are handled. Given the abundance of closely related sibling tools, this lack of edge-case detail makes it only minimally complete.

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?

The input schema has no descriptions for any parameters, so the description compensates by listing all three parameters with brief role explanations. For audio_codec, it provides examples ('aac', 'mp3'), adding concrete meaning beyond the schema. It doesn't mention constraints or defaults, but the basic descriptions improve usability.

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 clearly states the tool's function with a specific verb and resource: 'Sets the audio codec of a video's audio track.' It distinguishes from sibling tools like set_video_audio_track_bitrate and set_video_audio_track_sample_rate by focusing on codec. The phrase 'attempting to copy the video stream' adds useful context about its behavior.

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 provides no explicit guidance on when to use this tool versus alternatives. It does not mention prerequisites, exclusions, or contrast with sibling tools such as convert_audio_format or set_audio_sample_rate. Usage must be inferred entirely from the function name and purpose statement.

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

set_video_audio_track_sample_rateA

Sets the audio sample rate of a video's audio track, attempting to copy the video stream.

Args: input_video_path: Path to the source video file. output_video_path: Path to save the video with the new audio sample rate. audio_sample_rate: Target audio sample rate in Hz (e.g., 44100, 48000). Returns: A status message indicating success or failure.

ParametersJSON Schema
NameRequiredDescriptionDefault
input_video_pathYes
audio_sample_rateYes
output_video_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations provided, the description must carry the full burden of behavioral disclosure. It does mention a key behavior (attempting to copy the video stream) and the return type (status message), but it lacks details on fallback behavior if copying fails, potential overwrite semantics, or side effects. This gives some transparency but leaves important 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 concise and well-structured: a one-sentence summary, then a clearly separated Args section with per-parameter explanations, and a Returns line. Every part earns its place without redundancy or unnecessary detail.

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 simple three-parameter tool, the description covers the main action, parameter meanings, and return value. It is fairly complete, but it could be more complete by explaining the implications of 'attempting' to copy the video stream (e.g., what happens if it fails) and any required dependencies. These are minor omissions given the tool's simplicity.

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

Parameters5/5

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

Schema description coverage is 0%, so the description fully compensates by providing clear one-line explanations for each parameter. It clarifies that input_video_path is the source, output_video_path is the destination, and audio_sample_rate is in Hz with examples. This adds meaningful semantics beyond the raw schema.

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 clearly states a specific action: "Sets the audio sample rate of a video's audio track, attempting to copy the video stream." This distinguishes it from siblings like set_audio_sample_rate (which likely operates on standalone audio files) and other video/audio track tools by emphasizing the video context and stream preservation attempt.

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 guidance is only implied through the description's focus on video and the mention of copying the video stream. It does not explicitly state when to use this tool versus alternatives such as set_audio_sample_rate or extract_audio_from_video, nor does it mention any exclusions or prerequisites.

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

set_video_bitrateA

Sets the video bitrate of a video, attempting to copy the audio stream.

Args: input_video_path: Path to the source video file. output_video_path: Path to save the video with the new video bitrate. video_bitrate: Target video bitrate (e.g., '1M', '2500k'). Returns: A status message indicating success or failure.

ParametersJSON Schema
NameRequiredDescriptionDefault
video_bitrateYes
input_video_pathYes
output_video_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

The description includes a behavioral note: 'attempting to copy the audio stream', which implies the video will be re-encoded and audio preserved. However, it does not disclose potential downsides like quality loss, file size changes, or any failure conditions. With no annotations to rely on, the description only partially carries the transparency burden.

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 concise and well-structured: a one-sentence summary, followed by a bulleted Args list, and a Returns line. Each sentence earns its place with no redundancy or fluff.

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?

Given the 3-param tool with no annotations, the description covers the key aspects: all parameters are explained, the return value is indicated, and the crucial audio-copy behavior is mentioned. Minor gaps include no mention of error handling or supported formats, but the essential information for correct invocation is present.

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

Parameters5/5

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

The schema provides no descriptions (0% coverage), but the description's Args section fully explains each parameter: input_video_path is the source, output_video_path is the destination, and video_bitrate includes format examples ('1M', '2500k'). This adds significant meaning beyond the raw schema, which only lists names.

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+resource: 'Sets the video bitrate of a video'. It distinguishes itself from audio bitrate tools by explicitly mentioning video, and adds a nuance about attempting to copy the audio stream. This clearly identifies its purpose among sibling tools.

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 is given on when to use this tool versus alternatives. It doesn't mention exclusions, related tools, or scenarios where another tool would be more appropriate. The description is purely functional without contextual usage advice.

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

set_video_codecA

Sets the video codec of a video, attempting to copy the audio stream.

Args: input_video_path: Path to the source video file. output_video_path: Path to save the video with the new video codec. video_codec: Target video codec (e.g., 'libx264', 'libx265', 'vp9'). Returns: A status message indicating success or failure.

ParametersJSON Schema
NameRequiredDescriptionDefault
video_codecYes
input_video_pathYes
output_video_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 burden. It mentions the audio copy attempt and a status message return, but does not disclose side effects like file overwriting, whether the input is modified, codec prerequisites, or failure conditions beyond 'success or failure'.

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 compact docstring with a clear main sentence, an Args list, and a Returns note. Every sentence earns its place; there is no fluff or repetition.

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 description covers the core operation and parameters well, but lacks usage context needed to choose among many video-related siblings. It does not clarify when to prefer this over more general converters, and the 'attempting' wording leaves important failure behavior unstated.

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 0%, but the description's Args section provides a one-line explanation for each of the three parameters and gives concrete examples for video_codec. This adds meaning beyond the bare schema field names.

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 clearly states the operation with a specific verb ('Sets') and resource ('the video codec of a video'), and adds a distinguishing nuance ('attempting to copy the audio stream'). This differentiates it from sibling tools like set_video_bitrate or convert_video_format.

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 is provided on when to use this tool versus alternatives such as convert_video_properties or set_video_audio_track_codec. The description simply states the action without any context, exclusions, or mention of use cases.

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

set_video_frame_rateA

Sets the frame rate of a video, attempting to copy the audio stream.

Args: input_video_path: Path to the source video file. output_video_path: Path to save the video with the new frame rate. frame_rate: Target video frame rate (e.g., 24, 30, 60). Returns: A status message indicating success or failure.

ParametersJSON Schema
NameRequiredDescriptionDefault
frame_rateYes
input_video_pathYes
output_video_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

The description discloses that the tool 'attempt[s] to copy the audio stream,' which is a useful behavioral trait not evident from the schema, and it states the return format ('A status message indicating success or failure'). However, with no annotations, the description carries the full burden, and it does not explain potential side effects (e.g., what happens if audio copying fails, whether the input file is preserved, or if the frame rate change alters video duration or speed). This is adequate but not rich.

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 efficiently structured with a clear one-line purpose, an Args block, and a Returns note. Every sentence earns its place with no redundant or vague content. The length is appropriate for a three-parameter tool.

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 simple setter tool, the description covers the operation, parameters, and return type. It does not address edge cases (e.g., invalid frame rates, what 'attempting to copy audio' implies for the output), but given the simple nature and existence of an output schema, the description is sufficiently complete for an agent to select and invoke the tool correctly. A 5 would require additional behavioral detail on failure scenarios or prerequisites.

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

Parameters5/5

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

The schema provides zero parameter descriptions, so the description fully compensates by explaining each parameter: input_video_path, output_video_path, and frame_rate. It even gives examples for frame_rate (24, 30, 60). This adds significant meaning beyond the raw schema and makes correct invocation straightforward.

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 clearly states the tool's function: 'Sets the frame rate of a video' with a specific verb and resource. It also distinguishes from siblings by noting it copies the audio stream, which is not mentioned in sibling tools like set_video_resolution or convert_video_properties. The resource is unambiguous and action is precise.

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?

The description establishes clear context for when to use the tool: whenever the frame rate of a video needs to be changed. However, it does not explicitly mention when not to use it or provide alternative tool recommendations (e.g., convert_video_properties for broader changes). The context is clear but exclusions are absent, so it does not reach a 5.

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

set_video_resolutionA

Sets the resolution of a video, attempting to copy the audio stream.

Args: input_video_path: Path to the source video file. output_video_path: Path to save the video with the new resolution. resolution: Target video resolution (e.g., '1920x1080', '1280x720', or '720' for height). Returns: A status message indicating success or failure.

ParametersJSON Schema
NameRequiredDescriptionDefault
resolutionYes
input_video_pathYes
output_video_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 burden of behavioral disclosure. It adds the fact that it attempts to copy the audio stream and returns a status message, but it does not detail failure scenarios, required codecs, or whether the operation is reversible. This is a moderate level of transparency.

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 concise and well-structured: a one-sentence summary followed by a clean argument list and return value note. Every word contributes to clarity without redundancy.

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?

All required parameters are described, and the return value is indicated. Minor gaps exist around error handling and edge cases (e.g., unsupported resolution formats), but overall it is sufficient for a straightforward video-processing tool with an output schema.

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

Parameters5/5

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

The schema provides no descriptions, so the tool description fully documents all three parameters with clear purposes and examples (e.g., resolution formats). This adds significant meaning beyond the bare schema, making it easy to construct correct inputs.

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 clearly states the tool's function: 'Sets the resolution of a video' with the added detail of attempting to copy the audio stream. This distinguishes it from sibling tools like set_video_bitrate or set_video_frame_rate, which target other properties.

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 provides no guidance on when to use this tool versus alternatives, such as change_aspect_ratio or convert_video_properties. It does not mention exclusions or prerequisites, leaving the user to infer usage solely from the tool's name and basic description.

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

trim_videoA

Trims a video to the specified start and end times.

Args: video_path: The path to the input video file. output_video_path: The path to save the trimmed video file. start_time: The start time for trimming (HH:MM:SS or seconds). end_time: The end time for trimming (HH:MM:SS or seconds). Returns: A status message indicating success or failure.

ParametersJSON Schema
NameRequiredDescriptionDefault
end_timeYes
start_timeYes
video_pathYes
output_video_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.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 burden. It states the basic operation and return message but does not disclose potential side effects such as overwriting existing output files, whether the input file is modified, codec compatibility, or dependencies like ffmpeg. This lack of behavioral detail is a significant gap for a file-modifying 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?

The description is front-loaded with a single-sentence summary of the operation, followed by a structured Args list and Returns line. Every sentence provides necessary information with no filler. It is well-organized and appropriately sized for a 4-parameter tool.

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?

The description covers all parameters and the return value, making it sufficient for basic invocation. However, it lacks context on edge cases (e.g., invalid time ranges), overwrite behavior, or prerequisites. Since an output schema exists, return details are not needed, but the omission of potential failure modes and operational nuances leaves it slightly incomplete.

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

Parameters5/5

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

The input schema has 0% description coverage, only listing parameter names and types. The description compensates fully by detailing each parameter, including the role of video_path and output_video_path and the accepted formats for start_time and end_time (HH:MM:SS or seconds). This adds crucial meaning beyond the schema.

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 clearly states the action "Trims a video to the specified start and end times" with a specific resource (video) and parameters. This distinguishes it from sibling tools like set_video_resolution or change_video_speed, which handle different aspects of video editing.

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?

The description implies the use case (creating a subclip from a video) and is unambiguous among siblings, but it does not explicitly state when to use this tool versus alternatives or mention exclusions. The clear purpose provides context, but without explicit guidance it falls short of a 5.

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. 27 tool updatesv1.0.0
    • First observedadd_b_roll
    • First observedadd_basic_transitions
    • First observedadd_image_overlay
    • First observedadd_subtitles
    • First observedadd_text_overlay
    • First observedchange_aspect_ratio
    • First observedchange_video_speed
    • First observedconcatenate_videos
    • First observedconvert_audio_format
    • First observedconvert_audio_properties
    • First observedconvert_video_format
    • First observedconvert_video_properties
    • First observedextract_audio_from_video
    • First observedhealth_check
    • First observedremove_silence
    • First observedset_audio_bitrate
    • First observedset_audio_channels
    • First observedset_audio_sample_rate
    • First observedset_video_audio_track_bitrate
    • First observedset_video_audio_track_channels
    • First observedset_video_audio_track_codec
    • First observedset_video_audio_track_sample_rate
    • First observedset_video_bitrate
    • First observedset_video_codec
    • First observedset_video_frame_rate
    • First observedset_video_resolution
    • First observedtrim_video

TDQS

A3.8/5.0

Scored across 27 tools

Disambiguation3/5

Several tools have overlapping purposes, such as the single-property setters (set_audio_sample_rate, set_audio_bitrate, etc.) versus the all-in-one converters (convert_audio_properties, convert_video_properties). The descriptions help clarify usage, but an agent could easily select the wrong tool when simple format conversion is needed because both convert_audio_format and convert_audio_properties perform that task.

Naming Consistency4/5

Tool names mostly follow a verb_noun pattern (set_*, convert_*, add_*), with clear prefixes for different actions. There are minor deviations like 'change_aspect_ratio' and 'change_video_speed' instead of 'set_*', and 'health_check' does not fit the pattern, but overall the naming is predictable and readable.

Tool Count3/5

At 27 tools, the server is on the higher end, but the breadth of FFmpeg operations justifies many of them. However, the count is inflated by redundant single-property setters that could be consolidated into the existing property conversion tools, making the set feel heavier than necessary.

Completeness4/5

The server covers a wide range of common media operations: audio/video format conversion, property adjustments, trimming, speed changes, overlays, subtitles, concatenation, and silence removal. Minor gaps exist, such as video rotation or cropping to specific dimensions, but the core workflows are well represented.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Provides powerful video and audio editing capabilities through FFmpeg, enabling AI assistants to perform professional-grade operations including format conversion, trimming, overlays, transitions, and advanced audio processing.
    27
    84
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that provides 17 FFmpeg-based tools for video and audio processing, including conversion, compression, and editing. It enables AI assistants to perform complex media tasks like extracting audio, adding watermarks, and merging videos using natural language.
    142 npm
    2
    -