Skip to content

MCP tools ​

The Animanager MCP server gives an AI agent 68 tools in 8 groups, and 4 ready-made prompts. This page is generated from the server's own catalogue at every build of the guide, so it lists exactly what the current version offers. An agent can read the same catalogue at any time with animanager_help.

To connect an agent, see Connect Claude, Codex or another MCP client. For what it may do on your behalf, see What an agent can and can't do.

What a tool needs ​

Every tool works with the signed-in session of the person who connected the agent, and the server checks that person's permissions on every call. Some tools also need:

NeedMeaning
helperthe Animanager Helper running on this computer
browsera canvas open in the browser (only when itemId is omitted)
askan explicit request by the person in this turn
editpermission to edit canvases in the project
publishpermission to post revisions on the stage
chatpermission to post in the thread
commentpermission to post comments on the stage (and to change its status when statusId is given)
tokensspends studio tokens
farmthe render farm switched on for the studio and the role permission to use it
submitpermission to submit render jobs in the project

All tools ​

ToolGroupWhat it doesNeeds
canvas_openReadThe canvases the user has open in the browser right now, most recently used first, each with its item id, the folder they are inside and the selected nodes.helper, browser
canvas_selectedReadWhat the user has selected on the open canvas, in full.helper, browser
canvas_listReadWhat this user can open. Without arguments: studios, projects and spaces with their item counts (compact).
canvas_contextReadThe canvas of an item as short text: folders, every generator with its model, wiring, settings and prompt, wired media one line each, loose media...
canvas_lookupReadAny UUID the user pastes: a media id (the file with a link, every canvas and node it sits on, and when it was generated here, how: model, prompt, settings,...
canvas_mediaReadThe file behind a media node (image, video, file or sketch, including what canvas_generate produced), or behind any media id you can read, on a canvas or...
canvas_video_framesReadReads a STRETCH of a video: up to 12 small frames (768 px) evenly spaced between two seconds (default the whole clip, 8 frames), with the cuts and shots the...
canvas_video_frameReadOne or a few EXACT frames of a video at full resolution: "pull the frame at 3.2 s", "give me the frames at 1.2 and 3.5 s".helper
canvas_video_sheetReadA contact sheet to order: "make me a contact sheet of 0 to 10 s with 16 frames", "3 frames a second between 4 and 6 s".helper
canvas_assetsReadThe studio's canvas assets: reusable named sets of media (a character sheet, a prop, a location) that a person made with "Set as Asset" on a folder.
canvas_add_mediaEditPuts a file on the canvas as a media node (image, video or file by its type): a file on this computer by path (a render, a playblast, a screenshot another...edit
canvas_add_generatorEditAdds a new generation node for a model, with the same defaults the canvas menu gives it and an empty prompt, in the folder the user is looking at (or...edit
canvas_set_modelEditSwitches an existing generation node to another model of the same family, keeping its name, wires, prompt and framing (aspect ratio, duration, count);...edit
canvas_write_promptEditWrites the prompt of a generation node (and optionally its aspect ratio, resolution, negative prompt or duration).edit
canvas_nameEditNames a media node (image, video, file, sketch), a frame, a folder or a text note.edit
canvas_connectEditWires a media node (or a frame/folder with a starred item) into a generation node.edit
canvas_disconnectEditRemoves a wire between two nodes, by connection id or by source and target (plus port when the same pair is wired more than once).edit
canvas_removeEditRemoves an EMPTY node: a generation node (with its wires) or a text note; or a media node (image, video, file) that YOU put on this canvas in this session...edit
canvas_importEditCopies elements from another canvas into this one: a whole folder (with everything inside), a set of nodes (with what hangs from them), or the entire source...edit
canvas_place_assetEditBrings an asset onto the canvas as a copy: its frame with the media, generators and wires inside, laid out as authored (an older asset comes as a blue frame...edit
canvas_place_mediaEditPuts an existing media (a revision of another stage from production_revisions, a file from another canvas from canvas_lookup) on the ITEM canvas as a media...edit
canvas_video_cutEditCuts a segment out of a canvas video into a new clip: "cut from 1.0 to 2.5 s", "keep only the second shot".edit
canvas_moveOrganizeMoves one or more nodes: to a position (the first node's top-left corner lands there, the others keep their offsets) or by an offset.edit
canvas_arrangeOrganizeTidies a set of nodes into a grid (default; square-ish, or columns wide), a row or a column, starting at the top-left of the set unless an origin is given.edit
canvas_create_frameOrganizeWraps existing nodes in a new named frame sized to fit them (40 px around, or pad), the way F does on a selection: the nodes become its members, so moving...edit
canvas_frame_membersOrganizeAdds nodes to a frame and/or takes nodes out of it.edit
canvas_fit_frameOrganizeResizes a frame to what it holds, with pad pixels around (default 40): it grows to cover members that stick out and shrinks around a sparse group; the...edit
canvas_folder_to_frameOrganizeTurns a folder into a frame on its parent's plane so what it held is visible without entering it: the content keeps its layout, ids, media, names, stars,...edit
canvas_frame_to_folderOrganizeThe reverse of canvas_folder_to_frame: a frame becomes a folder (same id, name and star) holding everything that was inside it, layout intact; the folder...edit
canvas_add_folderOrganizeCreates a folder on the canvas: in the folder the user is looking at (or parentFolderId), to the right of what is there unless at is given.edit
canvas_move_to_folderOrganizeMoves nodes into a folder of the canvas, or back to the root when folder is omitted.edit
canvas_generateGenerateRuns a generator, image or video: optionally writes a new prompt (validated like canvas_write_prompt), then creates the result placeholder(s) on the canvas...edit, tokens
canvas_generation_statusGenerateWhere generations started with canvas_generate stand: queued, running, done or failed, with each result (media id, the picture, and a link to the file valid...
production_estimateGenerateWhat a batch of generations would cost BEFORE queuing it, from the same estimators the queue charges with: per line and in total, in the studio's TOKENS...
production_locateProductionWhat an Animanager link points at.
production_stageProductionTHE entry point for production work: one stage of an item (a task) with its status, who is assigned to it (the artists on its timeline blocks, by the...
production_itemProductionAn item (a shot, a character, an asset) with its place (studio, project, space, collection), every stage it has (taskId, status, who is assigned to it,...
production_spaceProductionA space (a sequence, a set of characters) with its items and, for each item, its stages with status, assignee, how many revisions and when the last one was...
production_revisionsProductionThe revisions of one stage (taskId) or of every stage of an item (itemId), newest first: version number, author, status, time spent, the body text, each...
production_threadProductionOne page of a conversation: the thread of a studio, project, space, item or stage (for a stage, id is the taskId).
production_stage_tablesProductionThe data tables of one stage's revisions, newest first: for each CSV a revision carries, its revision (version, messageId, versionId, date), file name,...
production_feedbackProductionEvery review feedback of one revision (versionId, from production_revisions or production_stage) or one feedback message (messageId, from the thread),...
production_publish_revisionProductionPublishes a revision on a stage, signed by the studio's bot "Anibot", with a summary, optional media and a status.ask, publish
production_post_messageProductionPosts a chat message as the bot ("Anibot") in a thread: studio, project, space, item or stage (id = taskId).chat
production_post_commentProductionPosts a COMMENT on a stage as the bot ("Anibot"): the message type that sets the stage's status WITHOUT publishing a revision.comment
production_set_metadataProductionWrites pipeline metadata values on a stage (taskId): the fields production_stage and production_item list, by fieldKey.ask
production_set_priorityProductionSets the priority of one or several items (shots, assets, ads): 5 very high, 4 high, 3 normal (the default), 2 low, 1 very low.ask
production_run_jobProductionRuns "produce stage B from stage A" for a whole space as a SERVER JOB instead of doing it by hand item by item: for every item whose source stage has a...edit, tokens
production_job_statusProductionWhere a job started with production_run_job stands: overall status, counts, and every item with its step (placing, generating image, generating video,...
production_revision_filesFilesThe managed work files of one revision (its package): the primary work file(s), the files and exports it published with their paths, sizes and hashes, the...
production_stage_filesFilesThe files currently published on a stage across all its revisions, as Get Files sees them: one section at a time (primary work files, files, exports), paged...
production_stage_inputsFilesThe pipeline inputs a stage consumes (its dependencies: the upstream stages and assets wired into it in the pipeline), each with its consumption mode...
workspace_statusFilesThe local workspace of a stage on this computer, through the Helper: its folder, whether it exists and is prepared, how many files it holds, its state, the...helper
workspace_locateFilesWhich stage a local path belongs to, through the Helper: from the .animanager marker of the workspace folder that contains it, or, inside the workspace base...helper
workspace_item_statusFilesEvery stage of an item with its local workspace folder on this computer, through the Helper: the taskId and name of each stage, its absolute folder under...helper
workspace_prepareFilesCreates the local workspace folder of a stage on this computer through the Helper: the folder in the studio's structure under the workspace base, its files/...helper
workspace_get_filesFilesGet Files into the local workspace through the Helper. Three forms.helper
workspace_changesFilesWhat changed in the local workspace of a stage since its last published revision, through the Helper: every candidate file with its status (new, changed,...helper
workspace_publish_revisionFilesPublishes a revision WITH managed work files from the local workspace of this computer, the way the app does with the Helper: stages the selected local...helper, ask, publish
workspace_job_statusFilesWhere a Helper operation stands.helper
workspace_blenderFilesWhich Blender opens a work file on this computer, through the Helper.helper
production_edit_revisionFilesCorrects a revision the way the revision menu does: its text, its status, the time spent, or its review media (mediaIds replaces the whole list, in order).ask
production_delete_revisionFilesDeletes a revision (its message, its version and its work-file package link) the way the revision menu does, through the same rule the app applies: its...ask
farm_queueRender farmThe studio's render queue, as the Farm page shows it: each job with its status, frames done, priority, item and stage, revision, scene and dates, the totals...farm
farm_jobRender farmOne render job in full, what Job details shows on the Farm page: its status and frames, priority, the revision, item and stage it renders, its settings...farm
farm_launchRender farmLaunches a Blender render on the studio's farm from a published revision, like Launch render on its revision card.farm, ask, submit
farm_filesRender farmThe files of a render job: the rendered frames (or previews, logs, metadata), each with its frame, size and a download link valid 24 hours. download: true...farm
animanager_helpHelpThe catalogue of this MCP, generated from the tools themselves: what every tool does, when to use it, its parameters, what it needs (the Helper, an open...

Read ​

Look at canvases, media and video frames without changing anything.

canvas_open ​

The canvases the user has open in the browser right now, most recently used first, each with its item id, the folder they are inside and the selected nodes. Call this first when the user says "this canvas", "the one I have open", "the selected generator". The first entry is the current canvas; the other tools use it when itemId is omitted.

Needs: the Animanager Helper running on this computer; a canvas open in the browser (only when itemId is omitted).

Ask for it with words like: "this canvas", "the one I have open", "which canvas".

Parameters

No parameters.

Example

  • canvas_open {}: the open canvases, current first.

Usually followed by: canvas_context, canvas_selected.

canvas_selected ​

What the user has selected on the open canvas, in full. For a selected generation node: its model and model card (connector, how references are cited, limits, aspect ratios, resolutions, method, what to avoid), every wired input with its slot, role, citation token, name and image (a reference video comes as several frames spread across the clip, with its length), the current prompt and settings, and ready instructions for writing the prompt, including how to treat a blocking animatic. For other nodes: what they are and what they are wired to. Call this first for "this generator", "the selected node", "what is connected here".

Needs: the Animanager Helper running on this computer; a canvas open in the browser (only when itemId is omitted).

Ask for it with words like: "selected node", "this generator", "what is connected here".

Parameters

ParameterTypeRequiredDescription
imagePagenumberPage of pictures when they do not all fit one reply (default 1).

Example

  • canvas_selected {}: the selected generator with its model card, wiring and prompt.

Usually followed by: canvas_write_prompt, canvas_generate.

canvas_list ​

What this user can open. Without arguments: studios, projects and spaces with their item counts (compact). With spaceId or query: the items too (name, collection, canvas size, item id). Use it to find the canvas or space the user means, then pass the item id or space id to the other tools.

Needs: only a signed-in session.

Ask for it with words like: "find the canvas", "which space", "search items", "list studios projects spaces".

Parameters

ParameterTypeRequiredDescription
querystringText to search in item titles, collection, space and project names.
studioIdstringStudio UUID, short id or Animanager URL.
projectIdstringProject UUID, short id or Animanager URL.
spaceIdstringSpace UUID, short id or Animanager URL. Lists the items of this space.
itemsbooleanForce items on (true) or off (false).

Examples

  • canvas_list {"query":"Amy"}: items whose title, collection, space or project matches.
  • canvas_list {"spaceId":"<spaceId>"}: the items of one space with their ids.

Usually followed by: canvas_context, production_space.

canvas_context ​

The canvas of an item as short text: folders, every generator with its model, wiring, settings and prompt, wired media one line each, loose media summarized, other nodes briefly. Handles (G1 = generator, M1 = media, F1 = frame, D1 = folder, T1 = text) and ids. The model card and prompt instructions of a generator come only when the scope is small: "nodes:<id or handle>,…" (also pulls in what feeds them) or a canvas with at most two generators; "folder:<folderId>" (root: "folder:") reads one folder; "all" the whole canvas. Wired media come back as images. Read once, then act: the write tools return what changed.

Needs: only a signed-in session.

Ask for it with words like: "read the canvas", "what is on the canvas", "generators and wiring".

Parameters

ParameterTypeRequiredDescription
itemIdstringItem whose canvas to read. Omit for the canvas the user has open (canvas_open).
scopestringall | folder:<folderId> | nodes:<id,id>. Default all.
imagesbooleanAttach thumbnails of the visible media as images (default true, max 8).
imagePagenumberPictures come in pages that fit the reply size limit; the reply says how many pages there are. Default 1.
layoutbooleanInclude positions and sizes (for canvas_move / canvas_arrange). Default false.

Examples

  • canvas_context {"itemId":"<itemId>"}: the whole canvas as text with thumbnails.
  • canvas_context {"scope":"nodes:G1"}: one generator with its card and what feeds it.

Usually followed by: canvas_write_prompt, canvas_connect.

canvas_lookup ​

Any UUID the user pastes: a media id (the file with a link, every canvas and node it sits on, and when it was generated here, how: model, prompt, settings, cost, generator node, every reference by role and media id) or a NODE id (which canvas holds it, its type, name and model, so you can read it with canvas_context). Use it FIRST whenever the person gives a bare id, asks "how was this made" or "what went into this", or to trace a result back to its references. Reading only.

Needs: only a signed-in session.

Ask for it with words like: "what is this id", "where is this media", "how was it generated".

Parameters

ParameterTypeRequiredDescription
mediaIdstringYesThe media id (UUID).

Example

  • canvas_lookup {"mediaId":"<uuid>"}: the file, where it sits, and its generation record.

Usually followed by: canvas_place_media.

canvas_media ​

The file behind a media node (image, video, file or sketch, including what canvas_generate produced), or behind any media id you can read, on a canvas or not (a revision's playblast, a message attachment): a link to the original that works for 24 hours, the file name, type and size, and the picture itself at full detail (1024 px by default, 1536 px with size "max"; the thumbnails elsewhere are 512 px). This is how to look closely at one image: to judge a generation, read text in it, check hands, faces, edges or artifacts. For a video, also its cuts and shots and a link to its contact sheet with timestamps; sound: true adds its soundtrack by the numbers (format, loudness, true peak, silences, loudness second by second). Use it when the user asks for the image, the file or its URL, and give them the link: a chat cannot receive the file from here.

Needs: only a signed-in session.

Ask for it with words like: "link to the file", "download this media", "look closely", "cuts of the video".

Parameters

ParameterTypeRequiredDescription
itemIdstringOmit for the open canvas. Not needed for a media id.
nodestringNode id, handle (M3) or media id (also one on no canvas, e.g. from production_revisions). Omit for the single selected node.
sizeone of "thumbnail", "full", "max"Size of the picture: full (1024 px, default), max (1536 px) or thumbnail (512 px).
soundbooleanVideo or audio: also read the soundtrack (has sound?, format, integrated loudness, loudness range, true peak, silences, loudest moment of each second). Levels measured by ffmpeg, not a listening. Default false.

Example

  • canvas_media {"node":"M1","size":"full"}: a 24 h link and the picture at 1024 px.

canvas_video_frames ​

Reads a STRETCH of a video: up to 12 small frames (768 px) evenly spaced between two seconds (default the whole clip, 8 frames), with the cuts and shots the server detected: is that a cut or a push-in, where exactly does the shot change, what happens between 1.2 and 2.5 s. Pass node (a canvas video, or any video media id, e.g. a revision's playblast) or path (a video file on this computer; needs the Animanager Helper, frames at full resolution). For one or a few exact frames at full resolution (and to put them on the canvas) use canvas_video_frame; for a dense grid of a stretch, canvas_video_sheet. Reading only; nothing on the canvas changes.

Needs: only a signed-in session.

Ask for it with words like: "frames between", "is that a cut", "how does the motion go".

Parameters

ParameterTypeRequiredDescription
itemIdstringOmit for the open canvas. Not needed for a media id.
nodestringVideo node id, handle (M2) or media id (also one on no canvas). Omit for the single selected node. Ignored with path.
pathstringAbsolute path of a video file on this computer, instead of node.
fromnumberStart second (default 0).
tonumberEnd second (default the end of the clip).
countnumberHow many frames, 1 to 12 (default 8).
imagePagenumberPage of frames when they do not all fit one reply (default 1).

Example

  • canvas_video_frames {"node":"M2","from":0,"to":4,"count":8}: eight frames between 0 and 4 s with the detected cuts.

canvas_video_frame ​

One or a few EXACT frames of a video at full resolution: "pull the frame at 3.2 s", "give me the frames at 1.2 and 3.5 s". Pass node (a canvas video, or any video media id, e.g. a revision's playblast) or path (a video file on this computer; needs the Animanager Helper). Each frame comes back as a picture with its real second and a path on this computer, which production_post_comment, production_post_message and production_publish_revision attach with files (no canvas needed); with place: true it is also put on the canvas as an image node next to the video, named "<video> @ 3.20 s", ready for canvas_connect. To read a whole stretch use canvas_video_frames or canvas_video_sheet.

Needs: the Animanager Helper running on this computer.

Ask for it with words like: "the frame at", "pull a frame", "still from the video".

Parameters

ParameterTypeRequiredDescription
itemIdstringOmit for the open canvas. Not needed for a media id.
nodestringVideo node id, handle (M2) or media id (also one on no canvas). Omit for the single selected node. Ignored with path.
pathstringAbsolute path of a video file on this computer, instead of node.
atnumber or list of numberYesSecond of the frame, or a list of up to 8 seconds.
placebooleanAlso put each frame on the canvas as an image node (default false).
namestringWith place: name for the node (a single instant), instead of "<video> @ 3.20 s".
folderIdstringWith place: folder to drop into (default: the folder of the video, or the one the user is looking at).
imagePagenumberPage of pictures when they do not all fit one reply (default 1).

Examples

  • canvas_video_frame {"node":"M2","at":3.2}: the exact frame at 3.2 s, full resolution.
  • canvas_video_frame {"path":"/abs/file.mp4","at":[1.2,3.5]}: frames of a local file; needs the Helper.

canvas_video_sheet ​

A contact sheet to order: "make me a contact sheet of 0 to 10 s with 16 frames", "3 frames a second between 4 and 6 s". Pass node (a canvas video, or any video media id, e.g. a revision's playblast) or path (a file on this computer; needs the Animanager Helper), from and to, and count (cells, max 48) or fps; columns (4), cellWidth (320, max 640), timestamps (printed on each cell). With no range or grid, the clip's standard sheet comes back as is. The legend gives the second of every cell. The sheet is also saved on this computer (attach it to a post with files); place: true also puts it on the canvas.

Needs: the Animanager Helper running on this computer.

Ask for it with words like: "contact sheet", "frames a second", "overview of the clip".

Parameters

ParameterTypeRequiredDescription
itemIdstringOmit for the open canvas. Not needed for a media id.
nodestringVideo node id, handle (M2) or media id (also one on no canvas). Omit for the single selected node. Ignored with path.
pathstringAbsolute path of a video file on this computer, instead of node.
fromnumberStart second (default 0).
tonumberEnd second (default the end of the clip).
countnumberHow many cells, spread evenly from from to to (1 to 48). Or pass fps.
fpsnumberCells per second instead of count (capped at 48 cells).
columnsnumberCells per row (default 4).
cellWidthnumberWidth of each cell in pixels (default 320, max 640).
timestampsbooleanPrint the second on each cell (default true).
placebooleanAlso put the sheet on the canvas as an image node (default false).
namestringWith place: name for the node.
folderIdstringWith place: folder to drop into (default: the folder of the video, or the one the user is looking at).

Example

  • canvas_video_sheet {"node":"M2","from":0,"to":10,"count":16}: a 16-cell sheet of the first 10 s.

canvas_assets ​

The studio's canvas assets: reusable named sets of media (a character sheet, a prop, a location) that a person made with "Set as Asset" on a folder. Each with id, name, how many images and videos it holds, where it is authored and whether it already sits on this canvas. Search by name with query. Bring one in with canvas_place_asset.

Needs: only a signed-in session.

Ask for it with words like: "studio assets", "character sheet", "reusable set".

Parameters

ParameterTypeRequiredDescription
itemIdstringOmit for the open canvas.
querystringPart of the asset name to filter by.

Example

  • canvas_assets {"query":"Amy"}: assets whose name matches.

Usually followed by: canvas_place_asset.

Edit ​

Add media and generators to a canvas, write prompts, name and wire nodes.

canvas_add_media ​

Puts a file on the canvas as a media node (image, video or file by its type): a file on this computer by path (a render, a playblast, a screenshot another tool just saved) or a file at an http(s) URL. The bytes are uploaded to the studio's storage the same way the browser does it, and the node lands in the folder the user is looking at (or folderId), to the right of what is there unless at is given. Images get their own aspect. Returns the node id and handle; name it here or with canvas_name so a prompt can cite it.

Needs: permission to edit canvases in the project.

Ask for it with words like: "put this file on the canvas", "upload a render", "add an image from a URL".

Parameters

ParameterTypeRequiredDescription
itemIdstringOmit for the open canvas.
pathstringAbsolute path of a file on this computer.
urlstringhttp(s) URL of the file, when it is not on this computer.
namestringName for the node (shown on the canvas; references need one).
folderIdstringFolder of the canvas to drop into (default: the one the user is looking at, else root).
atobject (x, y)Top-left position; default: to the right of what is there.

Examples

  • canvas_add_media {"path":"/abs/render.png","name":"render v3"}: uploads a local file as a named media node.
  • canvas_add_media {"url":"https://…/ref.jpg"}: a file fetched from the web.

Usually followed by: canvas_connect.

canvas_add_generator ​

Adds a new generation node for a model, with the same defaults the canvas menu gives it and an empty prompt, in the folder the user is looking at (or folderId), to the right of what is there unless at is given. Then wire references into it with canvas_connect and write its prompt with canvas_write_prompt. Image, video and sound models, and the Enhance node (the upscaler / cleaner: one image or video in, no prompt, set by engine): the model parameter lists them all. After adding an Enhance node: wire the media with canvas_connect, adjust engine, size and cleanLevel with canvas_set_model, run it with canvas_generate.

Needs: permission to edit canvases in the project.

Ask for it with words like: "add a generator", "new node for model", "add an enhance node", "upscaler".

Parameters

ParameterTypeRequiredDescription
itemIdstringOmit for the open canvas.
modelstringYesModel id. Image models: gpt-image (GPT Image 2), gpt-image-2.5-sunburst (OpenAI, editing precision), gpt-image-2.5-flare (OpenAI, fast), nano-banana, nano-banana-2, nano-banana-basic, seedream, seedream-pro, p-image. Video models: veo-3.1, seedance-2.0-mini, seedance-2.0-fast, seedance-2.0, seedance-2.5, minimax-h3, minimax-h3-max, kling-motion, kling-o1-edit, p-video. Sound: mmaudio-sfx. Enhance node engines: topaz-upscale (Topaz, faithful upscale 1x/2x/4x or clean at 1x, images and video), seedvr-upscale (SeedVR2, generative, to 720p-2160p), real-esrgan (fast GAN upscale, images), scunet-denoise (deterministic denoise, images, the menu default), nano-banana-clean and nano-banana-clean-pro (AI clean, images, 1K-4K), bytedance-upscale (AIGC video to 1080p-4K), ffmpeg-deband (free, smooths banding). Short names work too: topaz, seedvr, esrgan, scunet, nano, nano-pro, bytedance, deband, or enhance (menu default) and upscaler (Topaz).
namestringOptional name for the node.
folderIdstringFolder of the canvas to drop into (default: the one the user is looking at, else root).
atobject (x, y)Top-left position; default: to the right of what is there.

Example

  • canvas_add_generator {"model":"nano-banana-2","name":"key frame"}: an image generator with default settings.

Usually followed by: canvas_connect, canvas_write_prompt, canvas_generate.

canvas_set_model ​

Switches an existing generation node to another model of the same family, keeping its name, wires, prompt and framing (aspect ratio, duration, count); resolution and the other settings reset to the new model's defaults, so re-check them with canvas_selected. The model parameter lists the families. On an Enhance node this is also how its settings are set: size and cleanLevel (see those parameters); model may be omitted there to change only those. A model of another family is a different node: add it with canvas_add_generator, re-wire, and canvas_remove the old one. Prefer this over adding nodes when the person only wants a different model.

Needs: permission to edit canvases in the project.

Ask for it with words like: "change the model", "switch to seedance", "set the upscale factor".

Parameters

ParameterTypeRequiredDescription
itemIdstringOmit for the open canvas.
nodestringGenerator node id or handle (G2). Omit for the single selected node.
modelstringModel id of the same family as the node. Families: image (gpt-image, gpt-image-2.5-sunburst, gpt-image-2.5-flare, nano-banana, nano-banana-2, nano-banana-basic, seedream, seedream-pro), Seedance (seedance-2.0-mini, seedance-2.0-fast, seedance-2.0, seedance-2.5), MiniMax (minimax-h3, minimax-h3-max), Enhance node engines (topaz-upscale, seedvr-upscale, real-esrgan, scunet-denoise, nano-banana-clean, nano-banana-clean-pro, bytedance-upscale, ffmpeg-deband, or their short names topaz, seedvr, esrgan, scunet, nano, nano-pro, bytedance, deband). Optional on an Enhance node when only size or cleanLevel change.
sizestringEnhance node only: the engine's upscale factor "1"/"2"/"4", output size "1K"/"2K"/"4K" or target resolution "720p".."2160p", "1080p"/"2k"/"4k", as canvas_selected lists them.
cleanLevelone of "light", "standard", "strong"Enhance node only (Topaz, Nano Banana and Deband): cleanup (Topaz, Nano Banana) or strength (Deband).

Example

  • canvas_set_model {"node":"G1","model":"seedance-2.5"}: same node, other model; settings reset to its defaults.

canvas_write_prompt ​

Writes the prompt of a generation node (and optionally its aspect ratio, resolution, negative prompt or duration). The prompt is checked against the model card and the wiring first: citations must use the connector's syntax (given in canvas_context instructions) and only refer to wired references; settings must be ones the model accepts. Rejections come back with the exact rule to fix.

Needs: permission to edit canvases in the project.

Ask for it with words like: "write the prompt", "set the aspect ratio", "change the duration".

Parameters

ParameterTypeRequiredDescription
itemIdstringOmit for the open canvas.
nodestringGenerator node id or handle (G2). Omit for the selected generator, else the generator you last read with canvas_selected or canvas_context, else the one the selected reference feeds.
promptstringYes
aspectRatiostring
resolutionstring
qualityone of "auto", "low", "medium", "high", "xhigh", "max"
imageOptionsobject (size, background, output_format, output_compression, mask_media_id, mask_url)GPT Image nodes only. Options the node stores and sends with every generation.
negativePromptstring
durationSecondsnumber

Example

  • canvas_write_prompt {"node":"G1","prompt":"@Image1 walking at dusk","aspectRatio":"16:9"}: validated against the model card and the wiring.

Usually followed by: canvas_generate.

canvas_name ​

Names a media node (image, video, file, sketch), a frame, a folder or a text note. A reference needs a name before a prompt can cite it (the tokens in canvas_selected say "not named" otherwise), and the name is what the generator is told about that input, so name references by what they show: "Amy front view", "rooftop plate". Never writes prompts.

Needs: permission to edit canvases in the project.

Ask for it with words like: "name this node", "rename", "so the prompt can cite it".

Parameters

ParameterTypeRequiredDescription
itemIdstringOmit for the open canvas.
nodestringNode id, media id or handle (M3). Omit for the single selected node.
namestring
nameslist of object (node, name)Several nodes in one call: [{ node, name }].

Examples

  • canvas_name {"node":"M1","name":"Amy front"}: names one node.
  • canvas_name {"names":[{"node":"M1","name":"Amy"},{"node":"M2","name":"blocking"}]}: several at once.

canvas_connect ​

Wires a media node (or a frame/folder with a starred item) into a generation node. Picks the first free slot of the right kind unless a port is given (ports and slot names are in canvas_context). A taken port is refused unless replace is true, in which case the old wire is removed first.

Needs: permission to edit canvases in the project.

Ask for it with words like: "wire", "connect the reference", "plug into the generator".

Parameters

ParameterTypeRequiredDescription
itemIdstringOmit for the open canvas.
sourcestringSource node id, media id or handle (M3).
targetstringGenerator id or handle (G1).
portstringTarget port such as input-4 (optional).
replacebooleanIf the port is taken, swap the wire instead of refusing.
wireslist of object (source, target, port, replace)Several wires in one call, in order: [{ source, target, port?, replace? }]. Each is reported; one failure does not undo the others.

Examples

  • canvas_connect {"source":"M1","target":"G1"}: first free slot of the right kind.
  • canvas_connect {"source":"M3","target":"G1","port":"input-1","replace":true}: swaps what was on that port.

canvas_disconnect ​

Removes a wire between two nodes, by connection id or by source and target (plus port when the same pair is wired more than once). A wire carries no content and the canvas keeps a record of it. Media is never deleted; an empty generation node or text note goes with canvas_remove.

Needs: permission to edit canvases in the project.

Ask for it with words like: "unwire", "remove the connection".

Parameters

ParameterTypeRequiredDescription
itemIdstringOmit for the open canvas.
connectionIdstring
sourcestring
targetstring
portstring

Example

  • canvas_disconnect {"source":"M1","target":"G1"}: removes that wire; nothing else changes.

canvas_remove ​

Removes an EMPTY node: a generation node (with its wires) or a text note; or a media node (image, video, file) that YOU put on this canvas in this session (canvas_add_media, placed frames and sheets, cuts, canvas_place_media). Use it to clean up a generator you added by mistake or replaced, or a capture you placed and no longer need. Only the node leaves the canvas: media is never deleted (the file stays in its revisions, messages and other nodes). Refused for media anyone else placed (or you placed in an earlier session), for frames and folders, and for a node that is generating. The canvas keeps a record of the removal.

Needs: permission to edit canvases in the project.

Ask for it with words like: "remove the generator I added", "delete the empty node".

Parameters

ParameterTypeRequiredDescription
itemIdstringOmit for the open canvas.
nodestringYesNode id or handle (G2, T1, M10). Always explicit: nothing is removed by selection.

Example

  • canvas_remove {"node":"G2"}: removes an empty generator or note; media is never deleted.

canvas_import ​

Copies elements from another canvas into this one: a whole folder (with everything inside), a set of nodes (with what hangs from them), or the entire source canvas wrapped in a new folder. Same media, fresh ids, inner wires kept. Returns the new ids.

Needs: permission to edit canvases in the project.

Ask for it with words like: "copy from another canvas", "bring that folder here".

Parameters

ParameterTypeRequiredDescription
itemIdstringDestination canvas (item id). Omit for the open canvas.
sourceItemIdstringYesCanvas to copy from (item id).
folderIdstringA folder in the source canvas to copy as a whole.
elementIdslist of stringSpecific source node ids to copy (with their contents).
namestringName for the wrapping folder (whole-canvas copies) or for the copied folder.
targetFolderIdstringFolder of the destination canvas to drop into (default: root).
atobject (x, y)Where to land; default: to the right of what is there.

Example

  • canvas_import {"sourceItemId":"<itemId>","folderId":"<folderId>"}: copies a folder with everything inside, fresh ids.

canvas_place_asset ​

Brings an asset onto the canvas as a copy: its frame with the media, generators and wires inside, laid out as authored (an older asset comes as a blue frame with its media on a grid). Lands in the folder the user is looking at (or folderId), to the right of what is there unless at is given. A copy, never a link: editing it here changes nothing at the source. Every media inside is a node to wire with canvas_connect.

Needs: permission to edit canvases in the project.

Ask for it with words like: "place the asset", "bring the character sheet".

Parameters

ParameterTypeRequiredDescription
itemIdstringOmit for the open canvas.
assetstringYesAsset id from canvas_assets.
folderIdstringFolder of the canvas to drop into (default: the one the user is looking at, else root).
atobject (x, y)Top-left position; default: to the right of what is there.

Example

  • canvas_place_asset {"asset":"Amy"}: the asset as a frame with its media and wires.

canvas_place_media ​

Puts an existing media (a revision of another stage from production_revisions, a file from another canvas from canvas_lookup) on the ITEM canvas as a media node: same media, new node, nothing copied or deleted. This is how a source stage's playblast or storyboard reaches the canvas you generate on; then wire it with canvas_connect. Lands in folderId (or the folder the user is looking at), to the right of what is there unless at is given.

Needs: permission to edit canvases in the project.

Ask for it with words like: "put the playblast on the canvas", "use the revision media as reference".

Parameters

ParameterTypeRequiredDescription
itemIdstringDestination item canvas. Omit for the open canvas.
mediaIdstringYes
namestringName for the node (references need one to be cited).
folderIdstring
atobject (x, y)

Example

  • canvas_place_media {"mediaId":"<mediaId>","name":"layout v2"}: an existing media as a new node on the item canvas.

Usually followed by: canvas_connect.

canvas_video_cut ​

Cuts a segment out of a canvas video into a new clip: "cut from 1.0 to 2.5 s", "keep only the second shot". Frame-accurate (re-encoded), from 0.05 s to 30 min, the same as the cut panel of the player. The clip lands on the canvas as a new video node next to the source, ready to wire with canvas_connect or feed a generator; the source is untouched and nothing is deleted. Returns the node id, the media id, the length and a link to the file.

Needs: permission to edit canvases in the project.

Ask for it with words like: "cut from", "keep only the second shot", "trim the clip".

Parameters

ParameterTypeRequiredDescription
itemIdstringOmit for the open canvas.
nodestringVideo node id, media id or handle (M2). Omit for the single selected node.
fromnumberYesStart second of the segment.
tonumberYesEnd second of the segment (after from).
namestringName for the new clip (default "<video> cut 1.0-2.5 s").
folderIdstringFolder to drop into (default: the folder of the video).

Example

  • canvas_video_cut {"node":"M2","from":1,"to":2.5}: a new frame-accurate clip on the canvas.

Organize ​

Move nodes, arrange them and group them in frames and folders.

canvas_move ​

Moves one or more nodes: to a position (the first node's top-left corner lands there, the others keep their offsets) or by an offset. Frames carry everything inside them. A node that lands inside a frame becomes its member; one dragged out leaves it. Omit nodes to move the current selection.

Needs: permission to edit canvases in the project.

Ask for it with words like: "move the nodes", "put it next to".

Parameters

ParameterTypeRequiredDescription
itemIdstringOmit for the open canvas.
nodeslist of stringNode ids or handles. Default: the selection.
toobject (x, y)Absolute position for the first node.
byobject (x, y)Offset to apply to all of them.

Example

  • canvas_move {"nodes":["G1"],"by":{"x":400,"y":0}}: moves by an offset.

canvas_arrange ​

Tidies a set of nodes into a grid (default; square-ish, or columns wide), a row or a column, starting at the top-left of the set unless an origin is given. Frames are placed as blocks (their on-screen rect plus the output chip) and carry their contents: pass several frames to order the groups; pass frame to lay out what ONE frame holds inside it (all its members, or the ones in nodes), after which the frame is fitted around them. Omit nodes to arrange the current selection.

Needs: permission to edit canvases in the project.

Ask for it with words like: "tidy", "arrange in a grid", "line them up".

Parameters

ParameterTypeRequiredDescription
itemIdstringOmit for the open canvas.
nodeslist of stringNode ids or handles. Default: the selection (or, with frame, every member of that frame).
framestringFrame id or handle (F1): arrange inside it, from its padded corner, then fit it to the result.
layoutone of "grid", "row", "column"
columnsnumberGrid width in nodes (e.g. 3 for rows of three variants). Default: square-ish.
originobject (x, y)Top-left of the layout. Default: the set's top-left, or the frame's padded corner.
gapnumberPixels between nodes (default 15, or 40 when frames are involved).
padnumberWith frame: padding kept around the content when the frame is fitted (default 40).

Example

  • canvas_arrange {"frame":"F1","layout":"grid"}: arranges the members of a frame.

canvas_create_frame ​

Wraps existing nodes in a new named frame sized to fit them (40 px around, or pad), the way F does on a selection: the nodes become its members, so moving the frame (canvas_move) carries them and canvas_arrange with frame lays them out inside. The nodes must sit in one folder plane. A frame that already holds some of them keeps them and nests in the new one when inside it. Returns the frame id and handle. Omit nodes to frame the current selection.

Needs: permission to edit canvases in the project.

Ask for it with words like: "group these in a frame", "frame the results".

Parameters

ParameterTypeRequiredDescription
itemIdstringOmit for the open canvas.
namestringYesTitle of the frame (shown above its border).
nodeslist of stringNode ids or handles to wrap. Default: the selection.
padnumberPixels between the content and the border (default 40).

Example

  • canvas_create_frame {"name":"Refs","nodes":["M1","M2"]}: a frame sized to those nodes.

canvas_frame_members ​

Adds nodes to a frame and/or takes nodes out of it. A node added from outside the frame is placed inside it, under what it already holds (a node from another folder is brought to the frame's plane); a node taken out is placed just under the frame and belongs to whatever frame contains it there. Frames carry their members either way. The frame is then fitted to its content unless fit is false. Omit add and remove to add the current selection.

Needs: permission to edit canvases in the project.

Ask for it with words like: "add to the frame", "take out of the frame".

Parameters

ParameterTypeRequiredDescription
itemIdstringOmit for the open canvas.
framestringYesFrame id or handle (F1).
addlist of stringNode ids or handles to put in the frame.
removelist of stringMember ids or handles to take out of the frame.
fitbooleanFit the frame to its content afterwards (default true).
padnumberPadding for the fit (default 40).

Example

  • canvas_frame_members {"frame":"F1","add":["M3"]}: adds a node to a frame and refits it.

canvas_fit_frame ​

Resizes a frame to what it holds, with pad pixels around (default 40): it grows to cover members that stick out and shrinks around a sparse group; the corner follows the content. Omit frame when a single frame is selected.

Needs: permission to edit canvases in the project.

Ask for it with words like: "fit the frame", "shrink the frame".

Parameters

ParameterTypeRequiredDescription
itemIdstringOmit for the open canvas.
framestringFrame id or handle (F1). Default: the selected frame.
padnumberPixels between the content and the border (default 40).

Example

  • canvas_fit_frame {"frame":"F1"}: resizes a frame to its content.

canvas_folder_to_frame ​

Turns a folder into a frame on its parent's plane so what it held is visible without entering it: the content keeps its layout, ids, media, names, stars, prompts, settings and wires, and the folder's id, name and star become the frame's. With recursive, the folders inside become nested frames too, so every group is visible at once. Lands at at, else where the folder card was when that touches nothing, else to the right of everything on the plane (never overlapping; canvas_arrange the frames afterwards). Reversible with canvas_frame_to_folder. Anyone looking inside that folder should go up one level.

Needs: permission to edit canvases in the project.

Ask for it with words like: "open the folder as a frame", "make the folder visible".

Parameters

ParameterTypeRequiredDescription
itemIdstringOmit for the open canvas.
folderstringYesFolder id or handle (D1).
recursivebooleanAlso turn the folders inside it into frames, nested (default false).
atobject (x, y)Top-left of the frame on the parent plane.
padnumberPixels between the content and the border (default 40).

Example

  • canvas_folder_to_frame {"folder":"D1"}: the folder becomes a frame on its parent plane.

canvas_frame_to_folder ​

The reverse of canvas_folder_to_frame: a frame becomes a folder (same id, name and star) holding everything that was inside it, layout intact; the folder card sits where the frame's corner was. With recursive, the frames inside become folders inside it. Nothing is lost: ids, media, names, prompts, settings and wires stay.

Needs: permission to edit canvases in the project.

Ask for it with words like: "collapse the frame into a folder".

Parameters

ParameterTypeRequiredDescription
itemIdstringOmit for the open canvas.
framestringYesFrame id or handle (F1).
recursivebooleanAlso turn the frames inside it into folders (default false).

Example

  • canvas_frame_to_folder {"frame":"F1"}: the frame becomes a folder with the same id.

canvas_add_folder ​

Creates a folder on the canvas: in the folder the user is looking at (or parentFolderId), to the right of what is there unless at is given. Folders are places to navigate into, never geometry. Returns the folder id: pass it as folderId to the tools that add nodes, or fill it with canvas_move_to_folder.

Needs: permission to edit canvases in the project.

Ask for it with words like: "create a folder".

Parameters

ParameterTypeRequiredDescription
itemIdstringOmit for the open canvas.
namestringYesName of the folder.
parentFolderIdstringFolder to create it inside (default: the one the user is looking at, else root).
atobject (x, y)Top-left position; default: to the right of what is there.

Example

  • canvas_add_folder {"name":"Layout from Storyboard"}: a folder to drop nodes into.

Usually followed by: canvas_move_to_folder.

canvas_move_to_folder ​

Moves nodes into a folder of the canvas, or back to the root when folder is omitted. A frame carries everything inside it; a folder carries its contents. The nodes keep their offsets to each other and land to the right of what the folder already holds unless at is given. Wires are kept, even when they now run between folders. Omit nodes to move the current selection.

Needs: permission to edit canvases in the project.

Ask for it with words like: "move into the folder", "back to the root".

Parameters

ParameterTypeRequiredDescription
itemIdstringOmit for the open canvas.
nodeslist of stringNode ids or handles. Default: the selection.
folderstringFolder id or handle (D1). Omit to move to the root of the canvas.
atobject (x, y)Top-left of the group inside the folder; default: to the right of what is there.

Example

  • canvas_move_to_folder {"nodes":["M1"],"folder":"D1"}: moves nodes into a folder.

Generate ​

Run generators and estimate what a batch costs in tokens.

canvas_generate ​

Runs a generator, image or video: optionally writes a new prompt (validated like canvas_write_prompt), then creates the result placeholder(s) on the canvas and starts the generation on the same queue the Generate button uses. Returns the queue id and an estimated cost in euros. Video nodes (Seedance, MiniMax, Veo, Kling, p-video) run from their wiring: first/last frame, reference video, looks, sketches, audio, in standard mode (multi-shot plans and timed steps are authored on the canvas and are refused here). Follow up with canvas_generation_status (wait: true parks until it finishes): it brings each finished result and a link to its file. One call = one generation: never call it again for the same request unless the person asks. If it fails, nothing was queued and the error says why (usually a permission the person lacks): report it and stop, do not retry.

Needs: permission to edit canvases in the project; spends studio tokens.

Ask for it with words like: "generate", "run the generator", "make an image of", "render the video".

Parameters

ParameterTypeRequiredDescription
itemIdstringOmit for the open canvas.
nodestringGenerator node id or handle (G2). Omit for the selected generator, else the generator you last read, else the one the selected reference feeds. Ignored when model is given.
modelstringONE-CALL SETUP: add a new generator for this model (ids as in canvas_add_generator) instead of using an existing node, wire references into it, write prompt, run. Saves the add/name/connect/write/generate round trips.
referenceslist of string or object (source, name, port, replace)With model or node: what to wire in, in port order. Each entry is a media id (from production_revisions/production_stage: it is placed on the canvas next to the generator), a node id or a handle, or an object { source, name?, port?, replace? }. name is required for citing; port picks a slot (input-3 = VIDEO on Seedance/MiniMax) else the first free one of the right kind.
namestringName for a generator added with model.
folderIdstringFolder for a generator added with model (default: the one the user is looking at).
promptstringNew prompt to write before generating (validated against the card and the wiring). Omit to run the prompt the node already has. With model/references and no prompt, nothing runs: the reply brings the card, wiring and instructions so you can write one, then call again with node and prompt.
countnumberImages to produce, 1 to 10 (default: the node's own count). Video and utility nodes make one.
aspectRatiostring
resolutionstring
qualityone of "auto", "low", "medium", "high", "xhigh", "max"
imageOptionsobject (size, background, output_format, output_compression, mask_media_id, mask_url)GPT Image nodes only. Options the node stores and sends with every generation.
negativePromptstring
durationSecondsnumberVideo nodes: clip length.

Examples

  • canvas_generate {"node":"G1","prompt":"@Image1 at dusk","count":2}: writes the prompt and queues two results.
  • canvas_generate {"model":"seedance-2.5","references":["M1","M2"],"prompt":"…"}: new generator, wired, queued in one call.

Usually followed by: canvas_generation_status.

canvas_generation_status ​

Where generations started with canvas_generate stand: queued, running, done or failed, with each result (media id, the picture, and a link to the file valid for 24 hours). Pass wait: true and the server parks the call until they finish (up to a minute), so one call replaces a polling loop; call again with wait if it comes back still running. Several queue ids at once with queueIds. The pictures are 512 px thumbnails by default; size "full" (1024 px) or "max" (1536 px) shows the results at a size you can judge (faces, hands, text, artifacts). When the user wants the picture or the file, give them the link: a chat cannot receive the file from here.

Needs: only a signed-in session.

Ask for it with words like: "is it done", "show me the results", "wait for the generation".

Parameters

ParameterTypeRequiredDescription
queueIdstringOne generation.
queueIdslist of stringSeveral generations at once (up to 50).
waitbooleanPark until done (up to ~1 minute) instead of answering at once. Default false.
sizeone of "thumbnail", "full", "max"Size of the result pictures: thumbnail (512 px, default), full (1024 px) or max (1536 px). Larger pictures come in more pages.
imagePagenumberPage of result pictures when they do not all fit one reply (default 1).
itemIdstringOmit for the open canvas.

Example

  • canvas_generation_status {"queueId":"<queueId>","wait":true}: parks up to 55 s and returns the pictures.

production_estimate ​

What a batch of generations would cost BEFORE queuing it, from the same estimators the queue charges with: per line and in total, in the studio's TOKENS (the only unit the person sees; never euros). Call it before a batch and tell the person the figure. It is information, not a brake: there is no spending cap unless the person gave one, and the queue takes everything at once (no artificial batches).

Needs: only a signed-in session.

Ask for it with words like: "how much would it cost", "estimate the batch".

Parameters

ParameterTypeRequiredDescription
generationslist of object (model, count, durationSeconds, resolution, imageSize, quality, aspectRatio, label)YesOne entry per model: { model, count, durationSeconds? (video), resolution? (video: 480p/720p/1080p, 768P/1080P for MiniMax), imageSize? (image: 1K/2K/4K), quality? (gpt-image: low/medium/high), aspectRatio?, label? }.

Example

  • production_estimate {"generations":[{"model":"seedance-2.5","count":12,"durationSeconds":5,"resolution":"720p"}]}: tokens per line and in total.

Production ​

Read and update the production: stages, revisions, threads, statuses and priorities.

production_locate ​

What an Animanager link points at. Call it FIRST with any link the person pastes (https://animanager.com/?studio=...&project=...&space=...&item=...&task=..., a /canvas/task/... or /canvas/item/... page, a link with &msg=): it answers with the level the link opens (studio, project, space, item or stage), its name and canonical id, every level above it with names and ids, the message it points at if any, and the tool to call next. Every id parameter of the other tools also accepts such a link or a short id, so this is for finding out where a link leads before working there. Reading only.

Needs: only a signed-in session.

Ask for it with words like: "this link", "what does this URL open", "where am I".

Parameters

ParameterTypeRequiredDescription
linkstringYesThe Animanager link as pasted. A short id or slug works too when type says what it is.
typeone of "studio", "project", "space", "item", "stage"Only for a bare id or slug: what it is. Omit for a link (it says by itself).

Example

  • production_locate {"link":"https://animanager.com/?studio=…&item=…&task=…"}: what the link opens, ids of every level, and the next tool.

Usually followed by: production_stage, production_item, production_space.

production_stage ​

THE entry point for production work: one stage of an item (a task) with its status, who is assigned to it (the artists on its timeline blocks, by the display name a @mention takes), the studio's status list, its revisions (newest first, each with media links and thumbnails), a page of its thread (chat, comments, revisions, with authors; a REVIEW FEEDBACK comes with its version, media, frame, comment, drawn layers as text, and a picture of the frame with the drawings on top), its pipeline METADATA (the fields the pipeline shows on this stage, with their values: frame ranges, lengths, flags, notes), and a summary of the two canvases around it: the ITEM canvas (where the work is done) and the stage's references canvas. All four sources matter equally: revisions, thread, item canvas, stage canvas. If a stage has no revisions but has a canvas or a conversation, that is the material. Pass the taskId from production_space, production_item or the URL. TEXT: complete by default (textMode "full"): revision bodies, thread messages and metadata values come verbatim with their line breaks, long ones in a BEGIN/END block that names the source and its ids. textMode "summary" gives one-line excerpts, each marked "[shortened: …]" when cut. A reply too long for one message is paged: its last line gives a cursor; call again with the same arguments plus cursor for the rest. Nothing is ever dropped. Rules: work happens on the ITEM canvas; never cite references that are not wired; media is never deleted; publish only to the stage the person named.

Needs: only a signed-in session.

Ask for it with words like: "the stage", "status of the task", "what is on this stage", "latest revision", "the thread".

Parameters

ParameterTypeRequiredDescription
taskIdstringYesThe stage instance UUID or an Animanager URL that identifies it.
threadnumberHow many thread messages to include (default 25, max 100). production_thread pages further back.
textModeone of "full", "summary"full (default): every revision body, thread message and metadata value complete and verbatim, line breaks preserved. summary: one-line excerpts (300 characters for revisions and metadata, 600 for messages), each marked "[shortened: first N of M characters; full text: …]" when cut.
cursorstringContinuation cursor from the last line of the previous reply, when its text did not fit one message. Repeat the other arguments unchanged. Pictures travel with the first page only.
imagesbooleanAttach the latest revision's media as pictures (default true).
sizeone of "thumbnail", "full", "max"Size of the pictures: thumbnail (512 px, default), full (1024 px) or max (1536 px) to judge them closely.
imagePagenumberPage of pictures when they do not all fit one reply (default 1).
feedbackImagesone of "recent", "all", "none"Which review feedbacks get their picture attached (the frame with the drawings, texts and references on top): recent (default, the 6 most recent of this page), all, or none (text only). production_feedback gives every feedback of a revision with pictures.

Example

  • production_stage {"taskId":"<taskId>"}: status, statuses, revisions, thread, metadata and both canvases.

Usually followed by: production_revisions, production_thread, canvas_context.

production_item ​

An item (a shot, a character, an asset) with its place (studio, project, space, collection), every stage it has (taskId, status, who is assigned to it, latest revision, pipeline metadata fields with values) and the asset items linked to it. Use it to find the taskId of a stage, or to see where an item stands overall. Metadata values are one-line excerpts here, marked "[shortened: …]" when cut: production_stage with the taskId gives them complete.

Needs: only a signed-in session.

Ask for it with words like: "the item", "the shot", "every stage of".

Parameters

ParameterTypeRequiredDescription
itemIdstringYesItem UUID, short id or Animanager URL.

Example

  • production_item {"itemId":"<itemId>"}: its stages with taskIds and where it stands.

Usually followed by: production_stage, workspace_item_status.

production_space ​

A space (a sequence, a set of characters) with its items and, for each item, its stages with status, assignee, how many revisions and when the last one was posted. Use it to plan a batch: which items have the source stage done and the target stage empty. Space ids come from canvas_list.

Needs: only a signed-in session.

Ask for it with words like: "the sequence", "which items are done", "plan the batch".

Parameters

ParameterTypeRequiredDescription
spaceIdstringYesSpace UUID, short id or Animanager URL.

Example

  • production_space {"spaceId":"<spaceId>"}: items with stages, statuses, revision counts.

Usually followed by: production_item, production_run_job.

production_revisions ​

The revisions of one stage (taskId) or of every stage of an item (itemId), newest first: version number, author, status, time spent, the body text, each media with a link valid 24 hours, thumbnail and media id, and the managed work files (primary work file, package state; versionId for production_revision_files and workspace_get_files). With images: true the pictures come as 512 px thumbnails, or larger with size "full" (1024 px) or "max" (1536 px) when you have to judge them. Media ids are what canvas_place_media and production_publish_revision take. TEXT: complete by default (textMode "full"): revision bodies, thread messages and metadata values come verbatim with their line breaks, long ones in a BEGIN/END block that names the source and its ids. textMode "summary" gives one-line excerpts, each marked "[shortened: …]" when cut. A reply too long for one message is paged: its last line gives a cursor; call again with the same arguments plus cursor for the rest. Nothing is ever dropped.

Needs: only a signed-in session.

Ask for it with words like: "revisions", "versions", "history of the stage", "media of v3".

Parameters

ParameterTypeRequiredDescription
taskIdstringA stage instance UUID or Animanager URL.
itemIdstringAn item UUID, short id or Animanager URL (all its stages).
limitnumberAt most this many (default 50).
textModeone of "full", "summary"full (default): every revision body, thread message and metadata value complete and verbatim, line breaks preserved. summary: one-line excerpts (300 characters for revisions and metadata, 600 for messages), each marked "[shortened: first N of M characters; full text: …]" when cut.
cursorstringContinuation cursor from the last line of the previous reply, when its text did not fit one message. Repeat the other arguments unchanged. Pictures travel with the first page only.
imagesbooleanAttach the media as pictures (default false; production_stage already shows the latest).
sizeone of "thumbnail", "full", "max"Size of the pictures: thumbnail (512 px, default), full (1024 px) or max (1536 px) to judge them closely.
imagePagenumber

Example

  • production_revisions {"taskId":"<taskId>","images":true}: every revision with bodies, media links and thumbnails.

Usually followed by: canvas_place_media, production_publish_revision.

production_thread ​

One page of a conversation: the thread of a studio, project, space, item or stage (for a stage, id is the taskId). Messages come oldest first with author, type (chat, comment, revision), status and attached media ids. A REVIEW FEEDBACK (a comment made in review mode) comes whole: the version, media and frame it targets, its comment, every layer in text (strokes with colour and where they are, texts with position and content, pasted reference images with their media ids) and a PICTURE of the frame with the drawings, texts and references on top, as the reviewer saw it (the most recent 6 per page; production_feedback for all of a revision). hasMoreBefore says whether to page back with anchorId = the first message id and direction "before". Two kinds of paging, both explicit: anchorId/direction fetch OTHER messages; cursor continues the TEXT of this same page when it did not fit one reply. TEXT: complete by default (textMode "full"): revision bodies, thread messages and metadata values come verbatim with their line breaks, long ones in a BEGIN/END block that names the source and its ids. textMode "summary" gives one-line excerpts, each marked "[shortened: …]" when cut. A reply too long for one message is paged: its last line gives a cursor; call again with the same arguments plus cursor for the rest. Nothing is ever dropped.

Needs: only a signed-in session.

Ask for it with words like: "read the conversation", "earlier messages", "what did they say".

Parameters

ParameterTypeRequiredDescription
typeone of "studio", "project", "space", "item", "stage"Yes
idstringYesUUID, short id or Animanager URL for the selected type. For a stage, this is its taskId.
anchorIdstringA message id to page from.
directionone of "before", "after", "around"Default before.
limitnumberMessages per page (default 25, max 100).
textModeone of "full", "summary"full (default): every revision body, thread message and metadata value complete and verbatim, line breaks preserved. summary: one-line excerpts (300 characters for revisions and metadata, 600 for messages), each marked "[shortened: first N of M characters; full text: …]" when cut.
cursorstringContinuation cursor from the last line of the previous reply, when its text did not fit one message. Repeat the other arguments unchanged. Pictures travel with the first page only.
feedbackImagesone of "recent", "all", "none"Which review feedbacks get their picture attached (the frame with the drawings, texts and references on top): recent (default, the 6 most recent of this page), all, or none (text only). production_feedback gives every feedback of a revision with pictures.
sizeone of "thumbnail", "full", "max"Width of the feedback pictures: full (1024 px, also the default) or max (1536 px).
imagePagenumberPage of pictures when they do not all fit one reply (default 1).

Examples

  • production_thread {"type":"stage","id":"<taskId>","anchorId":"<messageId>","direction":"before"}: the page before that message.
  • production_thread {"type":"stage","id":"<taskId>","feedbackImages":"all","size":"max"}: every review feedback of the page with its picture.

Usually followed by: production_feedback.

production_stage_tables ​

The data tables of one stage's revisions, newest first: for each CSV a revision carries, its revision (version, messageId, versionId, date), file name, tableKey, status (ready, or invalid with the errors), the full schema (every column with label, type, currency, decimals, aggregate, better, thresholds) and the rows as JSON arrays in column order (numbers as numbers, empty cells null). Use it to read earlier days of a tracking table before deciding what to do next; tableKey keeps to one kind of table. With metric (a numeric column key) it returns that column over time instead: one series per row, oldest first, with the latest value, its change against the previous table and 7 back, whether that is better or worse, and the table total. Reading only; same access as production_stage. DATA TABLES: attach a CSV (UTF-8, comma separated, header row) and optionally a schema file with the same base name and .table.json (seguimiento.csv + seguimiento.table.json: title, tableKey, rowKey, columns with type text/long_text/number/integer/currency/percent/date/status/media/link, currency, decimals, aggregate, better, thresholds, rowStatusColumn, hierarchy, timeColumn); Animanager shows it as a table with totals, colours and changes against the previous revision's table of the same tableKey. Limits: 5 MB, 5000 rows, 80 columns. The reply lists any problem; the revision still publishes with the CSV as a plain file, so fix and publish again. Contract: docs/data-tables.md in the Animanager repository; production_stage_tables reads the tables back.

Needs: only a signed-in session.

Ask for it with words like: "data table", "read the table", "results of earlier days", "csv of the revisions", "tracking table", "yesterday's numbers", "compare with the previous report", "over time", "trend", "cost per result per ad", "improving or getting worse".

Parameters

ParameterTypeRequiredDescription
taskIdstringYesThe stage instance UUID or an Animanager URL that identifies it.
tableKeystringOnly tables with this tableKey (the schema's tableKey, or the CSV base name without .csv).
limitnumberAt most this many tables (default 10, max 50; with metric the last this many, default 30, max 90).
rowsbooleanInclude the rows (default true). false lists the tables with their schema only.
metricstringA numeric column key (cost_per_result): that column of the tables of one kind (tableKey, default the newest kind) over time, a series per row (rowKey), null where a row or the column is missing that day. For "how does X evolve", "which ads improve".
cursorstringContinuation cursor from the last line of the previous reply, when its text did not fit one message. Repeat the other arguments unchanged.

Examples

  • production_stage_tables {"taskId":"<taskId>","tableKey":"seguimiento","limit":7}: the last seven tables of that kind with schema and rows.
  • production_stage_tables {"taskId":"<taskId>","metric":"cost_per_result","limit":14}: that column over the last 14 tables, one series per row, with changes and whether each is better or worse.
  • production_stage_tables {"taskId":"<taskId>","rows":false}: which tables the stage has, schema only.

Usually followed by: production_publish_revision.

production_feedback ​

Every review feedback of one revision (versionId, from production_revisions or production_stage) or one feedback message (messageId, from the thread), complete: which version, media and frame each one targets, the reviewer's comment, and every layer as data (strokes with colour and where they are, texts with position and content, pasted reference images with their media ids) and as a PICTURE: the frame of the media with the drawings, texts and references composed on top, exactly as the reviewer saw it, one per frame the layers land on. Reference images are media of the message too (canvas_media, canvas_place_media take their ids). Reading only.

Needs: only a signed-in session.

Ask for it with words like: "the review", "what did the client draw", "feedback on v3", "the notes on the frame", "annotations", "scribbles", "what did they mark".

Parameters

ParameterTypeRequiredDescription
versionIdstringThe revision whose feedbacks to read (versionId in production_stage and production_revisions).
messageIdstringOne feedback message (id in production_thread), instead of a whole revision.
sizeone of "thumbnail", "full", "max"Width of the pictures: full (1024 px) or max (1536 px, default). thumbnail composes at 1024 px too: strokes are unreadable smaller.
imagesbooleanAttach the composed pictures (default true).
imagePagenumberPage of pictures when they do not all fit one reply (default 1).
textModeone of "full", "summary"full (default): comments and texts verbatim. summary: one line per feedback.
cursorstringContinuation cursor from the last line of the previous reply.

Examples

  • production_feedback {"versionId":"<versionId>"}: every feedback of that revision: version, media, frame, comment, layers, and the frame with the drawings on top.
  • production_feedback {"messageId":"<messageId>","size":"max"}: one feedback message with its picture at 1536 px.

Usually followed by: canvas_place_media, production_post_comment.

production_publish_revision ​

Publishes a revision on a stage, signed by the studio's bot "Anibot", with a summary, optional media and a status. The body is exactly your summary plus the report bullets: never put the person's name in it, the app shows "Anibot for <person>" from the record. Media is optional: a revision with a summary and no media is fine, as when a person posts one (unless the stage requires media: production_stage shows it); never attach unrelated media, such as the screenshot of a report, just to have an attachment. STRICTLY only when the person asked to publish in THIS request: set userAskedToPublish true only then; never on your own initiative. If they did not ask, leave the work on the canvas and ask whether to publish, and with which status. STATUS: if none was named, ask which one IN YOUR FIRST REPLY, before any work; no answer or "go ahead" means no statusId (the stage keeps its status). A status change WITHOUT a revision is production_post_comment, never an empty revision. Overwriting a human revision is normal: no warnings. Costs in TOKENS, never euros.

Needs: an explicit request by the person in this turn; permission to post revisions on the stage.

Ask for it with words like: "publish", "post the revision", "deliver v2", "publish a table", "publish the csv", "daily report table".

Parameters

ParameterTypeRequiredDescription
taskIdstringYesThe stage UUID or Animanager URL to publish to. Only the one the person named.
mediaIdslist of stringMedia ids of the result (from the canvas or from other revisions), in display order. Optional: omit or [] for a text-only revision, which then needs a summary.
fileslist of stringAbsolute paths of files on this computer to attach after mediaIds (mediaIds may then be []; a frame or sheet saved by canvas_video_frame / canvas_video_sheet, a render, a data table): uploaded as attachments of this post, never put on a canvas. DATA TABLES: attach a CSV (UTF-8, comma separated, header row) and optionally a schema file with the same base name and .table.json (seguimiento.csv + seguimiento.table.json: title, tableKey, rowKey, columns with type text/long_text/number/integer/currency/percent/date/status/media/link, currency, decimals, aggregate, better, thresholds, rowStatusColumn, hierarchy, timeColumn); Animanager shows it as a table with totals, colours and changes against the previous revision's table of the same tableKey. Limits: 5 MB, 5000 rows, 80 columns. The reply lists any problem; the revision still publishes with the CSV as a plain file, so fix and publish again. Contract: docs/data-tables.md in the Animanager repository; production_stage_tables reads the tables back.
summarystringWhat was made and how, for the people on the stage. Short. The body is this summary plus the report bullets, exactly as written (no name prefix). Required when there is no media.
reportobject (wallTimeMinutes, generations, tokens, sources)Account of the work, rendered as bullets after the summary (wall time, generations per model, tokens used, sources): { wallTimeMinutes?, generations?: [{ model, count, tokens? }], tokens?, sources?: string[] }. Tokens as canvas_generate reported them.
statusIdstringThe status the person chose (ids in production_stage). Omit to keep the stage's current status (when they did not answer or told you to go ahead).
userAskedToPublishbooleanYestrue ONLY if the person explicitly asked to publish in this request.

Examples

  • production_publish_revision {"taskId":"<taskId>","mediaIds":["<mediaId>"],"summary":"Layout pass","statusId":"<statusId>","userAskedToPublish":true}: a revision signed Anibot with those media.
  • production_publish_revision {"taskId":"<taskId>","summary":"- Fixed: bullets show again in the chat","statusId":"<statusId>","userAskedToPublish":true}: a text-only revision (a fix report): no media needed.
  • production_publish_revision {"taskId":"<taskId>","mediaIds":[],"files":["/abs/seguimiento.csv","/abs/seguimiento.table.json"],"summary":"Results of 30 Sep","userAskedToPublish":true}: a revision with a data table; the reply says whether the CSV reads as a table.

Usually followed by: production_stage.

production_post_message ​

Posts a chat message as the bot ("Anibot") in a thread: studio, project, space, item or stage (id = taskId). Optionally with media ids attached. For telling a team what was done or asking a question there; not for publishing work, which is production_publish_revision, and not for changing a stage's status, which is production_post_comment (a chat message never carries a status). To tag a team member write @ followed by their display name exactly as Animanager shows it (e.g. "@Ana García", names with spaces work); the server turns it into a real tag that notifies them, and the reply says who was tagged and which @names matched nobody. @everyone reaches the whole studio. When answering an agent request (a "/anibot <function> ..." request a host claimed through /v1/agent-requests), pass its requestId so the person's replies to this message reach that host.

Needs: permission to post in the thread.

Ask for it with words like: "tell the team", "post in the thread", "tag Ana".

Parameters

ParameterTypeRequiredDescription
typeone of "studio", "project", "space", "item", "stage"Yes
idstringYesUUID, short id or Animanager URL for the selected type.
textstringYes
mediaIdslist of string
fileslist of stringAbsolute paths of files on this computer to attach after mediaIds (mediaIds may then be []; a frame or sheet saved by canvas_video_frame / canvas_video_sheet, a render): uploaded as attachments of this post, never put on a canvas.
requestIdstringThe agent request (UUID) this message belongs to; replies to it are routed to the host holding that request.

Example

  • production_post_message {"type":"stage","id":"<taskId>","text":"@Ana García the layout is up"}: a chat message as Anibot; tags resolve by display name.

Usually followed by: production_post_comment.

production_post_comment ​

Posts a COMMENT on a stage as the bot ("Anibot"): the message type that sets the stage's status WITHOUT publishing a revision. Use it to report progress, to hand the stage over after a publish (e.g. to WFA or LEAD), or to leave a note on the stage; never invent a revision for that. statusId (ids in production_stage) only when the person chose that status: a comment without it changes nothing. The stage status becomes the one of the latest comment or revision that carries a status, as when a person comments. Media ids attach as in production_post_message; @display names tag members the same way. Needs "Post comments" on the project (and "Change status" when statusId is given).

Needs: permission to post comments on the stage (and to change its status when statusId is given).

Ask for it with words like: "set the status", "move the stage to WFA", "change the status without publishing", "leave a comment on the stage", "report progress", "hand over to the lead".

Parameters

ParameterTypeRequiredDescription
taskIdstringYesThe stage UUID or Animanager URL.
textstringThe comment. May be empty when only the status changes.
statusIdstringThe status the person chose (ids in production_stage). Omit to leave the stage status as it is.
mediaIdslist of stringMedia ids to attach, in display order.
fileslist of stringAbsolute paths of files on this computer to attach after mediaIds (mediaIds may then be []; a frame or sheet saved by canvas_video_frame / canvas_video_sheet, a render): uploaded as attachments of this post, never put on a canvas.

Examples

  • production_post_comment {"taskId":"<taskId>","text":"Blocking done, ready for review","statusId":"<statusId>"}: a comment as Anibot that moves the stage to that status, no revision created.
  • production_post_comment {"taskId":"<taskId>","text":"Halfway through the fx pass"}: a comment that leaves the status as it is.

Usually followed by: production_stage.

production_set_metadata ​

Writes pipeline metadata values on a stage (taskId): the fields production_stage and production_item list, by fieldKey. Values belong to the ITEM, so a field shown on several stages has one value; the type is the field's (number, text, long_text, boolean; null clears). ONLY when the person asked to set that metadata in this request; never on your own initiative. Returns the fields as they stand afterwards.

Needs: an explicit request by the person in this turn.

Ask for it with words like: "set the frame range", "write the metadata", "fill the pipeline field".

Parameters

ParameterTypeRequiredDescription
taskIdstringYesThe stage instance UUID or Animanager URL whose fields to write.
valueslist of object (fieldKey, value)YesOne entry per field: { fieldKey, value }.

Example

  • production_set_metadata {"taskId":"<taskId>","values":[{"fieldKey":"frame_end","value":120}]}: writes fields by key; values belong to the item.

production_set_priority ​

Sets the priority of one or several items (shots, assets, ads): 5 very high, 4 high, 3 normal (the default), 2 low, 1 very low. Items are listed by priority first in the tree and grid. ONLY when the person asked to change the priority in this request, or an instruction they gave authorizes it (for example "rate the campaigns"); never on your own initiative. Needs the person's permission to edit those items; nothing is changed if any item is refused. reason (optional, short) is posted as a message in each item's thread signed by Anibot.

Needs: an explicit request by the person in this turn.

Ask for it with words like: "set the priority", "make it high priority", "rate the campaigns", "lower the priority", "prioritize these shots".

Parameters

ParameterTypeRequiredDescription
itemIdstringOne item: its UUID or Animanager link. Use itemIds for several.
itemIdslist of stringSeveral items (UUIDs or links), at most 200.
priorityintegerYes5 very high, 4 high, 3 normal, 2 low, 1 very low.
reasonstringOptional short reason (at most 500 characters), posted in each item's thread as Anibot.

Examples

  • production_set_priority {"itemId":"<itemId>","priority":5,"reason":"Best CTR this week"}: very high; the reason goes to the item thread as Anibot.
  • production_set_priority {"itemIds":["<itemId>","<itemId>"],"priority":2}: several items to low at once.

Usually followed by: production_space.

production_run_job ​

Runs "produce stage B from stage A" for a whole space as a SERVER JOB instead of doing it by hand item by item: for every item whose source stage has a revision with media and that has the target stage, the server places the source media on the item canvas (in a folder), adds the image generator (imageModel) wired to the stills, writes promptTemplate, generates, then the video generator (videoModel) wired to the still and the source clip, generates, and publishes as the bot when publish.statusId is given. Zero agent round trips per item. Use it for batches and for anything repetitive; keep the hand tools for work that needs judgment per item. First call with estimateOnly true and tell the person the figure; run only after they agree. scaffoldOnly prepares the canvases (references placed, generators wired, no prompt, nothing generated) so prompts can be written by hand or with canvas_generate afterwards.

Needs: permission to edit canvases in the project; spends studio tokens.

Ask for it with words like: "do it for the whole space", "produce layout from storyboard", "batch".

Parameters

ParameterTypeRequiredDescription
spaceIdstringYesSpace UUID, short id or Animanager URL.
sourceStageIdstringYesStage id of the source (production_space shows stage ids per item).
targetStageIdstringYesStage id to produce.
imageModelstringImage model for the still(s): nano-banana-2, gpt-image-2.5-sunburst, gpt-image-2.5-flare, gpt-image, seedream-pro… Omit to skip the image step.
videoModelstringVideo model for the clip: seedance-2.5, minimax-h3-max, veo-3.1, kling-motion… Omit to skip the video step.
promptTemplatestringThe prompt written on every item's generator, citing references the way the model expects (@Image1, "Video 1"). Required unless scaffoldOnly.
videoPromptTemplatestringPrompt for the video generator when it should differ from promptTemplate.
scaffoldOnlybooleanPrepare canvases only; generate nothing.
publishStatusIdstringPublish each result as a revision with this status, signed by the bot. ONLY if the person asked to publish.
itemIdslist of stringLimit to these items (default: every qualifying item of the space).
countnumberStills per item, 1 to 4 (default 1).
estimateOnlybooleanDo not create the job: report which items would run, which are skipped and why, and the cost.

Example

  • production_run_job {"spaceId":"<spaceId>","sourceStageId":"<stageId>","targetStageId":"<stageId>","imageModel":"nano-banana-2","promptTemplate":"…","estimateOnly":true}: which items would run and the cost; run without estimateOnly.

Usually followed by: production_job_status.

production_job_status ​

Where a job started with production_run_job stands: overall status, counts, and every item with its step (placing, generating image, generating video, published, skipped with reason, failed with error). Pass wait true to park up to a minute before answering. jobId omitted with spaceId lists the recent jobs of the space.

Needs: only a signed-in session.

Ask for it with words like: "how is the job going", "stop the job".

Parameters

ParameterTypeRequiredDescription
jobIdstring
spaceIdstringWith no jobId: list recent jobs for this space UUID, short id or Animanager URL.
waitboolean
cancelbooleanStop the job (items not started are cancelled; running generations finish on the canvas).

Example

  • production_job_status {"jobId":"<jobId>","wait":true}: status per item; cancel: true stops it.

Files ​

Published work files and the local workspace of the Desktop Helper.

production_revision_files ​

The managed work files of one revision (its package): the primary work file(s), the files and exports it published with their paths, sizes and hashes, the files that changed in that revision versus the previous one, and the folder they belong to. With links true each file gets a download link (valid 24 hours) for use outside the workspace; Get Files into the workspace is workspace_get_files. versionId comes from production_revisions or production_stage. Reading only.

Needs: only a signed-in session.

Ask for it with words like: "files of the revision", "what did v3 publish", "download the package", "work file", "download the work file", "download the blend", "link to the workfile", "which blender saved the work file", "blender the blend was made with".

Parameters

ParameterTypeRequiredDescription
versionIdstringYesThe revision's version UUID (production_revisions shows it as versionId).
linksbooleanInclude a download link per file (default false).
cursorstringContinuation cursor from the last line of the previous reply.

Examples

  • production_revision_files {"versionId":"<versionId>"}: primaries, files, exports, the changed files of that revision, and the Blender, addon and Helper it was published with.
  • production_revision_files {"versionId":"<versionId>","links":true}: with a 24 h link per file.

Usually followed by: workspace_get_files, workspace_blender.

production_stage_files ​

The files currently published on a stage across all its revisions, as Get Files sees them: one section at a time (primary work files, files, exports), paged explicitly with offset and limit, each with path, size, version and the revision it came from. Start with the summary (no section) to see the counts. Reading only.

Needs: only a signed-in session.

Ask for it with words like: "files on the stage", "current files", "what is published".

Parameters

ParameterTypeRequiredDescription
taskIdstringYesThe stage UUID or Animanager URL.
sectionone of "primary", "files", "exports"Which section to list. Omit for the counts of all three.
offsetnumberFirst row to return (default 0).
limitnumberRows per page (default 200, max 1000).

Examples

  • production_stage_files {"taskId":"<taskId>"}: counts per section.
  • production_stage_files {"taskId":"<taskId>","section":"files","offset":0,"limit":200}: one page of a section.

production_stage_inputs ​

The pipeline inputs a stage consumes (its dependencies: the upstream stages and assets wired into it in the pipeline), each with its consumption mode (linked or appended collections, files, continuation), the master version that would be fetched (pinned or latest), and whether it can be fetched now and why not. Their ids are what workspace_get_files takes as inputs. Reading only.

Needs: only a signed-in session.

Ask for it with words like: "dependencies", "inputs of the stage", "what does it consume", "upstream", "consumption mode".

Parameters

ParameterTypeRequiredDescription
taskIdstringYesThe stage UUID or Animanager URL.

Example

  • production_stage_inputs {"taskId":"<taskId>"}: each input with mode, master version and whether it can be fetched.

Usually followed by: workspace_get_files.

workspace_status ​

The local workspace of a stage on this computer, through the Helper: its folder, whether it exists and is prepared, how many files it holds, its state, the layout (where the work file goes and what its name must be, files/, exports/, the reserved .animanager folder), a work-file package another agent may have in progress, and the freshness of its pipeline inputs (up to date, outdated, never downloaded, broken). Needs the Helper running here. Reading only.

Needs: the Animanager Helper running on this computer.

Ask for it with words like: "local workspace", "where is the folder", "where do I save my files", "where does the work file go", "is it up to date locally", "inputs outdated", "is someone else publishing".

Parameters

ParameterTypeRequiredDescription
taskIdstringYesThe stage UUID or Animanager URL.

Example

  • workspace_status {"taskId":"<taskId>"}: the folder, its layout (work file name, files/, exports/), its state and the freshness of its inputs.

Usually followed by: workspace_prepare, workspace_get_files, workspace_changes.

workspace_locate ​

Which stage a local path belongs to, through the Helper: from the .animanager marker of the workspace folder that contains it, or, inside the workspace base folder, from the server's folder structure. Returns the stage (taskId, itemId, names), its workspace folder, and where the path sits in it (the root, files/, exports/, or a subfolder that should not exist). A path inside the workspace base that no stage owns was created by hand: do not work there. Reading only.

Needs: the Animanager Helper running on this computer.

Ask for it with words like: "which stage is this folder", "what stage does this path belong to", "am I in the right folder", "folder created by hand".

Parameters

ParameterTypeRequiredDescription
pathstringYesAn absolute local path (a folder or a file) on the computer running the Helper.

Examples

  • workspace_locate {"path":"/Users/me/Animanager/Studio/Proj/Shots/Shot 010/Layout"}: the stage that owns the path and where the path sits in its layout.
  • workspace_locate {"path":"/Users/me/Animanager/Studio/Proj/Shots/agent-42"}: no stage: a folder created by hand inside the workspace base.

Usually followed by: production_stage, workspace_status.

workspace_item_status ​

Every stage of an item with its local workspace folder on this computer, through the Helper: the taskId and name of each stage, its absolute folder under the workspace base, whether it exists and is prepared, its canonical base name and work-file families, and the item folder the stage folders share. One call instead of reading each stage or walking the disk. Needs the Helper running here (1.0.54+). Reading only: nothing is created.

Needs: the Animanager Helper running on this computer.

Ask for it with words like: "every stage folder of the item", "where are the workspaces of this item", "which stage folders exist", "item folder".

Parameters

ParameterTypeRequiredDescription
itemIdstringYesThe item UUID, short id or Animanager URL.

Example

  • workspace_item_status {"itemId":"<itemId>"}: each stage with its folder, whether it exists, its base name and families, and the item folder they share.

Usually followed by: workspace_status, workspace_prepare.

workspace_prepare ​

Creates the local workspace folder of a stage on this computer through the Helper: the folder in the studio's structure under the workspace base, its files/ and exports/ subfolders, and the starter work file when the stage has a work-file family with a starter and nothing published yet and no continuation input. This is the "Local files" button of the stage in the app (the local structure does not exist until someone presses it or calls this): call it before creating any file for a stage whose workspace_status says the folder does not exist. Idempotent: an existing workspace is left as it is. Returns the local path and the layout: where the work file goes and what it must be called, where the other files go, and the reserved folder.

Needs: the Animanager Helper running on this computer.

Ask for it with words like: "prepare the workspace", "local files", "local files button", "open local folder", "create the local folder", "create the local structure", "the folder does not exist yet", "no local folder", "create the work file", "where do I save my files", "set up the folder".

Parameters

ParameterTypeRequiredDescription
taskIdstringYesThe stage UUID or Animanager URL.
createInitialWorkFilebooleanCreate the starter work file when nothing is published yet (default true).
openFolderbooleanOpen the folder in the file manager (default false).

Example

  • workspace_prepare {"taskId":"<taskId>"}: the folder with its structure (the app's Local files), its starter file when the family has one, and the layout: where to save what.

Usually followed by: workspace_get_files.

workspace_get_files ​

Get Files into the local workspace through the Helper. Three forms. A revision: versionId (from production_revisions) downloads that revision's work files into the stage's workspace folder, optionally only some paths, and with inputs also its pipeline inputs. The stage's published files: taskId plus latest true brings the current masters of the stage across every section (work files, files/, exports/) in one call, the way "Get all files" on the stage does. A stage's inputs: taskId plus inputs (ids from production_stage_inputs) fetches the masters of those dependencies the way "Get files" on the stage does. Before writing anything the revision and latest forms inspect the workspace: files already identical are skipped, and files that differ locally are CONFLICTS: the call stops and lists them unless proceed is true, and then the local file is never overwritten (the new one lands as a safe copy next to it, and the reply names the copies). Long downloads return a jobId to follow with workspace_job_status.

Needs: the Animanager Helper running on this computer.

Ask for it with words like: "get files", "get all files", "get the files of the stage", "download the work file", "download the workfile of the stage", "download the revision", "bring the published files", "fetch the inputs", "bring v2 locally", "update dependencies".

Parameters

ParameterTypeRequiredDescription
taskIdstringThe stage UUID or Animanager URL (required for the latest and inputs forms; derived from the revision otherwise).
versionIdstringThe revision to get (version UUID).
latestbooleanWith taskId: get the files currently published on the stage, every section, in one call.
pathslist of stringOnly these relative paths of the revision (default: every file of the revision).
inputslist of stringPipeline inputs to fetch too (sourceUpstreamId values from production_stage_inputs). With no versionId this is the whole request.
proceedbooleanDownload even when conflicts were found (local files are kept; the new versions become safe copies).
openFolderbooleanOpen the folder in the file manager when done (default false).

Examples

  • workspace_get_files {"versionId":"<versionId>"}: that revision into the workspace; conflicts stop it.
  • workspace_get_files {"taskId":"<taskId>","latest":true}: the files published on the stage, every section, in one call.
  • workspace_get_files {"versionId":"<versionId>","proceed":true}: download anyway, local files kept as they are.
  • workspace_get_files {"taskId":"<taskId>","inputs":["stage:<taskId>"]}: the masters of those pipeline inputs.

Usually followed by: workspace_job_status, workspace_status.

workspace_changes ​

What changed in the local workspace of a stage since its last published revision, through the Helper: every candidate file with its status (new, changed, unchanged, pending hash, invalid), whether it can be uploaded and whether the app would select it by default, the primary work file(s), and the files a work file depends on. This is the selection workspace_publish_revision takes as files. Needs the Helper running here. Reading only.

Needs: the Animanager Helper running on this computer.

Ask for it with words like: "what changed locally", "files to upload", "unpublished changes", "select files", "upload work files".

Parameters

ParameterTypeRequiredDescription
taskIdstringYesThe stage UUID or Animanager URL.
cursorstringContinuation cursor from the last line of the previous reply.

Example

  • workspace_changes {"taskId":"<taskId>"}: new, changed and unchanged files with the default selection, and a package another agent has in progress.

Usually followed by: workspace_publish_revision.

workspace_publish_revision ​

Publishes a revision WITH managed work files from the local workspace of this computer, the way the app does with the Helper: stages the selected local files as a work-file package, reserves the revision on the stage in the name of the PERSON the Helper is signed in as (with an agent record naming this client), attaches previews (review media: media ids from the canvas, or local files uploaded first) and attachments, and lets the Helper upload the work files in the background. asBot true signs the revision as the studio's bot "Anibot" instead, the person on record as requester (the app shows "Anibot for <person>"; never write their name into the text), exactly like production_publish_revision; the person must be allowed to publish there themselves, and their Helper still uploads and finalises the files. Use asBot when an agent publishes on someone's behalf (build installers, batch deliveries); leave it off when the person is publishing their own work through you. STRICTLY only when the person asked to publish in THIS request (userAskedToPublish true). A revision whose work files are still uploading is NOT finished: it is finished when the package status is "attached". Follow the package with workspace_job_status { taskId, packageId }. Retrying after a failure: pass the same messageId and packageId the reply gave and nothing is duplicated. Stage requirements (work files, media, text: production_stage shows them) are checked first. For a bot-signed revision with media only use production_publish_revision. A distribution file (an installer such as tool-1.2.3.vsix, or a .zip) becomes the work file of a stage that has no work-file family by copying it to the ROOT of that stage's workspace (workspace_prepare gives the folder), then workspace_changes (it is listed as a primary), workspace_publish_revision { files: [its name], userAskedToPublish: true } and workspace_job_status until attached; the revision then lists it among its work files under its published name <name>_revisionNNN.<ext> (production_revision_files { links: true } gives the download link).

Needs: the Animanager Helper running on this computer; an explicit request by the person in this turn; permission to post revisions on the stage.

Ask for it with words like: "publish with work files", "upload work files", "upload the blend", "post the revision with files", "deliver the workspace".

Parameters

ParameterTypeRequiredDescription
taskIdstringYesThe stage UUID or Animanager URL to publish to. Only the one the person named.
summarystringYesThe revision text: what changed, for the people on the stage.
statusIdstringThe status the person chose (ids in production_stage). Omit to keep the stage's current status.
fileslist of stringRelative paths of local files to publish as work files (from workspace_changes). Omit for the app's default selection: every new or changed file that can be uploaded.
previewslist of stringReview media, in display order: media ids (a canvas render, a revision media) or absolute paths of local image/video files, which are uploaded first.
attachmentslist of stringSupporting files for the message: media ids or absolute local paths. An attachment is NOT a managed work file. A CSV (with its optional .table.json of the same base name) shows as a data table; the reply says whether it reads as one (docs/data-tables.md).
timeSpentMinutesnumberTime spent, in minutes, ONLY when the person stated it. Never invent hours; omit otherwise.
messageIdstringFor a retry only: the messageId of the earlier attempt, so the same revision is reused.
packageIdstringFor a retry only: the packageId of the earlier attempt, so the files are not staged again.
asBotbooleantrue to sign the revision as the studio bot "Anibot" with the person on record as requester (body "Person: ..."), as production_publish_revision does. Default false: the person signs. Needs a Helper with workspaceRevisionAsBot (1.0.54+); the same messageId and packageId on a retry.
userAskedToPublishbooleanYestrue ONLY if the person explicitly asked to publish in this request.

Examples

  • workspace_publish_revision {"taskId":"<taskId>","summary":"Blocking pass","statusId":"<statusId>","files":["shot.blend"],"previews":["/abs/playblast.mp4"],"userAskedToPublish":true}: reserves the revision as the person and uploads the files in the background.
  • workspace_publish_revision {"taskId":"<taskId>","summary":"Poster PNGs","files":["files/poster.png"],"userAskedToPublish":true}: a files-only revision on a stage without a work file family.
  • workspace_publish_revision {"taskId":"<taskId>","summary":"Tool 1.2.3 installer","files":["tool-1.2.3.vsix"],"asBot":true,"userAskedToPublish":true}: signed by Anibot with the person on record as requester, the way production_publish_revision signs; the person's Helper still uploads the files.

Usually followed by: workspace_job_status, production_stage.

workspace_job_status ​

Where a Helper operation stands. A job (jobId from workspace_get_files or workspace_changes): queued, running, completed with its result, or failed with the error; wait true parks up to a minute. A work-file upload package (taskId + packageId from workspace_publish_revision): its status and phase, progress in files and bytes, the revision it belongs to, and the error when it failed; cancel true cancels the revision while its work files are not finished (it goes away as if it was never posted), retry true retries a failed one. A revision whose work files are still uploading is NOT finished: it is finished when the package status is "attached".

Needs: the Animanager Helper running on this computer.

Ask for it with words like: "is the download done", "is the upload finished", "progress", "cancel the upload", "retry the upload", "is blender installed yet".

Parameters

ParameterTypeRequiredDescription
jobIdstring
taskIdstringWith packageId: the stage UUID or Animanager URL the package belongs to.
packageIdstring
waitbooleanPark up to a minute while it is still running (default false).
cancelbooleanPackage only: cancel the revision while its work files are not finished. The Helper stops, and the revision, its version, its notifications and its uploaded files go, as if it was never posted; the stage status goes back. Only the person who posted it; a finished upload cannot be canceled (delete the revision instead).
retrybooleanPackage only: retry a failed upload now.

Examples

  • workspace_job_status {"jobId":"<jobId>","wait":true}: a download, scan or Blender install job.
  • workspace_job_status {"taskId":"<taskId>","packageId":"<packageId>","wait":true}: a work-file upload package; attached = finished.

workspace_blender ​

Which Blender opens a work file on this computer, through the Helper. Lists every Blender build installed here: the portable builds Animanager keeps under <workspace base>/blender (installed from the studio's Asset Library or registered by a render job), the ones the addon reported, and the system installs. Names the version required: the one the revision was published with (versionId: the revision records its Blender, addon and Helper versions), the one a local .blend was saved with (path: read from the file header), or the one you name (version). Says which installed build matches (same major.minor: a .blend should be opened with the Blender that saved it; a newer build converts it on save) and, when none does, whether the studio's Asset Library holds a downloadable build for this computer: the item "Blender X.Y" in project "Asset Library" > space "Software" > collection "Blender", with archives named blender-<x.y.z>-<macos|windows|linux>-<arm64|x64>.<dmg|zip|tar.xz> in its files. install: true downloads and installs that build under <workspace base>/blender (a Helper job, minutes; follow with workspace_job_status) and registers it, only when no installed build matches. Needs the Helper running here (1.0.54+). Local paths are on the computer running the Helper and this MCP, not on the server.

Needs: the Animanager Helper running on this computer.

Ask for it with words like: "which blender", "open the blend", "blender build", "which blender build", "blender executable", "portable blender", "install blender", "blender is not installed", "blender in the asset library", "run blender", "launch blender".

Parameters

ParameterTypeRequiredDescription
versionIdstringA revision (version UUID from production_revisions): its published Blender version is what is required, and its studio is where the Asset Library is looked up.
pathstringAn absolute local path of a .blend on the computer running the Helper: its header says which Blender saved it.
versionstringA Blender version to look for, X.Y or X.Y.Z (e.g. "4.2" or "4.2.3").
taskIdstringA stage UUID or Animanager URL, so the studio is known for the Asset Library lookup when no versionId is given.
installbooleanInstall the Asset Library build of the required version when no installed build matches (default false).
waitbooleanWith install: park up to a minute for the install job (default true).

Examples

  • workspace_blender {"versionId":"<versionId>"}: the Blender the revision was published with, the installed builds here (Animanager portable ones marked), the one to use, and the Asset Library when none matches.
  • workspace_blender {"path":"/Users/me/Animanager/Studio/Proj/Shots/Shot 010/Layout/Shot_010_Layout_v000.blend"}: the version a local .blend was saved with, from its header, and the build to open it with.
  • workspace_blender {"version":"4.2","taskId":"<taskId>","install":true}: installs Blender 4.2 from the studio's Asset Library under <workspace base>/blender when no installed build matches.

Usually followed by: workspace_job_status, workspace_get_files.

production_edit_revision ​

Corrects a revision the way the revision menu does: its text, its status, the time spent, or its review media (mediaIds replaces the whole list, in order). For the author of the revision, or a moderator when the studio bot posted it. ONLY when the person asked to correct that revision in this request (userAskedToEdit true); never on your own initiative, and never to change the work itself (publish a new revision for that). Time only as the person stated it.

Needs: an explicit request by the person in this turn.

Ask for it with words like: "edit the revision", "fix the text of v2", "change the status of the revision", "correct the time".

Parameters

ParameterTypeRequiredDescription
messageIdstringYesThe revision's message id (production_revisions shows it).
textstringNew text of the revision.
statusIdstringNew status (ids in production_stage).
timeSpentMinutesnumberCorrected time spent in minutes, only as the person stated it.
mediaIdslist of stringThe review media the revision should have, in order (replaces the current list).
userAskedToEditbooleanYestrue ONLY if the person explicitly asked for this correction in this request.

Example

  • production_edit_revision {"messageId":"<messageId>","text":"Blocking pass, fixed timing","userAskedToEdit":true}: corrects the text; status, time and media likewise.

production_delete_revision ​

Deletes a revision (its message, its version and its work-file package link) the way the revision menu does, through the same rule the app applies: its author, or a moderator, and nobody else. ONLY when the person asked to delete that exact revision in this request (userAskedToDelete true). Media files are never deleted; the stage status is recomputed from what remains. Irreversible.

Needs: an explicit request by the person in this turn.

Ask for it with words like: "delete the revision", "remove v3", "undo the publish".

Parameters

ParameterTypeRequiredDescription
versionIdstringYesThe revision's version UUID (production_revisions shows it as versionId).
userAskedToDeletebooleanYestrue ONLY if the person explicitly asked to delete this revision in this request.

Example

  • production_delete_revision {"versionId":"<versionId>","userAskedToDelete":true}: removes the revision the way the menu does; media stay.

Render farm ​

Follow the render queue and its nodes, launch renders from published revisions and get their files.

farm_queue ​

The studio's render queue, as the Farm page shows it: each job with its status, frames done, priority, item and stage, revision, scene and dates, the totals per status, and the render nodes with their state. Filter by item or stage, by status, by text, or to the jobs the person launched (mine). Acts as the person: the studio must have the render farm, and their role must let them use it. Reading only.

Needs: the render farm switched on for the studio and the role permission to use it.

Ask for it with words like: "render queue", "farm queue", "what is rendering", "is my render done", "which renders failed", "render nodes", "farm status", "my renders", "renders of this shot".

Parameters

ParameterTypeRequiredDescription
studioIdstringStudio UUID or Animanager link. Optional with taskId or itemId, or when the person is in one studio.
itemIdstringOnly the jobs of this item (any stage): UUID or link.
taskIdstringOnly the jobs of this stage: taskId or link.
statuslist of one of "queued", "running", "paused", "failed", "completed", "cancelled"Only these statuses (running = rendering now). Default: all.
minebooleanOnly the jobs the person launched.
searchstringText in the job name, revision, item, stage or scene, like Search jobs on the Farm page.
sortone of "status", "newest", "oldest"status (default: rendering, queued, paused, failed, then finished), newest or oldest.
limitnumberJobs per reply (default 30, max 200).
offsetnumberJobs to skip, to page further.
nodesone of "active", "all", "none"Render nodes to list: active (default: switched on and reporting), all, or none.

Examples

  • farm_queue {}: every render job of the studio with status, frames done and priority, and the render nodes.
  • farm_queue {"itemId":"<itemId>","status":["failed"]}: the failed renders of one item.
  • farm_queue {"mine":true,"sort":"newest"}: the renders the person launched, newest first.

Usually followed by: farm_job, farm_files.

farm_job ​

One render job in full, what Job details shows on the Farm page: its status and frames, priority, the revision, item and stage it renders, its settings (scene, blend, Blender version, engine and samples, frames and chunk size, output, resolution, render region, compositing), its folder, its times, and every chunk with its frames, status, node, attempts, render time and, for a failed one, its error and the end of its Blender log. Acts as the person: the studio must have the render farm, and their role must let them use it. Reading only.

Needs: the render farm switched on for the studio and the role permission to use it.

Ask for it with words like: "render job details", "why did the render fail", "chunk errors", "render settings of the job", "render log", "which node rendered".

Parameters

ParameterTypeRequiredDescription
jobIdstringYesThe render job id (jobId in farm_queue).
cursorstringContinuation cursor from the last line of the previous reply, when it did not fit one message.

Example

  • farm_job {"jobId":"<jobId>"}: settings, folder, times and every chunk with its node, attempts and errors.

Usually followed by: farm_files, farm_launch.

farm_launch ​

Launches a Blender render on the studio's farm from a published revision, like Launch render on its revision card. ONLY when the person asked to launch a render in THIS request (userAskedToLaunch true); never on your own initiative. preview: true shows the settings it would use without launching (no ask needed). The settings start as the revision's Save for Animanager snapshot of the scene has them; you can change the same things the dialog lets the person change: scene, frames, engine, samples, resolution, render region, priority and chunk size. A revision saved before the add-on recorded its render settings cannot be launched: the reply says "This revision has no render settings snapshot yet". Launching needs the permission to submit render jobs in that project. Anibot posts in the stage chat when the job is queued and when it finishes.

Needs: the render farm switched on for the studio and the role permission to use it; an explicit request by the person in this turn; permission to submit render jobs in the project.

Ask for it with words like: "launch a render", "send to the farm", "render on the farm", "render this revision", "send renders", "render the frames", "farm render".

Parameters

ParameterTypeRequiredDescription
versionIdstringThe revision to render (versionId from production_revisions or production_stage).
taskIdstringA stage (taskId or link): renders its latest revision. Use versionId for an older one.
blendstringWhen the revision has several blends: the item number (1, 2…) or the file name. Default: the most recently saved, like the dialog.
scenestringScene to render; its own saved settings are loaded first. Default: the scene saved as current.
frameStartintegerFirst frame (from 1).
frameEndintegerLast frame.
frameStepintegerRender every Nth frame (default as saved, usually 1).
enginestringCYCLES, BLENDER_EEVEE_NEXT, BLENDER_EEVEE or BLENDER_WORKBENCH (Cycles, Eevee Next, Eevee, Workbench).
samplesinteger or stringSamples. With Workbench, the anti-aliasing: OFF, FXAA, 5, 8, 11, 16 or 32.
resolutionXintegerWidth in pixels.
resolutionYintegerHeight in pixels.
resolutionPercentageintegerScale in percent (100 = full size).
regionobject (mode, left, right, bottom, top, crop)Render region: mode "scene" (the border saved in the blend, default), "full-frame", or "custom" with left, right, bottom, top in percent and crop (crop the output to the region).
priorityone of "Critical", "Very High", "High", "Elevated", "Normal", "Reduced", "Low", "Very Low"Queue priority (default Normal).
chunkSizeintegerFrames a machine takes at a time (default 8).
previewbooleantrue: answer with the settings it would launch, launch nothing.
userAskedToLaunchbooleantrue ONLY if the person explicitly asked to launch this render in this request.

Examples

  • farm_launch {"versionId":"<versionId>","preview":true}: the settings it would use, from the revision's Save for Animanager snapshot; launches nothing.
  • farm_launch {"versionId":"<versionId>","frameStart":1001,"frameEnd":1048,"samples":64,"priority":"High","userAskedToLaunch":true}: launches with those changes, the rest as saved.

Usually followed by: farm_queue, farm_job.

farm_files ​

The files of a render job: the rendered frames (or previews, logs, metadata), each with its frame, size and a download link valid 24 hours. download: true has the Animanager Helper on this computer bring the frames into the stage's local folder (Farm/Renders/<job>), the same as Get renders on the Farm page: frames changed locally are kept. Works while the job renders too, with the frames delivered so far. Acts as the person: the studio must have the render farm, and their role must let them use it.

Needs: the render farm switched on for the studio and the role permission to use it.

Ask for it with words like: "download renders", "get renders", "render files", "frames of the render", "files of previous renders", "link to the render", "bring the renders locally", "render output folder".

Parameters

ParameterTypeRequiredDescription
jobIdstringYesThe render job id (jobId in farm_queue).
kindone of "render", "preview", "log", "metadata", "manifest", "all"render (default: the output frames), preview, log, metadata, manifest or all.
linksbooleanA 24 h download link per file (default true).
offsetnumberFiles to skip, to page further.
limitnumberFiles per reply (default 200, max 1000).
downloadbooleantrue: download the renders into the stage's local folder with the Helper.
openFolderbooleanWith download: open the folder when done (default false).
waitbooleanWith download: wait up to a minute for it (default true); workspace_job_status follows it after.

Examples

  • farm_files {"jobId":"<jobId>"}: its rendered frames with 24 h links.
  • farm_files {"jobId":"<jobId>","download":true}: the frames into Farm/Renders of the stage's local folder through the Helper.

Usually followed by: workspace_job_status, workspace_status.

Help ​

The catalogue itself, as the agent sees it.

animanager_help ​

The catalogue of this MCP, generated from the tools themselves: what every tool does, when to use it, its parameters, what it needs (the Helper, an open canvas, an explicit ask, a permission) and whether that is available right now. No arguments: the index of every tool by group, paged explicitly, with who you act as and whether the Helper is running. query: search by what you want to do ("get files", "publish with workfiles", "frame at 3 s") and get the matching tools with the reason they matched. tool: one tool in full with examples and the tools that usually follow. group: one group. Call it whenever you are unsure which tool exists for a task, or after an error that says a tool, a permission or the Helper is missing.

Needs: only a signed-in session.

Ask for it with words like: "what can you do", "which tool", "list the tools", "help", "is the helper running", "who am I".

Parameters

ParameterTypeRequiredDescription
querystringWhat you want to do, in words. Matched against names, hints, intent phrases, descriptions and parameters.
toolstringA tool name: its full card (description, parameters, requirements, availability, examples, next tools).
groupstringA group name from the index (READ, EDIT, ORGANIZE, GENERATE, PRODUCTION, FILES, FARM, HELP): its tools with hints and parameters.
pagenumberPage of the index (default 1). The footer says how many pages there are.
pageSizenumberTools per page of the index (default 80, max 200).

Examples

  • animanager_help {}: every tool by group, who you act as, whether the Helper runs.
  • animanager_help {"query":"publish with workfiles"}: the tools for that intent.
  • animanager_help {"tool":"production_stage"}: parameters, needs, examples.

Prompts ​

Prompts start a whole workflow by name from the agent: in Claude Code and Cursor as /mcp__animanager__<name>, in Claude Desktop from the prompt picker.

brief ​

Start a production job: asks what to do, on which space and stages, with which models and optional budget; estimates before running.

No arguments: the agent asks what it needs.

stage-to-stage ​

Generic pipeline step: from what a source stage holds (storyboard, layout, animatic, previs...) produce the target stage on the item canvas (images, then video), for one item or a whole space. Publishes only if asked.

ArgumentRequiredDescription
spaceIdYesThe space to work in (canvas_list shows ids).
sourceStageYesName of the source stage (e.g. Storyboard, Layout, Animatic).
targetStageYesName of the stage to produce (e.g. Layout, Previs, Animation).
imageModelImage model for the still(s): gpt-image-2.5-sunburst, gpt-image-2.5-flare, gpt-image, nano-banana-2, seedream-pro...
videoModelVideo model for the clip(s): seedance-2.5, minimax-h3-max, kling-motion, veo-3.1...
itemsItem titles to limit the run to, comma separated. Empty = every item whose source stage has material.
budgetTokensOptional spending budget in tokens for the whole run. Empty = no cap.
publish"yes" only if the person wants the results published as revisions; then also give statusName.
statusNameStatus for the published revisions (only with publish = yes).

item-report ​

A written status report of one item: every stage, its status, latest revisions, open threads, and what the canvases hold.

ArgumentRequiredDescription
itemIdYesThe item to report on (production_space or canvas_list show ids).

continuity-check ​

Compares the latest revisions of one stage across the items of a space (look, framing, timing) and lists the discontinuities.

ArgumentRequiredDescription
spaceIdYesThe space to check.
stageYesName of the stage whose latest revisions to compare.

Animanager official user documentation.