Studio MCP tools
Registered when the server starts with STUDIO_API_URL set. 29 tools, listed with the description the server sends in tools/list.
| Tool | Description |
|---|---|
studio_approve_run |
Approve a Studio run for render/publish. |
studio_cancel_run |
Cancel a Studio run. Only queued or running runs are cancellable (409 otherwise). |
studio_create_project |
Create a new Studio content project from a natural-language prompt, optionally cut to a target_seconds length, with a chosen language/voice/narration direction and candidate images. |
studio_delete_project |
Delete a Studio project. |
studio_describe_house_style |
Describe every Studio house format: what it does to the film and whether it renders on its own pinned stage. A format is chosen per project or visual template, never on the brand. Stage note: documentary (deepfield) and data (graphite) render on a PINNED stage — compose forces it and a project cannot switch — while product-demo DEFAULTS to noir and paper DEFAULTS to the paper stage, either of which a project may still change in the editor. All four keep the brand’s ACCENT but not its background colour. When a response carries a stage_note, relay it verbatim rather than writing your own. |
studio_get_brand |
Read the workspace’s Studio brand — ONE per workspace, used by every project and frozen onto each new run: theme or custom colours, fonts, voice, and the watermark logo with its placement. The brand has no house format: that is chosen per visual template or per project. configured:false means it was never set up. |
studio_get_project |
Get one Studio project’s details. |
studio_get_run |
Get one Studio run’s state and steps. |
studio_get_template |
Get one Studio template. Kinds: ‘visual’ (a production preset: aspect ratio, captions, music, intro/outro, style preset, rules) and ‘images’ (default pictures per scene only — ignore its aspect/quality/style/caption fields, they are forced defaults); a project pairs one of each via template_id + images_template_id. A template is a LIVE preset: nothing is copied onto a project, every new run reads the template as it is then, so editing a template or re-pairing a project takes effect on the next run, and runs already made keep what they used. Templates carry no brand: colours, fonts, logo and voice are the workspace brand’s (studio_get_brand). format = the kind of film the template makes (a house format key, e.g. ‘devotional’); it beats the project’s own format and the template’s style_preset, and ‘’ decides nothing (the project’s format applies). verse_card = the card a verse is quoted on with a typewriter caption (light, glass, overlay, quote, lower); ‘’ follows the format (devotional: glass). style_preset ‘’ = follow the format; a key is an explicit style that beats the project’s format for projects on this template. caption_style ‘’ = follow the format. project_count = how many projects use the template right now (either half of the pair). |
studio_list_projects |
List Studio content projects in a workspace. |
studio_list_promos |
List the workspace’s Studio promos (agent-produced product videos). |
studio_list_publish_destinations |
List the workspace’s connected social accounts Studio can publish to (YouTube, TikTok, Instagram, Facebook, LinkedIn, Threads), grouped by provider. Each account id is a social_account_ids value for studio_publish_run; selected marks the accounts Studio is linked to when the provider is configured. |
studio_list_publishes |
List the social publishes (scheduled, in flight, done, failed) of a Studio run. |
studio_list_runs |
List agent runs for a Studio project. |
studio_list_templates |
List the workspace’s Studio templates. Kinds: ‘visual’ (a production preset: aspect ratio, captions, music, intro/outro, style preset, rules) and ‘images’ (default pictures per scene only — ignore its aspect/quality/style/caption fields, they are forced defaults); a project pairs one of each via template_id + images_template_id. A template is a LIVE preset: nothing is copied onto a project, every new run reads the template as it is then, so editing a template or re-pairing a project takes effect on the next run, and runs already made keep what they used. Templates carry no brand: colours, fonts, logo and voice are the workspace brand’s (studio_get_brand). format = the kind of film the template makes (a house format key, e.g. ‘devotional’); it beats the project’s own format and the template’s style_preset, and ‘’ decides nothing (the project’s format applies). verse_card = the card a verse is quoted on with a typewriter caption (light, glass, overlay, quote, lower); ‘’ follows the format (devotional: glass). style_preset ‘’ = follow the format; a key is an explicit style that beats the project’s format for projects on this template. caption_style ‘’ = follow the format. project_count = how many projects use the template right now (either half of the pair). |
studio_list_voices |
List the narration voices available to Studio runs in this workspace. |
studio_preview_format |
Storyboard a Studio house format beat by beat — the block, layout, background, camera and transition each beat would get. A storyboard, not a render: instant, nothing is generated and nothing is changed. Stage note: documentary (deepfield) and data (graphite) render on a PINNED stage — compose forces it and a project cannot switch — while product-demo DEFAULTS to noir and paper DEFAULTS to the paper stage, either of which a project may still change in the editor. All four keep the brand’s ACCENT but not its background colour. When a response carries a stage_note, relay it verbatim rather than writing your own. |
studio_publish_run |
Publish an approved Studio run’s video on the user’s REAL social accounts (YouTube, TikTok, Instagram, …) — this posts publicly on their behalf. The run must be in state ‘approved’. social_account_ids are Connect social connection ids: list them with studio_list_publish_destinations first. Needs the videos.publish permission (403 permission_required otherwise). |
studio_render_preview |
Queue a fresh render of a run’s current scenes (after edits). Returns the tool op id to poll. |
studio_retry_run |
Re-enqueue a failed or cancelled Studio run (409 from any other state). |
studio_share_run |
Enable a public share link for a Studio run’s video; returns share_url. Needs the videos.publish permission (403 permission_required otherwise). |
studio_start_run |
Start a new agent run on a Studio project. Enqueues the run and returns its id immediately — poll studio_get_run for progress; studio_worker_status explains a run that stays queued. |
studio_suggest_formats |
Suggest three Studio HOUSE FORMATS for a workspace — the SHAPE its videos take (pacing, block vocabulary, camera, how much photography), on top of the brand’s colours. Each comes with the reason it was suggested. Nothing is changed; apply one with studio_update_project format (or a visual template’s format). |
studio_translate_run |
Translate a Studio run into another language: creates that language version with translated scripts and re-cast voices, then queues its narration and render. Returns run_id and variant_id. |
studio_unshare_run |
Disable a Studio run’s public share link. |
studio_update_brand |
Edit the workspace’s Studio brand with a MERGING patch: a key you pass is set, a key you omit is left alone, null clears it. Pass only what changes. theme and colours are two answers to one question — a starter theme clears custom colours and colours clear the theme, so never send both (422 brand_kit_invalid). colours and fonts each replace their whole object, so send every colour you want kept (read studio_get_brand first). Unknown keys, bad hex or unknown fonts are refused (400/422), and so is a format: the house format is set per project (studio_update_project) or per template, never on the brand; colours must pass a contrast check (422 brand_kit_illegible names the pair and ratio). The edit reaches the NEXT run of every project; runs already made keep the brand they were frozen with. The logo image itself is uploaded on Studio Settings → Brand. Workspace owners and admins only (403 admin_required). |
studio_update_project |
Update a Studio project. Only the fields you pass are changed. Kinds: ‘visual’ (a production preset: aspect ratio, captions, music, intro/outro, style preset, rules) and ‘images’ (default pictures per scene only — ignore its aspect/quality/style/caption fields, they are forced defaults); a project pairs one of each via template_id + images_template_id. A template is a LIVE preset: nothing is copied onto a project, every new run reads the template as it is then, so editing a template or re-pairing a project takes effect on the next run, and runs already made keep what they used. Templates carry no brand: colours, fonts, logo and voice are the workspace brand’s (studio_get_brand). Stage note: documentary (deepfield) and data (graphite) render on a PINNED stage — compose forces it and a project cannot switch — while product-demo DEFAULTS to noir and paper DEFAULTS to the paper stage, either of which a project may still change in the editor. All four keep the brand’s ACCENT but not its background colour. When a response carries a stage_note, relay it verbatim rather than writing your own. |
studio_vary_run |
Re-cut a Studio film with a fresh take: enqueues a new run of the same project with the same brief, but a different arc order so it does not open the way the last one did. Use it when a video looks the same as the previous one — never rewrite the brief for that. Returns immediately with a queued run id; poll studio_get_run for the result. |
studio_worker_status |
Report whether a Studio worker is online. online:false means no worker is picking up jobs, which is why runs sit in ‘queued’. |