Skip to main content
Glama

Edit score

edit_score
Destructive

Apply one reversible musical operation, such as {"action":"set_pitch","note_ids":["n…"],"pitch":62}, to a score at its exact saved revision. Stale revisions and invalid note/mark IDs are rejected. Re-engraving and whole-score rhythm operations replace note IDs. No credits.

Input Schema

NameRequiredDescriptionDefault
revisionYes
score_idYes
operationYesFor a fermata, update_mark {mark_id,offset_y} adjusts printed height in tenths (+10 = one staff space up; 0 resets); notes and playback stay unchanged. One object naming its action. Actions and their fields (? optional): entry: create_tuplet {note_id,actual 2..9,normal?}; replace_note {note_id,pitch|null,spelling?} (keeps exact slot); remove_tuplet {note_id} (needs following rests); paste_notes {source_note_ids,target_note_id} (complete groups, one part); set_tie {note_ids:[start,end],enabled} (adjacent equal pitches, held sound); set_slur {note_ids:[start,end],enabled} (printed); reflow_layout {}. notes: set_pitch {note_ids,pitch,spelling?} (a pitch named without its octave, "make it C", is the one nearest the note's current pitch: B4 -> C5, not C4; in the direction asked if any; say the pitch written); transpose {note_ids,semitones}; set_duration {note_ids,quarters} (one note, tied pair or chord); move_notes {note_ids,quarters ±} (any notes of one part, each in its voice); time: shift_time {measure,onset? quarters from bar start|note_id,quarters ±,part_id?,staff?} moves everything struck from that point on later or earlier (a late or early entry: one call, not note by note); earlier removes the beats just before the point and bars at the end it leaves empty. voices: set_voice {note_ids,voice 1..4 on their staff}; set_tie also between voices; set_beam {note_ids,beam join|break|none|auto}; set_stem {note_ids,stem up|down|flip|auto}; set_visibility {note_ids (rests)|measures,staff?,visible}. batch {operations:[...up to 30 of the note, time, voice and bar edits]}: one version, all or none. delete_notes {note_ids} replaces sounding notes with rests and clears selected rest symbols without shifting later notes; set_staff {note_ids|select,staff 1 upper|2 lower,clef? if asked} (hands); add_chord_tone {note_id,pitch,spelling?,velocity?}; fill_rest {rest_id,pitch,quarters?,velocity?,spelling?}. sound: set_velocity {note_ids,velocity 1..127}; set_dynamic {note_id,mark ppp..fff|sf|sfz|fp,velocity?}; set_timbre {part_id,program,part_name?}. writing: set_key {part_id?,fifths,mode} (respells the notes the key holds; pitches stay); set_clef {part_id?,staff?,clef,measures?} (no measures: the whole staff; "4": from bar 4 to the staff's next clef change; "4-6": those bars only); set_harmony_position {part_id,measure,index from 0,quarters from bar start}; engraving {title?,composer?,transcriber?,labels?:compact|full|none,page_size?:a4|letter} (paper size reflows this score and its PDF, preserves notes, does not guarantee one page); rebeam {}; reengrave {key?,program?,staff_split?,voices?,grid?,line?:single} (writes the notes again from the recording: rhythm spelling, voices and note IDs can change; not for page layout). page layout (pages, PDF and panel; notes and playback stay): layout {bars_per_system? 1..32, system_breaks? ["bar"] (start a line), page_breaks? ["bar"] (start a page), staff_size? 50..150 (% of default; smaller fits more per page), staff_spacing? 0..48, system_spacing? 0..48 (default 8), reset?:true}; null resets one field. The overview's layout lists each page's lines; check pages with review_score. MusicXML <print>/<scaling> are not read, except breaks in edited MusicXML. TAB: set_tablature {part_id?,view off|both|tab,tuning?,capo?,strings?}; set_string {note_ids,string|null} (1 = the top line); set_fret {note_ids,string,fret}. marks (saved score marks; kind words|rehearsal|metronome|dynamic|hairpin|fermata|octave (8va|8vb|15ma|15mb, note_id through end_note_id)): add_mark {kind,note_id|part_id+measure+quarters,text?,value?,end_note_id?,placement?}; update_mark {mark_id,kind?,text?,value?,placement?}; move_mark {mark_id,note_id?,end_note_id?}; delete_mark {mark_id}. whole score: transpose_score {interval as M2, -m3 or P8}; set_meter {beats,beat_type,pickup_quarters?}; scale_note_values {factor:2|0.5}; rewrite_rhythm {bpm,beats,beat_type,downbeat? second a bar starts: bars start there} (steady recording); rebeat {bpm,beats,beat_type,downbeat seconds,swing? 0.5..0.75} (wrong tracked piano beat); rebar_pickup {quarters}; set_pickup {enabled} (marks a short first bar, moves no barline); pad_measure {part_id,measure}; repair_bindings {}; undo {}; redo {}. bars (every part; numbers as printed): insert_measures {before "bar"|null=at end,count? 1..16}; delete_measures {from,to?}. recording alignment: set_recording_alignment {measure_id,visit?:1,anchors:[[zero-based quarter beats within bar,recording seconds],...]} (2..64 increasing points; [] clears). This affects comparison/listening, not written music or ordinary score playback.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / operation / description
      Previous value: -"For a fermata, update_mark {mark_id,offset_y} adjusts printed height in tenths (+10 = one staff space up; 0 resets); notes and playback stay unchanged.\nOne object naming its action. Actions and their fields (? optional):\nentry: create_tuplet {note_id,actual 2..9,normal?}; replace_note {note_id,pitch|null,spelling?} (keeps exact slot); remove_tuplet {note_id} (needs following rests); paste_notes {source_note_ids,target_note_id} (complete groups, one part); set_tie {note_ids:[start,end],enabled} (adjacent equal pitches, held sound); set_slur {note_ids:[start,end],enabled} (printed); reflow_layout {}.\nnotes: set_pitch {note_ids,pitch,spelling?} (a pitch named without its octave, \"make it C\", is the one nearest the note's current pitch: B4 -> C5, not C4; in the direction asked if any; say the pitch written); transpose {note_ids,semitones}; set_duration {note_ids,quarters} (one note, tied pair or chord); move_notes {note_ids,quarters ±} (any notes of one part, each in its voice);\ntime: shift_time {measure,onset? quarters from bar start|note_id,quarters ±,part_id?,staff?} moves everything struck from that point on later or earlier (a late or early entry: one call, not note by note); earlier removes the beats just before the point and bars at the end it leaves empty.\nvoices: set_voice {note_ids,voice 1..4 on their staff}; set_tie also between voices; set_beam {note_ids,beam join|break|none|auto}; set_stem {note_ids,stem up|down|flip|auto}; set_visibility {note_ids (rests)|measures,staff?,visible}.\nbatch {operations:[...up to 30 of the note, time, voice and bar edits]}: one version, all or none.\ndelete_notes {note_ids} replaces sounding notes with rests and clears selected rest symbols without shifting later notes; set_staff {note_ids|select,staff 1 upper|2 lower,clef? if asked} (hands); add_chord_tone {note_id,pitch,spelling?,velocity?}; fill_rest {rest_id,pitch,quarters?,velocity?,spelling?}.\nsound: set_velocity {note_ids,velocity 1..127}; set_dynamic {note_id,mark ppp..fff|sf|sfz|fp,velocity?}; set_timbre {part_id,program,part_name?}.\nwriting: set_key {part_id?,fifths,mode} (respells the notes the key holds; pitches stay); set_clef {part_id?,staff?,clef,measures?} (no measures: the whole staff; \"4\": from bar 4 to the staff's next clef change; \"4-6\": those bars only); set_harmony_position {part_id,measure,index from 0,quarters from bar start};\nengraving {title?,composer?,transcriber?,labels?:compact|full|none,page_size?:a4|letter} (paper size reflows this score and its PDF, preserves notes, does not guarantee one page); rebeam {}; reengrave {key?,program?,staff_split?,voices?,grid?,line?:single} (writes the notes again from the recording: rhythm spelling, voices and note IDs can change; not for page layout).\npage layout (pages, PDF and panel; notes and playback stay): layout {bars_per_system? 1..32, system_breaks? [\"bar\"] (start a line), page_breaks? [\"bar\"] (start a page), staff_size? 50..150 (% of default; smaller fits more per page), staff_spacing? 0..48, system_spacing? 0..48 (default 8), reset?:true}; null resets one field. The overview's layout lists each page's lines; check pages with review_score. MusicXML <print>/<scaling> are not read, except breaks in edited MusicXML.\nTAB: set_tablature {part_id?,view off|both|tab,tuning?,capo?,strings?}; set_string {note_ids,string|null} (1 = the top line); set_fret {note_ids,string,fret}.\nmarks (saved score marks; kind words|rehearsal|metronome|dynamic|hairpin|fermata|octave (8va|8vb|15ma|15mb, note_id through end_note_id)): add_mark {kind,note_id|part_id+measure+quarters,text?,value?,end_note_id?,placement?}; update_mark {mark_id,kind?,text?,value?,placement?}; move_mark {mark_id,note_id?,end_note_id?}; delete_mark {mark_id}.\nwhole score: transpose_score {interval}; set_meter {beats,beat_type,pickup_quarters?}; scale_note_values {factor:2|0.5}; rewrite_rhythm {bpm,beats,beat_type,downbeat? second a bar starts: bars start there} (steady recording); rebeat {bpm,beats,beat_type,downbeat seconds,swing? 0.5..0.75} (wrong tracked piano beat);\nrebar_pickup {quarters}; set_pickup {enabled} (marks a short first bar, moves no barline); pad_measure {part_id,measure}; repair_bindings {}; undo {}; redo {}.\nbars (every part; numbers as printed): insert_measures {before \"bar\"|null=at end,count? 1..16}; delete_measures {from,to?}.\nrecording alignment: set_recording_alignment {measure_id,visit?:1,anchors:[[zero-based quarter beats within bar,recording seconds],...]} (2..64 increasing points; [] clears). This affects comparison/listening, not written music or ordinary score playback."New value: +"For a fermata, update_mark {mark_id,offset_y} adjusts printed height in tenths (+10 = one staff space up; 0 resets); notes and playback stay unchanged.\nOne object naming its action. Actions and their fields (? optional):\nentry: create_tuplet {note_id,actual 2..9,normal?}; replace_note {note_id,pitch|null,spelling?} (keeps exact slot); remove_tuplet {note_id} (needs following rests); paste_notes {source_note_ids,target_note_id} (complete groups, one part); set_tie {note_ids:[start,end],enabled} (adjacent equal pitches, held sound); set_slur {note_ids:[start,end],enabled} (printed); reflow_layout {}.\nnotes: set_pitch {note_ids,pitch,spelling?} (a pitch named without its octave, \"make it C\", is the one nearest the note's current pitch: B4 -> C5, not C4; in the direction asked if any; say the pitch written); transpose {note_ids,semitones}; set_duration {note_ids,quarters} (one note, tied pair or chord); move_notes {note_ids,quarters ±} (any notes of one part, each in its voice);\ntime: shift_time {measure,onset? quarters from bar start|note_id,quarters ±,part_id?,staff?} moves everything struck from that point on later or earlier (a late or early entry: one call, not note by note); earlier removes the beats just before the point and bars at the end it leaves empty.\nvoices: set_voice {note_ids,voice 1..4 on their staff}; set_tie also between voices; set_beam {note_ids,beam join|break|none|auto}; set_stem {note_ids,stem up|down|flip|auto}; set_visibility {note_ids (rests)|measures,staff?,visible}.\nbatch {operations:[...up to 30 of the note, time, voice and bar edits]}: one version, all or none.\ndelete_notes {note_ids} replaces sounding notes with rests and clears selected rest symbols without shifting later notes; set_staff {note_ids|select,staff 1 upper|2 lower,clef? if asked} (hands); add_chord_tone {note_id,pitch,spelling?,velocity?}; fill_rest {rest_id,pitch,quarters?,velocity?,spelling?}.\nsound: set_velocity {note_ids,velocity 1..127}; set_dynamic {note_id,mark ppp..fff|sf|sfz|fp,velocity?}; set_timbre {part_id,program,part_name?}.\nwriting: set_key {part_id?,fifths,mode} (respells the notes the key holds; pitches stay); set_clef {part_id?,staff?,clef,measures?} (no measures: the whole staff; \"4\": from bar 4 to the staff's next clef change; \"4-6\": those bars only); set_harmony_position {part_id,measure,index from 0,quarters from bar start};\nengraving {title?,composer?,transcriber?,labels?:compact|full|none,page_size?:a4|letter} (paper size reflows this score and its PDF, preserves notes, does not guarantee one page); rebeam {}; reengrave {key?,program?,staff_split?,voices?,grid?,line?:single} (writes the notes again from the recording: rhythm spelling, voices and note IDs can change; not for page layout).\npage layout (pages, PDF and panel; notes and playback stay): layout {bars_per_system? 1..32, system_breaks? [\"bar\"] (start a line), page_breaks? [\"bar\"] (start a page), staff_size? 50..150 (% of default; smaller fits more per page), staff_spacing? 0..48, system_spacing? 0..48 (default 8), reset?:true}; null resets one field. The overview's layout lists each page's lines; check pages with review_score. MusicXML <print>/<scaling> are not read, except breaks in edited MusicXML.\nTAB: set_tablature {part_id?,view off|both|tab,tuning?,capo?,strings?}; set_string {note_ids,string|null} (1 = the top line); set_fret {note_ids,string,fret}.\nmarks (saved score marks; kind words|rehearsal|metronome|dynamic|hairpin|fermata|octave (8va|8vb|15ma|15mb, note_id through end_note_id)): add_mark {kind,note_id|part_id+measure+quarters,text?,value?,end_note_id?,placement?}; update_mark {mark_id,kind?,text?,value?,placement?}; move_mark {mark_id,note_id?,end_note_id?}; delete_mark {mark_id}.\nwhole score: transpose_score {interval as M2, -m3 or P8}; set_meter {beats,beat_type,pickup_quarters?}; scale_note_values {factor:2|0.5}; rewrite_rhythm {bpm,beats,beat_type,downbeat? second a bar starts: bars start there} (steady recording); rebeat {bpm,beats,beat_type,downbeat seconds,swing? 0.5..0.75} (wrong tracked piano beat);\nrebar_pickup {quarters}; set_pickup {enabled} (marks a short first bar, moves no barline); pad_measure {part_id,measure}; repair_bindings {}; undo {}; redo {}.\nbars (every part; numbers as printed): insert_measures {before \"bar\"|null=at end,count? 1..16}; delete_measures {from,to?}.\nrecording alignment: set_recording_alignment {measure_id,visit?:1,anchors:[[zero-based quarter beats within bar,recording seconds],...]} (2..64 increasing points; [] clears). This affects comparison/listening, not written music or ordinary score playback."
  2. Changed1 schema field changed
    • changedInput schema / properties / operation / description
      Previous value: -"For a fermata, update_mark {mark_id,offset_y} adjusts printed height in tenths (+10 = one staff space up; 0 resets); notes and playback stay unchanged.\nOne object naming its action. Actions and their fields (? optional):\nentry: create_tuplet {note_id,actual 2..9,normal?}; replace_note {note_id,pitch|null,spelling?} (keeps exact slot); remove_tuplet {note_id} (needs following rests); paste_notes {source_note_ids,target_note_id} (complete groups, one part); set_tie {note_ids:[start,end],enabled} (adjacent equal pitches, held sound); set_slur {note_ids:[start,end],enabled} (printed); reflow_layout {}.\nnotes: set_pitch {note_ids,pitch,spelling?}; transpose {note_ids,semitones}; set_duration {note_ids,quarters} (one note, tied pair or chord); move_notes {note_ids,quarters ±} (any notes of one part, each in its voice);\ntime: shift_time {measure,onset? quarters from bar start|note_id,quarters ±,part_id?,staff?} moves everything struck from that point on later or earlier (a late or early entry: one call, not note by note); earlier removes the beats just before the point and bars at the end it leaves empty.\nvoices: set_voice {note_ids,voice 1..4 on their staff}; set_tie {note_ids:[start,end],enabled} also between voices; set_beam {note_ids,beam join|break|none|auto}; set_stem {note_ids,stem up|down|flip|auto}; set_visibility {note_ids (rests)|measures,staff?,visible}.\nbatch {operations:[...up to 30 of the note, time, voice and bar edits]}: one version, all or none.\ndelete_notes {note_ids} replaces sounding notes with rests and clears selected rest symbols without shifting later notes; set_staff {note_ids|select,staff 1 upper|2 lower,clef? if asked} (hands); add_chord_tone {note_id,pitch,spelling?,velocity?}; fill_rest {rest_id,pitch,quarters?,velocity?,spelling?}.\nsound: set_velocity {note_ids,velocity 1..127}; set_dynamic {note_id,mark ppp..fff|sf|sfz|fp,velocity?}; set_timbre {part_id,program,part_name?}.\nwriting: set_key {part_id?,fifths,mode} (respells the notes the key holds; pitches stay); set_clef {part_id?,staff?,clef,measures?} (no measures: the whole staff; \"4\": from bar 4 to the staff's next clef change; \"4-6\": those bars only); set_harmony_position {part_id,measure,index from 0,quarters from bar start};\nengraving {title?,composer?,transcriber?,labels?:compact|full|none,page_size?:a4|letter} (paper size reflows this score and its PDF, preserves notes, does not guarantee one page); rebeam {}; reengrave {key?,program?,staff_split?,voices?,grid?,line?:single} (writes the notes again from the recording: rhythm spelling, voices and note IDs can change; not for page layout).\npage layout (pages, PDF and panel; notes and playback stay): layout {bars_per_system? 1..32, system_breaks? [\"bar\"] (start a line), page_breaks? [\"bar\"] (start a page), staff_size? 50..150 (% of default; smaller fits more per page), staff_spacing? 0..48, system_spacing? 0..48 (default 8), reset?:true}; null resets one field. The overview's layout lists each page's lines; check pages with review_score. MusicXML <print>/<scaling> are not read, except breaks in edited MusicXML.\nTAB: set_tablature {part_id?,view off|both|tab,tuning?,capo?,strings?}; set_string {note_ids,string|null}; set_fret {note_ids,string,fret}.\nmarks (saved score marks; kind words|rehearsal|metronome|dynamic|hairpin|fermata|octave (8va|8vb|15ma|15mb, note_id through end_note_id)): add_mark {kind,note_id|part_id+measure+quarters,text?,value?,end_note_id?,placement?}; update_mark {mark_id,kind?,text?,value?,placement?}; move_mark {mark_id,note_id?,end_note_id?}; delete_mark {mark_id}.\nwhole score: transpose_score {interval}; set_meter {beats,beat_type,pickup_quarters?}; scale_note_values {factor:2|0.5}; rewrite_rhythm {bpm,beats,beat_type,downbeat? second a bar starts: bars start there} (steady recording); rebeat {bpm,beats,beat_type,downbeat seconds,swing? 0.5..0.75} (wrong tracked piano beat);\nrebar_pickup {quarters}; set_pickup {enabled} (marks a short first bar, moves no barline); pad_measure {part_id,measure}; repair_bindings {}; undo {}; redo {}.\nbars (every part; numbers as printed): insert_measures {before \"bar\"|null=at end,count? 1..16}; delete_measures {from,to?}.\nrecording alignment: set_recording_alignment {measure_id,visit?:1,anchors:[[zero-based quarter beats within bar,recording seconds],...]} (2..64 increasing points; [] clears). This affects comparison/listening, not written music or ordinary score playback."New value: +"For a fermata, update_mark {mark_id,offset_y} adjusts printed height in tenths (+10 = one staff space up; 0 resets); notes and playback stay unchanged.\nOne object naming its action. Actions and their fields (? optional):\nentry: create_tuplet {note_id,actual 2..9,normal?}; replace_note {note_id,pitch|null,spelling?} (keeps exact slot); remove_tuplet {note_id} (needs following rests); paste_notes {source_note_ids,target_note_id} (complete groups, one part); set_tie {note_ids:[start,end],enabled} (adjacent equal pitches, held sound); set_slur {note_ids:[start,end],enabled} (printed); reflow_layout {}.\nnotes: set_pitch {note_ids,pitch,spelling?} (a pitch named without its octave, \"make it C\", is the one nearest the note's current pitch: B4 -> C5, not C4; in the direction asked if any; say the pitch written); transpose {note_ids,semitones}; set_duration {note_ids,quarters} (one note, tied pair or chord); move_notes {note_ids,quarters ±} (any notes of one part, each in its voice);\ntime: shift_time {measure,onset? quarters from bar start|note_id,quarters ±,part_id?,staff?} moves everything struck from that point on later or earlier (a late or early entry: one call, not note by note); earlier removes the beats just before the point and bars at the end it leaves empty.\nvoices: set_voice {note_ids,voice 1..4 on their staff}; set_tie also between voices; set_beam {note_ids,beam join|break|none|auto}; set_stem {note_ids,stem up|down|flip|auto}; set_visibility {note_ids (rests)|measures,staff?,visible}.\nbatch {operations:[...up to 30 of the note, time, voice and bar edits]}: one version, all or none.\ndelete_notes {note_ids} replaces sounding notes with rests and clears selected rest symbols without shifting later notes; set_staff {note_ids|select,staff 1 upper|2 lower,clef? if asked} (hands); add_chord_tone {note_id,pitch,spelling?,velocity?}; fill_rest {rest_id,pitch,quarters?,velocity?,spelling?}.\nsound: set_velocity {note_ids,velocity 1..127}; set_dynamic {note_id,mark ppp..fff|sf|sfz|fp,velocity?}; set_timbre {part_id,program,part_name?}.\nwriting: set_key {part_id?,fifths,mode} (respells the notes the key holds; pitches stay); set_clef {part_id?,staff?,clef,measures?} (no measures: the whole staff; \"4\": from bar 4 to the staff's next clef change; \"4-6\": those bars only); set_harmony_position {part_id,measure,index from 0,quarters from bar start};\nengraving {title?,composer?,transcriber?,labels?:compact|full|none,page_size?:a4|letter} (paper size reflows this score and its PDF, preserves notes, does not guarantee one page); rebeam {}; reengrave {key?,program?,staff_split?,voices?,grid?,line?:single} (writes the notes again from the recording: rhythm spelling, voices and note IDs can change; not for page layout).\npage layout (pages, PDF and panel; notes and playback stay): layout {bars_per_system? 1..32, system_breaks? [\"bar\"] (start a line), page_breaks? [\"bar\"] (start a page), staff_size? 50..150 (% of default; smaller fits more per page), staff_spacing? 0..48, system_spacing? 0..48 (default 8), reset?:true}; null resets one field. The overview's layout lists each page's lines; check pages with review_score. MusicXML <print>/<scaling> are not read, except breaks in edited MusicXML.\nTAB: set_tablature {part_id?,view off|both|tab,tuning?,capo?,strings?}; set_string {note_ids,string|null} (1 = the top line); set_fret {note_ids,string,fret}.\nmarks (saved score marks; kind words|rehearsal|metronome|dynamic|hairpin|fermata|octave (8va|8vb|15ma|15mb, note_id through end_note_id)): add_mark {kind,note_id|part_id+measure+quarters,text?,value?,end_note_id?,placement?}; update_mark {mark_id,kind?,text?,value?,placement?}; move_mark {mark_id,note_id?,end_note_id?}; delete_mark {mark_id}.\nwhole score: transpose_score {interval}; set_meter {beats,beat_type,pickup_quarters?}; scale_note_values {factor:2|0.5}; rewrite_rhythm {bpm,beats,beat_type,downbeat? second a bar starts: bars start there} (steady recording); rebeat {bpm,beats,beat_type,downbeat seconds,swing? 0.5..0.75} (wrong tracked piano beat);\nrebar_pickup {quarters}; set_pickup {enabled} (marks a short first bar, moves no barline); pad_measure {part_id,measure}; repair_bindings {}; undo {}; redo {}.\nbars (every part; numbers as printed): insert_measures {before \"bar\"|null=at end,count? 1..16}; delete_measures {from,to?}.\nrecording alignment: set_recording_alignment {measure_id,visit?:1,anchors:[[zero-based quarter beats within bar,recording seconds],...]} (2..64 increasing points; [] clears). This affects comparison/listening, not written music or ordinary score playback."
  3. Changed1 schema field changed
    • changedInput schema / properties / operation / description
      Previous value: -"For a fermata, update_mark {mark_id,offset_y} adjusts printed height in tenths (+10 = one staff space up; 0 resets); notes and playback stay unchanged.\nOne object naming its action. Actions and their fields (? optional):\nentry: create_tuplet {note_id,actual 2..9,normal?}; replace_note {note_id,pitch|null,spelling?} (keeps exact slot); remove_tuplet {note_id} (needs following rests); paste_notes {source_note_ids,target_note_id} (complete groups, one part); set_tie {note_ids:[start,end],enabled} (adjacent equal pitches, held sound); set_slur {note_ids:[start,end],enabled} (printed); reflow_layout {}.\nnotes: set_pitch {note_ids,pitch,spelling?}; transpose {note_ids,semitones}; set_duration {note_ids,quarters}; move_notes {note_ids,quarters ±} (each: one note, tied pair or chord);\ndelete_notes {note_ids} replaces sounding notes with rests and clears selected rest symbols without shifting later notes; set_staff {note_ids|select,staff 1 upper|2 lower,clef? if asked} (hands); add_chord_tone {note_id,pitch,spelling?,velocity?}; fill_rest {rest_id,pitch,quarters?,velocity?,spelling?}.\nsound: set_velocity {note_ids,velocity 1..127}; set_dynamic {note_id,mark ppp..fff|sf|sfz|fp,velocity?}; set_timbre {part_id,program,part_name?}.\nwriting: set_key {part_id?,fifths,mode} (respells the notes the key holds; pitches stay); set_clef {part_id?,staff?,clef,measures?} (no measures: the whole staff; \"4\": from bar 4 to the staff's next clef change; \"4-6\": those bars only); set_harmony_position {part_id,measure,index from 0,quarters from bar start};\nengraving {title?,composer?,transcriber?,labels?:compact|full|none,page_size?:a4|letter} (paper size reflows this score and its PDF, preserves notes, does not guarantee one page); rebeam {}; reengrave {key?,program?,staff_split?,voices?,grid?,line?:single} (writes the notes again from the recording: rhythm spelling, voices and note IDs can change; not for page layout).\npage layout (pages, PDF and panel; notes and playback stay): layout {bars_per_system? 1..32, system_breaks? [\"bar\"] (start a line), page_breaks? [\"bar\"] (start a page), staff_size? 50..150 (% of default; smaller fits more per page), staff_spacing? 0..48, system_spacing? 0..48 (default 8), reset?:true}; null resets one field. The overview's layout lists each page's lines; check pages with review_score. MusicXML <print>/<scaling> are not read, except breaks in edited MusicXML.\nTAB: set_tablature {part_id?,view off|both|tab,tuning?,capo?,strings?}; set_string {note_ids,string|null}; set_fret {note_ids,string,fret}.\nmarks (saved score marks; kind words|rehearsal|metronome|dynamic|hairpin|fermata|octave (8va|8vb|15ma|15mb, note_id through end_note_id)): add_mark {kind,note_id|part_id+measure+quarters,text?,value?,end_note_id?,placement?}; update_mark {mark_id,kind?,text?,value?,placement?}; move_mark {mark_id,note_id?,end_note_id?}; delete_mark {mark_id}.\nwhole score: transpose_score {interval}; set_meter {beats,beat_type,pickup_quarters?}; scale_note_values {factor:2|0.5}; rewrite_rhythm {bpm,beats,beat_type,downbeat? second a bar starts: bars start there} (steady recording); rebeat {bpm,beats,beat_type,downbeat seconds,swing? 0.5..0.75} (wrong tracked piano beat);\nrebar_pickup {quarters}; set_pickup {enabled} (marks a short first bar, moves no barline); pad_measure {part_id,measure}; repair_bindings {}; undo {}; redo {}.\nbars (every part; numbers as printed): insert_measures {before \"bar\"|null=at end,count? 1..16}; delete_measures {from,to?}.\nrecording alignment: set_recording_alignment {measure_id,visit?:1,anchors:[[zero-based quarter beats within bar,recording seconds],...]} (2..64 increasing points; [] clears). This affects comparison/listening, not written music or ordinary score playback."New value: +"For a fermata, update_mark {mark_id,offset_y} adjusts printed height in tenths (+10 = one staff space up; 0 resets); notes and playback stay unchanged.\nOne object naming its action. Actions and their fields (? optional):\nentry: create_tuplet {note_id,actual 2..9,normal?}; replace_note {note_id,pitch|null,spelling?} (keeps exact slot); remove_tuplet {note_id} (needs following rests); paste_notes {source_note_ids,target_note_id} (complete groups, one part); set_tie {note_ids:[start,end],enabled} (adjacent equal pitches, held sound); set_slur {note_ids:[start,end],enabled} (printed); reflow_layout {}.\nnotes: set_pitch {note_ids,pitch,spelling?}; transpose {note_ids,semitones}; set_duration {note_ids,quarters} (one note, tied pair or chord); move_notes {note_ids,quarters ±} (any notes of one part, each in its voice);\ntime: shift_time {measure,onset? quarters from bar start|note_id,quarters ±,part_id?,staff?} moves everything struck from that point on later or earlier (a late or early entry: one call, not note by note); earlier removes the beats just before the point and bars at the end it leaves empty.\nvoices: set_voice {note_ids,voice 1..4 on their staff}; set_tie {note_ids:[start,end],enabled} also between voices; set_beam {note_ids,beam join|break|none|auto}; set_stem {note_ids,stem up|down|flip|auto}; set_visibility {note_ids (rests)|measures,staff?,visible}.\nbatch {operations:[...up to 30 of the note, time, voice and bar edits]}: one version, all or none.\ndelete_notes {note_ids} replaces sounding notes with rests and clears selected rest symbols without shifting later notes; set_staff {note_ids|select,staff 1 upper|2 lower,clef? if asked} (hands); add_chord_tone {note_id,pitch,spelling?,velocity?}; fill_rest {rest_id,pitch,quarters?,velocity?,spelling?}.\nsound: set_velocity {note_ids,velocity 1..127}; set_dynamic {note_id,mark ppp..fff|sf|sfz|fp,velocity?}; set_timbre {part_id,program,part_name?}.\nwriting: set_key {part_id?,fifths,mode} (respells the notes the key holds; pitches stay); set_clef {part_id?,staff?,clef,measures?} (no measures: the whole staff; \"4\": from bar 4 to the staff's next clef change; \"4-6\": those bars only); set_harmony_position {part_id,measure,index from 0,quarters from bar start};\nengraving {title?,composer?,transcriber?,labels?:compact|full|none,page_size?:a4|letter} (paper size reflows this score and its PDF, preserves notes, does not guarantee one page); rebeam {}; reengrave {key?,program?,staff_split?,voices?,grid?,line?:single} (writes the notes again from the recording: rhythm spelling, voices and note IDs can change; not for page layout).\npage layout (pages, PDF and panel; notes and playback stay): layout {bars_per_system? 1..32, system_breaks? [\"bar\"] (start a line), page_breaks? [\"bar\"] (start a page), staff_size? 50..150 (% of default; smaller fits more per page), staff_spacing? 0..48, system_spacing? 0..48 (default 8), reset?:true}; null resets one field. The overview's layout lists each page's lines; check pages with review_score. MusicXML <print>/<scaling> are not read, except breaks in edited MusicXML.\nTAB: set_tablature {part_id?,view off|both|tab,tuning?,capo?,strings?}; set_string {note_ids,string|null}; set_fret {note_ids,string,fret}.\nmarks (saved score marks; kind words|rehearsal|metronome|dynamic|hairpin|fermata|octave (8va|8vb|15ma|15mb, note_id through end_note_id)): add_mark {kind,note_id|part_id+measure+quarters,text?,value?,end_note_id?,placement?}; update_mark {mark_id,kind?,text?,value?,placement?}; move_mark {mark_id,note_id?,end_note_id?}; delete_mark {mark_id}.\nwhole score: transpose_score {interval}; set_meter {beats,beat_type,pickup_quarters?}; scale_note_values {factor:2|0.5}; rewrite_rhythm {bpm,beats,beat_type,downbeat? second a bar starts: bars start there} (steady recording); rebeat {bpm,beats,beat_type,downbeat seconds,swing? 0.5..0.75} (wrong tracked piano beat);\nrebar_pickup {quarters}; set_pickup {enabled} (marks a short first bar, moves no barline); pad_measure {part_id,measure}; repair_bindings {}; undo {}; redo {}.\nbars (every part; numbers as printed): insert_measures {before \"bar\"|null=at end,count? 1..16}; delete_measures {from,to?}.\nrecording alignment: set_recording_alignment {measure_id,visit?:1,anchors:[[zero-based quarter beats within bar,recording seconds],...]} (2..64 increasing points; [] clears). This affects comparison/listening, not written music or ordinary score playback."
  4. Changed1 schema field changed
    • changedInput schema / properties / operation / description
      Previous value: -"One object naming its action. Actions and their fields (? optional):\nentry: create_tuplet {note_id,actual 2..9,normal?}; replace_note {note_id,pitch|null,spelling?} (keeps exact slot); remove_tuplet {note_id} (needs following rests); paste_notes {source_note_ids,target_note_id} (complete groups, one part); set_tie {note_ids:[start,end],enabled} (adjacent equal pitches, held sound); set_slur {note_ids:[start,end],enabled} (printed); reflow_layout {}.\nnotes: set_pitch {note_ids,pitch,spelling?}; transpose {note_ids,semitones}; set_duration {note_ids,quarters}; move_notes {note_ids,quarters ±} (each: one note, tied pair or chord);\ndelete_notes {note_ids}; set_staff {note_ids|select,staff 1 upper|2 lower,clef? if asked} (hands); add_chord_tone {note_id,pitch,spelling?,velocity?}; fill_rest {rest_id,pitch,quarters?,velocity?,spelling?}.\nsound: set_velocity {note_ids,velocity 1..127}; set_dynamic {note_id,mark ppp..fff|sf|sfz|fp,velocity?}; set_timbre {part_id,program,part_name?}.\nwriting: set_key {part_id?,fifths,mode} (respells the notes the key holds; pitches stay); set_clef {part_id?,staff?,clef,measures?} (no measures: the whole staff; \"4\": from bar 4 to the staff's next clef change; \"4-6\": those bars only); set_harmony_position {part_id,measure,index from 0,quarters from bar start};\nengraving {title?,composer?,transcriber?,labels?:compact|full|none,page_size?:a4|letter} (paper size reflows this score and its PDF, preserves notes, does not guarantee one page); rebeam {}; reengrave {key?,program?,staff_split?,voices?,grid?,line?:single} (writes the notes again from the recording: rhythm spelling, voices and note IDs can change; not for page layout).\npage layout (pages, PDF and panel; notes and playback stay): layout {bars_per_system? 1..32, system_breaks? [\"bar\"] (start a line), page_breaks? [\"bar\"] (start a page), staff_size? 50..150 (% of default; smaller fits more per page), staff_spacing? 0..48, system_spacing? 0..48 (default 8), reset?:true}; null resets one field. The overview's layout lists each page's lines; check pages with review_score. MusicXML <print>/<scaling> are not read, except breaks in edited MusicXML.\nTAB: set_tablature {part_id?,view off|both|tab,tuning?,capo?,strings?}; set_string {note_ids,string|null}; set_fret {note_ids,string,fret}.\nmarks (saved score marks; kind words|rehearsal|metronome|dynamic|hairpin|fermata|octave (8va|8vb|15ma|15mb, note_id through end_note_id)): add_mark {kind,note_id|part_id+measure+quarters,text?,value?,end_note_id?,placement?}; update_mark {mark_id,kind?,text?,value?,placement?}; move_mark {mark_id,note_id?,end_note_id?}; delete_mark {mark_id}.\nwhole score: transpose_score {interval}; set_meter {beats,beat_type,pickup_quarters?}; scale_note_values {factor:2|0.5}; rewrite_rhythm {bpm,beats,beat_type,downbeat? second a bar starts: bars start there} (steady recording); rebeat {bpm,beats,beat_type,downbeat seconds,swing? 0.5..0.75} (wrong tracked piano beat);\nrebar_pickup {quarters}; set_pickup {enabled} (marks a short first bar, moves no barline); pad_measure {part_id,measure}; repair_bindings {}; undo {}; redo {}.\nbars (every part; numbers as printed): insert_measures {before \"bar\"|null=at end,count? 1..16}; delete_measures {from,to?}.\nrecording alignment: set_recording_alignment {measure_id,visit?:1,anchors:[[zero-based quarter beats within bar,recording seconds],...]} (2..64 increasing points; [] clears). This affects comparison/listening, not written music or ordinary score playback."New value: +"For a fermata, update_mark {mark_id,offset_y} adjusts printed height in tenths (+10 = one staff space up; 0 resets); notes and playback stay unchanged.\nOne object naming its action. Actions and their fields (? optional):\nentry: create_tuplet {note_id,actual 2..9,normal?}; replace_note {note_id,pitch|null,spelling?} (keeps exact slot); remove_tuplet {note_id} (needs following rests); paste_notes {source_note_ids,target_note_id} (complete groups, one part); set_tie {note_ids:[start,end],enabled} (adjacent equal pitches, held sound); set_slur {note_ids:[start,end],enabled} (printed); reflow_layout {}.\nnotes: set_pitch {note_ids,pitch,spelling?}; transpose {note_ids,semitones}; set_duration {note_ids,quarters}; move_notes {note_ids,quarters ±} (each: one note, tied pair or chord);\ndelete_notes {note_ids} replaces sounding notes with rests and clears selected rest symbols without shifting later notes; set_staff {note_ids|select,staff 1 upper|2 lower,clef? if asked} (hands); add_chord_tone {note_id,pitch,spelling?,velocity?}; fill_rest {rest_id,pitch,quarters?,velocity?,spelling?}.\nsound: set_velocity {note_ids,velocity 1..127}; set_dynamic {note_id,mark ppp..fff|sf|sfz|fp,velocity?}; set_timbre {part_id,program,part_name?}.\nwriting: set_key {part_id?,fifths,mode} (respells the notes the key holds; pitches stay); set_clef {part_id?,staff?,clef,measures?} (no measures: the whole staff; \"4\": from bar 4 to the staff's next clef change; \"4-6\": those bars only); set_harmony_position {part_id,measure,index from 0,quarters from bar start};\nengraving {title?,composer?,transcriber?,labels?:compact|full|none,page_size?:a4|letter} (paper size reflows this score and its PDF, preserves notes, does not guarantee one page); rebeam {}; reengrave {key?,program?,staff_split?,voices?,grid?,line?:single} (writes the notes again from the recording: rhythm spelling, voices and note IDs can change; not for page layout).\npage layout (pages, PDF and panel; notes and playback stay): layout {bars_per_system? 1..32, system_breaks? [\"bar\"] (start a line), page_breaks? [\"bar\"] (start a page), staff_size? 50..150 (% of default; smaller fits more per page), staff_spacing? 0..48, system_spacing? 0..48 (default 8), reset?:true}; null resets one field. The overview's layout lists each page's lines; check pages with review_score. MusicXML <print>/<scaling> are not read, except breaks in edited MusicXML.\nTAB: set_tablature {part_id?,view off|both|tab,tuning?,capo?,strings?}; set_string {note_ids,string|null}; set_fret {note_ids,string,fret}.\nmarks (saved score marks; kind words|rehearsal|metronome|dynamic|hairpin|fermata|octave (8va|8vb|15ma|15mb, note_id through end_note_id)): add_mark {kind,note_id|part_id+measure+quarters,text?,value?,end_note_id?,placement?}; update_mark {mark_id,kind?,text?,value?,placement?}; move_mark {mark_id,note_id?,end_note_id?}; delete_mark {mark_id}.\nwhole score: transpose_score {interval}; set_meter {beats,beat_type,pickup_quarters?}; scale_note_values {factor:2|0.5}; rewrite_rhythm {bpm,beats,beat_type,downbeat? second a bar starts: bars start there} (steady recording); rebeat {bpm,beats,beat_type,downbeat seconds,swing? 0.5..0.75} (wrong tracked piano beat);\nrebar_pickup {quarters}; set_pickup {enabled} (marks a short first bar, moves no barline); pad_measure {part_id,measure}; repair_bindings {}; undo {}; redo {}.\nbars (every part; numbers as printed): insert_measures {before \"bar\"|null=at end,count? 1..16}; delete_measures {from,to?}.\nrecording alignment: set_recording_alignment {measure_id,visit?:1,anchors:[[zero-based quarter beats within bar,recording seconds],...]} (2..64 increasing points; [] clears). This affects comparison/listening, not written music or ordinary score playback."
  5. Changed1 schema field changed
    • changedInput schema / properties / operation / description
      Previous value: -"One object naming its action. Actions and their fields (? optional):\nentry: create_tuplet {note_id,actual 2..9,normal?}; replace_note {note_id,pitch|null,spelling?} (keeps exact slot); remove_tuplet {note_id} (needs following rests); paste_notes {source_note_ids,target_note_id} (complete groups, one part); set_tie {note_ids:[start,end],enabled} (adjacent equal pitches, held sound); set_slur {note_ids:[start,end],enabled} (printed); reflow_layout {}.\nnotes: set_pitch {note_ids,pitch,spelling?}; transpose {note_ids,semitones}; set_duration {note_ids,quarters}; move_notes {note_ids,quarters ±} (each: one note, tied pair or chord);\ndelete_notes {note_ids}; set_staff {note_ids|select,staff 1 upper|2 lower,clef? if asked} (hands); add_chord_tone {note_id,pitch,spelling?,velocity?}; fill_rest {rest_id,pitch,quarters?,velocity?,spelling?}.\nsound: set_velocity {note_ids,velocity 1..127}; set_dynamic {note_id,mark ppp..fff|sf|sfz|fp,velocity?}; set_timbre {part_id,program,part_name?}.\nwriting: set_key {part_id?,fifths,mode} (respells the notes the key holds; pitches stay); set_clef {part_id?,staff?,clef,measures?} (no measures: the whole staff; \"4\": from bar 4 to the staff's next clef change; \"4-6\": those bars only); set_harmony_position {part_id,measure,index from 0,quarters from bar start};\nengraving {title?,composer?,transcriber?,labels?:compact|full|none,page_size?:a4|letter} (paper size reflows this score and its PDF, preserves notes, does not guarantee one page); rebeam {}; reengrave {key?,program?,staff_split?,voices?,grid?,line?:single}.\nTAB: set_tablature {part_id?,view off|both|tab,tuning?,capo?,strings?}; set_string {note_ids,string|null}; set_fret {note_ids,string,fret}.\nmarks (saved score marks; kind words|rehearsal|metronome|dynamic|hairpin|fermata|octave (8va|8vb|15ma|15mb, note_id through end_note_id)): add_mark {kind,note_id|part_id+measure+quarters,text?,value?,end_note_id?,placement?}; update_mark {mark_id,kind?,text?,value?,placement?}; move_mark {mark_id,note_id?,end_note_id?}; delete_mark {mark_id}.\nwhole score: transpose_score {interval}; set_meter {beats,beat_type,pickup_quarters?}; scale_note_values {factor:2|0.5}; rewrite_rhythm {bpm,beats,beat_type,downbeat? second a bar starts: bars start there} (steady recording); rebeat {bpm,beats,beat_type,downbeat seconds,swing? 0.5..0.75} (wrong tracked piano beat);\nrebar_pickup {quarters}; set_pickup {enabled} (marks a short first bar, moves no barline); pad_measure {part_id,measure}; repair_bindings {}; undo {}; redo {}.\nbars (every part; numbers as printed): insert_measures {before \"bar\"|null=at end,count? 1..16}; delete_measures {from,to?}.\nrecording alignment: set_recording_alignment {measure_id,visit?:1,anchors:[[zero-based quarter beats within bar,recording seconds],...]} (2..64 increasing points; [] clears). This affects comparison/listening, not written music or ordinary score playback."New value: +"One object naming its action. Actions and their fields (? optional):\nentry: create_tuplet {note_id,actual 2..9,normal?}; replace_note {note_id,pitch|null,spelling?} (keeps exact slot); remove_tuplet {note_id} (needs following rests); paste_notes {source_note_ids,target_note_id} (complete groups, one part); set_tie {note_ids:[start,end],enabled} (adjacent equal pitches, held sound); set_slur {note_ids:[start,end],enabled} (printed); reflow_layout {}.\nnotes: set_pitch {note_ids,pitch,spelling?}; transpose {note_ids,semitones}; set_duration {note_ids,quarters}; move_notes {note_ids,quarters ±} (each: one note, tied pair or chord);\ndelete_notes {note_ids}; set_staff {note_ids|select,staff 1 upper|2 lower,clef? if asked} (hands); add_chord_tone {note_id,pitch,spelling?,velocity?}; fill_rest {rest_id,pitch,quarters?,velocity?,spelling?}.\nsound: set_velocity {note_ids,velocity 1..127}; set_dynamic {note_id,mark ppp..fff|sf|sfz|fp,velocity?}; set_timbre {part_id,program,part_name?}.\nwriting: set_key {part_id?,fifths,mode} (respells the notes the key holds; pitches stay); set_clef {part_id?,staff?,clef,measures?} (no measures: the whole staff; \"4\": from bar 4 to the staff's next clef change; \"4-6\": those bars only); set_harmony_position {part_id,measure,index from 0,quarters from bar start};\nengraving {title?,composer?,transcriber?,labels?:compact|full|none,page_size?:a4|letter} (paper size reflows this score and its PDF, preserves notes, does not guarantee one page); rebeam {}; reengrave {key?,program?,staff_split?,voices?,grid?,line?:single} (writes the notes again from the recording: rhythm spelling, voices and note IDs can change; not for page layout).\npage layout (pages, PDF and panel; notes and playback stay): layout {bars_per_system? 1..32, system_breaks? [\"bar\"] (start a line), page_breaks? [\"bar\"] (start a page), staff_size? 50..150 (% of default; smaller fits more per page), staff_spacing? 0..48, system_spacing? 0..48 (default 8), reset?:true}; null resets one field. The overview's layout lists each page's lines; check pages with review_score. MusicXML <print>/<scaling> are not read, except breaks in edited MusicXML.\nTAB: set_tablature {part_id?,view off|both|tab,tuning?,capo?,strings?}; set_string {note_ids,string|null}; set_fret {note_ids,string,fret}.\nmarks (saved score marks; kind words|rehearsal|metronome|dynamic|hairpin|fermata|octave (8va|8vb|15ma|15mb, note_id through end_note_id)): add_mark {kind,note_id|part_id+measure+quarters,text?,value?,end_note_id?,placement?}; update_mark {mark_id,kind?,text?,value?,placement?}; move_mark {mark_id,note_id?,end_note_id?}; delete_mark {mark_id}.\nwhole score: transpose_score {interval}; set_meter {beats,beat_type,pickup_quarters?}; scale_note_values {factor:2|0.5}; rewrite_rhythm {bpm,beats,beat_type,downbeat? second a bar starts: bars start there} (steady recording); rebeat {bpm,beats,beat_type,downbeat seconds,swing? 0.5..0.75} (wrong tracked piano beat);\nrebar_pickup {quarters}; set_pickup {enabled} (marks a short first bar, moves no barline); pad_measure {part_id,measure}; repair_bindings {}; undo {}; redo {}.\nbars (every part; numbers as printed): insert_measures {before \"bar\"|null=at end,count? 1..16}; delete_measures {from,to?}.\nrecording alignment: set_recording_alignment {measure_id,visit?:1,anchors:[[zero-based quarter beats within bar,recording seconds],...]} (2..64 increasing points; [] clears). This affects comparison/listening, not written music or ordinary score playback."
  6. Changed1 schema field changed
    • changedInput schema / properties / operation / description
      Previous value: -"One object naming its action. Actions and their fields (? optional):\nentry: create_tuplet {note_id,actual 2..9,normal?}; replace_note {note_id,pitch|null,spelling?} (keeps exact slot); remove_tuplet {note_id} (needs following rests); paste_notes {source_note_ids,target_note_id} (complete groups, one part); set_tie {note_ids:[start,end],enabled} (adjacent equal pitches, held sound); set_slur {note_ids:[start,end],enabled} (printed); reflow_layout {}.\nnotes: set_pitch {note_ids,pitch,spelling?}; transpose {note_ids,semitones}; set_duration {note_ids,quarters}; move_notes {note_ids,quarters ±} (each: one note, tied pair or chord);\ndelete_notes {note_ids}; set_staff {note_ids|select,staff 1 upper|2 lower,clef? if asked} (hands); add_chord_tone {note_id,pitch,spelling?,velocity?}; fill_rest {rest_id,pitch,quarters?,velocity?,spelling?}.\nsound: set_velocity {note_ids,velocity 1..127}; set_dynamic {note_id,mark ppp..fff|sf|sfz|fp,velocity?}; set_timbre {part_id,program,part_name?}.\nwriting: set_key {part_id?,fifths,mode} (respells the notes the key holds; pitches stay); set_clef {part_id?,staff?,clef,measures?} (no measures: the whole staff; \"4\": from bar 4 to the staff's next clef change; \"4-6\": those bars only); set_harmony_position {part_id,measure,index from 0,quarters from bar start};\nengraving {title,composer,transcriber,labels:compact|full|none}; rebeam {}; reengrave {key?,program?,staff_split?,voices?,grid?,line?:single}.\nTAB: set_tablature {part_id?,view off|both|tab,tuning?,capo?,strings?}; set_string {note_ids,string|null}; set_fret {note_ids,string,fret}.\nmarks (saved score marks; kind words|rehearsal|metronome|dynamic|hairpin|fermata): add_mark {kind,note_id|part_id+measure+quarters,text?,value?,end_note_id?,placement?}; update_mark {mark_id,kind?,text?,value?,placement?}; move_mark {mark_id,note_id?,end_note_id?}; delete_mark {mark_id}.\nwhole score: transpose_score {interval}; set_meter {beats,beat_type,pickup_quarters?}; scale_note_values {factor:2|0.5}; rewrite_rhythm {bpm,beats,beat_type,downbeat? second a bar starts: bars start there} (steady recording); rebeat {bpm,beats,beat_type,downbeat seconds,swing? 0.5..0.75} (wrong tracked piano beat);\nrebar_pickup {quarters}; set_pickup {enabled} (marks a short first bar, moves no barline); pad_measure {part_id,measure}; repair_bindings {}; undo {}; redo {}.\nbars (every part; numbers as printed): insert_measures {before \"bar\"|null=at end,count? 1..16}; delete_measures {from,to?}.\nrecording alignment: set_recording_alignment {measure_id,visit?:1,anchors:[[zero-based quarter beats within bar,recording seconds],...]} (2..64 increasing points; [] clears). This affects comparison/listening, not written music or ordinary score playback."New value: +"One object naming its action. Actions and their fields (? optional):\nentry: create_tuplet {note_id,actual 2..9,normal?}; replace_note {note_id,pitch|null,spelling?} (keeps exact slot); remove_tuplet {note_id} (needs following rests); paste_notes {source_note_ids,target_note_id} (complete groups, one part); set_tie {note_ids:[start,end],enabled} (adjacent equal pitches, held sound); set_slur {note_ids:[start,end],enabled} (printed); reflow_layout {}.\nnotes: set_pitch {note_ids,pitch,spelling?}; transpose {note_ids,semitones}; set_duration {note_ids,quarters}; move_notes {note_ids,quarters ±} (each: one note, tied pair or chord);\ndelete_notes {note_ids}; set_staff {note_ids|select,staff 1 upper|2 lower,clef? if asked} (hands); add_chord_tone {note_id,pitch,spelling?,velocity?}; fill_rest {rest_id,pitch,quarters?,velocity?,spelling?}.\nsound: set_velocity {note_ids,velocity 1..127}; set_dynamic {note_id,mark ppp..fff|sf|sfz|fp,velocity?}; set_timbre {part_id,program,part_name?}.\nwriting: set_key {part_id?,fifths,mode} (respells the notes the key holds; pitches stay); set_clef {part_id?,staff?,clef,measures?} (no measures: the whole staff; \"4\": from bar 4 to the staff's next clef change; \"4-6\": those bars only); set_harmony_position {part_id,measure,index from 0,quarters from bar start};\nengraving {title?,composer?,transcriber?,labels?:compact|full|none,page_size?:a4|letter} (paper size reflows this score and its PDF, preserves notes, does not guarantee one page); rebeam {}; reengrave {key?,program?,staff_split?,voices?,grid?,line?:single}.\nTAB: set_tablature {part_id?,view off|both|tab,tuning?,capo?,strings?}; set_string {note_ids,string|null}; set_fret {note_ids,string,fret}.\nmarks (saved score marks; kind words|rehearsal|metronome|dynamic|hairpin|fermata|octave (8va|8vb|15ma|15mb, note_id through end_note_id)): add_mark {kind,note_id|part_id+measure+quarters,text?,value?,end_note_id?,placement?}; update_mark {mark_id,kind?,text?,value?,placement?}; move_mark {mark_id,note_id?,end_note_id?}; delete_mark {mark_id}.\nwhole score: transpose_score {interval}; set_meter {beats,beat_type,pickup_quarters?}; scale_note_values {factor:2|0.5}; rewrite_rhythm {bpm,beats,beat_type,downbeat? second a bar starts: bars start there} (steady recording); rebeat {bpm,beats,beat_type,downbeat seconds,swing? 0.5..0.75} (wrong tracked piano beat);\nrebar_pickup {quarters}; set_pickup {enabled} (marks a short first bar, moves no barline); pad_measure {part_id,measure}; repair_bindings {}; undo {}; redo {}.\nbars (every part; numbers as printed): insert_measures {before \"bar\"|null=at end,count? 1..16}; delete_measures {from,to?}.\nrecording alignment: set_recording_alignment {measure_id,visit?:1,anchors:[[zero-based quarter beats within bar,recording seconds],...]} (2..64 increasing points; [] clears). This affects comparison/listening, not written music or ordinary score playback."
  7. Changed1 schema field changed
    • changedInput schema / properties / operation / description
      Previous value: -"One object naming its action. Actions and their fields (? optional):\nnotes: set_pitch {note_ids,pitch,spelling?}; transpose {note_ids,semitones}; set_duration {note_ids,quarters}; move_notes {note_ids,quarters ±} (each: one note, tied pair or chord);\ndelete_notes {note_ids}; set_staff {note_ids|select,staff 1 upper|2 lower,clef? if asked} (hands); add_chord_tone {note_id,pitch,spelling?,velocity?}; fill_rest {rest_id,pitch,quarters?,velocity?,spelling?}.\nsound: set_velocity {note_ids,velocity 1..127}; set_dynamic {note_id,mark ppp..fff|sf|sfz|fp,velocity?}; set_timbre {part_id,program,part_name?}.\nwriting: set_key {part_id?,fifths,mode} (respells the notes the key holds; pitches stay); set_clef {part_id?,staff?,clef,measures?} (no measures: the whole staff; \"4\": from bar 4 to the staff's next clef change; \"4-6\": those bars only); set_harmony_position {part_id,measure,index from 0,quarters from bar start};\nengraving {title,composer,transcriber,labels:compact|full|none}; rebeam {}; reengrave {key?,program?,staff_split?,voices?,grid?,line?:single}.\nTAB: set_tablature {part_id?,view off|both|tab,tuning?,capo?,strings?}; set_string {note_ids,string|null}; set_fret {note_ids,string,fret}.\nmarks (saved score marks; kind words|rehearsal|metronome|dynamic|hairpin|fermata): add_mark {kind,note_id|part_id+measure+quarters,text?,value?,end_note_id?,placement?}; update_mark {mark_id,kind?,text?,value?,placement?}; move_mark {mark_id,note_id?,end_note_id?}; delete_mark {mark_id}.\nwhole score: transpose_score {interval}; set_meter {beats,beat_type,pickup_quarters?}; scale_note_values {factor:2|0.5}; rewrite_rhythm {bpm,beats,beat_type,downbeat? second a bar starts: bars start there} (steady recording); rebeat {bpm,beats,beat_type,downbeat seconds,swing? 0.5..0.75} (wrong tracked piano beat);\nrebar_pickup {quarters}; set_pickup {enabled} (marks a short first bar, moves no barline); pad_measure {part_id,measure}; repair_bindings {}; undo {}; redo {}.\nbars (every part; numbers as printed): insert_measures {before \"bar\"|null=at end,count? 1..16}; delete_measures {from,to?}."New value: +"One object naming its action. Actions and their fields (? optional):\nentry: create_tuplet {note_id,actual 2..9,normal?}; replace_note {note_id,pitch|null,spelling?} (keeps exact slot); remove_tuplet {note_id} (needs following rests); paste_notes {source_note_ids,target_note_id} (complete groups, one part); set_tie {note_ids:[start,end],enabled} (adjacent equal pitches, held sound); set_slur {note_ids:[start,end],enabled} (printed); reflow_layout {}.\nnotes: set_pitch {note_ids,pitch,spelling?}; transpose {note_ids,semitones}; set_duration {note_ids,quarters}; move_notes {note_ids,quarters ±} (each: one note, tied pair or chord);\ndelete_notes {note_ids}; set_staff {note_ids|select,staff 1 upper|2 lower,clef? if asked} (hands); add_chord_tone {note_id,pitch,spelling?,velocity?}; fill_rest {rest_id,pitch,quarters?,velocity?,spelling?}.\nsound: set_velocity {note_ids,velocity 1..127}; set_dynamic {note_id,mark ppp..fff|sf|sfz|fp,velocity?}; set_timbre {part_id,program,part_name?}.\nwriting: set_key {part_id?,fifths,mode} (respells the notes the key holds; pitches stay); set_clef {part_id?,staff?,clef,measures?} (no measures: the whole staff; \"4\": from bar 4 to the staff's next clef change; \"4-6\": those bars only); set_harmony_position {part_id,measure,index from 0,quarters from bar start};\nengraving {title,composer,transcriber,labels:compact|full|none}; rebeam {}; reengrave {key?,program?,staff_split?,voices?,grid?,line?:single}.\nTAB: set_tablature {part_id?,view off|both|tab,tuning?,capo?,strings?}; set_string {note_ids,string|null}; set_fret {note_ids,string,fret}.\nmarks (saved score marks; kind words|rehearsal|metronome|dynamic|hairpin|fermata): add_mark {kind,note_id|part_id+measure+quarters,text?,value?,end_note_id?,placement?}; update_mark {mark_id,kind?,text?,value?,placement?}; move_mark {mark_id,note_id?,end_note_id?}; delete_mark {mark_id}.\nwhole score: transpose_score {interval}; set_meter {beats,beat_type,pickup_quarters?}; scale_note_values {factor:2|0.5}; rewrite_rhythm {bpm,beats,beat_type,downbeat? second a bar starts: bars start there} (steady recording); rebeat {bpm,beats,beat_type,downbeat seconds,swing? 0.5..0.75} (wrong tracked piano beat);\nrebar_pickup {quarters}; set_pickup {enabled} (marks a short first bar, moves no barline); pad_measure {part_id,measure}; repair_bindings {}; undo {}; redo {}.\nbars (every part; numbers as printed): insert_measures {before \"bar\"|null=at end,count? 1..16}; delete_measures {from,to?}.\nrecording alignment: set_recording_alignment {measure_id,visit?:1,anchors:[[zero-based quarter beats within bar,recording seconds],...]} (2..64 increasing points; [] clears). This affects comparison/listening, not written music or ordinary score playback."
  8. Changed1 schema field changed
    • changedInput schema / properties / operation / description
      Previous value: -"One object naming its action. Actions and their fields (? optional):\nnotes: set_pitch {note_ids,pitch,spelling?}; transpose {note_ids,semitones}; set_duration {note_ids,quarters}; move_notes {note_ids,quarters ±};\ndelete_notes {note_ids}; set_staff {note_ids|select,staff 1 upper|2 lower,clef? if asked} (hands); add_chord_tone {note_id,pitch,spelling?,velocity?}; fill_rest {rest_id,pitch,quarters?,velocity?,spelling?}.\nsound: set_velocity {note_ids,velocity 1..127}; set_dynamic {note_id,mark ppp..fff|sf|sfz|fp,velocity?}; set_timbre {part_id,program,part_name?}.\nwriting: set_key {part_id?,fifths,mode}; set_clef {part_id?,staff?,clef,measures? \"4-6\" for those bars only}; set_harmony_position {part_id,measure,index from 0,quarters from bar start};\nengraving {title,composer,transcriber,labels:compact|full|none}; rebeam {}; reengrave {key?,program?,staff_split?,voices?,grid?,line?:single}.\nTAB: set_tablature {part_id?,view off|both|tab,tuning?,capo?,strings?}; set_string {note_ids,string|null}; set_fret {note_ids,string,fret}.\nmarks (saved score marks; kind words|rehearsal|metronome|dynamic|hairpin|fermata): add_mark {kind,note_id|part_id+measure+quarters,text?,value?,end_note_id?,placement?}; update_mark {mark_id,kind?,text?,value?,placement?}; move_mark {mark_id,note_id?,end_note_id?}; delete_mark {mark_id}.\nwhole score: transpose_score {interval}; set_meter {beats,beat_type,pickup_quarters?}; scale_note_values {factor:2|0.5}; rewrite_rhythm {bpm,beats,beat_type} (steady recording); rebeat {bpm,beats,beat_type,downbeat seconds,swing? 0.5..0.75} (wrong tracked piano beat);\nrebar_pickup {quarters}; set_pickup {enabled} (marks a short first bar, moves no barline); pad_measure {part_id,measure}; repair_bindings {}; undo {}; redo {}.\nbars (every part; numbers as printed): insert_measures {before \"bar\"|null=at end,count? 1..16}; delete_measures {from,to?}."New value: +"One object naming its action. Actions and their fields (? optional):\nnotes: set_pitch {note_ids,pitch,spelling?}; transpose {note_ids,semitones}; set_duration {note_ids,quarters}; move_notes {note_ids,quarters ±} (each: one note, tied pair or chord);\ndelete_notes {note_ids}; set_staff {note_ids|select,staff 1 upper|2 lower,clef? if asked} (hands); add_chord_tone {note_id,pitch,spelling?,velocity?}; fill_rest {rest_id,pitch,quarters?,velocity?,spelling?}.\nsound: set_velocity {note_ids,velocity 1..127}; set_dynamic {note_id,mark ppp..fff|sf|sfz|fp,velocity?}; set_timbre {part_id,program,part_name?}.\nwriting: set_key {part_id?,fifths,mode} (respells the notes the key holds; pitches stay); set_clef {part_id?,staff?,clef,measures?} (no measures: the whole staff; \"4\": from bar 4 to the staff's next clef change; \"4-6\": those bars only); set_harmony_position {part_id,measure,index from 0,quarters from bar start};\nengraving {title,composer,transcriber,labels:compact|full|none}; rebeam {}; reengrave {key?,program?,staff_split?,voices?,grid?,line?:single}.\nTAB: set_tablature {part_id?,view off|both|tab,tuning?,capo?,strings?}; set_string {note_ids,string|null}; set_fret {note_ids,string,fret}.\nmarks (saved score marks; kind words|rehearsal|metronome|dynamic|hairpin|fermata): add_mark {kind,note_id|part_id+measure+quarters,text?,value?,end_note_id?,placement?}; update_mark {mark_id,kind?,text?,value?,placement?}; move_mark {mark_id,note_id?,end_note_id?}; delete_mark {mark_id}.\nwhole score: transpose_score {interval}; set_meter {beats,beat_type,pickup_quarters?}; scale_note_values {factor:2|0.5}; rewrite_rhythm {bpm,beats,beat_type,downbeat? second a bar starts: bars start there} (steady recording); rebeat {bpm,beats,beat_type,downbeat seconds,swing? 0.5..0.75} (wrong tracked piano beat);\nrebar_pickup {quarters}; set_pickup {enabled} (marks a short first bar, moves no barline); pad_measure {part_id,measure}; repair_bindings {}; undo {}; redo {}.\nbars (every part; numbers as printed): insert_measures {before \"bar\"|null=at end,count? 1..16}; delete_measures {from,to?}."
  9. Changed1 schema field changed
    • changedInput schema / properties / operation / description
      Previous value: -"One object naming its action. Actions and their fields (? optional):\nnotes: set_pitch {note_ids,pitch,spelling?}; transpose {note_ids,semitones}; set_duration {note_ids,quarters};\ndelete_notes {note_ids}; set_staff {note_ids|select,staff 1 upper|2 lower,clef? if asked} (hands); add_chord_tone {note_id,pitch,spelling?,velocity?}; fill_rest {rest_id,pitch,quarters?,velocity?,spelling?}.\nsound: set_velocity {note_ids,velocity 1..127}; set_dynamic {note_id,mark ppp..fff|sf|sfz|fp,velocity?}; set_timbre {part_id,program,part_name?}.\nwriting: set_key {part_id?,fifths,mode}; set_clef {part_id?,staff?,clef}; set_harmony_position {part_id,measure,index from 0,quarters from bar start};\nengraving {title,composer,transcriber,labels:compact|full|none}; rebeam {}; reengrave {key?,program?,staff_split?,voices?,grid?,line?:single}.\nTAB: set_tablature {part_id?,view off|both|tab,tuning?,capo?,strings?}; set_string {note_ids,string|null}; set_fret {note_ids,string,fret}.\nmarks (saved score marks; kind words|rehearsal|metronome|dynamic|hairpin|fermata): add_mark {kind,note_id|part_id+measure+quarters,text?,value?,end_note_id?,placement?}; update_mark {mark_id,kind?,text?,value?,placement?}; move_mark {mark_id,note_id?,end_note_id?}; delete_mark {mark_id}.\nwhole score: transpose_score {interval}; set_meter {beats,beat_type,pickup_quarters?}; scale_note_values {factor:2|0.5}; rewrite_rhythm {bpm,beats,beat_type} (steady recording); rebeat {bpm,beats,beat_type,downbeat seconds,swing? 0.5..0.75} (wrong tracked piano beat);\nrebar_pickup {quarters}; set_pickup {enabled}; pad_measure {part_id,measure}; repair_bindings {}; undo {}; redo {}."New value: +"One object naming its action. Actions and their fields (? optional):\nnotes: set_pitch {note_ids,pitch,spelling?}; transpose {note_ids,semitones}; set_duration {note_ids,quarters}; move_notes {note_ids,quarters ±};\ndelete_notes {note_ids}; set_staff {note_ids|select,staff 1 upper|2 lower,clef? if asked} (hands); add_chord_tone {note_id,pitch,spelling?,velocity?}; fill_rest {rest_id,pitch,quarters?,velocity?,spelling?}.\nsound: set_velocity {note_ids,velocity 1..127}; set_dynamic {note_id,mark ppp..fff|sf|sfz|fp,velocity?}; set_timbre {part_id,program,part_name?}.\nwriting: set_key {part_id?,fifths,mode}; set_clef {part_id?,staff?,clef,measures? \"4-6\" for those bars only}; set_harmony_position {part_id,measure,index from 0,quarters from bar start};\nengraving {title,composer,transcriber,labels:compact|full|none}; rebeam {}; reengrave {key?,program?,staff_split?,voices?,grid?,line?:single}.\nTAB: set_tablature {part_id?,view off|both|tab,tuning?,capo?,strings?}; set_string {note_ids,string|null}; set_fret {note_ids,string,fret}.\nmarks (saved score marks; kind words|rehearsal|metronome|dynamic|hairpin|fermata): add_mark {kind,note_id|part_id+measure+quarters,text?,value?,end_note_id?,placement?}; update_mark {mark_id,kind?,text?,value?,placement?}; move_mark {mark_id,note_id?,end_note_id?}; delete_mark {mark_id}.\nwhole score: transpose_score {interval}; set_meter {beats,beat_type,pickup_quarters?}; scale_note_values {factor:2|0.5}; rewrite_rhythm {bpm,beats,beat_type} (steady recording); rebeat {bpm,beats,beat_type,downbeat seconds,swing? 0.5..0.75} (wrong tracked piano beat);\nrebar_pickup {quarters}; set_pickup {enabled} (marks a short first bar, moves no barline); pad_measure {part_id,measure}; repair_bindings {}; undo {}; redo {}.\nbars (every part; numbers as printed): insert_measures {before \"bar\"|null=at end,count? 1..16}; delete_measures {from,to?}."
  10. First observed

