// the take
An MCP server / Agent Skill that exposes 42 Python-stdlib wrappers around ffmpeg/ffprobe as typed tools, so Claude Code, Cursor or Codex can cut, caption, reframe, normalize loudness and export video without shelling out to raw ffmpeg strings. It's for people building or using coding-agent workflows that touch video/audio locally and want structured, verifiable operations instead of an agent guessing filter graphs.
The input schema for every tool is generated at runtime from each script's own argparse parser, and CI fails the build if the contract, docs or MCP tool definitions drift from it — this kills the usual problem of hand-maintained API specs rotting out of sync with the code. cut.py, join.py and loudness.py stream-copy by default and only re-encode when a filter or frame-accurate edit actually requires it, which matters a lot for anyone scripting batch transcodes. doctor probes the actual ffmpeg build for the specific encoders/filters/fonts each tool needs (three-state: available/missing/unknown) rather than assuming a generic 'ffmpeg is installed' check, so capability mismatches surface before a job runs instead of mid-encode. No tool invokes a shell or accepts a raw filter string from the caller — arguments are typed and range-checked, which closes off the obvious command-injection surface you'd otherwise get wrapping ffmpeg.
Its 'verification after execution' step (look.py) only renders a contact-sheet PNG — nothing in the repo does scene/face/content detection, so correctness still depends entirely on the calling LLM actually looking at the image and judging it; a non-multimodal caller gets no real QA. It's fully dependent on the local ffmpeg build's compiled filters/encoders (libass, zscale, loudnorm, etc.), so behavior is genuinely different across a Homebrew build, a Linux distro package and a Windows build — doctor mitigates this but doesn't eliminate the fragmentation. The project sits at the center of a sprawling single-maintainer ecosystem of a dozen+ sibling repos (video-production-agent, remotion-ffmpeg-skill, etc.) that all consume this one's contract — a breaking contract change or the maintainer stepping away has a much bigger blast radius than the repo's own scope suggests. There's no queueing, retry or concurrency model beyond batch.py's --jobs N; it's a synchronous CLI/MCP tool, not something you'd drop into a server-side pipeline processing uploads at volume without building that infrastructure yourself.
We read the README, the directory tree and a key source file in October 2026. Nobody pays to be listed. How we judge →