Skip to main content
Glama

LemonStudioMCP

An MCP server that lets Claude (or any MCP client) make music in Lemon Studio, the open-source FL Studio-style DAW written in Rust.

How it works

Lemon Studio has a built-in control plane: started with --control <socket>, it listens on a local Unix socket and answers JSON-RPC 2.0 requests, one per line. This server is an MCP front end for that socket:

Claude ──MCP──▶ lemon-studio-mcp ──JSON-RPC over /tmp/lemon.sock──▶ Lemon Studio
  • Reading. get_project_state returns the whole project in one call: tempo, channels, mixer tracks, patterns and the playlist. Everything has a stable id that stays the same when other things are added, moved or deleted, and every other tool refers to things by those ids.

  • Editing. Each edit tool sends one apply request of one or more commands (set_notes, add_channel, add_clip, …). Lemon Studio applies the batch all or nothing and records it as one undo step named after the client ("Claude: Write notes"), so you can undo it with Cmd+Z like any edit of your own.

  • Units. Tools take positions and lengths in beats and convert them to ticks with the project's ppq. Notes are MIDI numbers (60 = middle C).

  • Playing. play, pause and stop drive the transport the same way the toolbar buttons do.

  • Changes from the app. get_changes lists what changed since a given point, including your own edits in the window, so Claude can catch up on what you did.

  • Errors. When Lemon Studio refuses a command ("no pattern 99999"), the message comes back to Claude as a tool error.

Nothing needs installing inside the app: the control plane is part of Lemon Studio.

Related MCP server: Ableton Live MCP

Requirements

  • macOS (Linux works too), Python 3.10+

  • Lemon Studio built from source, with the play / pause / stop / transport control methods. Until they are upstream, build it from the control-plane-transport branch of calvinw/Lemon-Studio:

    git clone -b control-plane-transport https://github.com/calvinw/Lemon-Studio.git
    cd Lemon-Studio && cargo build -p os-app --release

    Upstream Lemon Studio works too, without the transport and view tools (play, pause, stop, transport_status, select).

Install

cd LemonStudioMCP
./install.sh /path/to/Lemon-Studio/target/release/lemonstudio

The installer creates .venv, installs the package, and registers the server with Claude Code (claude mcp add) with LEMON_STUDIO_BIN pointing at the app so Claude can start it.

Use

Start Lemon Studio listening on the socket:

lemonstudio --control /tmp/lemon.sock            # with its window
lemonstudio --serve /tmp/lemon.sock song.flp     # no window

or just ask Claude: the lemon_launch tool starts it. Then, for example: "Make a 4-bar lo-fi beat at 85 BPM with a Lemon Trio bass line and play it."

Claude.ai (remote connector)

Run the server over HTTP and expose it through a tunnel:

.venv/bin/python -m lemon_studio_mcp --transport http --port 8000 --host 0.0.0.0
cloudflared tunnel --url http://localhost:8000

Add https://<random>.trycloudflare.com/mcp as a custom connector at claude.ai/customize/connectors. Only the MCP server is exposed; the app's socket stays local. The tunnel URL gives anyone who has it control of the app, so stop the tunnel when you are done.

Settings (environment)

Variable

Default

Meaning

LEMON_SOCKET

/tmp/lemon.sock

The app's control socket

LEMON_PORT, LEMON_TOKEN

Use a local TCP port instead (the app prints the token)

LEMON_STUDIO_BIN

lemonstudio on PATH

The app, for lemon_launch and render_project

LEMON_CLIENT_NAME

Claude

The name on undo steps

To have every change confirmed in the app, start Lemon Studio with --control-level propose and ask Claude to use propose_commands.

Tools

Area

Tools

Connection

lemon_launch, lemon_status

Reading

get_project_state, get_notes, list_plugins, get_plugin_params, get_history, get_changes

Notes

write_notes (replace or add), clear_notes

Channels

add_channel, set_channel, delete_channel, load_sample

Patterns, playlist

add_pattern, set_pattern, delete_pattern, place_pattern, set_clip, delete_clip

Mixer, plugins

add_mixer_track, set_mixer_track, route_mixer, set_eq, add_effect, set_effect, remove_effect, set_plugin_param

Project

set_tempo, set_time_signature, set_project_settings, save_project, render_project

Transport, view

play, pause, stop, transport_status, select (show a pattern and channel in the piano roll)

Undo, raw

undo, redo, apply_commands, propose_commands

Positions and lengths are in beats by default (unit="ticks" for raw ticks). Note keys are MIDI numbers, 60 = middle C.

Lemon Studio changes

The control plane had no transport control and no way to change what the window shows. Five methods were added to Lemon Studio in the control-plane-transport branch of the fork (crates/os-app/src/control/rpc.rs, with tests, documented in docs/control-plane.md). They are not yet proposed upstream.

Method

Level

transport

read

state (playing / paused / stopped), mode, current pattern, position, ppq, bpm

play

edit

mode, pattern, from optional; as the Play button

pause, stop

edit

as the Pause and Stop buttons

select

edit

pattern, channel, piano_roll optional; makes the pattern current, selects the channel, opens the piano roll scrolled to its notes

Not yet

What Lemon Studio's control plane doesn't offer yet: automation clips, markers, presets, channel envelopes, note fields beyond key/velocity/pan, rendering the open project without saving it first, and pushed change events (the get_changes tool polls).

Found while using it:

  • No presets. Instrument sounds are picked by hand in each plugin's window.

Development

docs/DEVELOPMENT.md covers both repositories and the fork branch, the local clone setup, the Lemon Studio change in detail, how the server is built, known gaps, and next steps.

Tests

LEMON_STUDIO_BIN=/path/to/lemonstudio .venv/bin/pytest -v

They start Lemon Studio headless on a temporary socket and drive it through a real MCP client over stdio.

Available Tools

42 tools
add_channelA

Add a channel played by instrument plugin (a name from list_plugins, e.g. "Lemon Trio"), or a sampler with sample (an audio file path) loaded. mixer_track: a mixer track id to route it to. Returns its id.

NameRequiredDescriptionDefault
nameNo
pluginNo
sampleNo
mixer_trackNo

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description must carry the behavioral burden. It discloses that the tool creates a channel, supports plugin or sampler modes, routes to a mixer track, and returns an id, but it does not clarify side effects, whether plugin and sample are mutually exclusive, or error behavior.

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 two tight sentences with no filler. Purpose and key parameter meanings are front-loaded, and the return value is included efficiently.

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 mutation-style creation tool with no annotations, no output schema, and zero schema description coverage, the description covers the main operating modes and return value. It still leaves gaps around the name parameter, parameter exclusivity, and side-effect details.

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 0%, so the description must compensate. It adds meaning for plugin, sample, and mixer_track, but the name parameter is not described at all, and optionality or mutual exclusivity among plugin/sample is left implicit.

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: it adds a channel. It also clarifies the two creation modes, plugin-backed or sampler-backed, which separates it from unrelated siblings like delete_channel or set_channel, though it does not explicitly name the alternative tools.

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 gives useful usage context: plugin names come from list_plugins, samples are audio file paths, and mixer_track routes the channel. However, it does not explicitly say when to use add_channel versus set_channel, delete_channel, or load_sample, nor does it state exclusions or prerequisites.

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

add_effectA

Add effect plugin (a name from list_plugins) to mixer track track (an id), in slot 0..9 or the first free one. Returns the slot plugin's id (for get_plugin_params / set_plugin_param).

NameRequiredDescriptionDefault
slotNo
trackYes
pluginYes

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden and does add value: it discloses the slot fallback behavior and that the return value is the slot plugin's id for get_plugin_params/set_plugin_param. However, it says nothing about what happens if the requested slot is already occupied (overwrite? error?), whether the effect becomes active immediately, or any failure modes for a mutation tool.

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?

Two compact sentences, zero filler, with the primary action and slot rule front-loaded and the return-value note second. Every clause carries information.

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?

For a 3-parameter mutation with no annotations and no output schema, the description covers action, parameter sourcing, slot defaulting, and return value plus follow-up tools. Only error/overwrite semantics on an occupied slot are missing.

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

Parameters4/5

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