TDQS

A3.8/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing rejection behavior (stale revisions, invalid note/mark IDs), the side effect that re-engraving and whole-score rhythm operations replace note IDs, and the absence of credit cost. These are exactly the non-obvious traits an agent needs before invoking a destructive 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?

Four tight sentences, front-loaded with the core action, followed by failure modes, side effects, and cost. The inline JSON example is slightly heavy but earns its place as an unambiguous invocation shape.

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

Completeness3/5

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

Annotations cover the safety profile and the operation schema covers action semantics, but the description says nothing about the return value or, more importantly, how the caller gets the next revision after a successful edit — a real gap for a revision-guarded mutation with no output 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?

Only 33% schema coverage, and the description's contribution is limited to 'exact saved revision' and a single example payload. It does not explain score_id format or, critically, how the agent obtains the current revision before calling — leaving revision semantics half-specified.

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 ('Apply') and resource ('one reversible musical operation ... to a score') plus the distinctive constraint 'at its exact saved revision'. The purpose is unambiguous, but it never contrasts itself with the nearby siblings that an agent will actually be choosing between (preview_score_edit, save_score_edits, revise_score, annotate_score).

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?

Usage is implied by the editing framing and the revision precondition, and the 'reversible' phrasing hints at the preview/apply workflow. However, there is no explicit when-to-use or when-not guidance and no named alternative, which matters given siblings like preview_score_edit and save_score_edits that occupy adjacent territory.

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