Skip to main content
Glama

Remove Video Background

remove_video_background
Read-only

Remove the background from a video given by public URL or attached to the chat. Returns a job; when wait is true (default) the tool polls for up to 50 seconds and returns the finished job with result_url (a direct download link valid for 24 hours). For longer videos call get_job with the returned job id until status is completed. Costs 5 credits per second of video, rounded up (10 per second above 30 fps; animated GIFs are always 5 per second), charged when the job is accepted and refunded if it fails.

Input Schema

NameRequiredDescriptionDefault
fileNoA video the user attached to the chat, as a file object with a download_url. Only use it when the client provides one for an attachment (ChatGPT does); never construct it. For a video at a public URL use video_url
sizeNoOutput size preset. The longest side is capped at 640 (preview), 1280 (medium) or 1920 (hd) pixels; full keeps the source resolution up to 4096 pixels (4K)full
waitNoPoll until the job finishes (up to 50 seconds) before returning. Set to false to get the job id back immediately
formatNoOutput container. 'webm' (VP9) and 'mov' (ProRes 4444) keep transparency unless bg_color is set; 'mp4' (H.264) has no alpha and is composited onto bg_color; 'gif' is a looping GIF with 1-bit transparency (opaque when bg_color is set) and no audio, capped at 1280 px on the longest side (720p for widescreen) and 50 fps (large files, soft edges are hard-cut) for stickers, chat and email: use size 'preview' for sticker-sized outputwebm
bg_colorNoBackground color (hex, rgb, or color name). Setting it fills the background, so the result is opaque in every format (webm, mov and gif included); with channels 'rgb' or format 'mp4' and no bg_color the background is white. Omit it for a transparent video. Ignored with channels 'alpha'. Example: '#00ff00' for green screen
channelsNo'rgba' for a transparent video (opaque on bg_color if one is set), 'rgb' for an opaque video on bg_color, 'alpha' for a grayscale matte video (no audio)rgba
video_urlNoPublic https URL of the video (mp4, mov, webm, m4v, mkv or animated gif; up to 500 MB and 5 minutes). Set this or file

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedInput schema / properties / file
      Added value: +{
      +  "description": "A video the user attached to the chat, as a file object with a download_url. Only use it when the client provides one for an attachment (ChatGPT does); never construct it. For a video at a public URL use video_url",
      +  "properties": {
      +    "download_url": {
      +      "description": "Temporary URL to download the file",
      +      "type": "string"
      +    },
      +    "file_id": {
      +      "description": "Client file id",
      +      "type": "string"
      +    },
      +    "file_name": {
      +      "description": "Original file name",
      +      "type": "string"
      +    },
      +    "mime_type": {
      +      "description": "MIME type of the file",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "download_url",
      +    "file_id"
      +  ],
      +  "type": "object"
      +}
    • changedInput schema / properties / video_url / description
      Previous value: -"Public https URL of the video (mp4, mov, webm, m4v, mkv or animated gif; up to 500 MB and 5 minutes)"New value: +"Public https URL of the video (mp4, mov, webm, m4v, mkv or animated gif; up to 500 MB and 5 minutes). Set this or file"
    • changedInput schema / required
      Previous value: -[
      -  "video_url"
      -]New value: +[]
  2. Changed3 schema fields changed
    • changedInput schema / properties / bg_color / description
      Previous value: -"Background color (hex, rgb, or color name) used when the output has no transparency (channels 'rgb' or format 'mp4'). Defaults to white. Example: '#00ff00' for green screen"New value: +"Background color (hex, rgb, or color name). Setting it fills the background, so the result is opaque in every format (webm, mov and gif included); with channels 'rgb' or format 'mp4' and no bg_color the background is white. Omit it for a transparent video. Ignored with channels 'alpha'. Example: '#00ff00' for green screen"
    • changedInput schema / properties / channels / description
      Previous value: -"'rgba' for a transparent video, 'rgb' for an opaque video on bg_color, 'alpha' for a grayscale matte video (no audio)"New value: +"'rgba' for a transparent video (opaque on bg_color if one is set), 'rgb' for an opaque video on bg_color, 'alpha' for a grayscale matte video (no audio)"
    • changedInput schema / properties / format / description
      Previous value: -"Output container. 'webm' (VP9) and 'mov' (ProRes 4444) keep transparency; 'mp4' (H.264) has no alpha and is composited onto bg_color; 'gif' is a looping GIF with 1-bit transparency and no audio, capped at 1280 px on the longest side (720p for widescreen) and 50 fps (large files, soft edges are hard-cut) for stickers, chat and email: use size 'preview' for sticker-sized output"New value: +"Output container. 'webm' (VP9) and 'mov' (ProRes 4444) keep transparency unless bg_color is set; 'mp4' (H.264) has no alpha and is composited onto bg_color; 'gif' is a looping GIF with 1-bit transparency (opaque when bg_color is set) and no audio, capped at 1280 px on the longest side (720p for widescreen) and 50 fps (large files, soft edges are hard-cut) for stickers, chat and email: use size 'preview' for sticker-sized output"
  3. Changed2 schema fields changed
    • changedInput schema / properties / format / description
      Previous value: -"Output container. 'webm' (VP9) and 'mov' (ProRes 4444) keep transparency; 'mp4' (H.264) has no alpha and is composited onto bg_color; 'gif' is a looping GIF with 1-bit transparency and no audio, capped at 720p and 50 fps (large files, soft edges are hard-cut) for stickers, chat and email: use size 'preview' for sticker-sized output"New value: +"Output container. 'webm' (VP9) and 'mov' (ProRes 4444) keep transparency; 'mp4' (H.264) has no alpha and is composited onto bg_color; 'gif' is a looping GIF with 1-bit transparency and no audio, capped at 1280 px on the longest side (720p for widescreen) and 50 fps (large files, soft edges are hard-cut) for stickers, chat and email: use size 'preview' for sticker-sized output"
    • changedInput schema / properties / video_url / description
      Previous value: -"Public https URL of the video (mp4, mov, webm, mkv or animated gif; up to 500 MB and 5 minutes)"New value: +"Public https URL of the video (mp4, mov, webm, m4v, mkv or animated gif; up to 500 MB and 5 minutes)"
  4. Changed3 schema fields changed
    • changedInput schema / properties / format / description
      Previous value: -"Output container. 'webm' (VP9) and 'mov' (ProRes 4444) keep transparency; 'mp4' (H.264) has no alpha and is composited onto bg_color"New value: +"Output container. 'webm' (VP9) and 'mov' (ProRes 4444) keep transparency; 'mp4' (H.264) has no alpha and is composited onto bg_color; 'gif' is a looping GIF with 1-bit transparency and no audio, capped at 720p and 50 fps (large files, soft edges are hard-cut) for stickers, chat and email: use size 'preview' for sticker-sized output"
    • changedInput schema / properties / format / enum
      Previous value: -[
      -  "webm",
      -  "mov",
      -  "mp4"
      -]New value: +[
      +  "webm",
      +  "mov",
      +  "mp4",
      +  "gif"
      +]
    • changedInput schema / properties / video_url / description
      Previous value: -"Public https URL of the video (mp4, mov, webm or mkv; up to 500 MB and 5 minutes)"New value: +"Public https URL of the video (mp4, mov, webm, mkv or animated gif; up to 500 MB and 5 minutes)"
  5. Changed1 schema field changed
    • changedInput schema / properties / size / description
      Previous value: -"Output size preset. The longest side is capped at 640 (preview), 1280 (medium) or 1920 (hd/full) pixels"New value: +"Output size preset. The longest side is capped at 640 (preview), 1280 (medium) or 1920 (hd) pixels; full keeps the source resolution up to 4096 pixels (4K)"
  6. Added

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint true, but this tool creates jobs and burns credits), the description discloses the credit cost formula (5/sec, 10/sec above 30fps, GIF rate), when charges occur, the failure refund, the polling ceiling, and the 24-hour expiry on result_url. That is exactly the behavioral context structured fields do not carry.

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 core behavior (what it does, what it returns, cost) is front-loaded in the first two sentences, and the get_job fallback follows naturally. It is dense but every sentence carries operational weight; the cost sentence is long but earns its place.

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?

With no output schema, the description still explains the return shape (a job, or a finished job with result_url valid 24 hours) and the async escape hatch. For a credit-consuming async tool with nested file input, an agent has everything needed to call it and handle the result.

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 baseline is 3; the schema already explains size presets, formats, channels and bg_color. The description adds only marginal meaning (cost scaling tied to fps/GIF, wait semantics), largely repeating what the schema provides.

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

Purpose4/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 ('Remove the background from a video') and the accepted input sources (public URL or chat attachment). This implicitly distinguishes it from the sibling remove_background (presumably image-oriented), though it never names that sibling explicitly.

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 operating conditions: use the default wait for short jobs, switch to get_job with the returned id when the video is longer than the 50-second poll window. The file-vs-video_url choice is also covered via the schema, leaving nothing to infer.

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