Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Refs

REMOTE · REFS.VIDEO

Free search of 4,100 launch videos measured shot by shot. Pro: blueprints and film plans.

Available components

+47 this week 86 Trust /100

Last scanned (20 hours ago)

Scores higher than 93% of remote servers

Reachable. Last reached 4 Nov 2026.

Category Design and Media

Trust breakdown (7 categories)

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
Transport & Reachability100
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
Changelog

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
Diagnostics

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
MCP tools · 14 exposed · ~6,348 tokens

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 →

Tool Tokens
check_render ~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.

NameTypeReqDescription
contextstringyesExplain 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,…
idstringyesThe reference you built from: REF-0005, a refs.video/v/… link, a YouTube/X link, or an id from search_videos
llm_modelstringyesThe 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–yesThe JSON printed by `node scripts/measure.mjs <your video>`, as an object (or that JSON as text)
targetstring–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 ~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.

NameTypeReqDescription
contextstringyesExplain 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,…
formatstring–Default markdown. "json": plates as an array, the toolkit, the measured timeline (shots, camera, type, audio grid) and the frame sheets on hand
idstringyesREF-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_recipeboolean–Default true
llm_modelstringyesThe 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 ~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.

NameTypeReqDescription
contextstringyesExplain 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,…
idstringyesAn import id from list_brands, a refs.video/b/… link, or the X handle you imported (e.g. @yourbrand)
limitinteger–Films to include; default 20
llm_modelstringyesThe 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 ~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.

NameTypeReqDescription
contextstringyesExplain 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,…
idstringyesA collection id like k3j9x2mq, a refs.video/c/… link, or "favourites"
limitinteger–Default 50
llm_modelstringyesThe 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 ~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.

NameTypeReqDescription
contextstringyesExplain 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,…
idstringyes–
llm_modelstringyesThe 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 ~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.

NameTypeReqDescription
contextstringyesExplain 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,…
idstringyesREF-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_modelstringyesThe 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…
sheetstring–Default all (hook, shots and timeline; ask for "transitions" separately)

No output schema declared.

No examples provided.

get_ugc_scan ~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.

NameTypeReqDescription
contextstringyesExplain 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,…
filmstring–A film from the board (its film id or ugc:… ref): returns its blueprint
idstringyesA scan id from ugc_scan, a refs.video/ugc/… link, a ugc:<scan>:<film> ref, or the product link you scanned
llm_modelstringyesThe 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 ~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.

NameTypeReqDescription
contextstringyesExplain 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_modelstringyesThe 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 ~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.

NameTypeReqDescription
contextstringyesExplain 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_modelstringyesThe 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 ~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.

NameTypeReqDescription
categorystring––
contextstringyesExplain 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_modelstringyesThe 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 ~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.

NameTypeReqDescription
brandstring–One of your brand imports (id or @handle, from list_brands): its brand kit becomes the house-style constraint
briefstringyesWhat the user wants to make
contextstringyesExplain 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_modelstringyesThe 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_idsarray–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 ~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).

NameTypeReqDescription
ai_madeboolean–true = made with AI/code (Claude, Remotion, three.js); false = human-made
aspectstring–Frame shape, as cards name it: 16:9 (landscape), 9:16 (vertical/reels), 1:1 (square), 4:5 (portrait feed)
brandstring–A tracked brand, e.g. linear, higgsfield, runway, vercel, openai
categorystring––
contextstringyesExplain 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,…
industrystring–UGC ads: the advertiser's industry
limitinteger–Default 8 (at most 8 without an account)
llm_modelstringyesThe 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_withstring–Tool, e.g. claude, remotion, three.js, manim, after effects
max_secondsnumber–e.g. 30 for short films
min_days_runninginteger–UGC ads: Meta ads that ran at least this many days (30 = a winner, 60 = strong)
min_secondsnumber––
offsetinteger–At most 40 without an account
platformstring–UGC ads: where the winning signal comes from (meta = ran on Meta, tiktok = TikTok's top ads, organic = went viral unpaid)
querystring–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…
sortstring–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_formatstring–UGC ads: the format

No output schema declared.

No examples provided.

storyboard ~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.

NameTypeReqDescription
aspectstringyes–
bpmnumber––
brandstring–Brandprint import used for the look, if any
briefstringyes–
contextstringyesExplain 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,…
directionsarrayyes–
fpsinteger––
length_snumberyes–
llm_modelstringyesThe 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…
titlestringyes–

No output schema declared.

No examples provided.

ugc_scan ~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.

NameTypeReqDescription
competitorsarray–Replaces the draft's list, at most 10. Send the whole final list, including the suggestions the user kept
confirmboolean–true queues the scan (uses 1 of the month's 3). Only once the user has seen and agreed to the competitors
contextstringyesExplain 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,…
idstring–Step 2: the scan id from step 1 (or its refs.video/ugc/… link), to edit or confirm that draft
llm_modelstringyesThe 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…
urlstring–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.

Install

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

# add to Claude Code
claude mcp add --transport http video-refs-refs 'https://refs.video/mcp'
Common questions

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.