Skip to content

Ask AI

Ask anything about Destesi — setup, products, APIs.

AI answers may be wrong — always verify against the docs.

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’.