Skip to main content
Glama
instavar

@instavar/mcp-server

by instavar

Create video brief

create_video_brief

Create a video job from a structured brief and trigger the render pipeline. Returns job and run IDs immediately; rendering continues asynchronously—poll status until ready.

Instructions

Create a new video job from a structured brief and trigger the render pipeline. Returns the job and run IDs immediately; rendering continues asynchronously (typically a few minutes) — poll get_job_status until draft_ready. Requires a key with write scope. To change an existing job, use edit_video_brief instead of creating a duplicate.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
stepsNoStructured steps for educational content (LaTeX)
titleYesShort title (max 120 chars)
scenesNoScene graph for the UniversalVideo composition
scriptYesFull narration script (sent to TTS)
captionYesSocial caption with hooks, hashtags, CTA
voiceIdNoTTS narrator voice ID. Unknown IDs are rejected before rendering; when omitted, the org's saved voice preference or the system default is used and reported in the response's resolution block.
objectiveYesContent objective (drives composition routing)
assetSlotsNoOptional storyboard asset slots: region-placed image/video assets or placeholders attached to the whole video or a specific scene.
directionsNoDirectionsWalkthrough 'find-us' payload: source clips (legs), decision-point cues on the realtime walk timeline, outro, and optional music. Set compositionId 'DirectionsWalkthrough' (or objective 'directions').
aspectRatioNoAspect ratio (defaults to 9:16 when omitted)
audioLayersNoOptional typed music, Foley, transition, and effect layers.
lessonTitleNoDisplay title rendered inside the video
compositionIdNoRemotion composition ID override (advanced)
publishTargetYesTarget social platform
visualDirectionNoWhole-video communication, attention, visual-language, and camera direction.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed26 schema fields changed
    • addedInput schema / properties / assetSlots
      Added value: +{
      +  "description": "Optional storyboard asset slots: region-placed image/video assets or placeholders attached to the whole video or a specific scene.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "id": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "intent": {
      +        "type": "string"
      +      },
      +      "kind": {
      +        "enum": [
      +          "image",
      +          "video"
      +        ],
      +        "type": "string"
      +      },
      +      "region": {
      +        "enum": [
      +          "background",
      +          "left-half",
      +          "right-half",
      +          "figure-center",
      +          "corner-inset",
      +          "lower-third"
      +        ],
      +        "type": "string"
      +      },
      +      "role": {
      +        "enum": [
      +          "background",
      +          "figure",
      +          "inset",
      +          "lower-third",
      +          "diagram-node"
      +        ],
      +        "type": "string"
      +      },
      +      "sceneId": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "source": {
      +        "enum": [
      +          "auto",
      +          "stock",
      +          "generate"
      +        ],
      +        "type": "string"
      +      },
      +      "style": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "fit": {
      +            "enum": [
      +              "cover",
      +              "contain"
      +            ],
      +            "type": "string"
      +          },
      +          "opacity": {
      +            "maximum": 1,
      +            "minimum": 0,
      +            "type": "number"
      +          },
      +          "z": {
      +            "type": "number"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "timing": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "fromPct": {
      +            "maximum": 1,
      +            "minimum": 0,
      +            "type": "number"
      +          },
      +          "toPct": {
      +            "maximum": 1,
      +            "minimum": 0,
      +            "type": "number"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "url": {
      +        "format": "uri",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "region",
      +      "role",
      +      "kind",
      +      "source",
      +      "intent"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / audioLayers
      Added value: +{
      +  "description": "Optional typed music, Foley, transition, and effect layers.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "durationInFrames": {
      +        "exclusiveMinimum": 0,
      +        "type": "integer"
      +      },
      +      "fadeFrames": {
      +        "default": 0,
      +        "minimum": 0,
      +        "type": "integer"
      +      },
      +      "id": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "role": {
      +        "enum": [
      +          "music",
      +          "foley",
      +          "transition",
      +          "effect"
      +        ],
      +        "type": "string"
      +      },
      +      "src": {
      +        "format": "uri",
      +        "type": "string"
      +      },
      +      "startFrame": {
      +        "default": 0,
      +        "minimum": 0,
      +        "type": "integer"
      +      },
      +      "volume": {
      +        "default": 1,
      +        "maximum": 1,
      +        "minimum": 0,
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "src",
      +      "role"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / scenes / items / properties / accentColor
      Added value: +{
      +  "type": "string"
      +}
    • addedInput schema / properties / scenes / items / properties / cutFlash
      Added value: +{
      +  "type": "boolean"
      +}
    • addedInput schema / properties / scenes / items / properties / generationContract
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "globalInvariants": {
      +      "items": {
      +        "maxLength": 300,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "maxItems": 20,
      +      "type": "array"
      +    },
      +    "prohibitedChanges": {
      +      "items": {
      +        "maxLength": 300,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "maxItems": 20,
      +      "type": "array"
      +    },
      +    "referenceBindings": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "assetId": {
      +            "maxLength": 200,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "roles": {
      +            "items": {
      +              "enum": [
      +                "identity",
      +                "appearance",
      +                "motion",
      +                "composition",
      +                "camera",
      +                "environment",
      +                "style"
      +              ],
      +              "type": "string"
      +            },
      +            "maxItems": 7,
      +            "minItems": 1,
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "assetId",
      +          "roles"
      +        ],
      +        "type": "object"
      +      },
      +      "maxItems": 20,
      +      "type": "array"
      +    },
      +    "reviewCriteria": {
      +      "items": {
      +        "maxLength": 300,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "maxItems": 20,
      +      "type": "array"
      +    },
      +    "shotDelta": {
      +      "maxLength": 500,
      +      "minLength": 1,
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedInput schema / properties / scenes / items / properties / muted
      Added value: +{
      +  "type": "boolean"
      +}
    • addedInput schema / properties / scenes / items / properties / objectFit
      Added value: +{
      +  "enum": [
      +    "cover",
      +    "contain"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / scenes / items / properties / objectPosition
      Added value: +{
      +  "type": "string"
      +}
    • addedInput schema / properties / scenes / items / properties / overlayBackgroundColor
      Added value: +{
      +  "type": "string"
      +}
    • addedInput schema / properties / scenes / items / properties / overlayKind
      Added value: +{
      +  "enum": [
      +    "none",
      +    "hook",
      +    "stage",
      +    "end-card"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / scenes / items / properties / overlayPosition
      Added value: +{
      +  "enum": [
      +    "center",
      +    "top",
      +    "bottom"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / scenes / items / properties / panFromX
      Added value: +{
      +  "maximum": 50,
      +  "minimum": -50,
      +  "type": "number"
      +}
    • addedInput schema / properties / scenes / items / properties / panFromY
      Added value: +{
      +  "maximum": 50,
      +  "minimum": -50,
      +  "type": "number"
      +}
    • addedInput schema / properties / scenes / items / properties / panToX
      Added value: +{
      +  "maximum": 50,
      +  "minimum": -50,
      +  "type": "number"
      +}
    • addedInput schema / properties / scenes / items / properties / panToY
      Added value: +{
      +  "maximum": 50,
      +  "minimum": -50,
      +  "type": "number"
      +}
    • addedInput schema / properties / scenes / items / properties / playbackRate
      Added value: +{
      +  "maximum": 8,
      +  "minimum": 0.25,
      +  "type": "number"
      +}
    • addedInput schema / properties / scenes / items / properties / routeFrom
      Added value: +{
      +  "type": "string"
      +}
    • addedInput schema / properties / scenes / items / properties / routeLabel
      Added value: +{
      +  "type": "string"
      +}
    • addedInput schema / properties / scenes / items / properties / routeTo
      Added value: +{
      +  "type": "string"
      +}
    • addedInput schema / properties / scenes / items / properties / scaleFrom
      Added value: +{
      +  "maximum": 2,
      +  "minimum": 0.5,
      +  "type": "number"
      +}
    • addedInput schema / properties / scenes / items / properties / scaleTo
      Added value: +{
      +  "maximum": 2,
      +  "minimum": 0.5,
      +  "type": "number"
      +}
    • addedInput schema / properties / scenes / items / properties / trimEndSeconds
      Added value: +{
      +  "exclusiveMinimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / scenes / items / properties / trimStartSeconds
      Added value: +{
      +  "minimum": 0,
      +  "type": "number"
      +}
    • changedInput schema / properties / scenes / items / properties / type / enum
      Previous value: -[
      -  "hero",
      -  "points",
      -  "equation",
      -  "metric-bars",
      -  "metric-compare",
      -  "timeline",
      -  "limit-cards",
      -  "slide",
      -  "caption-overlay",
      -  "cta",
      -  "progress-ring",
      -  "metric-counter",
      -  "callout",
      -  "step-pill",
      -  "cta-pulse",
      -  "video-window",
      -  "custom"
      -]New value: +[
      +  "hero",
      +  "points",
      +  "equation",
      +  "metric-bars",
      +  "metric-compare",
      +  "timeline",
      +  "limit-cards",
      +  "slide",
      +  "caption-overlay",
      +  "cta",
      +  "progress-ring",
      +  "metric-counter",
      +  "callout",
      +  "step-pill",
      +  "cta-pulse",
      +  "source-clip",
      +  "source-image",
      +  "route-card",
      +  "video-window",
      +  "image-window",
      +  "custom"
      +]
    • addedInput schema / properties / scenes / items / properties / visualResolution
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "intent": {
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    "media": {
      +      "default": "still",
      +      "enum": [
      +        "still",
      +        "motion"
      +      ],
      +      "type": "string"
      +    },
      +    "source": {
      +      "default": "auto",
      +      "enum": [
      +        "auto",
      +        "stock",
      +        "generate"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedInput schema / properties / visualDirection
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Whole-video communication, attention, visual-language, and camera direction.",
      +  "properties": {
      +    "attentionPath": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "first": {
      +          "$ref": "#/properties/visualDirection/properties/communicationJob"
      +        },
      +        "next": {
      +          "$ref": "#/properties/visualDirection/properties/communicationJob"
      +        },
      +        "proof": {
      +          "$ref": "#/properties/visualDirection/properties/communicationJob"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "camera": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "angle": {
      +          "$ref": "#/properties/visualDirection/properties/communicationJob"
      +        },
      +        "lens": {
      +          "$ref": "#/properties/visualDirection/properties/communicationJob"
      +        },
      +        "movement": {
      +          "$ref": "#/properties/visualDirection/properties/communicationJob"
      +        },
      +        "shotSize": {
      +          "$ref": "#/properties/visualDirection/properties/communicationJob"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "communicationJob": {
      +      "maxLength": 500,
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    "emotionalTarget": {
      +      "$ref": "#/properties/visualDirection/properties/communicationJob"
      +    },
      +    "visualLanguage": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "color": {
      +          "$ref": "#/properties/visualDirection/properties/communicationJob"
      +        },
      +        "line": {
      +          "$ref": "#/properties/visualDirection/properties/communicationJob"
      +        },
      +        "movement": {
      +          "$ref": "#/properties/visualDirection/properties/communicationJob"
      +        },
      +        "rhythm": {
      +          "$ref": "#/properties/visualDirection/properties/communicationJob"
      +        },
      +        "shape": {
      +          "$ref": "#/properties/visualDirection/properties/communicationJob"
      +        },
      +        "space": {
      +          "$ref": "#/properties/visualDirection/properties/communicationJob"
      +        },
      +        "tone": {
      +          "$ref": "#/properties/visualDirection/properties/communicationJob"
      +        }
      +      },
      +      "type": "object"
      +    }
      +  },
      +  "type": "object"
      +}
  2. Changed6 schema fields changedv0.3.0
    • removedInput schema / properties / aspectRatio / default
      Removed value: -"9:16"
    • changedInput schema / properties / aspectRatio / description
      Previous value: -"Aspect ratio (default 9:16)"New value: +"Aspect ratio (defaults to 9:16 when omitted)"
    • addedInput schema / properties / scenes / items / properties / generatePrompt
      Added value: +{
      +  "type": "string"
      +}
    • addedInput schema / properties / scenes / items / properties / narrationText
      Added value: +{
      +  "type": "string"
      +}
    • addedInput schema / properties / scenes / items / properties / source
      Added value: +{
      +  "enum": [
      +    "url",
      +    "generate"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / voiceId
      Added value: +{
      +  "description": "TTS narrator voice ID. Unknown IDs are rejected before rendering; when omitted, the org's saved voice preference or the system default is used and reported in the response's resolution block.",
      +  "type": "string"
      +}
  3. First observedv0.1.0

TDQS

A4.7/5.0
Behavior5/5

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

Beyond annotations (which are all false), the description discloses asynchronous behavior ('rendering continues asynchronously'), timing ('typically a few minutes'), the immediate return of job and run IDs, and the polling pattern. It also notes write-scope requirement, adding meaningful context.

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: purpose, async behavior/polling, and auth/alternative. Each sentence carries essential information with no redundancy or fluff.

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 complex tool with 15 parameters and no output schema, the description covers invocation (purpose, required scope), expected immediate returns (job/run IDs), and follow-up (polling status). It gives a complete mental model for an agent to use it correctly.

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 description coverage is 100%, so the schema fully documents each parameter. The description adds general context about a 'structured brief' but no parameter-specific details, which is acceptable given the baseline.

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?

The description states a clear action: 'Create a new video job from a structured brief and trigger the render pipeline.' This uses a specific verb and resource, and differentiates from siblings by explicitly naming edit_video_brief for modifying existing jobs.

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?

It provides explicit when-to-use ('Create a new video job'), when-not-to-use ('To change an existing job, use edit_video_brief instead of creating a duplicate'), and follow-up guidance ('poll get_job_status until draft_ready'). It also states the auth requirement ('key with write scope').

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