MCP tool reference
Connect an account key using the connection guide, then choose a tool for one specific step. The schemas and scopes below are generated from the same registry that serves the MCP client. Each example has been checked against that schema without executing the tool. Open-ended params objects require the handler-specific constraints described alongside the example; structural validation does not prove a successful execution.
Tools marked admin only are absent from ordinary account keys. A spend scope grants technical access to a paid operation; it does not replace agreement on the task and budget. Never automatically retry a paid call after an ambiguous outcome. Read recovery and run a node first.
describe_studio
Section titled “describe_studio”Discover current node types, model choices and domain constraints.
| Setting | Value |
|---|---|
| Scope | read |
| Cost class | free |
| Availability | account key with the required scope |
| Project context required | no |
Arguments
Section titled “Arguments”{ "type": "object", "properties": {}, "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{}Check the result: Find the intended node and supported model operation before constructing a graph.
- Catalog visibility follows the account; do not assume an unavailable option exists.
model_advice
Section titled “model_advice”Read the studio’s curated guidance for an image or video model.
| Setting | Value |
|---|---|
| Scope | read |
| Cost class | free |
| Availability | account key with the required scope |
| Project context required | no |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "medium": { "type": "string", "enum": [ "video", "image" ], "description": "video — модели, которые делают клип; image — которые рисуют кадр" }, "model": { "type": "string", "description": "id модели из списка этой среды; без него придёт сравнение всей среды" } }, "required": [ "medium" ], "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "medium": "video", "model": "seedance2"}Check the result: Separate current facts, measured observations and missing advice.
- A missing brief is reported explicitly; do not invent guidance from a model name.
list_skills
Section titled “list_skills”Find applicable skills by node type and target model.
| Setting | Value |
|---|---|
| Scope | read |
| Cost class | free |
| Availability | account key with the required scope |
| Project context required | no |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "node_type": { "type": "string", "description": "тип ноды из каталога студии — оставит только уместные ей приёмы" }, "model": { "type": "string", "description": "id модели-генератора дальше по цепочке — приёмы под неё встанут первыми" } }, "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "node_type": "avg/prompt_scriptwriter"}Check the result: Choose IDs whose scope and model fit the authoring node.
- Returns metadata, not protected instruction bodies.
read_project_graph
Section titled “read_project_graph”Read the saved nodes, links, current revision and scene addresses.
| Setting | Value |
|---|---|
| Scope | read |
| Cost class | free |
| Availability | account key with the required scope |
| Project context required | yes |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "project_id": { "type": "string", "description": "проект студии: ссылка на него (поле url из create_project, list_projects, read_project_graph — целиком, путём /studio/… или только хвостом из 12 символов) либо id проекта; получить список: list_projects" } }, "additionalProperties": false, "required": [ "project_id" ]}Reviewed example arguments
Section titled “Reviewed example arguments”{ "project_id": "<url or id returned by list_projects>"}Check the result: Confirm the target project and retain its revision before changes.
- A saved done status does not establish that a result matches current inputs.
- The overview does not include every full result text.
- Studio-owned step instructions can be redacted even when their node or trace row is visible; an ordinary API key does not expose the protected text.
read_run_history
Section titled “read_run_history”Check whether nodes ran and what each recorded run did.
| Setting | Value |
|---|---|
| Scope | read |
| Cost class | free |
| Availability | account key with the required scope |
| Project context required | yes |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "project_id": { "type": "string", "description": "проект студии: ссылка на него (поле url из create_project, list_projects, read_project_graph — целиком, путём /studio/… или только хвостом из 12 символов) либо id проекта; получить список: list_projects" }, "limit": { "type": "integer", "description": "сколько последних прогонов вернуть (по умолчанию 5, максимум 30). Повторяющаяся строка у одной ноды — сильный признак, что нода себя пропускает" } }, "additionalProperties": false, "required": [ "project_id" ]}Reviewed example arguments
Section titled “Reviewed example arguments”{ "project_id": "<url or id returned by list_projects>", "limit": 5}Check the result: Compare recorded status, reuse, cost and node IDs with the current graph.
- An empty provenance trace is not equivalent to an empty run history.
Inspect the recorded inputs and origins of a generation.
| Setting | Value |
|---|---|
| Scope | read |
| Cost class | free |
| Availability | account key with the required scope |
| Project context required | yes |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "project_id": { "type": "string", "description": "проект студии: ссылка на него (поле url из create_project, list_projects, read_project_graph — целиком, путём /studio/… или только хвостом из 12 символов) либо id проекта; получить список: list_projects" }, "node_id": { "type": "string", "description": "id ноды из read_project_graph" }, "artifact_id": { "type": "string", "description": "id материала; так ищется причина результата, который уже был готов и заново не считался (у самой ноды записи не будет)" }, "limit": { "type": "integer", "description": "сколько последних событий ноды вернуть (по умолчанию 5, максимум 100). Больше — только если нужна история правок, на «почему» отвечает последнее" } }, "additionalProperties": false, "required": [ "project_id" ]}Reviewed example arguments
Section titled “Reviewed example arguments”{ "project_id": "<url or id returned by list_projects>", "node_id": "<node id returned by read_project_graph>", "limit": 1}Check the result: Check the specific generation and any explicit omission notes.
- Some operations, including montage, assembly, export and isolation, do not record this provenance.
- Use read_run_history to answer whether a node executed.
- Studio-owned step instructions can be redacted even when their node or trace row is visible; an ordinary API key does not expose the protected text.
describe_scene
Section titled “describe_scene”Follow a scene through its carriers, origin, rewrites and deliveries.
| Setting | Value |
|---|---|
| Scope | read |
| Cost class | free |
| Availability | account key with the required scope |
| Project context required | yes |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "project_id": { "type": "string", "description": "проект студии: ссылка на него (поле url из create_project, list_projects, read_project_graph — целиком, путём /studio/… или только хвостом из 12 символов) либо id проекта; получить список: list_projects" }, "scene_id": { "type": "string", "description": "адрес сцены из сводки канваса: у ноды он стоит рядом с тем, что в неё пришло (scene_in) и что из неё вышло (scene_out)" } }, "required": [ "project_id", "scene_id" ], "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "project_id": "<url or id returned by list_projects>", "scene_id": "<scene_out address returned by read_project_graph>"}Check the result: Compare original text with rewrites and actual delivery records.
- A new script run can create new scene addresses.
- A truncated or omitted text flag means the full text must be inspected on the canvas.
- Studio-owned step instructions can be redacted even when their node or trace row is visible; an ordinary API key does not expose the protected text.
list_my_elements
Section titled “list_my_elements”Discover reusable Elements available to this account.
| Setting | Value |
|---|---|
| Scope | read |
| Cost class | free |
| Availability | account key with the required scope |
| Project context required | no |
Arguments
Section titled “Arguments”{ "type": "object", "properties": {}, "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{}Check the result: Choose the intended returned ID before applying it to an Element node.
- A library Element is applied to a node that accepts library Elements, then connected downstream.
describe_element
Section titled “describe_element”Read the full description of one discovered Element and its views: each view’s kind (sheet, figure, face or object) and, over MCP, a signed url that opens the picture for 15 minutes.
| Setting | Value |
|---|---|
| Scope | read |
| Cost class | free |
| Availability | account key with the required scope |
| Project context required | no |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "element_id": { "type": "string", "description": "id элемента из списка элементов" } }, "required": [ "element_id" ], "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "element_id": "<element id returned by list_my_elements>"}Check the result: Confirm identity, role and reference material before using it.
- The ID must belong to an accessible Element; do not guess IDs.
- A view that cannot be signed comes without a url; request the Element again when a link expires.
list_my_prompts
Section titled “list_my_prompts”Find saved personal prompts for reuse.
| Setting | Value |
|---|---|
| Scope | read |
| Cost class | free |
| Availability | account key with the required scope |
| Project context required | no |
Arguments
Section titled “Arguments”{ "type": "object", "properties": {}, "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{}Check the result: Review the intended prompt and insert its complete text into the appropriate authoring field.
- A saved prompt is not a generated result or a model adapter.
list_my_designs
Section titled “list_my_designs”Find saved graphic design systems.
| Setting | Value |
|---|---|
| Scope | read |
| Cost class | free |
| Availability | account key with the required scope |
| Project context required | no |
Arguments
Section titled “Arguments”{ "type": "object", "properties": {}, "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{}Check the result: Choose a design for the Design system node and review the eventual Decoration output.
- These rules govern overlays, not the underlying character or video motion.
list_generators
Section titled “list_generators”Discover ready-made and owned generator configurations.
| Setting | Value |
|---|---|
| Scope | read |
| Cost class | free |
| Availability | account key with the required scope |
| Project context required | no |
Arguments
Section titled “Arguments”{ "type": "object", "properties": {}, "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{}Check the result: Check the generator’s kind and destination node before applying its ID.
- A generator prepares settings; applying it does not generate media.
- Recipe attachments and personal generators are account-specific.
billing_status
Section titled “billing_status”Check current balance and whether billing is active.
| Setting | Value |
|---|---|
| Scope | read |
| Cost class | free |
| Availability | account key with the required scope |
| Project context required | no |
Arguments
Section titled “Arguments”{ "type": "object", "properties": {}, "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{}Check the result: Read billing_active alongside balance_usd before interpreting a zero balance.
- A balance check is not a quote for a particular generation.
billing_history
Section titled “billing_history”Review spending over a selected period.
| Setting | Value |
|---|---|
| Scope | read |
| Cost class | free |
| Availability | account key with the required scope |
| Project context required | no |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "days": { "type": "integer", "description": "за сколько последних дней считать; по умолчанию 30, максимум 365" } }, "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "days": 7}Check the result: Compare totals by operation, model and project when investigating a charge.
- History explains recorded spending; it does not cancel submitted work.
list_projects
Section titled “list_projects”Discover the owning account’s projects and usable project links.
| Setting | Value |
|---|---|
| Scope | read |
| Cost class | free |
| Availability | account key with the required scope |
| Project context required | no |
Arguments
Section titled “Arguments”{ "type": "object", "properties": {}, "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{}Check the result: Choose the intended returned project; stop on an empty list or resolve an ambiguous choice.
- A project URL does not grant access to another account.
list_artifacts
Section titled “list_artifacts”Find generated media and uploaded documents.
| Setting | Value |
|---|---|
| Scope | read |
| Cost class | free |
| Availability | account key with the required scope |
| Project context required | no |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "project_id": { "type": "string", "description": "только материалы этого проекта" }, "kind": { "type": "string", "description": "вид материала: image, video, audio, document" }, "limit": { "type": "integer", "description": "сколько вернуть; по умолчанию 20, максимум 100" } }, "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "project_id": "<url or id returned by list_projects>", "kind": "video", "limit": 20}Check the result: Select the intended material using its kind, project and creation context.
- The list is bounded; absence from the first page is not proof that a material never existed.
- Use get_artifact when an external download link is needed.
get_artifact
Section titled “get_artifact”Get one material and a temporary download link.
| Setting | Value |
|---|---|
| Scope | read |
| Cost class | free |
| Availability | account key with the required scope |
| Project context required | no |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "artifact_id": { "type": "string", "description": "id из list_artifacts" } }, "required": [ "artifact_id" ], "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "artifact_id": "<artifact id returned by list_artifacts>"}Check the result: Use download_url before expires_at, or follow download_note if a link cannot be issued.
- A link expires after 15 minutes; request a fresh one instead of repeating generation.
- A video from your own V2 decoration also returns design_profile, the saved series style, and design_profile_fingerprint. Pass design_profile unchanged as params.series_profile to the next decorate_video, together with params.renderer: ‘hyperframes’ and params.decoration_version: 2, to keep the series in one style; without them the style is not applied and the response says so in series_profile_warning. Other materials and other accounts’ videos have no such field.
list_jobs
Section titled “list_jobs”Find asynchronous generation jobs and their status.
| Setting | Value |
|---|---|
| Scope | read |
| Cost class | free |
| Availability | account key with the required scope |
| Project context required | no |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "project_id": { "type": "string", "description": "только задачи этого проекта" } }, "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "project_id": "<url or id returned by list_projects>"}Check the result: Locate the job for the intended operation; retain its job_id. A done job names its material in artifact_id.
- Jobs and graph runs have different identifiers and status calls.
- The list carries no download links; get_job issues one per finished job.
get_job
Section titled “get_job”Check one asynchronous job after submission.
| Setting | Value |
|---|---|
| Scope | read |
| Cost class | free |
| Availability | account key with the required scope |
| Project context required | no |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "job_id": { "type": "string", "description": "id задачи, его возвращает запуск генерации и list_jobs" } }, "required": [ "job_id" ], "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "job_id": "<job identifier returned by generation>"}Check the result: Wait for a terminal status. A done job returns artifact_id and download_url with expires_at, or download_note if a link cannot be issued.
- Accepted or running is not a finished file.
- The download link expires after 15 minutes; call get_job or get_artifact again for a fresh one instead of repeating generation.
lore_standard
Section titled “lore_standard”Read the lore wizard standard of a workspace and which required steps are still empty.
| Setting | Value |
|---|---|
| Scope | read |
| Cost class | free |
| Availability | account key with the required scope |
| Project context required | no |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "workspace_id": { "type": "string", "description": "id пространства из list_workspaces; у Вини можно не передавать — тогда пространство проекта хода; по MCP передавай всегда" } }, "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "workspace_id": "<workspace id returned by list_workspaces>"}Check the result: Ask the person the question of next, one step at a time, and keep the answers word for word for write_lore.
- Returns titles of non-wizard documents in other_docs, not their text; read a text with get_workspace_lore.
- Read-only; it writes nothing.
create_project
Section titled “create_project”Create a new empty project in an intended workspace.
| Setting | Value |
|---|---|
| Scope | write |
| Cost class | free |
| Availability | account key with the required scope |
| Project context required | no |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "name": { "type": "string", "description": "как назвать проект — человек увидит это имя в списке" }, "workspace_id": { "type": "string", "description": "в какое пространство положить — id из list_workspaces; не передан — пространство по умолчанию" } }, "required": [ "name" ], "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "name": "Paper boat practice"}Check the result: Retain project_id, returned URL and initial revision; read back the empty graph.
- This creates an actual project; an empty discovery result should not silently trigger it.
apply_graph_ops
Section titled “apply_graph_ops”Apply explicit graph edits to a saved project.
| Setting | Value |
|---|---|
| Scope | write |
| Cost class | free |
| Availability | account key with the required scope |
| Project context required | yes |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "project_id": { "type": "string", "description": "проект студии: ссылка на него (поле url из create_project, list_projects, read_project_graph — целиком, путём /studio/… или только хвостом из 12 символов) либо id проекта; получить список: list_projects" }, "ops": { "type": "array", "items": { "type": "object", "properties": { "op": { "type": "string", "enum": [ "add_node", "set_field", "connect", "apply_library_element", "apply_skill", "rename", "edit_plan", "edit_timeline", "apply_generator", "pin_file" ] }, "ref": { "type": "string", "description": "add_node: временное имя для ссылок из connect" }, "type": { "type": "string", "description": "add_node: тип ноды — ровно как он назван в каталоге студии (describe_studio)" }, "pos": { "type": "array", "items": { "type": "number" }, "description": "add_node: [x, y]" }, "fields": { "type": "object", "description": "add_node: стартовые значения параметров" }, "node": { "type": "string", "description": "set_field/apply_library_element/rename/pin_file: временное имя ноды из этого же предложения или id существующей" }, "title": { "type": "string", "description": "rename: новый заголовок карточки (непустой, до 120 символов)" }, "key": { "type": "string" }, "value": { "type": [ "string", "number", "boolean", "array" ], "items": { "type": "string" }, "description": "set_field: новое значение параметра в родном типе (число — числом, флаг — булевым, список — списком целиком, а не по одному значению)" }, "from": { "type": "string" }, "from_port": { "type": "string" }, "to": { "type": "string" }, "to_port": { "type": "string" }, "element_id": { "type": "string" }, "generator_id": { "type": "string", "description": "apply_generator: id решения из list_generators либо адрес вложения рецепта (att:…), как его прислал человек" }, "skill_id": { "type": "string", "description": "apply_skill: id приёма из списка приёмов" }, "artifact_id": { "type": "string", "description": "pin_file: id своего материала из списка материалов (list_artifacts)" }, "url": { "type": "string", "description": "pin_file: адрес файла из своих материалов либо ссылка на ролик или пост TikTok, Instagram, YouTube — такой файл студия сначала приносит в материалы" }, "quality": { "type": "string", "description": "pin_file со ссылкой на YouTube: качество ролика, например «720p»" }, "remove": { "type": "boolean", "description": "apply_skill: true — снять приём с ноды, а не поставить" }, "kind": { "type": "string", "enum": [ "plate", "title", "outro" ], "description": "edit_plan: вид вставки — плашка, титр или финальная карта (аутро)" }, "action": { "type": "string", "enum": [ "add", "set", "remove" ], "description": "edit_plan: добавить новую, изменить существующую или убрать" }, "index": { "type": "integer", "description": "edit_plan (set/remove): номер вставки из decor_plan" }, "at": { "type": "number", "description": "edit_plan: секунда появления" }, "dur": { "type": "number", "description": "edit_plan: длительность показа в секундах (1..6)" }, "text": { "type": "string", "description": "edit_plan: текст вставки — плашка до 4 слов, титр до 5" }, "sub": { "type": "string", "description": "edit_plan (аутро): призыв-пилюля на финальной карте" }, "steps": { "type": "array", "description": "edit_timeline: шаги правки ленты Монтажа, до 40 в одной правке; клип в шаге называй ИМЕНЕМ входа Монтажа («видео 2») — так, как порт назван в связях сводки канваса, не номером по счёту: при отключённом входе номер на карточке и имя входа расходятся", "items": { "type": "object", "properties": { "step": { "type": "string", "enum": [ "move", "edges", "reset_edges", "mute", "song", "voice_at" ], "description": "move — поставить клип на позицию to (с 1); edges — края куска клипа in/out в секундах ИСХОДНОГО клипа (клип уже снят); reset_edges — вернуть клипу целиком; mute — заглушить (on:true) или вернуть звук (on:false) клипа; song — песня: at (с какой секунды ролика), from (с какой секунды песни), until (до какой секунды песни — обрезка конца, 0 снимает её), fade_in/fade_out (затухания до 5 с), volume (0..1); если песня нарезана на куски (сводка «песня N кусками»), шаг правит первый кусок, остальные остаются; voice_at — голос целиком с секунды at ролика" }, "clip": { "type": "string", "description": "имя входа Монтажа, например «видео 2» (move, edges, reset_edges, mute)" }, "to": { "type": "integer", "description": "move: позиция клипа в ролике, с 1" }, "in": { "type": "number", "description": "edges: начало куска, секунды клипа" }, "out": { "type": "number", "description": "edges: конец куска, секунды клипа (больше in)" }, "on": { "type": "boolean", "description": "mute: true — заглушить клип, false — вернуть звук" }, "at": { "type": "number", "description": "song: с какой секунды ролика начинается песня; voice_at: с какой секунды ролика начинается голос" }, "from": { "type": "number", "description": "song: с какой секунды песни начинать" }, "until": { "type": "number", "description": "song: до какой секунды песни играть — обрезка конца (больше from); 0 — снова до конца песни" }, "fade_in": { "type": "number", "description": "song: затухание на входе, секунд (0..5)" }, "fade_out": { "type": "number", "description": "song: затухание на конце, секунд (0..5)" }, "volume": { "type": "number", "description": "song: громкость песни 0..1 (не действует, если звук клипов выключен и голоса нет)" } }, "required": [ "step" ] } } }, "required": [ "op" ] } }, "based_on_revision": { "type": "integer", "description": "версия проекта, которую ты видел в read_project_graph. Если проект с тех пор изменили, правка будет отклонена, а не наложена вслепую. Не знаешь — не передавай." } }, "required": [ "project_id", "ops" ], "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "project_id": "<url or id returned by list_projects>", "based_on_revision": 0, "ops": [ { "op": "add_node", "ref": "idea", "type": "avg/text_input" }, { "op": "set_field", "node": "idea", "key": "text", "value": "A blue paper boat crosses a quiet pond." } ]}Check the result: Replace the example revision with the current one, then inspect returned refs and the saved graph.
- Operations change the real graph but do not generate content.
- Use current node IDs or refs from this batch; revisions and ports are validated.
- Studio-owned step instructions can refuse set_field and apply_generator even in a writable project.
expand_scenes
Section titled “expand_scenes”Build image/video branches from written Prompt Scriptwriter scenes.
| Setting | Value |
|---|---|
| Scope | write |
| Cost class | free |
| Availability | account key with the required scope |
| Project context required | yes |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "project_id": { "type": "string", "description": "проект студии: ссылка на него (поле url из create_project, list_projects, read_project_graph — целиком, путём /studio/… или только хвостом из 12 символов) либо id проекта; получить список: list_projects" }, "node_id": { "type": "string", "description": "id ноды «Промпт Сценарист» с написанными сценами (read_project_graph)" }, "only": { "type": "array", "items": { "type": "integer", "minimum": 1 }, "description": "номера сцен, которые развернуть; по умолчанию все неразвёрнутые. Разворачивай по возрастанию номеров: «Монтаж» клеит ролик в порядке своих входов, и сцена, развёрнутая позже соседки с большим номером, встанет в ролике после неё — ответ скажет об этом в warnings" }, "based_on_revision": { "type": "integer", "description": "версия проекта, которую ты видел в read_project_graph; если проект с тех пор изменили, разворот будет отклонён, а не наложен вслепую. Не знаешь — не передавай." } }, "required": [ "project_id", "node_id" ], "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "project_id": "<url or id returned by list_projects>", "node_id": "<node id returned by read_project_graph>"}Check the result: Inspect created nodes, skipped scenes, warnings and Montage’s input order.
- Written scenes must already exist; expansion is free but subsequent generation can charge.
- Expand selected scenes in ascending order and wait for an active run first.
list_workspaces
Section titled “list_workspaces”Discover the account’s project spaces.
| Setting | Value |
|---|---|
| Scope | read |
| Cost class | free |
| Availability | account key with the required scope |
| Project context required | no |
Arguments
Section titled “Arguments”{ "type": "object", "properties": {}, "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{}Check the result: Select a returned workspace, including the declared default when appropriate.
- Workspace IDs and project IDs are different.
create_workspace
Section titled “create_workspace”Create an account-owned space for related projects.
| Setting | Value |
|---|---|
| Scope | write |
| Cost class | free |
| Availability | account key with the required scope |
| Project context required | no |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "name": { "type": "string", "description": "как назвать пространство — человек увидит это имя в студии" } }, "required": [ "name" ], "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "name": "Paper boat practice"}Check the result: Confirm the returned workspace and choose it explicitly for later project creation.
- Creating a workspace does not move existing projects into it.
move_project
Section titled “move_project”Move a project into an existing workspace.
| Setting | Value |
|---|---|
| Scope | write |
| Cost class | free |
| Availability | account key with the required scope |
| Project context required | yes |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "project_id": { "type": "string", "description": "проект студии: ссылка на него (поле url из create_project, list_projects, read_project_graph — целиком, путём /studio/… или только хвостом из 12 символов) либо id проекта; получить список: list_projects" }, "workspace_id": { "type": "string", "description": "куда перенести — id из list_workspaces" } }, "required": [ "project_id", "workspace_id" ], "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "project_id": "<url or id returned by list_projects>", "workspace_id": "<workspace id returned by list_workspaces>"}Check the result: Read the project again and check the target workspace and inherited lore.
- Moving can change the workspace lore read by the project’s authoring nodes.
get_workspace_lore
Section titled “get_workspace_lore”Read workspace lore and its active documents.
| Setting | Value |
|---|---|
| Scope | read |
| Cost class | free |
| Availability | account key with the required scope |
| Project context required | no |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "workspace_id": { "type": "string", "description": "id из list_workspaces" }, "doc_id": { "type": "string", "description": "id документа из списка — тогда вернётся и его текст" } }, "required": [ "workspace_id" ], "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "workspace_id": "<workspace id returned by list_workspaces>"}Check the result: Inspect the complete selected document before changing or disabling it.
- Workspace lore is shared by projects in that workspace; project-local lore is separate.
put_workspace_lore
Section titled “put_workspace_lore”Create or update one workspace lore document.
| Setting | Value |
|---|---|
| Scope | write |
| Cost class | free |
| Availability | account key with the required scope |
| Project context required | no |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "workspace_id": { "type": "string", "description": "id из list_workspaces" }, "title": { "type": "string", "description": "название документа, 1–200 знаков — человек видит его в окне лора" }, "text": { "type": "string", "description": "полный текст документа (UTF-8, до 2 МБ); не передан при doc_id — текст прежний" }, "doc_id": { "type": "string", "description": "id документа из get_workspace_lore — заменить его; не передан — завести новый" }, "on": { "type": "boolean", "description": "включён ли документ в запросы; по умолчанию у нового — да, у существующего — как было" } }, "required": [ "workspace_id", "title" ], "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "workspace_id": "<workspace id returned by list_workspaces>", "title": "Practice setting", "text": "The pond is quiet. The recurring prop is a blue paper boat.", "on": true}Check the result: Read the returned document with get_workspace_lore and confirm its complete text and active state.
- Supply the existing doc_id to update it; omission creates a new document.
- Disabling a document is not deleting it.
write_lore
Section titled “write_lore”Write the person’s answers by the lore wizard standard as the World, Format and Episode log documents of a workspace.
| Setting | Value |
|---|---|
| Scope | write |
| Cost class | free |
| Availability | account key with the required scope |
| Project context required | no |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "workspace_id": { "type": "string", "description": "id из list_workspaces" }, "answers": { "type": "object", "description": "ответы человека по шагам стандарта (lore_standard), дословно", "properties": { "world": { "type": "object", "description": "документ «Мир», ровно один", "properties": { "premise": { "type": "string", "description": "Суть мира (обязательно) — О каком мире все твои ролики — в двух-трёх фразах?" }, "audience": { "type": "string", "description": "Зритель (обязательно) — Кто смотрит твои ролики и где?" }, "cast": { "type": "string", "description": "Герои и кто кому кто (обязательно) — Кто живёт в этом мире и кем они приходятся друг другу?" }, "places": { "type": "string", "description": "Места — Где происходят события?" }, "laws": { "type": "string", "description": "Законы мира и запреты (обязательно) — Что в этом мире возможно, а что никогда не случается?" }, "tone": { "type": "string", "description": "Тон и язык (обязательно) — Каким голосом говорит этот мир и на каком языке?" }, "unplaced": { "type": "string", "description": "Не разложено: строки, которые не легли ни в один шаг, — едут в «Мир» отдельным разделом" } }, "additionalProperties": false }, "formats": { "type": "array", "description": "документы «Формат: ‹вид›», по одному на вид ролика; может быть пустым", "items": { "type": "object", "properties": { "kind": { "type": "string", "enum": [ "story", "music_video", "product_ad", "explainer", "other" ], "description": "Вид ролика (обязательно): story — история (серия, скетч, короткий фильм); music_video — клип под песню; product_ad — реклама продукта; explainer — объяснялка или обучающий ролик; other — другое" }, "kind_other": { "type": "string", "description": "Название вида (обязательно при kind: other) — Как ты называешь этот вид роликов?" }, "length": { "type": "string", "description": "Длина и число сцен — Сколько длится один ролик и из скольких сцен он состоит?" }, "structure": { "type": "string", "description": "Как устроен выпуск — Как обычно развивается один ролик от начала до конца?" }, "devices": { "type": "string", "description": "Обязательные приёмы и чего не делать — Что обязательно есть в каждом ролике, а чего в нём быть не должно?" }, "production": { "type": "string", "description": "Производство: музыка, надписи, кто говорит — Какая музыка, нужны ли надписи и кто говорит в кадре?" }, "ideas": { "type": "string", "description": "Идеи будущих выпусков — О чём могли бы быть следующие ролики?" } }, "additionalProperties": false } }, "journal": { "type": "object", "description": "документ «Журнал выпусков», необязательный", "properties": { "entries": { "type": "string", "description": "Выпуски — Какие ролики уже вышли?" } }, "additionalProperties": false } }, "additionalProperties": false }, "source_doc_id": { "type": "string", "description": "id документа общего лора, из которого разложены ответы, — проверить полноту и выключить его" } }, "required": [ "workspace_id", "answers" ], "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "workspace_id": "<workspace id returned by list_workspaces>", "answers": { "world": { "premise": "A small seaside town where cats run the post office.", "audience": "Parents aged 30-45 watching on the phone in the evening.", "cast": "Sonya is the postwoman; Boris is her brother.", "laws": "Cats only talk to each other.", "tone": "Warm irony, lines in English." }, "formats": [ { "kind": "story", "length": "About a minute, six scenes." } ] }}Check the result: Call lore_standard again and confirm gaps is empty and filled matches the answers.
- An empty required step refuses with that step’s question and writes nothing.
- With source_doc_id every line of the source must appear in the answers; lost lines refuse with the list and nothing is written.
- The source document is switched off, not deleted; other documents stay as they were.
- The answers are the full set: start from filled of lore_standard and change what is needed; a wizard document missing from the answers (a format, the episode log) is switched off, not deleted.
upload_artifact
Section titled “upload_artifact”Store a small owned file in the material library.
| Setting | Value |
|---|---|
| Scope | write |
| Cost class | free |
| Availability | account key with the required scope |
| Project context required | no |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "data_url": { "type": "string", "description": "data:<MIME>;base64,<содержимое файла в base64>" }, "filename": { "type": "string", "description": "исходное имя файла, например «ТЗ.pdf»; особенно важно для документов и неизвестных форматов" }, "kind": { "type": "string", "enum": [ "image", "video", "audio", "document" ], "description": "необязательно: вид файла; должен совпадать с MIME-типом" }, "project_id": { "type": "string", "description": "необязательно: id своего проекта; без него файл попадёт в общую библиотеку аккаунта" } }, "required": [ "data_url" ], "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "data_url": "data:text/plain;base64,UHJhY3RpY2UgYnJpZWYu", "filename": "practice-brief.txt", "kind": "document"}Check the result: Confirm returned material metadata and retrieve it when needed.
- Uploading a document stores it; it does not extract text or make it an image reference.
- Use chunked upload for files above the direct-upload limit.
start_upload
Section titled “start_upload”Begin a chunked upload for a larger file.
| Setting | Value |
|---|---|
| Scope | write |
| Cost class | free |
| Availability | account key with the required scope |
| Project context required | no |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "size": { "type": "integer", "minimum": 0, "description": "размер исходного файла в байтах до кодирования base64" }, "mime_type": { "type": "string", "description": "MIME-тип файла, например application/pdf или text/plain" }, "filename": { "type": "string", "description": "исходное имя файла, например «ТЗ.pdf»; особенно важно для документов и неизвестных форматов" }, "kind": { "type": "string", "enum": [ "image", "video", "audio", "document" ], "description": "необязательно: вид файла; должен совпадать с MIME-типом" }, "project_id": { "type": "string", "description": "необязательно: id своего проекта; без него файл попадёт в общую библиотеку аккаунта" } }, "required": [ "size", "mime_type" ], "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "size": 15, "mime_type": "text/plain", "filename": "practice-brief.txt", "kind": "document"}Check the result: Retain the returned upload_id and chunk constraints.
- The declared size must match the complete file; no material exists until finishing succeeds.
- A chunked upload accepts up to 2 GiB of original bytes and stores the file as sent, without re-encoding; upload_artifact takes a whole file only up to 24 MiB.
upload_chunk
Section titled “upload_chunk”Send one numbered chunk of an active upload.
| Setting | Value |
|---|---|
| Scope | write |
| Cost class | free |
| Availability | account key with the required scope |
| Project context required | no |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "upload_id": { "type": "string", "description": "upload_id, полученный из start_upload" }, "index": { "type": "integer", "minimum": 0, "description": "порядковый номер куска, начиная с 0" }, "data": { "type": "string", "description": "исходные байты куска в base64, без data: префикса" } }, "required": [ "upload_id", "index", "data" ], "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "upload_id": "<upload_id returned by start_upload>", "index": 0, "data": "UHJhY3RpY2UgYnJpZWYu"}Check the result: Confirm acceptance before sending the next index or finishing.
- data is base64 for the chunk; keep the original byte order.
finish_upload
Section titled “finish_upload”Validate and finish a previously uploaded file.
| Setting | Value |
|---|---|
| Scope | write |
| Cost class | free |
| Availability | account key with the required scope |
| Project context required | no |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "upload_id": { "type": "string", "description": "upload_id, полученный из start_upload" } }, "required": [ "upload_id" ], "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "upload_id": "<upload_id returned by start_upload>"}Check the result: Confirm the returned artifact_id and metadata, then pin it if it belongs in the graph.
- Missing chunks or a mismatched complete size must be corrected; finishing does not invent missing bytes.
cancel_upload
Section titled “cancel_upload”Discard an unfinished chunked upload.
| Setting | Value |
|---|---|
| Scope | write |
| Cost class | free |
| Availability | account key with the required scope |
| Project context required | no |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "upload_id": { "type": "string", "description": "upload_id, полученный из start_upload" } }, "required": [ "upload_id" ], "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "upload_id": "<upload_id returned by start_upload>"}Check the result: Confirm cancellation of this temporary upload session.
- This does not delete an already finished library material.
run_node
Section titled “run_node”Run a selected node and the upstream work it needs.
| Setting | Value |
|---|---|
| Scope | spend |
| Cost class | paid |
| Availability | account key with the required scope |
| Project context required | yes |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "project_id": { "type": "string", "description": "проект студии: ссылка на него (поле url из create_project, list_projects, read_project_graph — целиком, путём /studio/… или только хвостом из 12 символов) либо id проекта; получить список: list_projects" }, "node_id": { "type": "string", "description": "id ноды из read_project_graph (или refs из apply_graph_ops). Прогонится она и всё, что выше неё и ещё не свежее." }, "mode": { "type": "string", "enum": [ "up_to", "regen" ], "description": "up_to (по умолчанию) — как ▶ «до этой ноды»: свежее берётся из кэша за $0. regen — как ↻ «Перегенерировать»: ЭТА нода заново и платно, всё выше — из кэша." }, "max_cost_usd": { "type": "number", "minimum": 0, "description": "потолок траты на этот прогон, $. Обязателен, если смета больше нуля; смета выше потолка — отказ до единого запроса. Узнать смету: price_quote." }, "accept_warnings": { "type": "boolean", "description": "согласие на предупреждения плана (price_quote отдаёт их в warnings): например, перезапуск сотрёт правки сцен, сделанные человеком в окне Режиссёра. Без true при непустых warnings прогон не стартует (need_accept_warnings), ничего не списывается." }, "wait_s": { "type": "integer", "minimum": 0, "maximum": 40, "description": "сколько секунд подождать окончания внутри вызова (0–40, по умолчанию 20). Не дождался — прогон идёт, смотри get_run." } }, "required": [ "project_id", "node_id" ], "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "project_id": "<url or id returned by list_projects>", "node_id": "<node id returned by read_project_graph>", "mode": "up_to", "max_cost_usd": 0, "wait_s": 20}Check the result: Replace the zero ceiling only with an explicitly accepted current quote, then follow get_run and read back the result.
- Zero is a useful refusal boundary for a paid plan, not a promise that this node costs nothing.
- Graph support is per node; one owner can have one active run.
get_run
Section titled “get_run”Wait for and inspect a graph run’s result.
| Setting | Value |
|---|---|
| Scope | read |
| Cost class | free |
| Availability | account key with the required scope |
| Project context required | yes |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "project_id": { "type": "string", "description": "проект студии: ссылка на него (поле url из create_project, list_projects, read_project_graph — целиком, путём /studio/… или только хвостом из 12 символов) либо id проекта; получить список: list_projects" }, "run_id": { "type": "string", "description": "run_id из run_node" }, "wait_s": { "type": "integer", "minimum": 0, "maximum": 40, "description": "подождать терминального статуса не дольше, чем столько секунд (0–40, по умолчанию 0)" } }, "required": [ "project_id", "run_id" ], "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "project_id": "<url or id returned by list_projects>", "run_id": "<run_id returned by run_node>", "wait_s": 20}Check the result: Read the terminal status, saved revision, node results, cost and reported warnings.
- done, error, stopped, interrupted and not_saved are distinct outcomes.
- A failed or unknown critic report is not a successful content review.
stop_run
Section titled “stop_run”Stop a graph run from starting further requests.
| Setting | Value |
|---|---|
| Scope | spend |
| Cost class | free |
| Availability | account key with the required scope |
| Project context required | yes |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "project_id": { "type": "string", "description": "проект студии: ссылка на него (поле url из create_project, list_projects, read_project_graph — целиком, путём /studio/… или только хвостом из 12 символов) либо id проекта; получить список: list_projects" }, "run_id": { "type": "string", "description": "run_id из run_node" } }, "required": [ "project_id", "run_id" ], "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "project_id": "<url or id returned by list_projects>", "run_id": "<run_id returned by run_node>"}Check the result: Follow get_run to the final state and check outstanding jobs and charges.
- The call itself is free but requires spend permission.
- Already submitted work can finish and be charged.
price_quote
Section titled “price_quote”Estimate a specific generation or graph run without performing it.
| Setting | Value |
|---|---|
| Scope | read |
| Cost class | free |
| Availability | account key with the required scope |
| Project context required | yes |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "project_id": { "type": "string", "description": "проект студии: ссылка на него (поле url из create_project, list_projects, read_project_graph — целиком, путём /studio/… или только хвостом из 12 символов) либо id проекта; получить список: list_projects" }, "tool": { "type": "string", "description": "имя инструмента, который собираешься запустить: generate_video, upscale_image, …", "enum": [ "generate_text", "generate_image", "generate_video", "generate_music", "generate_voice", "clone_voice", "isolate_audio", "dub_video", "lipsync_video", "upscale_image", "write_script", "write_scene_prompts", "rewrite_scene", "direct_scene", "make_subtitles", "normalize_subtitles", "decorate_video", "analyze_video", "assemble_video", "edit_video", "extract_audio", "import_clip", "inspect_import", "run_node" ] }, "params": { "type": "object", "description": "ровно те же params, с которыми будешь запускать: от них и зависит цена. Для run_node — {node_id, mode}: смета прогона ноды со всем, что выше неё и не свежее.", "additionalProperties": true } }, "required": [ "project_id", "tool", "params" ], "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "project_id": "<url or id returned by list_projects>", "tool": "run_node", "params": { "node_id": "<node id returned by read_project_graph>", "mode": "up_to" }}Check the result: Inspect estimated cost, planned nodes, warnings and whether the estimate is a ceiling.
- The quote is tied to the current inputs; quote again after changes.
- A quote does not start a run.
generate_text
Section titled “generate_text”Generate text for a supplied instruction.
| Setting | Value |
|---|---|
| Scope | spend |
| Cost class | paid |
| Availability | account key with the required scope |
| Project context required | yes |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "project_id": { "type": "string", "description": "проект студии: ссылка на него (поле url из create_project, list_projects, read_project_graph — целиком, путём /studio/… или только хвостом из 12 символов) либо id проекта; получить список: list_projects" }, "params": { "type": "object", "description": "что и чем делать: модель, режим, длительность, формат, тексты и ссылки на материалы. Какие поля есть у выбранной модели — скажет describe_studio.", "additionalProperties": true }, "node_id": { "type": "string", "description": "на какую ноду холста положить результат — чтобы человек увидел его в проекте, а не только в списке материалов. Адреса нод даёт read_project_graph, а также apply_graph_ops в ответе. Не указан — результат останется в материалах." } }, "required": [ "project_id", "params" ], "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "project_id": "<url or id returned by list_projects>", "params": { "prompt": "Write three short titles for a film about a blue paper boat." }}Check the result: Read the complete returned text and any artifact identifier.
- Paid when not cached; this does not automatically build a graph.
generate_image
Section titled “generate_image”Generate an image from explicit text and optional supported references.
| Setting | Value |
|---|---|
| Scope | spend |
| Cost class | paid |
| Availability | account key with the required scope |
| Project context required | yes |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "project_id": { "type": "string", "description": "проект студии: ссылка на него (поле url из create_project, list_projects, read_project_graph — целиком, путём /studio/… или только хвостом из 12 символов) либо id проекта; получить список: list_projects" }, "params": { "type": "object", "description": "что и чем делать: модель, режим, длительность, формат, тексты и ссылки на материалы. Какие поля есть у выбранной модели — скажет describe_studio.", "additionalProperties": true }, "node_id": { "type": "string", "description": "на какую ноду холста положить результат — чтобы человек увидел его в проекте, а не только в списке материалов. Адреса нод даёт read_project_graph, а также apply_graph_ops в ответе. Не указан — результат останется в материалах." } }, "required": [ "project_id", "params" ], "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "project_id": "<url or id returned by list_projects>", "params": { "prompt": "One blue paper boat on a quiet pond at dawn.", "aspect": "16:9" }}Check the result: Inspect the returned image before using it as a video frame.
- Use a model from discovery; refs must be applicable to it.
- A new image is not guaranteed to preserve every detail.
generate_music
Section titled “generate_music”Submit a music track from a brief.
| Setting | Value |
|---|---|
| Scope | spend |
| Cost class | paid |
| Availability | account key with the required scope |
| Project context required | yes |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "project_id": { "type": "string", "description": "проект студии: ссылка на него (поле url из create_project, list_projects, read_project_graph — целиком, путём /studio/… или только хвостом из 12 символов) либо id проекта; получить список: list_projects" }, "params": { "type": "object", "description": "что и чем делать: модель, режим, длительность, формат, тексты и ссылки на материалы. Какие поля есть у выбранной модели — скажет describe_studio.", "additionalProperties": true }, "node_id": { "type": "string", "description": "на какую ноду холста положить результат — чтобы человек увидел его в проекте, а не только в списке материалов. Адреса нод даёт read_project_graph, а также apply_graph_ops в ответе. Не указан — результат останется в материалах." } }, "required": [ "project_id", "params" ], "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "project_id": "<url or id returned by list_projects>", "params": { "prompt": "Gentle instrumental background with soft piano and no vocals.", "seconds": 30 }}Check the result: Follow the job, then listen to the whole track.
- Choose a currently offered music model and valid duration; lyrics and vocal support depend on that model.
generate_voice
Section titled “generate_voice”Synthesize speech using an existing voice.
| Setting | Value |
|---|---|
| Scope | spend |
| Cost class | paid |
| Availability | account key with the required scope |
| Project context required | yes |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "project_id": { "type": "string", "description": "проект студии: ссылка на него (поле url из create_project, list_projects, read_project_graph — целиком, путём /studio/… или только хвостом из 12 символов) либо id проекта; получить список: list_projects" }, "params": { "type": "object", "description": "что и чем делать: модель, режим, длительность, формат, тексты и ссылки на материалы. Какие поля есть у выбранной модели — скажет describe_studio.", "additionalProperties": true }, "node_id": { "type": "string", "description": "на какую ноду холста положить результат — чтобы человек увидел его в проекте, а не только в списке материалов. Адреса нод даёт read_project_graph, а также apply_graph_ops в ответе. Не указан — результат останется в материалах." } }, "required": [ "project_id", "params" ], "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "project_id": "<url or id returned by list_projects>", "params": { "voice_id": "<selected voice id>", "text": "The little boat finds its way home." }}Check the result: Listen for full wording and pronunciation; retain the audio material.
- Selecting a voice in the browser or cloning one provides the voice_id.
- This returns audio, not a lip-synced video.
clone_voice
Section titled “clone_voice”Create a reusable voice from an owned recording.
| Setting | Value |
|---|---|
| Scope | spend |
| Cost class | paid |
| Availability | account key with the required scope |
| Project context required | yes |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "project_id": { "type": "string", "description": "проект студии: ссылка на него (поле url из create_project, list_projects, read_project_graph — целиком, путём /studio/… или только хвостом из 12 символов) либо id проекта; получить список: list_projects" }, "params": { "type": "object", "description": "что и чем делать: модель, режим, длительность, формат, тексты и ссылки на материалы. Какие поля есть у выбранной модели — скажет describe_studio.", "additionalProperties": true }, "node_id": { "type": "string", "description": "на какую ноду холста положить результат — чтобы человек увидел его в проекте, а не только в списке материалов. Адреса нод даёт read_project_graph, а также apply_graph_ops в ответе. Не указан — результат останется в материалах." } }, "required": [ "project_id", "params" ], "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "project_id": "<url or id returned by list_projects>", "params": { "sample_url": "<owned material url returned by upload or generation>", "name": "Practice narrator" }}Check the result: Listen to and confirm the resulting voice before using it for a full script.
- Use a recording you are entitled to use; source must be an owned uploaded file.
- The result is a voice identifier, not spoken script audio.
isolate_audio
Section titled “isolate_audio”Extract cleaner speech and, when available, a residual background track.
| Setting | Value |
|---|---|
| Scope | spend |
| Cost class | paid |
| Availability | account key with the required scope |
| Project context required | yes |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "project_id": { "type": "string", "description": "проект студии: ссылка на него (поле url из create_project, list_projects, read_project_graph — целиком, путём /studio/… или только хвостом из 12 символов) либо id проекта; получить список: list_projects" }, "params": { "type": "object", "description": "что и чем делать: модель, режим, длительность, формат, тексты и ссылки на материалы. Какие поля есть у выбранной модели — скажет describe_studio.", "additionalProperties": true }, "node_id": { "type": "string", "description": "на какую ноду холста положить результат — чтобы человек увидел его в проекте, а не только в списке материалов. Адреса нод даёт read_project_graph, а также apply_graph_ops в ответе. Не указан — результат останется в материалах." } }, "required": [ "project_id", "params" ], "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "project_id": "<url or id returned by list_projects>", "params": { "source_url": "<owned material url returned by upload or generation>" }}Check the result: Listen separately to voice_url and any bg_url.
- The background is best-effort; do not promise clean music/SFX separation.
- Source must be an owned studio audio/video file.
dub_video
Section titled “dub_video”Translate and revoice an existing recording.
| Setting | Value |
|---|---|
| Scope | spend |
| Cost class | paid |
| Availability | account key with the required scope |
| Project context required | yes |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "project_id": { "type": "string", "description": "проект студии: ссылка на него (поле url из create_project, list_projects, read_project_graph — целиком, путём /studio/… или только хвостом из 12 символов) либо id проекта; получить список: list_projects" }, "params": { "type": "object", "description": "что и чем делать: модель, режим, длительность, формат, тексты и ссылки на материалы. Какие поля есть у выбранной модели — скажет describe_studio.", "additionalProperties": true }, "node_id": { "type": "string", "description": "на какую ноду холста положить результат — чтобы человек увидел его в проекте, а не только в списке материалов. Адреса нод даёт read_project_graph, а также apply_graph_ops в ответе. Не указан — результат останется в материалах." } }, "required": [ "project_id", "params" ], "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "project_id": "<url or id returned by list_projects>", "params": { "source_url": "<owned material url returned by upload or generation>", "target_lang": "en" }}Check the result: Follow the dubbing job and review the translated audio.
- The output is audio even for video input; matching visible lips is separate.
upscale_image
Section titled “upscale_image”Upscale an owned image with controlled creative reconstruction.
| Setting | Value |
|---|---|
| Scope | spend |
| Cost class | paid |
| Availability | account key with the required scope |
| Project context required | yes |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "project_id": { "type": "string", "description": "проект студии: ссылка на него (поле url из create_project, list_projects, read_project_graph — целиком, путём /studio/… или только хвостом из 12 символов) либо id проекта; получить список: list_projects" }, "params": { "type": "object", "description": "что и чем делать: модель, режим, длительность, формат, тексты и ссылки на материалы. Какие поля есть у выбранной модели — скажет describe_studio.", "additionalProperties": true }, "node_id": { "type": "string", "description": "на какую ноду холста положить результат — чтобы человек увидел его в проекте, а не только в списке материалов. Адреса нод даёт read_project_graph, а также apply_graph_ops в ответе. Не указан — результат останется в материалах." } }, "required": [ "project_id", "params" ], "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "project_id": "<url or id returned by list_projects>", "params": { "image_url": "<owned material url returned by upload or generation>", "factor": 2, "creativity": 0.2 }}Check the result: Compare detail, faces and lettering at full size.
- Quote using the actual source dimensions; detail changes are possible.
write_script
Section titled “write_script”Use the retained structured-script operation.
| Setting | Value |
|---|---|
| Scope | spend |
| Cost class | paid |
| Availability | account key with the required scope |
| Project context required | yes |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "project_id": { "type": "string", "description": "проект студии: ссылка на него (поле url из create_project, list_projects, read_project_graph — целиком, путём /studio/… или только хвостом из 12 символов) либо id проекта; получить список: list_projects" }, "params": { "type": "object", "description": "что и чем делать: модель, режим, длительность, формат, тексты и ссылки на материалы. Какие поля есть у выбранной модели — скажет describe_studio.", "additionalProperties": true }, "node_id": { "type": "string", "description": "на какую ноду холста положить результат — чтобы человек увидел его в проекте, а не только в списке материалов. Адреса нод даёт read_project_graph, а также apply_graph_ops в ответе. Не указан — результат останется в материалах." } }, "required": [ "project_id", "params" ], "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "project_id": "<url or id returned by list_projects>", "params": { "system_key": "scriptwriter", "scene_count": 1, "sys_ctx": { "theme": "A blue paper boat crosses a quiet pond.", "n": 1, "maxSec": 5, "lang": "en", "souls": [] } }}Check the result: Inspect all returned scene fields before passing them to another operation.
- This is a retained operation associated with the legacy Scriptwriter node.
- For new graph workflows prefer Prompt Scriptwriter and run_node; do not create a legacy node.
write_scene_prompts
Section titled “write_scene_prompts”Write scenes from a brief using the current prompt-writing operation.
| Setting | Value |
|---|---|
| Scope | spend |
| Cost class | paid |
| Availability | account key with the required scope |
| Project context required | yes |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "project_id": { "type": "string", "description": "проект студии: ссылка на него (поле url из create_project, list_projects, read_project_graph — целиком, путём /studio/… или только хвостом из 12 символов) либо id проекта; получить список: list_projects" }, "params": { "type": "object", "description": "что и чем делать: модель, режим, длительность, формат, тексты и ссылки на материалы. Какие поля есть у выбранной модели — скажет describe_studio.", "additionalProperties": true }, "node_id": { "type": "string", "description": "на какую ноду холста положить результат — чтобы человек увидел его в проекте, а не только в списке материалов. Адреса нод даёт read_project_graph, а также apply_graph_ops в ответе. Не указан — результат останется в материалах." } }, "required": [ "project_id", "params" ], "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "project_id": "<url or id returned by list_projects>", "params": { "system_key": "prompt_scriptwriter", "prompt": "Write one five-second scene without dialogue: a blue paper boat crosses a quiet pond." }}Check the result: Read all returned prompts, scene markings, warnings and critic outcome.
- Writing does not generate images or clips.
- Use run_node when results must follow the graph’s Elements, lore and saved scene outputs.
rewrite_scene
Section titled “rewrite_scene”Rewrite one supplied scene without regenerating its neighbours.
| Setting | Value |
|---|---|
| Scope | spend |
| Cost class | paid |
| Availability | account key with the required scope |
| Project context required | yes |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "project_id": { "type": "string", "description": "проект студии: ссылка на него (поле url из create_project, list_projects, read_project_graph — целиком, путём /studio/… или только хвостом из 12 символов) либо id проекта; получить список: list_projects" }, "params": { "type": "object", "description": "что и чем делать: модель, режим, длительность, формат, тексты и ссылки на материалы. Какие поля есть у выбранной модели — скажет describe_studio.", "additionalProperties": true }, "node_id": { "type": "string", "description": "на какую ноду холста положить результат — чтобы человек увидел его в проекте, а не только в списке материалов. Адреса нод даёт read_project_graph, а также apply_graph_ops в ответе. Не указан — результат останется в материалах." } }, "required": [ "project_id", "params" ], "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "project_id": "<url or id returned by list_projects>", "params": { "scene": "A blue paper boat crosses a quiet pond.", "brief": "Make the action fit five seconds; keep the camera fixed.", "seq": 1, "total": 1, "duration": 5 }}Check the result: Compare the returned scene against the original and requested change.
- A low-level reply alone does not replace a Prompt Scriptwriter scene output in the graph.
direct_scene
Section titled “direct_scene”Apply a staging direction to supplied scene text.
| Setting | Value |
|---|---|
| Scope | spend |
| Cost class | paid |
| Availability | account key with the required scope |
| Project context required | yes |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "project_id": { "type": "string", "description": "проект студии: ссылка на него (поле url из create_project, list_projects, read_project_graph — целиком, путём /studio/… или только хвостом из 12 символов) либо id проекта; получить список: list_projects" }, "params": { "type": "object", "description": "что и чем делать: модель, режим, длительность, формат, тексты и ссылки на материалы. Какие поля есть у выбранной модели — скажет describe_studio.", "additionalProperties": true }, "node_id": { "type": "string", "description": "на какую ноду холста положить результат — чтобы человек увидел его в проекте, а не только в списке материалов. Адреса нод даёт read_project_graph, а также apply_graph_ops в ответе. Не указан — результат останется в материалах." } }, "required": [ "project_id", "params" ], "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "project_id": "<url or id returned by list_projects>", "params": { "scene_text": "A blue paper boat crosses a quiet pond.", "prompt": "Keep the camera locked throughout.", "tags": [ "static_lock" ] }}Check the result: Review the revised text and any technique warnings.
- The tool remains available, but the standalone Director node is legacy.
- Technique instructions do not guarantee visual compliance.
make_subtitles
Section titled “make_subtitles”Recognize speech in a supplied video.
| Setting | Value |
|---|---|
| Scope | spend |
| Cost class | paid |
| Availability | account key with the required scope |
| Project context required | yes |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "project_id": { "type": "string", "description": "проект студии: ссылка на него (поле url из create_project, list_projects, read_project_graph — целиком, путём /studio/… или только хвостом из 12 символов) либо id проекта; получить список: list_projects" }, "params": { "type": "object", "description": "что и чем делать: модель, режим, длительность, формат, тексты и ссылки на материалы. Какие поля есть у выбранной модели — скажет describe_studio.", "additionalProperties": true }, "node_id": { "type": "string", "description": "на какую ноду холста положить результат — чтобы человек увидел его в проекте, а не только в списке материалов. Адреса нод даёт read_project_graph, а также apply_graph_ops в ответе. Не указан — результат останется в материалах." } }, "required": [ "project_id", "params" ], "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "project_id": "<url or id returned by list_projects>", "params": { "url": "<owned material url returned by upload or generation>", "language": "en" }}Check the result: Review transcript, segment timings, SRT and VTT.
- No spoken soundtrack means no words to transcribe; this does not burn captions into the video.
normalize_subtitles
Section titled “normalize_subtitles”Improve supplied subtitle text while preserving the segment contract.
| Setting | Value |
|---|---|
| Scope | spend |
| Cost class | paid |
| Availability | account key with the required scope |
| Project context required | yes |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "project_id": { "type": "string", "description": "проект студии: ссылка на него (поле url из create_project, list_projects, read_project_graph — целиком, путём /studio/… или только хвостом из 12 символов) либо id проекта; получить список: list_projects" }, "params": { "type": "object", "description": "что и чем делать: модель, режим, длительность, формат, тексты и ссылки на материалы. Какие поля есть у выбранной модели — скажет describe_studio.", "additionalProperties": true }, "node_id": { "type": "string", "description": "на какую ноду холста положить результат — чтобы человек увидел его в проекте, а не только в списке материалов. Адреса нод даёт read_project_graph, а также apply_graph_ops в ответе. Не указан — результат останется в материалах." } }, "required": [ "project_id", "params" ], "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "project_id": "<url or id returned by list_projects>", "params": { "segments": [ { "start": 0, "end": 2, "text": "the little boat finds its way home" } ], "context": "A narrator describes a paper boat." }}Check the result: Check every returned segment’s wording and timing before use.
- This is an additional text operation; do not silently replace an approved transcript.
decorate_video
Section titled “decorate_video”Generate and render a graphic overlay treatment for a supplied video.
| Setting | Value |
|---|---|
| Scope | spend |
| Cost class | paid |
| Availability | account key with the required scope |
| Project context required | yes |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "project_id": { "type": "string", "description": "проект студии: ссылка на него (поле url из create_project, list_projects, read_project_graph — целиком, путём /studio/… или только хвостом из 12 символов) либо id проекта; получить список: list_projects" }, "params": { "type": "object", "description": "что и чем делать: модель, режим, длительность, формат, тексты и ссылки на материалы. Какие поля есть у выбранной модели — скажет describe_studio.", "additionalProperties": true }, "node_id": { "type": "string", "description": "на какую ноду холста положить результат — чтобы человек увидел его в проекте, а не только в списке материалов. Адреса нод даёт read_project_graph, а также apply_graph_ops в ответе. Не указан — результат останется в материалах." } }, "required": [ "project_id", "params" ], "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "project_id": "<url or id returned by list_projects>", "params": { "url": "<owned material url returned by upload or generation>", "context": "A short film about a blue paper boat.", "plates": false, "titles": false, "burn_subtitles": false, "outro": "off" }}Check the result: Follow the returned job_id with get_job; when it is done, download the video from its download_url and watch it.
- The call answers within seconds with job_id and status running; analysis, composition and rendering continue as a job. The finished job in get_job carries artifact_id and a short-lived download_url.
- Repeating the call with the same params while that job is running returns the same job_id with joined: true and reserves no money again. A call after the job has finished is a new, separately charged decoration.
- Supply valid VTT/SRT if captions are wanted; this call does not automatically transcribe speech.
- Optional params.caption_look: tiktok or card (omitted or unknown means card).
- To keep a series style, pass the previous video’s design_profile from get_artifact as params.series_profile with params.renderer: ‘hyperframes’ and params.decoration_version: 2; without both the style is not kept, and price_quote and the launch return series_profile_warning. The style survives a lost response because the finished video stores it.
- This route is separate from the browser-rendered Decoration node.
generate_video
Section titled “generate_video”Submit an explicit video generation.
| Setting | Value |
|---|---|
| Scope | spend |
| Cost class | paid |
| Availability | account key with the required scope |
| Project context required | yes |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "project_id": { "type": "string", "description": "проект студии: ссылка на него (поле url из create_project, list_projects, read_project_graph — целиком, путём /studio/… или только хвостом из 12 символов) либо id проекта; получить список: list_projects" }, "params": { "type": "object", "description": "что и чем делать: модель, режим, длительность, формат, тексты и ссылки на материалы. Какие поля есть у выбранной модели — скажет describe_studio.", "additionalProperties": true }, "node_id": { "type": "string", "description": "на какую ноду холста положить результат — чтобы человек увидел его в проекте, а не только в списке материалов. Адреса нод даёт read_project_graph, а также apply_graph_ops в ответе. Не указан — результат останется в материалах." } }, "required": [ "project_id", "params" ], "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "project_id": "<url or id returned by list_projects>", "params": { "model": "seedance2", "mode": "from_text", "prompt": "One blue paper boat crosses a quiet pond. Locked camera.", "duration": 5 }}Check the result: Follow the returned job identifier; review the complete clip and retrieve its material.
- Confirm this mode and duration in the current catalog and quote first.
- This lower-level call does not discover upstream graph inputs.
lipsync_video
Section titled “lipsync_video”Match a supplied speech track to a speaker in an existing clip.
| Setting | Value |
|---|---|
| Scope | spend |
| Cost class | paid |
| Availability | account key with the required scope |
| Project context required | yes |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "project_id": { "type": "string", "description": "проект студии: ссылка на него (поле url из create_project, list_projects, read_project_graph — целиком, путём /studio/… или только хвостом из 12 символов) либо id проекта; получить список: list_projects" }, "params": { "type": "object", "description": "что и чем делать: модель, режим, длительность, формат, тексты и ссылки на материалы. Какие поля есть у выбранной модели — скажет describe_studio.", "additionalProperties": true }, "node_id": { "type": "string", "description": "на какую ноду холста положить результат — чтобы человек увидел его в проекте, а не только в списке материалов. Адреса нод даёт read_project_graph, а также apply_graph_ops в ответе. Не указан — результат останется в материалах." } }, "required": [ "project_id", "params" ], "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "project_id": "<url or id returned by list_projects>", "params": { "video_url": "<owned material url returned by upload or generation>", "audio_url": "<owned audio url>", "sync_mode": "cut_off" }}Check the result: Follow the job and inspect the entire video with sound.
- Both files are required; the selected sync mode controls mismatched lengths.
analyze_video
Section titled “analyze_video”Analyze a reference clip before selecting what to reuse.
| Setting | Value |
|---|---|
| Scope | spend |
| Cost class | paid |
| Availability | account key with the required scope |
| Project context required | yes |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "project_id": { "type": "string", "description": "проект студии: ссылка на него (поле url из create_project, list_projects, read_project_graph — целиком, путём /studio/… или только хвостом из 12 символов) либо id проекта; получить список: list_projects" }, "params": { "type": "object", "description": "что и чем делать: модель, режим, длительность, формат, тексты и ссылки на материалы. Какие поля есть у выбранной модели — скажет describe_studio.", "additionalProperties": true }, "node_id": { "type": "string", "description": "на какую ноду холста положить результат — чтобы человек увидел его в проекте, а не только в списке материалов. Адреса нод даёт read_project_graph, а также apply_graph_ops в ответе. Не указан — результат останется в материалах." } }, "required": [ "project_id", "params" ], "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "project_id": "<url or id returned by list_projects>", "params": { "video_url": "<owned material url returned by upload or generation>", "mode": "style" }}Check the result: Read the breakdown, frame style, motion style, plans and notes.
- mode style is the quick detail level; story requests the detailed analysis with sound.
- Creative reuse choices belong to Prompt for the model; analysis can charge measured work.
assemble_video
Section titled “assemble_video”Join explicit clips in the given order.
| Setting | Value |
|---|---|
| Scope | write |
| Cost class | free |
| Availability | account key with the required scope |
| Project context required | yes |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "project_id": { "type": "string", "description": "проект студии: ссылка на него (поле url из create_project, list_projects, read_project_graph — целиком, путём /studio/… или только хвостом из 12 символов) либо id проекта; получить список: list_projects" }, "params": { "type": "object", "description": "что и чем делать: модель, режим, длительность, формат, тексты и ссылки на материалы. Какие поля есть у выбранной модели — скажет describe_studio.", "additionalProperties": true }, "node_id": { "type": "string", "description": "на какую ноду холста положить результат — чтобы человек увидел его в проекте, а не только в списке материалов. Адреса нод даёт read_project_graph, а также apply_graph_ops в ответе. Не указан — результат останется в материалах." } }, "required": [ "project_id", "params" ], "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "project_id": "<url or id returned by list_projects>", "params": { "clips": [ "<owned material url returned by upload or generation>", "<second owned clip url>" ] }}Check the result: Watch the whole returned video and confirm clip order and sound.
- No model generation charge; this is not the same as running a Montage node through run_node.
- Optional params.plans is one {start, seconds} or null per clip, in clip order: each planned clip is trimmed to its song timecode and the reply lists trims, short clips, timecode breaks and a song/video length mismatch (music); an unplanned clip goes in whole and a clip is never stretched.
- A returned file URL may need node attachment or an available material record before external retrieval.
edit_video
Section titled “edit_video”Trim a clip through the retained server editing route.
| Setting | Value |
|---|---|
| Scope | write |
| Cost class | free |
| Availability | account key with the required scope |
| Project context required | yes |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "project_id": { "type": "string", "description": "проект студии: ссылка на него (поле url из create_project, list_projects, read_project_graph — целиком, путём /studio/… или только хвостом из 12 символов) либо id проекта; получить список: list_projects" }, "params": { "type": "object", "description": "что и чем делать: модель, режим, длительность, формат, тексты и ссылки на материалы. Какие поля есть у выбранной модели — скажет describe_studio.", "additionalProperties": true }, "node_id": { "type": "string", "description": "на какую ноду холста положить результат — чтобы человек увидел его в проекте, а не только в списке материалов. Адреса нод даёт read_project_graph, а также apply_graph_ops в ответе. Не указан — результат останется в материалах." } }, "required": [ "project_id", "params" ], "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "project_id": "<url or id returned by list_projects>", "params": { "url": "<owned material url returned by upload or generation>", "trim_start": 0, "trim_end": 3 }}Check the result: Check the returned duration and cut points.
- This is a legacy server route; the current Clip trim node renders in the browser.
- Do not treat its parameters as the complete browser editor contract.
extract_audio
Section titled “extract_audio”Extract a clip’s audio track, or pass through recognized audio.
| Setting | Value |
|---|---|
| Scope | write |
| Cost class | free |
| Availability | account key with the required scope |
| Project context required | yes |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "project_id": { "type": "string", "description": "проект студии: ссылка на него (поле url из create_project, list_projects, read_project_graph — целиком, путём /studio/… или только хвостом из 12 символов) либо id проекта; получить список: list_projects" }, "params": { "type": "object", "description": "что и чем делать: модель, режим, длительность, формат, тексты и ссылки на материалы. Какие поля есть у выбранной модели — скажет describe_studio.", "additionalProperties": true }, "node_id": { "type": "string", "description": "на какую ноду холста положить результат — чтобы человек увидел его в проекте, а не только в списке материалов. Адреса нод даёт read_project_graph, а также apply_graph_ops в ответе. Не указан — результат останется в материалах." } }, "required": [ "project_id", "params" ], "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "project_id": "<url or id returned by list_projects>", "params": { "url": "<owned material url returned by upload or generation>" }}Check the result: Listen to the returned audio and inspect whether extraction occurred.
- A silent video cannot yield a soundtrack; this does not isolate speech.
import_clip
Section titled “import_clip”Import a supported public media link into owned studio materials.
| Setting | Value |
|---|---|
| Scope | write |
| Cost class | free |
| Availability | account key with the required scope |
| Project context required | yes |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "project_id": { "type": "string", "description": "проект студии: ссылка на него (поле url из create_project, list_projects, read_project_graph — целиком, путём /studio/… или только хвостом из 12 символов) либо id проекта; получить список: list_projects" }, "params": { "type": "object", "description": "что и чем делать: модель, режим, длительность, формат, тексты и ссылки на материалы. Какие поля есть у выбранной модели — скажет describe_studio.", "additionalProperties": true }, "node_id": { "type": "string", "description": "на какую ноду холста положить результат — чтобы человек увидел его в проекте, а не только в списке материалов. Адреса нод даёт read_project_graph, а также apply_graph_ops в ответе. Не указан — результат останется в материалах." } }, "required": [ "project_id", "params" ], "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "project_id": "<url or id returned by list_projects>", "params": { "url": "<supported media link supplied by the user>" }}Check the result: Check all returned items and pin the intended file to a media-source node.
- For YouTube, call inspect_import first and pass the selected quality.
- The example placeholder must be replaced with a supported source, not an arbitrary file URL.
inspect_import
Section titled “inspect_import”Inspect available YouTube import quality choices.
| Setting | Value |
|---|---|
| Scope | write |
| Cost class | free |
| Availability | account key with the required scope |
| Project context required | yes |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "project_id": { "type": "string", "description": "проект студии: ссылка на него (поле url из create_project, list_projects, read_project_graph — целиком, путём /studio/… или только хвостом из 12 символов) либо id проекта; получить список: list_projects" }, "params": { "type": "object", "description": "что и чем делать: модель, режим, длительность, формат, тексты и ссылки на материалы. Какие поля есть у выбранной модели — скажет describe_studio.", "additionalProperties": true }, "node_id": { "type": "string", "description": "на какую ноду холста положить результат — чтобы человек увидел его в проекте, а не только в списке материалов. Адреса нод даёт read_project_graph, а также apply_graph_ops в ответе. Не указан — результат останется в материалах." } }, "required": [ "project_id", "params" ], "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "project_id": "<url or id returned by list_projects>", "params": { "url": "<YouTube link supplied by the user>" }}Check the result: Let the user choose a returned quality before import_clip.
- Inspection does not download the video; this quality-choice operation is for YouTube.
list_social_accounts
Section titled “list_social_accounts”List the key owner’s connected social accounts before preparing a post.
| Setting | Value |
|---|---|
| Scope | read |
| Cost class | free |
| Availability | account key with the required scope |
| Project context required | no |
Arguments
Section titled “Arguments”{ "type": "object", "properties": {}, "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{}Check the result: Pick the account by platform and nickname and confirm its state is connected before naming it in put_publish_draft.
- Returns id, platform, nickname, username and state only; tokens, scopes and expiry are never exposed.
- Connecting or reconnecting an account happens in the studio account screen, not through MCP.
put_publish_draft
Section titled “put_publish_draft”Prepare a post (caption with hashtags, cover frame, account) for a person to publish.
| Setting | Value |
|---|---|
| Scope | write |
| Cost class | free |
| Availability | account key with the required scope |
| Project context required | yes |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "project_id": { "type": "string", "description": "проект студии: ссылка на него (поле url из create_project, list_projects, read_project_graph — целиком, путём /studio/… или только хвостом из 12 символов) либо id проекта; получить список: list_projects" }, "platform": { "type": "string", "enum": [ "tiktok", "youtube" ], "description": "куда публикуем" }, "caption": { "type": "string", "description": "текст поста вместе с хэштегами, до 2200 символов; студия его не режет и не дописывает" }, "cover_ms": { "type": [ "integer", "null" ], "minimum": 0, "description": "кадр обложки: миллисекунды от начала ролика; null или не передан — первый кадр" }, "social_account_id": { "type": [ "string", "null" ], "description": "id аккаунта из list_social_accounts той же площадки; null — выберет человек" }, "node_id": { "type": [ "string", "null" ], "description": "id ноды с готовым роликом из read_project_graph; null — студия выберет сама" } }, "required": [ "project_id", "platform", "caption" ], "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "project_id": "<url or id returned by list_projects>", "platform": "tiktok", "caption": "A blue paper boat crosses a quiet pond #paperboat #calm", "cover_ms": 1200}Check the result: Give the returned open_url to the person: it opens the project with the publish window filled in; read back the stored draft fields.
- It never publishes: the person reviews, edits and presses Publish on the platform’s own consent screen.
- One draft per platform per project; a new call replaces the previous draft entirely.
- On YouTube the first caption line becomes the title (up to 100 characters) and the cover frame is not applied.
- While TikTok allows this app only drafts for a public account, the caption is shown for copying and the cover is chosen in the TikTok app.
save_element
Section titled “save_element”Save an Element (a character, object or place) to the library of the key owner, or update a saved one, so the studio can apply it to an Element node.
| Setting | Value |
|---|---|
| Scope | write |
| Cost class | free |
| Availability | account key with the required scope |
| Project context required | no |
Arguments
Section titled “Arguments”{ "type": "object", "properties": { "element_id": { "type": "string", "description": "id своего элемента из list_my_elements или из прошлого ответа save_element — обновить его; не передан — завести новый" }, "name": { "type": "string", "description": "имя; у нового элемента обязательно" }, "role": { "type": "string", "enum": [ "персонаж", "объект", "локация" ], "description": "что это: персонаж, объект или локация; у нового по умолчанию персонаж" }, "images": { "type": "array", "items": { "type": "string" }, "description": "адреса своих картинок студии по порядку; у персонажа первой — лист персонажа. Передан — заменяет картинки элемента целиком (кадры «Доделать», нарисованные с того же листа, сохраняются); не передан — прежние" }, "view_kinds": { "type": "array", "items": { "type": [ "string", "null" ], "enum": [ "sheet", "face", "figure", "object", null ] }, "description": "вид каждой картинки, по одному на картинку и в том же порядке: sheet — лист персонажа, figure и face — кадры фигуры и лица, object — кадр предмета, null — без вида (фото); без images — виды уже сохранённых картинок" }, "description": { "type": "string", "description": "описание для сценариста: кто это, история, роль в сюжете" }, "character": { "type": "string", "description": "характер для сценариста: как ведёт себя, чего хочет" }, "look": { "type": "string", "description": "что брать с картинки — короткий факт о том, что на приложенной картинке; его читает генератор кадра" } }, "additionalProperties": false}Reviewed example arguments
Section titled “Reviewed example arguments”{ "name": "Sonya", "role": "персонаж", "images": [ "<url of the character sheet>", "<url of the figure frame>", "<url of the face frame>" ], "view_kinds": [ "sheet", "figure", "face" ], "description": "The postwoman of a small seaside town, 28.", "character": "Stubborn, jokes a lot.", "look": "Red hair, blue postal jacket."}Check the result: Find the returned element_id in list_my_elements and read its full text with describe_element.
- Pictures must be the owner’s own studio files (a url from upload_artifact or a generation result); an outside address, someone else’s file or a non-picture refuses and nothing is written.
- With element_id only the fields passed are replaced; images replace the whole list, and Finish frames drawn from the same sheet are kept.
- For a character put the character sheet first, not a single portrait; the source photo the sheet was drawn from may follow it with the kind null.
- view_kinds gives one kind per picture (sheet, figure, face, object or null); the studio does not guess kinds, so without them every picture counts as a sheet or photo and the Element has no frames. A count that does not match the pictures refuses and nothing is written.
- There is no deletion: a person removes an Element in the studio.
Reviewed: 2026-10-14. Sources: the current MCP registry, schemas and handler-reviewed examples. No paid handlers were executed to build this reference.
