CueVideo answers with timestamp-level proof.
The default read is container metadata, streams, chapters, and embedded subtitles. Scenes are a separate request. A frame is a separate tool.
The default read is container metadata, streams, chapters, and embedded subtitles. Scenes are a separate request. A frame is a separate tool.
Cue reads a local file with ffprobe and ffmpeg. The default profile is fast. It does not detect scenes, extract frames, or run speech recognition. quality adds scene boundaries. One frame is video_evidence.
“The pricing line is somewhere in the middle.” No stream, no cue, no warning if the file has no subtitles.
container and streams from ffprobe · chapter start_ms when the file has chapters · subtitle start_ms / end_ms / text when a subtitle stream exists · a warning when it does not.
When an embedded subtitle stream exists, each cue has this shape. The numbers and the words come from that file. This page does not invent them.
{
"index": 0,
"start_ms": 0,
"end_ms": 0,
"text": "cue text",
"provenance": { "method": "ffmpeg_extract", "format": "srt" }
}method is ffmpeg_extract and format is srt. index, start_ms, end_ms, and text are filled from the first subtitle stream. If that stream is missing, the read still returns the probe and adds the warning “No readable embedded subtitle stream was found.”
One npx line. A stdio MCP server starts for Claude, Cursor, VS Code, Codex, or any other MCP client. No API key. ffmpeg and ffprobe must be on PATH.
read_video with no profile is fast. search_video matches embedded subtitle text only. It does not run speech recognition.
Use start_ms and the source hash. For a picture of that moment, call video_evidence with the timestamp. Do not describe a frame the tool did not return.
Scene detection decodes the file. It does not run unless you set profile to quality or set include_scenes. Nothing in the default read samples frames.
fast returns format, streams, chapters, and embedded subtitles. quality adds ffmpeg scene changes at threshold 0.4 unless you set another. A scene object is time_ms plus provenance.method ffmpeg_scene_filter.
Finds the query in embedded subtitle cues and returns start_ms and end_ms. No transcript is created for the search.
Named follow-up. op is render_frame, crop_frame, or ocr_frame at one timestamp. It is not part of read_video.
quality or include_scenes.include_keyframes and include_transcript warn and return no frames and no transcript.These are the switches in the shipped Rust server, not a speed benchmark. npx -y @sylphx/cue runs that server. A missing ffprobe is an error, not a guessed timeline.
npx -y @sylphx/cue{
"mcpServers": {
"cue": { "command": "npx", "args": ["-y", "@sylphx/cue"] }
}
}claude mcp add cue -- npx -y @sylphx/cuenpx -y @sylphx/cueNo API key. Scenes stay off until you ask. A frame is a tool you name.