Skip to main content
Glama

Edit a video

edit_video
DestructiveIdempotent

Edit the user's own footage into a finished video. Put what they asked for into the fields, never into prose rules: kind (montage: pictures and music lead, e.g. sport, travel, events; talking: someone speaks), length ({min_seconds, max_seconds} for "45-60 s"), style_id (read browse_styles once first: a saved style of theirs (own: true) that fits the request is the one to use), music_staging_key (a song from import_asset) or song_upload: true (they have a song file but no link: the upload link takes it too), camera_sound, formats (only when they asked for a shape; otherwise the video keeps its own and nothing is cropped). instructions holds only anything else they asked for, in their own words. Clypmint watches the footage itself: do not describe the footage, write rules or ask the user how to edit. In ChatGPT attach the video as video. Otherwise leave it out: the answer has a private upload link (15 minutes) to give the user, and editing starts when the video lands. One upload per video: to change the length, song, cut or shape of a video already made, use revise_video or a direct edit tool on that video (a shape is one set_output_frame call), never a new upload; a separate new edit of the same footage is footage_from: that video_id. Like another video? reference_url (+ reference_mode clone or match) copies that video's style beside the upload, saves it to the user's styles, and the edit waits for it; leave style_id out. No footage (an idea or a script)? Use create_video. Also: purpose (organic, ad, youtube, sales_page), hooks 1-3 (an ad's openings), shorts 0-10 or 'all', clips (a long recording cut into clips alone), speaker_name, names, spellings, sound_effects, asset_ids, source_url (a public link where links are open). Cost: 3 credits to make, plus 1 for each started minute of footage and 1 for each started minute of finished video after the first, plus 2 for each extra hook, length or format and 2 for each clip; dry_run: true answers the cost and starts nothing. Preserve operation_id on retries.

Input Schema

NameRequiredDescriptionDefault
kindNotalking: someone speaks and their words lead the cut (talking head, interview, podcast, tutorial). montage: the pictures and the music lead (sport, action, travel, events, scenery, b-roll); what people say is not followed. Leave out when unsure: Clypmint decides from the footage.
clipsNoClips alone from one recording (no main film): podcasts, streams, long talks.
hooksNoOpenings to make (1-3): an ad gets 3 by default, the main cut counting as one.
namesNoExact person, company and product names to spell correctly in this video; not a lasting account rule.
titleNo
videoNoThe attached video file (ChatGPT). Leave out to get a private upload link instead.
voiceNoThe narrator for a video made from words: matilda, sarah, jessica, alice, liam, chris, brian, george, roger, laura, charlie, river, will, eric, bella, daniel, lily, bill, adam, callum, harry (sarah: calm, reassuring, health and money; alice: a clear British educator; brian: deep documentary; liam: energetic ads). Leave out to let Clypmint pick one that fits the words. "Voice: <name>" in instructions does the same.
formatNoThe older one-shape switch; formats says more.
lengthNoHow long the finished video should be. "45-60 s" is {min_seconds: 45, max_seconds: 60}; "under a minute" is {max_seconds: 60}; "about 30 s" is {min_seconds: 25, max_seconds: 35}. Leave out when the user named no length.
shortsNoShorts to cut from the recording too (0-10), or 'all' the good ones.
dry_runNotrue: answer the credit cost and start nothing.
formatsNoOnly when the user asked for a shape: vertical, TikTok, Reels or Shorts is 9:16; square is 1:1; 4:5; YouTube or widescreen is 16:9. Every shape to make, the main one first. Leave it out otherwise: the video keeps its own shape and nothing is cropped.
purposeNoorganic (a post), ad (three openings by default), youtube (horizontal), sales_page.
style_idNoA style id from browse_styles, e.g. serif-editorial-launch, bold-navy-statement, crimson-serif-explainer, warm, luxe, brand, or a saved style of your own (my-...).
asset_idsNo
spellingsNoExplicit heard-to-correct spelling pairs for this video, for example {"KMAC":"KMAK"}.
source_urlNoA public https link to the footage (where links are open), instead of a file.
song_uploadNotrue when the user has a song file but no public link to it (a song attached in Claude, a file on their computer): the private upload link asks for the video and the song together. Leave out when music_staging_key is set.
camera_soundNoThe footage's own sound. mute: only the song plays (the default for a montage with a song). keep: the camera sound stays (the default otherwise).
footage_fromNoThe video_id of a video already made from this footage: a new edit of the same footage with no new upload (another kind, length or style). To change that video itself, use revise_video or apply_edits instead.
instructionsNoAnything else the user asked for, in their own words, usually one or two sentences. Length, kind, song, style and formats go in their own fields, not here. Clypmint watches the footage itself: do not describe the footage, write rules or explain how to edit. Kept in full.
operation_idNoA stable ID for this request. Preserve it on retries. Use a new ID only for a deliberate new request.
speaker_nameNoWho is talking, spelled right, e.g. "Dr. Ana Ruiz".
reference_urlNoA video to make this edit LIKE (a public https link from Instagram, TikTok, X, Facebook, Loom or LinkedIn): Clypmint copies its style beside the upload, saves it to the user's styles, and the edit waits for it. Use it when the user says "like this one"; leave style_id out. reference_mode picks how.
sound_effectsNotrue: sound effects on the edit.
style_versionNo
reference_modeNoHow to copy reference_url. clone (the default): deep, copies the reference's own motion and captions; slower, uses one of the monthly style copies, then credits. match: fast and approximate, included.
speaker_companyNoThe speaker's company or business, spelled exactly for this video.
music_staging_keyNoThe song for this video, from import_asset (mp3, wav or m4a): a montage's soundtrack, or music under the speech.
asset_staging_keysNo
source_duration_secondsNo

