Skip to main content
Glama
romanstark

Dorico Maestro

add_notes

Insert a single note or chord at the caret in Dorico, then exit note-input mode cleanly. Use for one insertion; for sequences, use write_score.

Instructions

Input notes at the caret, then leave note-input mode cleanly.

ONE insertion at the current caret. For a SEQUENCE of notes or chords over
time, use ``write_score`` / ``render_to_dorico`` with a ScoreSpec (a chord is
one event with >=2 pitches). Repeated ``add_notes`` calls do NOT chain: each
re-enters note input at the same spot, so successive chords stack on one beat.

Returns:
    Result dictionary with the notes and duration entered, the note input mode
    they landed in, whether an undo is available, and displaces_existing.

Note:
    Read displaces_existing before treating this as an addition. Dorico has an
    overwrite note input mode, and in it these notes replace the music already
    at the caret instead of pushing it along. The mode belongs to the
    application rather than to this call, so it is reported back and not chosen
    here. get_status reads it beforehand.

    Uses :class:`NoteInputSession`, so note input is always exited even on
    error. Success indicates command acceptance (kOK). Verify note placement
    via get_status, playback, or score inspection. Do not read can_undo as
    that verification: entering note input alone already sets it.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
notesYesPitches in scientific notation, e.g. ['C4', 'E4', 'G4']: a letter, an optional # or b, then the octave number, where C4 is middle C.
as_chordNoTrue stacks the pitches into one chord on a single beat. False enters them one after another, each of the given duration.
durationNoRhythmic duration, one of: whole, half, quarter, eighth, sixteenth, 32nd, 64th. Case-insensitive.quarter

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changedv0.1.2
    • addedInput schema / properties / as_chord / description
      Added value: +"True stacks the pitches into one chord on a single beat. False enters them one after another, each of the given duration."
    • addedInput schema / properties / duration / description
      Added value: +"Rhythmic duration, one of: whole, half, quarter, eighth, sixteenth, 32nd, 64th. Case-insensitive."
    • addedInput schema / properties / notes / description
      Added value: +"Pitches in scientific notation, e.g. ['C4', 'E4', 'G4']: a letter, an optional # or b, then the octave number, where C4 is middle C."
  2. First observedv0.1.0

TDQS

A4.6/5.0
Behavior5/5

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

The description discloses rich behavioral detail beyond the minimal annotations: note input is always exited even on error, success only means command acceptance (kOK), can_undo is not verification, and Dorico's overwrite mode can replace existing music rather than push it along. These are exactly the kinds of caveats that prevent an agent from misinterpreting results.

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?

The description is front-loaded with the core action and then organized into Returns and Note sections. It is longer than average, but nearly every sentence adds essential caveats or guidance; only minor redundancy exists around verification, so it earns a strong score rather than a perfect one.

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 tool with a small schema, providing output schema, and meaningful behavioral caveats, the description covers everything an agent needs: what the tool does, what repeated calls do, how overwrite mode affects results, how to verify placement, and what success does and does not mean. It also anticipates the can_undo misconception.

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 description coverage is 100%, so the schema already fully documents notes, as_chord, and duration with examples, defaults, and allowed values. The description adds little parameter-specific meaning beyond what the schema provides, so the baseline of 3 is appropriate.

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 opening sentence states a specific verb and resource: 'Input notes at the caret, then leave note-input mode cleanly.' It clearly distinguishes itself from sequence-oriented siblings by explicitly directing users to write_score / render_to_dorico for a sequence of notes or chords, and clarifies that repeated add_notes calls do not chain.

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?

The description gives explicit when-to-use guidance: use for a single insertion at the caret, use write_score / render_to_dorico for sequences over time. It also warns that repeated calls stack on the same beat, and provides practical direction to read displaces_existing and get_status beforehand, which is far beyond a vague 'use when adding notes.'

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