Schema coverage is 0%, so the description must compensate, and it does explain all three parameters: `plugin` (name from list_plugins), `track` (an id), and `slot` (0..9 or first free, implicitly optional). It doesn't say where a valid track id comes from (e.g., add_mixer_track), which is the one remaining gap.

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?

Specific verb ('add') plus resource ('effect plugin') plus target ('mixer track'), with the slot placement rule stated inline. An agent can tell this apart from remove_effect/set_effect by the additive wording and the explicit 'slot 0..9 or the first free one' scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a real prerequisite: `plugin` must be 'a name from list_plugins', which tells the agent to call that sibling first. It also explains slot defaulting. It stops short of naming when NOT to use it (e.g., versus set_effect or remove_effect), so no explicit exclusions.

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

add_mixer_trackB

Add a mixer insert (at insert number at, else after the last). Returns its id.

NameRequiredDescriptionDefault
atNo

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It does disclose the mutation, the default append behavior, and the return value, but it does not say whether existing inserts are shifted, whether the operation is undoable, or what prerequisites (e.g., selected channel) are required.

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?

Two tight clauses with no wasted words. The action is front-loaded and the placement rule and return value follow immediately.

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?

For a simple one-parameter creation tool with no output schema, the description supplies enough to call it correctly: optional insertion index, default append behavior, and the returned id. Remaining gaps around side effects and prerequisites are minor given the tool's low complexity.

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 0%, so the description must compensate for the lone `at` parameter. It adds useful meaning by identifying `at` as the insert number and stating that omission appends after the last insert. However, it leaves indexing base and valid range unspecified.

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 and resource: 'Add a mixer insert.' The parenthetical placement rule and return value make the operation concrete. It does not explicitly distinguish itself from the sibling set_mixer_track, but the add/set contrast is inferable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains where the insert goes but gives no guidance on when to use this tool versus set_mixer_track or route_mixer. There is no explicit alternative or exclusion, so an agent must infer usage from the tool name alone.

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

add_patternC

Add a pattern. Returns its id.

NameRequiredDescriptionDefault
nameNo
colorNo

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions that the tool returns an id, which is useful, but it does not describe side effects, whether the pattern is empty, how optional fields are handled, or any permission or state implications.

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 two short sentences with no filler, and the main action is front-loaded. It is concise, though the brevity contributes to missing semantics rather than maximizing helpfulness.

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?

For a mutation tool with no annotations, no output schema, and 0% parameter description coverage, the description is too sparse. It says what happens and that an id is returned, but it leaves key input and behavioral details unexplained.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not mention the name or color parameters at all. It does not explain whether name is auto-generated or what color controls, so the two optional parameters remain undocumented beyond their bare schema titles.

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 clear verb and resource: 'Add a pattern.' An agent can understand the basic operation without opening the schema. However, it does not distinguish this from sibling tools such as set_pattern, delete_pattern, or place_pattern.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit guidance about when to use this tool versus alternatives. It implies creation through the verb 'Add,' but it never mentions set_pattern, delete_pattern, or place_pattern as related alternatives.

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

apply_commandsA

Run raw control-plane commands (Lemon Studio docs/control-plane.md) as ONE undo step, all or nothing. Positions and lengths here are raw ticks. Each command is {"op": ..., fields...}, e.g. {"op": "add_channel", "name": "Bass", "plugin": "Lemon Trio"}. Returns each command's result.

NameRequiredDescriptionDefault
nameNoEdit
commandsYes

TDQS

A3.5/5.0
Behavior4/5

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

With no annotations, the description bears the full burden and does disclose key behavior: commands run as one undo step, all-or-nothing semantics, raw tick units, command object shape with an example, and per-command results. It does not cover permissions, validation rules, or failure details, but the core operational behavior is well surfaced.

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 three tight sentences: purpose and atomicity first, then tick semantics, then command shape and return behavior. Every sentence adds useful information and there is no filler.

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 complex raw-command executor with no annotations, no output schema, and no schema descriptions, the description covers purpose, atomicity, an example command, tick units, docs reference, and return behavior. However, it leaves out the valid command vocabulary, the name parameter, and error/failure semantics, so it is only minimally complete.

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 0%, so the description must compensate. It explains the commands array element format and tick units with a useful example, but it does not explain the name parameter at all or enumerate valid op values and fields.

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 action and resource: running raw control-plane commands as a single all-or-nothing undo step. It conveys the batch/atomic nature that separates it from granular siblings, though it does not explicitly name an alternative such as propose_commands or add_channel.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly say when to use this tool instead of the many granular command siblings or propose_commands. The atomic batch behavior implies a use case, but no prerequisites, exclusions, or alternative-selection guidance are given.

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

clear_notesC

Remove the notes of channel from pattern pattern (or all of its notes when channel is None).

NameRequiredDescriptionDefault
channelNo
patternYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden. "Remove" implies destruction, but it says nothing about irreversibility, undo support, or whether the cleared notes can be recovered — the None case is clarified, but the risk profile of the mutation is not.

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?

One sentence, front-loaded with the action and constraint, with zero filler. Slightly too terse for the risk involved, but nothing is wasted.

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?

No annotations and no output schema, so the description is the only behavioral source for a destructive mutation. It omits what happens on an invalid pattern, whether the operation is undoable, and what the call reports back — gaps an agent would need before calling it on a real project.

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 0%, so the description must compensate. It does explain that channel is optional and that None means all channels' notes, which is a genuine semantic addition, but it never says what 'pattern' identifies beyond the name.

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 and resource ("Remove the notes") scoped to a channel within a pattern, which is concrete enough for an agent to understand the effect. It does not differentiate itself from the obvious sibling write_notes, so an agent still has to infer the boundary between clearing and writing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance and no alternatives named, despite write_notes and get_notes being adjacent siblings doing related things. The only guidance is the parenthetical about channel=None, which is a parameter semantic, not a usage rule.

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

delete_channelB

Delete channel channel (an id), with its notes, clips and automation.

NameRequiredDescriptionDefault
channelYes

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations at all, the description carries the full behavioral burden: it does disclose the cascade (notes, clips, automation are destroyed), which is genuinely useful. But it says nothing about irreversibility, whether the deletion can be undone, required auth/state, or what happens if the id doesn't exist — significant gaps for a destructive, non-read-only operation.

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?

One sentence, front-loaded with the verb and resource, with the cascade detail appended where it belongs. Nothing redundant or padded.

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?

The cascade disclosure covers the most important non-obvious fact for a 1-parameter destructive tool. But with no annotations and no output schema, the description leaves irreversibility, failure modes, and confirmation expectations entirely unstated — an agent could invoke this irretrievably without knowing the risk profile.

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 0% with a bare integer field, so the description must compensate; it clarifies that `channel` is an id. That is a marginal but real addition. It does not say whether the id must exist, whether it's a track index vs. a project-level channel id, or what an invalid value yields.

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?

Uses a specific verb (Delete) with a specific resource (channel) and names the requiring identifier. It also enumerates the cascaded contents (notes, clips, automation), which no sibling tool does. It is unambiguous next to delete_clip or delete_pattern, though it doesn't explicitly contrast with 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 destructive verb plus the enumeration of collateral deletions implies when this is appropriate (removing a channel entirely rather than clearing or muting it). However, there is no statement of prerequisites, no confirmation/irreversibility warning, and no pointer to alternatives such as clear_notes for narrower cleanup.

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

delete_clipC

Remove playlist clip clip (an id).

NameRequiredDescriptionDefault
clipYes

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a destructive removal but does not state whether deletion is permanent, what happens if the clip does not exist, whether authorization is required, or what the response contains.

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

Conciseness3/5

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

The description is a single short sentence with no wasted words and the resource is front-loaded. However, the extreme terseness borders on under-specification rather than efficient communication.

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?

For a destructive mutation tool with no annotations, no output schema, and an undocumented required parameter, the definition is substantially incomplete. It lacks the behavioral and operational context an agent needs to invoke it safely.

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 coverage is 0% for the single required parameter. The description only clarifies that 'clip' is an id, which is minimal help; it does not explain where to obtain the id or its format, so it only slightly compensates for the schema gap.

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 ('Remove') and resource ('playlist clip'), and identifies the parameter as an id. It is distinguishable from siblings like set_clip or delete_pattern, though it does not explicitly name an alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides no guidance on when to use this tool versus alternatives such as set_clip, nor any preconditions or context. The agent must infer usage entirely from the name and description.

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

