AI Lab tools
Run AI Lab video and image tools (Upscale, Lipsync, Video Translate, Reshoot and more) from Claude and AI coding agents.
AI Lab tools
The MCP server exposes every AI Lab tool from the dashboard: one create tool per AI Lab tool, plus three helpers to list tools, quote prices and poll runs. They use the same options, credits and limits as the dashboard and the AI Lab API.
Tools
Create tools
Each create tool starts one run and needs the creative:generate scope.
| MCP tool | AI Lab tool | Output | What it does |
|---|---|---|---|
recast_video | Recast | video | Remake a video with new people, products or places while keeping its motion. |
reshoot_video | Reshoot | video | Get new camera angles of a take you already filmed. |
erase_from_video | Erase | video | Remove subtitles, captions, watermarks, logos and on-screen text. |
extend_video | Extend | video | Make a video longer with new footage after its end or before its start. |
edit_video | Edit Video | video | Change something inside a clip while the people, motion and camera stay the same (Seedance 2.5 or Kling O3). |
recreate_video | Recreate | video | Remake a video in a new scene, season, style or cast. |
create_thumbnail | Thumbnail | image | Turn a photo into thumbnails for YouTube, Shorts, Reels and TikTok. |
upscale_video | Upscale | video | Sharpen a video to 720p, 1080p or 4K, optionally up to 60 fps. |
lipsync_video | Lipsync | video | Make anyone in a video say new audio, with lips matched to the words. |
change_video_voice | Change Voice | video | Swap the voice in a video for a new one, keeping the timing and delivery. |
translate_video | Video Translate | video | Translate a video's speech into other languages, in the speaker's own voice. |
edit_image_background | Background | image | Replace or remove the background of a photo. |
add_video_sound | Add Sound | video | Add music and sound effects that follow what happens in a video. |
Helpers
| MCP tool | Scope | What it does |
|---|---|---|
list_ai_lab_tools | read | Without tool: a summary of every tool with its MCP tool name and files. With tool: that tool's full input schema, file slots and choices (such as voices for Change Voice). |
estimate_ai_lab_run | read | Credits a run would cost, without starting it. Pass tool, input and, when known, seconds (the main clip's length); otherwise the tool's maximum length is quoted. |
get_ai_lab_run | read | Status and outputs of a run by its id (or the id of any of its outputs). |
In Claude (Connectors): the AI Lab widget
In Claude Desktop and claude.ai, every create tool mounts the Videoslash AI Lab widget (MCP App, ui://videoslash/ai-lab@v1) next to the tool call.
- Claude calls the create tool with the options it understood from the chat (for example
upscale_videowithresolution: "4k") and leaves the files out. - The tool returns
awaiting_mediainstead of starting. This isn't an error: the widget now shows the tool's file slots and options. - The user adds the files in the widget. It converts audio to WAV where a tool needs it (for example MP3 for Lipsync) and asks for an MP4 when a tool only takes MP4, uploads them from the browser, and shows the price.
- The user starts the run in the widget. It shows progress and the results inline, so Claude doesn't need to poll or paste output URLs.
Files never pass through the chat or Claude's context. Ask Claude for what you want ("upscale this to 4K at 60 fps"), then add the file in the widget.
Coding agents (API key)
Claude Code, Codex, Cursor and other API-key clients don't render the widget. Upload the files first, then call the create tool with every required file:
- Upload each file.
request_creative_media_uploadreturns a presigned URL. PUT the file bytes to it with therequiredHeaders(for example withcurl -T). Use this for anything large; the upload endpoint caps video at 200MB.upload_creative_mediatakes the file as base64 in the tool call, up to 8MB decoded. Pass the base64 only as the tool argument; never print it into the conversation.
- Call the create tool with the
uploadIdin the tool's file field (for examplevideoforupscale_video,videoandaudioforlipsync_video). The URL of an earlier output works too, so tools chain: Recast a clip, then pass the result's URL toupscale_video. - Poll
get_ai_lab_run(see below).
A create tool called without a required file returns validation_error naming the missing fields.
The tools don't convert files for API-key clients. Lipsync needs an MP4 video and a WAV audio, Video Translate an MP4, and Reshoot's custom soundtrack a WAV; convert other formats (for example with ffmpeg) before uploading. Call list_ai_lab_tools with tool for each slot's accepted types and limits. Other format rules are listed in the AI Lab API guide.
Example prompts:
- "Upscale ./renders/teaser.mov to 1080p at 30 fps with Videoslash."
- "Lip-sync ./host.mp4 to ./line.wav and tell me what it costs first."
- "Translate ./promo.mp4 into Spanish and German."
Plans and credits
- An active plan is required for every create tool (and for
create_creative_generation), the same as on the dashboard. Without one, the tool returnssubscription_requiredwith a billing link and a summary of the plans. Pay-per-use credits stay on the account and can be spent once the user subscribes. - Credits are charged when a run starts, by the tool's own pricing, based on the files' measured length. Use
estimate_ai_lab_runto quote first. Outputs that fail are refunded. - Not enough credits returns
insufficient_creditswith advice: how many credits are needed, which credit pack covers the shortfall, or when plan credits refill. get_creditsreturns the balances plussubscribed,plan,refillsAt,canBuyPacksandpacks, and addsadvicewhen the user has no plan or is low on credits.- Too many runs in a short time return
rate_limited. Wait a minute and try again.
Long-running runs
AI Lab runs take from about a minute to several minutes (longer for big clips and multi-output runs). A create tool returns right away with the run, its outputs still processing.
- Poll
get_ai_lab_runwith the runidabout every 10 to 20 seconds untilstatusis no longerprocessing. - A run's
statusends ascompleted,failedorpartial(some outputs failed). Each item has its ownstatus,urlwhen completed anderrorwhen failed. - Multi-output runs (Recast versions, Reshoot angles, Thumbnail and Background variants, voices, languages, Add Sound takes) return one run with one item per output, each with a
label. - In Claude, the widget does the polling and shows the results, so Claude doesn't need to.
Tool annotations
Read tools (list_ai_lab_tools, estimate_ai_lab_run, get_ai_lab_run) declare readOnlyHint: true and idempotentHint: true. Create tools declare readOnlyHint: false and destructiveHint: false: they add new outputs and never change or delete existing ones. All tools declare openWorldHint: false.