FFmpeg operations as LLM-callable tools — clip, merge, extract audio, add subtitles, transcode.
ff-kit exposes 5 FFmpeg tools with complete input schemas and reasonable descriptions. All tools follow verb_noun naming (ffkit_clip, ffkit_merge, etc.). Schemas include type definitions and parameter descriptions. However, descriptions are generic and lack LLM-optimized guidance on when to use each tool vs. alternatives. Output schemas are not documented. Error handling is minimal, no recovery guidance or categorization. Parameter descriptions lack format constraints (e.g., time format examples are vague). No tool annotations (destructiveHint, idempotentHint) despite all tools being write operations. Missing documentation of mutually exclusive parameters (e.g., end vs. duration in ffkit_clip).
Add subtitles to a video. Burn (hard-code into pixels) or embed as a soft subtitle stream.
Trim a segment from a media file. Specify start + end or start + duration. Time format: HH:MM:SS.ms or seconds.
Extract the audio stream from a video/audio file.
Concatenate multiple media files into one.
Transcode a media file with full control over codecs and quality. Convert format, codec, resolution, bitrate, frame rate, and more.
No output schema documentation. LLMs cannot plan downstream operations or extract return values. All 5 tools lack documented return types.
Descriptions lack LLM-optimized guidance. Generic descriptions (e.g., 'Concatenate multiple media files into one') do not explain WHEN to use this tool vs. alternatives, prerequisites, or side effects. Baseline: 194 chars avg; these are 50-100 chars.
No tool annotations despite all tools being destructive (WRITE risk). Missing destructiveHint, idempotentHint, readOnlyHint annotations. Agents cannot reason about retry safety or side effects.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Mutually exclusive parameters not documented. ffkit_clip has 'end' and 'duration' marked mutually exclusive in description, but ffkit_merge 'method' enum values lack explanation of when to use 'concat_demuxer' vs 'concat_filter'.
No error recovery guidance. Tools return status='error' but provide no actionable next steps. E.g., if ffmpeg binary is missing or a file is corrupted, the LLM receives no guidance on how to proceed.