addrbookFor publishers
← The evidence ledger

Evidence row 1033626

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint c59624dd-3017-4853-91d7-0e8ce5a8fbd8
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
fe5e9dbecb36f780c000c89fab8f68f9e9d61a540288ca9de0fe31eff25d46aa
Leaf
0x94bc5f351b85a193963cff31c3178e4ab3a16be282e7c6851258181d2ed43d9e

What was observed

{
  "count": 14,
  "tools": [
    {
      "description": "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.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "context": {
            "description": "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, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\"",
            "type": "string"
          },
          "id": {
            "description": "The reference you built from: REF-0005, a refs.video/v/… link, a YouTube/X link, or an id from search_videos",
            "type": "string"
          },
          "llm_model": {
            "description": "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 identifier with certainty, pass \"unknown\" — never guess.",
            "type": "string"
          },
          "render": {
            "anyOf": [
              {
                "properties": {
                  "audio": {
                    "properties": {
                      "has_audio": {
                        "type": "boolean"
                      },
                      "integrated_lufs": {
                        "type": [
                          "number",
                          "null"
                        ]
                      },
                      "range_lu": {
                        "type": [
                          "number",
                          "null"
                        ]
                      },
                      "true_peak_dbtp": {
                        "type": [
                          "number",
                          "null"
                        ]
                      }
                    },
                    "required": [
                      "has_audio",
                      "integrated_lufs",
                      "true_peak_dbtp",
                      "range_lu"
                    ],
                    "type": "object"
                  },
                  "cuts": {
                    "items": {
                      "properties": {
                        "frame": {
                          "maximum": 9007199254740991,
                          "minimum": 0,
                          "type": "integer"
                        },
                        "score": {
                          "type": "number"
                        },
                        "t": {
                          "minimum": 0,
                          "type": "number"
                        }
                      },
                      "required": [
                        "t",
                        "frame",
                        "score"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "duration_s": {
                    "exclusiveMinimum": 0,
                    "type": "number"
                  },
                  "file": {
                    "type": "string"
                  },
                  "fps": {
                    "exclusiveMinimum": 0,
                    "maximum": 1000,
                    "type": "number"
                  },
                  "height": {
                    "exclusiveMinimum": 0,
                    "maximum": 9007199254740991,
                    "type": "integer"
                  },
                  "kind": {
                    "const": "refs-render-measure",
                    "type": "string"
                  },
                  "luma": {
                    "properties": {
                      "mean": {
                        "items": {
                          "type": "number"
                        },
                        "type": "array"
                      },
                      "p95": {
                        "items": {
                          "type": "number"
                        },
                        "type": "array"
                      },
                      "step_s": {
                        "exclusiveMinimum": 0,
                        "type": "number"
                      }
                    },
                    "required": [
                      "step_s",
                      "mean",
                      "p95"
                    ],
                    "type": "object"
                  },
                  "motion": {
                    "properties": {
                      "diff": {
                        "items": {
                          "type": "number"
                        },
                        "type": "array"
                      },
                      "step_s": {
                        "exclusiveMinimum": 0,
                        "type": "number"
                      }
                    },
                    "required": [
                      "step_s",
                      "diff"
                    ],
                    "type": "object"
                  },
                  "version": {
                    "type": "number"
                  },
                  "width": {
                    "exclusiveMinimum": 0,
                    "maximum": 9007199254740991,
                    "type": "integer"
                  }
                },
                "required": [
                  "kind",
                  "version",
                  "duration_s",
                  "fps",
                  "width",
                  "height",
                  "cuts",
                  "luma",
                  "motion",
                  "audio"
                ],
                "type": "object"
              },
              {
                "additionalProperties": {},
                "propertyNames": {
                  "type": "string"
                },
                "type": "object"
              },
              {
                "type": "string"
              }
            ],
            "description": "The JSON printed by `node scripts/measure.mjs <your video>`, as an object (or that JSON as text)"
          },
          "target": {
            "description": "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",
            "enum": [
              "x",
              "youtube",
              "tiktok",
              "instagram",
              "meta",
              "web"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "render",
          "context",
          "llm_model"
        ],
        "type": "object"
      },
      "name": "check_render"
    },
    {
      "description": "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.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "context": {
            "description": "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, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\"",
            "type": "string"
          },
          "format": {
            "description": "Default markdown. \"json\": plates as an array, the toolkit, the measured timeline (shots, camera, type, audio grid) and the frame sheets on hand",
            "enum": [
              "markdown",
              "json"
            ],
            "type": "string"
          },
          "id": {
            "description": "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)",
            "type": "string"
          },
          "include_recipe": {
            "description": "Default true",
            "type": "boolean"
          },
          "llm_model": {
            "description": "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 identifier with certainty, pass \"unknown\" — never guess.",
            "type": "string"
          }
        },
        "required": [
          "id",
          "context",
          "llm_model"
        ],
        "type": "object"
      },
      "name": "get_blueprint"
    },
    {
      "description": "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.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "context": {
            "description": "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, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\"",
            "type": "string"
          },
          "id": {
            "description": "An import id from list_brands, a refs.video/b/… link, or the X handle you imported (e.g. @yourbrand)",
            "type": "string"
          },
          "limit": {
            "description": "Films to include; default 20",
            "maximum": 20,
            "minimum": 1,
            "type": "integer"
          },
          "llm_model": {
            "description": "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 identifier with certainty, pass \"unknown\" — never guess.",
            "type": "string"
          }
        },
        "required": [
          "id",
          "context",
          "llm_model"
        ],
        "type": "object"
      },
      "name": "get_brand"
    },
    {
      "description": "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.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "context": {
            "description": "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, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\"",
            "type": "string"
          },
          "id": {
            "description": "A collection id like k3j9x2mq, a refs.video/c/… link, or \"favourites\"",
            "type": "string"
          },
          "limit": {
            "description": "Default 50",
            "maximum": 100,
            "minimum": 1,
            "type": "integer"
          },
          "llm_model": {
            "description": "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 identifier with certainty, pass \"unknown\" — never guess.",
            "type": "string"
          }
        },
        "required": [
          "id",
          "context",
          "llm_model"
        ],
        "type": "object"
      },
      "name": "get_collection"
    },
    {
      "description": "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.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "context": {
            "description": "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, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\"",
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "llm_model": {
            "description": "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 identifier with certainty, pass \"unknown\" — never guess.",
            "type": "string"
          }
        },
        "required": [
          "id",
          "context",
          "llm_model"
        ],
        "type": "object"
      },
      "name": "get_formula"
    },
    {
      "description": "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.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "context": {
            "description": "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, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\"",
            "type": "string"
          },
          "id": {
            "description": "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>)",
            "type": "string"
          },
          "llm_model": {
            "description": "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 identifier with certainty, pass \"unknown\" — never guess.",
            "type": "string"
          },
          "sheet": {
            "description": "Default all (hook, shots and timeline; ask for \"transitions\" separately)",
            "enum": [
              "hook",
              "shots",
              "timeline",
              "transitions",
              "all"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "context",
          "llm_model"
        ],
        "type": "object"
      },
      "name": "get_frames"
    },
    {
      "description": "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.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "context": {
            "description": "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, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\"",
            "type": "string"
          },
          "film": {
            "description": "A film from the board (its film id or ugc:… ref): returns its blueprint",
            "type": "string"
          },
          "id": {
            "description": "A scan id from ugc_scan, a refs.video/ugc/… link, a ugc:<scan>:<film> ref, or the product link you scanned",
            "type": "string"
          },
          "llm_model": {
            "description": "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 identifier with certainty, pass \"unknown\" — never guess.",
            "type": "string"
          }
        },
        "required": [
          "id",
          "context",
          "llm_model"
        ],
        "type": "object"
      },
      "name": "get_ugc_scan"
    },
    {
      "description": "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.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "context": {
            "description": "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, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\"",
            "type": "string"
          },
          "llm_model": {
            "description": "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 identifier with certainty, pass \"unknown\" — never guess.",
            "type": "string"
          }
        },
        "required": [
          "context",
          "llm_model"
        ],
        "type": "object"
      },
      "name": "list_brands"
    },
    {
      "description": "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.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "context": {
            "description": "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, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\"",
            "type": "string"
          },
          "llm_model": {
            "description": "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 identifier with certainty, pass \"unknown\" — never guess.",
            "type": "string"
          }
        },
        "required": [
          "context",
          "llm_model"
        ],
        "type": "object"
      },
      "name": "list_collections"
    },
    {
      "description": "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.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "category": {
            "enum": [
              "launch",
              "demo",
              "explainers",
              "motion",
              "interactive",
              "films",
              "teaser",
              "ugc"
            ],
            "type": "string"
          },
          "context": {
            "description": "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, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\"",
            "type": "string"
          },
          "llm_model": {
            "description": "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 identifier with certainty, pass \"unknown\" — never guess.",
            "type": "string"
          }
        },
        "required": [
          "context",
          "llm_model"
        ],
        "type": "object"
      },
      "name": "list_formulas"
    },
    {
      "description": "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.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "brand": {
            "description": "One of your brand imports (id or @handle, from list_brands): its brand kit becomes the house-style constraint",
            "type": "string"
          },
          "brief": {
            "description": "What the user wants to make",
            "type": "string"
          },
          "context": {
            "description": "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, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\"",
            "type": "string"
          },
          "llm_model": {
            "description": "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 identifier with certainty, pass \"unknown\" — never guess.",
            "type": "string"
          },
          "reference_ids": {
            "description": "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",
            "items": {
              "type": "string"
            },
            "maxItems": 5,
            "minItems": 1,
            "type": "array"
          }
        },
        "required": [
          "brief",
          "context",
          "llm_model"
        ],
        "type": "object"
      },
      "name": "plan_video"
    },
    {
      "description": "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).",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "ai_made": {
            "description": "true = made with AI/code (Claude, Remotion, three.js); false = human-made",
            "type": "boolean"
          },
          "aspect": {
            "description": "Frame shape, as cards name it: 16:9 (landscape), 9:16 (vertical/reels), 1:1 (square), 4:5 (portrait feed)",
            "enum": [
              "16:9",
              "9:16",
              "1:1",
              "4:5"
            ],
            "type": "string"
          },
          "brand": {
            "description": "A tracked brand, e.g. linear, higgsfield, runway, vercel, openai",
            "type": "string"
          },
          "category": {
            "enum": [
              "launch",
              "demo",
              "explainers",
              "motion",
              "interactive",
              "films",
              "teaser",
              "ugc"
            ],
            "type": "string"
          },
          "context": {
            "description": "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, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\"",
            "type": "string"
          },
          "industry": {
            "description": "UGC ads: the advertiser's industry",
            "enum": [
              "beauty",
              "apps",
              "fintech",
              "food",
              "fitness",
              "saas",
              "edtech",
              "health",
              "fashion",
              "home",
              "pets",
              "gaming",
              "other"
            ],
            "type": "string"
          },
          "limit": {
            "description": "Default 8 (at most 8 without an account)",
            "maximum": 20,
            "minimum": 1,
            "type": "integer"
          },
          "llm_model": {
            "description": "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 identifier with certainty, pass \"unknown\" — never guess.",
            "type": "string"
          },
          "made_with": {
            "description": "Tool, e.g. claude, remotion, three.js, manim, after effects",
            "type": "string"
          },
          "max_seconds": {
            "description": "e.g. 30 for short films",
            "minimum": 0,
            "type": "number"
          },
          "min_days_running": {
            "description": "UGC ads: Meta ads that ran at least this many days (30 = a winner, 60 = strong)",
            "maximum": 9007199254740991,
            "minimum": 1,
            "type": "integer"
          },
          "min_seconds": {
            "minimum": 0,
            "type": "number"
          },
          "offset": {
            "description": "At most 40 without an account",
            "maximum": 2000,
            "minimum": 0,
            "type": "integer"
          },
          "platform": {
            "description": "UGC ads: where the winning signal comes from (meta = ran on Meta, tiktok = TikTok's top ads, organic = went viral unpaid)",
            "enum": [
              "meta",
              "tiktok",
              "organic"
            ],
            "type": "string"
          },
          "query": {
            "description": "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 result then has a note). A REF id or a YouTube, X, TikTok, Instagram Reel or Meta Ad Library link finds that film.",
            "type": "string"
          },
          "sort": {
            "description": "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 with the strongest winning signal first (days running, CTR percentile, views)",
            "enum": [
              "recommended",
              "none",
              "added",
              "views",
              "shortest",
              "longest",
              "catalogue",
              "signal"
            ],
            "type": "string"
          },
          "ugc_format": {
            "description": "UGC ads: the format",
            "enum": [
              "talking_head",
              "unboxing",
              "problem_solution",
              "testimonial",
              "pov",
              "green_screen",
              "us_vs_them",
              "street_interview",
              "before_after",
              "other"
            ],
            "type": "string"
          }
        },
        "required": [
          "context",
          "llm_model"
        ],
        "type": "object"
      },
      "name": "search_videos"
    },
    {
      "description": "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.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "aspect": {
            "enum": [
              "16:9",
              "9:16",
              "1:1",
              "4:5"
            ],
            "type": "string"
          },
          "bpm": {
            "maximum": 220,
            "minimum": 40,
            "type": "number"
          },
          "brand": {
            "description": "Brandprint import used for the look, if any",
            "maxLength": 80,
            "type": "string"
          },
          "brief": {
            "maxLength": 1200,
            "minLength": 1,
            "type": "string"
          },
          "context": {
            "description": "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, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\"",
            "type": "string"
          },
          "directions": {
            "items": {
              "properties": {
                "logline": {
                  "description": "the idea in one line",
                  "maxLength": 280,
                  "minLength": 1,
                  "type": "string"
                },
                "motion": {
                  "description": "how frames hand off to each other overall",
                  "maxLength": 400,
                  "type": "string"
                },
                "name": {
                  "maxLength": 60,
                  "minLength": 1,
                  "type": "string"
                },
                "palette": {
                  "items": {
                    "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$",
                    "type": "string"
                  },
                  "maxItems": 8,
                  "type": "array"
                },
                "panels": {
                  "items": {
                    "properties": {
                      "action": {
                        "description": "what happens and what moves, in one or two sentences",
                        "maxLength": 400,
                        "minLength": 1,
                        "type": "string"
                      },
                      "camera": {
                        "description": "the camera move, drawn as arrows on the panel",
                        "enum": [
                          "static",
                          "push in",
                          "pull out",
                          "pan left",
                          "pan right",
                          "tilt up",
                          "tilt down",
                          "truck left",
                          "truck right",
                          "orbit",
                          "zoom in",
                          "zoom out",
                          "whip",
                          "handheld"
                        ],
                        "type": "string"
                      },
                      "end": {
                        "description": "out, seconds",
                        "maximum": 900,
                        "minimum": 0,
                        "type": "number"
                      },
                      "frame": {
                        "properties": {
                          "background": {
                            "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$",
                            "type": "string"
                          },
                          "gradient": {
                            "description": "top to bottom; replaces background",
                            "items": false,
                            "maxItems": 2,
                            "minItems": 2,
                            "prefixItems": [
                              {
                                "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$",
                                "type": "string"
                              },
                              {
                                "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$",
                                "type": "string"
                              }
                            ],
                            "type": "array"
                          },
                          "layers": {
                            "items": {
                              "oneOf": [
                                {
                                  "properties": {
                                    "align": {
                                      "enum": [
                                        "left",
                                        "center",
                                        "right"
                                      ],
                                      "type": "string"
                                    },
                                    "color": {
                                      "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$",
                                      "type": "string"
                                    },
                                    "font": {
                                      "description": "display = the direction's headline face, body = UI/sans, mono = data, serif = editorial",
                                      "enum": [
                                        "display",
                                        "body",
                                        "mono",
                                        "serif"
                                      ],
                                      "type": "string"
                                    },
                                    "italic": {
                                      "type": "boolean"
                                    },
                                    "opacity": {
                                      "maximum": 1,
                                      "minimum": 0,
                                      "type": "number"
                                    },
                                    "real": {
                                      "description": "true only when this is a real capture of the user's product or a real result; anything else is illustrative and is labelled so",
                                      "type": "boolean"
                                    },
                                    "size": {
                                      "description": "font size as % of frame height",
                                      "maximum": 80,
                                      "minimum": 0.5,
                                      "type": "number"
                                    },
                                    "text": {
                                      "maxLength": 400,
                                      "minLength": 1,
                                      "type": "string"
                                    },
                                    "tracking": {
                                      "description": "letter spacing in em",
                                      "maximum": 0.6,
                                      "minimum": -0.2,
                                      "type": "number"
                                    },
                                    "type": {
                                      "const": "text",
                                      "type": "string"
                                    },
                                    "w": {
                                      "description": "box width, % of frame width (text wraps inside it)",
                                      "maximum": 150,
                                      "minimum": -50,
                                      "type": "number"
                                    },
                                    "weight": {
                                      "maximum": 900,
                                      "minimum": 100,
                                      "type": "integer"
                                    },
                                    "x": {
                                      "description": "left edge, % of frame width",
                                      "maximum": 150,
                                      "minimum": -50,
                                      "type": "number"
                                    },
                                    "y": {
                                      "description": "top edge, % of frame height",
                                      "maximum": 150,
                                      "minimum": -50,
                                      "type": "number"
                                    }
                                  },
                                  "required": [
                                    "type",
                                    "text",
                                    "x",
                                    "y",
                                    "size"
                                  ],
                                  "type": "object"
                                },
                                {
                                  "properties": {
                                    "fit": {
                                      "enum": [
                                        "cover",
                                        "contain"
                                      ],
                                      "type": "string"
                                    },
                                    "grayscale": {
                                      "type": "boolean"
                                    },
                                    "h": {
                                      "maximum": 150,
                                      "minimum": -50,
                                      "type": "number"
                                    },
                                    "opacity": {
                                      "maximum": 1,
                                      "minimum": 0,
                                      "type": "number"
                                    },
                                    "radius": {
                                      "description": "corner radius, % of frame height",
                                      "maximum": 50,
                                      "minimum": 0,
                                      "type": "number"
                                    },
                                    "real": {
                                      "description": "true only when this is a real capture of the user's product or a real result; anything else is illustrative and is labelled so",
                                      "type": "boolean"
                                    },
                                    "src": {
                                      "description": "\"REF-1234\" for that archive film's still, or an https URL of the user's own capture",
                                      "maxLength": 600,
                                      "minLength": 1,
                                      "type": "string"
                                    },
                                    "type": {
                                      "const": "image",
                                      "type": "string"
                                    },
                                    "w": {
                                      "maximum": 150,
                                      "minimum": -50,
                                      "type": "number"
                                    },
                                    "x": {
                                      "maximum": 150,
                                      "minimum": -50,
                                      "type": "number"
                                    },
                                    "y": {
                                      "maximum": 150,
                                      "minimum": -50,
                                      "type": "number"
                                    }
                                  },
                                  "required": [
                                    "type",
                                    "src",
                                    "x",
                                    "y",
                                    "w",
                                    "h"
                                  ],
                                  "type": "object"
                                },
                                {
                                  "properties": {
                                    "fill": {
                                      "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$",
                                      "type": "string"
                                    },
                                    "h": {
                                      "maximum": 150,
                                      "minimum": -50,
                                      "type": "number"
                                    },
                                    "opacity": {
                                      "maximum": 1,
                                      "minimum": 0,
                                      "type": "number"
                                    },
                                    "radius": {
                                      "maximum": 50,
                                      "minimum": 0,
                                      "type": "number"
                                    },
                                    "shape": {
                                      "enum": [
                                        "rect",
                                        "circle",
                                        "line"
                                      ],
                                      "type": "string"
                                    },
                                    "stroke": {
                                      "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$",
                                      "type": "string"
                                    },
                                    "stroke_width": {
                                      "description": "% of frame height",
                                      "maximum": 5,
                                      "minimum": 0,
                                      "type": "number"
                                    },
                                    "type": {
                                      "const": "shape",
                                      "type": "string"
                                    },
                                    "w": {
                                      "maximum": 150,
                                      "minimum": -50,
                                      "type": "number"
                                    },
                                    "x": {
                                      "maximum": 150,
                                      "minimum": -50,
                                      "type": "number"
                                    },
                                    "y": {
                                      "maximum": 150,
                                      "minimum": -50,
                                      "type": "number"
                                    }
                                  },
                                  "required": [
                                    "type",
                                    "shape",
                                    "x",
                                    "y",
                                    "w",
                                    "h"
                                  ],
                                  "type": "object"
                                }
                              ]
                            },
                            "maxItems": 40,
                            "type": "array"
                          }
                        },
                        "required": [
                          "layers"
                        ],
                        "type": "object"
                      },
                      "look_ref": {
                        "description": "REF id whose look this panel borrows",
                        "maxLength": 20,
                        "type": "string"
                      },
                      "on_screen": {
                        "description": "text that appears on screen",
                        "maxLength": 200,
                        "type": "string"
                      },
                      "shot": {
                        "description": "shot number; numbered 1, 2, 3… when left out",
                        "maxLength": 12,
                        "type": "string"
                      },
                      "shot_size": {
                        "enum": [
                          "extreme wide",
                          "wide",
                          "medium",
                          "close",
                          "extreme close",
                          "macro",
                          "insert",
                          "ui",
                          "full-frame type"
                        ],
                        "type": "string"
                      },
                      "sound": {
                        "description": "music cue or SFX",
                        "maxLength": 200,
                        "type": "string"
                      },
                      "start": {
                        "description": "in, seconds",
                        "maximum": 900,
                        "minimum": 0,
                        "type": "number"
                      },
                      "transition": {
                        "description": "how this panel becomes the next one",
                        "properties": {
                          "frames": {
                            "maximum": 240,
                            "minimum": 0,
                            "type": "integer"
                          },
                          "kind": {
                            "enum": [
                              "cut",
                              "match cut",
                              "dissolve",
                              "morph",
                              "wipe",
                              "push",
                              "whip",
                              "fade to black",
                              "hold"
                            ],
                            "type": "string"
                          },
                          "note": {
                            "description": "how this frame becomes the next, e.g. 'the caret stretches into the search bar'",
                            "maxLength": 200,
                            "type": "string"
                          }
                        },
                        "required": [
                          "kind"
                        ],
                        "type": "object"
                      },
                      "vo": {
                        "description": "the spoken line over this panel",
                        "maxLength": 400,
                        "type": "string"
                      }
                    },
                    "required": [
                      "start",
                      "end",
                      "action",
                      "frame"
                    ],
                    "type": "object"
                  },
                  "maxItems": 30,
                  "minItems": 3,
                  "type": "array"
                },
                "references": {
                  "items": {
                    "properties": {
                      "contributes": {
                        "description": "the one job it does, e.g. 'structure and timing', 'the hook', 'type treatment'",
                        "maxLength": 140,
                        "minLength": 1,
                        "type": "string"
                      },
                      "ref": {
                        "description": "REF id",
                        "maxLength": 40,
                        "minLength": 1,
                        "type": "string"
                      }
                    },
                    "required": [
                      "ref",
                      "contributes"
                    ],
                    "type": "object"
                  },
                  "maxItems": 6,
                  "type": "array"
                },
                "sound": {
                  "description": "music and sound design in a line or two",
                  "maxLength": 400,
                  "type": "string"
                },
                "style_frames": {
                  "description": "2–3 key frames at full look",
                  "items": {
                    "properties": {
                      "frame": {
                        "properties": {
                          "background": {
                            "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$",
                            "type": "string"
                          },
                          "gradient": {
                            "description": "top to bottom; replaces background",
                            "items": false,
                            "maxItems": 2,
                            "minItems": 2,
                            "prefixItems": [
                              {
                                "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$",
                                "type": "string"
                              },
                              {
                                "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$",
                                "type": "string"
                              }
                            ],
                            "type": "array"
                          },
                          "layers": {
                            "items": {
                              "oneOf": [
                                {
                                  "properties": {
                                    "align": {
                                      "enum": [
                                        "left",
                                        "center",
                                        "right"
                                      ],
                                      "type": "string"
                                    },
                                    "color": {
                                      "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$",
                                      "type": "string"
                                    },
                                    "font": {
                                      "description": "display = the direction's headline face, body = UI/sans, mono = data, serif = editorial",
                                      "enum": [
                                        "display",
                                        "body",
                                        "mono",
                                        "serif"
                                      ],
                                      "type": "string"
                                    },
                                    "italic": {
                                      "type": "boolean"
                                    },
                                    "opacity": {
                                      "maximum": 1,
                                      "minimum": 0,
                                      "type": "number"
                                    },
                                    "real": {
                                      "description": "true only when this is a real capture of the user's product or a real result; anything else is illustrative and is labelled so",
                                      "type": "boolean"
                                    },
                                    "size": {
                                      "description": "font size as % of frame height",
                                      "maximum": 80,
                                      "minimum": 0.5,
                                      "type": "number"
                                    },
                                    "text": {
                                      "maxLength": 400,
                                      "minLength": 1,
                                      "type": "string"
                                    },
                                    "tracking": {
                                      "description": "letter spacing in em",
                                      "maximum": 0.6,
                                      "minimum": -0.2,
                                      "type": "number"
                                    },
                                    "type": {
                                      "const": "text",
                                      "type": "string"
                                    },
                                    "w": {
                                      "description": "box width, % of frame width (text wraps inside it)",
                                      "maximum": 150,
                                      "minimum": -50,
                                      "type": "number"
                                    },
                                    "weight": {
                                      "maximum": 900,
                                      "minimum": 100,
                                      "type": "integer"
                                    },
                                    "x": {
                                      "description": "left edge, % of frame width",
                                      "maximum": 150,
                                      "minimum": -50,
                                      "type": "number"
                                    },
                                    "y": {
                                      "description": "top edge, % of frame height",
                                      "maximum": 150,
                                      "minimum": -50,
                                      "type": "number"
                                    }
                                  },
                                  "required": [
                                    "type",
                                    "text",
                                    "x",
                                    "y",
                                    "size"
                                  ],
                                  "type": "object"
                                },
                                {
                                  "properties": {
                                    "fit": {
                                      "enum": [
                                        "cover",
                                        "contain"
                                      ],
                                      "type": "string"
                                    },
                                    "grayscale": {
                                      "type": "boolean"
                                    },
                                    "h": {
                                      "maximum": 150,
                                      "minimum": -50,
                                      "type": "number"
                                    },
                                    "opacity": {
                                      "maximum": 1,
                                      "minimum": 0,
                                      "type": "number"
                                    },
                                    "radius": {
                                      "description": "corner radius, % of frame height",
                                      "maximum": 50,
                                      "minimum": 0,
                                      "type": "number"
                                    },
                                    "real": {
                                      "description": "true only when this is a real capture of the user's product or a real result; anything else is illustrative and is labelled so",
                                      "type": "boolean"
                                    },
                                    "src": {
                                      "description": "\"REF-1234\" for that archive film's still, or an https URL of the user's own capture",
                                      "maxLength": 600,
                                      "minLength": 1,
                                      "type": "string"
                                    },
                                    "type": {
                                      "const": "image",
                                      "type": "string"
                                    },
                                    "w": {
                                      "maximum": 150,
                                      "minimum": -50,
                                      "type": "number"
                                    },
                                    "x": {
                                      "maximum": 150,
                                      "minimum": -50,
                                      "type": "number"
                                    },
                                    "y": {
                                      "maximum": 150,
                                      "minimum": -50,
                                      "type": "number"
                                    }
                                  },
                                  "required": [
                                    "type",
                                    "src",
                                    "x",
                                    "y",
                                    "w",
                                    "h"
                                  ],
                                  "type": "object"
                                },
                                {
                                  "properties": {
                                    "fill": {
                                      "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$",
                                      "type": "string"
                                    },
                                    "h": {
                                      "maximum": 150,
                                      "minimum": -50,
                                      "type": "number"
                                    },
                                    "opacity": {
                                      "maximum": 1,
                                      "minimum": 0,
                                      "type": "number"
                                    },
                                    "radius": {
                                      "maximum": 50,
                                      "minimum": 0,
                                      "type": "number"
                                    },
                                    "shape": {
                                      "enum": [
                                        "rect",
                                        "circle",
                                        "line"
                                      ],
                                      "type": "string"
                                    },
                                    "stroke": {
                                      "pattern": "^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$",
                                      "type": "string"
                                    },
                                    "stroke_width": {
                                      "description": "% of frame height",
                                      "maximum": 5,
                                      "minimum": 0,
                                      "type": "number"
                                    },
                                    "type": {
                                      "const": "shape",
                                      "type": "string"
                                    },
                                    "w": {
                                      "maximum": 150,
                                      "minimum": -50,
                                      "type": "number"
                                    },
                                    "x": {
                                      "maximum": 150,
                                      "minimum": -50,
                                      "type": "number"
                                    },
                                    "y": {
                                      "maximum": 150,
                                      "minimum": -50,
                                      "type": "number"
                                    }
                                  },
                                  "required": [
                                    "type",
                                    "shape",
                                    "x",
                                    "y",
                                    "w",
                                    "h"
                                  ],
                                  "type": "object"
                                }
                              ]
                            },
                            "maxItems": 40,
                            "type": "array"
                          }
                        },
                        "required": [
                          "layers"
                        ],
                        "type": "object"
                      },
                      "note": {
                        "maxLength": 300,
                        "type": "string"
                      },
                      "title": {
                        "maxLength": 80,
                        "minLength": 1,
                        "type": "string"
                      }
                    },
                    "required": [
                      "title",
                      "frame"
                    ],
                    "type": "object"
                  },
                  "maxItems": 3,
                  "type": "array"
                },
                "type": {
                  "properties": {
                    "body": {
                      "maxLength": 60,
                      "type": "string"
                    },
                    "display": {
                      "maxLength": 60,
                      "type": "string"
                    },
                    "mono": {
                      "maxLength": 60,
                      "type": "string"
                    },
                    "note": {
                      "maxLength": 200,
                      "type": "string"
                    }
                  },
                  "required": [
                    "display",
                    "body"
                  ],
                  "type": "object"
                }
              },
              "required": [
                "name",
                "logline",
                "references",
                "palette",
                "type",
                "sound",
                "style_frames",
                "panels"
              ],
              "type": "object"
            },
            "maxItems": 4,
            "minItems": 1,
            "type": "array"
          },
          "fps": {
            "maximum": 120,
            "minimum": 12,
            "type": "integer"
          },
          "length_s": {
            "maximum": 900,
            "minimum": 3,
            "type": "number"
          },
          "llm_model": {
            "description": "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 identifier with certainty, pass \"unknown\" — never guess.",
            "type": "string"
          },
          "title": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "title",
          "brief",
          "aspect",
          "length_s",
          "directions",
          "context",
          "llm_model"
        ],
        "type": "object"
      },
      "name": "storyboard"
    },
    {
      "description": "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.",
      "inputSchema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "competitors": {
            "description": "Replaces the draft's list, at most 10. Send the whole final list, including the suggestions the user kept",
            "items": {
              "properties": {
                "key": {
                  "description": "Keep the key a suggested competitor came with, so it stays marked as suggested",
                  "type": "string"
                },
                "meta_page": {
                  "description": "Its Facebook Page: a page name or facebook.com link",
                  "type": "string"
                },
                "name": {
                  "description": "The competing brand",
                  "type": "string"
                },
                "site": {
                  "description": "Its homepage, e.g. glossier.com",
                  "type": "string"
                },
                "tiktok_handle": {
                  "description": "Its TikTok username, with or without @",
                  "type": "string"
                }
              },
              "required": [
                "name"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "confirm": {
            "description": "true queues the scan (uses 1 of the month's 3). Only once the user has seen and agreed to the competitors",
            "type": "boolean"
          },
          "context": {
            "description": "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, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\"",
            "type": "string"
          },
          "id": {
            "description": "Step 2: the scan id from step 1 (or its refs.video/ugc/… link), to edit or confirm that draft",
            "type": "string"
          },
          "llm_model": {
            "description": "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 identifier with certainty, pass \"unknown\" — never guess.",
            "type": "string"
          },
          "url": {
            "description": "Step 1: the product's page, e.g. https://www.yourbrand.com/products/serum (https; a public site)",
            "type": "string"
          }
        },
        "required": [
          "context",
          "llm_model"
        ],
        "type": "object"
      },
      "name": "ugc_scan"
    }
  ]
}

What the leaf hashes

{"body":"fe5e9dbecb36f780c000c89fab8f68f9e9d61a540288ca9de0fe31eff25d46aa","id":1033626,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793289135374159,"prev":null,"subject":"c59624dd-3017-4853-91d7-0e8ce5a8fbd8","subject_kind":"endpoint"}

Proof

Its day has not closed yet. A day closes ten minutes after midnight UTC; the proof appears here then.

How to check it · This row as JSON