# Refs (remote · refs.video)

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

- Trust score: 87/100 (high trust)
- Change this week: +4
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `refs.video`: 87/100 (this document), [markdown](https://verifymcp.io/servers/video-refs-refs/refs.md), [page](https://verifymcp.io/servers/video-refs-refs/refs)

## Channel facts

- Endpoint: `https://refs.video/mcp`
- Transports: `streamable-http`
- Auth: `required`
- Version: `0.13.0`

## Trust breakdown

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. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Endpoint Security**: 97/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - 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.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
  - The authorisation server supports Client ID Metadata Documents, the current MCP client-registration mechanism.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 71/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 6411 tokens (~427/item across 15 items; 14 tools + 1 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 53/100
  - Stability observed for 16 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 95/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 85% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 14 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 15 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).
  - Supports UI / widget rendering.

## 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.

### Claude

```bash
claude mcp add --transport http video-refs-refs 'https://refs.video/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "video-refs-refs": {
      "url": "https://refs.video/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "video-refs-refs": {
      "type": "http",
      "url": "https://refs.video/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.video-refs-refs]
url = "https://refs.video/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "video-refs-refs": {
      "type": "remote",
      "url": "https://refs.video/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add video-refs-refs --url 'https://refs.video/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  video-refs-refs:
    url: "https://refs.video/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "video-refs-refs": {
      "Transport": "http",
      "Url": "https://refs.video/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add video-refs-refs -t streamable-http -u 'https://refs.video/mcp'
```

### Other

```json
{
  "mcpServers": {
    "video-refs-refs": {
      "type": "http",
      "url": "https://refs.video/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-05 (score 87, +1)

- [functional] Server version: 0.13.0 → 0.14.0
- [cosmetic] “search_videos” added an optional parameter “tag”

### 2026-11-03 (score 86, +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.

### 2026-11-01 (score 85, +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.

### 2026-10-30 (score 84, +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.

### 2026-10-29 (score 83, +44)

- [security improvement] Transport: unverified → pass
- [security improvement] 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
- [functional regression] Schema quality: 4735 → 6379
- [functional improvement] Endpoint reachability: behind authorisation → reachable
- [functional improvement] Tool coverage: 80% → 85%
- [functional improvement] Stability: unverified → 0.30
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Schema quality: unverified → 100
- [functional improvement] 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”
- [cosmetic] “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”

### 2026-10-25 (score 39, −26)

- [security regression] Endpoint reachability: reachable → behind authorisation
- [security regression] Stability: 0.13 → unverified
- [security regression] Tool safety: pass → unverified
- [security regression] Transport: pass → unverified
- [security improvement] Authorization: unverified → pass
- [security] First check of Authorization: pass
- [functional regression] Capabilities: pass → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional] First check of Schema quality: unverified

### 2026-10-24 (score 65, +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.

### 2026-10-22 (score 64, +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.

## MCP tools (14)

### `search_videos` (~910 tokens)

Search the video library

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).

Input parameters:

- `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, required): 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, required): 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…
- `tag` (string): A curated collection: app-store-header: short loops apps use as the App Store product-page header video (iOS 27)
- `ugc_format` (string): UGC ads: the format

### `get_blueprint` (~454 tokens)

Get a video's blueprint

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.

Input parameters:

- `context` (string, required): 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, required): 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, required): 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…

### `get_frames` (~404 tokens)

See a video frame by frame

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.

Input parameters:

- `context` (string, required): 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, required): 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, required): 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)

### `list_formulas` (~291 tokens)

List format formulas

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.

Input parameters:

- `category` (string)
- `context` (string, required): 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, required): 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…

### `get_formula` (~279 tokens)

Get a format formula

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.

Input parameters:

- `context` (string, required): 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, required)
- `llm_model` (string, required): 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…

### `list_collections` (~281 tokens)

List your collections

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.

Input parameters:

- `context` (string, required): 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, required): 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…

### `get_collection` (~376 tokens)

Get a collection of reference films

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.

Input parameters:

- `context` (string, required): 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, required): A collection id like k3j9x2mq, a refs.video/c/… link, or "favourites"
- `limit` (integer): Default 50
- `llm_model` (string, required): 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…

### `list_brands` (~290 tokens)

List your brand imports

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.

Input parameters:

- `context` (string, required): 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, required): 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…

### `get_brand` (~394 tokens)

Get your brand kit and films

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.

Input parameters:

- `context` (string, required): 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, required): 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, required): 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…

### `plan_video` (~575 tokens)

Plan a video from references

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.

Input parameters:

- `brand` (string): One of your brand imports (id or @handle, from list_brands): its brand kit becomes the house-style constraint
- `brief` (string, required): What the user wants to make
- `context` (string, required): 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, required): 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

### `storyboard` (~522 tokens)

Check a storyboard and lay it out as a Claude Design canvas

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.

Input parameters:

- `aspect` (string, required)
- `bpm` (number)
- `brand` (string): Brandprint import used for the look, if any
- `brief` (string, required)
- `context` (string, required): 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, required)
- `fps` (integer)
- `length_s` (number, required)
- `llm_model` (string, required): 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, required)

### `check_render` (~525 tokens)

Check a render against its reference

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.

Input parameters:

- `context` (string, required): 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, required): 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, required): 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` (required): 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

### `ugc_scan` (~623 tokens)

Scan a product's competitors for their winning UGC ads

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.

Input parameters:

- `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, required): 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, required): 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)

### `get_ugc_scan` (~456 tokens)

Get a competitor UGC scan and its board

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.

Input parameters:

- `context` (string, required): 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, required): 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, required): 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…

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/video-refs-refs/refs#diagnostics

## Score history

- 2026-11-05: 87
- 2026-11-04: 86
- 2026-11-03: 86
- 2026-11-02: 85
- 2026-11-01: 85
- 2026-10-31: 84
- 2026-10-30: 84
- 2026-10-29: 83
- 2026-10-28: 39
- 2026-10-27: 39
- 2026-10-26: 39
- 2026-10-25: 39
- 2026-10-24: 65
- 2026-10-23: 64
- 2026-10-22: 64
- 2026-10-21: 63
- 2026-10-20: 63

## 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 87 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,380 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 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://refs.video/mcp
- Website: https://refs.video/connect
- Changelog RSS feed: https://verifymcp.io/servers/video-refs-refs/refs.xml
- Changelog JSON feed: https://verifymcp.io/servers/video-refs-refs/refs.json
- HTML version of this page: https://verifymcp.io/servers/video-refs-refs/refs
