Skip to main content
Glama
MuseScore MCP Server

MuseScore MCP Server

by ghchen99

Add Text

add_text

Add free text at a bar or beat in MuseScore with custom size, style, color, and staff placement for cues or expressions.

Instructions

Add free text at a bar (optionally at a beat) with its own look: size, italic/bold, color, above or below the staff. Defaults give a small, italic, light-grey cue, e.g. the first words of a section's lyrics as a reminder for the player. kind='expression' makes it an expression text. Use the text the user provides. Remove with Ctrl+Z, or select the texts in MuseScore and delete them.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "measure": "<measure>",
      "text": "<text>"
    },
    "name": "add_text"
  }
}

Input Schema

NameRequiredDescriptionDefault
beatNoBeat within the bar (1-based, fractions allowed). Defaults to the start of the bar.
boldNoBold text
kindNoStaff text, or expression textstaff
sizeNoFont size in points
textYesThe text to add
colorNoText color as "#rrggbb" (default light grey)#9e9e9e
staffNoStaff (0-based)
italicNoItalic text
measureYesBar position (1-based)
placementNoAbove or below the staffabove

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations supplied, the description carries the full burden and does disclose useful behavior: it is a mutation that creates a text element, it can be undone with Ctrl+Z or by selecting and deleting in MuseScore, and the default look is small, italic, light grey. It does not state prerequisites (open score, cursor position), what the call returns, or what happens on invalid measure/beat values, which is a notable gap for a 10-parameter write tool.

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 verb and resource are front-loaded in the first clause, followed by the attribute list, a defaults example, and a removal note. It is well organized with little waste; the lyric-reminder example is slightly discursive but serves as concrete usage illustration.

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?

For a 10-parameter mutation tool with no annotations and no output schema, the description covers purpose, defaults, and undo but omits prerequisites, return/response behavior, and error conditions. It is adequate to call the tool on a happy path but leaves an agent guessing about state requirements and failure modes.

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 baseline is 3, and the description adds only modest meaning on top: it conveys the composite default appearance (small, italic, light-grey) and clarifies that kind='expression' produces expression text. Most parameters — beat, staff, placement, size — are already fully explained in the schema, and the description adds no format or interaction detail beyond that.

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?

The description states a specific verb and resource ('Add free text at a bar, optionally at a beat') and enumerates the visual attributes it controls (size, italic/bold, color, placement). It implicitly separates itself from add_lyrics by describing the text as a player-facing cue rather than lyric syllables, but it never names a sibling or explicitly contrasts behaviors.

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 rather than stated: 'Use the text the user provides' tells the agent not to paraphrase, and 'kind=expression makes it an expression text' hints at a variant, but there is no when-to-use/when-not guidance or routing to alternatives such as add_lyrics or add_rehearsal_mark. The Ctrl+Z/delete note gives a removal path but no selection criteria.

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