VideoGen
Server Details
Create and edit videos, images, voiceovers, music, and avatars with the VideoGen API.
- Status
- Healthy
- Uptime
- 48.8% over 20 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- video-gen/videogen-mcp
- GitHub Stars
- 4
- Server Listing
- VideoGen MCP
TDQS
Scored across 50 tools
Each generation tool targets a distinct media type (image, video clip, music, sound effect, motion graphic, avatar) and the entity/file/project tools are clearly scoped. The main friction points are the overlapping 'to_video' workflow family and generate_video_clip vs prompt_to_video_clip, but the detailed descriptions distinguish them well. Four separate guidance tools are also largely separable by their stated purpose.
The set overwhelmingly uses a consistent snake_case verb_noun convention (create_entity, list_projects, generate_image, upscale_video). Minor deviations exist: image_3d_effect has no verb, and the guidance tools use an unusual get_X_guidance pattern that stands apart from the rest. Still predictable and readable throughout.
At 50 tools the surface is very heavy, well beyond the range where an agent can scan and select confidently. While the domain (generation, workflows, entities, files, projects, transformations, guidance) is genuinely broad, several guidance tools could be resources and the count pushes the server toward overload.
Coverage is thorough: entity CRUD plus reference management, file upload/get/list, a full slate of media generators, four workflow builders, project remix/export, and various transformations (upscale, background removal, vectorize). Minor gaps like archive-without-restore and no project/file deletion are workable around.
Available Tools
50 toolsadd_entity_referenceAdd entity referenceAInspect
Attach an uploaded file (vg_file_...) as a reference on an entity. Images work for every entity type. Slideshow themes may also attach a PDF or PowerPoint. For a BRAND, set role BRAND_LOGO for its overlay logo or BRAND_STYLE_GUIDE for its visual generation reference. Built-in entities cannot have references added. For new PRODUCT/ACTOR entities, call this right after create_entity with isDefault: true so the entity has a usable thumbnail and generation reference.
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | Purpose of the attached file. Omit for a general reference. On a BRAND, BRAND_LOGO is its overlay logo and BRAND_STYLE_GUIDE is its visual generation reference. | |
| fileId | Yes | Image file id (vg_file_...) to attach as a reference. Upload first via upload_file / create_file_upload / open_uploader. | |
| entityId | Yes | Saved reference entity to use. Obtain entityId from list_entities or create_entity. | |
| isDefault | No | When true, make this the primary reference (thumbnail). Defaults to false. | |
| description | No | Optional description of this reference image. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | Display name. |
| entityId | Yes | Entity id (vg_enti_...). |
| createdAt | Yes | Unix created-at timestamp. |
| isBuiltIn | No | True for VideoGen catalog entities that cannot be modified. |
| updatedAt | Yes | Unix updated-at timestamp. |
| entityType | Yes | ACTOR, PRODUCT, VISUAL_STYLE, SLIDESHOW_THEME, BRAND, LOCATION, or PROP. |
| references | Yes | Attached reference images. |
| actorConfig | No | Voice/avatar summary for ACTOR entities; null for other types. |
| brandConfig | No | Brand guidance for BRAND entities; null for other types. |
| description | Yes | Description (empty when unset). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-read-only, non-idempotent, non-destructive. The description adds genuinely valuable behavior beyond that: a hard restriction on built-in entities, file-type limits per entity type, and the recommended call ordering. It stops short of saying what happens on failure or whether existing references are replaced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences, each carrying a distinct rule (file-type scope, BRAND roles, built-in restriction, recommended ordering), with the core action front-loaded. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-param mutation tool with full schema coverage, annotations, and an output schema, the description covers everything an agent needs: valid file types, role choices, hard restrictions, and workflow ordering. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema by tying isDefault to the post-create_entity workflow and by explaining role values in the context of what they affect (overlay logo vs. visual generation reference).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb+resource (attach an uploaded file as a reference on an entity) and immediately scopes it: images for all entity types, PDF/PowerPoint only for slideshow themes. It is clearly distinguished from the sibling remove_entity_reference and from create_entity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use rules and exclusions: 'Built-in entities cannot have references added,' which role to set for a BRAND, and the ordering instruction to call this right after create_entity with isDefault: true for new PRODUCT/ACTOR entities. Alternatives and constraints are both named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
archive_entityArchive entityADestructiveIdempotentInspect
Soft-archive a team entity so it no longer appears in lists or pickers. Returns entityId and archived. This tool has no restore operation; retrying an archived entity can fail because it is no longer active. Built-in entities cannot be archived.
| Name | Required | Description | Default |
|---|---|---|---|
| entityId | Yes | Saved reference entity to use. Obtain entityId from list_entities or create_entity. |
Output Schema
| Name | Required | Description |
|---|---|---|
| archived | Yes | Always true on success. |
| entityId | Yes | Archived entity id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes beyond the annotations by disclosing that the archive is soft rather than a hard delete, that there is no restore path, and that built-in entities are ineligible. One nuance: annotations claim idempotentHint=true while the description warns retrying can fail, which is a mild tension in framing (a failed retry still leaves state unchanged), but not a true contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, no filler, with the core action and its effect front-loaded before the constraints. Every sentence adds a distinct constraint the agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter mutation with an output schema, an agent has everything: action semantics, effect on listing, irreversibility, eligibility limits, and the failure mode. Return values are covered by the output schema and briefly echoed in the description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter and schema description coverage is 100%, so the schema already explains entityId and where to obtain it. The description adds no parameter-level detail, which is the expected baseline when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Soft-archive a team entity') plus the observable effect ('no longer appears in lists or pickers'), which cleanly separates it from create_entity, update_entity, and get_entity. An agent can identify the operation without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear when/when-not conditions: no restore operation exists, retrying an archived entity can fail, and built-in entities cannot be archived. It stops short of naming sibling alternatives (e.g., update_entity for reversible changes), so it is strong context but not full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_tool_executionCancel tool executionADestructiveIdempotentInspect
Request cancellation of an API-started media generation or transformation. Pending work is stopped; completed files are not deleted. Any open review for a completed result is dismissed. Returns only toolExecutionId as an acknowledgment; use get_tool_execution to read status and results.
| Name | Required | Description | Default |
|---|---|---|---|
| toolExecutionId | Yes | Execution to inspect or cancel. Use toolExecutionId from a media-tool start result or list_tool_executions. |
Output Schema
| Name | Required | Description |
|---|---|---|
| toolExecutionId | Yes | Execution for which cancellation was requested. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, yet the description adds real value beyond them: pending work stops, completed files survive, open reviews are dismissed, and only toolExecutionId is returned. These are exactly the side-effect details an agent needs before invoking a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences, front-loaded with the action, followed by side effects and then the return/routing note. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists, the description needn't explain returns, but it still notes the minimal acknowledgment and where to read results. Combined with the side-effect disclosure, nothing needed to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the single parameter is fully documented in the schema (including provenance from a start result or list_tool_executions). The description adds no parameter-specific syntax or format detail, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (cancel) and resource (tool execution), and scopes it to 'API-started media generation or transformation', which separates it from siblings like get_tool_execution and list_tool_executions. An agent can identify the operation without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes clear this is for stopping pending work and points to get_tool_execution for reading status afterward. It does not explicitly state when-not to use it (e.g., versus cancel_workflow_run), but the 'API-started' qualifier narrows applicability usefully.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_workflow_runCancel workflow runADestructiveIdempotentInspect
Request cancellation of an API-started workflow and its related generation, remix, and export tasks. This stops pending work; it does not delete the project or undo completed work. Terminal runs are unchanged. Returns workflowRunId, projectId, projectUrl, and remixActionIds as an acknowledgment; use get_workflow_run for status.
| Name | Required | Description | Default |
|---|---|---|---|
| workflowRunId | Yes | Run to inspect or cancel. Use workflowRunId from a workflow start result or list_workflow_runs. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Error details when status is failed; otherwise null. |
| status | No | Job status: pending, running, succeeded, failed, or cancelled. |
| exportId | No | Export id when autoExport succeeded (vg_expo_...). |
| projectId | Yes | Project created for this exact workflow attempt (vg_proj_...). A retry creates a different project. |
| projectUrl | Yes | Deep link to the project created for this exact workflow attempt. Keep it paired with workflowRunId; a retry returns a new URL. |
| downloadUrl | No | Signed MP4 download URL when autoExport succeeded. Give this to the user. |
| attemptIndex | No | Current or latest attempt index. |
| exportFileId | No | File id of the rendered MP4 when autoExport succeeded. |
| workflowType | No | Workflow type (present after polling). |
| workflowRunId | Yes | Workflow run id (vg_work_...). Keep it paired with this response's projectId and projectUrl; a retry returns a new tuple. |
| remixActionIds | No | Remix action ids from the start response (empty when none requested). |
| progressPercentage | No | Completion progress 0-100 (present after polling). |
| downloadUrlExpiresAt | No | Unix expiry for downloadUrl. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (destructiveHint, idempotentHint) by defining the blast radius: it stops pending work but does not delete the project or undo completed work, and terminal runs are untouched. That is exactly the destructive-scope context an agent needs before invoking.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the action and its scope, then the negative constraints, then the acknowledgment payload. Every sentence earns its place with no repetition of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a single required parameter, an output schema that defines return fields, and annotations covering the safety profile, the description supplies everything missing: scope limits, terminal-run behavior, and the follow-up status tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with a single well-documented workflowRunId, so the schema carries the parameter burden. The description only mentions workflowRunId in the return list and adds no format or sourcing detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Request cancellation') and a scoped resource ('API-started workflow and its related generation, remix, and export tasks'). The word 'Request' correctly signals asynchronous behavior, distinguishing it from get_workflow_run and list_workflow_runs among siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context: use it to stop pending work, terminal runs are unchanged, and it points to get_workflow_run for status afterward. It does not explicitly contrast with cancel_tool_execution or state prerequisites/permissions, so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_entityCreate entityAInspect
Create an ACTOR (character), PRODUCT (something the user sells or promotes), VISUAL_STYLE, SLIDESHOW_THEME, BRAND, LOCATION (place or set), or PROP (background object that is not for sale) entity. Anything the user sells is a PRODUCT, never a PROP. A BRAND accepts brandConfig with fonts, colors, and writingStyle. Returns the new entity record with entityId and references. After create, attach references with add_entity_reference (upload the file first). Slideshow themes may attach an image or a PDF / PowerPoint. Use the returned entityId as actorEntityId on generate_avatar / script_to_video / slideshow_to_video, as productEntityIds or actorEntityIds on storyboard_to_video (request and each scene that should show it), as visualStyleEntityId on each storyboard scene, or as slideshowThemeEntityId on slideshow_to_video.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Display name for the entity. | |
| entityType | Yes | ACTOR = consistent character; PRODUCT = a product the user sells or promotes; VISUAL_STYLE = look/style for generated images; SLIDESHOW_THEME = shared slide design system for a slideshow deck; BRAND = logo, style guide image, and writing style; LOCATION = consistent place or set; PROP = background object that is not a product. Anything the user sells is a PRODUCT, never a PROP. | |
| brandConfig | No | Configuration for a BRAND entity. | |
| description | No | Describe the subject, product, setting, or visual identity this saved entity represents. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | Display name. |
| entityId | Yes | Entity id (vg_enti_...). |
| createdAt | Yes | Unix created-at timestamp. |
| isBuiltIn | No | True for VideoGen catalog entities that cannot be modified. |
| updatedAt | Yes | Unix updated-at timestamp. |
| entityType | Yes | ACTOR, PRODUCT, VISUAL_STYLE, SLIDESHOW_THEME, BRAND, LOCATION, or PROP. |
| references | Yes | Attached reference images. |
| actorConfig | No | Voice/avatar summary for ACTOR entities; null for other types. |
| brandConfig | No | Brand guidance for BRAND entities; null for other types. |
| description | Yes | Description (empty when unset). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (non-readOnly, non-destructive, non-idempotent, closed-world). The description adds genuine behavioral context beyond them: it returns the new record with entityId/references, brandConfig is BRAND-only, and slideshow themes may attach an image or a PDF/PowerPoint. It does not mention idempotency or duplicate-name behavior, which would complete the picture.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Long but dense; the leading sentence front-loads the entity taxonomy, then downstream usage. Every sentence carries information, though the large type enumeration partly duplicates the enum schema and could be trimmed without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a nested-object schema, full parameter coverage, and an output schema present, the description supplies exactly the missing connective tissue: what each type means and where the returned entityId must be reused downstream. Nothing needed to call this correctly is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema already documents entityType enum meanings, brandConfig fields, and description in detail. The description largely mirrors that content (PRODUCT vs PROP, brandConfig for BRAND) rather than adding new syntax or constraints, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (Create) plus an exhaustive enumeration of the resource subtypes (ACTOR, PRODUCT, VISUAL_STYLE, SLIDESHOW_THEME, BRAND, LOCATION, PROP), and it disambiguates the trickiest case (PRODUCT vs PROP) explicitly. An agent can distinguish this from create_file_upload or update_entity without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear follow-up sequencing (attach references with add_entity_reference and upload the file first) and states exactly which downstream tools consume the returned entityId and under which field name. It stops short of naming siblings like update_entity as the alternative for modifying an existing entity, so it is context-rich but not a full when-to-use/when-not matrix.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_file_uploadCreate file uploadAInspect
Start an upload for a large file, or when file bytes cannot be inlined. Returns { fileId, uploadUrl }. PUT the raw file bytes to uploadUrl with NO Authorization header (it is a short-lived pre-signed URL). Then call get_file with { fileId, wait: true } to wait until processing finishes, and pass the returned fileId to workflows, tools, logos, or B-roll. For small files, prefer upload_file.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Media or document kind to associate with the upload. Inferred after processing when omitted. | |
| displayName | Yes | Human-readable label used to identify the uploaded asset in the VideoGen library. | |
| isTemporary | No | When true, the file is temporary (guaranteed available for 24 hours, not analyzed for search). Defaults to false. |
Output Schema
| Name | Required | Description |
|---|---|---|
| fileId | Yes | File id to use after uploading bytes (vg_file_...). |
| uploadUrl | Yes | Pre-signed URL: PUT raw file bytes here with no Authorization header. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the mutation safety profile, but the description adds critical non-obvious behavior: the return shape { fileId, uploadUrl }, the required PUT mechanics, the explicit warning that NO Authorization header must be sent to the short-lived pre-signed URL, and the post-upload wait step. This is exactly the operational context an agent cannot derive from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences, front-loaded with the trigger condition, then output shape, then required call mechanics, then the alternative. Every sentence carries distinct actionable content with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a multi-step upload tool: it covers the pre-signed URL protocol, the follow-up get_file call, and where the returned fileId can be consumed. The presence of an output schema means it needn't explain return values further, and it doesn't over-explain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and all three params (type, displayName, isTemporary) are already well documented there. The description adds no parameter-level syntax or defaults beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('start an upload for a large file') and immediately scopes it against the sibling upload_file ('For small files, prefer upload_file'). An agent can distinguish this from upload_file and open_uploader without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use conditions ('large file, or when file bytes cannot be inlined'), names the alternative for the opposite case, and lays out the follow-up sequence (PUT to uploadUrl, then get_file with wait:true). Nothing about selection is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_projectExport projectAInspect
Render an editable project to MP4. Returns exportId on hosted clients; poll get_project_export with the same projectId for status, progress, errors, and downloadUrl when ready. Local calls wait for an export snapshot. Renders often take a few minutes. Tell the user that wait up front.
| Name | Required | Description | Default |
|---|---|---|---|
| quality | No | MP4 resolution tier by shortest edge: STANDARD is 720p, HIGH and FULL_HIGH are 1080p, and ULTRA_HIGH is 2160p. Omit for FULL_HIGH. | |
| projectId | Yes | Editable project to render. Use projectId from a workflow result, list_projects, or get_project. |
Output Schema
| Name | Required | Description |
|---|---|---|
| file | No | Hydrated export file metadata. |
| error | No | Error details when status is failed; otherwise null. |
| status | No | Job status: pending, running, succeeded, failed, or cancelled. |
| exportId | Yes | Export id (vg_expo_...). |
| projectId | No | Exported project id (present after polling). |
| downloadUrl | No | Signed MP4 download URL when succeeded; otherwise null. |
| attemptIndex | No | Current or latest attempt index. |
| exportFileId | No | Exported MP4 file id when succeeded. |
| thumbnailUrl | No | Signed thumbnail URL when ready. |
| progressPercentage | No | Completion progress 0-100 (present after polling). |
| downloadUrlExpiresAt | No | Unix expiry for downloadUrl. |
| thumbnailUrlExpiresAt | No | Unix expiry for thumbnailUrl. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false); the description adds substantial behavioral context on top: hosted calls return an exportId and are async, local calls block, renders take minutes, and the user must be warned in advance. That is real added value beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the core action, then output behavior, then the timing warning. Every sentence carries distinct operational information with no repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value documentation is not strictly required, yet the description still explains the exportId/polling contract and the sync-vs-async split. Combined with the rich quality enum in the schema, an agent has everything needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — both projectId provenance and the quality enum tiers are fully documented in the schema. The description adds no parameter-level meaning beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Render an editable project to MP4'), and the rendering/mutation framing clearly separates it from generation siblings like generate_video_clip or storyboard_to_video. An agent can identify function and counterpart (get_project_export) without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent to get_project_export for status/progress and states that local calls differ (they wait for the snapshot). Lacks an explicit when-not-to-use, but the operational context is clear enough to select and drive the tool correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_avatarGenerate avatarAInspect
Generate a talking-head avatar video from an ACTOR entity and an uploaded audio file. Pass actorEntityId and optionally set avatarQuality. Typically takes a few minutes (longer for longer audio). Tell the user that wait up front. Returns toolExecutionId; get_tool_execution provides status and results with the avatar video file and download URL.
| Name | Required | Description | Default |
|---|---|---|---|
| audioFileId | Yes | Speech recording for the actor to lip-sync. Use fileId from an audio upload, list_files, or a succeeded text_to_speech result. | |
| actorEntityId | Yes | Id of a built-in stock actor or an ACTOR entity (vg_enti_...) with an image reference. | |
| avatarQuality | No | Avatar generation quality tier. Applies when actorEntityId is provided. Omit to use workspace settings. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Error details when status is failed; otherwise null. |
| status | No | Job status: pending, running, succeeded, failed, or cancelled. |
| results | No | Generated results with download URLs when succeeded. |
| toolType | No | Tool name (e.g. GENERATE_IMAGE). |
| attemptIndex | No | Current or latest attempt index. |
| toolExecutionId | Yes | Tool execution id (vg_tool_...). |
| progressPercentage | No | Completion progress 0-100 (present after polling). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only supply generic hints (readOnly=false, idempotent=false), so the description carries the real behavioral load: it discloses that generation is slow ('a few minutes, longer for longer audio'), that it is asynchronous, and that results arrive via get_tool_execution. It doesn't state whether re-invocation is billed/duplicated or how failures surface, keeping it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the core action and required inputs, then latency guidance, then the polling handoff. Every sentence contributes something actionable and nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite an output schema existing, the description goes further by explaining the async lifecycle and the ID needed for polling, which is the critical missing link. For a long-running, non-idempotent generation tool with an existing output schema, nothing an agent needs to call and follow up correctly is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents actorEntityId, audioFileId, and the avatarQuality enum. The description references actorEntityId and avatarQuality but adds no new syntax or constraints beyond the schema's own text, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and artifact: 'generate a talking-head avatar video from an ACTOR entity and an uploaded audio file.' This clearly differentiates it from siblings like generate_video_clip, voiceover_to_video, and text_to_speech by naming both required input types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the prerequisite inputs (audio upload / fileId / text_to_speech result) and the follow-up path via get_tool_execution, plus instructs the agent to warn the user about wait time up front. It doesn't explicitly exclude alternatives such as voiceover_to_video, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_imageGenerate imageAInspect
Generate an image from a text prompt, optionally conditioned on source images (image-to-image) and actor, product, or visual-style entity ids. Typically takes 15–60 seconds. Tell the user that wait up front.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | Description of the image to generate. | |
| quality | No | Generation quality. Omit to use workspace settings. | |
| entityIds | No | Actor, product, or visual-style references for consistent identity and appearance. Use entityId values from list_entities or create_entity, with reference files attached. | |
| aspectRatio | No | Output aspect ratio as width:height units (not pixels). Example: { width: 16, height: 9 }. | |
| imageFileIds | No | Reference images to guide the generated appearance. Use fileId values from upload_file, get_file, or list_files. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Error details when status is failed; otherwise null. |
| status | No | Job status: pending, running, succeeded, failed, or cancelled. |
| results | No | Generated results with download URLs when succeeded. |
| toolType | No | Tool name (e.g. GENERATE_IMAGE). |
| attemptIndex | No | Current or latest attempt index. |
| toolExecutionId | Yes | Tool execution id (vg_tool_...). |
| progressPercentage | No | Completion progress 0-100 (present after polling). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-readOnly, non-destructive, non-idempotent, closed-world. The description adds the latency envelope (15-60 seconds) and an explicit instruction to tell the user about the wait up front — operationally important context the annotations cannot express. It does not say whether the call blocks or returns a task handle, which is the one remaining gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core action, then conditioning modes, then the latency warning. No filler and nothing redundant with the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and the description covers purpose, conditioning inputs, and the key UX behavior (long-running). It is slightly incomplete in not clarifying sync-vs-async execution or any follow-up polling/status tool, which matters given the sibling cancel_tool_execution/get_tool_execution family.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so prompt, quality, entityIds, aspectRatio, and imageFileIds are all already documented in the schema, including the entityId/fileId sourcing guidance. The description adds no syntax or constraint detail beyond that, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Generate') and resource ('an image from a text prompt'), and immediately distinguishes two operating modes (text-to-image vs. image-to-image). This separates it cleanly from generate_avatar, generate_video_clip, and prompt_to_video_clip, which an agent must otherwise disambiguate by name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clarifies the two usage contexts (plain prompt, or conditioned on imageFileIds/entityIds for identity consistency), which is real selection guidance. It stops short of naming alternatives or stating when-not to use it (e.g. versus generate_avatar for human characters).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_motion_graphicGenerate motion graphicAInspect
Generate an animated motion graphic video from a text prompt. Best for precise text animations (typing effects, kinetic typography, lower thirds) that stock or generated footage can't express. Outputs a transparent WebM overlay by default; set transparentBackground to false for an opaque MP4. Optionally pass reference media file ids to display or animate. Typically takes 2–5 minutes because VideoGen writes animation code and then renders it; complex prompts can take longer. Tell the user that wait before starting and keep polling calmly — a healthy in-progress job is expected.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | Description of the animated motion graphic. | |
| fileIds | No | Media to display or animate in the motion graphic. Use fileId values from upload_file, get_file, or list_files. | |
| entityIds | No | Actor, product, or visual-style references. Use entityId values from list_entities or create_entity, with reference files attached. | |
| aspectRatio | No | Output aspect ratio as width:height units (not pixels). Example: { width: 16, height: 9 }. | |
| subToolModes | No | Optional per-capability controls for generated images, video clips, voiceover, and stock media. Omit to use AUTO for every capability. | |
| durationSeconds | No | Requested motion-graphic playback duration in seconds. | |
| transparentBackground | No | Render a transparent WebM for use as an overlay on other video or images. Defaults to true. Set to false for an opaque MP4. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Error details when status is failed; otherwise null. |
| status | No | Job status: pending, running, succeeded, failed, or cancelled. |
| results | No | Generated results with download URLs when succeeded. |
| toolType | No | Tool name (e.g. GENERATE_IMAGE). |
| attemptIndex | No | Current or latest attempt index. |
| toolExecutionId | Yes | Tool execution id (vg_tool_...). |
| progressPercentage | No | Completion progress 0-100 (present after polling). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the generic write profile (readOnly=false, destructive=false, idempotent=false); the description adds substantial non-obvious context on top: the default transparent WebM vs opaque MP4 output, that VideoGen writes animation code and then renders, the 2–5 minute expected duration, and that a long-running in-progress job is healthy rather than a failure. That latency/expectation guidance is exactly what an agent needs to avoid aborting a valid call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five sentences, front-loaded with purpose then differentiation, then output format, then latency and operational guidance. No filler; even the last sentence about telling the user and polling calmly carries behavioral weight an agent would otherwise get wrong.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the description fills the remaining gaps: differentiation from siblings, default output container, latency expectation, and optional reference media use. Nothing an agent needs to invoke this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and every parameter (prompt, fileIds, entityIds, aspectRatio, subToolModes, durationSeconds, transparentBackground) is documented in the schema. The description only restates the transparentBackground default and mentions optional reference media ids, adding no syntax or constraint detail beyond the schema. Baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Generate an animated motion graphic video from a text prompt') and then carves out a precise niche: 'precise text animations (typing effects, kinetic typography, lower thirds) that stock or generated footage can't express.' That niche statement is what separates it from the many video-generation siblings (generate_video_clip, prompt_to_video_clip, script_to_video).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear selection criterion (use when the content is precise text animation / kinetic typography that footage can't express) plus operational guidance to tell the user about the 2–5 minute wait and to poll calmly. It stops short of naming a sibling tool as the fallback for cases where footage *would* work, so routing is inferable rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_musicGenerate musicAInspect
Generate a music track from a text prompt. Typically takes 1–5 minutes depending on track length. Tell the user that wait up front.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | Genre, mood, instrumentation, and tempo. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Error details when status is failed; otherwise null. |
| status | No | Job status: pending, running, succeeded, failed, or cancelled. |
| results | No | Generated results with download URLs when succeeded. |
| toolType | No | Tool name (e.g. GENERATE_IMAGE). |
| attemptIndex | No | Current or latest attempt index. |
| toolExecutionId | Yes | Tool execution id (vg_tool_...). |
| progressPercentage | No | Completion progress 0-100 (present after polling). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (not read-only, not idempotent, non-destructive, closed-world), so the bar is lower. The description adds genuinely useful behavior the annotations cannot express: a 1–5 minute latency expectation and an explicit UX instruction to warn the user up front. It stops short of failure/timeout or cost behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action, then latency, then the actionable UX instruction. No filler and nothing repeated from the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be explained, and annotations cover the safety profile. The description supplies the one thing an agent most needs for this long-running generation call – the wait expectation and how to set user expectations. Missing only edge cases like failure handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'prompt' parameter is already documented with what it should contain (genre, mood, instrumentation, tempo). The description's 'from a text prompt' adds nothing beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Generate a music track from a text prompt'), which cleanly separates it from siblings like generate_image, generate_video_clip, and generate_sound_effect. An agent can select this tool from the name and first sentence alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description never states when to use this tool versus alternatives, nor any prerequisites or exclusions. It implies its own usage by describing the output, but gives no routing guidance among the many generate_* siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_sound_effectGenerate sound effectAInspect
Synthesize a standalone audio effect from a description of the desired sound and timing. Returns toolExecutionId; use get_tool_execution to retrieve the generated audio file and download URL.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | Description of the sound effect. | |
| durationSeconds | No | Requested sound-effect playback duration in seconds. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Error details when status is failed; otherwise null. |
| status | No | Job status: pending, running, succeeded, failed, or cancelled. |
| results | No | Generated results with download URLs when succeeded. |
| toolType | No | Tool name (e.g. GENERATE_IMAGE). |
| attemptIndex | No | Current or latest attempt index. |
| toolExecutionId | Yes | Tool execution id (vg_tool_...). |
| progressPercentage | No | Completion progress 0-100 (present after polling). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the safety profile (not read-only, not idempotent, not destructive, closed-world). The description adds genuinely new behavioral context: this is an async job that returns a toolExecutionId and requires a separate get_tool_execution call to obtain the file and download URL. It does not state expected latency or failure modes, keeping it below 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler. The generative purpose is front-loaded and the retrieval instruction follows immediately after; every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter async generation tool with an output schema, the description covers purpose and the post-call retrieval flow, which is the critical operational detail. The only gap is disambiguation from sibling generators, which matters given the large family of generate_* tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented in the schema, giving a baseline of 3. The phrase 'desired sound and timing' loosely maps to prompt and durationSeconds but adds no format, unit, or constraint detail beyond what the schema already provides (including the 30-second maximum).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Synthesize a standalone audio effect from a description of the desired sound and timing.' The word 'standalone' implicitly contrasts with generate_music, but no sibling is named explicitly, so an agent must infer the boundary between this and generate_music or text_to_speech.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description routes the agent to the follow-up step ('use get_tool_execution to retrieve the generated audio file'), which is useful lifecycle guidance, but it offers no when-to-use vs when-not guidance relative to the many sibling generation tools (generate_music, text_to_speech, generate_avatar). Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_video_clipGenerate video clipAInspect
Generate a video clip from a text prompt, source images, source videos, spokenDialogue, or reference audio. Typically takes 1–3 minutes (HIGH/MAX can be longer). Tell the user that wait up front and keep polling calmly.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | No | Description of the video to generate. | |
| quality | No | Video generation quality. Omit to use workspace settings. | |
| aspectRatio | No | Output aspect ratio as width:height units (not pixels). Example: { width: 16, height: 9 }. | |
| audioFileIds | No | Optional reference audio file ids used to lip-sync from a recording. Use spokenDialogue to have the model speak a line it generates itself. | |
| imageFileIds | No | Reference images to guide the generated appearance. Use fileId values from upload_file, get_file, or list_files. | |
| videoFileIds | No | Optional reference video file ids. | |
| generateAudio | No | Whether the result must include generated audio. | |
| spokenDialogue | No | Exact line the subject should speak as native lip-synced speech. The model synthesizes the voice from this text. | |
| durationSeconds | No | Requested clip playback duration in seconds. Omit or pass null for automatic timing. | |
| startFrameFileId | No | Optional opening-frame still file id. Used as the first frame of the clip. | |
| voiceDescription | No | Natural-language description of the voice that speaks spokenDialogue. Used when spokenDialogue is set. | |
| suppressBackgroundMusic | No | When true, the clip will not include a musical soundtrack. Spoken dialogue and environmental sound are still allowed. Use this when background music will be added separately. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Error details when status is failed; otherwise null. |
| status | No | Job status: pending, running, succeeded, failed, or cancelled. |
| results | No | Generated results with download URLs when succeeded. |
| toolType | No | Tool name (e.g. GENERATE_IMAGE). |
| attemptIndex | No | Current or latest attempt index. |
| toolExecutionId | Yes | Tool execution id (vg_tool_...). |
| progressPercentage | No | Completion progress 0-100 (present after polling). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the mutation profile (readOnlyHint=false, idempotentHint=false, destructiveHint=false). The description adds genuinely non-structured context: this is a long-running async operation taking 1–3 minutes (longer for HIGH/MAX) that must be polled, which is exactly the kind of trait an agent needs and annotations do not carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the verb and resource. The latency/polling sentence is actionable and free of filler; slight redundancy in listing every input modality, but overall tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter async generation tool with an output schema and full schema coverage, the description supplies the missing piece – expected latency and the need to poll – without needing to explain returns. It stops short of naming the actual polling mechanism (e.g. get_tool_execution / get_async_tasks_guidance), which is the one residual gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 12 parameters are already documented in the schema. The description names a few modalities that map to parameters (spokenDialogue, source images/videos, reference audio) but adds no syntax, ordering, or dependency detail beyond what the schema provides – baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Generate a video clip') and enumerates the input modalities (text prompt, source images, source videos, spokenDialogue, reference audio). It is clearly a generation tool, but it never distinguishes itself from the many video-generation siblings (prompt_to_video_clip, script_to_video, voiceover_to_video), so an agent still has to guess which generator to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only guidance is operational ('Tell the user that wait up front and keep polling calmly'), which addresses handling rather than selection. It never says when to use this tool instead of prompt_to_video_clip or the other *_to_video siblings, leaving the choice implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_app_deep_linkGet app deep linkARead-onlyIdempotentInspect
Build a VideoGen app URL that opens a modal or navigates after the user signs in (upgrade, buy credits, enable top-ups, invite teammates, submit feedback, integrations, account settings, or a NAVIGATE destination). Prefer this when the user needs to complete something in the VideoGen UI that MCP tools cannot do inline — especially credits or plan gates. Return the url to the user so they can open it.
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | Optional for OPEN_SUBMIT_FEEDBACK. Prefills the ticket description (capped). | |
| action | Yes | App operation to open after sign-in, such as navigation, feedback, or integration management. | |
| category | No | Feedback classification for OPEN_SUBMIT_FEEDBACK. Omit or pass null to let the user choose. | |
| provider | No | Required for OPEN_MANAGE_INTEGRATION. Integration provider key, such as GOOGLE or SLACK, identifying the connection to manage. | |
| capability | No | Optional for OPEN_INTEGRATIONS_PICKER. Capability filter (e.g. KNOWLEDGE_SOURCE), or null for all. | |
| articleSlug | No | Required for OPEN_HELP_ARTICLE. Help-center search text, such as an article title or its URL slug; the link opens matching search results. | |
| destination | No | Required for NAVIGATE. In-app keys like PROJECTS, BILLING_SETTINGS, SUPPORT; or HELP_CENTER / API_DOCS. | |
| suggestedLocale | No | For OPEN_LANGUAGE_SELECTOR, preselect a UI language using an app locale code such as en or es. Unsupported codes are ignored. The user can choose another language. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | Absolute URL to open in a browser. After VideoGen sign-in, the app applies the action (modal or navigation). |
| action | Yes | The deep-link action that was resolved. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry the read-only/idempotent/non-destructive safety profile, so the bar is lower, and the description adds genuine context beyond them: the URL opens a modal or navigates only after sign-in (auth-gated), and the agent should hand the URL to the user rather than surfacing it inline. It stops short of describing expiry or format of the returned URL.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the purpose and followed by the usage rule. The long parenthetical action list is informative but slightly heavy; otherwise there is no wasted wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description needn't explain the return value, and all 8 parameters are schema-documented. It still supplies the one behavioral fact an agent needs (return the URL for the user to open), so it is complete for this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so each parameter is already documented (action enum, provider, destination, articleSlug, etc.). The description echoes the action categories but does not add syntax or mapping detail beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Build a VideoGen app URL') and resource, plus enumerates the concrete destinations (upgrade, credits, top-ups, invite, feedback, integrations, settings, NAVIGATE). It is clearly the only URL-builder among the sibling generation/entity tools, so an agent can distinguish it immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to prefer it ('when the user needs to complete something in the VideoGen UI that MCP tools cannot do inline — especially credits or plan gates') and gives the operative constraint that selects it. This is a real when-to-use boundary rather than an implied one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_async_tasks_guidanceAsync tasks guidanceARead-onlyIdempotentInspect
How to handle async workflows, tool executions, and exports: statuses, hosted vs local wait caps, polling with get_* tools, and when webhooks apply outside MCP. Call before polling or when a start tool returns a still-running snapshot. Equivalent to reading the guidance://async-tasks MCP resource — provided as a tool for clients that don't read resources directly.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| markdown | Yes | Full guidance document in markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the description only needs to add context. It does that by clarifying the tool is equivalent to a resource read and explaining its existence for clients that don't read resources directly, which is useful behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: it states the topic and covered aspects, then gives the call condition, then clarifies its relationship to an MCP resource. Every sentence earns its place with no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a guidance tool with an output schema and full annotation coverage, the description is complete enough. It explains the subject matter, when to invoke it, and its resource equivalence, leaving no obvious gap for correct selection or invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there are no parameter semantics to document. The baseline for a parameterless tool is 4, and the description appropriately omits parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: guidance on handling async workflows, tool executions, and exports, including statuses, wait caps, polling, and webhooks. It is specific about the domain but does not explicitly distinguish itself from sibling guidance tools like get_getting_started_guidance or get_workflows_guidance, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear usage trigger: 'Call before polling or when a start tool returns a still-running snapshot.' It also notes that it's equivalent to reading a specific MCP resource and why it exists as a tool. However, it does not name alternative guidance tools or state when not to use this one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_entityGet entityARead-onlyIdempotentInspect
Fetch one entity by id, including its reference images. Built-in catalog entities are included and have isBuiltIn true.
| Name | Required | Description | Default |
|---|---|---|---|
| entityId | Yes | Saved reference entity to use. Obtain entityId from list_entities or create_entity. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | Display name. |
| entityId | Yes | Entity id (vg_enti_...). |
| createdAt | Yes | Unix created-at timestamp. |
| isBuiltIn | No | True for VideoGen catalog entities that cannot be modified. |
| updatedAt | Yes | Unix updated-at timestamp. |
| entityType | Yes | ACTOR, PRODUCT, VISUAL_STYLE, SLIDESHOW_THEME, BRAND, LOCATION, or PROP. |
| references | Yes | Attached reference images. |
| actorConfig | No | Voice/avatar summary for ACTOR entities; null for other types. |
| brandConfig | No | Brand guidance for BRAND entities; null for other types. |
| description | Yes | Description (empty when unset). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuinely new behavioral context beyond them: the response includes reference images, built-in catalog entities are returned as well, and those carry an isBuiltIn flag. That is real return-content disclosure the annotations do not provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action and immediately followed by the most useful return detail. No filler, no repetition of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema, full annotation coverage, and a fully described single parameter, the definition is nearly self-sufficient. The one thing left implicit is the relationship to list_entities/create_entity for obtaining the id, which the schema happens to cover anyway.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the entityId parameter already documents its own origin (list_entities or create_entity). The description's 'by id' adds no format, type, or sourcing detail beyond the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: fetch one entity by id, and adds the scope qualifier 'one' that distinguishes it from the sibling list_entities. It never explicitly names the sibling tools, but the singular/plural contrast makes the retrieval semantics unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: an agent infers it should call this when it has a single entityId and wants that record. There is no explicit when-to-use vs list_entities or when-not guidance, and no statement that the id can be sourced from list_entities or create_entity (that lives only in the schema).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fileGet fileARead-onlyIdempotentInspect
Fetch a file by id with freshly hydrated (non-expired) signed URLs for its thumbnail, preview, and download renditions. Set wait: true to poll until the file finishes processing — use this right after PUTting bytes to a create_file_upload URL.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | When true, poll until the file finishes processing and a rendition is ready. Defaults to false (a single fetch). | |
| fileId | Yes | Asset to fetch. Use fileId from upload_file, create_file_upload, list_files, or a generation result. | |
| timeoutMs | No | Maximum time to wait for processing before giving up, in milliseconds. | |
| pollIntervalMs | No | Time between readiness checks in milliseconds when wait is true. Omit to poll every 3000 milliseconds. |
Output Schema
| Name | Required | Description |
|---|---|---|
| type | No | File type once processing has determined it. |
| scope | No | File scope. |
| fileId | Yes | File id (vg_file_...). |
| hlsSource | No | |
| description | No | File description when analyzed. |
| displayName | No | Display name for the file. |
| downloadUrl | No | Signed download URL when ready. |
| publicHlsUrl | No | |
| thumbnailUrl | No | Signed thumbnail URL when available. |
| previewSource | No | |
| downloadSource | No | |
| sourceToolType | No | |
| transcriptText | No | Plain transcript text when available. |
| durationSeconds | No | Duration in seconds for video/audio; null for images. |
| thumbnailSource | No | |
| publicPlaybackId | No | |
| downloadUrlExpiresAt | No | Unix expiry for downloadUrl. |
| sourceToolExecutionId | No | |
| thumbnailUrlExpiresAt | No | Unix expiry for thumbnailUrl. |
| isPublicPreviewEnabled | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds real behavioral context beyond them: URLs are hydrated/non-expired, and wait:true switches the tool into a polling mode until processing finishes — a state-dependent behavior the annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core fetch behavior and followed by the conditional polling instruction. No filler, no restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, so return payload details need not be spelled out, and it still names the rendition types an agent will receive. With 100% schema coverage and full annotation coverage, nothing needed to invoke this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3 and the schema already documents fileId, wait, timeoutMs, and pollIntervalMs. The description still earns credit by tying wait:true to a concrete workflow moment rather than restating the boolean's definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (fetch) plus resource (file by id) and further specifies what comes back: freshly hydrated, non-expired signed URLs for thumbnail, preview, and download renditions. That return-oriented detail separates it cleanly from siblings like list_files, upload_file, and create_file_upload.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit workflow trigger: set wait: true and call this right after PUTting bytes to a create_file_upload URL, naming the sibling it follows. It does not state when NOT to reach for this tool (e.g., versus list_files for discovery), so it stops just short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_getting_started_guidanceGetting started guidanceARead-onlyIdempotentInspect
How to authenticate, verify with get_me, introduce VideoGen with workflow example prompts, choose workflows vs media tools, and follow VideoGen id conventions. Call when connecting, onboarding, the user asks what VideoGen can do, or how to set up the API or MCP. Equivalent to reading the guidance://getting-started MCP resource — provided as a tool for clients that don't read resources directly.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| markdown | Yes | Full guidance document in markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive, closed-world behavior, so the bar is lower. The description adds real context beyond that: it is the tool equivalent of the `guidance://getting-started` resource and exists for clients that cannot read resources directly, plus an overview of what content is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences that are front-loaded with the content scope, then the invocation triggers and the resource-equivalence note. Dense but each clause carries information; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only guidance tool with annotations and an output schema, this is complete: it says what the guidance covers, when to fetch it, and why it exists in tool form. Nothing needed to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter surface to explain; the baseline for 0 params is 4. The description correctly implies a no-argument call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (getting-started guidance) and enumerates its content: authentication, verifying with get_me, VideoGen intro, workflows-vs-media-tools selection, and ID conventions. It is clearly not a data-mutation or generation tool. However, it does not distinguish itself from the sibling guidance tools (get_workflows_guidance, get_tools_vs_workflows_guidance, get_async_tasks_guidance), whose scopes it partly overlaps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit call triggers: connecting, onboarding, user asking what VideoGen can do, or setting up the API/MCP. This is clear contextual guidance. It stops short of naming alternatives or when-not conditions (e.g., 'use get_workflows_guidance instead when you only need workflow details').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_meGet accountARead-onlyIdempotentInspect
Fetch the account and team behind the API key (apiKeyId, apiKeyNickname, email, displayName, teamId). Use it as a connection test.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| Yes | Account email. | |
| teamId | Yes | Team id the API key belongs to. |
| apiKeyId | Yes | Id of the API key used for this request. |
| displayName | Yes | Account display name, or null. |
| apiKeyNickname | Yes | Nickname of the API key. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description's marginal additions are the connection-test hint and the field list, but the field list largely duplicates the existing output schema, and it says nothing about auth failures or error behavior when the key is invalid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the core action and payload, followed immediately by the practical usage note. No filler and nothing buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A zero-parameter read tool with full annotation coverage and an output schema needs only a statement of what it returns and why to call it; the description supplies both. An agent has everything required to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so there is nothing for the schema to document and no semantic gap for the description to fill. Baseline 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Fetch') and resource ('the account and team behind the API key'), and enumerates the identifying fields returned. It is clearly distinguishable from siblings like get_entity or get_project, which target different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names a use case — 'Use it as a connection test' — which tells the agent when this zero-argument tool is appropriate. It stops short of naming alternatives or exclusions, but the context is clear enough to act on.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_projectGet projectARead-onlyIdempotentInspect
Return a project's title, readiness status, editor projectUrl, timestamps, aspectRatio, and assistantId when available. Use the projectId for subsequent remix and export calls.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | Editable project to inspect. Use projectId from a workflow result or list_projects. |
Output Schema
| Name | Required | Description |
|---|---|---|
| title | Yes | Project title. |
| status | Yes | High-level project status. |
| createdAt | Yes | Unix timestamp when the project was created. |
| projectId | Yes | Project id (vg_proj_...). |
| updatedAt | Yes | Unix timestamp when the project was last updated. |
| projectUrl | Yes | Deep link to open the project in the VideoGen editor. |
| aspectRatio | Yes | |
| assistantId | Yes | Assistant conversation id, or null for older projects. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds only the detail that some fields are returned 'when available,' which is minor contextual value. It does not discuss permissions, rate limits, or pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: one front-loaded return-value summary and one usage instruction. There is no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and rich annotations covering safety, the description only needs to state purpose and relevant usage. It does so completely, including the key downstream call guidance for the projectId.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the projectId parameter and its origin. The description adds meaning beyond the schema by noting that the projectId is reusable for 'subsequent remix and export calls,' clarifying its downstream utility.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb plus resource ('Return a project's ...') and enumerates the exact fields returned, so the agent can immediately distinguish this from list_projects or export_project. It clearly states this is a single-project inspection tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear downstream guidance: 'Use the projectId for subsequent remix and export calls.' This tells the agent what to do with the result. It does not explicitly state when not to use it or name list_projects as an alternative, but the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_exportGet project exportARead-onlyIdempotentInspect
Return an export snapshot with status, progress, errors, and downloadUrl, exportFileId, thumbnailUrl, and file metadata when ready. Poll until status is succeeded, failed, or cancelled.
| Name | Required | Description | Default |
|---|---|---|---|
| exportId | Yes | Export id (vg_expo_...) from export_project. | |
| projectId | Yes | Project that owns the export. Use the same projectId passed to export_project, obtained from a workflow result or list_projects. |
Output Schema
| Name | Required | Description |
|---|---|---|
| file | No | Hydrated export file metadata. |
| error | No | Error details when status is failed; otherwise null. |
| status | No | Job status: pending, running, succeeded, failed, or cancelled. |
| exportId | Yes | Export id (vg_expo_...). |
| projectId | No | Exported project id (present after polling). |
| downloadUrl | No | Signed MP4 download URL when succeeded; otherwise null. |
| attemptIndex | No | Current or latest attempt index. |
| exportFileId | No | Exported MP4 file id when succeeded. |
| thumbnailUrl | No | Signed thumbnail URL when ready. |
| progressPercentage | No | Completion progress 0-100 (present after polling). |
| downloadUrlExpiresAt | No | Unix expiry for downloadUrl. |
| thumbnailUrlExpiresAt | No | Unix expiry for thumbnailUrl. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive, so safety is covered; the description adds the genuinely useful behavioral fact that status is asynchronous and progresses to one of three terminal states. It does not say whether a ready downloadUrl expires or how errors are surfaced across polls.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, and the payload contents are front-loaded before the polling instruction. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and annotations covering safety, the description only needs the async/polling contract — which it supplies, including terminal states. Minor gaps (poll interval guidance, downloadUrl lifetime) keep it from being fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters are documented there (exportId format vg_expo_..., projectId provenance), so the schema carries the load. The description adds no parameter-level meaning beyond naming return fields, which is the baseline 3 case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Return an export snapshot') and enumerates what comes back (status, progress, errors, downloadUrl, exportFileId, thumbnailUrl, file metadata), so an agent knows this is the retrieval half of the export flow. It does not name the sibling export_project as the initiator that produces the exportId, leaving that differentiation to the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Poll until status is succeeded, failed, or cancelled' gives an explicit usage pattern plus the exact terminal conditions that justify repeated calls. It stops short of stating polling cadence, timeout behavior, or what to do after a terminal failure state.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tool_executionGet tool executionARead-onlyIdempotentInspect
Return a tool execution snapshot with status, progress, attemptIndex, error details, and results. Each result includes fileId, file metadata, downloadUrl, and thumbnailUrl when available. Use this to poll a started generation without creating another asset.
| Name | Required | Description | Default |
|---|---|---|---|
| toolExecutionId | Yes | Execution to inspect or cancel. Use toolExecutionId from a media-tool start result or list_tool_executions. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | Yes | Error details when status is failed; otherwise null. |
| status | Yes | Job status: pending, running, succeeded, failed, or cancelled. |
| results | Yes | Generated results; empty until succeeded. |
| toolType | Yes | Tool name (e.g. GENERATE_IMAGE). |
| attemptIndex | Yes | Current or latest attempt index. |
| toolExecutionId | Yes | Tool execution id (vg_tool_...). |
| progressPercentage | Yes | Completion progress 0-100. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds that this is a polling operation and that thumbnailUrl is present only "when available", which is real value, but it says nothing about polling cadence, terminal statuses, or how error details/attemptIndex behave across retries.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the return payload and then the usage condition. No filler, no repetition of the tool name or title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations covering the safety profile and an output schema present, the description does not need to enumerate return values, yet it briefly does anyway. The remaining gap is operational: no guidance on how often to poll or what status values indicate completion.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter already explains where to source toolExecutionId (start result or list_tool_executions). The description adds no parameter-level detail, so the baseline of 3 for fully documented schemas applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Return) and resource (tool execution snapshot) plus the fields it carries (status, progress, attemptIndex, error details, results), so the agent knows exactly what it gets. It does not name list_tool_executions or cancel_tool_execution, the nearest siblings, so differentiation is implied rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use this to poll a started generation without creating another asset" gives a clear when-to-use condition and implicitly steers away from re-invoking a generation tool. It stops short of naming the alternatives (list_tool_executions, cancel_tool_execution) or stating exclusions, so it is context rather than full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tools_vs_workflows_guidanceTools vs workflows guidanceARead-onlyIdempotentInspect
When to use standalone media tools (automatic model routing for a single asset) versus workflows (full editable professional video). Call when choosing between generate_* tools and workflow tools. Equivalent to reading the guidance://tools-vs-workflows MCP resource — provided as a tool for clients that don't read resources directly.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| markdown | Yes | Full guidance document in markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds real context beyond that: it is equivalent to the `guidance://tools-vs-workflows` resource and exists for clients that don't read resources directly, explaining why a read-only tool of this kind exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the purpose, then the invocation condition, then the resource-equivalence rationale. No sentence is redundant and each adds a distinct fact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and annotations carry the safety profile. Nothing required to call a zero-parameter guidance tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the baseline is 4. There is no parameter syntax to document, and the description correctly does not invent any.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (guidance on tools vs workflows) and the comparison it resolves. Among the several guidance siblings (get_workflows_guidance, get_getting_started_guidance, get_async_tasks_guidance), the topic is scoped clearly enough that an agent can pick the right one without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the trigger condition — 'Call when choosing between generate_* tools and workflow tools' — and identifies the alternatives at the decision point. The remaining behavior, actually invoking it, follows directly from that condition with nothing left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_workflow_runGet workflow runARead-onlyIdempotentInspect
Return a workflow run with status, progress, error details, projectId, projectUrl, and downloadUrl when auto-export has finished. Use this to poll an existing run without starting another project.
| Name | Required | Description | Default |
|---|---|---|---|
| workflowRunId | Yes | Run to inspect or cancel. Use workflowRunId from a workflow start result or list_workflow_runs. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Error details when status is failed; otherwise null. |
| status | No | Job status: pending, running, succeeded, failed, or cancelled. |
| exportId | No | Export id when autoExport succeeded (vg_expo_...). |
| projectId | Yes | Project created for this exact workflow attempt (vg_proj_...). A retry creates a different project. |
| projectUrl | Yes | Deep link to the project created for this exact workflow attempt. Keep it paired with workflowRunId; a retry returns a new URL. |
| downloadUrl | No | Signed MP4 download URL when autoExport succeeded. Give this to the user. |
| attemptIndex | No | Current or latest attempt index. |
| exportFileId | No | File id of the rendered MP4 when autoExport succeeded. |
| workflowType | No | Workflow type (present after polling). |
| workflowRunId | Yes | Workflow run id (vg_work_...). Keep it paired with this response's projectId and projectUrl; a retry returns a new tuple. |
| remixActionIds | No | Remix action ids from the start response (empty when none requested). |
| progressPercentage | No | Completion progress 0-100 (present after polling). |
| downloadUrlExpiresAt | No | Unix expiry for downloadUrl. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description earns credit beyond that by disclosing a conditional behavior: downloadUrl is only populated once auto-export has finished, which tells the agent how to interpret a missing field. It stops short of describing behavior for unknown or failed run IDs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, zero filler. The return payload is front-loaded and the usage constraint follows, so the agent gets the essential facts first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with full annotation coverage and an output schema that carries the return structure, nothing critical is missing. The description correctly focuses on scope and the one conditional output nuance rather than re-documenting the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter already documents the workflowRunId source ('from a workflow start result or list_workflow_runs'). The description adds no additional syntax, format, or lookup guidance for the parameter, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Return a workflow run') and enumerates the payload fields (status, progress, error details, projectId, projectUrl, downloadUrl), which is far more than a restatement of the name. It implicitly separates itself from list_workflow_runs and from project-starting tools, but never names an actual sibling, so differentiation is inferred rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use this to poll an existing run without starting another project' states a clear usage context and an implicit exclusion (don't use it to create runs). It does not, however, contrast against nearby siblings such as list_workflow_runs (plural listing) or get_project_export, which an agent may confuse with this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_workflows_guidanceWorkflows guidanceARead-onlyIdempotentInspect
Canonical run → remix → export flow and when to use each workflow tool. Prefer script_to_video for longer narrated / informational videos; keep storyboard_to_video to ≤3 scenes unless the user asks for more. Call before starting a full video project. Equivalent to reading the guidance://workflows MCP resource — provided as a tool for clients that don't read resources directly.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| markdown | Yes | Full guidance document in markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuinely useful context beyond that: it is a static guidance payload equivalent to the guidance://workflows MCP resource, and it exists specifically for clients that don't read resources — which tells the agent this call has no side effects and no input-dependent output variation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly packed sentences, front-loaded with the primary purpose, then routing rules, then the trigger condition. Every sentence carries distinct information with no repetition of the name or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is not required, and the description covers purpose, trigger timing, and the resource equivalence. For a no-input, read-only guidance tool this is fully sufficient to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there are no parameter semantics to document; the baseline for a 0-param tool is 4. Nothing in the description is needed here and nothing is misleading.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific deliverable: the canonical run → remix → export flow plus when to use each workflow tool. This clearly distinguishes it from action siblings like script_to_video or remix_project. It does not explicitly differentiate itself from other guidance siblings (e.g., get_tools_vs_workflows_guidance, get_getting_started_guidance), which keeps it short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives direct when-to-use instruction ('Call before starting a full video project') and even routes between alternatives ('Prefer script_to_video for longer narrated / informational videos; keep storyboard_to_video to ≤3 scenes unless the user asks for more'). That is explicit selection guidance an agent can act on without inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
image_3d_effectImage 3D effectBInspect
Add 3D parallax motion to a still image, producing a video.
| Name | Required | Description | Default |
|---|---|---|---|
| imageFileId | Yes | Image to transform. Use fileId from upload_file, list_files, or a succeeded image-generation result. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Error details when status is failed; otherwise null. |
| status | No | Job status: pending, running, succeeded, failed, or cancelled. |
| results | No | Generated results with download URLs when succeeded. |
| toolType | No | Tool name (e.g. GENERATE_IMAGE). |
| attemptIndex | No | Current or latest attempt index. |
| toolExecutionId | Yes | Tool execution id (vg_tool_...). |
| progressPercentage | No | Completion progress 0-100 (present after polling). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false and destructiveHint=false, and the description's 'producing a video' is consistent with that mutation profile. However, for a media-generation tool in a suite that exposes get_async_tasks_guidance and get_tool_execution, it says nothing about whether the call blocks or runs asynchronously, or about cost/latency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the action and ending with the output artifact. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and the parameter is fully documented in the schema. The remaining gap is operational: no hint that this is a likely long-running generation whose result may need polling via the async task tools present in the sibling set.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter and schema description coverage is 100%: the schema itself explains that imageFileId comes from upload_file, list_files, or a succeeded image generation. The description adds nothing beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific transformation ('add 3D parallax motion to a still image') plus the output form ('producing a video'), which is enough for an agent to distinguish it from image-only siblings like upscale_image or vectorize_image. It stops short of naming any sibling alternative, so it doesn't reach the explicit differentiation of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description contains no when-to-use or when-not-to-use guidance and names no alternatives, even though siblings such as generate_video_clip and script_to_video also produce video output. The agent must infer the selection context from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_entitiesList entitiesARead-onlyIdempotentInspect
List built-in actors, products, visual styles, and slideshow themes plus team entities (including brands, locations, and props). Built-in rows have isBuiltIn true and cannot be updated or archived. Filter with entityType when you only need one kind.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of items to return. | |
| cursor | No | Pagination cursor from a previous response's `nextCursor`. | |
| entityType | No | When set, only return entities of this type. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hasMore | Yes | Whether another page is available. |
| entities | Yes | Entities visible to the API key. |
| nextCursor | Yes | Cursor for the next page, or null. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, but the description adds real value beyond them by disclosing that built-in rows carry isBuiltIn=true and cannot be updated or archived. That immutability caveat is behavioral context the agent cannot get from the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the resource enumeration, then immutability, then filtering. Little waste, though the listing could be slightly tighter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and the description covers entity kinds, immutability, and filtering. It leaves only the when-to-use-vs-get_entity routing implicit, which keeps it short of fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents limit, cursor, and entityType. The description only reinforces the entityType filter behavior, adding no syntax or format detail beyond the schema; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ('List') plus resource ('entities'), with an explicit enumeration of what kinds are returned: built-in actors, products, visual styles, slideshow themes, plus team entities like brands, locations, props. This clearly distinguishes it from sibling list tools such as list_files and list_projects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It offers one usage hint ('Filter with entityType when you only need one kind'), which is a genuine when-to-use condition. However, it never routes the agent toward get_entity for single-entity retrieval or names any alternative/exclusion, so guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_filesList filesBRead-onlyIdempotentInspect
List files visible to the current API key.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of items to return. | |
| cursor | No | Pagination cursor from a previous response's `nextCursor`. |
Output Schema
| Name | Required | Description |
|---|---|---|
| files | Yes | Files visible to the API key. |
| hasMore | Yes | Whether another page is available. |
| nextCursor | Yes | Cursor for the next page, or null. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, so the safety profile is covered. The description adds the key-scoping constraint, which is useful context beyond annotations, but says nothing about pagination behavior or return shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the scope constraint front-loaded and no filler. Nothing could be removed without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and annotations cover the safety profile. However, for a list tool in a large sibling set, the absence of pagination guidance and sibling differentiation leaves clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so limit and cursor are fully documented in the schema. The description adds no parameter-level detail; baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (files) with a scoping qualifier ('visible to the current API key'). This distinguishes it from get_file and create_file_upload, but does not explicitly differentiate from sibling list_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No statement of when to use this tool versus alternatives like get_file for a single file. The scope qualifier implies a per-key listing but no exclusions or routing guidance are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_languagesList languagesARead-onlyIdempotentInspect
Return supported narration and caption languages as languageCode and English name pairs. Use these codes when selecting workflow output languages.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Optional case-insensitive substring filter across each item's searchable text fields. |
Output Schema
| Name | Required | Description |
|---|---|---|
| languages | Yes | Supported languages. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is fully covered. The description adds only the returned field pair (languageCode + English name), which is largely duplicated by the output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the return content first, then the intended use. Nothing is redundant and the purpose is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With rich annotations, a full output schema, and a single fully-documented optional parameter, the definition supplies everything needed to call it correctly. Only marginal detail, such as which language set is covered, is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one optional 'query' parameter with 100% schema description coverage, so the schema fully documents the substring-filter behavior. The description adds no syntax or filtering detail beyond that, which is the correct baseline when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb and resource ('Return supported narration and caption languages') plus the shape of each entry (languageCode and English name pairs). An agent can distinguish this lookup tool from list_tts_voices and other list_* siblings from the description alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the downstream use: 'Use these codes when selecting workflow output languages,' which tells the agent when to reach for this tool. It stops short of naming alternatives or stating when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_project_remix_actionsList project remix actionsARead-onlyIdempotentInspect
Return remix actions for a project with action ids, types, status, progress, attempts, and error details, plus pagination metadata. Poll after remix_project to determine when edits are ready for export.
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | Editable project to inspect. Use projectId from a workflow result or list_projects. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hasMore | Yes | Whether another page is available. |
| nextCursor | Yes | Cursor for the next page, or null. |
| remixActions | Yes | Remix actions for the project. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered; the description adds value beyond that by disclosing the polling workflow and that pagination metadata is included. It does not mention rate limits or how large a result set can be, which matters for a polled list endpoint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero filler: the first covers the return payload, the second the usage trigger. Front-loaded and every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be spelled out, and the annotations carry the safety profile; the description still covers purpose and the polling use case. The one unaddressed point is that pagination metadata is returned with no corresponding input parameter, leaving the agent unsure whether it must page or always receives the full set.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter and schema description coverage is 100%; the schema itself explains projectId and where to obtain it (workflow result or list_projects). The description adds no syntax, format, or filtering semantics beyond that, so the baseline 3 for schema-covered parameters applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (return remix actions for a project) and enumerates what each action record contains (ids, types, status, progress, attempts, errors), so the agent knows exactly what it gets. However, it never differentiates itself from the other readiness-oriented sibling get_project_export, which an agent could plausibly confuse for the 'edits ready for export' check.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Second sentence is a genuine routing cue: poll after remix_project to learn when edits are ready for export. That answers 'when do I call this' clearly. It stops short of stating when NOT to use it (e.g., use get_project_export for export status, or list_tool_executions for other async work).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsList projectsARead-onlyIdempotentInspect
Browse projects in the authenticated team, including dashboard-created projects, most recently updated first. Returns project ids, titles, status, editor URLs, timestamps, and aspect ratios with a pagination cursor.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of items to return. | |
| cursor | No | Pagination cursor from a previous response's `nextCursor`. | |
| selfOnly | No | When true, restrict results to items created by the API key owner rather than the whole team. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hasMore | Yes | Whether another page is available. |
| projects | Yes | Projects, most recently updated first. |
| nextCursor | Yes | Cursor for the next page, or null when hasMore is false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety bar is low. The description nonetheless adds real behavioral context: results are scoped to the authenticated team, ordered most-recently-updated first, and paginated via a cursor.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with scope and ordering before the return/pagination note. No filler; every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the return-value enumeration is mildly redundant but harmless. Scope, ordering, and pagination are covered; only the selfOnly team-vs-owner distinction is left entirely to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the three parameters are fully documented in the schema and the baseline is 3. The description adds no parameter-level detail (selfOnly, limit, cursor are untouched), so it neither helps nor hurts.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (browse/list) and resource (projects), scoped to the authenticated team and including dashboard-created ones. It distinguishes scope well, though it never names the single-item sibling (get_project) the way a 5 would.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'browse' and the mention of a pagination cursor suggest a discovery/listing use case, but there is no explicit when-to-use vs get_project or when-not guidance. Adequate but leaves selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tool_executionsList tool executionsARead-onlyIdempotentInspect
List past tool executions, most recent first.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of items to return. | |
| cursor | No | Pagination cursor from a previous response's `nextCursor`. | |
| selfOnly | No | When true, restrict results to items created by the API key owner rather than the whole team. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hasMore | Yes | Whether another page is available. |
| nextCursor | Yes | Cursor for the next page, or null. |
| toolExecutions | Yes | Tool executions, most recent first. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered elsewhere. The description's contribution is the result ordering ('most recent first'); it says nothing about default page size, total counts, or whether results are team-scoped, though selfOnly and cursor in the schema hint at these.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the ordering guarantee front-loaded alongside the purpose. There is no filler and nothing to trim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is unnecessary, and the annotations cover the safety profile. The only real gap is the absence of any routing hint toward get_tool_execution versus this list tool, which for a 48-sibling suite would be valuable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all three optional parameters (limit, cursor, selfOnly) documented inline including the limit maximum and the cursor's origin. The description adds no parameter-level detail beyond what the schema already provides, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List past tool executions') plus an ordering guarantee ('most recent first'), which the schema does not convey. It implicitly contrasts with the singular sibling get_tool_execution, but never names it, so the list-vs-get distinction is left for the agent to infer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'past tool executions' hints at a history/audit use case, but there is no explicit when-to-use guidance and no mention of when to prefer get_tool_execution for a single record. With 48 siblings including near-duplicates, that omission matters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tts_voicesList text-to-speech voicesARead-onlyIdempotentInspect
Return a page of narration voices with voiceId, display name, language, accent, description, deprecation status, and supportsDirectToolExecution. Use a voice with supportsDirectToolExecution true for text_to_speech; nextCursor fetches more voices.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of items to return. | |
| query | No | Optional case-insensitive substring filter across each item's searchable text fields. | |
| cursor | No | Pagination cursor from a previous response's `nextCursor`. | |
| includeDeprecatedVoices | No | Whether to include older voices that remain callable. Omit to exclude deprecated voices. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hasMore | Yes | Whether another page is available. |
| ttsVoices | Yes | Available text-to-speech voices. |
| nextCursor | Yes | Cursor for the next page, or null. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description adds real behavioral value beyond that: pagination via nextCursor and the supportsDirectToolExecution gating rule that determines whether a returned voice is usable by text_to_speech.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero filler, front-loaded with the returned resource and fields before the usage instruction. Every clause carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so enumerating return fields is partly redundant, but the mention of supportsDirectToolExecution supplies the one cross-tool decision rule the schema cannot. Pagination and filtering are fully covered, leaving no functional gap for a four-parameter, zero-required list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents limit, query, cursor and includeDeprecatedVoices. The description only echoes cursor (as nextCursor) and deprecation status without adding syntax, defaults, or filter semantics beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Return a page of') and resource ('narration voices'), then enumerates the returned fields. No sibling tool lists voices, so the resource name alone distinguishes it from list_languages, list_files, and the other list_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: 'Use a voice with supportsDirectToolExecution true for text_to_speech' names the downstream tool and the selection condition, and 'nextCursor fetches more voices' explains how to continue paging. It stops short of saying when to call this versus e.g. hardcoding a voiceId, so it is strong but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_workflow_runsList workflow runsARead-onlyIdempotentInspect
Return a page of workflow runs, most recent first, with run and project ids, status, progress, errors, and export URLs when available, plus nextCursor for pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of items to return. | |
| cursor | No | Pagination cursor from a previous response's `nextCursor`. | |
| selfOnly | No | When true, restrict results to items created by the API key owner rather than the whole team. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hasMore | Yes | Whether another page is available. |
| nextCursor | Yes | Cursor for the next page, or null. |
| workflowRuns | Yes | Workflow runs, most recent first. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive, closed-world behavior, so the bar is low. The description still adds real context beyond them: results are ordered most-recent-first, paginated via nextCursor, and can omit export URLs when unavailable, which flags potentially missing fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that leads with the action and resource before enumerating fields. It is slightly dense with an inline field list, but every clause carries information and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be re-explained, and annotations carry the safety profile. The description still supplies ordering and pagination behavior, leaving only the list-vs-single vs cancel routing to inference, which is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all three parameters (limit, cursor, selfOnly) are documented there. The description only echoes the pagination cursor concept via nextCursor, adding little syntax or format detail beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb ('Return a page of') plus specific resource ('workflow runs'), with useful scope detail like ordering ('most recent first') and returned fields. It does not explicitly distinguish itself from the sibling get_workflow_run, so an agent must infer the singular/plural split.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to reach for this versus get_workflow_run (single run) or cancel_workflow_run. The list semantics are implied by the name, but there are no stated conditions, exclusions, or named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_uploaderOpen uploaderARead-onlyIdempotentInspect
Open an in-chat file uploader (ChatGPT only). The user picks a file, it is uploaded to VideoGen, and its file id (vg_file_...) is reported back for use in voiceover_to_video, slideshow_to_video, logos, or B-roll. Prefer this over asking the user to paste a link. On clients without in-chat UI, use upload_file (small files) or create_file_upload (large files) instead. Returns the uploader launch status; the file id arrives after the user completes the upload.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | Uploader launch status: ready. This is not an upload completion result; the widget reports the file id after the user uploads. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuinely new behavior: the two-phase async nature (launch status returned now, file id only after the user finishes), client gating, and the consumer tools. Not a 5 only because it doesn't mention auth or failure/timeout behavior when the user never completes the upload.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences, front-loaded with purpose, then downstream use, then preference, then fallbacks and return behavior. No filler and each sentence carries distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, annotations covering safety, and zero parameters, the description supplies everything else an agent needs: platform constraint, fallback routing, the id format, the consumer tools, and the asynchronous return timing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4; there is nothing for the description to clarify beyond noting that the file id arrives asynchronously rather than as an argument.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Open an in-chat file uploader') plus the platform gate (ChatGPT only) and the payload produced (vg_file_... id for downstream video tools). An agent can distinguish it from upload_file/create_file_upload immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the fallbacks (upload_file for small files, create_file_upload for large files) and the condition selecting them (clients without in-chat UI), and states a preference rule ('Prefer this over asking the user to paste a link'). This is exactly the when/when-not/alternative guidance wanted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prompt_to_video_clipPrompt to videoAInspect
Generate one short AI video clip from a prompt inside a new editable project. Returns workflowRunId, projectId, and projectUrl; poll get_workflow_run for status and downloadUrl after auto-export.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | Description of the short video clip. | |
| quality | No | Video generation quality. Omit to use workspace settings. | |
| autoExport | No | When true (the default), the run stays in progress until an MP4 is ready. Use downloadUrl from the result. Set false only if you will call remix_project and then export_project yourself. | |
| aspectRatio | No | Output aspect ratio as width:height units (not pixels). Example: { width: 16, height: 9 }. | |
| imageFileIds | No | Reference images to guide the generated appearance. Use fileId values from upload_file, get_file, or list_files. | |
| durationSeconds | No | Requested clip playback duration in seconds. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Error details when status is failed; otherwise null. |
| status | No | Job status: pending, running, succeeded, failed, or cancelled. |
| exportId | No | Export id when autoExport succeeded (vg_expo_...). |
| projectId | Yes | Project created for this exact workflow attempt (vg_proj_...). A retry creates a different project. |
| projectUrl | Yes | Deep link to the project created for this exact workflow attempt. Keep it paired with workflowRunId; a retry returns a new URL. |
| downloadUrl | No | Signed MP4 download URL when autoExport succeeded. Give this to the user. |
| attemptIndex | No | Current or latest attempt index. |
| exportFileId | No | File id of the rendered MP4 when autoExport succeeded. |
| workflowType | No | Workflow type (present after polling). |
| workflowRunId | Yes | Workflow run id (vg_work_...). Keep it paired with this response's projectId and projectUrl; a retry returns a new tuple. |
| remixActionIds | No | Remix action ids from the start response (empty when none requested). |
| progressPercentage | No | Completion progress 0-100 (present after polling). |
| downloadUrlExpiresAt | No | Unix expiry for downloadUrl. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare a non-read-only, non-destructive, non-idempotent, closed-world mutation, and the description adds meaningful behavior on top: it creates a new editable project and is asynchronous, requiring polling of get_workflow_run, with auto-export producing an MP4. That async lifecycle and the project side effect are not derivable from the annotations alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with zero waste; the core action is front-loaded and the async follow-up is second. Every clause (new editable project, returned IDs, polling target, auto-export) earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter creation tool with an output schema present, the description covers the async return lifecycle and the auto-export path without needing to restate return values. The remaining gap is sibling selection (generate_video_clip vs. this tool), which is left unresolved.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents prompt, quality, autoExport, aspectRatio, imageFileIds, and durationSeconds in detail, including the autoExport/remix_project interaction. The description adds no parameter-level detail beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and resource: 'Generate one short AI video clip from a prompt inside a new editable project,' which is specific about scope (single clip, new project). However, it never distinguishes itself from the sibling generate_video_clip, whose name implies a near-identical job, so an agent cannot tell the two apart from the text alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence gives a clear follow-up pattern ('poll get_workflow_run for status and downloadUrl after auto-export'), which is useful operational guidance. But there is no when-to-use vs. when-not guidance relative to generate_video_clip, script_to_video, storyboard_to_video, or the other video-producing siblings, so selection is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remix_projectRemix projectADestructiveInspect
Apply curated edits to an existing project. The original project is edited in place unless saveAsNewProject is true. CONVERT_IMAGES_TO_VIDEOS generates AI video clips from every still and is expensive. Use ZOOM for cheap Ken Burns camera motion. Poll with list_project_remix_actions for status.
| Name | Required | Description | Default |
|---|---|---|---|
| edits | Yes | Curated edits to apply in order. CONVERT_IMAGES_TO_VIDEOS generates AI video clips from every still and is expensive. Use ZOOM for cheap Ken Burns camera motion. | |
| projectId | Yes | Editable project to remix. Use projectId from a workflow result, list_projects, or get_project. | |
| saveAsNewProject | No | When true, duplicate the project and apply edits to the copy. When omitted, edit the original project in place. |
Output Schema
| Name | Required | Description |
|---|---|---|
| projectId | Yes | Edited project id (or the duplicate when saveAsNewProject). |
| projectUrl | Yes | Deep link to the project in the VideoGen editor. |
| remixActionIds | Yes | Remix action ids, one per requested action in order. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With destructiveHint=true and readOnlyHint=false already declared, the description still adds real context: the original project is edited in place unless saveAsNewProject is true, the expensive operation is called out by cost, and the async nature is disclosed via the polling instruction. This is exactly the additional context annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, zero filler, front-loaded with the core action and the mutation semantics before cost and polling details. Every sentence carries actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, and the description covers the remaining essentials: mutation semantics, cost tradeoff between edits, and the follow-up polling tool for async status. Nothing needed to invoke it safely is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already documents saveAsNewProject, projectId sourcing, and each edit enum value in detail. The description's parameter-related content (saveAsNewProject behavior, ZOOM vs CONVERT) largely repeats the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Apply curated edits to an existing project') and immediately disambiguates scope from generic generation siblings by framing it as editing an existing project. The in-place-vs-copy behavior further pins down what kind of operation this is.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit selection guidance between edit modes: CONVERT_IMAGES_TO_VIDEOS is expensive, ZOOM is the cheap Ken Burns option, and it names list_project_remix_actions as the polling tool. It does not, however, say when to prefer remix_project over sibling generators like slideshow_to_video or generate_video_clip.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_entity_referenceRemove entity referenceADestructiveIdempotentInspect
Soft-archive a reference attachment on a team entity without deleting the source file. If it was the default reference, another reference is promoted when available. Returns the entity with its remaining references. Retrying a removed attachment can fail because it is no longer active. Built-in entities cannot have references removed.
| Name | Required | Description | Default |
|---|---|---|---|
| fileId | Yes | Reference image file id (vg_file_...) to remove. | |
| entityId | Yes | Saved reference entity to use. Obtain entityId from list_entities or create_entity. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | Display name. |
| entityId | Yes | Entity id (vg_enti_...). |
| createdAt | Yes | Unix created-at timestamp. |
| isBuiltIn | No | True for VideoGen catalog entities that cannot be modified. |
| updatedAt | Yes | Unix updated-at timestamp. |
| entityType | Yes | ACTOR, PRODUCT, VISUAL_STYLE, SLIDESHOW_THEME, BRAND, LOCATION, or PROP. |
| references | Yes | Attached reference images. |
| actorConfig | No | Voice/avatar summary for ACTOR entities; null for other types. |
| brandConfig | No | Brand guidance for BRAND entities; null for other types. |
| description | Yes | Description (empty when unset). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial texture beyond the annotations: it discloses the operation is a soft-archive (not a hard delete), that a default reference promotes a replacement, that the response is the entity with its remaining references, and that built-in entities are ineligible. The 'retrying can fail because it is no longer active' note sits in mild tension with idempotentHint=true, though soft-archiving is still idempotent in effect, so this is a nuance rather than a contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four compact sentences, each front-loading the most important fact (soft-archive, no source deletion) with no filler. Slightly dense and the return-value sentence is partly redundant given an output schema exists, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema already exists, the description need not explain the return payload, yet it usefully confirms what comes back. Combined with the soft-archive semantics, default-promotion behavior, retry caveat, and built-in restriction, it is complete enough for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are fully documented in the schema. The description adds no syntax, format, or constraint detail about entityId/fileId beyond what the schema states, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Soft-archive a reference attachment on a team entity.' The scope (reference attachment vs. source file) and the contrast with sibling tools add_entity_reference and archive_entity are unambiguous, so an agent can select it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a clear exclusion ('Built-in entities cannot have references removed') and a safety precondition ('without deleting the source file'), giving the agent solid context for when the call is valid. It stops short of explicitly naming an alternative tool or the when-to-use-vs-sibling routing, which keeps it below 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_image_backgroundRemove image backgroundAInspect
Create a new image with the background removed. The source file is left unchanged. Returns toolExecutionId; get_tool_execution provides status and results with the output image fileId and downloadUrl.
| Name | Required | Description | Default |
|---|---|---|---|
| imageFileId | Yes | Image to transform. Use fileId from upload_file, list_files, or a succeeded image-generation result. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Error details when status is failed; otherwise null. |
| status | No | Job status: pending, running, succeeded, failed, or cancelled. |
| results | No | Generated results with download URLs when succeeded. |
| toolType | No | Tool name (e.g. GENERATE_IMAGE). |
| attemptIndex | No | Current or latest attempt index. |
| toolExecutionId | Yes | Tool execution id (vg_tool_...). |
| progressPercentage | No | Completion progress 0-100 (present after polling). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real behavior beyond the annotations: the source file is left unchanged (clarifying that the mutating, non-destructive, non-idempotent operation does not overwrite the original) and that execution is asynchronous and must be polled via get_tool_execution. It stops short of describing failure modes or processing time.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with zero filler: purpose first, then the safety-relevant guarantee, then the async retrieval path. Every sentence earns its place and the most important facts are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is not required, yet the description usefully points to get_tool_execution for status and results. Coverage of the input contract and the async lifecycle is adequate, with only the lack of any error/timeout context keeping it from a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter and schema description coverage is 100%, so the schema already defines imageFileId and its acceptable sources. The description references the 'source file' only implicitly and adds no format or constraint detail beyond the schema, which is the expected baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a new image with the background removed'), which cleanly distinguishes it from the sibling remove_video_background and from vectorize_image/upscale_image. An agent can select it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the async workflow by stating it returns a toolExecutionId and that get_tool_execution provides status and results, which is genuine usage guidance. However, it never states when to choose this over siblings like remove_video_background or what input images qualify beyond the schema's own note.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_video_backgroundRemove video backgroundAInspect
Create a new video with the background removed. The source file is left unchanged. Returns toolExecutionId; get_tool_execution provides status and results with the output video fileId and downloadUrl.
| Name | Required | Description | Default |
|---|---|---|---|
| videoFileId | Yes | Video to transform. Use fileId from upload_file, list_files, or a succeeded video-generation result. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Error details when status is failed; otherwise null. |
| status | No | Job status: pending, running, succeeded, failed, or cancelled. |
| results | No | Generated results with download URLs when succeeded. |
| toolType | No | Tool name (e.g. GENERATE_IMAGE). |
| attemptIndex | No | Current or latest attempt index. |
| toolExecutionId | Yes | Tool execution id (vg_tool_...). |
| progressPercentage | No | Completion progress 0-100 (present after polling). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the generic non-read-only, non-destructive, non-idempotent profile. The description adds genuinely useful behavior beyond that: the source file is left unchanged, the call is asynchronous, and the output arrives via get_tool_execution rather than in the response.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each carrying distinct information: the action, the non-destructive guarantee, and the async result path. Front-loaded with the effect and no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter async tool that has an output schema, the description covers everything an agent needs: what is produced, that the input is preserved, and how to retrieve the result. Nothing material is left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter with 100% schema description coverage, and the schema already explains where to source the videoFileId. The description adds no parameter-level detail, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and resource ('Create a new video with the background removed') plus the key scope fact that the source is untouched. An agent can distinguish it from remove_image_background purely from the 'video' resource in the first sentence.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the async handoff ('get_tool_execution provides status and results'), which tells the agent how to complete the operation, but it never states when to choose this tool over siblings like remove_image_background or the various generate_* tools. Usage is implied rather than directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
script_to_videoScript to videoAInspect
Preferred for narrated / informational / explainer videos from text, especially ~1 minute or longer. Turn a verbatim narration script into an editable video with AI-generated visuals and captions. Prefer this over storyboard_to_video unless the user wants a short shot-directed storyboard. For avatar narration, pass actorEntityId and optionally set avatarQuality.
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | Visual style for generated images: a full, strict paragraph describing medium, texture, palette, and composition. Copy a full app default from get_workflows_guidance, or describe a custom look. Omit for the Realistic default. Image models can add extra objects, text, charts, diagrams, tables, and labels. To keep the picture simple, include this composition lock verbatim: A clear uncluttered subject centered in the frame, occupying only the middle half of the image, with generous empty margins on all four sides, no background clutter. No on-image text, letters, labels, captions, charts, diagrams, tables, legends, or infographic layout unless the user explicitly asked for one specific word or number on screen. | |
| script | Yes | Narration script, spoken verbatim. | |
| quality | No | Generation quality. Omit to use workspace settings. | |
| voiceId | No | Catalog display name (e.g. Matilda) or voice id from list_tts_voices. | |
| language | No | Output language as a BCP-47 code, such as en, es, or fr. | |
| autoExport | No | When true (the default), the run stays in progress until an MP4 is ready. Use downloadUrl from the result. Set false only if you will call remix_project and then export_project yourself. | |
| aspectRatio | No | Output aspect ratio as width:height units (not pixels). Example: { width: 16, height: 9 }. | |
| actorEntityId | No | Id of an ACTOR entity (vg_enti_...) with an image reference. When set, narration is delivered by that actor avatar. | |
| avatarQuality | No | Avatar generation quality tier. Applies when actorEntityId is provided. Omit to use workspace settings. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Error details when status is failed; otherwise null. |
| status | No | Job status: pending, running, succeeded, failed, or cancelled. |
| exportId | No | Export id when autoExport succeeded (vg_expo_...). |
| projectId | Yes | Project created for this exact workflow attempt (vg_proj_...). A retry creates a different project. |
| projectUrl | Yes | Deep link to the project created for this exact workflow attempt. Keep it paired with workflowRunId; a retry returns a new URL. |
| downloadUrl | No | Signed MP4 download URL when autoExport succeeded. Give this to the user. |
| attemptIndex | No | Current or latest attempt index. |
| exportFileId | No | File id of the rendered MP4 when autoExport succeeded. |
| workflowType | No | Workflow type (present after polling). |
| workflowRunId | Yes | Workflow run id (vg_work_...). Keep it paired with this response's projectId and projectUrl; a retry returns a new tuple. |
| remixActionIds | No | Remix action ids from the start response (empty when none requested). |
| progressPercentage | No | Completion progress 0-100 (present after polling). |
| downloadUrlExpiresAt | No | Unix expiry for downloadUrl. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a non-destructive, non-idempotent, closed-world write, so the safety profile is covered. The description adds useful behavioral context beyond that: the run yields an editable video (implying a remix path) and narration can be actor-driven via actorEntityId with an avatar quality tier. It stops short of stating run duration or export/async behavior (which the schema's autoExport note carries), so it is a solid 4 rather than a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each load-bearing: preference/scope first, core transformation second, sibling routing third, avatar note last. The most decision-relevant information is front-loaded with zero filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter write tool with full schema coverage, nested objects, annotations, and an output schema, the description covers routing, scope, and the avatar mode adequately. Return-value and export mechanics are correctly left to the output schema and the autoExport description, so only minor gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds cross-parameter meaning by tying actorEntityId and avatarQuality together into a coherent avatar-narration mode. This goes beyond the per-field schema text by explaining how the parameters combine.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Turn a verbatim narration script into an editable video') plus the concrete output attributes (AI-generated visuals and captions). It also explicitly distinguishes itself from the sibling alternative storyboard_to_video, so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use ('narrated / informational / explainer videos... ~1 minute or longer'), names the alternative ('Prefer this over storyboard_to_video'), and states the exclusion ('unless the user wants a short shot-directed storyboard'), plus the avatar-narration condition. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
slideshow_to_videoSlideshow to videoAInspect
Build an editable narrated video from an uploaded PDF or slideshow file. Upload the file first with upload_file, then pass its fileId. For avatar narration, pass actorEntityId and optionally set avatarQuality. Returns workflowRunId, projectId, and projectUrl; poll get_workflow_run for progress and downloadUrl after auto-export.
| Name | Required | Description | Default |
|---|---|---|---|
| fileId | Yes | Uploaded PDF or slideshow file id. | |
| voiceId | No | Catalog display name (e.g. Matilda) or voice id from list_tts_voices. | |
| language | No | Output language as a BCP-47 code, such as en, es, or fr. | |
| autoExport | No | When true (the default), the run stays in progress until an MP4 is ready. Use downloadUrl from the result. Set false only if you will call remix_project and then export_project yourself. | |
| aspectRatio | No | Output aspect ratio as width:height units (not pixels). Example: { width: 16, height: 9 }. | |
| slideScripts | No | Optional narration for each slide, in order. | |
| actorEntityId | No | Id of an ACTOR entity (vg_enti_...) with an image reference. When set, narration is delivered by that actor avatar. | |
| avatarQuality | No | Avatar generation quality tier. Applies when actorEntityId is provided. Omit to use workspace settings. | |
| slideshowThemeEntityId | No | Optional id of a SLIDESHOW_THEME entity (vg_enti_...) whose reference board defines the shared slide design system. Omit when converting an uploaded deck's original pages; VideoGen derives a theme from those pages in the background. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Error details when status is failed; otherwise null. |
| status | No | Job status: pending, running, succeeded, failed, or cancelled. |
| exportId | No | Export id when autoExport succeeded (vg_expo_...). |
| projectId | Yes | Project created for this exact workflow attempt (vg_proj_...). A retry creates a different project. |
| projectUrl | Yes | Deep link to the project created for this exact workflow attempt. Keep it paired with workflowRunId; a retry returns a new URL. |
| downloadUrl | No | Signed MP4 download URL when autoExport succeeded. Give this to the user. |
| attemptIndex | No | Current or latest attempt index. |
| exportFileId | No | File id of the rendered MP4 when autoExport succeeded. |
| workflowType | No | Workflow type (present after polling). |
| workflowRunId | Yes | Workflow run id (vg_work_...). Keep it paired with this response's projectId and projectUrl; a retry returns a new tuple. |
| remixActionIds | No | Remix action ids from the start response (empty when none requested). |
| progressPercentage | No | Completion progress 0-100 (present after polling). |
| downloadUrlExpiresAt | No | Unix expiry for downloadUrl. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (not read-only, not idempotent, not destructive), and the description adds meaningful async context: it returns workflowRunId/projectId/projectUrl and that progress and downloadUrl come via get_workflow_run after auto-export. This tells the agent the call is a long-running job requiring polling, which annotations alone would not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences, front-loaded with purpose, then prerequisite, then the avatar parameter path, then returns and the next step. Every sentence carries actionable content with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 9-parameter async creation tool with nested objects, the description covers the source prerequisite, the optional avatar branch, and the polling follow-up, and an output schema exists so return values need not be enumerated. It is close to complete, though the theme/autoExport decision points are left to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all nine parameters, including the upload relationship for fileId and the avatar conditions. The description reinforces the fileId prerequisite and avatar path but adds little beyond what the schema descriptions already state, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Build an editable narrated video') and scopes the input source ('from an uploaded PDF or slideshow file'), which distinguishes it from sibling video tools that take scripts, storyboards, or voiceovers. It stops short of naming those siblings explicitly, so differentiation is implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete prerequisite chain ('Upload the file first with upload_file, then pass its fileId') and conditional guidance for the avatar path ('For avatar narration, pass actorEntityId and optionally set avatarQuality'). It does not say when to prefer this over voiceover_to_video or script_to_video, so no explicit alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
storyboard_to_videoStoryboard to videoAInspect
Build an editable video from an ordered storyboard (frame-by-frame shot list). To show a saved product, actor, or visual style, pass productEntityIds, actorEntityIds, or visualStyleEntityId on each scene that should use that entity's reference images (create_entity and add_entity_reference first). A prompt alone does not attach those images. Much more credit-heavy than script_to_video: use at most 3 scenes unless the user explicitly asks for more. Prefer script_to_video for ~1 minute+ narrated / informational videos. If the user has not named a workflow, ask with pros/cons before calling this.
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | Visual style for generated images: a full, strict paragraph describing medium, texture, palette, and composition. Copy a full app default from get_workflows_guidance, or describe a custom look. Omit for the Realistic default. Image models can add extra objects, text, charts, diagrams, tables, and labels. To keep the picture simple, include this composition lock verbatim: A clear uncluttered subject centered in the frame, occupying only the middle half of the image, with generous empty margins on all four sides, no background clutter. No on-image text, letters, labels, captions, charts, diagrams, tables, legends, or infographic layout unless the user explicitly asked for one specific word or number on screen. | |
| scenes | Yes | Ordered scenes. Every scene requires a visual prompt. Put productEntityIds, actorEntityIds, or visualStyleEntityId on each scene that should use that entity's reference images. | |
| quality | No | Image generation quality for scene opening frames. Omit to use HIGH. Does not change video generation quality. | |
| autoExport | No | When true (the default), the run stays in progress until an MP4 is ready. Use downloadUrl from the result. Set false only if you will call remix_project and then export_project yourself. | |
| aspectRatio | No | Output aspect ratio as width:height units (not pixels). Example: { width: 16, height: 9 }. | |
| actorEntityIds | No | ACTOR entity ids (vg_enti_...) to keep attached to the project. Also set actorEntityIds on each scene that should show that actor. | |
| productEntityIds | No | PRODUCT entity ids (vg_enti_...) to keep attached to the project. Also set productEntityIds on each scene that should show that product. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Error details when status is failed; otherwise null. |
| status | No | Job status: pending, running, succeeded, failed, or cancelled. |
| exportId | No | Export id when autoExport succeeded (vg_expo_...). |
| projectId | Yes | Project created for this exact workflow attempt (vg_proj_...). A retry creates a different project. |
| projectUrl | Yes | Deep link to the project created for this exact workflow attempt. Keep it paired with workflowRunId; a retry returns a new URL. |
| downloadUrl | No | Signed MP4 download URL when autoExport succeeded. Give this to the user. |
| attemptIndex | No | Current or latest attempt index. |
| exportFileId | No | File id of the rendered MP4 when autoExport succeeded. |
| workflowType | No | Workflow type (present after polling). |
| workflowRunId | Yes | Workflow run id (vg_work_...). Keep it paired with this response's projectId and projectUrl; a retry returns a new tuple. |
| remixActionIds | No | Remix action ids from the start response (empty when none requested). |
| progressPercentage | No | Completion progress 0-100 (present after polling). |
| downloadUrlExpiresAt | No | Unix expiry for downloadUrl. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the mutation profile (non-readonly, non-idempotent, non-destructive) and the description goes well beyond that: it discloses the credit-cost characteristic ("Much more credit-heavy than script_to_video"), the entity-attachment mechanic ("A prompt alone does not attach those images"), and a prerequisite workflow. It does not mention auth/permissions or rate limits, so not a perfect 5, but it is rich behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then the entity mechanics, then cost/routing constraints — every sentence carries distinct, load-bearing information with no repetition of the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter nested-object tool with an output schema, the description covers the decision, the cost tradeoff, the entity prerequisite workflow, and the alternative tool. Return values are handled by the output schema, so nothing an agent needs before calling is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description nevertheless adds meaning beyond the schema by linking the entity parameters to required setup calls ("create_entity and add_entity_reference first") and clarifying the per-scene vs project-level duplication of productEntityIds/actorEntityIds. That cross-parameter guidance is genuine added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ("Build an editable video from an ordered storyboard (frame-by-frame shot list)") and explicitly distinguishes itself from the sibling script_to_video. An agent can tell this apart from script_to_video, slideshow_to_video, and prompt_to_video_clip without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete when-to-use rules (at most 3 scenes unless the user asks for more), a named alternative with its selection condition ("Prefer script_to_video for ~1 minute+ narrated / informational videos"), and a gating instruction to ask the user before calling when no workflow is named. This is exemplary routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
text_to_speechText to speechAInspect
Synthesize spoken audio from text using a catalog voice that supportsDirectToolExecution. Returns toolExecutionId on hosted clients; poll get_tool_execution for status and results containing the audio fileId, downloadUrl, and file metadata. Local calls wait for a status snapshot.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Words to synthesize as spoken audio. | |
| speed | No | Speech-rate multiplier relative to the voice's normal speed (1). | |
| voiceId | Yes | Catalog display name (e.g. Matilda) or voice id from list_tts_voices. | |
| language | No | ISO-639-1 pronunciation language hint, such as en or es. Omit or pass null to leave pronunciation language selection automatic. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Error details when status is failed; otherwise null. |
| status | No | Job status: pending, running, succeeded, failed, or cancelled. |
| results | No | Generated results with download URLs when succeeded. |
| toolType | No | Tool name (e.g. GENERATE_IMAGE). |
| attemptIndex | No | Current or latest attempt index. |
| toolExecutionId | Yes | Tool execution id (vg_tool_...). |
| progressPercentage | No | Completion progress 0-100 (present after polling). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the safety profile (not read-only, non-destructive, non-idempotent); the description adds genuinely new behavior: async execution returning toolExecutionId, the need to poll, and the synchronous short-circuit for local calls. It also introduces the 'supportsDirectToolExecution' voice constraint, which is meaningful context. Missing error/timeout behavior keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences, front-loaded with what the tool produces, followed by the async contract. Minor redundancy in restating return fields covered by the output schema, but no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so listing fileId/downloadUrl/file metadata is somewhat redundant, but the description correctly covers the async polling lifecycle and the local synchronous path. No required parameter is left unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents text, speed, voiceId, and language with format and bounds. The description only adds a quality constraint on voiceId (must support DirectToolExecution). Baseline 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (synthesize) and resource (spoken audio from text) and ties it to a catalog voice, which cleanly separates it from generate_music and generate_sound_effect siblings. It does not explicitly address the closest alternate, voiceover_to_video, so it falls just short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a real usage instruction – poll get_tool_execution for status/results on hosted clients – and names list_tts_voices as the source of voiceId. However, it never states when to prefer this over the adjacent audio-generation siblings, so usage is implied rather than fully guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_entityUpdate entityADestructiveInspect
Overwrite supplied display name, description, or complete brandConfig fields on an existing team entity. Omitted fields stay unchanged. Returns the updated entity. Built-in entities cannot be updated.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New display name. Omit to leave unchanged. | |
| entityId | Yes | Saved reference entity to use. Obtain entityId from list_entities or create_entity. | |
| brandConfig | No | Complete replacement configuration for a BRAND entity. | |
| description | No | New description. Omit to leave unchanged. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | Display name. |
| entityId | Yes | Entity id (vg_enti_...). |
| createdAt | Yes | Unix created-at timestamp. |
| isBuiltIn | No | True for VideoGen catalog entities that cannot be modified. |
| updatedAt | Yes | Unix updated-at timestamp. |
| entityType | Yes | ACTOR, PRODUCT, VISUAL_STYLE, SLIDESHOW_THEME, BRAND, LOCATION, or PROP. |
| references | Yes | Attached reference images. |
| actorConfig | No | Voice/avatar summary for ACTOR entities; null for other types. |
| brandConfig | No | Brand guidance for BRAND entities; null for other types. |
| description | Yes | Description (empty when unset). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive non-read-only behavior, and the description adds that omitted fields stay unchanged and brandConfig is a complete replacement. It does not cover permissions or irreversibility beyond the destructive hint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the operation and partial-update behavior. 'Returns the updated entity' is slightly redundant because an output schema exists, but the text remains tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter mutation with full schema coverage, an output schema, and destructive annotation, the description covers mutation semantics, partial updates, brandConfig replacement, and built-in exclusion. Nothing required for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the schema already documents name, entityId, description, and brandConfig including nested fields. The description restates partial-update and complete-replacement semantics but adds no syntax or format detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb 'Overwrite' and resource 'existing team entity' plus the affected fields. It also notes the built-in restriction and return behavior, distinguishing it from create/get/list/archive siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains this is for updating an existing entity and excludes built-in entities from updates. It does not name create_entity or archive_entity as alternatives, so routing is clear but not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_fileUpload fileAInspect
Upload a small file (image, logo, or short audio) to VideoGen by passing its base64-encoded contents, and wait until it is processed. Returns the file with its id (vg_file_...) and signed URLs. Use the returned fileId for voiceover_to_video, slideshow_to_video, logos, or B-roll. For large files, use create_file_upload instead.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Media kind to associate with the upload. Inferred when omitted. | |
| fileData | Yes | Base64-encoded contents of the file to upload. | |
| displayName | No | Human-readable label used to identify the uploaded asset in the VideoGen library. Defaults to 'upload'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| type | No | File type once processing has determined it. |
| scope | No | File scope. |
| fileId | Yes | File id (vg_file_...). |
| hlsSource | No | |
| description | No | File description when analyzed. |
| displayName | No | Display name for the file. |
| downloadUrl | No | Signed download URL when ready. |
| publicHlsUrl | No | |
| thumbnailUrl | No | Signed thumbnail URL when available. |
| previewSource | No | |
| downloadSource | No | |
| sourceToolType | No | |
| transcriptText | No | Plain transcript text when available. |
| durationSeconds | No | Duration in seconds for video/audio; null for images. |
| thumbnailSource | No | |
| publicPlaybackId | No | |
| downloadUrlExpiresAt | No | Unix expiry for downloadUrl. |
| sourceToolExecutionId | No | |
| thumbnailUrlExpiresAt | No | Unix expiry for thumbnailUrl. |
| isPublicPreviewEnabled | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (not read-only, not idempotent, not destructive), so the description's added value is the blocking/wait-until-processed behavior and the 'small file' size constraint, which are real traits beyond structured data. It stops short of stating exact size limits, auth requirements, or failure behavior, keeping it out of 5 territory.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the action and constraint, followed by the return shape and the routing to the alternative. Every sentence carries distinct information with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be re-explained, yet the description usefully summarizes the id and signed URLs. Combined with full schema coverage and clear sibling routing, nothing an agent needs to invoke this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents fileData, type (with enum), and displayName. The description restates that contents are base64-encoded but adds no syntax, format, or default details beyond what the schema provides, matching the baseline when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (upload) and resource (file) with scope qualifiers ('small file... base64-encoded contents'), and explicitly distinguishes itself from the sibling create_file_upload for large files. An agent can identify the tool and its domain without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the alternative explicitly ('For large files, use create_file_upload instead') with the condition that selects it, and enumerates downstream consumers (voiceover_to_video, slideshow_to_video, logos, B-roll) so the agent knows where the returned fileId feeds. When-to-use and when-not-to-use are both present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upscale_imageUpscale imageAInspect
Create a higher-resolution copy of an existing image for sharper presentation. Returns toolExecutionId; get_tool_execution provides status and the output image file. The source file is unchanged.
| Name | Required | Description | Default |
|---|---|---|---|
| imageFileId | Yes | Image to transform. Use fileId from upload_file, list_files, or a succeeded image-generation result. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Error details when status is failed; otherwise null. |
| status | No | Job status: pending, running, succeeded, failed, or cancelled. |
| results | No | Generated results with download URLs when succeeded. |
| toolType | No | Tool name (e.g. GENERATE_IMAGE). |
| attemptIndex | No | Current or latest attempt index. |
| toolExecutionId | Yes | Tool execution id (vg_tool_...). |
| progressPercentage | No | Completion progress 0-100 (present after polling). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (which already declare non-destructive, non-read-only), the description adds two useful behavioral facts: the source file is left unchanged, and the call is asynchronous, returning a toolExecutionId that must be polled via get_tool_execution. These are concrete details not derivable from the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action, then the async return contract, then the non-destructive guarantee. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, but the description still usefully covers the async lifecycle (toolExecutionId → get_tool_execution → output file), which is the key operational detail for calling this tool correctly. Missing only explicit routing guidance versus sibling transform tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the single parameter (imageFileId) is fully documented in the schema with sourcing hints. The description adds no further parameter-level meaning, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Create a higher-resolution copy of an existing image') and states the intent ('for sharper presentation'), so an agent can immediately tell what it does. It does not, however, differentiate itself from adjacent siblings like vectorize_image or image_3d_effect, which are other image-transform operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the name and purpose — there is no explicit guidance on when to choose upscale_image over alternatives such as vectorize_image, image_3d_effect, or upscale_video. No when-not conditions or prerequisites (e.g., required input type) are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upscale_videoUpscale videoAInspect
Create a higher-resolution copy of an existing video. Returns toolExecutionId; get_tool_execution provides status and the output video file. The source file is unchanged.
| Name | Required | Description | Default |
|---|---|---|---|
| videoFileId | Yes | Video to transform. Use fileId from upload_file, list_files, or a succeeded video-generation result. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Error details when status is failed; otherwise null. |
| status | No | Job status: pending, running, succeeded, failed, or cancelled. |
| results | No | Generated results with download URLs when succeeded. |
| toolType | No | Tool name (e.g. GENERATE_IMAGE). |
| attemptIndex | No | Current or latest attempt index. |
| toolExecutionId | Yes | Tool execution id (vg_tool_...). |
| progressPercentage | No | Completion progress 0-100 (present after polling). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint false, destructiveHint false), and the description adds genuine value beyond them: it discloses the async contract (returns toolExecutionId, poll via get_tool_execution) and confirms the source file is not modified. It does not discuss rate limits or failure modes, so it falls short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, zero filler, with the core purpose front-loaded and the async/return behavior following in priority order.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and the async follow-up path named explicitly, an agent has everything it needs: what the tool does, what it returns, and how to retrieve the result. The absence of resolution parameters is a tool-design choice, not a description gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single documented parameter, so the schema already explains where videoFileId comes from. The description adds no format or constraint detail beyond it, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a higher-resolution copy of an existing video') and names the outcome (a new file). This cleanly distinguishes it from upscale_image and the generate_* siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case (you already have a video file to improve) and notes the source is unchanged, but it never states when to prefer this over alternatives or what prerequisites apply. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vectorize_imageVectorize imageAInspect
Create an SVG vector version of an existing raster image. Returns toolExecutionId; get_tool_execution provides status and results with the SVG fileId and downloadUrl.
| Name | Required | Description | Default |
|---|---|---|---|
| imageFileId | Yes | Image to transform. Use fileId from upload_file, list_files, or a succeeded image-generation result. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Error details when status is failed; otherwise null. |
| status | No | Job status: pending, running, succeeded, failed, or cancelled. |
| results | No | Generated results with download URLs when succeeded. |
| toolType | No | Tool name (e.g. GENERATE_IMAGE). |
| attemptIndex | No | Current or latest attempt index. |
| toolExecutionId | Yes | Tool execution id (vg_tool_...). |
| progressPercentage | No | Completion progress 0-100 (present after polling). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare a non-read-only, non-destructive, non-idempotent operation, and the description goes beyond that by disclosing the asynchronous contract: it returns a toolExecutionId and results must be fetched via get_tool_execution as an SVG fileId plus downloadUrl. It stops short of noting whether the source file is retained or any rate/size constraints, but the async behavior is the key trait an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero filler; the output/pipeline information is front-loaded immediately after the purpose so the agent learns it is async before invoking. Every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with an output schema, the description covers the essential async lifecycle and naming of the follow-up tool. It omits any constraints on acceptable input images (allowed formats, resolution limits) that would matter before committing to a long-running job.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter with 100% schema description coverage, and the schema already explains that imageFileId comes from upload_file, list_files, or a succeeded image-generation result. The description adds no format, size, or validity constraints beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource pair ('Create an SVG vector version of an existing raster image') that is unmistakably distinct from neighbors like upscale_image, remove_image_background, and generate_image. An agent can tell exactly what it produces (SVG) and what it consumes (a raster image file) without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description names the companion tools (get_tool_execution) but never states when to choose vectorize_image over related transforms such as upscale_image or remove_image_background, nor any preconditions. Usage is implied by the purpose rather than explicitly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
voiceover_to_videoVoiceover to videoBInspect
Build an editable video with AI-generated visuals from an uploaded voiceover audio file.
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | Visual style for generated images: a full, strict paragraph describing medium, texture, palette, and composition. Copy a full app default from get_workflows_guidance, or describe a custom look. Omit for the Realistic default. Image models can add extra objects, text, charts, diagrams, tables, and labels. To keep the picture simple, include this composition lock verbatim: A clear uncluttered subject centered in the frame, occupying only the middle half of the image, with generous empty margins on all four sides, no background clutter. No on-image text, letters, labels, captions, charts, diagrams, tables, legends, or infographic layout unless the user explicitly asked for one specific word or number on screen. | |
| fileId | Yes | Uploaded voiceover audio file id. | |
| quality | No | Generation quality. Omit to use workspace settings. | |
| language | No | Output language as a BCP-47 code, such as en, es, or fr. | |
| autoExport | No | When true (the default), the run stays in progress until an MP4 is ready. Use downloadUrl from the result. Set false only if you will call remix_project and then export_project yourself. | |
| aspectRatio | No | Output aspect ratio as width:height units (not pixels). Example: { width: 16, height: 9 }. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Error details when status is failed; otherwise null. |
| status | No | Job status: pending, running, succeeded, failed, or cancelled. |
| exportId | No | Export id when autoExport succeeded (vg_expo_...). |
| projectId | Yes | Project created for this exact workflow attempt (vg_proj_...). A retry creates a different project. |
| projectUrl | Yes | Deep link to the project created for this exact workflow attempt. Keep it paired with workflowRunId; a retry returns a new URL. |
| downloadUrl | No | Signed MP4 download URL when autoExport succeeded. Give this to the user. |
| attemptIndex | No | Current or latest attempt index. |
| exportFileId | No | File id of the rendered MP4 when autoExport succeeded. |
| workflowType | No | Workflow type (present after polling). |
| workflowRunId | Yes | Workflow run id (vg_work_...). Keep it paired with this response's projectId and projectUrl; a retry returns a new tuple. |
| remixActionIds | No | Remix action ids from the start response (empty when none requested). |
| progressPercentage | No | Completion progress 0-100 (present after polling). |
| downloadUrlExpiresAt | No | Unix expiry for downloadUrl. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the operation is non-read-only, non-idempotent, closed-world and non-destructive, so the safety profile is covered. The description adds only mild context (the output is an editable video, visuals are AI-generated), but says nothing about the asynchronous/long-running nature of generation or that it produces a project. With annotations carrying the safety burden, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with zero filler. Every clause (build, editable, AI-generated visuals, uploaded voiceover) carries distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the schema fully documents all six parameters including the autoExport/remix_project workflow. The main gap is that the description does not mention the long-running generation behavior of this tool, but for a 1-required-parameter generation endpoint the definition is largely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already documents style, quality, language, autoExport and aspectRatio in detail. The description only maps loosely to fileId ("uploaded voiceover audio file") and style ("AI-generated visuals"), adding nothing beyond what the schema already provides. Baseline 3 for a fully documented schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("Build"), a specific output ("editable video with AI-generated visuals") and a specific input source ("uploaded voiceover audio file"). An agent can distinguish it from script_to_video or slideshow_to_video by the voiceover-audio input, but the description never names those alternatives, so differentiation is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a precondition (you must already have an uploaded voiceover file) but gives no when-to-use guidance and no comparison to the several sibling video generators. Nothing tells the agent when to pick this over script_to_video or storyboard_to_video.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
37 tool updates
- Changed
add_entity_reference2 fields changed- changed
Input schema / properties / entityId / descriptionPrevious value: -"Entity id (vg_enti_...)."New value: +"Saved reference entity to use. Obtain entityId from list_entities or create_entity." - changed
Input schema / properties / role / descriptionPrevious value: -"What the file is used for. Defaults to REFERENCE. On a BRAND, BRAND_LOGO is its overlay logo and BRAND_STYLE_GUIDE is its visual generation reference."New value: +"Purpose of the attached file. Omit for a general reference. On a BRAND, BRAND_LOGO is its overlay logo and BRAND_STYLE_GUIDE is its visual generation reference."
- Changed
archive_entity1 field changed- changed
Input schema / properties / entityId / descriptionPrevious value: -"Entity id (vg_enti_...)."New value: +"Saved reference entity to use. Obtain entityId from list_entities or create_entity."
- Changed
cancel_tool_execution9 fields changed- changed
Input schema / properties / toolExecutionId / descriptionPrevious value: -"Tool execution id (vg_tool_...)."New value: +"Execution to inspect or cancel. Use toolExecutionId from a media-tool start result or list_tool_executions." - changed
Output schema / descriptionPrevious value: -"Tool execution id, or full execution status after waiting (results when succeeded)."New value: +"Cancellation acknowledgment. Use get_tool_execution for status and results." - removed
Output schema / properties / attemptIndexRemoved value: -{ - "description": "Current or latest attempt index.", - "type": "number" -} - removed
Output schema / properties / errorRemoved value: -{ - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "code": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Machine-readable error code." - }, - "internalErrorCode": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Opaque code for support." - }, - "message": { - "description": "Human-readable error description.", - "type": "string" - }, - "requirement": { - "anyOf": [ - { - "additionalProperties": {}, - "properties": { - "details": { - "additionalProperties": { - "type": "string" - }, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - "type": { - "description": "Requirement type (e.g. purchase_add_on).", - "type": "string" - } - }, - "required": [ - "type" - ], - "type": "object" - }, - { - "type": "null" - } - ], - "description": "What is needed to resolve the error, when applicable." - } - }, - "required": [ - "message" - ], - "type": "object" - }, - { - "type": "null" - } - ], - "description": "Error details when status is failed; otherwise null." -} - removed
Output schema / properties / progressPercentageRemoved value: -{ - "description": "Completion progress 0-100 (present after polling).", - "type": "number" -} - removed
Output schema / properties / resultsRemoved value: -{ - "description": "Generated results with download URLs when succeeded.", - "items": { - "additionalProperties": {}, - "description": "One generated result from a succeeded tool execution.", - "properties": { - "downloadUrl": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Signed download URL." - }, - "downloadUrlExpiresAt": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Unix expiry for downloadUrl." - }, - "file": { - "additionalProperties": {}, - "description": "Hydrated file metadata.", - "properties": { - "description": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "File description when analyzed." - }, - "displayName": { - "description": "Display name for the file.", - "type": "string" - }, - "downloadSource": { - "anyOf": [ - { - "additionalProperties": {}, - "description": "A file rendition source (thumbnail, preview, download, …).", - "properties": { - "expiresAt": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Unix expiry for url." - }, - "fileBytes": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Rendition size in bytes." - }, - "height": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Rendition height in pixels." - }, - "status": { - "description": "Rendition status.", - "enum": [ - "pending", - "ready", - "failed", - "skipped" - ], - "type": "string" - }, - "url": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Signed URL when status is ready." - }, - "width": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Rendition width in pixels." - } - }, - "required": [ - "status" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "downloadUrl": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Signed download URL when ready." - }, - "downloadUrlExpiresAt": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Unix expiry for downloadUrl." - }, - "durationSeconds": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Duration in seconds for video/audio; null for images." - }, - "fileId": { - "description": "File id (vg_file_...).", - "type": "string" - }, - "hlsSource": { - "anyOf": [ - { - "additionalProperties": {}, - "description": "A file rendition source (thumbnail, preview, download, …).", - "properties": { - "expiresAt": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Unix expiry for url." - }, - "fileBytes": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Rendition size in bytes." - }, - "height": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Rendition height in pixels." - }, - "status": { - "description": "Rendition status.", - "enum": [ - "pending", - "ready", - "failed", - "skipped" - ], - "type": "string" - }, - "url": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Signed URL when status is ready." - }, - "width": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Rendition width in pixels." - } - }, - "required": [ - "status" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "isPublicPreviewEnabled": { - "type": "boolean" - }, - "previewSource": { - "anyOf": [ - { - "additionalProperties": {}, - "description": "A file rendition source (thumbnail, preview, download, …).", - "properties": { - "expiresAt": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Unix expiry for url." - }, - "fileBytes": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Rendition size in bytes." - }, - "height": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Rendition height in pixels." - }, - "status": { - "description": "Rendition status.", - "enum": [ - "pending", - "ready", - "failed", - "skipped" - ], - "type": "string" - }, - "url": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Signed URL when status is ready." - }, - "width": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Rendition width in pixels." - } - }, - "required": [ - "status" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "publicHlsUrl": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "publicPlaybackId": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "scope": { - "description": "File scope.", - "enum": [ - "GLOBAL", - "PROJECT", - "EXPORT", - "TEMPORARY", - "ENTITY" - ], - "type": "string" - }, - "sourceToolExecutionId": { - "type": "string" - }, - "sourceToolType": { - "type": "string" - }, - "thumbnailSource": { - "anyOf": [ - { - "additionalProperties": {}, - "description": "A file rendition source (thumbnail, preview, download, …).", - "properties": { - "expiresAt": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Unix expiry for url." - }, - "fileBytes": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Rendition size in bytes." - }, - "height": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Rendition height in pixels." - }, - "status": { - "description": "Rendition status.", - "enum": [ - "pending", - "ready", - "failed", - "skipped" - ], - "type": "string" - }, - "url": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Signed URL when status is ready." - }, - "width": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Rendition width in pixels." - } - }, - "required": [ - "status" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "thumbnailUrl": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Signed thumbnail URL when available." - }, - "thumbnailUrlExpiresAt": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Unix expiry for thumbnailUrl." - }, - "transcriptText": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Plain transcript text when available." - }, - "type": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "File type once processing has determined it." - } - }, - "required": [ - "fileId" - ], - "type": "object" - }, - "fileId": { - "description": "Generated file id (vg_file_...).", - "type": "string" - }, - "thumbnailUrl": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Signed thumbnail URL, or null." - }, - "thumbnailUrlExpiresAt": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "description": "Unix expiry for thumbnailUrl." - }, - "type": { - "description": "Generated file type.", - "type": "string" - } - }, - "required": [ - "fileId", - "type", - "downloadUrl", - "downloadUrlExpiresAt", - "thumbnailUrl", - "thumbnailUrlExpiresAt", - "file" - ], - "type": "object" - }, - "type": "array" -} - removed
Output schema / properties / statusRemoved value: -{ - "description": "Job status: pending, running, succeeded, failed, or cancelled.", - "enum": [ - "pending", - "running", - "succeeded", - "failed", - "cancelled" - ], - "type": "string" -} - changed
Output schema / properties / toolExecutionId / descriptionPrevious value: -"Tool execution id (vg_tool_...)."New value: +"Execution for which cancellation was requested." - removed
Output schema / properties / toolTypeRemoved value: -{ - "description": "Tool name (e.g. GENERATE_IMAGE).", - "type": "string" -}
- Changed
cancel_workflow_run1 field changed- changed
Input schema / properties / workflowRunId / descriptionPrevious value: -"Workflow run id (vg_work_...)."New value: +"Run to inspect or cancel. Use workflowRunId from a workflow start result or list_workflow_runs."
- Changed
create_entity1 field changed- changed
Input schema / properties / description / descriptionPrevious value: -"Optional longer description."New value: +"Describe the subject, product, setting, or visual identity this saved entity represents."
- Changed
create_file_upload2 fields changed- changed
Input schema / properties / displayName / descriptionPrevious value: -"Display name for the file."New value: +"Human-readable label used to identify the uploaded asset in the VideoGen library." - changed
Input schema / properties / type / descriptionPrevious value: -"File type. Inferred after processing when omitted."New value: +"Media or document kind to associate with the upload. Inferred after processing when omitted."
- Changed
export_project2 fields changed- changed
Input schema / properties / projectId / descriptionPrevious value: -"Project id to export."New value: +"Editable project to render. Use projectId from a workflow result, list_projects, or get_project." - changed
Input schema / properties / quality / descriptionPrevious value: -"Export quality. Omit for the default."New value: +"MP4 resolution tier by shortest edge: STANDARD is 720p, HIGH and FULL_HIGH are 1080p, and ULTRA_HIGH is 2160p. Omit for FULL_HIGH."
- Changed
generate_avatar1 field changed- changed
Input schema / properties / audioFileId / descriptionPrevious value: -"Audio file id for the avatar to lip-sync."New value: +"Speech recording for the actor to lip-sync. Use fileId from an audio upload, list_files, or a succeeded text_to_speech result."
- Changed
generate_image2 fields changed- changed
Input schema / properties / entityIds / descriptionPrevious value: -"Optional actor, product, or visual-style entity ids (vg_enti_...) used as identity/reference."New value: +"Actor, product, or visual-style references for consistent identity and appearance. Use entityId values from list_entities or create_entity, with reference files attached." - changed
Input schema / properties / imageFileIds / descriptionPrevious value: -"Optional reference image file ids."New value: +"Reference images to guide the generated appearance. Use fileId values from upload_file, get_file, or list_files."
- Changed
generate_motion_graphic7 fields changed- added
Input schema / properties / durationSeconds / descriptionAdded value: +"Requested motion-graphic playback duration in seconds." - changed
Input schema / properties / entityIds / descriptionPrevious value: -"Optional actor, product, or visual-style entity ids (vg_enti_...)."New value: +"Actor, product, or visual-style references. Use entityId values from list_entities or create_entity, with reference files attached." - changed
Input schema / properties / fileIds / descriptionPrevious value: -"Optional reference media file ids."New value: +"Media to display or animate in the motion graphic. Use fileId values from upload_file, get_file, or list_files." - changed
Input schema / properties / subToolModes / properties / generateImages / descriptionPrevious value: -"AUTO uses the capability when the plan allows it. ENABLED requires it. DISABLED turns it off."New value: +"Control image generation within the motion graphic: AUTO lets the plan decide, ENABLED requires use, and DISABLED prevents use." - changed
Input schema / properties / subToolModes / properties / generateVideoClips / descriptionPrevious value: -"AUTO uses the capability when the plan allows it. ENABLED requires it. DISABLED turns it off."New value: +"Control video-clip generation within the motion graphic: AUTO lets the plan decide, ENABLED requires use, and DISABLED prevents use." - changed
Input schema / properties / subToolModes / properties / generateVoiceover / descriptionPrevious value: -"AUTO uses the capability when the plan allows it. ENABLED requires it. DISABLED turns it off."New value: +"Control voiceover synthesis within the motion graphic: AUTO lets the plan decide, ENABLED requires use, and DISABLED prevents use." - changed
Input schema / properties / subToolModes / properties / searchStockMedia / descriptionPrevious value: -"AUTO uses the capability when the plan allows it. ENABLED requires it. DISABLED turns it off."New value: +"Control stock-media search within the motion graphic: AUTO lets the plan decide, ENABLED requires use, and DISABLED prevents use."
- Changed
generate_sound_effect1 field changed- added
Input schema / properties / durationSeconds / descriptionAdded value: +"Requested sound-effect playback duration in seconds."
- Changed
generate_video_clip2 fields changed- changed
Input schema / properties / durationSeconds / descriptionPrevious value: -"Optional clip length in whole seconds (1 to 30). Omit or pass null for Auto."New value: +"Requested clip playback duration in seconds. Omit or pass null for automatic timing." - changed
Input schema / properties / imageFileIds / descriptionPrevious value: -"Optional reference image file ids."New value: +"Reference images to guide the generated appearance. Use fileId values from upload_file, get_file, or list_files."
- Changed
get_app_deep_link5 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"Assistant COMMON action to deep-link into the VideoGen app (opens a modal or navigates after sign-in)."New value: +"App operation to open after sign-in, such as navigation, feedback, or integration management." - changed
Input schema / properties / articleSlug / descriptionPrevious value: -"Required for OPEN_HELP_ARTICLE. Help-center article slug / search query."New value: +"Required for OPEN_HELP_ARTICLE. Help-center search text, such as an article title or its URL slug; the link opens matching search results." - changed
Input schema / properties / category / descriptionPrevious value: -"Optional for OPEN_SUBMIT_FEEDBACK. Ticket category, or null to let the user pick."New value: +"Feedback classification for OPEN_SUBMIT_FEEDBACK. Omit or pass null to let the user choose." - changed
Input schema / properties / provider / descriptionPrevious value: -"Required for OPEN_MANAGE_INTEGRATION. Integration provider id (e.g. GOOGLE, SLACK)."New value: +"Required for OPEN_MANAGE_INTEGRATION. Integration provider key, such as GOOGLE or SLACK, identifying the connection to manage." - changed
Input schema / properties / suggestedLocale / descriptionPrevious value: -"Optional for OPEN_LANGUAGE_SELECTOR. Suggested locale code (e.g. en-US)."New value: +"For OPEN_LANGUAGE_SELECTOR, preselect a UI language using an app locale code such as en or es. Unsupported codes are ignored. The user can choose another language."
- Changed
get_entity1 field changed- changed
Input schema / properties / entityId / descriptionPrevious value: -"Entity id (vg_enti_...)."New value: +"Saved reference entity to use. Obtain entityId from list_entities or create_entity."
- Changed
get_file2 fields changed- changed
Input schema / properties / fileId / descriptionPrevious value: -"File id (vg_file_...)."New value: +"Asset to fetch. Use fileId from upload_file, create_file_upload, list_files, or a generation result." - changed
Input schema / properties / pollIntervalMs / descriptionPrevious value: -"How often to poll while waiting, in milliseconds."New value: +"Time between readiness checks in milliseconds when wait is true. Omit to poll every 3000 milliseconds."
- Changed
get_project1 field changed- changed
Input schema / properties / projectId / descriptionPrevious value: -"Project id."New value: +"Editable project to inspect. Use projectId from a workflow result or list_projects."
- Changed
get_project_export1 field changed- changed
Input schema / properties / projectId / descriptionPrevious value: -"Project id that owns the export."New value: +"Project that owns the export. Use the same projectId passed to export_project, obtained from a workflow result or list_projects."
- Changed
get_tool_execution5 fields changed- changed
Input schema / properties / toolExecutionId / descriptionPrevious value: -"Tool execution id (vg_tool_...)."New value: +"Execution to inspect or cancel. Use toolExecutionId from a media-tool start result or list_tool_executions." - changed
Output schema / descriptionPrevious value: -"Tool execution id, or full execution status after waiting (results when succeeded)."New value: +"Full tool-execution status snapshot." - changed
Output schema / properties / progressPercentage / descriptionPrevious value: -"Completion progress 0-100 (present after polling)."New value: +"Completion progress 0-100." - changed
Output schema / properties / results / descriptionPrevious value: -"Generated results with download URLs when succeeded."New value: +"Generated results; empty until succeeded." - changed
Output schema / requiredPrevious value: -[ - "toolExecutionId" -]New value: +[ + "toolExecutionId", + "status", + "toolType", + "progressPercentage", + "attemptIndex", + "results", + "error" +]
- Changed
get_workflow_run1 field changed- changed
Input schema / properties / workflowRunId / descriptionPrevious value: -"Workflow run id (vg_work_...)."New value: +"Run to inspect or cancel. Use workflowRunId from a workflow start result or list_workflow_runs."
- Changed
image_3d_effect1 field changed- changed
Input schema / properties / imageFileId / descriptionPrevious value: -"Source image file id."New value: +"Image to transform. Use fileId from upload_file, list_files, or a succeeded image-generation result."
- Changed
list_project_remix_actions1 field changed- changed
Input schema / properties / projectId / descriptionPrevious value: -"Project id."New value: +"Editable project to inspect. Use projectId from a workflow result or list_projects."
- Changed
list_tts_voices1 field changed- changed
Input schema / properties / includeDeprecatedVoices / descriptionPrevious value: -"Include deprecated voices in the results."New value: +"Whether to include older voices that remain callable. Omit to exclude deprecated voices."
- Changed
open_uploader1 field changed- changed
Output schema / properties / status / descriptionPrevious value: -"Widget status (ready when the uploader UI can open)."New value: +"Uploader launch status: ready. This is not an upload completion result; the widget reports the file id after the user uploads."
- Changed
prompt_to_video_clip2 fields changed- added
Input schema / properties / durationSeconds / descriptionAdded value: +"Requested clip playback duration in seconds." - changed
Input schema / properties / imageFileIds / descriptionPrevious value: -"Optional reference image file ids."New value: +"Reference images to guide the generated appearance. Use fileId values from upload_file, get_file, or list_files."
- Changed
remix_project2 fields changed- changed
Input schema / properties / projectId / descriptionPrevious value: -"Project id to edit."New value: +"Editable project to remix. Use projectId from a workflow result, list_projects, or get_project." - changed
Input schema / properties / saveAsNewProject / descriptionPrevious value: -"Apply edits to a copy of the project."New value: +"When true, duplicate the project and apply edits to the copy. When omitted, edit the original project in place."
- Changed
remove_entity_reference1 field changed- changed
Input schema / properties / entityId / descriptionPrevious value: -"Entity id (vg_enti_...)."New value: +"Saved reference entity to use. Obtain entityId from list_entities or create_entity."
- Changed
remove_image_background1 field changed- changed
Input schema / properties / imageFileId / descriptionPrevious value: -"Source image file id."New value: +"Image to transform. Use fileId from upload_file, list_files, or a succeeded image-generation result."
- Changed
remove_video_background1 field changed- changed
Input schema / properties / videoFileId / descriptionPrevious value: -"Source video file id."New value: +"Video to transform. Use fileId from upload_file, list_files, or a succeeded video-generation result."
- Changed
script_to_video1 field changed- changed
Input schema / properties / style / descriptionPrevious value: -"Visual style for generated images. Write a full, strict paragraph in the same form as the app defaults below: name the medium, texture, and palette, then lock composition. Do not pass a short label such as \"watercolor\", \"flat art\", or \"cinematic\".\nImage models fill the frame with extra objects, readable text, charts, diagrams, tables, and labels unless the style forbids that. The still then looks crowded and hard to use. Every style must keep the picture simple. Include this composition lock verbatim: A clear uncluttered subject centered in the frame, occupying only the middle half of the image, with generous empty margins on all four sides, no background clutter. No on-image text, letters, labels, captions, charts, diagrams, tables, legends, or infographic layout unless the user explicitly asked for one specific word or number on screen.\nCopy an app default in full (those already include the uncluttered-subject lock), then add the no-text / no-diagram sentence if it is missing. A custom style is allowed only when it is equally long and strict, and includes the same composition lock. Omit this field for the Realistic default.\nWatercolor: Loose watercolor illustration, visible brushstrokes, soft color bleeds, paper texture, muted palette. A clear uncluttered subject centered in the frame, occupying only the middle half of the image, with generous empty margins on all four sides, no background clutter.\nRealistic: Photorealistic photograph, natural lighting\nWhiteboard: Minimalist whiteboard explainer style, simple line drawings, marker sketch aesthetic, clean white background, subtle accent colors. A clear uncluttered subject centered in the frame, occupying only the middle half of the image, with generous empty margins on all four sides, no background clutter.\n3D cartoon: 3D cartoon render, rounded forms, soft lighting, vibrant colors, clean matte materials, smooth stylized characters\nFlat art: Corporate memphis flat art illustration, simple geometric shapes, bold colors, clean composition, white background with sparse subtle geometric accents such as small dots, lines, or shapes scattered in the margins. A clear uncluttered subject centered in the frame, occupying only the middle half of the image, with generous empty margins on all four sides, no busy background patterns.\nPaper: Paper collage illustration, torn edges, layered cut paper shapes, mixed media texture, handmade craft aesthetic, matte paper finish. A clear uncluttered subject centered in the frame, occupying only the middle half of the image, with generous empty margins on all four sides, no background clutter.\nInk paint: Traditional Japanese sumi-e ink wash painting, expressive black ink brushstrokes, varied tonal gradations from deep black to soft gray, rice-paper texture, minimalist composition. No text, letters, calligraphy, kanji, signatures, or red seal stamps unless explicitly required by the subject. A clear uncluttered subject centered in the frame, occupying only the middle half of the image, with generous empty margins on all four sides, no background clutter.\nAnime: Anime illustration, cel-shaded style, vibrant colors, clean linework, soft gradient backgrounds\nEditorial: Editorial illustration, conceptual art, bold geometric shapes, sophisticated color palette, negative space, minimalist composition, strong silhouette\nIsometric: Isometric 3D illustration, clean vector style, soft gradient background, matte pastel colors, simple geometric objects, no characters. A clear uncluttered subject centered in the frame, occupying only the middle half of the image, with generous empty margins on all four sides, no background clutter.\nClaymation: Claymation style, soft clay figurines, plasticine texture, handmade stop-motion aesthetic, warm studio lighting, shallow depth of field\nEducation: Educational infographic style, simple icons, pastel colors, white background. A clear uncluttered subject centered in the frame, occupying only the middle half of the image, with generous empty margins on all four sides, no background clutter.\nChalkboard: Simple, minimalist, white chalk line drawings on dark green chalkboard, hand-drawn sketch style, chalk dust texture. A clear uncluttered subject centered in the frame, occupying only the middle half of the image, with generous empty margins on all four sides, no background clutter.\nBoho: Simple graphic with only a few elements. Boho linocut poster. Textured organic strokes with crisp lines and a white textured background. A clear uncluttered subject centered in the frame, occupying only the middle half of the image, with generous empty margins on all four sides, no background clutter.\nPoster: Risograph print aesthetic, halftone texture, limited duotone palette, paper grain, high contrast, bold flat colors"New value: +"Visual style for generated images: a full, strict paragraph describing medium, texture, palette, and composition. Copy a full app default from get_workflows_guidance, or describe a custom look. Omit for the Realistic default.\nImage models can add extra objects, text, charts, diagrams, tables, and labels. To keep the picture simple, include this composition lock verbatim:\nA clear uncluttered subject centered in the frame, occupying only the middle half of the image, with generous empty margins on all four sides, no background clutter. No on-image text, letters, labels, captions, charts, diagrams, tables, legends, or infographic layout unless the user explicitly asked for one specific word or number on screen."
- Changed
storyboard_to_video6 fields changed- changed
Input schema / properties / quality / descriptionPrevious value: -"Image generation quality for scene opening frames. Optional; defaults to HIGH. Does not change video generation quality."New value: +"Image generation quality for scene opening frames. Omit to use HIGH. Does not change video generation quality." - changed
Input schema / properties / scenes / items / properties / durationSeconds / descriptionPrevious value: -"Optional scene duration in whole seconds (1-15)."New value: +"Requested scene playback duration in seconds." - changed
Input schema / properties / scenes / items / properties / prompt / descriptionPrevious value: -"Required visual description for this scene."New value: +"Visual description of what should appear in this scene." - changed
Input schema / properties / scenes / items / properties / title / descriptionPrevious value: -"Optional scene title."New value: +"Scene label used to identify the shot." - changed
Input schema / properties / scenes / items / properties / voiceoverScript / descriptionPrevious value: -"Optional words spoken during this scene."New value: +"Words spoken during this scene." - changed
Input schema / properties / style / descriptionPrevious value: -"Visual style for generated images. Write a full, strict paragraph in the same form as the app defaults below: name the medium, texture, and palette, then lock composition. Do not pass a short label such as \"watercolor\", \"flat art\", or \"cinematic\".\nImage models fill the frame with extra objects, readable text, charts, diagrams, tables, and labels unless the style forbids that. The still then looks crowded and hard to use. Every style must keep the picture simple. Include this composition lock verbatim: A clear uncluttered subject centered in the frame, occupying only the middle half of the image, with generous empty margins on all four sides, no background clutter. No on-image text, letters, labels, captions, charts, diagrams, tables, legends, or infographic layout unless the user explicitly asked for one specific word or number on screen.\nCopy an app default in full (those already include the uncluttered-subject lock), then add the no-text / no-diagram sentence if it is missing. A custom style is allowed only when it is equally long and strict, and includes the same composition lock. Omit this field for the Realistic default.\nWatercolor: Loose watercolor illustration, visible brushstrokes, soft color bleeds, paper texture, muted palette. A clear uncluttered subject centered in the frame, occupying only the middle half of the image, with generous empty margins on all four sides, no background clutter.\nRealistic: Photorealistic photograph, natural lighting\nWhiteboard: Minimalist whiteboard explainer style, simple line drawings, marker sketch aesthetic, clean white background, subtle accent colors. A clear uncluttered subject centered in the frame, occupying only the middle half of the image, with generous empty margins on all four sides, no background clutter.\n3D cartoon: 3D cartoon render, rounded forms, soft lighting, vibrant colors, clean matte materials, smooth stylized characters\nFlat art: Corporate memphis flat art illustration, simple geometric shapes, bold colors, clean composition, white background with sparse subtle geometric accents such as small dots, lines, or shapes scattered in the margins. A clear uncluttered subject centered in the frame, occupying only the middle half of the image, with generous empty margins on all four sides, no busy background patterns.\nPaper: Paper collage illustration, torn edges, layered cut paper shapes, mixed media texture, handmade craft aesthetic, matte paper finish. A clear uncluttered subject centered in the frame, occupying only the middle half of the image, with generous empty margins on all four sides, no background clutter.\nInk paint: Traditional Japanese sumi-e ink wash painting, expressive black ink brushstrokes, varied tonal gradations from deep black to soft gray, rice-paper texture, minimalist composition. No text, letters, calligraphy, kanji, signatures, or red seal stamps unless explicitly required by the subject. A clear uncluttered subject centered in the frame, occupying only the middle half of the image, with generous empty margins on all four sides, no background clutter.\nAnime: Anime illustration, cel-shaded style, vibrant colors, clean linework, soft gradient backgrounds\nEditorial: Editorial illustration, conceptual art, bold geometric shapes, sophisticated color palette, negative space, minimalist composition, strong silhouette\nIsometric: Isometric 3D illustration, clean vector style, soft gradient background, matte pastel colors, simple geometric objects, no characters. A clear uncluttered subject centered in the frame, occupying only the middle half of the image, with generous empty margins on all four sides, no background clutter.\nClaymation: Claymation style, soft clay figurines, plasticine texture, handmade stop-motion aesthetic, warm studio lighting, shallow depth of field\nEducation: Educational infographic style, simple icons, pastel colors, white background. A clear uncluttered subject centered in the frame, occupying only the middle half of the image, with generous empty margins on all four sides, no background clutter.\nChalkboard: Simple, minimalist, white chalk line drawings on dark green chalkboard, hand-drawn sketch style, chalk dust texture. A clear uncluttered subject centered in the frame, occupying only the middle half of the image, with generous empty margins on all four sides, no background clutter.\nBoho: Simple graphic with only a few elements. Boho linocut poster. Textured organic strokes with crisp lines and a white textured background. A clear uncluttered subject centered in the frame, occupying only the middle half of the image, with generous empty margins on all four sides, no background clutter.\nPoster: Risograph print aesthetic, halftone texture, limited duotone palette, paper grain, high contrast, bold flat colors"New value: +"Visual style for generated images: a full, strict paragraph describing medium, texture, palette, and composition. Copy a full app default from get_workflows_guidance, or describe a custom look. Omit for the Realistic default.\nImage models can add extra objects, text, charts, diagrams, tables, and labels. To keep the picture simple, include this composition lock verbatim:\nA clear uncluttered subject centered in the frame, occupying only the middle half of the image, with generous empty margins on all four sides, no background clutter. No on-image text, letters, labels, captions, charts, diagrams, tables, legends, or infographic layout unless the user explicitly asked for one specific word or number on screen."
- Changed
text_to_speech3 fields changed- changed
Input schema / properties / language / descriptionPrevious value: -"ISO-639-1 pronunciation language hint."New value: +"ISO-639-1 pronunciation language hint, such as en or es. Omit or pass null to leave pronunciation language selection automatic." - changed
Input schema / properties / speed / descriptionPrevious value: -"Speech-rate multiplier."New value: +"Speech-rate multiplier relative to the voice's normal speed (1)." - changed
Input schema / properties / text / descriptionPrevious value: -"Text to speak."New value: +"Words to synthesize as spoken audio."
- Changed
update_entity1 field changed- changed
Input schema / properties / entityId / descriptionPrevious value: -"Entity id (vg_enti_...)."New value: +"Saved reference entity to use. Obtain entityId from list_entities or create_entity."
- Changed
upload_file2 fields changed- changed
Input schema / properties / displayName / descriptionPrevious value: -"Display name for the file. Defaults to 'upload'."New value: +"Human-readable label used to identify the uploaded asset in the VideoGen library. Defaults to 'upload'." - changed
Input schema / properties / type / descriptionPrevious value: -"File type. Inferred when omitted."New value: +"Media kind to associate with the upload. Inferred when omitted."
- Changed
upscale_image1 field changed- changed
Input schema / properties / imageFileId / descriptionPrevious value: -"Source image file id."New value: +"Image to transform. Use fileId from upload_file, list_files, or a succeeded image-generation result."
- Changed
upscale_video1 field changed- changed
Input schema / properties / videoFileId / descriptionPrevious value: -"Source video file id."New value: +"Video to transform. Use fileId from upload_file, list_files, or a succeeded video-generation result."
- Changed
vectorize_image1 field changed- changed
Input schema / properties / imageFileId / descriptionPrevious value: -"Source image file id."New value: +"Image to transform. Use fileId from upload_file, list_files, or a succeeded image-generation result."
- Changed
voiceover_to_video1 field changed- changed
Input schema / properties / style / descriptionPrevious value: -"Visual style for generated images. Write a full, strict paragraph in the same form as the app defaults below: name the medium, texture, and palette, then lock composition. Do not pass a short label such as \"watercolor\", \"flat art\", or \"cinematic\".\nImage models fill the frame with extra objects, readable text, charts, diagrams, tables, and labels unless the style forbids that. The still then looks crowded and hard to use. Every style must keep the picture simple. Include this composition lock verbatim: A clear uncluttered subject centered in the frame, occupying only the middle half of the image, with generous empty margins on all four sides, no background clutter. No on-image text, letters, labels, captions, charts, diagrams, tables, legends, or infographic layout unless the user explicitly asked for one specific word or number on screen.\nCopy an app default in full (those already include the uncluttered-subject lock), then add the no-text / no-diagram sentence if it is missing. A custom style is allowed only when it is equally long and strict, and includes the same composition lock. Omit this field for the Realistic default.\nWatercolor: Loose watercolor illustration, visible brushstrokes, soft color bleeds, paper texture, muted palette. A clear uncluttered subject centered in the frame, occupying only the middle half of the image, with generous empty margins on all four sides, no background clutter.\nRealistic: Photorealistic photograph, natural lighting\nWhiteboard: Minimalist whiteboard explainer style, simple line drawings, marker sketch aesthetic, clean white background, subtle accent colors. A clear uncluttered subject centered in the frame, occupying only the middle half of the image, with generous empty margins on all four sides, no background clutter.\n3D cartoon: 3D cartoon render, rounded forms, soft lighting, vibrant colors, clean matte materials, smooth stylized characters\nFlat art: Corporate memphis flat art illustration, simple geometric shapes, bold colors, clean composition, white background with sparse subtle geometric accents such as small dots, lines, or shapes scattered in the margins. A clear uncluttered subject centered in the frame, occupying only the middle half of the image, with generous empty margins on all four sides, no busy background patterns.\nPaper: Paper collage illustration, torn edges, layered cut paper shapes, mixed media texture, handmade craft aesthetic, matte paper finish. A clear uncluttered subject centered in the frame, occupying only the middle half of the image, with generous empty margins on all four sides, no background clutter.\nInk paint: Traditional Japanese sumi-e ink wash painting, expressive black ink brushstrokes, varied tonal gradations from deep black to soft gray, rice-paper texture, minimalist composition. No text, letters, calligraphy, kanji, signatures, or red seal stamps unless explicitly required by the subject. A clear uncluttered subject centered in the frame, occupying only the middle half of the image, with generous empty margins on all four sides, no background clutter.\nAnime: Anime illustration, cel-shaded style, vibrant colors, clean linework, soft gradient backgrounds\nEditorial: Editorial illustration, conceptual art, bold geometric shapes, sophisticated color palette, negative space, minimalist composition, strong silhouette\nIsometric: Isometric 3D illustration, clean vector style, soft gradient background, matte pastel colors, simple geometric objects, no characters. A clear uncluttered subject centered in the frame, occupying only the middle half of the image, with generous empty margins on all four sides, no background clutter.\nClaymation: Claymation style, soft clay figurines, plasticine texture, handmade stop-motion aesthetic, warm studio lighting, shallow depth of field\nEducation: Educational infographic style, simple icons, pastel colors, white background. A clear uncluttered subject centered in the frame, occupying only the middle half of the image, with generous empty margins on all four sides, no background clutter.\nChalkboard: Simple, minimalist, white chalk line drawings on dark green chalkboard, hand-drawn sketch style, chalk dust texture. A clear uncluttered subject centered in the frame, occupying only the middle half of the image, with generous empty margins on all four sides, no background clutter.\nBoho: Simple graphic with only a few elements. Boho linocut poster. Textured organic strokes with crisp lines and a white textured background. A clear uncluttered subject centered in the frame, occupying only the middle half of the image, with generous empty margins on all four sides, no background clutter.\nPoster: Risograph print aesthetic, halftone texture, limited duotone palette, paper grain, high contrast, bold flat colors"New value: +"Visual style for generated images: a full, strict paragraph describing medium, texture, palette, and composition. Copy a full app default from get_workflows_guidance, or describe a custom look. Omit for the Realistic default.\nImage models can add extra objects, text, charts, diagrams, tables, and labels. To keep the picture simple, include this composition lock verbatim:\nA clear uncluttered subject centered in the frame, occupying only the middle half of the image, with generous empty margins on all four sides, no background clutter. No on-image text, letters, labels, captions, charts, diagrams, tables, legends, or infographic layout unless the user explicitly asked for one specific word or number on screen."
6 tool updates
- Changed
add_entity_reference7 fields changed- added
Input schema / properties / roleAdded value: +{ + "description": "What the file is used for. Defaults to REFERENCE. On a BRAND, BRAND_LOGO is its overlay logo and BRAND_STYLE_GUIDE is its visual generation reference.", + "enum": [ + "REFERENCE", + "BRAND_LOGO", + "BRAND_STYLE_GUIDE" + ], + "type": "string" +} - changed
Output schema / descriptionPrevious value: -"A reusable actor, product, visual style, or slideshow theme entity."New value: +"A reusable actor, product, visual style, slideshow theme, brand, location, or prop entity." - added
Output schema / properties / brandConfigAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "colors": { + "description": "Color guidance.", + "type": "string" + }, + "fonts": { + "description": "Font guidance.", + "type": "string" + }, + "writingStyle": { + "description": "Voice and tone for copy.", + "type": "string" + } + }, + "required": [ + "fonts", + "colors", + "writingStyle" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Brand guidance for BRAND entities; null for other types." +} - changed
Output schema / properties / entityType / descriptionPrevious value: -"ACTOR, PRODUCT, VISUAL_STYLE, or SLIDESHOW_THEME."New value: +"ACTOR, PRODUCT, VISUAL_STYLE, SLIDESHOW_THEME, BRAND, LOCATION, or PROP." - changed
Output schema / properties / entityType / enumPrevious value: -[ - "ACTOR", - "PRODUCT", - "VISUAL_STYLE", - "SLIDESHOW_THEME" -]New value: +[ + "ACTOR", + "PRODUCT", + "VISUAL_STYLE", + "SLIDESHOW_THEME", + "BRAND", + "LOCATION", + "PROP" +] - added
Output schema / properties / references / items / properties / roleAdded value: +{ + "description": "REFERENCE for generation and thumbnails; BRAND_LOGO / BRAND_STYLE_GUIDE for a brand's logo and style guide.", + "enum": [ + "REFERENCE", + "BRAND_LOGO", + "BRAND_STYLE_GUIDE" + ], + "type": "string" +} - changed
Output schema / properties / references / items / requiredPrevious value: -[ - "fileId", - "description", - "isDefault" -]New value: +[ + "fileId", + "description", + "role", + "isDefault" +]
- Changed
create_entity9 fields changed- added
Input schema / properties / brandConfigAdded value: +{ + "description": "Configuration for a BRAND entity.", + "properties": { + "colors": { + "description": "Color guidance, including hex codes when available.", + "type": "string" + }, + "fonts": { + "description": "Font guidance for a BRAND entity.", + "type": "string" + }, + "writingStyle": { + "description": "Voice and tone for spoken and on-screen copy.", + "type": "string" + } + }, + "required": [ + "fonts", + "colors", + "writingStyle" + ], + "type": "object" +} - changed
Input schema / properties / entityType / descriptionPrevious value: -"ACTOR = consistent character; PRODUCT = product/object; VISUAL_STYLE = look/style for generated images; SLIDESHOW_THEME = shared slide design system for a slideshow deck."New value: +"ACTOR = consistent character; PRODUCT = a product the user sells or promotes; VISUAL_STYLE = look/style for generated images; SLIDESHOW_THEME = shared slide design system for a slideshow deck; BRAND = logo, style guide image, and writing style; LOCATION = consistent place or set; PROP = background object that is not a product. Anything the user sells is a PRODUCT, never a PROP." - changed
Input schema / properties / entityType / enumPrevious value: -[ - "ACTOR", - "PRODUCT", - "VISUAL_STYLE", - "SLIDESHOW_THEME" -]New value: +[ + "ACTOR", + "PRODUCT", + "VISUAL_STYLE", + "SLIDESHOW_THEME", + "BRAND", + "LOCATION", + "PROP" +] - changed
Output schema / descriptionPrevious value: -"A reusable actor, product, visual style, or slideshow theme entity."New value: +"A reusable actor, product, visual style, slideshow theme, brand, location, or prop entity." - added
Output schema / properties / brandConfigAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "colors": { + "description": "Color guidance.", + "type": "string" + }, + "fonts": { + "description": "Font guidance.", + "type": "string" + }, + "writingStyle": { + "description": "Voice and tone for copy.", + "type": "string" + } + }, + "required": [ + "fonts", + "colors", + "writingStyle" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Brand guidance for BRAND entities; null for other types." +} - changed
Output schema / properties / entityType / descriptionPrevious value: -"ACTOR, PRODUCT, VISUAL_STYLE, or SLIDESHOW_THEME."New value: +"ACTOR, PRODUCT, VISUAL_STYLE, SLIDESHOW_THEME, BRAND, LOCATION, or PROP." - changed
Output schema / properties / entityType / enumPrevious value: -[ - "ACTOR", - "PRODUCT", - "VISUAL_STYLE", - "SLIDESHOW_THEME" -]New value: +[ + "ACTOR", + "PRODUCT", + "VISUAL_STYLE", + "SLIDESHOW_THEME", + "BRAND", + "LOCATION", + "PROP" +] - added
Output schema / properties / references / items / properties / roleAdded value: +{ + "description": "REFERENCE for generation and thumbnails; BRAND_LOGO / BRAND_STYLE_GUIDE for a brand's logo and style guide.", + "enum": [ + "REFERENCE", + "BRAND_LOGO", + "BRAND_STYLE_GUIDE" + ], + "type": "string" +} - changed
Output schema / properties / references / items / requiredPrevious value: -[ - "fileId", - "description", - "isDefault" -]New value: +[ + "fileId", + "description", + "role", + "isDefault" +]
- Changed
get_entity6 fields changed- changed
Output schema / descriptionPrevious value: -"A reusable actor, product, visual style, or slideshow theme entity."New value: +"A reusable actor, product, visual style, slideshow theme, brand, location, or prop entity." - added
Output schema / properties / brandConfigAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "colors": { + "description": "Color guidance.", + "type": "string" + }, + "fonts": { + "description": "Font guidance.", + "type": "string" + }, + "writingStyle": { + "description": "Voice and tone for copy.", + "type": "string" + } + }, + "required": [ + "fonts", + "colors", + "writingStyle" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Brand guidance for BRAND entities; null for other types." +} - changed
Output schema / properties / entityType / descriptionPrevious value: -"ACTOR, PRODUCT, VISUAL_STYLE, or SLIDESHOW_THEME."New value: +"ACTOR, PRODUCT, VISUAL_STYLE, SLIDESHOW_THEME, BRAND, LOCATION, or PROP." - changed
Output schema / properties / entityType / enumPrevious value: -[ - "ACTOR", - "PRODUCT", - "VISUAL_STYLE", - "SLIDESHOW_THEME" -]New value: +[ + "ACTOR", + "PRODUCT", + "VISUAL_STYLE", + "SLIDESHOW_THEME", + "BRAND", + "LOCATION", + "PROP" +] - added
Output schema / properties / references / items / properties / roleAdded value: +{ + "description": "REFERENCE for generation and thumbnails; BRAND_LOGO / BRAND_STYLE_GUIDE for a brand's logo and style guide.", + "enum": [ + "REFERENCE", + "BRAND_LOGO", + "BRAND_STYLE_GUIDE" + ], + "type": "string" +} - changed
Output schema / properties / references / items / requiredPrevious value: -[ - "fileId", - "description", - "isDefault" -]New value: +[ + "fileId", + "description", + "role", + "isDefault" +]
- Changed
list_entities7 fields changed- changed
Input schema / properties / entityType / enumPrevious value: -[ - "ACTOR", - "PRODUCT", - "VISUAL_STYLE", - "SLIDESHOW_THEME" -]New value: +[ + "ACTOR", + "PRODUCT", + "VISUAL_STYLE", + "SLIDESHOW_THEME", + "BRAND", + "LOCATION", + "PROP" +] - changed
Output schema / properties / entities / items / descriptionPrevious value: -"A reusable actor, product, visual style, or slideshow theme entity."New value: +"A reusable actor, product, visual style, slideshow theme, brand, location, or prop entity." - added
Output schema / properties / entities / items / properties / brandConfigAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "colors": { + "description": "Color guidance.", + "type": "string" + }, + "fonts": { + "description": "Font guidance.", + "type": "string" + }, + "writingStyle": { + "description": "Voice and tone for copy.", + "type": "string" + } + }, + "required": [ + "fonts", + "colors", + "writingStyle" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Brand guidance for BRAND entities; null for other types." +} - changed
Output schema / properties / entities / items / properties / entityType / descriptionPrevious value: -"ACTOR, PRODUCT, VISUAL_STYLE, or SLIDESHOW_THEME."New value: +"ACTOR, PRODUCT, VISUAL_STYLE, SLIDESHOW_THEME, BRAND, LOCATION, or PROP." - changed
Output schema / properties / entities / items / properties / entityType / enumPrevious value: -[ - "ACTOR", - "PRODUCT", - "VISUAL_STYLE", - "SLIDESHOW_THEME" -]New value: +[ + "ACTOR", + "PRODUCT", + "VISUAL_STYLE", + "SLIDESHOW_THEME", + "BRAND", + "LOCATION", + "PROP" +] - added
Output schema / properties / entities / items / properties / references / items / properties / roleAdded value: +{ + "description": "REFERENCE for generation and thumbnails; BRAND_LOGO / BRAND_STYLE_GUIDE for a brand's logo and style guide.", + "enum": [ + "REFERENCE", + "BRAND_LOGO", + "BRAND_STYLE_GUIDE" + ], + "type": "string" +} - changed
Output schema / properties / entities / items / properties / references / items / requiredPrevious value: -[ - "fileId", - "description", - "isDefault" -]New value: +[ + "fileId", + "description", + "role", + "isDefault" +]
- Changed
remove_entity_reference6 fields changed- changed
Output schema / descriptionPrevious value: -"A reusable actor, product, visual style, or slideshow theme entity."New value: +"A reusable actor, product, visual style, slideshow theme, brand, location, or prop entity." - added
Output schema / properties / brandConfigAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "colors": { + "description": "Color guidance.", + "type": "string" + }, + "fonts": { + "description": "Font guidance.", + "type": "string" + }, + "writingStyle": { + "description": "Voice and tone for copy.", + "type": "string" + } + }, + "required": [ + "fonts", + "colors", + "writingStyle" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Brand guidance for BRAND entities; null for other types." +} - changed
Output schema / properties / entityType / descriptionPrevious value: -"ACTOR, PRODUCT, VISUAL_STYLE, or SLIDESHOW_THEME."New value: +"ACTOR, PRODUCT, VISUAL_STYLE, SLIDESHOW_THEME, BRAND, LOCATION, or PROP." - changed
Output schema / properties / entityType / enumPrevious value: -[ - "ACTOR", - "PRODUCT", - "VISUAL_STYLE", - "SLIDESHOW_THEME" -]New value: +[ + "ACTOR", + "PRODUCT", + "VISUAL_STYLE", + "SLIDESHOW_THEME", + "BRAND", + "LOCATION", + "PROP" +] - added
Output schema / properties / references / items / properties / roleAdded value: +{ + "description": "REFERENCE for generation and thumbnails; BRAND_LOGO / BRAND_STYLE_GUIDE for a brand's logo and style guide.", + "enum": [ + "REFERENCE", + "BRAND_LOGO", + "BRAND_STYLE_GUIDE" + ], + "type": "string" +} - changed
Output schema / properties / references / items / requiredPrevious value: -[ - "fileId", - "description", - "isDefault" -]New value: +[ + "fileId", + "description", + "role", + "isDefault" +]
- Changed
update_entity7 fields changed- added
Input schema / properties / brandConfigAdded value: +{ + "description": "Complete replacement configuration for a BRAND entity.", + "properties": { + "colors": { + "description": "Color guidance, including hex codes when available.", + "type": "string" + }, + "fonts": { + "description": "Font guidance for a BRAND entity.", + "type": "string" + }, + "writingStyle": { + "description": "Voice and tone for spoken and on-screen copy.", + "type": "string" + } + }, + "required": [ + "fonts", + "colors", + "writingStyle" + ], + "type": "object" +} - changed
Output schema / descriptionPrevious value: -"A reusable actor, product, visual style, or slideshow theme entity."New value: +"A reusable actor, product, visual style, slideshow theme, brand, location, or prop entity." - added
Output schema / properties / brandConfigAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "colors": { + "description": "Color guidance.", + "type": "string" + }, + "fonts": { + "description": "Font guidance.", + "type": "string" + }, + "writingStyle": { + "description": "Voice and tone for copy.", + "type": "string" + } + }, + "required": [ + "fonts", + "colors", + "writingStyle" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Brand guidance for BRAND entities; null for other types." +} - changed
Output schema / properties / entityType / descriptionPrevious value: -"ACTOR, PRODUCT, VISUAL_STYLE, or SLIDESHOW_THEME."New value: +"ACTOR, PRODUCT, VISUAL_STYLE, SLIDESHOW_THEME, BRAND, LOCATION, or PROP." - changed
Output schema / properties / entityType / enumPrevious value: -[ - "ACTOR", - "PRODUCT", - "VISUAL_STYLE", - "SLIDESHOW_THEME" -]New value: +[ + "ACTOR", + "PRODUCT", + "VISUAL_STYLE", + "SLIDESHOW_THEME", + "BRAND", + "LOCATION", + "PROP" +] - added
Output schema / properties / references / items / properties / roleAdded value: +{ + "description": "REFERENCE for generation and thumbnails; BRAND_LOGO / BRAND_STYLE_GUIDE for a brand's logo and style guide.", + "enum": [ + "REFERENCE", + "BRAND_LOGO", + "BRAND_STYLE_GUIDE" + ], + "type": "string" +} - changed
Output schema / properties / references / items / requiredPrevious value: -[ - "fileId", - "description", - "isDefault" -]New value: +[ + "fileId", + "description", + "role", + "isDefault" +]
1 tool update
- Changed
storyboard_to_video6 fields changed- added
Input schema / properties / actorEntityIdsAdded value: +{ + "description": "ACTOR entity ids (vg_enti_...) to keep attached to the project. Also set actorEntityIds on each scene that should show that actor.", + "items": { + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / productEntityIdsAdded value: +{ + "description": "PRODUCT entity ids (vg_enti_...) to keep attached to the project. Also set productEntityIds on each scene that should show that product.", + "items": { + "type": "string" + }, + "type": "array" +} - changed
Input schema / properties / scenes / descriptionPrevious value: -"Ordered scenes. Every scene requires a visual `prompt`."New value: +"Ordered scenes. Every scene requires a visual prompt. Put productEntityIds, actorEntityIds, or visualStyleEntityId on each scene that should use that entity's reference images." - added
Input schema / properties / scenes / items / properties / actorEntityIdsAdded value: +{ + "description": "Ids of ACTOR entities (vg_enti_...) to feature in this scene. Each entity's reference images are used so the same characters appear. Create the entity and add_entity_reference first.", + "items": { + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / scenes / items / properties / productEntityIdsAdded value: +{ + "description": "Ids of PRODUCT entities (vg_enti_...) whose reference images should appear in this scene. Create the entity and add_entity_reference first.", + "items": { + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / scenes / items / properties / visualStyleEntityIdAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Id of a VISUAL_STYLE entity (vg_enti_...) whose reference images guide this scene's look." +}
50 tool updates
- First observed
add_entity_reference - First observed
archive_entity - First observed
cancel_tool_execution - First observed
cancel_workflow_run - First observed
create_entity - First observed
create_file_upload - First observed
export_project - First observed
generate_avatar - First observed
generate_image - First observed
generate_motion_graphic - First observed
generate_music - First observed
generate_sound_effect - First observed
generate_video_clip - First observed
get_app_deep_link - First observed
get_async_tasks_guidance - First observed
get_entity - First observed
get_file - First observed
get_getting_started_guidance - First observed
get_me - First observed
get_project - First observed
get_project_export - First observed
get_tool_execution - First observed
get_tools_vs_workflows_guidance - First observed
get_workflow_run - First observed
get_workflows_guidance - First observed
image_3d_effect - First observed
list_entities - First observed
list_files - First observed
list_languages - First observed
list_project_remix_actions - First observed
list_projects - First observed
list_tool_executions - First observed
list_tts_voices - First observed
list_workflow_runs - First observed
open_uploader - First observed
prompt_to_video_clip - First observed
remix_project - First observed
remove_entity_reference - First observed
remove_image_background - First observed
remove_video_background - First observed
script_to_video - First observed
slideshow_to_video - First observed
storyboard_to_video - First observed
text_to_speech - First observed
update_entity - First observed
upload_file - First observed
upscale_image - First observed
upscale_video - First observed
vectorize_image - First observed
voiceover_to_video
Related MCP Connectors
AI video generation via the Vivideo API: auto or manual mode, avatars, voices, brand kits.
Generate images, video, music, voice and 3D through one API. 30 tools, 200+ models.
One API for 100+ AI video, image, music and speech models.
Generate and edit images, video, voice, lip-sync and 3D models from your AI agent.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI video generation from text prompts, status monitoring, and video management through the Sisif AI Video API.1MIT
- AlicenseNot gradedqualityDmaintenanceProvides a standardized interface for interacting with Heygen's AI video generation tools and services through a unified API.MIT
- AlicenseAqualityAmaintenanceEnables AI video generation and editing, including text-to-video, image-to-video, reference-to-video, and video editing through the Ace Data Cloud API.71,210 PyPIMIT
- AlicenseBqualityBmaintenanceEnables AI assistants and coding agents to automate Pictory.ai video creation, including 1080p rendering, transcription into viral short clips, AI avatars, stock asset search, project/template management, and publishing to Vimeo and S3.5MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.