Skip to main content
Glama

Add library music

add_library_music

PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. Place the CC0 library track the USER picked, by exact slug (from list_music_library). Agents never choose music: offer 2-4 tracks with ask_user and place the one they pick (a mood or 'some music' is not a pick). The track is copied into this project once, registered with its licence, and placed like add_music — OUTPUT seconds, whole program by default, ducked under speech, looped to fill. Under a voice keep the bed around -18 to -22 dB (the default -18 dB is used when gain_db is omitted); with no speech it becomes the lead at -4 dB.

Input Schema

NameRequiredDescriptionDefault
endNo
duckNoOmit to duck under speech only; with no speech the track plays undiminished as the lead.
loopNo
slugYes
startNo
gain_dbNo
purposeNo
offset_sNoSeconds into the track to start. Omit to start where the track's body begins (skipping a quiet intro); 0 plays it from the very start.
fade_in_sNo
user_pickNoMCP: the pick token ask_user returned plus the user's own words.
fade_out_sNo
project_idYesRequired immutable scope for this call. Copy the id from list_projects/open_project/project_state; the active-project pointer is never used to guess.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / user_pick
      Added value: +{
      +  "description": "MCP: the pick token ask_user returned plus the user's own words.",
      +  "type": "string"
      +}
  2. Added

TDQS

A4.3/5.0
Behavior4/5

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

Annotations declare non-readonly, non-idempotent, non-destructive, closed-world, but the description adds real behavioral substance: the track is copied once and registered with its licence, it is project-scoped and returns project identity, placement mirrors add_music (whole program by default, ducked under speech, looped to fill), and default gains are disclosed (-18 dB ducked, -4 dB as lead). It does not clarify what happens on an invalid/duplicate slug, which is the one gap for a non-idempotent mutation.

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 critical PROJECT-SCOPED constraint, then routing, then behavior, with essentially no filler sentences. It is dense and slightly long for a single paragraph, but each clause carries a distinct constraint or default.

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?

For a 12-parameter, no-output-schema mutation tool with only 33% schema coverage, the description covers scope, provenance, agent workflow, placement semantics and audio defaults well. It is not fully complete because several numeric placement/fade parameters remain unexplained outside the schema.

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 coverage is only 33%, so the description must carry more weight. It explains slug provenance, the gain_db default of -18 dB, duck semantics, and loop-to-fill, but leaves start, end, purpose, fade_in_s and fade_out_s undocumented in both places. Baseline 3 is appropriate given partial compensation for a low-coverage schema.

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 (place a CC0 library track by slug) and immediately differentiates itself from siblings by naming list_music_library as the source and add_music as the placement analogue. An agent can tell this apart from add_music, swap_music, or list_music_library without opening 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 Guidelines5/5

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

Explicit routing rules: get the slug from list_music_library, never choose music yourself, offer 2-4 tracks via ask_user and place the one the user picks, with a concrete exclusion ('a mood or some music is not a pick'). This is a genuine when/when-not with a named alternative tool.

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.