Make a show from inside your AI assistant
ShowMaker speaks MCP, so any AI client that does too can run the studio directly: write and fix the script, build a consistent cast, break scenes into shots, draw the stills, cast and perform the voices, render the clips and assemble the cut — 104 tools, the same ones the product itself runs on.
https://mcp.showmaker.studio/mcpConnect it
There is nothing to install. The server is remote, speaks streamable HTTP, and signs you in through your browser the first time your client asks for it.
Claude (web, desktop and mobile)
- Open Settings → Connectors and choose Add custom connector.
- Paste the URL above. Leave every other field alone — the connector discovers what it needs.
- Click Connect. Claude sends you to ShowMaker to sign in and approve access, then comes back connected.
- Ask for something. Start with “list my ShowMaker projects” to confirm the link.
mcp., not msp. — a typo resolves to a server that is not ours and simply 404s, with nothing to point at.You need an account on Starter or above
Every tool below is documented in the open, because you should be able to see exactly what an agent could do with your studio before you decide to give it one. The connection itself is a different matter: these tools read your scripts, change your projects and spend your credits, so the server answers only a caller that has signed in as you.
- Sign-in is OAuth 2.1 with PKCE. Your client is registered automatically — nothing to fill in, no keys to paste.
- A connection is scoped to one organisation — the one you signed in with — and reaches only the projects that org can already see.
- Access is revocable at any time, from the panel below, and every issued credential expires on its own.
- Spending is separate from writing. The scopes are
mcp:readandmcp:write; permission to start paid work (mcp:spend) is granted deliberately, not by default.
Connecting needs a ShowMaker account
The tools on this page are the same ones the studio itself runs on, and they act on your projects and spend your credits — so the server will not answer an agent that has not signed in. Everything on this page is readable without one; only the connection itself needs you.
Connecting needs a plan of Starter or above — an assistant generates on a loop, so automated access sits outside the free tier.
Checking your session…
Signed in, this panel becomes where you issue and revoke access tokens for clients that cannot do the browser sign-in themselves.
What it can do
The catalogue follows the pipeline, from a premise nobody has paid for yet to a finished cut. Each area below is a real stage of making an episode — jump to its tools, or read the whole list further down.
Projects & credits
Open a show, see what you can spend, reuse an earlier episode.
02 · 9 toolsStory development
Premise to characters, locations and beats — before a penny is spent.
03 · 7 toolsThe screenplay
Read and edit the script — a whole draft, or one line.
04 · 12 toolsCast & wardrobe
Consistent people — reference sheets, outfits, and a reusable library.
05 · 14 toolsLocations & props
Rooms that stay the same room, and objects a shot can point at.
06 · 18 toolsStoryboard & shots
Break a scene into coverage, then edit any shot in it.
07 · 13 toolsStills & re-shooting
Draw the frame, then change one thing about it without starting over.
08 · 8 toolsVoice, dialogue & captions
Cast voices, perform the lines, burn the captions.
09 · 11 toolsRendering & assembly
Turn stills into clips, then clips into a watchable cut.
10 · 6 toolsTitles & name tags
Lower-thirds, title cards and the Titles track.
What your agent sees first
104 tool definitions are more than most clients will hold — and a client that cannot hold them does not say so, it silently keeps the ones that fit. So the connector opens with a small, permanent set plus a way to reach everything else:
find_toolssearches the full catalogue by any words you like, best match first.describe_toolreturns a tool's real description and input schema.call_toolruns any tool in the catalogue by name — identical to calling it directly, with the same permission checks.
Alongside those, these are always visible without a search: list_projects, get_credits, list_characters, get_script, list_props, list_locations, list_scenes, generate_scene_preview, poll_project, update_shot.
?tools=full to the URL and it will serve every schema up front instead.Ask it like this
Make me a nine-episode vertical drama about a surrogate who discovers she is carrying twins for two different families. Build the cast and the locations, then show me episode one's beats before you spend anything.
Story tools only — no images, no renders, no credits.
Break scene 3 into coverage — establishing, singles on both of them with matched eyelines, and an insert on the phone — then draw the stills and show me a contact sheet.
Coverage, blocking and stills, before a frame of video exists.
Line 4 of scene 1 is on the wrong character — it belongs to the older brother, not the driver. Fix it, re-voice that line, and re-shoot the still from a low angle without touching anything else in the frame.
Single-line edits exist precisely so a small fix stays small.
Every tool
All 104 of them, grouped by what they are for. This is the complete surface — the same names, summaries and arguments your agent gets back from find_tools and describe_tool.
Projects & credits
6 toolsEverything starts with a project. An agent can create one, list the ones you can work on, find the other episodes of a series, and copy a finished episode's cast, locations and props into the next one so a series stays consistent. get_credits reports what the account can actually spend right now — not what it stores — so an agent can check before starting expensive work.
Create a new project (the first step of the whole flow)
required: title · optional: aspectRatio, dialogueLanguage, format, prompt, type, visualStyle
List the projects you can work on, newest first — id, title, type, format, status and timestamps
optional: limit, seriesId
The OTHER projects this account owns — how you find another EPISODE of the series you are working on
optional: limit, seriesId
Patch top-level project fields (e.g
required: patch, projectId
How many credits this account can SPEND right now
no arguments
Copy CAST, LOCATIONS, PROPS and/or SCENES from another project into this one — how episode 2 of a series reuses episode 1's people and sets instead of…
required: projectId, sourceProjectId · optional: copyCharacters, copyLocations, copyProps, copyScenes
Story development
9 toolsThe story layer is deliberately cheap. An agent can generate a cast, a world and a beat sheet from a premise, refine it over a multi-turn conversation, score it for AI-video readiness, or ingest a script you already wrote and infer its people and places from the text.
One-shot AI generation: given a premise, returns characters + locations + beats + scenes with @slug refs already embedded
required: premise, projectId · optional: coverage, faithful, projectType, visualStyle
Multi-turn refinement chat — pass the full conversation messages array
required: messages · optional: context
Score a story for AI-video readiness across 10 criteria (max 20)
required: messages · optional: context
Read the current storyDev JSON for a project (premise, characters, locations, beats, scenes, conversation history)
required: projectId
Overwrite the storyDev JSON for a project
required: projectId · optional: beats, characters, conversationHistory, locations, premise, scenes, scenesSource, updatedAt
INGEST an existing script/prose into structured scenes
required: projectId, text · optional: chunk, faithful, mode
Infer the CAST + LOCATIONS from a script's text (`scriptText`)
required: projectId, scriptText
Convert the storyDev blob (generate_story's beats + scenes) into a SCREENPLAY and save it — the bridge from the story path to the script path
required: projectId · optional: overwrite
Materialise the storyDev blob into the SCENES table AND into real Character/Location entities
required: projectId
The screenplay
7 toolsget_script reads the acts, scenes, dialogue and shots a project actually holds. save_script replaces a whole screenplay; update_dialogue_line patches one spoken line by id, which is what you want when a single word is wrong and you do not want to risk the rest of the draft. Pushing the script to the board is what creates the shots everything downstream edits.
READ the screenplay — the acts/scenes/dialogue/shots a project actually holds
required: projectId · optional: mode, sceneId
Write the SCREENPLAY (script.acts[].scenes[]) for a project
required: projectId, script
Patch ONE dialogue line's spoken text and/or speaker, by its dialogue line id (dl_id from get_script mode:'scene', scene.dialog[].id)
required: dialogLineId, projectId, sceneId · optional: character, line
Rename a scene
required: projectId, scriptSceneId, slugline
Create a REAL scene — the SCRIPT scene and its linked board row together
required: projectId · optional: action, description, duration, durationSec, insertAfterScriptSceneId, prompt, slugline, title, videoPrompt
Materialise the saved SCREENPLAY into board scenes, each carrying its scriptSceneId (the link coverage + shot tools need)
required: projectId
Re-sync the script's shots onto the board after coverage/shot edits (upserts one board scene per script shot, stamping scriptShotId/scriptSceneId)
required: projectId · optional: forceRewritePrompts, shotId
Cast & wardrobe
12 toolsA character is a real entity with reference stills, a slug your prompts @-mention, and wardrobe outfits that lock a look across scenes. The shared Cast Library carries named people between projects, so a recurring character arrives already drawn.
List all real Character entities for a project (the materialised ones with stills, not the storyDev draft characters).
required: projectId
Create a real Character entity directly (bypasses push_to_board)
required: name, projectId · optional: glamour, negativePrompt, prompt, slug, voiceId, voiceName, voiceOnly
Patch a character's fields (name, prompt, negativePrompt, slug) and its NAME TAG defaults (tagRole, tagImageUrl, tagImageStyle)
required: characterId, projectId · optional: aliases, glamour, name, negativePrompt, prompt, slug, tagImageStyle, tagImageUrl, tagRole, voiceFx, voiceFxReverb, voiceGain, voiceId, voiceName, voiceOnly, voicePitch, voiceSource, voiceSpeed, voiceStability
Delete a character entity
required: characterId, projectId
Generate one still image for a character
required: characterId, projectId · optional: glamour, model, refImageUrl, refStillId, shotType
Import an existing image URL as a still on a character
required: characterId, projectId, url · optional: replaceStillId, tag
Delete one still from a character
required: characterId, projectId, stillId
Add a WARDROBE OUTFIT to a character — the way to LOCK an outfit across scenes
required: characterId, name, projectId · optional: baseWardrobeId, locationName, locationTag, promptExtension
Render a wardrobe outfit's reference SHEET — one multi-panel turnaround (same face, the outfit's clothes) stored as the outfit's turnaroundUrl and slu…
required: characterId, projectId, wardrobeId · optional: glamour, matchReferenceOutfit, model
Patch a wardrobe outfit (name, promptExtension, locationTag, slug)
required: characterId, projectId, wardrobeId · optional: baseWardrobeId, locationTag, name, promptExtension, slug
Delete a wardrobe outfit from a character.
required: characterId, projectId, wardrobeId
Who is IN a shot — the characters the board sceneId actually shows, each with its NAME TAG defaults (tagRole) and cached lockup (tagImageUrl)
required: projectId, sceneId
Locations & props
14 toolsLocations get a reference plate and can be shot again from additional camera angles, so every coverage shot reads as one place. Props work the same way: draw the object once, @-mention its slug, and every shot that names it is anchored to the same picture.
List all real Location entities for a project.
required: projectId
Create a real Location entity directly.
required: name, projectId · optional: negativePrompt, prompt, slug
Patch a location's fields (name, prompt, negativePrompt, slug)
required: locationId, projectId · optional: lock, name, negativePrompt, prompt, slug
Delete a location entity
required: locationId, projectId
Generate one still image for a location
required: locationId, projectId · optional: model, refImageUrl, refStillId
The catalogue of extra camera angles generate_location_angles can shoot of a location (id, label, kind, description)
required: projectId
Shoot a location you already have a still of from ADDITIONAL camera positions, saved onto that SAME location
required: angles, locationId, projectId · optional: previewOnly, refStillId
Attach angles shot with generate_location_angles(previewOnly=true) to their location
required: locationId, projectId, stills
Turn chosen angle stills into LOCATIONS of their own
required: locationId, projectId, stillIds · optional: names
List all real Prop entities for a project (name, @slug, prompt, stills)
required: projectId
Create a real Prop entity — an object a shot can @-mention (a weapon, a contract, an idol)
required: name, projectId · optional: framing, negativePrompt, prompt, slug
Patch a prop's fields (name, prompt, negativePrompt, slug)
required: projectId, propId · optional: name, negativePrompt, prompt, slug
Delete a prop entity
required: projectId, propId
Draw a prop's reference still — the picture every shot that @-mentions it gets anchored to
required: projectId, propId · optional: model, refImageUrl, refStillId, tag
Storyboard & shots
18 toolsThis is the largest area, and the one an agent spends most of its time in: turn a scene into establishing shots, dialogue singles with matched eyelines, inserts and reactions; stage where people stand and where the camera is; patch a prompt; lock a shot against re-render; and pull one back out of the bin when a delete was wrong.
List the board scenes for a project (after push_to_board has materialised them) — what each row IS, whether it has a still and a clip, and the URLs to…
required: projectId · optional: detail, sceneId
Patch fields on a board scene (a shot)
required: patch, projectId, sceneId
Add one shot to a scene's coverage (a board scene) with an explicit still prompt / video prompt
required: description, projectId, scriptSceneId · optional: coverageType, dialogLineId, duration, generateAudio, insertAtIndex, negativePrompt, reactsToDialogLineId, videoModel, videoPrompt
Patch a shot's fields — most importantly its still `visualPrompt`
required: patch, projectId · optional: scriptShotId, shotId
Set ANY aspect of HOW a shot renders — video source/model, mode, voicing, Ken Burns, morph frames, captions, quality
required: projectId, sceneId · optional: audioLeadMs, autoAddOnRegen, captionsScale, captionsStyle, captionsText, durationSec, endFrameUrl, extendFromSceneId, generateAudio, kenBurns, lcutToNext, loopToVoiceover, mode, morphTargetSceneId, negativePrompt, renderQuality, shotType, splitDialogueRender, startFrameUrl, videoModel, voiceoverPitch, voiceoverSpeed, voiceoverText, voiceoverVoiceName, voicing
Break ONE scene into individual coverage SHOTS (establishing / dialogue singles with matched eyelines / inserts / reactions), each with its own framin…
required: projectId, scriptSceneId · optional: description, dialogLineId, locationSlug, mode, shots
STAGE a scene — where each subject stands in frame and where the camera is
required: projectId, scriptSceneId · optional: aspect, background, bgSlug, camera, description, items, remove, scene, visualPrompt
Copy a FINISHED shot from any scene into another scene as an INTERCUT / flash-back / flash-ahead
required: projectId, sourceShotId, targetScriptSceneId · optional: index, scriptSceneId, shotId
AI-enhance a shot's still prompt text into a richer, cinematic prompt (stateless — pass the current `text`; @slug references are preserved)
required: projectId, text · optional: availableSlugs
Author a fresh VIDEO (motion) prompt for a shot from its still + current dialogue/line — use after editing a dialogue line so the motion prompt no lon…
required: projectId, stillPrompt · optional: availableSlugs, description, dialogue, shotType, speaker
Read-only: return the exact reference stills (cast/wardrobe/location/props + the establishing look-ref) that a scene's still render WILL send, each fl…
required: projectId, sceneId · optional: promptOverride
Rebuild a scene's reference set from its prompt's @slugs (replaces the stored refs — drops a stale/removed @ref, unlike the append-only reconcile)
required: projectId, sceneId
Lock or unlock a shot/scene against re-render
required: locked, projectId, sceneId
Delete a shot from a scene (recoverable from the deleted-shot bin)
required: projectId · optional: sceneId, scriptShotId, shotId
Delete ONE board row by its board sceneId
required: projectId, sceneId
The deleted-shot BIN — shots removed from this project, still recoverable
required: projectId
Put a binned shot back, into ANY scene, at a drop index
required: archivedSceneId, projectId, targetScriptSceneId · optional: index, scriptSceneId
Point a shot back at one of its EARLIER stills
required: key, projectId, sceneId
Stills & re-shooting
13 toolsEvery shot gets a still before it ever becomes video, which is where the money is saved. A still can be re-shot from a different camera angle, edited to change one described thing, punched into for a tighter insert, or upscaled so an insert cuts at native size. Frames and segments of finished clips can be captured back as reusable references.
Generate a single gpt-image-2 still showing what a scene WILL look like as its starting frame
required: projectId, sceneId · optional: allowUnresolvedTags, model, previewOnly, promptOverride, quality
Generate the storyboard still for EVERY scene in one call (batch, ≤10 in parallel)
required: projectId · optional: force, model
Stitch every scene's preview frame into a single contact-sheet image (4-column grid)
required: projectId
The catalogue of camera angles preview_shot_restage can re-shoot an existing SHOT still from (id, label, description, reposeRisk)
required: projectId
Re-shoot ONE shot's still without re-rendering it — a new camera ANGLE, or an EDIT that changes one described thing and leaves everything else identic…
required: projectId, scriptShotId · optional: angleId, authorPrompt, change, mode, region, sharpen, useCastRefs
Commit a preview_shot_restage result
required: imageUrl, projectId, scriptShotId, target · optional: description, savePrompt, visualPrompt
Make (or reuse) a HIGH-RESOLUTION copy of a shot's still, so inserts can be cut from it at native size
required: projectId, scriptShotId · optional: force
PUNCH IN: cut a tighter INSERT out of a frame you already have
required: projectId, rect, scriptShotId · optional: description, target
Generate a TITLE CARD image and return its URL
required: projectId · optional: look, text
Land an already-previewed card as a REAL shot inside a script scene
required: imageUrl, projectId, scriptSceneId · optional: asVideo, durationSec, index, motion, text, videoModel
Grab a single FULL-RESOLUTION frame at `atSec` out of a source video clip and store it as a reusable IMAGE REFERENCE in the project's reference librar…
required: atSec, projectId, sourceUrl · optional: title
Carve an IN→OUT window out of a source video clip and store it as a reusable MOTION REFERENCE in the project's reference library — the video twin of e…
required: inSec, outSec, projectId, sourceUrl · optional: title
Pull the last frame of a rendered scene's video clip via ffmpeg
required: projectId, sceneId · optional: versionId
Voice, dialogue & captions
8 toolsSearch roughly twelve thousand library voices, assign one to a character, and generate per-line takes that also drive lip-sync. Captions are transcribed from the voice that actually plays, with word timings, and composed into the clip.
Search the ElevenLabs shared voice library (~12k voices) by free-text + language/accent/gender/age
optional: accent, age, gender, language, pageSize, search
Assign a voice to a character so their dialogue/narration is voiced with it
required: characterId, projectId · optional: voiceId, voiceName, voiceRefUrl
Auto-assign fitting library voices to characters that don't have one yet (by their described age/gender)
required: projectId · optional: characterIds
Generate the spoken VOICEOVER / narration audio for a SHOT and store it on the row
required: projectId, sceneId · optional: expressiveDefault, expressiveMode, seed, speed, text, voice, voiceFx, voiceFxReverb, voicePitch, voiceSource
Generate a per-LINE dialogue TTS take (ElevenLabs) for a specific character — the take that also drives Seedance lip-sync
required: projectId, sceneId, text · optional: character, dlId, expressiveDefault, expressiveMode, expressiveTags, expressiveText, nextText, parenthetical, previousRequestIds, previousText, speed, stability, voiceFx, voiceFxReverb, voiceId, voicePitch
Add ElevenLabs v3 expressive delivery tags (inline, phrase-by-phrase) to every scene's dialogue/voiceover for the project, so a re-voice sounds perfor…
required: projectId
Generate burned-in captions for a scene by transcribing its voiceover (Whisper word timings)
required: projectId, sceneId · optional: captionSource, font, highlightColor, holdMs, position, promptHint, style, text, wordsPerSlide
Burn a scene's voiceover audio AND captions into a single COMPOSED clip (the assembler prefers each scene's composed clip)
required: projectId, sceneId · optional: captionBurn
Rendering & assembly
11 toolsRender one shot or a whole scene, fuse a run of shots into a single take, split a take back apart, lay a score under the whole show, and assemble the final cut. Renders are asynchronous — poll_project is the one call that tells an agent where everything stands.
Render the actual video clip for a scene
required: projectId, sceneId · optional: allowExpensive, force, generateAudio, locationImageUrls, mode, model, refImageLabels, refImageOverride
Build ONE scene's watchable clip — the board's “Render scene” button
required: projectId, scriptSceneId
Check status of every queued/rendering scene in a project in one call
required: projectId
Compose a SELECTED RUN of a scene's existing shots into ONE multishot clip — the board's 'make these shots one take' action
required: projectId, scriptSceneId, shotIds · optional: model, seconds
Split a RENDERED multishot group's clip back onto its member shots at the given cut times — the board's 'break this take into its shots' action
required: markers, projectId, scriptShotId · optional: dryRun, overwrite, shotId
Find the HARD CUTS inside a shot's rendered clip and report their times in seconds
required: projectId, scriptShotId · optional: shotId
Author a rendered shot as a CUTAWAY over a parent shot — a video OVERLAY that plays on top of the parent for a moment while the PARENT'S AUDIO KEEPS P…
required: offsetSec, parentShotId, projectId, sourceShotId · optional: shotId
Remove a shot's cutaway link
required: projectId, sourceShotId · optional: shotId
Compose ONE continuous music bed for the WHOLE show, shaped to the emotional/tension arc, and lay it under the cut (ducked beneath dialogue)
required: projectId · optional: arc, brief, dropDepth, engine, gainArc, genre, intensity, prompt, sfx
Assemble the final watchable cut — the Release Cut
required: projectId
Check whether the assembled show is ready and get its playable URL — WITHOUT triggering a (re)build
required: projectId
Titles & name tags
6 toolsName tags are rendered as real artwork in one of several lockup styles and placed on a Titles track you can read, retime and re-place cue by cue.
The lockup styles generate_title_card can render (prestige / news / neon / minimal), each with a note on what it suits
no arguments
Render a character name tag as ARTWORK — 'LEO ANDERSON' over 'CEO of Vantage Holdings' as a broadcast lower-third — keyed to transparency and cropped,…
required: name, projectId · optional: role, style
Read the Titles track — every name tag and burned caption with its cueId, kind, timing, placement and whether artwork is attached
required: projectId · optional: kind
Place a character name tag on the Titles track
required: name, projectId · optional: anchorOffsetMs, anchorSceneId, durationMs, imageScale, imageUrl, role, startMs, x, y
Patch one cue on the Titles track by cueId (from list_title_cues) — rename, re-place (x/y), retime (startMs moves it without stretching; durationMs se…
required: cueId, projectId · optional: anchorOffsetMs, anchorSceneId, clearImage, durationMs, endMs, imageScale, imageUrl, name, role, startMs, x, y
Remove one cue from the Titles track by cueId (either a name tag or a burned caption)
required: cueId, projectId
What costs money
Reading costs nothing. Anything that generates — a still, a voice take, a video clip, an assembled cut — spends credits from the same balance as the studio UI, at the same prices. An agent can check what it is able to spend first with get_credits, which reports what your account can actually spend right now rather than what it merely holds.
If something looks wrong
Your client only shows a handful of tools
That is the intended opening set — ask it to search for what you need and it will find the rest. If it cannot see find_tools either, remove the connector and add it again: clients cache the tool list from the moment they connect, and a stale copy is only replaced by reconnecting.
It says it is not authorised
Sign in again from your client's connector settings. If you revoked a token below, any agent using it stops immediately and by design.
A long job seems to hang
Rendering and batch stills are asynchronous — the work continues on our side even if your client gives up waiting. Ask it to poll with poll_project rather than starting the job again; a second attempt can spend credits twice.
The connector will not add at all
Check the host character by character: mcp.showmaker.studio. A near-miss hostname does not fail loudly — it resolves somewhere else entirely and returns a plain 404.