Refs
REMOTE · REFS.VIDEO
Free search of 4,100 launch videos measured shot by shot. Pro: blueprints and film plans.
Available components
Last scanned (20 hours ago)
Scores higher than 93% of remote servers
Reachable. Last reached 4 Nov 2026.
Category Design and Media
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security97
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token. View diagnostics → Pass
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
- The authorisation server supports Client ID Metadata Documents, the current MCP client-registration mechanism. View diagnostics → Pass
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability71
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 6379 tokens (~425/item across 15 items; 14 tools + 1 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management50
- Stability observed for 15 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage95
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 85% of tool parameters carry a description.Partial
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 14 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 15 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
- Supports UI / widget rendering.Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 3 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 43 to 47. That category is still filling its 30-day observation window: 13 days of observed history at the previous scan, 14 at this one. The score rises as the window fills, whether or not the server changes.
- 1 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 37 to 40. That category is still filling its 30-day observation window: 11 days of observed history at the previous scan, 12 at this one. The score rises as the window fills, whether or not the server changes.
- 30 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 30 to 33. That category is still filling its 30-day observation window: 9 days of observed history at the previous scan, 10 at this one. The score rises as the window fills, whether or not the server changes.
- 29 Oct 26 +44
- Transport: unverified → pass ▲ security
- Injection markers: unverified → pass ▲ security
- Authorization: Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token. security
- Tool “check_render” rewrote its description, which is the text the model reads security
- Tool “get_blueprint” rewrote its description, which is the text the model reads security
- Tool “get_brand” rewrote its description, which is the text the model reads security
- Tool “get_collection” rewrote its description, which is the text the model reads security
- Tool “get_formula” rewrote its description, which is the text the model reads security
- Tool “get_frames” rewrote its description, which is the text the model reads security
- Tool “list_brands” rewrote its description, which is the text the model reads security
- Tool “list_collections” rewrote its description, which is the text the model reads security
- Tool “list_formulas” rewrote its description, which is the text the model reads security
- Tool “plan_video” rewrote its description, which is the text the model reads security
- Tool “search_videos” rewrote its description, which is the text the model reads security
- Schema quality: 4735 → 6379 ▼ functional
- Endpoint reachability: behind authorisation → reachable ▲ functional
- Tool coverage: 80% → 85% ▲ functional
- Stability: unverified → 0.30 ▲ functional
- MCP protocol: unverified → pass ▲ functional
- Schema quality: unverified → 100 ▲ functional
- Tool coverage: unverified → 100 ▲ functional
- The server now declares the “resources” capability functional
- First check of Capabilities: pass functional
- Schema quality: excellent → good functional
- New resource “Refs films” functional
- Server version: 0.8.3 → 0.13.0 functional
- New tool “get_ugc_scan” functional
- New tool “ugc_scan” functional
- “search_videos” added an optional parameter “industry” cosmetic
- “search_videos” added an optional parameter “min_days_running” cosmetic
- “search_videos” added an optional parameter “platform” cosmetic
- “search_videos” added an optional parameter “ugc_format” cosmetic
- “check_render” reworded the description of “target” cosmetic
- “search_videos” reworded the description of “limit” cosmetic
- “search_videos” reworded the description of “offset” cosmetic
- “search_videos” reworded the description of “query” cosmetic
- “search_videos” reworded the description of “sort” cosmetic
- 25 Oct 26 −26
- Endpoint reachability: reachable → behind authorisation ▼ security
- Stability: 0.13 → unverified ▼ security
- Tool safety: pass → unverified ▼ security
- Transport: pass → unverified ▼ security
- Authorization: unverified → pass ▲ security
- First check of Authorization: pass security
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- First check of Schema quality: unverified functional
- 24 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 10 to 13. That category is still filling its 30-day observation window: 3 days of observed history at the previous scan, 4 at this one. The score rises as the window fills, whether or not the server changes.
- 22 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.
- 21 Oct 26 0
- Stability: unverified → 0.03 ▲ functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 4 Nov 2026 · Probed https://refs.video/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=refs.video | CN=YR2,O=Let's Encrypt,C=US | 7 Oct 2026 | 5 Jan 2027 | RSA 2048 | SHA256-RSA | 6f3ac7f41c82e108a23ef12003361948804 |
| SANs: refs.video | ||||||
| CN=YR2,O=Let's Encrypt,C=US (CA) | CN=Root YR,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | RSA 2048 | SHA256-RSA | 4ebd24947e24d394802d84a52fd5b319 |
| CN=Root YR,O=ISRG,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | RSA 4096 | SHA256-RSA | f24b6d17f9d9ad7cb1c9fea78782699f |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of refs.video. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| video. | present | 42529 | 8 | Verified |
| refs.video. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication Enforced and verified
The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.
| Result | Enforced and verified |
|---|---|
| Enforced | On tool calls |
| HTTP status | 200 |
WWW-Authenticate challenge Bearer resource_metadata="https://refs.video/.well-known/oauth-protected-resource/mcp"
Bearer resource_metadata="https://refs.video/.well-known/oauth-protected-resource/mcp" | Header | Value |
|---|---|
| strict-transport-security | max-age=63072000 |
| content-security-policy | frame-ancestors 'none' |
| x-content-type-options | nosniff |
| x-frame-options | DENY |
| permissions-policy | camera=(), microphone=(), geolocation=() |
Protected resource metadata
| Document | https://refs.video/.well-known/oauth-protected-resource/mcp |
|---|---|
| Retrieved | Yes |
| Resource | https://refs.video/mcp |
| Authorisation server | https://refs.video |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://refs.video/mcp | Verified | 200 | |
| http (plaintext) | http://refs.video/mcp | HTTPS enforced | 308 | https://refs.video/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
check_render Check a render against its reference ~525
After rendering a video from a reference, check it against that film's measured timeline and get concrete fixes: cut timing to the frame, pace, brightness curve, motion per shot, loudness for the platform, and format. First measure your render: run `node scripts/measure.mjs <file>` from the Refs starter kit (curl -sL https://refs.video/starter.zip -o refs-starter.zip && unzip refs-starter.zip; it unpacks to refs-starter/) and pass the JSON it prints as `render`. Returns a score out of 100, a table of checks and a numbered fix list (frames at your render's frame rate), then the same as JSON. Costs 2 credits, so fix, re-measure and check again. Needs a Refs account with Pro; without one, the app asks the user to sign in. search_videos is free.
| Name | Type | Req | Description |
|---|---|---|---|
| context | string | yes | Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,… |
| id | string | yes | The reference you built from: REF-0005, a refs.video/v/… link, a YouTube/X link, or an id from search_videos |
| llm_model | string | yes | The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model… |
| render | – | yes | The JSON printed by `node scripts/measure.mjs <your video>`, as an object (or that JSON as text) |
| target | string | – | Where it will be posted; sets the loudness target: x, youtube, instagram and meta −14 LUFS, tiktok −14 to −10, web −16, true peak ≤ −1 dBTP. Default: the reference's platform |
No output schema declared.
No examples provided.
get_blueprint Get a video's blueprint ~454
The full reverse-engineered blueprint of one video: hook frame by frame, beat sheet with timestamps, shot list, style guide, voice and sound, script template, production plan, edit recipe, QA checklist, plus a runnable recipe prompt. Markdown by default; format "json" returns the plates, toolkit, recipe and measured timeline as one object. To see the film's frames, call get_frames. Accepts a REF id (REF-0005), a refs.video link, the source YouTube/X link, or the id from search_videos. Needs a Refs account with Pro; without one, the app asks the user to sign in. search_videos is free.
| Name | Type | Req | Description |
|---|---|---|---|
| context | string | yes | Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,… |
| format | string | – | Default markdown. "json": plates as an array, the toolkit, the measured timeline (shots, camera, type, audio grid) and the frame sheets on hand |
| id | string | yes | REF-0005, a refs.video/v/… link, a YouTube/X link, an id from search_videos, or one of your brand films (brand:<import>:<film>, from get_brand) |
| include_recipe | boolean | – | Default true |
| llm_model | string | yes | The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model… |
No output schema declared.
No examples provided.
get_brand Get your brand kit and films ~394
One of your brand imports: the brand kit (the brand's house style across all its films: palette, type, logo and end card, motion and easing, pacing and cut rhythm, camera, transitions, sound and voice, recurring formats, written as rules to follow) plus each film's blueprint summary with its id (brand:<import>:<film>) for get_blueprint and get_frames. Private to you. To make a new film in this style, call plan_video(brief, brand: id). Needs a Refs account with Pro; without one, the app asks the user to sign in. search_videos is free.
| Name | Type | Req | Description |
|---|---|---|---|
| context | string | yes | Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,… |
| id | string | yes | An import id from list_brands, a refs.video/b/… link, or the X handle you imported (e.g. @yourbrand) |
| limit | integer | – | Films to include; default 20 |
| llm_model | string | yes | The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model… |
No output schema declared.
No examples provided.
get_collection Get a collection of reference films ~376
Every film in a Refs collection as search cards (REF id, link, length, aspect, measured metrics, why it works). Takes a collection id or refs.video/c/… link: anyone's shared collection, or your own private one; "favourites" gives the films you hearted. Then use them as references: plan_video(brief, reference_ids) with up to 5 that fit the brief, get_blueprint for one film in full. Needs a Refs account with Pro; without one, the app asks the user to sign in. search_videos is free.
| Name | Type | Req | Description |
|---|---|---|---|
| context | string | yes | Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,… |
| id | string | yes | A collection id like k3j9x2mq, a refs.video/c/… link, or "favourites" |
| limit | integer | – | Default 50 |
| llm_model | string | yes | The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model… |
No output schema declared.
No examples provided.
get_formula Get a format formula ~279
The full cross-video formula for one format, as markdown: structure, timing ranges, what top performers share, mistakes to avoid, and a template prompt. Needs a Refs account with Pro; without one, the app asks the user to sign in. search_videos is free.
| Name | Type | Req | Description |
|---|---|---|---|
| context | string | yes | Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,… |
| id | string | yes | – |
| llm_model | string | yes | The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model… |
No output schema declared.
No examples provided.
get_frames See a video frame by frame ~404
One video's labelled frame sheets as images, so you can see the reference instead of guessing from text: the hook (first 3 s at 0.25 s steps), one frame per shot, and the whole film at fixed steps where measured. sheet "transitions" adds every frame around each cut and in-shot change, for timing transitions to the frame. Each image follows a caption saying how its labels read. Accepts the same ids as get_blueprint. Needs a Refs account with Pro; without one, the app asks the user to sign in. search_videos is free.
| Name | Type | Req | Description |
|---|---|---|---|
| context | string | yes | Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,… |
| id | string | yes | REF-0005, a refs.video/v/… link, a YouTube/X link, an id from search_videos, or one of your brand films (brand:<import>:<film>) |
| llm_model | string | yes | The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model… |
| sheet | string | – | Default all (hook, shots and timeline; ask for "transitions" separately) |
No output schema declared.
No examples provided.
get_ugc_scan Get a competitor UGC scan and its board ~456
One of your competitor UGC scans (from ugc_scan): its status and progress while the worker runs (queued → finding competitors → fetching ads → measuring → writing → summary → done), then the board: each competitor's winning UGC ads ranked by signal (days running, variants, reach, CTR percentile, views) with the one-line reason each won, and "what wins in your category" (top hooks, formats, lengths and offers) as markdown and structured fields. Ads already in the Refs library carry REF ids for get_blueprint, get_frames and plan_video; the scan's own ads carry ugc:<scan>:<film> refs, and get_ugc_scan(id, film) returns one's blueprint. plan.prompt is a ready brief for planning the user's own UGC ad. Private to you; Pro, free in credits.
| Name | Type | Req | Description |
|---|---|---|---|
| context | string | yes | Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,… |
| film | string | – | A film from the board (its film id or ugc:… ref): returns its blueprint |
| id | string | yes | A scan id from ugc_scan, a refs.video/ugc/… link, a ugc:<scan>:<film> ref, or the product link you scanned |
| llm_model | string | yes | The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model… |
No output schema declared.
No examples provided.
list_brands List your brand imports ~290
Your brand imports on refs.video (refs.video/saved → Brandprint): each X account you imported, with its progress and film count. Private to you. Pass an id or handle to get_brand for the brand kit and every film. Needs a Refs account with Pro; without one, the app asks the user to sign in. search_videos is free.
| Name | Type | Req | Description |
|---|---|---|---|
| context | string | yes | Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,… |
| llm_model | string | yes | The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model… |
No output schema declared.
No examples provided.
list_collections List your collections ~281
Your collections on refs.video (named sets of films you saved) and your favourites, with ids and film counts. Pass an id to get_collection to read the films and use them as references. Needs a Refs account with Pro; without one, the app asks the user to sign in. search_videos is free.
| Name | Type | Req | Description |
|---|---|---|---|
| context | string | yes | Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,… |
| llm_model | string | yes | The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model… |
No output schema declared.
No examples provided.
list_formulas List format formulas ~291
Formulas distilled across many videos of one format (e.g. 'the silent UI workflow', 'the delayed hardware reveal'). Returns ids, titles, summaries and their source films; fetch one with get_formula. Needs a Refs account with Pro; without one, the app asks the user to sign in. search_videos is free.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | – | – |
| context | string | yes | Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,… |
| llm_model | string | yes | The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model… |
No output schema declared.
No examples provided.
plan_video Plan a video from references ~575
Give a brief (product, audience, length, platform) and 1-5 references (REF ids, links or ids, or your brand films' brand:<import>:<film> ids), and optionally one of your imported brands (brand) to plan in its house style. Returns, per reference, the plates that carry its timing and look (format, hook, beat sheet, style, sound, edit recipe) plus its recipe prompt, and the one formula that best matches, with instructions to write a shot list and a build prompt for the user's own video. With several references it also says how to mix them: one spine for structure and timing, and one named job for each of the others. Name the spine first if you already know it. Then, like an editor, it storyboards before anything is built: you draft the storyboard (1 direction for a fixed brief, 2–4 for an open one), check it with the storyboard tool and lay it out as a Claude Design canvas, the user picks a direction, and only then do you write the build prompt. For every plate of one film, use get_blueprint. Needs a Refs account with Pro; without one, the app asks the user to sign in. search_videos is free.
| Name | Type | Req | Description |
|---|---|---|---|
| brand | string | – | One of your brand imports (id or @handle, from list_brands): its brand kit becomes the house-style constraint |
| brief | string | yes | What the user wants to make |
| context | string | yes | Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,… |
| llm_model | string | yes | The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model… |
| reference_ids | array | – | REF-0005, refs.video/v/… or YouTube/X links, ids (get_collection lists a collection's films), or brand:<import>:<film> ids. Optional with brand: then the brand's own top films are the references |
No output schema declared.
No examples provided.
search_videos Search the video library ~878
Search 4,000+ dissected top-performing videos (launch films, product demos, explainers, motion design, interactive/3D, film + music, teasers, UGC ads). Free: works with no key and no sign-in. Without an account it returns short cards (REF id, title, maker, length, aspect, still, link, one-line summary), up to 8 at a time and 30 searches an hour. Signed in to Refs, it returns full cards: also views, measured metrics (shots, cuts per minute, voice, music) and why each works. UGC ads (category ugc) are creator-style ads that won on Meta or TikTok or went viral; their metrics add the signal: source, ugc_format, industry, days_running, variants, reach, ctr_pct, budget_level, advertiser and why_it_won. Use it to find references before making a video; pass a ref to get_blueprint or plan_video (those need a Refs account with Pro; the app asks the user to sign in).
| Name | Type | Req | Description |
|---|---|---|---|
| ai_made | boolean | – | true = made with AI/code (Claude, Remotion, three.js); false = human-made |
| aspect | string | – | Frame shape, as cards name it: 16:9 (landscape), 9:16 (vertical/reels), 1:1 (square), 4:5 (portrait feed) |
| brand | string | – | A tracked brand, e.g. linear, higgsfield, runway, vercel, openai |
| category | string | – | – |
| context | string | yes | Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,… |
| industry | string | – | UGC ads: the advertiser's industry |
| limit | integer | – | Default 8 (at most 8 without an account) |
| llm_model | string | yes | The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model… |
| made_with | string | – | Tool, e.g. claude, remotion, three.js, manim, after effects |
| max_seconds | number | – | e.g. 30 for short films |
| min_days_running | integer | – | UGC ads: Meta ads that ran at least this many days (30 = a winner, 60 = strong) |
| min_seconds | number | – | – |
| offset | integer | – | At most 40 without an account |
| platform | string | – | UGC ads: where the winning signal comes from (meta = ran on Meta, tiktok = TikTok's top ads, organic = went viral unpaid) |
| query | string | – | Keywords, e.g. 'developer tool launch dark UI', 'founder to camera', 'kinetic type', 'terminal UI launch'. Films matching every word come first; if none does, films matching some of the words (the re… |
| sort | string | – | recommended = only the films a digital product (SaaS, app, AI or dev tool) would copy for its launch film, best first; none = every film, with those recommended ones still first; signal = UGC ads wit… |
| ugc_format | string | – | UGC ads: the format |
No output schema declared.
No examples provided.
storyboard Check a storyboard and lay it out as a Claude Design canvas ~522
Before anything is built, storyboard the film the way an editor does. Send the storyboard you drafted from plan_video: 1 direction for a fixed brief, 2–4 when it's open. Each direction: logline, references (REF id + the one job each does), palette, type, sound, 2–3 style frames at full look, and 3–30 numbered panels in order, each with in/out seconds, shot size, camera move, action, VO, on-screen text, sound, the transition into the next panel, and its frame as layers (text, REF stills or the user's own captures by https URL, and shapes; positions in % of the frame). Mark a layer real only when it's a real capture of the user's product or a real result. This checks the timing and the REF ids and returns each REF's real still. While it returns ok: false it lists what to fix (fix it and call again); with ok: true it tells you how to lay the storyboard out as a Claude Design canvas (or as a text board where you can't make one). Free with Pro. Let the user pick a direction before you write any build prompt.
| Name | Type | Req | Description |
|---|---|---|---|
| aspect | string | yes | – |
| bpm | number | – | – |
| brand | string | – | Brandprint import used for the look, if any |
| brief | string | yes | – |
| context | string | yes | Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,… |
| directions | array | yes | – |
| fps | integer | – | – |
| length_s | number | yes | – |
| llm_model | string | yes | The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model… |
| title | string | yes | – |
No output schema declared.
No examples provided.
ugc_scan Scan a product's competitors for their winning UGC ads ~623
Paste a product page and Refs finds the UGC ads (creator-style vertical video ads on Meta and TikTok) that are working for its competitors, then takes them apart. Two steps. (1) ugc_scan(url) reads the page and returns a draft: the product (name, category, price, audience) and 5–8 suggested competitors, each with its site, Facebook Page and TikTok handle. Nothing is queued and no scan is used yet. Show the user the list and let them add, remove or fix competitors (at most 10). (2) ugc_scan(id, competitors?, confirm: true) saves the final list and queues the scan; it uses 1 of the account's 3 scans a month, and a scan that fails gives it back. Only confirm after the user has agreed to the list. Then the Refs worker finds each competitor's ads, ranks them by how long and how hard they ran, keeps the top 25 (at most 5 per competitor), reuses the ones already in the library and measures and blueprints the rest; it usually takes under an hour. Follow it with get_ugc_scan(id). Calling ugc_scan(url) again with a link that's already a draft or being scanned returns that scan. Pro only, free in credits; private to the user.
| Name | Type | Req | Description |
|---|---|---|---|
| competitors | array | – | Replaces the draft's list, at most 10. Send the whole final list, including the suggestions the user kept |
| confirm | boolean | – | true queues the scan (uses 1 of the month's 3). Only once the user has seen and agreed to the competitors |
| context | string | yes | Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include,… |
| id | string | – | Step 2: the scan id from step 1 (or its refs.video/ugc/… link), to edit or confirm that draft |
| llm_model | string | yes | The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model… |
| url | string | – | Step 1: the product's page, e.g. https://www.yourbrand.com/products/serum (https; a public site) |
No output schema declared.
No examples provided.
How do I install the Refs MCP server?
Refs is a hosted endpoint at https://refs.video/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · refs.video
claude mcp add --transport http video-refs-refs 'https://refs.video/mcp'
What is the Refs MCP server?
Refs is an MCP server listed in the public MCP registry as video.refs/refs. Free search of 4,100 launch videos measured shot by shot. Pro: blueprints and film plans. This page covers its hosted endpoint (https://refs.video/mcp).
Is the Refs MCP server safe to use?
Refs scores 86 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Refs MCP server expose?
Refs exposes 14 tools: search_videos, get_blueprint, get_frames, list_formulas, get_formula, and 9 more. Their descriptions and schemas cost roughly 6,348 tokens of context every time the server is loaded.
Does the Refs MCP server require authentication?
Yes. Refs asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.
Is the Refs MCP server still maintained?
Refs is still listed as active in the MCP registry. We last reached this channel on 4 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.