Skip to main content
Glama

add_media_overlay

Add an image or video media overlay to the edit timeline with precise transform, border radius, border, shadow, clipping, speed ramp, volume, animations, and keyframes.

Input Schema

NameRequiredDescriptionDefault
exitNoExit animation, or null to remove
sizeNoNormalized overlay size
typeYesOverlay media type
enterNoEntrance animation, or null to remove
widthNoLegacy shorthand for size.width
borderNoBorder styling, or null to remove
editIdYesThe edit ID
heightNoLegacy shorthand for size.height
shadowNoMedia overlay drop shadow, or null to remove
volumeNoVideo overlay audio volume
clipEndNoVideo overlay source trim end in seconds
mediaIdYesWorkspace MediaDocV2 ID to use as the overlay source
opacityNoOpacity from 0 to 1
trackIdNoOverlay track ID (auto-creates a track if not provided)
durationNoTimeline duration in seconds
positionNoNormalized overlay position
rotationNoRotation in degrees
clipStartNoVideo overlay source trim start in seconds
keyframesNoTransform keyframes relative to item start
positionXNoLegacy shorthand for position.x
positionYNoLegacy shorthand for position.y
speedRampNoVariable speed curve for video overlays
startTimeNoTimeline start time in seconds
workspaceIdYesThe workspace ID
borderRadiusNoCorner radius in 720p logical pixels
playbackSpeedNoFlat playback speed for video overlays

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / speedRamp / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "curve": {
      -        "items": [
      -          {
      -            "type": "number"
      -          },
      -          {
      -            "type": "number"
      -          },
      -          {
      -            "type": "number"
      -          },
      -          {
      -            "type": "number"
      -          }
      -        ],
      -        "maxItems": 4,
      -        "minItems": 4,
      -        "type": "array"
      -      },
      -      "enabled": {
      -        "type": "boolean"
      -      },
      -      "endSpeed": {
      -        "exclusiveMinimum": 0,
      -        "type": "number"
      -      },
      -      "startSpeed": {
      -        "exclusiveMinimum": 0,
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "enabled",
      -      "startSpeed",
      -      "endSpeed",
      -      "curve"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "curve": {
      +        "description": "Cubic bezier control points [c1x,c1y,c2x,c2y]",
      +        "items": {
      +          "type": "number"
      +        },
      +        "maxItems": 4,
      +        "minItems": 4,
      +        "type": "array"
      +      },
      +      "enabled": {
      +        "type": "boolean"
      +      },
      +      "endSpeed": {
      +        "exclusiveMinimum": 0,
      +        "type": "number"
      +      },
      +      "startSpeed": {
      +        "exclusiveMinimum": 0,
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "enabled",
      +      "startSpeed",
      +      "endSpeed",
      +      "curve"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  2. Changed1 schema field changed
    • changedInput schema / properties / speedRamp / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "curve": {
      -        "description": "Cubic bezier control points [c1x,c1y,c2x,c2y]",
      -        "items": {
      -          "type": "number"
      -        },
      -        "maxItems": 4,
      -        "minItems": 4,
      -        "type": "array"
      -      },
      -      "enabled": {
      -        "type": "boolean"
      -      },
      -      "endSpeed": {
      -        "exclusiveMinimum": 0,
      -        "type": "number"
      -      },
      -      "startSpeed": {
      -        "exclusiveMinimum": 0,
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "enabled",
      -      "startSpeed",
      -      "endSpeed",
      -      "curve"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "curve": {
      +        "items": [
      +          {
      +            "type": "number"
      +          },
      +          {
      +            "type": "number"
      +          },
      +          {
      +            "type": "number"
      +          },
      +          {
      +            "type": "number"
      +          }
      +        ],
      +        "maxItems": 4,
      +        "minItems": 4,
      +        "type": "array"
      +      },
      +      "enabled": {
      +        "type": "boolean"
      +      },
      +      "endSpeed": {
      +        "exclusiveMinimum": 0,
      +        "type": "number"
      +      },
      +      "startSpeed": {
      +        "exclusiveMinimum": 0,
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "enabled",
      +      "startSpeed",
      +      "endSpeed",
      +      "curve"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  3. Changed1 schema field changed
    • changedInput schema / properties / speedRamp / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "curve": {
      -        "items": [
      -          {
      -            "type": "number"
      -          },
      -          {
      -            "type": "number"
      -          },
      -          {
      -            "type": "number"
      -          },
      -          {
      -            "type": "number"
      -          }
      -        ],
      -        "maxItems": 4,
      -        "minItems": 4,
      -        "type": "array"
      -      },
      -      "enabled": {
      -        "type": "boolean"
      -      },
      -      "endSpeed": {
      -        "exclusiveMinimum": 0,
      -        "type": "number"
      -      },
      -      "startSpeed": {
      -        "exclusiveMinimum": 0,
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "enabled",
      -      "startSpeed",
      -      "endSpeed",
      -      "curve"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "curve": {
      +        "description": "Cubic bezier control points [c1x,c1y,c2x,c2y]",
      +        "items": {
      +          "type": "number"
      +        },
      +        "maxItems": 4,
      +        "minItems": 4,
      +        "type": "array"
      +      },
      +      "enabled": {
      +        "type": "boolean"
      +      },
      +      "endSpeed": {
      +        "exclusiveMinimum": 0,
      +        "type": "number"
      +      },
      +      "startSpeed": {
      +        "exclusiveMinimum": 0,
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "enabled",
      +      "startSpeed",
      +      "endSpeed",
      +      "curve"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  4. First observed

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden for a 26-parameter mutation. It lists feature areas but says nothing about reversibility, permissions, whether it creates a track (that detail lives only in the schema), or what the operation returns, leaving meaningful behavioral gaps.

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?

It is a single sentence with the verb and resource front-loaded. The trailing feature list is packed but each item signals a real capability area, so it earns most of its length.

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

Completeness3/5

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

For a 26-parameter mutation tool with no annotations and no output schema, the description is thin: it omits return behavior, failure modes, and routing to the text/remotion overlay siblings. The extensive schema mitigates this somewhat, making it minimally adequate rather than complete.

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 already documents every parameter, including unit conventions (720p logical pixels, normalized coordinates) and legacy shorthands. The description's feature list loosely maps to parameter groups but adds no syntax or format detail beyond the schema, so the baseline 3 applies.

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 (Add) and resource (image or video media overlay) and names the target (the edit timeline). The 'image or video' qualifier implicitly distinguishes it from the sibling add_text_overlay and add_remotion_overlay, so an agent can route without opening a schema.

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 explicit when-to-use, when-not-to-use, or alternatives guidance. The description never mentions add_text_overlay, add_remotion_overlay, or add_overlay_track, leaving the agent to infer selection from tool names alone.

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.