
Eyes and ears for AI agents: measured cuts, easing, palette, beats and transcripts from any video.
Public tool metadata for what this MCP can expose to an agent.
planStart here for any video. Classifies it (talking head, screen, motion graphics, music video, live action), reads the goal from the request (`listen`, `learn`, `find`, `style`, `sound`, `production`) and lists the steps with an image-token estimateStart here for any video. Classifies it (talking head, screen, motion graphics, music video, live action), reads the goal from the request (`listen`, `learn`, `find`, `style`, `sound`, `production`) and lists the steps with an image-token estimate
No parameter schema in public metadata yet.
probeFetches the source; duration, size, frame rate (variable or not), HDR, audio, captions, workspace folderFetches the source; duration, size, frame rate (variable or not), HDR, audio, captions, workspace folder
No parameter schema in public metadata yet.
transcriptWord-timed transcript from captions (Gemini as a fallback for YouTube)Word-timed transcript from captions (Gemini as a fallback for YouTube)
No parameter schema in public metadata yet.
framesFrames and contact sheets with time, frame number and the words spoken under each picture: `at`, `every`, `fps`, `every_frame` (every native frame with real timestamps) or `around` a phraseFrames and contact sheets with time, frame number and the words spoken under each picture: `at`, `every`, `fps`, `every_frame` (every native frame with real timestamps) or `around` a phrase
No parameter schema in public metadata yet.
boundariesWhere the picture changes abruptly, scored, plus how dynamic the video isWhere the picture changes abruptly, scored, plus how dynamic the video is
No parameter schema in public metadata yet.
styleCuts told apart from fast motion and flashes, dissolves, fades, dips through black or white and wipes (derived), shots split at them with palettes, moves with duration and easing family; writes `motion-spec.json`, `STYLE.md`, `TIMELINE.md`, `ANALYSIS.md`Cuts told apart from fast motion and flashes, dissolves, fades, dips through black or white and wipes (derived), shots split at them with palettes, moves with duration and easing family; writes `motion-spec.json`, `STYLE.md`, `TIMELINE.md`, `ANALYSIS.md`
No parameter schema in public metadata yet.
trackFollows one element (found automatically or from a box) and fits the exact curve of each property that moves (x, y, scale, opacity): `cubic-bezier`, spring (stiffness, damping, mass), linear or steps, with fit error, duration in frames, delay and a quality grade; writes `TRACK...Follows one element (found automatically or from a box) and fits the exact curve of each property that moves (x, y, scale, opacity): `cubic-bezier`, spring (stiffness, damping, mass), linear or steps, with fit error, duration in frames, delay and a quality grade; writes `TRACK...
No parameter schema in public metadata yet.
audioLoudness (LUFS), silences, onsets, tempo and beats, cuts on the beat, spectrogramLoudness (LUFS), silences, onsets, tempo and beats, cuts on the beat, spectrogram
No parameter schema in public metadata yet.
exportStarter project from the motion spec (see [Exports](#exports))Starter project from the motion spec (see [Exports](#exports))
No parameter schema in public metadata yet.
compareYour render against the reference: duration, cuts matched within 3 frames, palette distance, picture similarity, the least similar moments side by sideYour render against the reference: duration, cuts matched within 3 frames, palette distance, picture similarity, the least similar moments side by side
No parameter schema in public metadata yet.
webA live page's animations read exactly from the browser (CSS, Web Animations, Motion, GSAP), scroll-triggered ones too, plus real fonts and colours (needs Chrome or Edge and Node 22+). They are recorded from the first frame, so page-load animations that end before the page is r...A live page's animations read exactly from the browser (CSS, Web Animations, Motion, GSAP), scroll-triggered ones too, plus real fonts and colours (needs Chrome or Edge and Node 22+). They are recorded from the first frame, so page-load animations that end before the page is r...
No parameter schema in public metadata yet.
exactLottie / dotLottie, Rive (`.riv`: artboards, timelines, curves, state machines) and Figma prototype transitions, read from the source's own dataLottie / dotLottie, Rive (`.riv`: artboards, timelines, curves, state machines) and Figma prototype transitions, read from the source's own data
No parameter schema in public metadata yet.
summarize_youtube_videoGemini-based tool for YouTube links (requires your own GEMINI_API_KEY); timing and colour are described by the model, not measuredGemini-based tool for YouTube links (requires your own GEMINI_API_KEY); timing and colour are described by the model, not measured
No parameter schema in public metadata yet.
ask_about_youtube_videoGemini-based tool for YouTube links (requires your own GEMINI_API_KEY); timing and colour are described by the model, not measuredGemini-based tool for YouTube links (requires your own GEMINI_API_KEY); timing and colour are described by the model, not measured
No parameter schema in public metadata yet.
extract_key_momentsGemini-based tool for YouTube links (requires your own GEMINI_API_KEY); timing and colour are described by the model, not measuredGemini-based tool for YouTube links (requires your own GEMINI_API_KEY); timing and colour are described by the model, not measured
No parameter schema in public metadata yet.
get_video_transcriptGemini-based tool for YouTube links (requires your own GEMINI_API_KEY); timing and colour are described by the model, not measuredGemini-based tool for YouTube links (requires your own GEMINI_API_KEY); timing and colour are described by the model, not measured
No parameter schema in public metadata yet.
list_supported_modelsGemini-based tool for YouTube links (requires your own GEMINI_API_KEY); timing and colour are described by the model, not measuredGemini-based tool for YouTube links (requires your own GEMINI_API_KEY); timing and colour are described by the model, not measured
No parameter schema in public metadata yet.
Sponsors
GEMINI_API_KEYsecretOptional. Google Gemini API key, only for the Gemini YouTube tools; the local tools need no key.
GEMINI_MODEL_NAMEdefault: gemini-flash-lite-latestOptional. Gemini model for the Gemini tools.
FRAMELENS_WORKSPACEOptional. Folder for results; defaults to .framelens in the working folder (or ~/.framelens).
FRAMELENS_AUTO_INSTALLOptional. Set to 0 to stop the automatic, hash-checked download of a missing ffmpeg or yt-dlp.
Eyes and ears for AI agents. Give your agent any video or animation and a goal in plain words.
It gets back measurements, not retellings: cuts to the frame, exact easing curves, colour, beats and word-timed speech.
framelens