Skip to main content
Glama

Generate a sound-effects video (video output)

video_to_video_sfx

Generate sound effects for a video and return a new video with the SFX mixed in, using a local path or public URL as input.

Instructions

Generate sound effects for a video and return a NEW VIDEO with the SFX muxed in (not just an audio file). Provide either a local video path or a public video URL. Generation is asynchronous; this tool waits for completion and returns the saved video path.

⚠️ COST WARNING: This tool makes an API call to Sonilo which may incur charges. Only use when explicitly requested by the user.

Args: video_path (str, optional): Absolute local path, or relative to SONILO_MCP_BASE_PATH. Supports .mp4/.mov/.webm/.m4v/.gif (gif must be animated). Subject to the account's max upload size (typically 300 MB). Maximum video duration is 480 seconds (8 minutes). video_url (str, optional): HTTPS URL to a video file. prompt (str, optional): Overall description of the desired sound effects (max 2000 chars). segments (list, optional): Per-segment SFX descriptions, each {"start": float, "end": float, "prompt": str}. Backend rules: first start must be 0; segments must be contiguous (each end == next start); every end > start; every prompt non-empty (max 200 chars); last end must not exceed the video duration; max 30 segments. Invalid segments are rejected before any charge. output_directory (str, optional): Where to save the result. Defaults to SONILO_MCP_BASE_PATH.

Exactly one of video_path and video_url must be provided.

Returns: TextContent with the saved .mp4 path. On timeout the error message includes the task_id — recover with get_sfx_task.

Input Schema

NameRequiredDescriptionDefault
promptNo
segmentsNo
video_urlNo
video_pathNo
output_directoryNo

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.28.0

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already flag a non-idempotent, open-world write, but the description adds substantial behavior beyond them: third-party Sonilo API charges, asynchronous execution that blocks until completion, pre-charge validation of segments, upload/duration caps (300 MB, 480 s), and a recovery path via get_sfx_task using the task_id in timeout errors. This is exactly the cost, latency, and failure-recovery context annotations cannot express.

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?

Front-loads the key differentiator and the cost warning before any parameter detail, then uses Args/Returns structure that is easy to scan. The Args block is dense and long, but nearly every line is load-bearing constraint information rather than filler.

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 costly, slow, open-world generation tool with zero schema description coverage, the description covers cost gating, async semantics, input formats and limits, segment validation, output location, and timeout recovery. An output schema exists, yet the Returns section still adds the timeout/task_id behavior an agent needs to recover, so nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description carries the full burden and does: each of the five parameters is documented with format constraints (.mp4/.mov/.webm/.m4v, animated gif), size/duration limits, the nested segment object shape {start, end, prompt}, and all six backend segment validation rules. This meaningfully exceeds what the bare anyOf schema conveys.

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, resource, and output artifact: generate SFX and return a NEW VIDEO with the SFX muxed in. The parenthetical "not just an audio file" explicitly separates it from the audio-returning siblings (video_to_sfx, video_to_sound, video_to_video_sound) without the agent needing to open any schema.

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

Usage Guidelines4/5

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

Gives a clear usage gate ("Only use when explicitly requested by the user" due to cost) and the input-exclusivity rule ("Exactly one of video_path and video_url must be provided"). It implies but never names the alternative tools, so an agent weighing video_to_video_sfx against video_to_sfx must infer the split from the output-format hint alone.

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