video_url_start
Starts visual analysis of a public video or video-page URL, extracting timestamped frames from a chosen time range with optional stream fallback for retrieval failures.
Instructions
Analyze a public HTTP(S) video or video-page URL. Prefers streaming through one FFmpeg decoder. videoFallback=on_failure (default): after two source-stream attempts with bounded HTTP reconnects fail, downloads the complete same resolved video track (may be video-only), checks duration, then feeds the local file into the same visual analysis for unfinished ranges. never disables complete-download fallback. Prior partial images remain at their existing indices; retries may repeat media times. videoTransfer exposes mode/reason/progress/local file without signed URLs. Cancellation, source rejection, policy/disk/output/network limits must not trigger a fallback. Original mediaId and separate subtitle/audio binding remain intact. Supported media include MP4, HLS, DASH; page resolution uses yt-dlp and depends on site availability. Default analysis=continuous, quality=low (page streams prefer <=480p); overview samples 8 short windows across the range, NOT full coverage. start/end are source seconds. sourceType=auto recognizes media extensions; use direct for extensionless media or page to force extraction. A multi-video page/playlist analyzes videoIndex (1-based, default 1), not all videos. No browser cookies, DRM or live-web-stream support. Returns task metadata only by default; firstImage=true explicitly opts into waiting up to 5s for a first selected image. If an image is returned, inspect or release its batch before video_next/video_read. Use audio_url_start for text-only media processing without creating images. Limits: 1GiB network, 30min processing, 5000 images. Network analysis is independent of browser playback. Images default to format=jpeg (FFmpeg q:v4, 4:4:4); request format=png for original PNG detail. Encoding is cancellable with 2 active conversions per MCP process, at most 24 queued, a 30s queue deadline and a 10s execution deadline. Every image response is limited to 8MiB encoded bytes. Saved storyboard PNGs are retained. Acknowledge the pending batch before switching formats; replay preserves its original format and bytes.
The HOST chooses evidence depth from the user request and actual subtitle/ASR quality and coverage: text alone, selected storyboards, all storyboards, or targeted higher-quality follow-up. Subtitles, ASR and images are independently optional; choose any combination. For text-only media use audio_start/audio_url_start (audio-bearing video files/pages are accepted) without a visual job. No mandatory image retrieval, all-images rule, fixed answer format or mandatory ASR. Use video_review action=plan to record visual=none|selected|all; revise as evidence changes. Missing subtitles do NOT block usable images, and a video-only stream does not prove missing source audio. Each image response has a pending batch. Return images AND timestamp metadata to the model, inspect the chosen images, then call video_review action=ack with batchId and explicit viewedIndices (empty [] releases uninspected images without credit). ONLY THEN fetch another batch. Never accumulate many video_read calls inside one code/exec result: return control to the model after each bounded batch. Transport errors leave the batch pending: video_review replay retries it; status/reviewId support resume. Acknowledgement is a caller assertion, not proof of comprehension. Keep any semantic working notes in the Agent workspace, not in MCP evidence. Before finishing, video_review finish checks only the HOST-CHOSEN visual scope and pending image receipts, not text reading completion. The host must still judge if that scope answers the user, and state relevant gaps. Honest incomplete-work disclaimers do not justify abandoning feasible work. session_stop cleanup cancels processing but does not complete reading; user_cancelled is only for an explicit user cancellation. Audio-only workflows remain independent.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"url": "<url>"
},
"name": "video_url_start"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ||
| url | Yes | ||
| pace | No | ||
| scene | No | ||
| start | No | ||
| format | No | ||
| quality | No | ||
| samples | No | ||
| analysis | No | ||
| firstImage | No | ||
| sourceType | No | ||
| videoIndex | No | ||
| videoFallback | No |