Skip to main content
Glama

Showoff.dev – AI Mockup Generator

Change a launch video

update_launch_video

Changes an existing launch video. Use it for every edit to a launch video: replace the whole composition (blocks), change one block (block: { index, ...fields }, index from 1 as get_launch_video numbers the blocks), change the name, accent color, device, look, background or folder, add screenshots to slots by URL, or pick another part of the song (music_start, or music_drop for the exact drop) or a new song (music_url). Use get_launch_video first for block indexes and slots, create_launch_video for a new video and duplicate_project for a variant beside the original. lines/tagline without blocks rebuild the standard film. Another device re-checks the blocks: transitions that no longer fit fall back to the natural ones. Screenshots from disk: run the curl commands from get_launch_video (launch_screen=). Returns the updated video with its render page and what is still missing.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
lookNo"dark" (default): the trailer, devices out of the dark, light in the accent color. "light": friendly and bright, a light gradient background that opens up on the drop, dark text.
loopNotrue: no end card — after the last block everything glides back into the very first frame (camera, the hero phone, its first screen, the background), so the video loops seamlessly from the start, the way Reels and TikToks replay; it ends on a full phrase of the song. Leave out the `end` block; the last block must still show the device of the hero (continue on it with navigate, or let a duo or trio fly in around it). Best with a hero style whose first frame is a moment of its own — zoom, fall, slide, wake. false goes back to an ending.
nameNoThe app name.
blockNoChange ONE block instead of resending `blocks`: its `index` (from 1, as get_launch_video numbers the blocks) and only the fields that change, e.g. { "index": 2, "lines": ["Every split,", "at a glance."] } or { "index": 3, "screenshot": "stats" }. The fields are merged into that block; null removes a field; another `type` starts the block afresh from the fields given. The whole composition is checked again as with `blocks`. Not together with `blocks` or `lines`.
linesNoOnly without `blocks` (the standard film): two or four lines — every block takes two or none, so one or three are rejected —, at most 24 characters each, one row each. Lines 1 and 2 are the hero — the first quiet in the intro, the second on the drop; lines 3 and 4 go over the next screen of the same phone, which comes in the way the app changes screens (navigate). The two phones after it stand without text.
storyNoRequired when creating: the ONE story this video tells, in two to four short sentences a stranger remembers after one watch — the hook, how the product gets there, what you end up with. The Showoff trailer: "Your screenshots, shot like products. Right in your browser — or just ask your AI. Ready to launch." Write it first; then every block tells the next part of it in its two lines, in order. A row of unrelated claims is not a story. Speak to the people the app is for (who they are, what they get now) and claim only what is true — never "every model" or "all colors" unless it literally is so.
accentNo#rrggbb brand color for glow and light. Default: the accent color of the first screenshot.
blocksNoThe composition, in order — see the guide ("Launch videos"). Leave it out for the standard film built from `lines` and `tagline`.
deviceNoThe device of every block without its own `device` (default iphone-17-pro). Phones only for real apps — and always an iPhone unless the user explicitly asks for another model, also for Android screenshots (the phone redraws its own status bar). For a web product take a MacBook ("macbook-pro-16") or "browser".
folderNoOnly when the user names a folder: the folder in their Showoff projects to put this in, e.g. "Launch videos" or a subfolder "Showoff/Trailer" (two levels at most). Folders are found by name and created when missing. "" moves it back to the top level.
formatNo"9:16" (default): a Reel for Instagram, TikTok and Shorts — phones and apps. "16:9": landscape for videos that are mostly a MacBook, a website or browser windows (YouTube, a landing page, X): the whole screen fits, pages are never cut off in a close-up.
taglineNoOnly without `blocks`: a small line under the name on the end card of the standard film. Best left out — the review flags it (end-card-claim): a line under the name makes the end slow and small. For the name slamming into the web address, compose `blocks` with an `end` block and `merge_into`.
variantNoFinish of the video's device (list_devices).
music_urlNoPublic URL of the song (MP3, M4A, WAV, OGG, FLAC; up to 25 MB).
backgroundNolight look: the gradient, top to bottom, as #rrggbb colors, e.g. ["#b0aff1", "#f7c6de"] (lavender to pink). Default: two pastel tones from the accent. Pass [] to go back to the default.
music_dropNoExact second of the drop the hero lands on (snapped to the nearest beat) — when the detected drops miss the moment the chorus kicks in. Overrides music_start. A drop only a few seconds into the song is fine: the entrance before it is shortened to fit (the report says so).
project_idYesProject id (from create_project or list_projects).
status_barNoEvery phone already draws its own clean status bar (9:41, full signal, full battery) over its screenshot. true also puts one over tablet screenshots.
music_startNoSecond in the song around which the video should start — it snaps to the nearest detected drop. Default: the strongest drop with enough music after it.
screenshotsNoScreenshots by public URL (or tiny base64), each into a slot of the blocks. Without `slot` they fill the slots in the order of the film. Files on disk: leave this out and run the returned curl commands.
music_impactNoOnly with an `end` block that has `merge_into` (a teaser without an end card ignores it): second in the song where the end card slams its title into merge_into — e.g. the next drop after the hero, or the last hit of a chorus (snapped to the nearest beat). Every block without its own `beats` stretches or shrinks to land it exactly. Pick it from `music.structure` (get_launch_video). Can be set before the song is uploaded; null removes it.
project_nameNoWhat the user finds this video by in their projects, next to their other videos: "<product> · <what it shows>", e.g. "Tempo · Launch video, drag and drop" or "Showoff · Reel, before and after". Default: "<name> – Launch" — give it whenever the user has or makes more than one video of the product.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare it is a non-read-only, non-destructive mutation, so the safety profile is covered. The description adds real behavior beyond that: merge semantics for block edits (null removes a field, another type restarts the block), that a new device re-checks blocks and unfit transitions fall back to natural ones, and that it returns the updated video with its render page and what is still missing. It does not discuss permissions or rate limits, keeping it at 4.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the purpose and the when-to-use routing before the long enumeration of editable fields and edge cases. The middle run-on sentence packing all edit modes is dense but earns its place given 22 parameters; nothing is padding, though it could be split for readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a very complex mutation tool with no output schema, the description covers purpose, alternatives, merge/fallback behavior, and the return payload. The inclusion of the sibling routing and the disk-screenshot curl fallback make it adequate; minor gaps remain around error/validation behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 22 parameters in depth; baseline is 3. The description adds a little semantic routing (which fields are update modes, the 1-based block index from get_launch_video, the curl flow for disk screenshots) but largely restates schema-level facts.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Changes an existing launch video') and immediately enumerates the mutation modes (blocks, block edit, name, accent, device, look, background, folder, screenshots, music). It distinguishes itself from siblings by naming create_launch_video and duplicate_project as the tools for new/variant videos.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Use it for every edit to a launch video' and routes the agent: 'Use get_launch_video first for block indexes and slots', create_launch_video for a new video, duplicate_project for a variant. It also states the constraint that lines/tagline without blocks rebuild the standard film, so the agent knows which combination to pick.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources