Skip to main content
Glama

submit_export

Export the timeline as video, audio, subtitles, NLE XML, or an archive (NLE XML zipped with the timeline's media so clips relink automatically). Video/audio support frame- or seconds-based partial ranges; subtitles support frame ranges. XML and archive exports always include the whole timeline. Prefer browser execution, renderMode=local (default). Name the full timelineId explicitly. External callers must also name projectId; the internal agent uses its authorized run project. A signed-in supported browser can render this scope from any page, including Home. Keep that browser open through delivery; navigation does not retarget the job. For video/audio, renderMode=cloud remains available when no local renderer is available or cloud is explicitly chosen; Desktop is optional and is not a renderMode of this tool. Follow structured recovery details: busy jobs wait, unknown acknowledgements must be checked before resubmitting, and media errors must be resolved. A failed local call does not silently create a cloud job. To self-check, use preview_timeline for frames and format=audio for sound; never export full video just to check. Subtitles/XML complete synchronously with a download URL/path. Video/audio/archive return a renderId; use track_export with it when the status is not terminal and the user asks for status, or this turn genuinely needs to wait for completion.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "timelineId": "<timelineId>"
    },
    "name": "submit_export"
  }
}

Input Schema

NameRequiredDescriptionDefault
fpsNoVideo output frame rate. Omit to match the timeline fps; supported values are 24, 25, 30, 50, and 60.
nameNoFile name without extension. A local video/audio export appends a short export id and the extension; the result's expectedFilename is the exact name it downloads as.
codecNoOutput codec. Video supports "h264" (MP4, default) or "vp8" (WebM). Audio exports are "mp3".
formatNo"video" (default), "audio", "subtitles", "xml", or "archive". "archive" is the NLE XML bundled with the timeline's media in a zip; it runs in the selected signed-in browser independent of the visible page, so prefer it only when they asked for a self-contained/relink-ready export. Use bundleMotionGraphics/bundleChatcutMedia/bundleUserUploads to choose what goes in.
deliveryNoLocal video/audio only. "browser" (the usual default) downloads the finished file in the rendering browser. "host" uploads it instead and track_export returns delivery.downloadUrl for you to fetch with your own shell and send to the user; use it when your host runs the browser elsewhere or must attach the file to the conversation. Omit to use this host's default. Cloud renders already return a download URL.
nleFormatNoNLE XML format for format="xml" or "archive". Defaults to "fcp_xml" (Premiere). Use "fcp_xml_resolve" for DaVinci Resolve.
projectIdNoFull project UUID. Required for external browser work; internal agents may omit. Execution/explicit-timeline calls never change later calls' target.
endSecondsNoLegacy seconds-based end; prefer endFrameExclusive.
renderModeNoVideo/audio/archive only. "local" is the default browser execution; keep a signed-in supported browser open; any project or Home may remain visible. For video/audio, "cloud" uses the existing AWS Lambda renderer when no local renderer is available or cloud is explicitly chosen. No Desktop attempt is required. Review the real cloud quote first; only a credit charge needs explicit confirmation. Cloud archive export is unavailable from this tool; the legacy editor archive workflow is separate. Do not duplicate an existing or uncertain local job.
resolutionNoVideo resolution. Defaults to "1080p". "4K" requires local rendering in a capable browser; cloud supports up to "1080p".
startFrameNoInclusive start frame for a partial export.
timelineIdYesRequired full timeline UUID. Export targets only this call and never switches the visible timeline.
cloudQuoteIdNoCloud only. The ID returned by the server's cloud export quote. Show its duration, free allowance and credits before retrying; free quotes need no extra confirmation.
startSecondsNoLegacy seconds-based start; prefer startFrame.
idempotencyKeyNoStable key for this export request. Reuse only with identical parameters when checking a lost acknowledgement.
subtitleFormatNoSubtitle format for format="subtitles". Defaults to "srt".
browserProfileIdNoOptional browser profile override. Omit to select automatically; do not ask the user to choose.
bundleUserUploadsNoArchive only. Also put the clips the user uploaded from their own disk in the zip. Defaults to false, which keeps the download small and names those clips by the user's original files so their NLE relinks locally. Set true for a self-contained bundle of the captured source bytes available to the browser. Local archives do not silently create compressed proxies or upload local files. NLE-incompatible source containers return needs_input for explicit conversion or relinking.
endFrameExclusiveNoExclusive end frame for a partial export.
bundleChatcutMediaNoArchive only. Put the clips that exist only inside ChatCut in the zip — generated voice-overs and music, sound-library picks, denoise output, screen recordings, pasted screenshots. Defaults to true. Leaving these out gives the user a timeline they cannot restore, so only set false if they asked for it.
confirmCloudChargeNoCloud only. Set true only after the user explicitly confirms the exact quoted credit charge. Never infer consent from a general export request.
confirmFontFallbackNoRequired to be true when motion-graphic items reference fonts the cloud renderer cannot load. The first call without this flag returns the unsupported font list; relay that to the user, and only retry with confirmFontFallback=true after they explicitly accept the fallback. Ignored when there are no font issues.
bundleMotionGraphicsNoArchive only. Defaults to true. A local archive containing motion graphics returns needs_input because browser-local ProRes 4444 rendering is unavailable. Set false only when the user agrees to omit motion graphics. Preparing ProRes through the separate legacy editor archive workflow requires explicit cloud rendering; this tool does not start that workflow.
motionGraphicRenderKeysNoAdvanced: include already-rendered motion graphic keys in an XML export.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • addedInput schema / properties / delivery
      Added value: +{
      +  "description": "Local video/audio only. \"browser\" (the usual default) downloads the finished file in the rendering browser. \"host\" uploads it instead and track_export returns delivery.downloadUrl for you to fetch with your own shell and send to the user; use it when your host runs the browser elsewhere or must attach the file to the conversation. Omit to use this host's default. Cloud renders already return a download URL.",
      +  "enum": [
      +    "browser",
      +    "host"
      +  ],
      +  "type": "string"
      +}
  2. First observed

