Skip to main content
Glama

Submit render

fvs_submit_render
Destructive

Submit a Future Video Studio render job through the FVS Agent API.

Pass the render payload in the required `request` object. For reference
assets, pass public HTTPS URLs in `upload_urls`; every
`request.assets[].filename` must match one uploaded URL basename or explicit
upload URL filename. Credentials come from the connector header,
marketplace account mapping, or FVS_AGENT_API_KEY in the MCP server
environment.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
requestYesRequired render request object. Include name. project_mode must be one of scene, music, or custom. Use assets[].purpose for asset intent. Usually include screenplay, instructions, shot_count, duration, and resolution.
upload_urlsNoOptional public HTTPS reference asset URLs. Each object can include url and filename; filename should match request.assets[].filename.
poll_until_completeNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed2 schema fields changed
    • changedInput schema / $defs / RenderAssetPayload / properties / purpose / description
      Previous value: -"Optional guidance for how this asset should be used, such as character_reference, location_reference, logo_reference, style_reference, music_reference, or document_reference."New value: +"Optional guidance for how this asset should be used, such as character_reference, location_reference, logo_reference, style_reference, music_reference, or document_reference. Use this field for asset intent."
    • changedInput schema / properties / request / description
      Previous value: -"Required render request object. Include at least name, and usually project_mode, screenplay, instructions, shot_count, duration, and resolution."New value: +"Required render request object. Include name. project_mode must be one of scene, music, or custom. Use assets[].purpose for asset intent. Usually include screenplay, instructions, shot_count, duration, and resolution."
  2. Changed3 schema fields changed
    • addedInput schema / $defs / RenderAssetPayload / properties / purpose
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Optional guidance for how this asset should be used, such as character_reference, location_reference, logo_reference, style_reference, music_reference, or document_reference.",
      +  "title": "Purpose"
      +}
    • removedInput schema / $defs / RenderAssetPayload / properties / role
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "description": "Optional role describing how the asset should guide the render.",
      -  "title": "Role"
      -}
    • addedInput schema / $defs / RenderRequestPayload / properties / project_mode / enum
      Added value: +[
      +  "scene",
      +  "music",
      +  "custom"
      +]
  3. Changed8 schema fields changed
    • addedInput schema / $defs
      Added value: +{
      +  "RenderAssetPayload": {
      +    "additionalProperties": true,
      +    "properties": {
      +      "filename": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Basename of an uploaded or referenced asset. When upload_urls is used, this must match an upload_urls filename or URL basename.",
      +        "title": "Filename"
      +      },
      +      "label": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Short label for the asset, such as Character, Logo, or Reference.",
      +        "title": "Label"
      +      },
      +      "role": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Optional role describing how the asset should guide the render.",
      +        "title": "Role"
      +      }
      +    },
      +    "title": "RenderAssetPayload",
      +    "type": "object"
      +  },
      +  "RenderRequestPayload": {
      +    "additionalProperties": true,
      +    "properties": {
      +      "assets": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "$ref": "#/$defs/RenderAssetPayload"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Optional reference assets that correspond to uploaded or public upload_urls.",
      +        "title": "Assets"
      +      },
      +      "instructions": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Additional direction for continuity, style, camera movement, subtitles, audio, or constraints.",
      +        "title": "Instructions"
      +      },
      +      "name": {
      +        "description": "Required project name for the Future Video Studio render.",
      +        "title": "Name",
      +        "type": "string"
      +      },
      +      "project_mode": {
      +        "default": "scene",
      +        "description": "Render mode: scene for cinematic scenes, music for music-first videos, or custom for advanced requests.",
      +        "title": "Project Mode",
      +        "type": "string"
      +      },
      +      "scene_target_duration_seconds": {
      +        "anyOf": [
      +          {
      +            "maximum": 600,
      +            "minimum": 4,
      +            "type": "number"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Target total scene duration in seconds.",
      +        "title": "Scene Target Duration Seconds"
      +      },
      +      "screenplay": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Shot-by-shot creative brief or script describing what should happen in the video.",
      +        "title": "Screenplay"
      +      },
      +      "shot_count": {
      +        "anyOf": [
      +          {
      +            "maximum": 64,
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Target number of shots or clips to plan for the render.",
      +        "title": "Shot Count"
      +      },
      +      "video_resolution": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Requested output resolution, such as 720p or 1080p.",
      +        "title": "Video Resolution"
      +      },
      +      "visual_style_preset": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Optional FVS visual style preset, such as realistic_cinematic.",
      +        "title": "Visual Style Preset"
      +      }
      +    },
      +    "required": [
      +      "name"
      +    ],
      +    "title": "RenderRequestPayload",
      +    "type": "object"
      +  },
      +  "UploadUrlPayload": {
      +    "additionalProperties": true,
      +    "properties": {
      +      "filename": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Optional basename used to match request.assets[].filename.",
      +        "title": "Filename"
      +      },
      +      "url": {
      +        "description": "Public HTTPS URL for a reference asset.",
      +        "title": "Url",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "url"
      +    ],
      +    "title": "UploadUrlPayload",
      +    "type": "object"
      +  }
      +}
    • addedInput schema / properties / request / $ref
      Added value: +"#/$defs/RenderRequestPayload"
    • removedInput schema / properties / request / additionalProperties
      Removed value: -true
    • addedInput schema / properties / request / description
      Added value: +"Required render request object. Include at least name, and usually project_mode, screenplay, instructions, shot_count, duration, and resolution."
    • removedInput schema / properties / request / title
      Removed value: -"Request"
    • removedInput schema / properties / request / type
      Removed value: -"object"
    • changedInput schema / properties / upload_urls / anyOf
      Previous value: -[
      -  {
      -    "items": {
      -      "anyOf": [
      -        {
      -          "type": "string"
      -        },
      -        {
      -          "additionalProperties": {
      -            "type": "string"
      -          },
      -          "type": "object"
      -        }
      -      ]
      -    },
      -    "type": "array"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "items": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "$ref": "#/$defs/UploadUrlPayload"
      +        }
      +      ]
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / upload_urls / description
      Added value: +"Optional public HTTPS reference asset URLs. Each object can include url and filename; filename should match request.assets[].filename."
  4. Changed3 schema fields changed
    • removedInput schema / properties / api_key
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "title": "Api Key"
      -}
    • removedInput schema / properties / base_url
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "title": "Base Url"
      -}
    • removedInput schema / properties / upload_files
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "items": {
      -        "type": "string"
      -      },
      -      "type": "array"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "title": "Upload Files"
      -}
  5. First observed

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already disclose destructiveHint=true, so the description does not need to restate that. It adds valuable context: credential lookup order (connector header, marketplace mapping, or FVS_AGENT_API_KEY) and the strict filename-matching rule between upload_urls and request.assets. These go beyond annotation flags.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the primary purpose, and every sentence covers a necessary point: what the tool does, how to pass payload and assets, and where credentials come from. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers submission, reference asset handling, and authentication—enough to invoke the tool correctly. Since an output schema exists, return values need no description. It does not mention checking status later, but that is covered by sibling tools and is not essential for submission.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema descriptions for request and upload_urls are already detailed and include the filename-matching requirement. The description repeats this relationship but does not explain poll_until_complete, the third parameter. With 67% schema coverage, the prose adds minimal extra value over the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses 'Submit a Future Video Studio render job through the FVS Agent API'—a specific verb+resource that clearly distinguishes it from siblings like fvs_cancel_render, fvs_get_render_status, and fvs_download_final_video. The scope is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for when to use it (to submit a render job) and provides operational how-to details, but it does not explicitly mention alternatives such as checking status with fvs_get_render_status. Missing explicit when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.2/5.0
Disambiguation4/5

The two submit-like tools (fvs_submit_render vs fvs_create_paid_render_quote) and two status tools (fvs_get_render_status vs fvs_get_paid_render_status) could be confused, but their descriptions clearly distinguish by payment mode and required identifiers. The remaining tools have distinct purposes.

Naming Consistency4/5

All tools share the 'fvs_' prefix and mostly follow a verb_noun pattern (e.g., cancel_render, get_render_status, submit_render). The one outlier is 'fvs_example_render_request', which is a noun phrase rather than verb-first, but the overall pattern remains predictable.

Tool Count5/5

Eight tools is well-scoped for a video rendering service, covering submission, status checking, cancellation, download, example generation, and a UI opener without unnecessary bloat. This falls comfortably in the ideal 3-15 range.

Completeness4/5

The standard render lifecycle (submit, status, cancel, download) is fully covered, and the paid quote path is also supported. The main gap is the lack of a tool to list existing renders or projects, which would help agents manage multiple jobs, but this is a minor omission.