Skip to main content
Glama

transpose_midi_notes

Shift MIDI notes up or down by semitones on a track item. Notes outside pitch 0-127 remain unchanged and are reported as skipped.

Instructions

Transpose MIDI notes by a number of semitones (12 = an octave).

A note that would land outside pitch 0-127 keeps its original pitch and is counted in skipped instead.

Args: semitones: Signed shift; positive is up, negative is down. 0 = no-op.

Returns: {ok, notes_changed, clamped, skipped, out_of_bounds, notes:[...]}, where notes is the full note list after the transform, re-indexed.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
fieldsNo
channelNo
end_beatNo
pitch_lowNo
semitonesYes
item_indexYes
pitch_highNo
start_beatNo
track_indexYes
return_notesNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.7.3

TDQS

A3.9/5.0
Behavior5/5

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

The description goes well beyond the sparse annotation by disclosing edge-case behavior: notes outside pitch 0-127 keep their original pitch and are counted in `skipped`. It also lists the return fields, including `clamped`, `out_of_bounds`, and the re-indexed note list, giving the agent a clear picture of effects and outputs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured: core action first, then edge-case behavior, then argument and return summary. Each sentence earns its place without unnecessary repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 10 parameters and no output schema, yet the description only covers one parameter and the return shape. An agent needs to know how `track_index` and `item_index` select the target, how the optional filters constrain which notes are affected, and what `return_notes` controls. This is a substantial completeness gap for a complex operation.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate, but it only documents `semitones`. The required `track_index` and `item_index`, plus all optional filtering parameters such as `start_beat`, `pitch_low`, and `channel`, are left unexplained, leaving the agent unable to confidently construct the full call.

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?

The description states a specific operation—transposing MIDI notes by a number of semitones—and clarifies the octave relationship. It is clearly distinguishable from sibling MIDI tools like nudge_midi_notes or set_midi_note, since it names the exact transformation and its unit.

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 description makes the intended use inferable: shift MIDI note pitches by semitones, with positive/negative direction defined. However, it does not explicitly mention when to prefer this tool over related alternatives, nor does it provide any exclusions or alternative routing.

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

Deploy Server

Other Tools