delete_patternB

Delete pattern pattern (an id) and its playlist clips.

NameRequiredDescriptionDefault
patternYes

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the safety burden, and it does add one genuinely useful trait: the deletion cascades to playlist clips. However it says nothing about irreversibility, undo availability, required permissions, or what happens if the id is invalid or the pattern is in use by clips.

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?

A single front-loaded sentence with zero filler; the destructive scope appears immediately after the verb.

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?

For a destructive mutation with no annotations and no output schema, the definition is thin: no irreversibility/recovery note, no guidance on obtaining the id, and no failure behavior. The cascade note helps but doesn't cover what an agent needs to invoke this safely.

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 0%, but the description compensates minimally by clarifying that `pattern` is an id rather than a name — meaningful for a bare integer field. It still doesn't say where valid ids come from or what an invalid id does.

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 and resource (delete pattern) and adds the cascade scope ('and its playlist clips'), so an agent knows exactly what is removed. It does not explicitly contrast with delete_clip or delete_channel, but the resource noun is distinct enough to disambiguate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No statement of when to use this versus alternatives (e.g., delete_clip for playlist clips, or undo for reversal), no preconditions, no warning that the pattern id must first be obtained from project state. Usage is only inferable from the name.

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

get_changesA

What changed after event number since (0: all kept), including the user's own edits in the app, and last, the newest event number to pass next time.

NameRequiredDescriptionDefault
sinceNo

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations provided, the description carries the full behavioral burden. It usefully discloses that changes include the user's own edits and that a last event number is returned, but it omits ordering, whether all change types are included, and confirmation that this is a read-only operation.

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 a single compact sentence that front-loads the scope and cursor behavior. The phrasing around 'and `last`' is slightly fragmented, but there is no wasted text.

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 one-parameter read tool with no output schema, the description covers the key cursor semantics and parameter meaning. It still leaves the exact shape of the returned changes list and the choice versus get_history implicit, which is a meaningful gap for agent selection.

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

Parameters4/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 explain the sole parameter. It does so by defining since as an event number, noting that 0 means all kept, and connecting it to the returned last value for the next call. It could be clearer about inclusivity and the source of event numbers, so it is not a 5.

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 makes clear that this retrieves changes after an event number and returns a last cursor, so the action and resource are understandable. However, it does not explicitly name a verb or differentiate itself from the sibling get_history tool, so it falls short of a 5.

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?

It implies an incremental polling usage pattern: use since=0 for all kept changes and pass the returned last value next time. It does not state when to choose get_changes over get_history or any exclusions, leaving the comparison to inference.

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

get_historyA

The undo history: each step's name and whether it is undone.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It discloses the returned content (each step's name and undone status) and implicitly indicates a read-only history query, but it does not mention side effects, permissions, ordering, or whether redoable steps are included.

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?

A single compact sentence that front-loads the resource and concisely describes the returned fields. Every word earns its place.

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?

For a zero-parameter read tool with no output schema, the description sufficiently explains what is returned. Minor gaps remain around ordering or whether only undone steps are listed, but the core return shape is clear.

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

Parameters4/5

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

The tool has zero parameters, so parameter semantics baseline is 4. No additional parameter information is needed or expected.

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 identifies the resource as the undo history and specifies the content of each step (name and undone status). It is clearly distinguishable from sibling action tools like undo and redo, though it does not use an explicit verb such as 'retrieves' or 'lists'.

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: an agent can infer this tool is for inspecting the undo history. However, it provides no explicit when-to-use guidance, no exclusions, and does not name alternatives like get_changes or undo/redo for acting on history.

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

get_notesC

The notes of pattern pattern (an id): channel id, position, length, key, velocity, pan.

NameRequiredDescriptionDefault
unitNobeats
patternYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It lists the note fields returned, but it does not state that this is a read-only operation, does not mention side effects, error behavior, or whether missing patterns return empty 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 a single compact sentence with a colon list of returned fields. It is front-loaded on the core object, though the phrasing is slightly terse and cryptic.

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?

For a simple two-parameter retrieval tool with no annotations and no output schema, the description is only partially complete. It lists return fields but omits the unit parameter semantics, result format details, and any behavioral context.

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?

The `pattern` parameter is clarified as an id, which adds some meaning. However, schema coverage is 0%, and the `unit` parameter with its beats/ticks enum and 'beats' default is completely unmentioned, leaving a significant gap.

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 identifies the resource precisely: notes belonging to a specific pattern id, and it lists the returned fields. It is not verb-led and does not explicitly contrast itself with write_notes or clear_notes, but the read-oriented meaning is still clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to use this versus write_notes, clear_notes, or other read tools. The retrieval intent is only implied by the name and the field list.

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

get_plugin_paramsC

The parameters (id, name, value 0..1, value text, ...) of the plugin playing channel id or effect slot id owner.

NameRequiredDescriptionDefault
ownerYes

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It partially discloses the return shape ('id, name, value 0..1, value text, ...') and clarifies that `owner` can be a channel or effect slot, but it does not confirm read-only behavior, error handling, or whether the call has side effects.

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

Conciseness3/5

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

The description is short and mostly front-loaded, but it is a sentence fragment with an ellipsis that signals an incomplete enumeration. It avoids waste but reads as under-specified rather than polished.

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?

For a tool with no annotations, no output schema, and 0% schema description coverage, the description is too thin. It does not explain how to identify a valid `owner`, whether the operation is read-only, or the full structure of the returned parameters.

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 0%, so the description must compensate. It does clarify that `owner` refers to a channel id or effect slot id, which adds real meaning beyond the bare integer schema, but it does not explain ID formats or how to obtain valid IDs.

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 identifies the resource clearly: the parameters of the plugin associated with a channel or effect slot `owner`. It lacks an explicit verb and does not directly distinguish itself from siblings like `list_plugins` or `set_plugin_param`, but an agent can infer it is a retrieval tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus `list_plugins`, `set_plugin_param`, or other plugin-related siblings. The only contextual hint is that `owner` may be a channel id or effect slot id, which is useful but not usage guidance.

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

get_project_stateA

The whole project: tempo, ppq, time signature, channels, mixer tracks (with effect slots and sends), patterns, the playlist's clips, the current pattern and song/pattern mode. Positions here are raw ticks.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description must carry the behavioral burden. It discloses the returned contents and notes that 'positions here are raw ticks,' which is valuable. However, it does not state that it is read-only, mention performance or size implications, or describe auth requirements.

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?

A single, front-loaded sentence that lists all relevant project components without waste. The parenthetical details for mixer tracks are efficient and informative.

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?

Given no output schema, the description does well to enumerate the main returned data. However, for a complex full-project snapshot, it could benefit from noting potential size, whether the state is live/current, or how nested structures are represented—but the core contents are covered.

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

Parameters4/5

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

The tool has zero parameters, so parameter semantics are not applicable. The baseline score of 4 is appropriate; the description does not need to explain any inputs.

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 clearly enumerates the resource contents: tempo, ppq, time signature, channels, mixer tracks, patterns, playlist clips, current pattern, and mode. It distinguishes itself from siblings by being the full-project snapshot, though it lacks an explicit verb like 'returns' or 'retrieves'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives such as get_changes, transport_status, get_notes, or list_plugins. The implied usage is a full state read, but no explicit conditions or exclusions are given.

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

lemon_launchA

Start Lemon Studio listening on the control socket (does nothing if it already is).

project: an .flp file to open. headless: run with no window (--serve) instead of the app with its window.

NameRequiredDescriptionDefault
projectNo
headlessNo

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description carries the full behavioral burden. It usefully discloses idempotence and explains that headless mode runs with no window via --serve. It does not describe side effects such as opening the .flp file, permissions required, failure modes, or whether the call blocks until the socket is available.

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 two short sentences and front-loads the primary action. The parameter explanations are compact and each sentence adds useful information without repetition.

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?

For a two-parameter launch tool with no output schema and no annotations, the description covers the essential action, idempotence, and both parameters. It leaves some gaps around return behavior and interaction with status-checking siblings, but an agent has enough to invoke it correctly.

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

