Skip to content

Refs

by refs.video · remote · no sign-in to list tools · v0.8.3 · published by video.refs

4,100 launch videos measured shot by shot. Search references, pull blueprints, plan your film.

Changes · 3

12 tools: 3 change things and 9 only read.

Scanned Oct 21, 2026

12 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http refs https://refs.video/mcp --header 'Authorization: <your-authorization>'

Findings

Matches of fixed checks, with the text they matched.

12 info
  • The input schema at properties.context.description mentions "credentials".

    Matched text

    inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."

    What this check looks for
  • The input schema at properties.context.description mentions "credentials".

    Matched text

    inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."

    What this check looks for
  • The input schema at properties.context.description mentions "credentials".

    Matched text

    inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."

    What this check looks for
  • The input schema at properties.context.description mentions "credentials".

    Matched text

    inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."

    What this check looks for
  • The input schema at properties.context.description mentions "credentials".

    Matched text

    inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."

    What this check looks for
  • The input schema at properties.context.description mentions "credentials".

    Matched text

    inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."

    What this check looks for
Show 6 more findings
  • The input schema at properties.context.description mentions "credentials".

    Matched text

    inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."

    What this check looks for
  • The input schema at properties.context.description mentions "credentials".

    Matched text

    inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."

    What this check looks for
  • The input schema at properties.context.description mentions "credentials".

    Matched text

    inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."

    What this check looks for
  • The input schema at properties.context.description mentions "credentials".

    Matched text

    inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."

    What this check looks for
  • The input schema at properties.context.description mentions "credentials".

    Matched text

    inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."

    What this check looks for
  • The input schema at properties.context.description mentions "credentials".

    Matched text

    inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

12 tools

Changes things 3Claude Code: ask
  • check_renderAfter 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, l…1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.

    Findings

    • Info

      The input schema at properties.context.description mentions "credentials".

      Matched text

      inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."

      What this check looks for
    Description, as the server wrote it
    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.
  • plan_videoGive 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 b…1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.

    Findings

    • Info

      The input schema at properties.context.description mentions "credentials".

      Matched text

      inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."

      What this check looks for
    Description, as the server wrote it
    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.
  • storyboardBefore anything is built, storyboard the film the way an editor does.1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.

    Findings

    • Info

      The input schema at properties.context.description mentions "credentials".

      Matched text

      inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."

      What this check looks for
    Description, as the server wrote it
    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.
Only reads 9Claude Code: allow
  • get_blueprintThe 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…1 finding

    Why it is in this group

    • The name "get_blueprint" says "get": a word for reading.

    Findings

    • Info

      The input schema at properties.context.description mentions "credentials".

      Matched text

      inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."

      What this check looks for
    Description, as the server wrote it
    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.
  • get_brandOne 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, transiti…1 finding

    Why it is in this group

    • The name "get_brand" says "get": a word for reading.

    Findings

    • Info

      The input schema at properties.context.description mentions "credentials".

      Matched text

      inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."

      What this check looks for
    Description, as the server wrote it
    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).
  • get_collectionEvery film in a Refs collection as search cards (REF id, link, length, aspect, measured metrics, why it works).1 finding

    Why it is in this group

    • The name "get_collection" says "get": a word for reading.

    Findings

    • Info

      The input schema at properties.context.description mentions "credentials".

      Matched text

      inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."

      What this check looks for
    Description, as the server wrote it
    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.
  • get_formulaThe full cross-video formula for one format, as markdown: structure, timing ranges, what top performers share, mistakes to avoid, and a template prompt.1 finding

    Why it is in this group

    • The name "get_formula" says "get": a word for reading.

    Findings

    • Info

      The input schema at properties.context.description mentions "credentials".

      Matched text

      inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."

      What this check looks for
    Description, as the server wrote it
    The full cross-video formula for one format, as markdown: structure, timing ranges, what top performers share, mistakes to avoid, and a template prompt.
  • get_framesOne 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 fil…1 finding

    Why it is in this group

    • The name "get_frames" says "get": a word for reading.

    Findings

    • Info

      The input schema at properties.context.description mentions "credentials".

      Matched text

      inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."

      What this check looks for
    Description, as the server wrote it
    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.
  • list_brandsYour brand imports on refs.video (refs.video/saved → Brandprint): each X account you imported, with its progress and film count.1 finding

    Why it is in this group

    • The name "list_brands" says "list": a word for reading.

    Findings

    • Info

      The input schema at properties.context.description mentions "credentials".

      Matched text

      inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."

      What this check looks for
    Description, as the server wrote it
    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.
  • list_collectionsYour collections on refs.video (named sets of films you saved) and your favourites, with ids and film counts.1 finding

    Why it is in this group

    • The name "list_collections" says "list": a word for reading.

    Findings

    • Info

      The input schema at properties.context.description mentions "credentials".

      Matched text

      inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."

      What this check looks for
    Description, as the server wrote it
    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.
  • list_formulasFormulas distilled across many videos of one format (e.g.1 finding

    Why it is in this group

    • The name "list_formulas" says "list": a word for reading.

    Findings

    • Info

      The input schema at properties.context.description mentions "credentials".

      Matched text

      inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."

      What this check looks for
    Description, as the server wrote it
    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.
  • search_videosSearch 4,000+ dissected top-performing videos (launch films, product demos, explainers, motion design, interactive/3D, film + music, teasers).1 finding

    Why it is in this group

    • The name "search_videos" says "search": a word for reading.

    Findings

    • Info

      The input schema at properties.context.description mentions "credentials".

      Matched text

      inputSchema.properties.context.description: "...es, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities..."

      What this check looks for
    Description, as the server wrote it
    Search 4,000+ dissected top-performing videos (launch films, product demos, explainers, motion design, interactive/3D, film + music, teasers). Returns compact cards: REF id, link, a small still (thumb), length, aspect, views, measured metrics (shots, cuts per minute, voice, music) and why each works. Use it to find references before making a video; pass a ref to get_blueprint or plan_video.

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 0.8.3. Values in angle brackets are yours to fill in.

claude mcp add --transport http refs https://refs.video/mcp --header 'Authorization: <your-authorization>'

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__refs__search_videos",
      "mcp__refs__get_blueprint",
      "mcp__refs__get_frames",
      "mcp__refs__list_formulas",
      "mcp__refs__get_formula",
      "mcp__refs__list_collections",
      "mcp__refs__get_collection",
      "mcp__refs__list_brands",
      "mcp__refs__get_brand"
    ],
    "ask": [
      "mcp__refs__plan_video",
      "mcp__refs__storyboard",
      "mcp__refs__check_render"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as refs. Review it before you use it.