Skip to main content
Glama

generate_short

Generates an original vertical short video from a topic or idea with AI script, voice-over, stock footage, music and animated captions, rendered locally; returns a job_id to poll for status.

Instructions

Create an original vertical short video from an idea: an AI-written script, voice-over, stock footage, background music and animated captions, rendered locally by the ShortsFlow pipeline. It runs in the background: the call returns a job_id immediately and the render takes a few minutes, so poll get_render_status until the job is 'completed' or 'failed'. It uses the user's own LLM, voice and stock-footage keys from the ShortsFlow .env, writes files only inside the ShortsFlow folder, and never uploads or posts anything. Use this to make a new short from a topic; use extract_clips instead to cut shorts out of an existing video.

Input Schema

NameRequiredDescriptionDefault
modeNoContent format. FACTS = a 'spot the lie' quiz of three claims; STORY / HORROR / TRUE_CRIME = narrated stories; EXPLAINER = an animated explainer; WYR = 'would you rather'; TOP_5 = a ranked list; TRIVIA / RIDDLE / EMOJI_GUESS = quiz formats; NEWS = a news recap; others as named.FACTS
vibeNoMood of the background music.suspense
promptNoOptional extra instructions or context for the script writer, e.g. 'Explain how black holes bend light'.
scriptNoOptional finished script to narrate as written. When given, no AI script is generated.
categoryNoTopic or category the script should be about, e.g. 'space mysteries', 'ancient Rome', 'psychology'.space mysteries
sfx_presetNoSound effects on visual transitions; none turns them off.auto
aspect_ratioNoOutput shape: 9:16 vertical (Shorts, Reels, TikTok), 16:9, 1:1 or 4:5.9:16
auto_duckingNoLower the background music while the voice is speaking.
tts_providerNoVoice-over engine. auto picks the best available; edgetts is free; kokoro and local run fully offline; elevenlabs and voicestudio need their own setup.auto
use_remotionNoRender animated captions with the Remotion engine (needs Node.js). False uses simple captions.
caption_styleNoAnimated caption look (needs use_remotion): HORMOZI = bold yellow single words, GLOW_BOX = words in boxes with a pink highlight, BOUNCE = bouncy gold single words, MINIMAL = clean dark boxes, AUTO/RANDOM = pick for me.HORMOZI

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed18 schema fields changedv0.1.1
    • addedInput schema / properties / aspect_ratio / description
      Added value: +"Output shape: 9:16 vertical (Shorts, Reels, TikTok), 16:9, 1:1 or 4:5."
    • changedInput schema / properties / auto_ducking / description
      Previous value: -"Automatically duck background music when voice audio plays"New value: +"Lower the background music while the voice is speaking."
    • addedInput schema / properties / caption_style / description
      Added value: +"Animated caption look (needs use_remotion): HORMOZI = bold yellow single words, GLOW_BOX = words in boxes with a pink highlight, BOUNCE = bouncy gold single words, MINIMAL = clean dark boxes, AUTO/RANDOM = pick for me."
    • changedInput schema / properties / caption_style / enum
      Previous value: -[
      -  "HORMOZI",
      -  "GLOW_BOX",
      -  "BOUNCE",
      -  "MINIMAL"
      -]New value: +[
      +  "HORMOZI",
      +  "GLOW_BOX",
      +  "BOUNCE",
      +  "MINIMAL",
      +  "AUTO",
      +  "RANDOM"
      +]
    • changedInput schema / properties / category / description
      Previous value: -"Topic or category (e.g. 'space mysteries', 'quantum physics', 'psychology')"New value: +"Topic or category the script should be about, e.g. 'space mysteries', 'ancient Rome', 'psychology'."
    • changedInput schema / properties / mode / description
      Previous value: -"Content mode: FACTS, EXPLAINER, STORY, WYR, TOP_5, CHAT_STORY, HORROR, TRUE_CRIME, BIBLE, ARTICLE, UGC, EMOJI_GUESS, REDDIT, TRIVIA, QUOTE"New value: +"Content format. FACTS = a 'spot the lie' quiz of three claims; STORY / HORROR / TRUE_CRIME = narrated stories; EXPLAINER = an animated explainer; WYR = 'would you rather'; TOP_5 = a ranked list; TRIVIA / RIDDLE / EMOJI_GUESS = quiz formats; NEWS = a news recap; others as named."
    • addedInput schema / properties / mode / enum
      Added value: +[
      +  "FACTS",
      +  "EXPLAINER",
      +  "STORY",
      +  "WYR",
      +  "TOP_5",
      +  "CHAT_STORY",
      +  "HORROR",
      +  "TRUE_CRIME",
      +  "BIBLE",
      +  "ARTICLE",
      +  "UGC",
      +  "EMOJI_GUESS",
      +  "REDDIT",
      +  "TRIVIA",
      +  "QUOTE",
      +  "NEWS",
      +  "RIDDLE"
      +]
    • changedInput schema / properties / prompt / description
      Previous value: -"Detailed prompt or script context for AI generation"New value: +"Optional extra instructions or context for the script writer, e.g. 'Explain how black holes bend light'."
    • changedInput schema / properties / script / description
      Previous value: -"Custom manual script to use directly (skips LLM generation)"New value: +"Optional finished script to narrate as written. When given, no AI script is generated."
    • changedInput schema / properties / sfx_preset / default
      Previous value: -"whoosh"New value: +"auto"
    • addedInput schema / properties / sfx_preset / description
      Added value: +"Sound effects on visual transitions; none turns them off."
    • changedInput schema / properties / sfx_preset / enum
      Previous value: -[
      -  "none",
      -  "pop",
      -  "whoosh",
      -  "chime",
      -  "riser",
      -  "boom"
      -]New value: +[
      +  "auto",
      +  "whoosh",
      +  "pop",
      +  "riser",
      +  "boom",
      +  "none"
      +]
    • removedInput schema / properties / target_lang
      Removed value: -{
      -  "description": "Language code for translation/dubbing (e.g., 'es', 'fr', 'de', 'ja')",
      -  "type": "string"
      -}
    • changedInput schema / properties / tts_provider / default
      Previous value: -"edge-tts"New value: +"auto"
    • addedInput schema / properties / tts_provider / description
      Added value: +"Voice-over engine. auto picks the best available; edgetts is free; kokoro and local run fully offline; elevenlabs and voicestudio need their own setup."
    • changedInput schema / properties / tts_provider / enum
      Previous value: -[
      -  "edge-tts",
      -  "elevenlabs",
      -  "voicestudio",
      -  "gtts"
      -]New value: +[
      +  "auto",
      +  "edgetts",
      +  "elevenlabs",
      +  "voicestudio",
      +  "local",
      +  "kokoro"
      +]
    • changedInput schema / properties / use_remotion / description
      Previous value: -"Use React-based Remotion subtitle engine for dynamic spring animations"New value: +"Render animated captions with the Remotion engine (needs Node.js). False uses simple captions."
    • addedInput schema / properties / vibe / description
      Added value: +"Mood of the background music."
  2. First observedv0.1.0

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations supplied, the description carries the full burden and does so: it discloses that the tool is asynchronous, returns a job_id immediately, takes minutes, requires the user's own keys from the ShortsFlow .env, writes only inside the ShortsFlow folder, and never uploads or posts. Async semantics, credential sourcing and side-effect boundaries are exactly the facts an agent needs before firing an expensive render.

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?

Four sentences, each load-bearing: purpose, async contract, side effects/credentials, then routing to the alternative. The most decision-critical facts (what it makes, that it is backgrounded) are front-loaded with no filler.

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 an 11-parameter, long-running generation tool with no output schema, the description covers the return contract (job_id plus polling), the operational constraints (local render, user keys, no upload), and the sibling alternative. Nothing an agent needs in order to call it correctly is missing.

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%, with all 11 parameters and 6 enums documented inline, so the schema already does the heavy lifting. The description adds only the loose framing of topic/idea and does not explain how mode, vibe, or caption_style interact with the render; baseline 3 is appropriate.

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 specific verb and resource ("Create an original vertical short video from an idea") and enumerates the pipeline components it produces: AI script, voice-over, stock footage, music, animated captions. It also explicitly distinguishes itself from the sibling extract_clips, 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.

Usage Guidelines5/5

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

It gives an explicit when-to-use rule ("Use this to make a new short from a topic") paired with the alternative and its condition ("use extract_clips instead to cut shorts out of an existing video"). It also prescribes the follow-up workflow: poll get_render_status until 'completed' or 'failed'.

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