Model Context Protocol server

Let your agent watch the video.

Language models cannot open a video file. Playhead turns any TikTok, YouTube, X or local clip into contact sheets with the timestamp burned onto every frame — so the answer comes back anchored to a second, not a guess.

Start freeInstall in your agent60 credits a month, no card

Side by side

The same request, put to the agent twice.

Agent with a browserno video access

New reel is up: tiktok.com/@northlight/video/7411… The interior reveal is the hook. Does it land fast enough, or do I cut into it later?

fetchno result
url: https://www.tiktok.com/@northlight/video/7411…
text/html · 214 KB
player shell — the video itself is not in the page
usable: title, caption, like count

I can't see the reel — the link gives me a player page, not frames. From the caption (“white drop-top, orange inside”) I'd guess it's a walkaround. The general rule: put the reveal inside the first second and don't hold a shot past four. If you tell me roughly what happens when, I'll suggest cut points from your description.

0 frames seen · advice that fits any video

Same agent, Playhead connectedplayhead · mcp

New reel is up: tiktok.com/@northlight/video/7411… The interior reveal is the hook. Does it land fast enough, or do I cut into it later?

The hook is the opening two seconds, so I'll look at those closely.

playhead · watch_videodone
url: https://www.tiktok.com/@northlight/video/7411…
start: 0.9
end: 2.5
detail: "detail"
Eight frames spanning 0.9 to 2.5 seconds: one continuous camera push past an open door into an orange leather interior
8 frames · 5 fps · 200 ms apart · tiles 4× larger
tiktok · 9:16 · timestamp burned into every frame
1 credit

One continuous push, no cut in that window. The door is still swinging at 00:00.90 and the frame is mostly white paint until 00:01.10. The orange only reads at 00:01.30, and the cockpit is fully open at 00:02.10. So the payoff sits 1.2 s in — on a muted autoplay feed that's the whole hook spent on a door. Start the clip at 00:01.10 and the reveal lands inside the first second. 00:02.10 is the framing worth holding.

1 call · detail · 1 credit · four timecodes you can type into the timeline

A replay, not a live call — the frames, the timestamps and the credit figures are what the engine returned.

Three jobs out of an edit suite, replayed as they run. On the left an agent with a browser and no eyes. On the right the same agent with Playhead connected. Nothing else about the two is different.

How it works

A video becomes a grid the model can read.

Frames

Every frame is placed and labeled

Frames are extracted at a fixed rate and laid out in reading order. The timestamp is burned into the pixels, so the model cannot lose track of when something happened.

Coverage

Nothing is quietly left out

Ask without a window and you get the complete video. Every response states what it covered, where the gaps are, and the exact call that would fill them.

Budget

Detail costs tiles, not pixels

Looking closer means fewer frames per sheet, never a bigger image — models downscale anything past 1568 px. That keeps a close-up legible instead of just expensive.

Six levels

From surveying an hour to reading a single frame of animation.

The agent picks the level from the question. Higher levels cost more context, so the server limits how long a window may be — and when a request is too long, it answers with the call that would work instead.

LevelRatePer sheetMax windowAnswers
overview0.5–2 fps30 framesno limitWhat is this video, start to end
standard5 fps30 framesno limitWhat happens when — cuts, overlays, entrances
detail5 fps6 frames30 sObjects and text blocks, tiles four times larger
fine10 fps2 frames10 sType, logos, subtle transitions
motion30 fps2 frames3 sAnimation, easing, dropped frames
singleone frame1 framea momentReading text at full resolution

Motion

Two frames, 33 milliseconds apart.

At 30 fps the sheet holds two frames, so easing, bounce and dropped frames are visible as difference rather than description. This is the level that answers “why does that transition feel wrong”.

Billed per second, not per minute — it extracts six times the frames.

Two consecutive frames 33 milliseconds apart, each labeled with its exact timestamp

Install

Connect it to the agent you already use.

One click for Claude, Cursor, VS Code and LM Studio. One line for Claude Code and Codex. You sign in with your account instead of pasting a key, so nothing here is a secret and the same connection works on every machine you use.

Add to ClaudeWeb, desktop and mobile. Opens the connector dialog with the URL filled in.

Server URL

https://mcp.tryplayhead.com/mcp

If a link above does nothing, that app is not installed — paste this URL into its MCP settings instead.

Questions

What people ask before they connect it.

Can an AI agent watch a video?
Not on its own — a language model cannot decode a video file, so it answers from the title, description or transcript instead. Playhead is an MCP server that turns the video into contact sheets: grids of frames with the timestamp burned into the pixels, which the model can actually look at.
How do I let Claude watch a YouTube or TikTok video?
Add Playhead as a custom connector in Claude — Settings, Connectors, Add custom connector, and paste https://mcp.tryplayhead.com/mcp. You sign in with your Playhead account rather than pasting an API key, and it then works in Claude on the web, on desktop and on your phone.
Do I need ffmpeg or yt-dlp installed?
No. Downloading, frame extraction and transcription all run on Playhead's servers. That is what makes it work in Claude on the web and on phones, where a local script cannot run at all.
How closely can it look?
Six levels, from 0.5 frames per second across a whole hour to 30 frames per second, where two consecutive frames on one sheet are 33 milliseconds apart. That last level is what makes easing, bounce and dropped frames visible as difference rather than description.
Can it read text on screen?
Yes. inspect_frame returns one frame at 1560 pixels wide, which is the size at which small UI text and captions stay legible to a model. watch_video finds the moment; inspect_frame reads it.
Does it work with my own files?
Yes. In any client with a filesystem — Claude Code, Cursor, VS Code — pass a path like ~/Movies/cut.mov. The file is uploaded once and reused for every later call, so your own edits, screen recordings and exports are analysable without publishing them anywhere.

Stop describing the video to your agent.