Skip to main content
Glama

Add video watermark

video_watermark
Destructive

Overlay an image watermark onto an existing video and render a new output file, with controls for position, opacity, margin, CRF, and preset.

Instructions

Overlay an image watermark onto an existing video and render a new output file. The video and watermark image are read only; output_path is created or overwritten. Supports named, pixel, and percentage positions plus opacity, margin, CRF, and preset controls.

Input Schema

NameRequiredDescriptionDefault
crfNoOptional FFmpeg CRF override from 0 to 51, where lower means higher quality.
marginNoNon-negative edge margin in pixels for named positions.
presetNoOptional FFmpeg encoding preset: ultrafast, fast, medium, slow, or veryslow.
opacityNoWatermark opacity from 0.0 fully transparent to 1.0 fully opaque.
positionNoWatermark position: named position such as bottom-right, pixel dict {"x": 100, "y": 50}, or percentage dict {"x_pct": 0.5, "y_pct": 0.5}.bottom-right
overwriteNoExplicitly allow replacing existing media. Existing non-media files are protected.
image_pathYesAbsolute path to an existing local image file used as an overlay or watermark.
input_pathYesAbsolute path to an existing local video file. The input file is read only.
output_pathNoDestination video path. Auto-generated when omitted; an existing supplied path may be overwritten.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv1.16.4
    • addedInput schema / properties / overwrite
      Added value: +{
      +  "default": false,
      +  "description": "Explicitly allow replacing existing media. Existing non-media files are protected.",
      +  "title": "Overwrite",
      +  "type": "boolean"
      +}
  2. Changed1 schema field changedv1.16.0
    • addedInput schema / additionalProperties
      Added value: +false
  3. Changed10 schema fields changedv1.5.1
    • addedInput schema / properties / crf
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Optional FFmpeg CRF override from 0 to 51, where lower means higher quality.",
      +  "title": "Crf"
      +}
    • addedInput schema / properties / image_path / description
      Added value: +"Absolute path to an existing local image file used as an overlay or watermark."
    • addedInput schema / properties / input_path / description
      Added value: +"Absolute path to an existing local video file. The input file is read only."
    • addedInput schema / properties / margin / description
      Added value: +"Non-negative edge margin in pixels for named positions."
    • addedInput schema / properties / opacity / description
      Added value: +"Watermark opacity from 0.0 fully transparent to 1.0 fully opaque."
    • addedInput schema / properties / output_path / description
      Added value: +"Destination video path. Auto-generated when omitted; an existing supplied path may be overwritten."
    • addedInput schema / properties / position / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "additionalProperties": true,
      +    "type": "object"
      +  }
      +]
    • addedInput schema / properties / position / description
      Added value: +"Watermark position: named position such as bottom-right, pixel dict {\"x\": 100, \"y\": 50}, or percentage dict {\"x_pct\": 0.5, \"y_pct\": 0.5}."
    • removedInput schema / properties / position / type
      Removed value: -"string"
    • addedInput schema / properties / preset
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Optional FFmpeg encoding preset: ultrafast, fast, medium, slow, or veryslow.",
      +  "title": "Preset"
      +}
  4. First observedv0.2.0

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, but the description adds valuable specifics: input files are read-only, output_path is created or overwritten. It does not mention permissions or rate limits, but the added context exceeds annotation coverage.

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?

Two sentences, 44 words, front-loaded with the core action and output behavior. Every sentence adds value; no filler.

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

Completeness4/5

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

Given 9 parameters, a destructive mutation, and an output schema, the description covers purpose, input/output file behavior, and key parameter categories. It omits that output_path is optional (default null) and doesn't explicitly state required inputs, but those are clear from the schema. Overall complete enough for correct invocation.

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 all 9 parameters. The description summarizes the controls (named/pixel/percentage positions, opacity, margin, CRF, preset), but this largely repeats what the schema already provides. 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?

States a specific verb ('Overlay'), resource ('image watermark'), and target ('existing video'), and distinguishes from siblings by specifying 'image watermark' versus text or generic overlays. An agent can identify this as the watermarking tool without schema inspection.

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

Usage Guidelines3/5

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

The purpose implies when to use it, but the description offers no explicit guidance on alternatives or exclusions—e.g., it doesn't say when to prefer this over video_overlay or video_add_text. Usage is implied but not directed.

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

Deploy Server

Other Tools