Parameters4/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 explain the two parameters, and it does: project is an .flp file to open, and headless runs with no window via --serve. It does not add path constraints or details about how project is handled in headless mode, but the core semantics are covered.

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 uses a specific verb and resource: start Lemon Studio listening on the control socket. It also clarifies idempotent behavior, so an agent can understand the core operation. However, it does not explicitly distinguish this launch tool from siblings such as lemon_status or get_project_state.

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 implies when to use the tool: when Lemon Studio needs to be started. The note that it does nothing if already listening helps avoid redundant calls. However, it does not explicitly name alternatives, such as checking lemon_status first or using get_project_state after launch.

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

lemon_statusB

Whether Lemon Studio is connected, the app's version, this client's permission level, and the transport.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full burden; it does disclose the returned information (connection, version, permission level, transport), which substitutes in part for the absent output schema and signals a non-mutating read. However it never explicitly states there are no side effects, nor whether the call fails or returns a partial result when Lemon Studio is not connected.

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?

A single compact sentence with no filler, front-loading the connection check first. It reads as a bare field list rather than a purpose statement, which is slightly harder to scan but wastes nothing.

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 no-param, no-output-schema tool the enumerated return fields are the key content and they are present, but the description leaves the relationship to transport_status unresolved and gives no hint about response shape or behavior on a disconnected app — the two things an agent would most want to know here.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4; there is nothing for the description to disambiguate and it adds no misleading param claims.

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 names the resource (Lemon Studio status) and enumerates exactly which status facets are returned: connection state, app version, permission level, transport. It is clear what it does, but it omits any verb ('Returns/Reports') and never distinguishes itself from the sibling transport_status, which by name appears to cover overlapping ground.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to call this versus transport_status, lemon_launch, or get_project_state. No preconditions, no 'call this first to verify connection before launching' hint — the agent must infer that this is the general handshake/diagnostic tool purely from the field list.

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

list_pluginsB

The instrument and effect plugin names that add_channel and add_effect take.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It does not state that the operation is read-only, has no side effects, or describe the return format, leaving an agent to infer behavior from the tool name alone.

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 a single short sentence fragment with no wasted words. It is front-loaded and easy to scan, though the fragmentary phrasing is slightly less structured than a complete sentence.

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 simple zero-parameter list tool, the description gives the essential idea that it returns plugin names usable by add_channel and add_effect. With no output schema, however, it does not explain the return shape or whether plugins are grouped by type, leaving a modest gap.

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

Parameters4/5

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

The tool takes zero parameters, so there are no parameter semantics to document. The baseline for a zero-parameter tool is 4, and the description does not need to compensate for schema gaps.

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 clearly identifies the resource as instrument and effect plugin names and distinguishes the tool from siblings by naming add_channel and add_effect as consumers. It lacks an explicit verb such as 'lists' or 'returns,' but the intended purpose is still easy to infer.

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?

By saying the names are what add_channel and add_effect take, it implies this tool should be used to discover valid plugin values before calling those tools. However, it does not explicitly state when to call it, whether there are alternatives, or any prerequisites.

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

load_sampleB

Load audio file path into sampler channel channel (an empty path clears it).

NameRequiredDescriptionDefault
pathYes
channelYes

TDQS

B3.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It does disclose one important side effect — an empty path clears the sample — which is genuine behavioral context an agent could not infer. However, it says nothing about what happens when the path is invalid or the file is missing, whether playback/state is interrupted, or what is returned, leaving key mutation semantics undisclosed.

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?

A single sentence with the action and both parameters front-loaded, plus a parenthetical for the one edge case. Nothing is wasted and nothing important is buried.

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?

With no annotations, no output schema, and zero schema description coverage, the description has to do all the work and only partially does. It covers the core operation and the clearing edge case but leaves error behavior, return value, and file-format expectations unstated — an agent can call it, but cannot predict 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 coverage is 0%, so the description must compensate for the bare `path` (string) and `channel` (integer) fields. It does map both parameters to meaning (audio file path, sampler channel index) and adds the non-obvious empty-string semantics for `path`. It still omits path format/relative-vs-absolute resolution and channel index range or base.

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?

Specific verb+resource: loads an audio file at `path` into a sampler channel. An agent can distinguish it from generic siblings like set_channel or add_channel because it names the sample-loading operation explicitly. It stops short of a 5 only because it never mentions the delete/clear tooling context or how it differs from other channel-mutating siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states what the tool does but gives no guidance on when to prefer it over set_channel or add_channel, nor any prerequisites (does the sample file need to exist? must the channel already be a sampler?). The only conditional hint is the parenthetical about the empty path, which is a behavior rather than usage routing.

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

pauseA

Pause playback in place (play resumes).

NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It does disclose that pause preserves position and that play resumes, but omits preconditions such as what happens if playback is already stopped or paused.

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 a single well-structured sentence with no wasted words. The essential behavior is front-loaded and the resume hint is compactly appended.

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?

For a zero-parameter transport tool with no output schema, the description covers the core action and the key resumption behavior. It could be slightly more complete by noting behavior when playback is already stopped or paused, but little is missing.

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

Parameters4/5

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

The tool has zero parameters, so there are no parameter semantics to explain. The baseline for a zero-parameter tool is 4.

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 verb (pause) and resource (playback) and distinguishes the action from stop/play via 'in place' and '(play resumes)'. It is immediately clear what the tool does.

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 parenthetical '(play resumes)' implies that play is the counterpart used to resume, but there is no explicit guidance on when not to use pause versus stop or transport_status. Usage is implied rather than fully specified.

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

place_patternB

Place pattern pattern (an id) in the playlist on track track (1-based) at position. Returns the clip id.

NameRequiredDescriptionDefault
unitNobeats
trackNo
lengthNo
patternYes
positionYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It usefully states the return value (clip id) and that `track` is 1-based, but says nothing about whether placing a pattern over an existing clip overwrites/truncates it, whether it is undoable, or what errors occur on invalid ids — critical for a mutation 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?

Two tight sentences with the placement semantics front-loaded and no filler. Brevity is not the problem here — omission is.

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?

Purpose, core params, and return value are covered in two sentences, which is close to what an agent needs for a simple placement call; the gaps are in usage routing rather than missing explanation.

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 0%, so the description must compensate. It does add real meaning for three of five params (`pattern` is an id, `track` is 1-based, `position` is a placement point), but `unit` (beats vs ticks enum) and `length` are entirely undocumented in both schema and description.

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?

Specific verb+resource: "Place pattern ... in the playlist on track ... at position", naming the resource, destination container, and the return value (clip id). It is distinguishable from siblings like add_pattern (create) and set_clip, though it never explicitly contrasts with set_clip.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No indication of when to use this versus set_clip, add_pattern, or apply_commands, and no prerequisites (does the pattern need to exist? does the track need to be an existing channel?). The agent must infer all routing decisions.

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

playB

Start playback, as the Play button (resumes when paused).

