Skip to main content
Glama

Download link

get_download_link
Read-onlyIdempotent

A short-lived link to the MusicXML, MIDI or MP3 that opens without a key: give it to the user to open in a browser, MuseScore, Sibelius or a DAW. It lives as long as the recognition (about an hour). labels names each note in the MusicXML. An MP3 is the same MIDI rendered; it has no tempo of its own.

Input Schema

NameRequiredDescriptionDefault
keyNotarget key, e.g. 'G', 'Bb', 'F#m', 'E minor'
fileNocollection mode only: which MusicXML of `files`, e.g. '003.musicxml'
partNoonly this part: id (P2), name (Alto) or number (2)
formatNomusicxml (default), midi or mp3musicxml
labelsNowrite each note's name under it as a lyric line: letters (C♯, B♭), solfege-fixed (Do…Si, Do is always C), movable-do (Do is the tonic), degrees (1…7 of the scale, ♭3) or kalimba (the tines' numbers); default none
semitonesNosemitones to move, e.g. -2 (a tone down), 5
labels_keyNowith labels movable-do, degrees or kalimba: the key they count from, e.g. 'E minor'; default: read off the music
recognition_idYesid returned by recognize_sheet_music, e.g. rec_…

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / format / description
      Previous value: -"musicxml (default) or midi"New value: +"musicxml (default), midi or mp3"
    • changedInput schema / properties / format / enum
      Previous value: -[
      -  "musicxml",
      -  "midi"
      -]New value: +[
      +  "musicxml",
      +  "midi",
      +  "mp3"
      +]
  2. Changed2 schema fields changed
    • changedInput schema / properties / labels / description
      Previous value: -"write each note's name under it as a lyric line: letters (C♯, B♭) or solfege-fixed (Do…Si, Do is always C); default none"New value: +"write each note's name under it as a lyric line: letters (C♯, B♭), solfege-fixed (Do…Si, Do is always C), movable-do (Do is the tonic), degrees (1…7 of the scale, ♭3) or kalimba (the tines' numbers); default none"
    • addedInput schema / properties / labels_key
      Added value: +{
      +  "anyOf": [
      +    {
      +      "maxLength": 20,
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "with labels movable-do, degrees or kalimba: the key they count from, e.g. 'E minor'; default: read off the music",
      +  "title": "Labels Key"
      +}
  3. Changed1 schema field changed
    • addedInput schema / properties / labels
      Added value: +{
      +  "anyOf": [
      +    {
      +      "maxLength": 40,
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "write each note's name under it as a lyric line: letters (C♯, B♭) or solfege-fixed (Do…Si, Do is always C); default none",
      +  "title": "Labels"
      +}
  4. First observed

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive), but the description adds genuinely useful traits beyond them: the link expires with the recognition (~1 hour) and requires no auth key. It also explains that MP3 is the MIDI rendered and inherits its tempo, which affects how the transposition params behave per format.

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 core fact (keyless, short-lived link) in the first sentence, and each subsequent sentence covers a distinct concern. Slightly fragmented by the trailing MP3 remark, but there is little waste.

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?

With an output schema present, return-value detail is unnecessary, and the description covers lifetime, auth, intended consumers and the format caveat. Minor gaps remain around collection-mode `file` behavior and error cases, but nothing an agent needs to call it correctly is missing.

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 100%, so all eight parameters are already documented, and the description largely restates the schema's `labels` explanation rather than adding semantics. The one net-new point, that MP3 has no tempo of its own, is marginal against a fully documented schema.

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?

States a specific verb+resource: returns a short-lived, keyless link to the MusicXML, MIDI or MP3 of a recognition. It implicitly separates itself from file-returning siblings like export_score and export_midi by framing the result as a shareable link, but never names them.

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 'give it to the user to open in a browser, MuseScore, Sibelius or a DAW' clause gives real usage context. However, nothing says when to prefer this over get_musicxml, export_score or export_midi, and no prerequisites or exclusions are stated.

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