Output Schema

NameRequiredDescriptionDefault
codeNo
costNo
errorNo
stateNo
statusNo
dry_runNo
messageNo
plan_idNo
style_idNo
video_idNo
availableNo
import_idNo
output_idNo
studio_urlNo
version_idNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / reference_mode
      Added value: +{
      +  "description": "How to copy reference_url. clone (the default): deep, copies the reference's own motion and captions; slower, uses one of the monthly style copies, then credits. match: fast and approximate, included.",
      +  "enum": [
      +    "clone",
      +    "match"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / reference_url
      Added value: +{
      +  "description": "A video to make this edit LIKE (a public https link from Instagram, TikTok, X, Facebook, Loom or LinkedIn): Clypmint copies its style beside the upload, saves it to the user's styles, and the edit waits for it. Use it when the user says \"like this one\"; leave style_id out. reference_mode picks how.",
      +  "format": "uri",
      +  "maxLength": 2048,
      +  "type": "string"
      +}
  2. Changed8 schema fields changed
    • addedInput schema / properties / camera_sound
      Added value: +{
      +  "description": "The footage's own sound. mute: only the song plays (the default for a montage with a song). keep: the camera sound stays (the default otherwise).",
      +  "enum": [
      +    "keep",
      +    "mute"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / footage_from
      Added value: +{
      +  "description": "The video_id of a video already made from this footage: a new edit of the same footage with no new upload (another kind, length or style). To change that video itself, use revise_video or apply_edits instead.",
      +  "pattern": "^prj_[A-Za-z0-9_-]{6,96}$",
      +  "type": "string"
      +}
    • changedInput schema / properties / formats / description
      Previous value: -"Every shape to make, the main one first: 9:16, 16:9, 1:1, 4:5."New value: +"Only when the user asked for a shape: vertical, TikTok, Reels or Shorts is 9:16; square is 1:1; 4:5; YouTube or widescreen is 16:9. Every shape to make, the main one first. Leave it out otherwise: the video keeps its own shape and nothing is cropped."
    • changedInput schema / properties / instructions / description
      Previous value: -"What you want, in plain words, up to 8,000 characters. Kept in full."New value: +"Anything else the user asked for, in their own words, usually one or two sentences. Length, kind, song, style and formats go in their own fields, not here. Clypmint watches the footage itself: do not describe the footage, write rules or explain how to edit. Kept in full."
    • addedInput schema / properties / kind
      Added value: +{
      +  "description": "talking: someone speaks and their words lead the cut (talking head, interview, podcast, tutorial). montage: the pictures and the music lead (sport, action, travel, events, scenery, b-roll); what people say is not followed. Leave out when unsure: Clypmint decides from the footage.",
      +  "enum": [
      +    "talking",
      +    "montage"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / length
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "How long the finished video should be. \"45-60 s\" is {min_seconds: 45, max_seconds: 60}; \"under a minute\" is {max_seconds: 60}; \"about 30 s\" is {min_seconds: 25, max_seconds: 35}. Leave out when the user named no length.",
      +  "properties": {
      +    "max_seconds": {
      +      "maximum": 3600,
      +      "minimum": 5,
      +      "type": "integer"
      +    },
      +    "min_seconds": {
      +      "maximum": 3600,
      +      "minimum": 5,
      +      "type": "integer"
      +    }
      +  },
      +  "required": [
      +    "max_seconds"
      +  ],
      +  "type": "object"
      +}
    • changedInput schema / properties / music_staging_key / description
      Previous value: -"A song from import_asset (mp3, wav or m4a) to lay under the voice."New value: +"The song for this video, from import_asset (mp3, wav or m4a): a montage's soundtrack, or music under the speech."
    • addedInput schema / properties / song_upload
      Added value: +{
      +  "description": "true when the user has a song file but no public link to it (a song attached in Claude, a file on their computer): the private upload link asks for the video and the song together. Leave out when music_staging_key is set.",
      +  "type": "boolean"
      +}
  3. Changed3 schema fields changed
    • addedInput schema / properties / names
      Added value: +{
      +  "description": "Exact person, company and product names to spell correctly in this video; not a lasting account rule.",
      +  "items": {
      +    "maxLength": 80,
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  "maxItems": 50,
      +  "type": "array"
      +}
    • addedInput schema / properties / speaker_company
      Added value: +{
      +  "description": "The speaker's company or business, spelled exactly for this video.",
      +  "maxLength": 80,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / spellings
      Added value: +{
      +  "additionalProperties": {
      +    "maxLength": 80,
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  "description": "Explicit heard-to-correct spelling pairs for this video, for example {\"KMAC\":\"KMAK\"}.",
      +  "propertyNames": {
      +    "maxLength": 80,
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  "type": "object"
      +}
  4. Changed2 schema fields changed
    • changedInput schema / properties / style_id / description
      Previous value: -"A style id from browse_styles, e.g. serif-editorial-launch, bold-navy-statement, warm, luxe, brand, intro, or a saved style of your own (my-...)."New value: +"A style id from browse_styles, e.g. serif-editorial-launch, bold-navy-statement, crimson-serif-explainer, warm, luxe, brand, or a saved style of your own (my-...)."
    • changedInput schema / properties / voice / description
      Previous value: -"The narrator for a video made from words: matilda, sarah, jessica, alice, liam, chris, brian, george, roger, laura, charlie, river, will, eric, bella, daniel, lily, bill, adam, callum, harry. Leave out to let Clypmint pick one that fits."New value: +"The narrator for a video made from words: matilda, sarah, jessica, alice, liam, chris, brian, george, roger, laura, charlie, river, will, eric, bella, daniel, lily, bill, adam, callum, harry (sarah: calm, reassuring, health and money; alice: a clear British educator; brian: deep documentary; liam: energetic ads). Leave out to let Clypmint pick one that fits the words. \"Voice: <name>\" in instructions does the same."
  5. Changed1 schema field changed
    • changedInput schema / $schema
      Previous value: -"https://json-schema.org/draft/2020-12/schema"New value: +"http://json-schema.org/draft-07/schema#"
  6. Changed2 schema fields changed
    • changedInput schema / properties / voice / description
      Previous value: -"The narrator for a video made from words: matilda, sarah, jessica, alice, liam, chris, brian, george. Leave out to let Clypmint pick one that fits."New value: +"The narrator for a video made from words: matilda, sarah, jessica, alice, liam, chris, brian, george, roger, laura, charlie, river, will, eric, bella, daniel, lily, bill, adam, callum, harry. Leave out to let Clypmint pick one that fits."
    • changedInput schema / properties / voice / enum
      Previous value: -[
      -  "matilda",
      -  "sarah",
      -  "jessica",
      -  "alice",
      -  "liam",
      -  "chris",
      -  "brian",
      -  "george"
      -]New value: +[
      +  "matilda",
      +  "sarah",
      +  "jessica",
      +  "alice",
      +  "liam",
      +  "chris",
      +  "brian",
      +  "george",
      +  "roger",
      +  "laura",
      +  "charlie",
      +  "river",
      +  "will",
      +  "eric",
      +  "bella",
      +  "daniel",
      +  "lily",
      +  "bill",
      +  "adam",
      +  "callum",
      +  "harry"
      +]
  7. Changed1 schema field changed
    • changedInput schema / properties / style_id / description
      Previous value: -"A style id from browse_styles, e.g. warm, luxe, brand, intro, tech, ugc-ad, or a saved style of your own (my-...)."New value: +"A style id from browse_styles, e.g. serif-editorial-launch, bold-navy-statement, warm, luxe, brand, intro, or a saved style of your own (my-...)."
  8. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "description": "Clypmint edit_video result. Error results carry error; successful requests expose the identifiers and state available for the next step. Signed media stays in private metadata.",
      +  "properties": {
      +    "available": {
      +      "type": "boolean"
      +    },
      +    "code": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "cost": {
      +      "additionalProperties": true,
      +      "type": "object"
      +    },
      +    "dry_run": {
      +      "type": "boolean"
      +    },
      +    "error": {
      +      "type": "string"
      +    },
      +    "import_id": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "message": {
      +      "type": "string"
      +    },
      +    "output_id": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "plan_id": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "state": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "status": {
      +      "type": [
      +        "string",
      +        "integer",
      +        "null"
      +      ]
      +    },
      +    "studio_url": {
      +      "format": "uri",
      +      "type": "string"
      +    },
      +    "style_id": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "version_id": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "video_id": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    }
      +  },
      +  "type": "object"
      +}
  9. Changed28 schema fields changed
    • addedInput schema / $schema
      Added value: +"https://json-schema.org/draft/2020-12/schema"
    • addedInput schema / properties / asset_ids
      Added value: +{
      +  "items": {
      +    "pattern": "^src_[A-Za-z0-9][A-Za-z0-9_-]{7,95}$",
      +    "type": "string"
      +  },
      +  "maxItems": 50,
      +  "type": "array"
      +}
    • addedInput schema / properties / asset_staging_keys
      Added value: +{
      +  "items": {
      +    "pattern": "^stg_[A-Za-z0-9][A-Za-z0-9_-]{7,95}$",
      +    "type": "string"
      +  },
      +  "maxItems": 50,
      +  "type": "array"
      +}
    • addedInput schema / properties / clips
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Clips alone from one recording (no main film): podcasts, streams, long talks.",
      +  "properties": {
      +    "about": {
      +      "description": "Topics to look for first, in plain words.",
      +      "maxLength": 300,
      +      "minLength": 2,
      +      "type": "string"
      +    },
      +    "count": {
      +      "anyOf": [
      +        {
      +          "maximum": 30,
      +          "minimum": 1,
      +          "type": "integer"
      +        },
      +        {
      +          "enum": [
      +            "all"
      +          ],
      +          "type": "string"
      +        }
      +      ],
      +      "description": "How many clips (1-30), or 'all' the good ones."
      +    },
      +    "from_seconds": {
      +      "maximum": 21600,
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "max_seconds": {
      +      "maximum": 95,
      +      "minimum": 10,
      +      "type": "integer"
      +    },
      +    "min_seconds": {
      +      "maximum": 95,
      +      "minimum": 10,
      +      "type": "integer"
      +    },
      +    "shape": {
      +      "description": "source keeps the recording's shape; 9:16 cuts each clip vertical on the speaker.",
      +      "enum": [
      +        "source",
      +        "9:16"
      +      ],
      +      "type": "string"
      +    },
      +    "to_seconds": {
      +      "exclusiveMinimum": 0,
      +      "maximum": 21600,
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "count"
      +  ],
      +  "type": "object"
      +}
    • addedInput schema / properties / dry_run
      Added value: +{
      +  "description": "true: answer the credit cost and start nothing.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / format / description
      Added value: +"The older one-shape switch; formats says more."
    • addedInput schema / properties / formats
      Added value: +{
      +  "description": "Every shape to make, the main one first: 9:16, 16:9, 1:1, 4:5.",
      +  "items": {
      +    "enum": [
      +      "9:16",
      +      "16:9",
      +      "1:1",
      +      "4:5"
      +    ],
      +    "type": "string"
      +  },
      +  "maxItems": 4,
      +  "minItems": 1,
      +  "type": "array"
      +}
    • addedInput schema / properties / hooks / description
      Added value: +"Openings to make (1-3): an ad gets 3 by default, the main cut counting as one."
    • addedInput schema / properties / instructions / description
      Added value: +"What you want, in plain words, up to 8,000 characters. Kept in full."
    • changedInput schema / properties / instructions / maxLength
      Previous value: -2000New value: +8000
    • addedInput schema / properties / music_staging_key
      Added value: +{
      +  "description": "A song from import_asset (mp3, wav or m4a) to lay under the voice.",
      +  "pattern": "^stg_[A-Za-z0-9][A-Za-z0-9_-]{7,95}$",
      +  "type": "string"
      +}
    • changedInput schema / properties / operation_id / description
      Previous value: -"A stable ID for this authorized request. Preserve it on retries. Use a new ID only for a deliberate new request."New value: +"A stable ID for this request. Preserve it on retries. Use a new ID only for a deliberate new request."
    • addedInput schema / properties / purpose / description
      Added value: +"organic (a post), ad (three openings by default), youtube (horizontal), sales_page."
    • addedInput schema / properties / shorts / anyOf
      Added value: +[
      +  {
      +    "maximum": 10,
      +    "minimum": 0,
      +    "type": "integer"
      +  },
      +  {
      +    "enum": [
      +      "all"
      +    ],
      +    "type": "string"
      +  }
      +]
    • addedInput schema / properties / shorts / description
      Added value: +"Shorts to cut from the recording too (0-10), or 'all' the good ones."
    • removedInput schema / properties / shorts / maximum
      Removed value: -10
    • removedInput schema / properties / shorts / minimum
      Removed value: -0
    • removedInput schema / properties / shorts / type
      Removed value: -"integer"
    • addedInput schema / properties / sound_effects
      Added value: +{
      +  "description": "true: sound effects on the edit.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / source_duration_seconds
      Added value: +{
      +  "exclusiveMinimum": 0,
      +  "maximum": 21600,
      +  "type": "number"
      +}
    • addedInput schema / properties / source_url
      Added value: +{
      +  "description": "A public https link to the footage (where links are open), instead of a file.",
      +  "format": "uri",
      +  "maxLength": 2048,
      +  "type": "string"
      +}
    • addedInput schema / properties / speaker_name
      Added value: +{
      +  "description": "Who is talking, spelled right, e.g. \"Dr. Ana Ruiz\".",
      +  "maxLength": 80,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • removedInput schema / properties / style_id / anyOf
      Removed value: -[
      -  {
      -    "enum": [
      -      "warm",
      -      "luxe",
      -      "brand",
      -      "intro",
      -      "tech",
      -      "ugc-ad",
      -      "youtube",
      -      "youtube-health",
      -      "podcast",
      -      "cut",
      -      "popup",
      -      "youtube-documentary",
      -      "realestate",
      -      "ugc-ad-sky",
      -      "studio",
      -      "playbook",
      -      "cinematic",
      -      "namedrop"
      -    ],
      -    "type": "string"
      -  },
      -  {
      -    "pattern": "^my-[a-f0-9]{12}$",
      -    "type": "string"
      -  }
      -]
    • addedInput schema / properties / style_id / description
      Added value: +"A style id from browse_styles, e.g. warm, luxe, brand, intro, tech, ugc-ad, or a saved style of your own (my-...)."
    • addedInput schema / properties / style_id / pattern
      Added value: +"^[a-z0-9-]{1,40}$"
    • addedInput schema / properties / style_id / type
      Added value: +"string"
    • addedInput schema / properties / video / description
      Added value: +"The attached video file (ChatGPT). Leave out to get a private upload link instead."
    • addedInput schema / properties / voice
      Added value: +{
      +  "description": "The narrator for a video made from words: matilda, sarah, jessica, alice, liam, chris, brian, george. Leave out to let Clypmint pick one that fits.",
      +  "enum": [
      +    "matilda",
      +    "sarah",
      +    "jessica",
      +    "alice",
      +    "liam",
      +    "chris",
      +    "brian",
      +    "george"
      +  ],
      +  "type": "string"
      +}
  10. Changed3 schema fields changed
    • addedInput schema / properties / format / type
      Added value: +"string"
    • addedInput schema / properties / purpose / type
      Added value: +"string"
    • changedInput schema / properties / style_id / anyOf
      Previous value: -[
      -  {
      -    "enum": [
      -      "warm",
      -      "luxe",
      -      "brand",
      -      "intro",
      -      "tech",
      -      "ugc-ad",
      -      "youtube",
      -      "youtube-health",
      -      "podcast",
      -      "cut",
      -      "popup",
      -      "youtube-documentary",
      -      "realestate",
      -      "ugc-ad-sky",
      -      "studio",
      -      "playbook",
      -      "cinematic",
      -      "namedrop"
      -    ]
      -  },
      -  {
      -    "pattern": "^my-[a-f0-9]{12}$",
      -    "type": "string"
      -  }
      -]New value: +[
      +  {
      +    "enum": [
      +      "warm",
      +      "luxe",
      +      "brand",
      +      "intro",
      +      "tech",
      +      "ugc-ad",
      +      "youtube",
      +      "youtube-health",
      +      "podcast",
      +      "cut",
      +      "popup",
      +      "youtube-documentary",
      +      "realestate",
      +      "ugc-ad-sky",
      +      "studio",
      +      "playbook",
      +      "cinematic",
      +      "namedrop"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "pattern": "^my-[a-f0-9]{12}$",
      +    "type": "string"
      +  }
      +]
  11. Changed1 schema field changed
    • addedInput schema / properties / style_version
      Added value: +{
      +  "maximum": 10000,
      +  "minimum": 1,
      +  "type": "integer"
      +}
  12. Changed4 schema fields changed
    • addedInput schema / properties / hooks
      Added value: +{
      +  "maximum": 3,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / operation_id
      Added value: +{
      +  "description": "A stable ID for this authorized request. Preserve it on retries. Use a new ID only for a deliberate new request.",
      +  "pattern": "^[a-zA-Z0-9_.:-]{1,100}$",
      +  "type": "string"
      +}
    • addedInput schema / properties / purpose
      Added value: +{
      +  "enum": [
      +    "organic",
      +    "ad",
      +    "youtube",
      +    "sales_page"
      +  ]
      +}
    • addedInput schema / properties / shorts
      Added value: +{
      +  "maximum": 10,
      +  "minimum": 0,
      +  "type": "integer"
      +}
  13. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the annotations, the description discloses credit costs, dry_run behavior, the 15-minute private upload link, that editing starts when the video lands, one upload per video, and that operation_id must be preserved on retries. These details materially inform an agent about side effects and operational constraints.

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

Conciseness4/5

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

The description is front-loaded with the core action and field-mapping rules, and most clauses carry useful routing or operational information. It is nonetheless a dense single paragraph with some overlap against schema descriptions, which slightly reduces scanability despite the complexity warranting detail.

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 31-parameter mutation tool with an output schema, the description covers the essential workflow, alternatives, upload handling, cost, dry_run, retries, references, and style selection. Combined with the rich schema and annotations, an agent has enough context to invoke it correctly.

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 description coverage is already high at 84%, so the schema carries much of the parameter burden. The description still adds valuable cross-parameter guidance: mapping user requests to kind, length, style_id, music staging, formats, instructions, purpose, hooks, shorts, clips, reference_url, and cost-related dry_run behavior.

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: editing the user's own footage into a finished video. It explicitly distinguishes this from create_video when there is no footage, from revise_video for changes to an already-made video, and from footage_from for a separate new edit of the same footage.

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 explicit routing rules: use browse_styles once before choosing style_id, use import_asset for songs, use create_video for an idea or script, use revise_video or direct edit tools for changes to an existing video, and use reference_url for 'like this one'. It also explains when to omit style_id when reference_url is set.

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.

Resources