Skip to main content
Glama

Add or replace an overlay

put_overlay
DestructiveIdempotent

Text, a picture or a clip for chosen seconds; overlay_id replaces one. Cost: Free.

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": {
      "kind": "<kind>",
      "start": "<start>",
      "end": "<end>",
      "x": "<x>",
      "y": "<y>",
      "width": "<width>",
      "height": "<height>"
    },
    "name": "put_overlay"
  }
}

Input Schema

NameRequiredDescriptionDefault
xYesCentre across.
yYesCentre down.
endYesFilm second it goes.
fontNokind text: the face; Inter-Medium when left out.
kindYestext, image or video.
moreNoMore overlays in the same save, each with the fields above.
textNokind text: the words.
alignNokind text: alignment in the box.
colorNoA colour, #RRGGBB.
startYesFilm second it appears.
widthYesBox width.
behindNoBehind the speaker.
heightYesBox height.
hiddenNoKept, not shown.
asset_idNoimage or video: an asset_id from import_media or list_assets.
rotationNoDegrees.
video_idNoVideo; the open one if left out.
animationNoHow it arrives and leaves; none (a cut) when left out.
font_sizeNotext: letter height, a fraction of the frame; 0.05 if left out.
output_idNoOutput id.
source_inNokind video: the clip second it starts from.
until_endNoStays to the end.
overlay_idNoThe ov_ id to replace; left out, the same look is the same one.
base_versionNoVersion id you read.
operation_idNoSame id retries run once.

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. Changed3 schema fields changed
    • removedInput schema / properties / color / pattern
      Removed value: -"^#[0-9a-fA-F]{6}$"
    • removedInput schema / properties / operation_id / pattern
      Removed value: -"^[a-zA-Z0-9_.:-]{1,100}$"
    • removedInput schema / properties / overlay_id / pattern
      Removed value: -"^ov_[A-Za-z0-9_-]{1,64}$"
  2. Changed3 schema fields changed
    • changedInput schema / properties / asset_id / description
      Previous value: -"kind image or video: an asset_id from import_media or list_assets."New value: +"image or video: an asset_id from import_media or list_assets."
    • changedInput schema / properties / font_size / description
      Previous value: -"kind text: letter height as a fraction of the frame; 0.05 when left out."New value: +"text: letter height, a fraction of the frame; 0.05 if left out."
    • changedInput schema / properties / video_id / description
      Previous value: -"The video; the open one when left out."New value: +"Video; the open one if left out."
  3. Changed6 schema fields changed
    • changedInput schema / properties / base_version / description
      Previous value: -"The version_id you read; refused if the video changed since."New value: +"Version id you read."
    • addedInput schema / properties / behind
      Added value: +{
      +  "const": true,
      +  "description": "Behind the speaker.",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / operation_id / description
      Previous value: -"A retry with the same id runs once."New value: +"Same id retries run once."
    • changedInput schema / properties / output_id / description
      Previous value: -"An output (Short, hook, shape); the main video when left out."New value: +"Output id."
    • changedInput schema / properties / video_id / description
      Previous value: -"The video, from list_videos."New value: +"The video; the open one when left out."
    • changedInput schema / required
      Previous value: -[
      -  "video_id",
      -  "kind",
      -  "start",
      -  "end",
      -  "x",
      -  "y",
      -  "width",
      -  "height"
      -]New value: +[
      +  "kind",
      +  "start",
      +  "end",
      +  "x",
      +  "y",
      +  "width",
      +  "height"
      +]
  4. Changed2 schema fields changed
    • addedInput schema / properties / more
      Added value: +{
      +  "description": "More overlays in the same save, each with the fields above.",
      +  "items": {
      +    "additionalProperties": {},
      +    "propertyNames": {
      +      "type": "string"
      +    },
      +    "type": "object"
      +  },
      +  "maxItems": 19,
      +  "minItems": 1,
      +  "type": "array"
      +}
    • changedInput schema / properties / overlay_id / description
      Previous value: -"An overlay to replace (ov_ id); a new one when left out."New value: +"The ov_ id to replace; left out, the same look is the same one."
  5. Changed12 schema fields changed
    • changedInput schema / properties / base_version / description
      Previous value: -"The version_id you read; refused if the video changed since. Left out: the live version, and a repeat is saved once."New value: +"The version_id you read; refused if the video changed since."
    • changedInput schema / properties / font_size / description
      Previous value: -"kind text: letter height, a fraction of the frame height; 0.05 when left out."New value: +"kind text: letter height as a fraction of the frame; 0.05 when left out."
    • changedInput schema / properties / height / description
      Previous value: -"Box height, a fraction of the frame."New value: +"Box height."
    • changedInput schema / properties / hidden / description
      Previous value: -"true: kept but not shown."New value: +"Kept, not shown."
    • changedInput schema / properties / operation_id / description
      Previous value: -"The same id on a retry runs it once; a new id is a new request."New value: +"A retry with the same id runs once."
    • changedInput schema / properties / output_id / description
      Previous value: -"A Short, hook or shape of the video; the main video when left out."New value: +"An output (Short, hook, shape); the main video when left out."
    • changedInput schema / properties / overlay_id / description
      Previous value: -"An overlay to replace (ov_ id from get_timeline); a new overlay when left out."New value: +"An overlay to replace (ov_ id); a new one when left out."
    • changedInput schema / properties / source_in / description
      Previous value: -"kind video: the second of the clip it starts from."New value: +"kind video: the clip second it starts from."
    • changedInput schema / properties / until_end / description
      Previous value: -"true: it stays to the end of the video whatever its length."New value: +"Stays to the end."
    • changedInput schema / properties / width / description
      Previous value: -"Box width, a fraction of the frame."New value: +"Box width."
    • changedInput schema / properties / x / description
      Previous value: -"Centre across, 0 to 1 of the width."New value: +"Centre across."
    • changedInput schema / properties / y / description
      Previous value: -"Centre down, 0 to 1 of the height."New value: +"Centre down."
  6. Added

TDQS

C2.8/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the mutation and retry profile is covered. The description adds genuinely non-obvious context ("Cost: Free") and the replace-by-overlay_id upsert behavior, but says nothing about what a replacement destroys, how base_version conflicts behave, or the multi-overlay 'more' batch save.

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?

Two short clauses, front-loaded, with zero filler and the replacement rule trailing the resource description. The telegraphic style is compact but slightly cryptic, and "chosen seconds" is vague where the schema uses explicit start/end seconds.

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

Completeness2/5

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

For a 25-parameter destructive mutation with seven required fields (kind, start, end, x, y, width, height), the description omits the required coordinate/box model, the concurrency parameter base_version, and the visibility flags behind/hidden. An output schema exists, so return values need no explanation, but the input-side guidance is far too thin for this surface area.

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 all 25 parameters including enums and ranges are already documented, which sets the baseline at 3. The description adds only the overlay_id replacement meaning, which is marginally useful but already echoed in the schema description.

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

Purpose3/5

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

The phrase "Text, a picture or a clip for chosen seconds" conveys the overdub kinds and that it's time-bounded, and "overlay_id replaces one" implies upsert. But it never names the resource as an overlay or says it is added to the video, so the purpose leans on the title rather than standing on its own against siblings like add_clip or add_voiceover.

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

Usage Guidelines2/5

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

There is no guidance on when to use this versus add_clip, add_voiceover, or adjust_style, and no prerequisites or exclusions. The only routing hint is the overlay_id clause explaining replacement, not when to choose this tool.

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