Skip to main content
Glama

Video to Music

video_to_music

Write a soundtrack for a video from the video itself, with ElevenLabs Video to Music: it watches the cuts, pace and mood and scores them. Use it when the customer asks for music made for their video ("write a soundtrack for this", "score my clip"). When they bring their own song (for example from Suno), use that song instead and do not call this. Pass the video in video_url (the file id or name from this chat, or an https link), or video_id for a video made in Switch (its job id from list_my_videos; up to 10 videos in video_urls, all together up to 200 MB and 10 minutes). Optional: description (the music in words, up to 4100 characters), tags (up to 10 styles, like "cinematic", "lofi"), add_sound_effects (sound effect cues from the picture), use_video_sound_as_reference (its genre, tempo, instruments, mood and arc from the video's own sound), separate_tracks (the music and the effects as two files), video_seconds (the video's length, for the hold). HOUSE RULE: only make music when the customer asked for music. Billed like generate_music, per 10 seconds of the track (a token quote applies). Returns audio_url, duration_seconds and generation_id, and effects_track with separate_tracks. It does not put the music on the video: add_sound_to_video or the Editor does that.

Input Schema

NameRequiredDescriptionDefault
tagsNoOptional styles, up to 10.
model_idNoOptional ElevenLabs model id; leave out for their default.
video_idNoA video made in Switch, by its job id (list_my_videos, get_video_status); its stored file is used.
video_urlNoThe video in this chat by its file id or name, or an https link.
video_urlsNoOptional, several videos scored as one, in order (up to 10).
descriptionNoOptional. The music in plain words: genre, mood, instruments, how it builds.
video_secondsNoOptional. The video's length in seconds, so the right amount is held before it starts.
separate_tracksNoOptional. true returns the music and the sound effects as two files.
add_sound_effectsNoOptional. true adds sound effect cues taken from the picture.
use_video_sound_as_referenceNoOptional. true takes the genre, tempo, instruments, mood and arc from the video's own sound.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / video_id
      Added value: +{
      +  "description": "A video made in Switch, by its job id (list_my_videos, get_video_status); its stored file is used.",
      +  "type": "string"
      +}
  2. Added

TDQS

A4.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false, so the description doesn't need to restate the safety profile. It does add genuinely useful behavior the annotations lack: billing model ('per 10 seconds of the track, a token quote applies') and hard limits (10 videos, 200 MB, 10 minutes). It stops short of return-format edge cases and failure behavior, so it's good but not rich.

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-loaded with purpose, then routing, inputs, options, billing and outputs in a sensible order; nothing is filler. It is dense with parenthetical asides and the final sentence on add_sound_to_video is long, which costs a point on readability, but every clause carries information.

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 10-param generation tool with no output schema, the description covers when to call, all option semantics, size/duration limits, billing, and what is returned (audio_url, duration_seconds, generation_id, effects_track). It also closes the workflow gap by naming the follow-up tool that actually attaches music to video.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3; the description earns above baseline by adding constraints not present in the schema, notably the 200 MB / 10 minute combined limits for video_urls and the 4100-character description cap. It also links video_id to list_my_videos and adds the conversational sourcing of video_url, which helps an agent populate otherwise opaque file references.

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 ('Write a soundtrack for a video from the video itself') and names the underlying service (ElevenLabs Video to Music). It explains the mechanism (watches cuts, pace, mood) which clearly separates it from generate_music and plan_music siblings.

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?

Explicit when-to-use with customer phrasings ('write a soundtrack for this', 'score my clip'), explicit when-not (customer brings their own Suno song), and a HOUSE RULE gate ('only make music when the customer asked for music'). It also names add_sound_to_video for the adjacent step of putting music on the video.

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