mode: "pattern" loops the current pattern, "song" plays the playlist (default: the app's PAT/SONG switch). pattern: make this pattern (an id) the current one. from_position: where to start.

NameRequiredDescriptionDefault
modeNo
unitNobeats
patternNo
from_positionNo

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description must carry the behavioral load. It does add real context: playback resumes from a paused state, and omitting mode falls back to the app's PAT/SONG switch. It does not state whether calling it while already playing is a no-op or an error, nor anything about permissions or return behavior.

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 core action is front-loaded in the first sentence, with per-parameter notes following in a compact block. Some phrasing is terse to the point of being clipped ('pattern: make this pattern (an id) the current one'), but there is no padding.

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 four-parameter transport tool with no annotations and no output schema, the definition covers the main semantics but leaves the unit parameter and the already-playing case undocumented. It is adequate to invoke correctly in common cases, but not complete.

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 0%, so the description is the only documentation. It explains mode (pattern loops the current pattern, song plays the playlist) and pattern (makes that pattern current) and loosely glosses from_position as 'where to start'. The `unit` parameter (beats/ticks) is never mentioned, leaving a genuine ambiguity about how from_position is interpreted.

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 and effect — 'Start playback, as the Play button' — plus the resume-when-paused behavior, which distinguishes it from pause/stop siblings in the tool list. It stops short of explicitly naming those siblings, but an agent can identify the operation without ambiguity.

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 'as the Play button' framing implies when to use it, and 'resumes when paused' hints at the state it applies to. There is no explicit when-not guidance, no mention of what happens if playback is already running, and no routing to pause/stop alternatives.

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

propose_commandsB

Like apply_commands, but Lemon Studio asks the user to Apply or Discard. Returns the proposal number and what it would change.

NameRequiredDescriptionDefault
nameNoProposal
commandsYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully discloses that execution is deferred to a human Apply/Discard gate and reports what the call returns (proposal number plus a change preview), which is the key behavioral trait. But it omits what happens to a pending proposal if the user never responds, whether proposals expire, and whether the commands are validated at proposal time.

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?

Two sentences, zero filler, and the differentiating behavior (the Apply/Discard gate) is front-loaded followed by the return contract. Nothing is redundant with the schema or title.

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 description does well to describe return content in the absence of an output schema, and it frames the human-gated workflow. However, for a tool whose only required parameter is an unbounded array of arbitrary objects, leaving that payload completely undocumented makes the definition insufficient to call the tool correctly without outside knowledge.

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 and does not: neither the `name` parameter (default 'Proposal') nor the shape of the `commands` array of free-form objects is explained. Since the entire tool depends on the command payload format, this is the most consequential gap in the definition.

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 operation — proposing commands that Lemon Studio surfaces to the user for Apply or Discard — and explicitly anchors it against the sibling apply_commands. An agent can distinguish the two without opening either schema. It stops short of 5 only because what a 'command' actually is remains unstated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Naming 'Like apply_commands, but...' gives a clear context signal: use this when user confirmation is wanted, use apply_commands for immediate execution. The condition is implied by the contrast rather than spelled out with an explicit 'use this instead when' clause, and there are no exclusions or prerequisites given.

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

redoB

Redo the last undone step.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It does not disclose whether this mutates project state irreversibly, whether it replays one step or a full stack, or what happens when there is nothing to redo (error vs. no-op) — all material for a state-changing history tool.

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?

A single six-word sentence with zero waste, front-loading the verb and the scope. Nothing redundant and no filler.

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 0-param, no-output-schema tool the description covers the core action, but with no annotations and no return schema it leaves the failure mode and the extent of the redo (single step vs. multiple) unexplained. Minimum viable, with a clear gap around empty-history behavior.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate; the empty schema is self-explanatory. Baseline 4 applies for a 0-param tool.

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 (redo) and the exact object affected (the last undone step), which unambiguously separates it from the sibling 'undo'. It does not explicitly reference the sibling set, but the verb alone makes the distinction obvious.

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 last undone step' implies the precondition that an undo must have occurred first, but this is left implicit. There is no explicit statement of when to use this versus 'undo' or 'get_history', and no mention of what to do when the redo stack is empty.

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

remove_effectB

Remove the effect in slot slot (0..9) of mixer track track (an id).

NameRequiredDescriptionDefault
slotYes
trackYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It signals a destructive mutation but says nothing about whether removing an effect shifts later slots, what occurs if the slot is already empty, whether the change is persisted or requires save_project, or whether it is reversible via undo.

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?

A single front-loaded sentence with no filler, putting the action and its two scoping constraints first. It is efficient, though the parenthetical asides slightly interrupt the flow.

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?

For a destructive mutation with no annotations, no output schema, and no per-parameter documentation, the description should cover failure modes and side effects. As written it leaves an agent guessing about error behavior and slot renumbering.

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 0% and both params are bare integers, but the description compensates usefully by giving the slot domain (0..9) and clarifying that track is an id rather than an index or name. It adds real meaning yet leaves edge cases such as out-of-range slots unexplained.

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 (remove) and resource (effect), scoped by slot and track, which lets an agent distinguish it from add_effect and set_effect without opening their schemas. It stops short of naming those siblings explicitly, so it is a clear but not fully differentiating statement.

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 only implied: an agent can infer this is for deleting an existing effect versus adding or configuring one via the sibling names. There is no explicit statement of when to prefer it, no prerequisites, and no note about what to do instead if the target slot is empty.

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

render_projectA

Render a saved .flp project to an audio file (.wav), with no window and no audio device. Save the open project first (save_project) to render what is in the app.

NameRequiredDescriptionDefault
outYes
rateNo
projectYes
secondsNo
builtin_onlyNo

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose two non-obvious traits: rendering is offline/headless ('no window and no audio device') and it operates on the saved project file rather than live in-memory state. It omits error behavior, whether the call blocks for the render duration, and whether the output file is overwritten.

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?

Two short sentences, front-loaded with the action and output format, followed by the prerequisite. No filler, boilerplate, or 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?

For a five-parameter tool with no annotations, no schema descriptions, and no output schema, the description covers purpose and prerequisite but nothing about the parameters or what a successful call yields (output path, duration). Not sufficient for reliable invocation.

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% across five parameters, and the description only hints that 'out' is a .wav target. The meanings of 'seconds' (render length), 'rate' (sample rate), 'builtin_only', and the format of 'project' are left entirely undocumented in both schema and description.

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?

Uses a specific verb and resource: render a saved .flp project to a .wav file. It also states the distinguishing execution mode (headless, no audio device), which separates it from playback tools like play/transport_status, though it does not explicitly name a sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states the prerequisite 'Save the open project first (save_project) to render what is in the app,' which is real when-to-use guidance and names the cooperating sibling. No exclusion conditions or alternatives for rendering a range vs. the whole project are given.

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

route_mixerA

Send mixer track from_track to to_track (ids) at level 0..1; level None removes the route.

NameRequiredDescriptionDefault
levelNo
to_trackYes
from_trackYes

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description must carry the full behavioral burden, and it does disclose the key state-changing case: passing None deletes the route, and level is bounded 0..1. It does not say whether the call is idempotent, what happens to an existing route's level when re-sent, what is returned, or what errors occur for invalid track ids.

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?

A single dense sentence that front-loads the action and then the parameters, with zero boilerplate. It is slightly compressed to the point of terseness (semantic clauses separated by semicolons), but no sentence is wasted.

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?

Three parameters, no output schema, no annotations: the description covers the happy path and the removal case, which is the minimum viable. Missing are id semantics (index vs channel id), default behavior when level is omitted, and any indication of return value or failure mode for a mutation tool.

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

Parameters4/5

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

Schema description coverage is 0%, so the description has to compensate, and it names all three parameters with meaning: from/to are track ids, level is a 0..1 value with a special None case that overrides the schema's plain anyOf[number, null]. It stops short of clarifying whether ids are mixer-track indices or channel ids, and omits the 0.8 default.

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 and resource: send mixer track `from_track` to `to_track` at a level — an agent immediately knows this creates/updates a routing connection. It is distinguishable from sibling set_mixer_track by being about inter-track routing rather than track settings, though it never explicitly says so.

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 clause 'level None removes the route' gives one concrete usage condition (how to undo/remove), which is genuinely useful. However, there is no guidance on when to use this versus set_mixer_track / add_mixer_track / set_channel, and no prerequisites (e.g., whether both tracks must already exist).

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

save_projectB

Save the project (to path, else its own file). With the app's window open, the user is asked first.

NameRequiredDescriptionDefault
pathNo

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden. It usefully discloses that a user is prompted when the app window is open and that saving falls back to the project's own file, but it does not mention overwrite behavior, permissions, errors, or what a successful save returns.

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 two tight sentences, front-loads the core action, and adds the window-confirmation caveat without unnecessary detail. Every sentence contributes useful information.

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 simple one-parameter save tool, the description covers the basic action and interactive prompt. However, with no annotations and no output schema, it still omits important context such as overwrite behavior, failure modes, and whether the save result is reported.

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

Parameters4/5

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

Schema coverage is 0%, so the description must compensate. It does so by explaining that the optional path parameter specifies the destination and that omitting it saves to the project's own file, which adds meaningful semantics beyond the bare string/null 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?

The description uses a specific verb and resource: 'Save the project'. It is immediately distinguishable from siblings like render_project and get_project_state, though it does not explicitly name or contrast any sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites. The purpose implies saving, but an agent receives no usage routing information.

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

selectA

Change what the user sees, not the music: make pattern (an id) the current pattern, select channel (an id) in the channel rack, and with piano_roll=True open the piano roll on them (False closes it). While the piano roll is shown it scrolls to the channel's notes. No undo step. Use it after writing notes so the user sees them.

NameRequiredDescriptionDefault
channelNo
patternNo
piano_rollNo

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses that no data is changed ('not the music'), that there is 'No undo step' (irreversibility), and that the piano roll auto-scrolls to the channel's notes. It omits return behavior and whether closing the piano roll preserves prior view state.

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 key scoping distinction is front-loaded in the first clause, followed by per-parameter behavior. Dense but every clause carries information; the parenthetical '(an id)' is slightly noisy but harmless.

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?

For a 3-optional-parameter, no-annotation, no-output-schema tool, the description covers purpose, side effects, irreversibility, and the piano roll interaction. The only real gap is semantics of omitted/null arguments, which an agent could plausibly need to decide whether to pass values at all.

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

Parameters4/5

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

Schema coverage is 0% — properties only have bare titles — so the description must compensate, and it does: it identifies `pattern` and `channel` as ids, and explains `piano_roll=True` opens while `False` closes. It does not say what a null/default value means for any of the three optional parameters.

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 concrete verb and resource: make `pattern` the current pattern, select `channel` in the channel rack, and optionally open the piano roll. The framing 'Change what the user sees, not the music' sharply bounds the scope and implicitly separates it from mutating siblings like set_pattern or set_channel, though no sibling is named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use it after writing notes so the user sees them' gives a clear trigger condition, and 'not the music' tells the agent this is a view-only operation rather than an edit. No explicit when-not guidance or named alternative is provided, which keeps it short of a 5.

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

set_channelA

Change channel channel (an id): volume 0..1, pan -1..1, pitch in cents, color "#rrggbb", enabled (False mutes it), mixer_track (a mixer track id). Only the fields given change.

NameRequiredDescriptionDefault
panNo
nameNo
colorNo
pitchNo
volumeNo
channelYes
enabledNo
mixer_trackNo

TDQS

A3.5/5.0
Behavior4/5

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

With no annotations, the description carries the full load and does well: it discloses patch semantics ('Only the fields given change'), numeric ranges (volume 0..1, pan -1..1), pitch units in cents, color format '#rrggbb', and the non-obvious meaning of enabled=False (mutes). It stops short of stating error behavior for an invalid channel id or whether the change is undoable via the undo sibling.

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?

A single dense sentence with the resource and id up front, followed by the field list and the trailing patch-semantics guarantee. Parenthetical annotations are compact, though the packed field list reads slightly like a schema echo.

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 an 8-parameter mutation tool with no annotations and no output schema, the definition covers the input side well but says nothing about the return value, failure modes, or side effects. An agent can invoke it correctly but cannot predict the outcome of a bad channel id.

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

Parameters4/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, and it does for 7 of 8 parameters with units and ranges the bare schema lacks. Only 'name' goes undocumented, and channel is only glossed as '(an id)' with no hint about how to discover valid ids.

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 ('Change') and resource (channel by id) and enumerates exactly which fields are settable, so an agent knows this is the channel-property setter rather than a pattern, mixer, or plugin tool. It does not explicitly contrast itself with near-neighbors like set_mixer_track, keeping it below a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to call this versus alternatives such as add_channel, delete_channel, or set_mixer_track, nor any stated prerequisites (e.g. the channel must already exist). The only usage-adjacent statement is the patch-semantics note, which is behavioral rather than routing guidance.

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

set_clipC

Move, resize or mute playlist clip clip (an id).

NameRequiredDescriptionDefault
clipYes
unitNobeats
mutedNo
trackNo
lengthNo
positionNo

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It does not state that omitted optional parameters leave values unchanged, that position/length are interpreted in 'unit', or what permission/context constraints apply, leaving the mutation semantics largely undisclosed.

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?

A single front-loaded sentence with no wasted words. Its brevity is close to under-specification, but nothing redundant is present.

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?

A 6-parameter mutation tool with zero annotation coverage, zero schema descriptions, and no output schema needs substantially more: partial-update behavior, unit semantics, and valid ranges are all missing.

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% for 6 parameters, yet the description only explains the required `clip` and loosely maps verbs to position/length/muted. The `unit` enum, `track`, and the units/scale of `position` and `length` remain undocumented anywhere.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a concrete verb set (move/resize/mute) and the resource (playlist clip identified by id), so the action is understandable. However it omits the track-move and unit parameters entirely and gives no differentiation from siblings such as delete_clip or set_pattern, beyond the verb itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance about when to use this instead of delete_clip, set_pattern, or apply_commands, and no mention of prerequisites. Usage is only inferable from the verb.

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

set_effectA

Turn effect slot slot (0..9) of mixer track track (an id) on or off, or set its mix 0..1.

NameRequiredDescriptionDefault
mixNo
slotYes
trackYes
enabledNo

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full burden; it does disclose that two distinct modes exist (boolean enable/disable vs numeric mix) and gives valid ranges, which is real behavioral signal. It omits what happens when the slot is empty, whether both arguments may be supplied at once, precedence between them, and error behavior.

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?

A single front-loaded sentence that names the operation, the target, and the range constraints with zero filler. Nothing could be removed without losing information.

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 4-parameter mutation tool with no annotations and no output schema, the definition covers the arguments and the two modes, but leaves the failure modes (nonexistent track/slot, empty slot) and argument interaction unspecified. It is adequate rather than complete.

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

Parameters4/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 — and it does: slot is bounded to 0..9, track is identified as an id, mix to 0..1, and enabled maps to 'on or off'. Only the precise meaning of intermediate mix values and the interaction between mix and enabled are left unstated.

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 pair (enable/disable, set mix) against a specific resource: an effect slot on a mixer track. It implicitly distinguishes itself from add_effect/remove_effect/set_plugin_param by operating on an existing slot, though it never names a sibling explicitly.

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 action is clear enough that an agent can infer when to use it (toggling or mixing an already-loaded effect), but there is no explicit statement of when not to use it versus remove_effect, add_effect, or set_plugin_param. Usage is implied rather than guided.

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

set_eqA

Set band 0..2 of mixer track track's built-in 3-band EQ: gain in dB (-18..18), frequency and width as stored (0..65536).

NameRequiredDescriptionDefault
bandYes
trackYes
widthNo
gain_dbNo
frequencyNo

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It discloses that this mutates EQ gain/frequency/width and gives value ranges, but does not explain optional null behavior, whether omitted values remain unchanged, undoability, or failure conditions.

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 a single, front-loaded sentence with no wasted wording. It efficiently packs the target resource, band range, and parameter ranges.

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?

For a simple mutation tool with no output schema, the description provides enough information to call it correctly: target track, valid band range, and parameter ranges. The main remaining gap is how omitted or null optional parameters are treated.

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

Parameters4/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. It meaningfully covers all five parameters: track, band 0..2, gain in dB (-18..18), and frequency/width as stored in 0..65536, though it does not clarify optional/null semantics.

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 verb and resource: setting one band of a mixer track's built-in 3-band EQ. It also names the track and band range, making it distinguishable from effect/plugin parameter tools in the sibling list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is clearly scoped to a mixer track's built-in 3-band EQ rather than effects or plugins, which implicitly routes the agent away from set_effect, add_effect, and set_plugin_param. It does not explicitly state when not to use it or mention prerequisites.

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

set_mixer_trackC

Change mixer track track (an id): volume 0..1 (0.8 = unity), pan and stereo -1..1, enabled (False mutes).

NameRequiredDescriptionDefault
panNo
nameNo
colorNo
trackYes
stereoNo
volumeNo
enabledNo
effects_enabledNo

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It reveals that False mutes the track, but never states that unspecified (null-defaulted) parameters are left unchanged, what happens if `track` does not exist, or whether changes require the project to be in a particular state — all critical for an 8-param mutation 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?

A single dense sentence with the target identifier front-loaded and ranges attached inline; almost nothing is wasted. It borders on cryptic shorthand, but every clause carries information.

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?

For an 8-parameter mutation tool with no annotations and no output schema, the definition leaves too much open: three params undocumented, partial-update behavior unstated, and no failure/error expectations. The range hints help but do not make the definition self-sufficient.

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 0%, so the description must compensate, and it does add real meaning for volume (0..1, 0.8 = unity), pan/stereo (-1..1) and enabled (False mutes). However, `name`, `color` and `effects_enabled` — three of eight params — get no explanation anywhere, and the update-vs-replace semantics of null defaults remain unclear.

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 and resource ('Change mixer track') and pins the target with `track` (an id), which distinguishes it from add_mixer_track, route_mixer and set_eq by implication. It does not explicitly name those siblings, so differentiation is inferential rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use or when-not guidance, and no routing to alternatives such as route_mixer or set_eq for related operations. The agent must infer that this is the general-purpose property setter for an existing track.

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

set_patternC

Rename, recolor, or set the length of pattern pattern (an id). length 0 = automatic.

NameRequiredDescriptionDefault
nameNo
unitNobeats
colorNo
lengthNo
patternYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations at all, the description carries the full behavioral burden for a mutation tool. It never states whether omitted/optional params are left unchanged (critical here since name, color, and length all default to null), what happens with an invalid pattern id, or whether changes are undoable. The 'length 0 = automatic' note is genuinely useful behavior, but it is the only one.

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?

One short, front-loaded sentence with no filler; the actionable clarification is appended where it is needed. It is terse but not padded — the brevity is a virtue here, though it edges into under-specification.

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?

A 5-parameter mutation tool with no annotations, no output schema, and 0% schema description coverage needs considerably more: partial-update semantics, the unit parameter's effect, and what the call returns. The description covers four of five params only loosely and omits `unit` entirely.

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% across 5 parameters, so the description must compensate and largely does not. It explains pattern as an id and gives the length=0 sentinel, but the enum parameter `unit` (beats/ticks) is never mentioned, and the null-default semantics of name/color/length are left implicit.

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 set (rename, recolor, set length) against a specific resource (pattern, identified by id), so the agent knows exactly what mutation occurs. It doesn't differentiate itself from siblings like set_channel or set_clip, but the action is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this versus alternatives, no prerequisites, and no exclusions. The only guidance is the inline 'length 0 = automatic' rule, which is a parameter convention rather than usage context.

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

set_plugin_paramA

Set parameter param (an id from get_plugin_params) of the plugin of channel or slot owner to value 0..1.

NameRequiredDescriptionDefault
ownerYes
paramYes
valueYes

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It does disclose the normalized value range '0..1' and that param ids must come from get_plugin_params, which are real behavioral facts absent from the schema. It does not say whether the change is persisted, undoable, or what happens for out-of-range values or invalid owner ids.

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?

A single sentence with no filler, front-loading the action and the resource. The nested possessive phrasing ('of the plugin of channel or slot') is slightly dense but every clause carries information.

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 3-required-param mutation with no annotations and no output schema, the description covers parameter meaning and value range but omits owner indexing conventions, persistence/undo behavior, and failure modes. Adequate to call correctly in the happy path, thin for a write operation.

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

Parameters4/5

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

Schema coverage is 0% (bare integer/number titles), so the description must compensate, and it largely does: owner is 'channel or slot', param is an id from get_plugin_params, value is bounded 0..1. It only leaves the indexing base/valid range for owner unspecified.

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?

Specific verb+resource: 'Set parameter `param` ... of the plugin of channel or slot `owner` to `value`'. An agent can tell this writes a plugin parameter and is the counterpart of get_plugin_params. It stops short of differentiating from generic effect/mixer setters among the siblings.

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 parenthetical '(an id from get_plugin_params)' implies a required discovery step, which is useful sequencing guidance. There is no explicit when-to-use vs. alternatives (e.g. set_effect, set_mixer_track) and no mention of preconditions or persistence expectations.

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

set_project_settingsC

Swing 0..1, main volume 0..1 (0.8 = unity), main pitch in cents, and the song info.

NameRequiredDescriptionDefault
genreNo
swingNo
titleNo
authorNo
commentsNo
main_pitchNo
main_volumeNo

TDQS

C2/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full behavioral burden. It gives useful ranges for swing and volume, but does not state that this is a mutation, whether it is partial or full replacement, what happens to omitted/null fields, or whether changes are reversible.

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

Conciseness2/5

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

The description is a single fragmented sentence that is too terse to be helpful. It is not front-loaded with the action or purpose, and 'and the song info' is vague filler rather than an earned explanation.

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?

For a seven-parameter mutation tool with no annotations, no output schema, and 0% schema description coverage, the description is materially incomplete. It provides some parameter hints but omits behavior, partial-update semantics, and clear usage guidance.

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%, and the description only clarifies three of seven parameters (swing, main volume, main pitch) plus a vague 'song info' for genre/title/author/comments. It adds important details like 0.8 = unity and pitch in cents, but leaves half the parameters and all null/partial-update semantics unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description is a fragmentary parameter list rather than a statement of what the tool does. Only the tool name implies that it sets project settings; the description never says so explicitly nor distinguishes it from siblings like set_tempo or set_time_signature.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool, when to use a more specific sibling instead, or whether omitted parameters leave existing settings unchanged. The agent must infer all usage context from the name and sibling list.

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

set_tempoB

Set the tempo (10..522 BPM).

NameRequiredDescriptionDefault
bpmYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses the valid BPM range but says nothing about side effects, required permissions, whether changes are reversible, or how playback is affected. For a mutation tool, this is a significant gap.

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 a single, front-loaded sentence that contains the core action and the key constraint. Every element earns its place, and there is no redundant text.

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 simple one-parameter setter with no output schema, the description covers the essential action and range. But with no annotations and no return-value explanation, an agent lacks context about success/failure behavior or whether the tempo change applies immediately.

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 0%, so the schema only says 'bpm' is a number. The description compensates somewhat by specifying the unit (BPM) and valid range (10..522). However, it does not clarify whether fractional values are accepted, what the default is, or what happens on out-of-range input.

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 ('Set the tempo') with the valid BPM range, making the tool's function immediately clear. It does not explicitly differentiate from siblings such as set_time_signature or set_project_settings, but the tempo focus is unambiguous.

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 tool name and description—an agent can infer this is for changing project tempo. However, there is no explicit guidance about when to prefer this over alternatives like set_project_settings or any preconditions (e.g., playback state).

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

set_time_signatureB

Set the time signature (denominator 2, 4, 8 or 16).

NameRequiredDescriptionDefault
numeratorYes
denominatorYes

TDQS

B3/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does add one genuinely useful behavioral fact not present in the schema: the denominator is constrained to 2, 4, 8 or 16. It says nothing about whether the change is reversible, requires a stopped transport, or affects existing patterns/clips.

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?

A single short sentence, front-loading the action and appending the only constraint in parentheses. Nothing is wasted, though the space saved is partly what creates the gaps elsewhere.

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 simple two-parameter mutation with no annotations and no output schema, the description covers the action and one validation rule. It stops short of what an agent needs on numerator values and on side effects to existing project state.

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, and it only half does: it constrains 'denominator' to 2/4/8/16 but leaves 'numerator' completely undefined (no range, no typical values like 3, 6, 7). The stronger of the two parameters is undocumented in both schema and description.

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 ('Set') and resource ('time signature'), which is clearly distinct from set_tempo and set_project_settings in the sibling list. It does not explicitly name those siblings, but the resource is unambiguous enough that an agent can route correctly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to call this versus set_tempo or set_project_settings, nor any preconditions such as stopping transport or whether existing clips are re-metered. Usage must be inferred entirely from the tool name.

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

stopA

Stop playback and rewind to where it started.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully discloses the non-obvious side effect of rewinding to where playback started, but it does not clarify what happens if playback is already stopped or whether the call is idempotent.

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?

A single, front-loaded sentence with no filler. The action and its key effect are stated immediately.

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?

For a simple no-argument transport action with no output schema, the description gives enough to call it correctly. The main remaining ambiguity is whether 'where it started' refers to the start of playback or another saved position.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4. The empty schema is complete and the description does not need to explain parameters.

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: 'Stop playback'. It also adds the distinctive rewind behavior, which indirectly separates it from pause, but it does not explicitly name pause or any sibling tool.

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 'Stop playback', and the rewind detail hints at when to choose this over pause. However, there is no explicit guidance such as 'use pause to hold position' or 'use transport_status to check state'.

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

transport_statusC

Playing, paused or stopped; pattern or song mode; the current pattern; the playhead position; the tempo.

NameRequiredDescriptionDefault
unitNobeats

TDQS

C2.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full disclosure burden. It does add real value by listing what state the call surfaces (transport state, mode, current pattern, playhead, tempo), effectively compensating for the missing output schema, but it never states that the operation is read-only/non-mutating nor what shape the response takes.

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

Conciseness3/5

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

One compact sentence with no wasted clauses, and every field listed earns its place. The tradeoff is that the semicolon list is not front-loaded with a leading verb/statement of intent, so the reader learns the payload before the purpose.

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 simple, zero-required-parameter read tool with no output schema, describing the returned fields is the most important thing and it is done. Still missing are the read-only guarantee and the meaning of the 'unit' parameter, both of which an agent needs and neither annotations nor schema supply.

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% and the description never mentions the single 'unit' parameter (beats vs ticks, default beats). The enum values are partially self-explanatory in the schema, but the description does nothing to explain what the unit applies to — presumably the playhead position — which leaves a genuine gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description enumerates the transport state fields returned (play/pause/stop, pattern/song mode, current pattern, playhead, tempo), which lets an agent infer this is a transport status read. However, it is a bare noun-phrase list with no verb or resource statement, so the agent must infer 'returns current transport state' rather than being told it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no mention of how it relates to siblings such as get_project_state, get_history, or the mutation tools play/pause/stop. The agent gets no explicit signal that this is the read counterpart to those siblings.

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

undoA

Undo the last step (anyone's: this client's or the user's).

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose the important behavioral fact that undo can revert another client's/user's action, which affects side effects on shared project state, but says nothing about failure behavior (empty history), reversibility via redo, or whether one call reverts one step or a batch.

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?

A single short sentence with the scope caveat in parentheses, front-loaded and free of filler. Every element earns its place.

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?

For a zero-parameter, no-annotation, no-output-schema mutation tool, the description conveys what it changes and whose changes are in scope. A brief note on empty-history behavior or the redo pairing would make it fully self-sufficient.

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

Parameters4/5

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

Zero parameters, so there is nothing for the description to disambiguate; the baseline applies. The description correctly implies no targeting arguments are accepted, matching the empty 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 (undo) and resource (the last step) plus a scope qualifier that matters in a multi-client session: it can revert anyone's step, not just this client's. It never names redo, so the boundary with its most obvious sibling is left implicit.

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 only implied by the tool name; there is no explicit statement of when to call undo versus redo, get_history, or get_changes, and no note about what to do when the history is empty. The 'anyone's' clarification mildly informs usage (the agent need not track whose change it was) but does not route between alternatives.

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

write_notesA

Write notes into pattern pattern (an id).

notes: [{"channel": id, "position": 0, "length": 0.5, "key": 60, "velocity": 100, "pan": 64}, ...]; position/length in unit (beats by default). channel fills in notes that leave theirs out. replace=True: these become the notes of channel in the pattern (or all of its notes when channel is None); replace=False: they are added to what is there.

NameRequiredDescriptionDefault
nameNoWrite notes
unitNobeats
notesYes
channelNo
patternYes
replaceNo

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and does disclose the highest-risk trait: replace=True overwrites, and with channel=None it replaces ALL notes in the pattern. That is a real destructive-scope disclosure an agent needs. It omits return values, error behavior on malformed notes, and whether out-of-range positions extend the pattern.

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?

Well front-loaded: purpose first, then the note object example, then unit/channel/replace semantics. Each sentence earns its place. There is minor noise, including a stray trailing quote and a slightly awkward 'channel fills in notes that leave theirs out' phrasing.

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 6-parameter mutation tool with no annotations and no output schema, the definition covers inputs well but leaves the agent guessing about outcome: nothing says what the call returns, whether the target pattern must already exist, or how written positions interact with pattern length. Adequate but with clear gaps.

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

Parameters4/5

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

Schema coverage is 0% and the notes items schema is only an open object (additionalProperties: true), so the description is doing heavy lifting: it documents the per-note shape (channel, position, length, key, velocity, pan), units for position/length, the channel fill-in default, and replace semantics. Only `name` goes unmentioned, and that is a display label, so the compensation is nearly complete.

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 first line states a specific verb and resource — writing notes into a pattern identified by id — which an agent can easily separate from siblings like get_notes and clear_notes. It stops short of naming those siblings explicitly, so there is no stated differentiation, only implicit contrast.

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 replace=True/False explanation effectively tells the agent about two usage modes (overwrite vs append), which is genuinely useful guidance. However, there is no guidance on when to prefer this over alternatives such as clear_notes followed by a write, or whether to call get_notes first to preserve existing content, and no stated prerequisites.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 42 tool updatesv0.1.0
    • First observedadd_channel
    • First observedadd_effect
    • First observedadd_mixer_track
    • First observedadd_pattern
    • First observedapply_commands
    • First observedclear_notes
    • First observeddelete_channel
    • First observeddelete_clip
    • First observeddelete_pattern
    • First observedget_changes
    • First observedget_history
    • First observedget_notes
    • First observedget_plugin_params
    • First observedget_project_state
    • First observedlemon_launch
    • First observedlemon_status
    • First observedlist_plugins
    • First observedload_sample
    • First observedpause
    • First observedplace_pattern
    • First observedplay
    • First observedpropose_commands
    • First observedredo
    • First observedremove_effect
    • First observedrender_project
    • First observedroute_mixer
    • First observedsave_project
    • First observedselect
    • First observedset_channel
    • First observedset_clip
    • First observedset_effect
    • First observedset_eq
    • First observedset_mixer_track
    • First observedset_pattern
    • First observedset_plugin_param
    • First observedset_project_settings
    • First observedset_tempo
    • First observedset_time_signature
    • First observedstop
    • First observedtransport_status
    • First observedundo
    • First observedwrite_notes

TDQS

B3/5.0

Scored across 42 tools

Disambiguation4/5

Nearly every tool pairs a distinct resource with a distinct action (channel vs pattern vs clip vs mixer track vs effect slot vs plugin param), and descriptions explicitly disambiguate near-pairs like set_clip vs place_pattern and set_effect vs set_plugin_param. The main overlap is apply_commands, which is a raw escape hatch that can do anything the individual tools do, and there is mild redundancy between transport_status, lemon_status and get_project_state on transport/mode info.

Naming Consistency4/5

The dominant convention is verb_noun (get_notes, write_notes, add_channel, set_mixer_track, delete_pattern, route_mixer, remove_effect, save_project), applied consistently across resources. Deviations are minor and idiomatic: bare transport verbs (play, pause, stop, undo, redo), the select verb, a noun-first transport_status, and the lemon_ prefixed lifecycle pair (lemon_launch, lemon_status).

Tool Count2/5

42 tools is heavy even for a full DAW control surface; the domain (channels, patterns, notes, playlist, mixer, effects, plugins, transport, project, render) justifies breadth, but many setter tools are one-field wrappers that apply_commands already covers generically. The surface could be consolidated (e.g. generic update_* tools or dropping per-field setters) without losing capability.

Completeness4/5

Coverage is broad and lifecycle-complete for most objects: channels, patterns, notes, clips, mixer tracks, effects and plugin params all have create/read/update/delete, plus transport, undo/redo, save and render. Gaps are moderate rather than blocking: no delete_mixer_track, no tools for automation clips/points despite delete_channel mentioning automation, and no way to open/close a project beyond the lemon_launch argument.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    B
    maintenance
    MCP server for headless, agent-native control of openDAW, enabling programmatic music production with tracks, instruments, effects, MIDI, automation, and rendering via 543 tools.
    100
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables MCP clients to programmatically control an Ableton Live 12 session, including tracks, clips, MIDI notes, devices, parameters, mixer, scenes, warping, and rendering, over streamable HTTP.
    1
    MIT
  • A
    license
    C
    quality
    C
    maintenance
    Enables end-to-end control of FL Studio on macOS through MCP clients, including transport, patterns, mixer, piano roll, playlist, live metering, browser navigation, and rendering.
    160
    MIT
  • A
    license
    C
    quality
    A
    maintenance
    Enables podcast producers and agents to manage multitrack projects, run per-track transcription, perform transcript-driven edits, process audio via FFmpeg, and inspect a read-only DAW timeline over MCP.
    183
    MIT