TDQS

A4.5/5.0
Behavior4/5

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

Annotations only tell the agent this is non-read-only, non-destructive and non-idempotent; the description adds the real behavior — the browser must stay open through delivery, navigation does not retarget the job, a failed local call does not silently fall back to cloud, cloud charges need an explicit quote/confirmation, and recovery semantics for busy/unknown/media-error cases. It does not contradict idempotentHint=false; the idempotencyKey guidance is framed around checking a lost acknowledgement, which is consistent.

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

Conciseness3/5

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

Purpose and format taxonomy are front-loaded, but the single dense paragraph packs operating constraints, recovery protocol, billing rules and self-check advice into one block with no visual separation, making it easy to skim past the cloud/local decision. Most sentences earn their place, yet several constraints read as reference material that would be better structured.

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

Completeness5/5

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

For a 24-parameter, non-idempotent, long-running export with no output schema, the description covers prerequisites (timelineId/projectId, signed-in browser), synchronous vs. async return shapes, delivery routing, and the recovery path via track_export. An agent has enough to call it correctly and to know what happens afterward.

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

Parameters4/5

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 rules the schema does not: only video/audio honor partial ranges, subtitles honor frame ranges only, and XML/archive always export the whole timeline. It also ties renderMode to which formats are available (cloud archive unavailable here) and to resolution limits.

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?

Opens with a specific verb and resource plus the full output matrix (video, audio, subtitles, NLE XML, archive) and even defines what 'archive' means (NLE XML zipped with media so clips relink). It also distinguishes itself from siblings by name — preview_timeline for self-checking and track_export for async follow-up.

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

Usage Guidelines5/5

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

Explicit when-to-use routing: prefer local browser rendering, cloud only when no local renderer exists or cloud is explicitly chosen, use preview_timeline/format=audio to verify rather than exporting full video, and call track_export only when the status is non-terminal and the user asked. Desktop is explicitly excluded as a renderMode, which prevents a plausible mis-invocation.

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.