Skip to main content
Glama

omnidaw-agent-mcp

An unofficial, policy-enforced Model Context Protocol (MCP) server for OMNi DAW.

Purpose

While OMNi DAW includes an official MCP server, omnidaw-agent-mcp is an independent integration that adds:

  • Strict Operator Policy: Enforces explicit authorization (--allow-write, --allow-risk) rather than relying purely on descriptive model annotations.

  • Workflow Previews: Two-phase composable operations (preview -> inspect -> apply) with preflight validation, symbolic references ($ref), and per-step execution journals. Execution is not an atomic transaction: earlier steps may have changed state when a later step fails or has an unknown outcome. There is no automatic rollback or replay; inspect live state before recovery, and do not assume undo can reverse file writes.

  • Domain Filtering: Selectively expose API domains at startup, reducing context overhead and constraining backend actions.

  • Job & File Safety: Safe async job supervision with deadlines, strict loopback TCP restrictions, automatic token redaction from errors and logs, and verification of non-silent PCM audio.

  • Honest Offline Status: Accurate reporting of whether API capabilities originate from live discovery or bundled references.

Related MCP server: ComposerBench

Clip placement, checkpoints, and MIDI import

  • Master effect inspection: bundled official 0.21.0 params_list supports a required track, not a master chain. No fabricated chain argument is added. devices_list({"chain":"master"}) and devices_get({"chain":"master","slot":0}) already support master effects; this is not equivalent to paginated plugin parameter discovery.

  • Repeated clip placement: agent_repeat_preview takes track, slot, native_length_beats, count, and optional start_beat. Supply the actual native length in quarter-note beats; it is not inferred from undocumented engine fields or audio duration/tempo. Each placement has explicit start and length, computed from the original decimal values rather than accumulated float addition. Fractional lengths are supported within official placement bounds (0.25..4096 beats). This places existing session clips without clearing the track. The bundled arrangement.place_clip description mentions MIDI only; bounded live verification also confirmed repeated audio placement with explicit lengths (see verification scope below).

  • Batched arrangements and checkpoints: agent_arrange_timeline and repetitions group placements plus markers in ordered batches of at most 32 mutations. Markers follow placements and count toward the bound. More than one batch requires checkpoint_paths: exactly one distinct, new absolute .omni destination between adjacent batches, inside --output-root. Saves use the official session.save API and change the project's save destination. A missing/domain-filtered save method blocks preview. Saves count toward the unchanged 128-step plan limit. Single-batch existing calls remain compatible. Preview/apply retains process-local 300-second expiry and single-use plans. Partial failures return completed indices, failed-or-unknown index, pending indices and the full step scope; writes stop immediately. No rollback, automatic retry or replay is provided, including unknown mutation/checkpoint outcomes. Apply progress notifications are best-effort: callback exceptions are recorded as progress_warnings, never relabel confirmed writes, interrupt job supervision, or trigger replay. Checkpoint preview enforces the .omni suffix; existing destinations are refused even with overwrite authorization because checkpoints never request overwrite. Apply rechecks destination availability before any plan writes (and again at each save).

  • Local MIDI import: agent_midi_preview({"path":"/authorized/synthetic.mid","track":0,"slot":0}) reads a bounded local SMF or RIFF RMID under the existing --output-root policy (also used for this local input). Absolute paths only; resolved symlink escapes are denied before reading. It previews a replacement clips.write_midi; applying still needs write and risk authorization. Formats 0/1 and PPQ are supported, with FIFO overlap pairing per source track/channel; tracks/channels merge into one destination with an explicit warning. Note times are ticks / PPQ, independent of tempo. Tempo, controller, program and meta payloads are preserved in the report, not applied; sustain/instrument behavior may differ. Format 2, SMPTE, SysEx/system, pressure/pitch bend, malformed structures and unrepresentable note timing are refused before plan creation. Limits: 8 MiB, 100,000 events, 256 tracks, 4,096 notes, 1,024 clip beats. Empty note files are rejected.

Live verification scope (2026-10-28, Linux, API 0.21.0, app 0.1.0) exercised the actual SDK stdio bridge with generated local fixtures. Four explicit two-beat audio placements rendered eight correctly timed pulse windows with continuous low-level beds. A 33-placement plan saved a checkpoint after 32 new placements; project JSON and live arrangement readback confirmed the content. Reopening remains unverified: no session.open method exists. SMF and RMID imports returned the expected notes and a native-instrument render was non-silent; format 2 was explicitly refused. These are bounded fixture tests, not subjective listening or long-session reliability certification.

Live discovery also confirmed master builtin parameter inspection through devices.get, EQ per-band Mid/Side processing (a Side low-cut causally suppressed a synthetic 60 Hz side component while preserving 1 kHz), Saturator algorithms/oversampling/mix, Filter Notch mode, and sampler fine tune/pitch-envelope parameters through params.list / params.set. Parameter keys are instrument-specific: discover them on the actual target track, never transfer numeric keys between instruments. General parameter automation with smooth curves was accepted and read back; exponential interpolation and audible automation behavior remain unverified. External compressor routing, track polarity inversion, per-band correlation/vectorscope and group-output routing were not established; absence of a catalog field is not proof of GUI absence.

Optional sample search and audio diagnostics

The base server needs neither component. Optional integrations can be installed via package extras ([search], [diagnostics], [all]). When installed, users only configure paths to their data, never to source checkouts:

# Enable sample search with data paths; diagnostics are discovered automatically when installed
omnidaw-agent --allow-write --output-root /authorized/new-project \
  --sample-index-db /authorized/index.sqlite --library-root /authorized/library

Optional tools are listed only when their components and required data paths exist; agent_status.optional_integrations reports availability and source (package or repo). Runtime dependency/DB health is checked on each call. No indexing, migrations, component installs, global reloads or audio uploads occur. No reinstall is needed between calls. Paths shown are examples, not defaults:

  • agent_resource_search: call with {"filters":{"ext":"wav","bpm_min":140,"bpm_provenance":"est"},"limit":5}. The tool schema lists supported filters, which mirror reports.query; unknown filters, numeric strings, nonfinite/inverted bounds and unsupported provenance are rejected. Limit is 1–50 over MCP. Known corruption is excluded by default; include_errors/only_errors explicitly opt in. Missing paths are never included. A bounded isolated subprocess calls the component library over SQLite URI mode=ro plus query_only. The component CLI is deliberately not used: its connection enables writable WAL even for query. Mixed-root indexes fail closed. Resolved current paths must be files inside the configured library. Indexed SHA/measurements/descriptors and uncertainty are retained; current contents are not rehashed and metadata freshness is not certified.

  • agent_export_and_diagnose_preview, then agent_apply: {"path":"/authorized/new-project/mix.wav","save_path":"/authorized/new-project/checkpoint.omni","start_beat":0,"end_beat":8,"bpm":120,"intents":["Intentional breakdown"]}. Inspect the returned changes before apply. Requires a new .omni checkpoint, explicit finite beat range, normal write/risk policy and root containment. Timeline preparation uses the existing export workflow; checkpoint follows preparation and precedes render. Save changes the project's save destination. Only a confirmed completed render job proceeds to actual integer-PCM/non-silence verification and the local analyzer. Analysis uses argv without a shell; the analyzer subprocess has a 90 s deadline and a 2 MiB limit per output stream. Local path resolution, PCM verification, hashing and schema validation are outside that subprocess deadline: this is not a 90 s end-to-end guarantee. Only regular files are accepted; POSIX nonblocking open and descriptor checks reject FIFO replacement races. Filesystem stalls on regular files remain possible, and the authorized root must be under operator control (hostile ancestor-directory replacement is not sandboxed). Configured Python invocation paths preserve virtual-environment symlinks. JSON is checked against the configured component's report schema, supported analyzer version 0.1.0, path and before/after SHA. No diagnostic report files are written under Music (or elsewhere): results are returned through MCP JSON. Level-2 heuristics are never automatic defects.

  • agent_diagnose_wav is read-only recovery/offline checking for an existing WAV inside output-root: {"path":"/authorized/new-project/mix.wav","bpm":120}. It verifies PCM and invokes only the analyzer, never exports or saves. It does not establish that an arbitrary existing file came from a particular host job.

Failure states retain the apply journal: export_failed_or_unknown stops before analysis, export_outcome_unknown rejects missing/malformed completed-job evidence, wav_rejected preserves a completed export but refuses analysis, and analysis_failed preserves artifact/job/SHA without replaying export. Inspect live jobs after uncertain outcomes. Retry diagnostics on the existing file only, never retry an unknown export automatically. Missing config/component/DB, corrupt or incompatible DB, root escapes, deadlines and malformed/oversized output fail explicitly. Component code is trusted operator configuration, not a sandbox.

Verification on 2026-10-28: actual MCP stdio search returned real indexed files; actual MCP offline diagnostics analyzed a generated WAV with matching unchanged SHA. The combined host export-and-diagnose workflow was also exercised through actual MCP on an authorized disposable synthetic project: a new checkpoint, bounded four-beat render, completed job, PCM verification and analyzer SHA check passed. These bounded checks do not establish subjective musical quality, long-session reliability or behavior on other platforms.

Advanced / Development source checkouts

When developing against local source checkouts instead of installed packages, pass --sample-indexer-repo and/or --audio-diag-repo (with optional --sample-indexer-python and --audio-diag-python overrides):

omnidaw-agent --allow-write --output-root /authorized/new-project \
  --sample-indexer-repo /path/to/sample-indexer-checkout \
  --sample-index-db /authorized/index.sqlite --library-root /authorized/library \
  --audio-diag-repo /path/to/audio-diag-checkout

Platform Compatibility & Requirements

Requirements:

  • Python 3.12+ (standard library + mcp SDK)

  • OMNi DAW (v0.1.0 Build 5de6b9a or newer, with API enabled via --api or GUI Settings)

Supported Platforms:

  • Linux: Any standard modern Linux distribution with Python 3.12+ (Ubuntu, Debian, Fedora, Arch, etc.). Fully compatible with Wayland (e.g. niri, GNOME, Sway) and X11. Runs with the official OMNi AppImage.

  • Windows: Windows 10/11 (64-bit). Fully supported out of the box (uses %APPDATA%/omni/api/endpoint.json).

  • macOS: Supported by omnidaw-agent-mcp (reads ~/Library/Application Support/omni/api/endpoint.json and supports loopback TCP sockets). Note: OMNi DAW itself currently publishes official binaries for Linux and Windows; macOS will work immediately once OMNi releases a macOS build or when connecting via network tunnel to a remote host.

Installation

Standard installation with pip:

# Base server
pip install omnidaw-agent-mcp

# With all optional integrations (sample search + audio diagnostics)
pip install 'omnidaw-agent-mcp[all]'

# Or with individual extras:
pip install 'omnidaw-agent-mcp[search]'
pip install 'omnidaw-agent-mcp[diagnostics]'

For development:

git clone https://github.com/adrian-cancio/omnidaw-agent-mcp.git
cd omnidaw-agent-mcp

python3 -m venv .venv
source .venv/bin/activate   # On Windows: .venv\Scripts\activate
pip install -e '.[all,dev]'

To run diagnostics:

omnidaw-agent --diagnose

Running the Server

Speak MCP over standard I/O:

# Read-only safe inspection (default)
omnidaw-agent

# Allow project edits within authorized root
omnidaw-agent --allow-write --allow-risk --output-root /home/user/Music/projects

# Also let session.save / export.render replace existing files (only inside --output-root)
omnidaw-agent --allow-write --allow-overwrite --output-root /home/user/Music/projects

# Restrict exposed tools to specific domains
omnidaw-agent --domains session,tracks,clips,theory

MCP Client Configuration

Claude Desktop / Hermes / OpenCode

Add the following to your MCP client configuration (opencode.jsonc, claude_desktop_config.json, etc.):

{
  "mcpServers": {
    "omnidaw": {
      "command": "/path/to/omnidaw-agent-mcp/.venv/bin/omnidaw-agent",
      "args": [
        "--allow-write",
        "--output-root",
        "/home/user/Music/omnidaw-exports"
      ]
    }
  }
}

Remote Agent Architecture Note

OMNi DAW's JSON-RPC API is strictly local (127.0.0.1) and authenticates via an ephemeral token generated per session. For agents operating remotely (e.g. on a separate VPS):

  1. Run omnidaw-agent locally on the workstation where OMNi runs.

  2. Establish a secure authenticated tunnel (e.g., WireGuard, Tailscale, or an authenticated mTLS reverse proxy) connecting the remote agent harness to a local transport bridge.

  3. Never expose 127.0.0.1 directly or persist/transmit the API token across unsecured networks.

Composable Workflows

  • agent_status: Inspect connection state, catalog provenance, and active operator policies.

  • agent_inspect: Return compact, LLM-optimized summaries of project state and tracks.

  • agent_preview: Generate an execution plan from official methods with preflight checks and symbolic references.

  • agent_apply: Execute an approved preview plan once, producing an execution journal and handling partial failures.

  • agent_loop_preview: Compose a deterministic four-part electronic loop (drums, bass, chords, melody) using live instruments and native theory generators.

  • agent_arrange_preview: Arrange scenes into sections, duplicate clips with transforms, and apply automation.

  • agent_arrange_timeline: Place a batch of clips (track, slot, start_beat, length_beats) and optional markers in one preview plan.

  • agent_measure: Measure master/track loudness, tonal balance, and clipping, proposing mastering chains without perceptual claims.

  • agent_export_preview: Preview mixes or stems to WAV files with bounded job tracking. An explicit finite end_beat greater than start_beat (default 0) is required; the workflow never guesses song length. Failed or unavailable arrangement inspection produces no plan. Session-mode preparation selects the arrangement using arrangement.play (which starts playback) then stops it; this does not place session clips on the timeline or guarantee non-silent output. Inspect the range/content and verify the written audio separately.

  • agent_verify_wav: Verify that exported audio contains valid integer PCM with matching sample rate and duration. Audio whose peak is below silence_floor_dbfs (default -80 dBFS) is rejected as silent or dither-only. The result includes peak_dbfs and rms_dbfs.

Known Limitations

These are limits of the current OMNi API and of this server's safety model, not guarantees about audible results.

  • No native MIDI file import or session open. The host API exposes audio.import, session.info and session.save, but no native .mid import or session.open. This server's agent_midi_preview parses supported local MIDI files and previews a replacement clips.write_midi operation; it does not preserve all MIDI playback behavior (see formats and limits above). Notes can also be written with clips.write_midi or the theory/clip generators.

  • Audio import rounds native lengths. The imported clip length is rounded (observed: a 32 beat loop became 32.25 beats). Place audio clips with explicit native-length placements.

  • Lengthening an audio timeline clip did not repeat its content in observed use. The catalog documents repetition for MIDI tracks only; for audio, place the clip once per repetition with explicit native-length placements.

  • Exports can be structurally valid but silent. If the arrangement playback mode is wrong, an offline render can contain only dither. agent_verify_wav rejects audio whose peak is below silence_floor_dbfs (default -80 dBFS). This is a floor check: it does not prove the audio is continuous, complete or musical.

  • Plans are process-local. Previews live in memory inside the server process, expire after 300 s, hold at most 128 steps, and the oldest of 32 pending plans is dropped. Split large timelines into several agent_arrange_timeline batches and apply each one promptly.

Audio-stream failure on Linux (regression note, October 2026)

Earlier OMNi builds could lose their audio output stream during playback (log lines alsa::poll() returned POLLERR, then Audio stream died - auto-restarting engine). After that, audio stayed silent, including offline renders, and in some sessions the host process exited. The cause was never established, and no deterministic trigger was found. An earlier claim that about 75 s of accumulated analysis.capture calls triggers it was contradicted by later runs and has been removed.

With OMNi build bbf1bd36, whose developer reports related fixes, no new stream failures were seen in a ~30 minute session of mostly offline editing and exports, in a later session with ordinary 2 s agent_measure captures, or in a short playback test. This server applies no capture throttling. This is an observed improvement, not a certified fix: no long continuous playback test has been run, and behaviour on other operating systems is untested.

Practical guidance for MCP clients:

  1. Verify exported audio with agent_verify_wav or equivalent.

  2. Save the project often. If the host dies, do not restart it automatically; report the failure and the evidence.

  3. Prefer offline export over long real-time capture for evaluation.

Verification & Testing

Run unit tests and SDK subprocess integration tests:

pytest -v

Execute disposable integration verification against a target project:

python scripts/run_integration.py /path/to/endpoint.json /path/to/output_dir

License & Attribution

  • Code adapted from official OMNi DAW reference examples: Copyright (c) 2026 Tomasz Głuc, under the MIT License.

  • Extensions, workflows, and policy engine: Copyright (c) 2026 omnidaw-agent-mcp contributors, under the MIT License.

  • OMNi DAW is a proprietary audio workstation developed by Tomasz Głuc. This project is unofficial and independent.

Available Tools

115 tools
agent_applyB
Destructive

Apply a previously returned preview once, subject to operator startup policy

NameRequiredDescriptionDefault
plan_idYes

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and openWorldHint=false, so the mutation risk is known. The description adds two real behavioral facts beyond that: the apply is single-shot ("once") and is gated by an operator startup policy that may refuse it. However, it never says what that policy is, what a refusal looks like, whether the plan is consumed on failure, or whether the change is undoable.

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 clause pair with no filler; the verb and the scope arrive immediately. The only weakness is that "operator startup policy" is unexplained jargon occupying a third of the text's information budget.

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?

This is a destructive, non-read-only operation with no output schema and an undocumented sole parameter, so the description bears the full burden. It leaves unaddressed what apply returns, whether the plan is consumed, what happens on a second call with the same id, and how to recover — all material for a destructive tool.

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% and there is one required parameter, so the description must carry the meaning — and it does partially, making clear that plan_id is an opaque handle to a previously returned preview rather than a user-chosen identifier. It adds nothing about handle lifetime, invalidation after use, or format, so an agent still cannot predict failure modes from the parameter.

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

Purpose4/5

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

States a specific verb ("Apply") on a specific resource ("a previously returned preview"), which implicitly ties it to the agent_*_preview siblings that produce such previews. An agent can tell this is the commit step rather than a preview, though the description never names the producer tool explicitly and "preview" remains an abstract object.

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?

"once" and "previously returned" imply the prerequisite (a preview must exist first) and hint at single-use semantics, but the description never states when to prefer this over re-running a preview or over applying edits directly via edit_* tools. No explicit exclusions or alternative routing is given.

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

agent_arrange_previewC
Read-only

Preview sections, duplication/transforms, automation and save

NameRequiredDescriptionDefault
sectionsYes
save_pathNo
automationNo
transformsNo

TDQS

C2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is partly covered. But the description says the tool will 'save' and the schema exposes a save_path, which is at odds with a read-only hint and is never reconciled. It also never explains the preview contract (does anything persist? what does agent_apply do next?).

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?

It is short and front-loaded, but it is a fragment with ambiguous slash syntax ('duplication/transforms') rather than a sentence, so brevity comes at the cost of parseability.

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

Completeness1/5

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

A four-parameter, zero-coverage arrangement tool with no output schema needs a real explanation of inputs and the preview/apply workflow. This definition supplies neither, so an agent has essentially nothing to call it correctly with.

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 all four parameters, so the description must carry the load and it does not. It name-drops sections, transforms and automation without stating shapes or meaning (what a 'transform' or 'duplication' is), and save_path is not mentioned at all.

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 slash-delimited noun list ('sections, duplication/transforms, automation and save') hung off the verb 'Preview' rather than a statement of what the tool actually does. It gives no hint of how it differs from the many other preview siblings (agent_preview, agent_loop_preview, agent_midi_preview, agent_arrange_timeline), so an agent cannot route on 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 prerequisites, and no named alternative. In a sibling set with agent_preview, agent_apply, agent_loop_preview and agent_arrange_timeline, the definition never says when an arranging preview is the right call versus those.

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

agent_arrange_timelineB
Read-only

Preview batches of at most 32 timeline mutations with inter-batch checkpoints

NameRequiredDescriptionDefault
markersNo
placementsYes
checkpoint_pathsNo

TDQS

B3/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true and destructiveHint=false, and the description is consistent with a preview operation. It adds useful context about the max batch size of 32 and inter-batch checkpoints, but does not explain whether checkpoints are written, what the preview returns, or what happens beyond the batch limit.

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 zero filler, front-loading the verb and key constraints. It is appropriately sized for the amount of information it chooses to include.

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 input schema has three parameters with nested object arrays and no field descriptions, and there is no output schema. One sentence is not enough to explain how to construct placements or markers, or how checkpoints should be used, so the definition is incomplete for a tool of this complexity.

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. It mentions checkpoints and timeline mutations, but does not explain that placements is required, what markers represent, or the structure of checkpoint_paths; parameter meaning is largely left to the raw 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 ('Preview') and resource ('timeline mutations'), plus a batch-size constraint. It does not explicitly distinguish the tool from nearby siblings like agent_arrange_preview or agent_apply, so it is clear but not sibling-differentiating.

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 says it previews timeline mutations but gives no when-to-use guidance, exclusions, or alternatives. It does not explain whether to call this before agent_apply, or how it relates to agent_arrange_preview.

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

agent_export_previewC
Read-only

Preview render/stems over an explicit beat range with bounded job waiting; no guarantee of audible content

NameRequiredDescriptionDefault
pathNo
folderNo
end_beatYes
start_beatNo

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare the safe read-only, non-destructive profile, and the description adds two useful caveats: bounded job waiting and no guarantee of audible content. However, 'bounded job waiting' is undefined (no timeout value, no behavior on exceeding the bound) and there is no explanation of what the preview produces or where it writes, so the added transparency is partial.

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, and the key scoping constraint leads. The phrase 'bounded job waiting' is slightly jargon-heavy for the amount of information it conveys, but overall it is efficient.

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 four-parameter tool with 0% schema coverage and no output schema, the definition is too thin. It does not say what the preview returns (job handle, paths, status), how path/folder are used, or what 'bounded' waiting means, so an agent cannot reliably invoke it without guessing.

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 carry the parameter burden. It only partially does: 'explicit beat range' covers start_beat/end_beat, but the path and folder parameters are never explained, leaving half the inputs 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?

It states a specific verb and resource ('Preview render/stems') plus a scoping detail ('explicit beat range'), so the core action is clear. It never contrasts itself with the many adjacent tools (export_render, export_stems, agent_preview, agent_loop_preview, agent_midi_preview), leaving the agent to guess which preview/export variant to pick.

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 word 'Preview' hints at a pre-commit check, but there is no explicit when-to-use or when-not-to-use guidance. Nothing tells the agent how this differs from export_render/export_stems or from the other agent preview tools, so selection among them is left to inference.

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

agent_inspectC
Read-only

Compact project inspection; metadata is untrusted data

NameRequiredDescriptionDefault
limitNo

TDQS

C2.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds one genuinely new behavioral fact — that returned metadata is untrusted data and should not be acted on as instructions — which is real value beyond the structured fields. It still omits what the inspection returns and why the limit is capped at 32.

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?

Two short fragments with zero padding and the primary purpose front-loaded, which is good. But the terseness reflects under-specification rather than disciplined editing — the security note consumes half the text while core semantics are absent.

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?

With no output schema and an undocumented parameter, the description must explain what is inspected and roughly what is returned; it does neither. The untrusted-data warning is the only substantive content, leaving the agent unable to predict the response shape.

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%: the single optional 'limit' parameter has no description, bounds explanation, or unit. The description never mentions it, so the agent cannot tell whether it limits items, bytes, or depth. With low coverage the description was expected to compensate and does not.

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?

"Compact project inspection" essentially restates the tool name (agent_inspect) without saying what part of the project is inspected or what comes back. It does not distinguish itself from siblings like agent_status, session_info, or agent_measure, which all sound like project-level reads.

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 word "compact" hints that this is the cheap/lightweight read, but there is no explicit when-to-use, when-not-to-use, or named alternative. With a dozen agent_* siblings, the agent is left to guess which inspection tool to call.

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

agent_loop_previewC
Read-only

Preview deterministic native four-part electronic loop using live instruments

NameRequiredDescriptionDefault
bpmNo
seedNo

TDQS

C2.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=false, destructiveHint=false, so safety is covered. The description adds two genuine behavioral facts beyond that: the result is deterministic (implying the seed reproduces output) and it uses live instruments rather than samples. It omits whether anything is written to the session, whether audio is rendered, and what the preview returns.

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?

A single front-loaded sentence with no filler, which is good, but it is under-specified rather than concise. The word budget spent on 'native' and 'four-part' would be better spent on parameters or usage.

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?

Two optional parameters with no descriptions, no output schema, and an ambiguous relationship to the other preview/apply tools leave real gaps. An agent knows roughly what domain this touches but not what it produces or when to call it instead of agent_midi_preview or agent_preview.

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% — bpm and seed are documented only by min/max bounds. The description's word 'deterministic' hints that seed controls reproducibility, but neither parameter is named, defaulted, or explained, and the bpm-to-loop relationship is unstated. With low coverage the description should compensate and does not.

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?

States a specific verb (Preview) and a resource (four-part electronic loop), but the qualifiers 'deterministic', 'native', and 'live instruments' are unexplained jargon. It gives no signal distinguishing it from the many sibling preview tools (agent_preview, agent_midi_preview, agent_repeat_preview, agent_arrange_preview), so an agent cannot tell which preview to pick from the name alone.

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 over alternatives, despite five-plus sibling '*_preview' tools in the same family. There is no mention of prerequisites (loaded instruments? active session?), no note on whether the preview must be followed by agent_apply, and no exclusions.

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

agent_measureC

Measure master or track, propose mastering chain, no perceptual claims

NameRequiredDescriptionDefault
sourceNo
targetNo
secondsNo

TDQS

C2.4/5.0
Behavior2/5

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

Annotations only say readOnlyHint=false, destructiveHint=false, openWorldHint=false; the description adds no behavioral detail beyond a disclaimer. It never says whether 'propose' writes state, what the measurement covers (LUFS, peak?), how long it takes, or what a proposal contains — and 'measure' superficially suggests a read-only operation while the annotation says otherwise, leaving the agent unsure of 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?

Very short and front-loaded, so nothing is wasted, but the brevity comes at the cost of clarity: three dangling clauses separated by commas read as notes rather than a self-contained instruction.

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?

With no output schema, zero parameter documentation, and thin annotations, the description needed to explain what is measured, what the proposal looks like, and what if anything changes. None of that is present, so an agent could not reliably invoke this tool without experimentation.

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 carries the full load for source, target, and seconds — yet it only obliquely implies 'master or track' via the resource nouns, with no mention of accepted formats for the oneOf source, what target means, or the 1–30 second analysis window.

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 fragment 'Measure master or track' names a verb and two resources, and 'propose mastering chain' hints at a second output, but the phrasing is telegraphic — it's unclear whether this analyzes audio, writes anything, or returns a chain proposal. It does not distinguish itself from close siblings master_check, master_targets, and master_build_chain.

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 context is given, and no alternative is named even though master_check, master_targets, and master_build_chain occupy adjacent territory. 'No perceptual claims' is a caveat, not guidance about when to select this tool.

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

agent_midi_previewB
Read-only

Parse bounded local SMF/RMID under output-root and preview MIDI notes; metadata is reported, never applied

NameRequiredDescriptionDefault
pathYes
slotYes
trackYes

TDQS

B3.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and destructiveHint=false, and the description adds genuinely new constraints: the file must be local and 'bounded ... under output-root' (a sandbox restriction), and metadata is 'never applied' (no side effects on the session). It stops short of saying what the preview response contains, which matters given there is no output schema.

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 action front-loaded and no filler. It is compressed to the point of using unexplained jargon, but nothing is redundant.

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?

With no output schema and 0% parameter coverage across three required params, the description should explain the track/slot addressing and what the preview reports. It only covers the read-only nature and path bound, leaving the caller unable to predict the response or fill in track/slot confidently.

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 all three parameters are required, so the description carries the full burden. It hints at a path restriction ('under output-root') but says nothing about what 'track' (string or integer) or 'slot' (0-255) mean or how they select the previewed data.

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 ('parse ... and preview MIDI notes') and a specific resource type (SMF/RMID files), which is enough to separate it from generic siblings like agent_preview or agent_arrange_preview. The jargon 'SMF/RMID' and 'output-root' are unexplained, but the core 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 Guidelines3/5

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

'preview ... metadata is reported, never applied' implies a read-only dry-run step, so an agent can infer this precedes something like agent_apply. However, no sibling is named and no explicit condition says when to use this versus agent_preview or agent_arrange_preview.

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

agent_previewC
Read-only

Preview composable official calls; symbolic references use {$ref: alias.id}

NameRequiredDescriptionDefault
labelNo
stepsYes

TDQS

C2.7/5.0
Behavior3/5

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

The annotations (readOnlyHint=true, destructiveHint=false, openWorldHint=false) already establish that this is a safe, non-executing, local operation, and "Preview" is consistent with that. The description adds the symbolic-reference convention, which is genuinely useful context, but it never says whether steps are validated, whether refs are resolved and reported, or what the preview returns.

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 tight sentence with the core purpose front-loaded and the reference syntax appended as a second clause. No filler, though the brevity comes at the cost of specification covered under other dimensions.

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?

This is a batch-orchestration tool (up to 128 steps, aliases, wait flags, cross-step references) with no output schema and 0% parameter documentation; one sentence cannot carry that load. An agent cannot determine execution semantics or how to construct a valid step list from this definition alone.

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 schema has a nested step object with method, params, as, and wait, yet the description explains only the {$ref: alias.id} syntax. It leaves the meaning of label, steps, method, wait, and the alias-binding behavior of "as" entirely undocumented in both schema and prose.

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?

"Preview" is a clear verb, but the object "composable official calls" is jargon that never states these are batched MCP tool invocations described by method/params steps. It also fails to distinguish this generic preview from the many specialized preview siblings (agent_loop_preview, agent_arrange_preview, agent_midi_preview), leaving the agent to guess which preview to pick.

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 tool versus agent_apply (the obvious execute counterpart) or any of the specialized preview tools. No prerequisites, no exclusions, no alternatives are named.

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

agent_repeat_previewC
Read-only

Preview consecutive placements using explicit native clip length in beats

NameRequiredDescriptionDefault
slotYes
countYes
trackYes
markersNo
start_beatNo
checkpoint_pathsNo
native_length_beatsYes

TDQS

C2.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds that spacing is driven by an explicit native length in beats, which is useful context, but it never states what the preview returns or how it relates to agent_apply.

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. It is efficiently structured, though the brevity reflects under-specification rather than disciplined editing.

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 7-parameter tool with no schema descriptions and no output schema, one sentence is not enough. An agent cannot tell what markers or checkpoint_paths do, what a preview result looks like, or how this pairs with the apply step.

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 7 parameters, so the description carries the full burden. It only illuminates native_length_beats; track, slot, count, start_beat, markers, and checkpoint_paths are left completely undocumented.

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 verb 'Preview' and object 'consecutive placements' give a rough idea, but 'placements' is jargon for what is presumably repeated clip placement. It does not distinguish itself from siblings agent_preview, agent_loop_preview, agent_arrange_preview, or agent_midi_preview, all of which are also previews.

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 the other agent_* preview tools or when to follow up with agent_apply. The only implied usage is 'use this when you want a repeat preview,' which the agent must infer from the name.

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

agent_statusB
Read-only

Catalog provenance, capabilities and enforced operator policy

NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is known. 'Enforced operator policy' adds a real hint that this reports constraints the agent must obey, but it doesn't say whether the policy is static, per-session, or what happens if violated.

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 clause with no filler, and the key term (capabilities/policy) is front-loaded. Nothing is wasted, though the compactness comes at the cost of specificity captured in other dimensions.

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?

With no output schema and no parameters, the description is the only place an agent can learn what this returns. It lists three noun categories but not their shape, size, or whether calling it has any cost or side effects on the agent loop, leaving the agent unable to judge relevance confidently.

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 and the schema is closed (additionalProperties: false), so there is nothing for the description to disambiguate. Baseline 4 applies.

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 phrase names the information surfaced (provenance, capabilities, operator policy), which hints at an introspection/status tool, but 'Catalog' is ambiguous as verb-vs-noun and the description never says whose status is being reported (the agent's own build, or the session). It also gives no differentiation from siblings like agent_inspect or session_info.

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 rather than agent_inspect, session_info, or the preview/apply tools. An agent must guess whether this is a prerequisite check before agent_apply or just a diagnostic read.

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

agent_verify_wavA
Read-only

Read actual output PCM; check duration/rate/channels and non-silence (peak below silence_floor_dbfs, default -80, is rejected as silent or dither-only)

NameRequiredDescriptionDefault
pathYes
channelsNo
sample_rateNo
expected_secondsNo
silence_floor_dbfsNo

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare this as a safe read-only operation, but the description adds useful behavioral detail: it reads actual output PCM, rejects peak levels below the silence floor as silent or dither-only, and mentions the default threshold of -80 dBFS. It still does not explain how pass/fail results are returned, but the key rejection criterion is disclosed.

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 dense but front-loaded sentence with no wasted words. The core action and the key failure condition are both stated immediately.

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 tool has no output schema, five parameters with zero schema descriptions, and only one required parameter. The description covers the main checks and failure condition, but it does not explain the return format, tolerance behavior for expected_seconds, or how optional parameters affect verification.

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 carry parameter meaning. It explains silence_floor_dbfs and its default, and implicitly maps duration/rate/channels to expected_seconds, sample_rate, and channels, but it leaves path semantics and the effect of omitting optional parameters undocumented.

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 a specific verification action on WAV output: reading PCM and checking duration, rate, channels, and non-silence. This is clearer than a generic tool, but it does not explicitly distinguish itself from nearby siblings such as analysis_file, agent_measure, or master_check.

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 checks but gives no explicit guidance on when to use it versus alternatives. There are no exclusions or named sibling tools, so an agent must infer that it is for post-render audio verification.

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

agent_waitC
Read-only

Bounded job waiting with progress, no restart on timeout

NameRequiredDescriptionDefault
jobYes
deadlineNo

TDQS

C2.7/5.0
Behavior3/5

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

Annotations already declare it as a safe, closed-world read, so the safety profile is covered. The description does add two non-obvious traits — the wait is time-bounded and a timeout does not restart the job — but it never says what the agent receives at timeout (partial result, error, or status) or what progress reporting looks like.

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; efficient, though its brevity is under-specification rather than true density.

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 polling/waiting tool with an undocumented deadline parameter, no output schema, and nearby siblings named jobs_wait and jobs_get, the description leaves too much unexplained: deadline units and defaults, timeout return behavior, and progress semantics.

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 carry both parameters, yet it explains neither. It implies a deadline via 'bounded' but gives no units (seconds?), no default, and no explanation of the 'job' integer beyond the ambiguous word 'job'.

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 phrase 'bounded job waiting' names a verb and resource, but 'job' is undefined in an environment that also exposes jobs_get and jobs_wait, so the agent cannot tell from the description alone how agent_wait differs from those 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?

No statement of when to prefer this over jobs_wait, jobs_get, or agent_status, and no exclusion conditions. The only hint is a behavioral property (no restart on timeout), not a selection rule.

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

analysis_captureA

Record what the master or one track plays for a few seconds (default 8, 1-30) and analyse it in the background: peak, true peak, RMS, crest factor, clipping, DC; LUFS integrated / short-term / momentary and loudness range, short-term per second; stereo correlation, width and mono loss; tonal balance (sub, bass, low-mid, mid, high-mid, high, air) and a 1/3-octave spectrum with per-band width. Starts playback if stopped. Returns a job id at once: call jobs.wait with it. One capture at a time.

NameRequiredDescriptionDefault
sourceYesWhat to listen to: "master" or {"track": <id or index>}.
secondsNoLength to capture.
start_transportNoStart playback if stopped (default true).

TDQS

A4.4/5.0
Behavior5/5

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

Goes well past the annotations: it discloses the significant side effect that playback starts if stopped (explaining readOnlyHint=false), that the call is asynchronous and returns a job id rather than results, and that only one capture may run at once. These are exactly the traits an agent needs before invoking a non-readonly, non-idempotent 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?

Front-loads the action, then the payload, then the async contract and the concurrency caveat. The metric enumeration is a long semicolon chain, but with no output schema each listed field is genuinely informative rather than filler.

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

Completeness5/5

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

With no output schema, the description is the only documentation of what comes back, and it delivers that alongside the async retrieval path, the playback side effect, and the single-capture constraint. An agent can select and invoke it correctly from this text alone.

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 100%, so the schema already documents source, seconds and start_transport. The description restates the default duration and 1-30 range and clarifies 'master or one track', but adds no syntax or semantics beyond the structured fields.

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?

States a specific verb and resource: capture what the master or one track plays and analyze it. The scope (live transport vs. offline file) implicitly distinguishes it from analysis_file and analysis_compare, and the enumerated metrics make clear exactly what kind of analysis this is.

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 clear operating context (live capture, kicks playback if stopped) and an explicit follow-up path: 'Returns a job id at once: call jobs.wait with it.' It also states the concurrency rule 'One capture at a time.' It does not explicitly say when to prefer this over analysis_file or analysis_compare for a rendered file, so no exclusion clause.

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

analysis_compareA
Read-onlyIdempotent

Where two finished captures (e.g. kick and bass, vocal and guitars) compete: band by band levels and the bands where both carry energy within a few dB of each other, strongest first. The usual cure is an EQ cut on one of them there (devices.add EQ + devices.set_params).

NameRequiredDescriptionDefault
aYesJob id from the call that started it.
bYesJob id from the call that started it.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already cover safety (read-only, idempotent, non-destructive, closed-world), so the bar is lower. The description still adds real behavior: both inputs must be finished captures, results are ordered strongest-first, and the intended remediation path is an EQ cut set up via two other tools.

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 padding. The scenario and the returned axis come first, and the recommended fix is tucked into a trailing parenthetical rather than competing with the core statement.

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?

There is no output schema, so the description must convey the return value, and it does in summary form: per-band levels plus the bands where both sources sit within a few dB, sorted strongest first. Exact field names and units are left unstated, which keeps it from a 5.

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 100% and both parameters are documented as job ids, so the schema does the heavy lifting (baseline 3). The description contributes the additional constraint that the referenced jobs must be *finished* captures, which is meaning the schema does not encode.

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 concrete verb-and-resource: comparing two finished captures band by band, returning levels and overlapping-energy bands ordered strongest first. The musical examples (kick/bass, vocal/guitars) make the resource unambiguous. It does not name a sibling to contrast with, so it stops short of 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?

The framing "where two finished captures compete" implies usage and implies the inputs must be completed analysis jobs, and it points at follow-up tools (devices_add EQ + devices_set_params) as the cure. But it never says when not to use it or how it differs from analysis_capture / analysis_file, leaving the agent to infer the workflow position.

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

analysis_fileA
Read-onlyIdempotent

Analyse an audio file (WAV, FLAC, MP3, OGG, AIFF) the same way as analysis.capture: a reference track to compare the mix with (analysis.compare), or an exported master to master.check. Reads at most the first 10 minutes. Returns a job: jobs.wait for it.

NameRequiredDescriptionDefault
pathYesAbsolute path of the file.

TDQS

A4.4/5.0
Behavior4/5

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

Adds important behavior beyond the annotations: only the first 10 minutes are read, and the call is asynchronous, returning a job that must be resolved with jobs.wait. The annotations already cover safety (readOnly, idempotent, non-destructive), so the remaining gap is minor.

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 dense sentences with no waste. Core purpose and file formats come first, followed by usage routing, then the key behavioral constraints (10-minute limit, async job). Everything is front-loaded.

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 one-parameter analysis tool with no output schema, the description covers purpose, formats, sibling routing, truncation, and the async job pattern. It doesn't describe the job result contents, but that is reasonably delegated to jobs.wait.

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 single parameter has full schema coverage, so baseline would be 3, but the description adds meaningful constraint by listing accepted file formats (WAV, FLAC, MP3, OGG, AIFF). This helps the agent validate the path argument beyond the schema's 'Absolute path' text.

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?

States a specific verb and resource ('Analyse an audio file') plus supported formats, and distinguishes this tool from siblings by naming the related workflows (analysis.compare for reference tracks, master.check for exported masters). An agent can tell what it does without opening the schema.

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?

Explains the two intended use cases clearly: reference track comparison via analysis.compare, or master verification via master.check. It doesn't explicitly state when NOT to use it, but the context is strong enough to route the agent correctly.

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

arrangement_build_songA

Lay a song out on the timeline from session scenes: each section plays one scene row for a number of bars (e.g. intro 8, verse 16, drop 16, outro 8), every MIDI track's clip in that row copied and repeated to fill it, a marker per section; TOMNIC patterns go on as their notes. Audio tracks are reported as skipped. Refuses if the range already holds clips unless clear_existing. One undo step. Then arrangement.play.

NameRequiredDescriptionDefault
markersNoAdd a marker per section (default true).
sectionsYesSections in order.
start_beatNoWhere the song starts (default 0).
clear_existingNoRemove timeline clips from start_beat on first.

TDQS

A4.3/5.0
Behavior4/5

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

Beyond the annotations, the description discloses the refusal condition (existing clips in range), the atomic 'one undo step' behavior, and that audio tracks are reported as skipped. There is mild tension worth noting: clearing timeline clips via clear_existing is a removal, while destructiveHint is false, though the opt-in and refuse-by-default design makes this defensible rather than contradictory.

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?

It is dense and front-loaded with the core mechanism first, then constraints and the next step. The semicolon-chained clauses make it a single run-on sentence that takes a second read, but nearly 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 mutating, non-idempotent tool with no output schema, the description covers the important behavior: input model, refusal condition, undo granularity, and skip reporting. It could say a bit more about what the call returns (e.g. which sections/markers were created) but nothing essential to correct invocation 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?

Schema coverage is 100%, so the baseline would be 3, but the description adds genuine semantics the schema lacks: 'scene' is a scene row, 'bars' is the per-section length, 'markers' produces one marker per section, and clear_existing scopes removal from start_beat onward. That meaningfully raises it above the schema-only baseline.

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 gives a specific verb and resource (lay a song out on the timeline from session scenes) plus the mechanism: one scene row per section, MIDI clips copied and repeated to fill the row, a marker per section, TOMNIC patterns expanded to notes. This clearly separates it from siblings such as arrangement_place_clip (single clip) or arrangement_edit_clip.

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?

It provides concrete usage context: an example section plan (intro 8, verse 16, drop 16, outro 8), the precondition that the target range must be empty unless clear_existing is set, and the follow-up action 'Then arrangement.play.' It does not, however, contrast itself with alternative arrangement-building routes like agent_arrange_timeline or arrangement_place_clip.

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

arrangement_clearA
DestructiveIdempotent

Remove timeline clips starting inside a range (default: all), on one track or all. Undoable.

NameRequiredDescriptionDefault
trackNoTrack id (UUID string from tracks.list, stable) or 0-based index (shifts when tracks are added or moved).
end_beatNoBefore (default: the end).
start_beatNoFrom (default 0).

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered. The description adds two things annotations cannot: the operation is undoable, and clips are matched by start position rather than overlap — a meaningful distinction for a destructive range operation. It does not say whether clips spanning the boundary are preserved 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.

Conciseness5/5

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

One sentence carrying action, selection rule, scope and defaults, followed by a one-word reversibility marker. Nothing is padded and the destructive defaults are front-loaded.

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 destructive tool with full schema coverage and no output schema, this covers action, matching semantics, defaults and undo. It stops just short of telling the agent how many clips were removed or how to identify them afterwards.

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 100%, so the baseline is 3; the description earns above that by supplying the per-call defaults in one place — no track means all tracks, no start means 0, no end means the end of the arrangement. That said, it does not address the schema's warning that index-based track ids shift when tracks move.

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?

States a specific verb ('Remove') plus resource ('timeline clips'), with the precise selection rule ('starting inside a range') and scope ('on one track or all'). The 'starting inside' qualifier also implicitly sets it apart from range-overlap or single-clip removal siblings such as arrangement_remove_clip.

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 '(default: all)' note signals that calling with no arguments wipes the whole arrangement, which is useful context for the caller. But there is no explicit guidance on when to pick this over arrangement_remove_clip, clips_clear, or edit_undo, leaving the agent to infer the choice from names alone.

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

arrangement_copy_clipA

Copy one timeline clip to another beat, on the same track or another one (to_track; MIDI clips go to MIDI tracks). The copy is independent: edit or mute it on its own to make a variation. Undoable.

NameRequiredDescriptionDefault
clipYesTimeline clip index on the track, from arrangement.get.
trackYesTrack id (UUID string from tracks.list, stable) or 0-based index (shifts when tracks are added or moved).
to_beatYesWhere the copy starts.
to_trackNoTrack id (UUID string from tracks.list, stable) or 0-based index (shifts when tracks are added or moved).

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already establish that this is a non-read-only, non-destructive, non-idempotent mutation. The description adds meaningful behavior: the copy is independent (deep copy, not linked), MIDI clips can only be copied to MIDI tracks, and the operation is undoable. It does not mention permissions or return values, but the added constraints are useful.

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?

Three compact sentences with no waste. The core action is front-loaded, followed by the independence and undoability details.

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 four-parameter mutation tool with full schema coverage, safety annotations, and no output schema, the description covers the essential behavior: copying, track compatibility, independence of the copy, and undoability. It could be strengthened by explicitly distinguishing this from sibling tools, but nothing critical to invocation 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?

Schema coverage is 100%, so the baseline is 3. The description adds meaning beyond the schema by clarifying that to_beat is the start beat of the copy and that to_track must be track-type compatible (MIDI clips go to MIDI tracks). It does not elaborate on clip or track index semantics, but it does add value for two 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?

States a specific verb and resource: copying one timeline clip to another beat, optionally across tracks. This distinguishes it reasonably from generic placement or duplication tools, though it never names the closest siblings such as arrangement_place_clip or clips_duplicate.

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 it by explaining that the copy is independent and can be edited or muted to make a variation. However, it gives no explicit when-not guidance and does not name alternatives or explain how it differs from arrangement_place_clip or clips_duplicate.

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

arrangement_edit_clipA
Idempotent

Change one timeline clip (index from arrangement.get): move it, change its length (MIDI grows or shrinks, audio only shrinks), mute it, rename it, set its gain. Fields left out stay. E.g. mute the bass in the second half of a drop after copying it there. Undoable.

NameRequiredDescriptionDefault
clipYesTimeline clip index on the track, from arrangement.get.
nameNoClip name.
mutedNoSilence the clip without removing it.
trackYesTrack id (UUID string from tracks.list, stable) or 0-based index (shifts when tracks are added or moved).
gain_dbNoClip gain in dB.
start_beatNoMove the clip to start here.
length_beatsNoNew length.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare non-readonly, idempotent, non-destructive, so the safety profile is covered. The description adds genuinely new behavior: partial-update semantics (unspecified fields preserved), type-dependent length constraints (MIDI grows or shrinks, audio only shrinks), and reversibility ("Undoable"). It does not cover failure modes or the response shape, keeping it at 4.

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?

Three tight sentences: the core operation and its editable fields come first, the patch rule second, an example third, with "Undoable" as a one-word tail. Every sentence carries distinct information with no redundancy against the schema or annotations.

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 7-parameter mutation tool with no output schema, the description covers the essentials an agent needs: what changes, what is preserved, undo availability, and the audio/MIDI length asymmetry. Minor gaps remain around error conditions (nonexistent clip index, out-of-range gain) and confirmation behavior, but nothing critical for correct invocation is missing.

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

Parameters5/5

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

Schema coverage is 100%, so the baseline is 3, but the description earns above baseline by explaining semantics the schema cannot: omitted fields retain their value, and length_beats behaves differently by clip type (MIDI can extend, audio cannot). It also cross-references where the clip and track indices come from (arrangement.get, tracks.list).

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 one timeline clip") and enumerates exactly which attributes can be modified: position, length, mute, name, gain. It also pins the identifier source ("index from arrangement.get"). It does not explicitly differentiate itself from near siblings such as arrangement_place_clip, arrangement_copy_clip, arrangement_remove_clip, or clips_set_length, so an agent must infer that this is the in-place mutation tool.

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?

Provides a concrete usage scenario ("mute the bass in the second half of a drop after copying it there") that clarifies the intended editing workflow, plus the patch rule "Fields left out stay," which tells the agent it can make partial updates safely. No explicit when-not-use or named alternative, so it stops 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.

arrangement_getA
Read-onlyIdempotent

The song on the timeline: its length, whether the arrangement or the session is playing, the loop region, the markers (sections) and every track's clips with start and length in beats.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety needs no restating. The description adds real value by disclosing the shape of the payload — playing state, loop region, markers, and clips with start/length in beats — which matters especially because no output schema exists. It stops short of noting cost or size on very large sessions.

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 compact sentence with no filler, and the resource ('the song on the timeline') is front-loaded. It loses a point because the verbless noun-phrase opening reads more like a field list than a declaration of what the call does.

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 parameterless getter with annotations covering the safety profile and no output schema, the description carries enough return-value detail to set expectations. It is not exhaustive — units, size and ordering of the returned clips and markers are unstated — but nothing needed to invoke it 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 takes zero parameters, which sets the baseline at 4. There is nothing to clarify, and the description correctly adds no fictitious filtering or scope arguments that would mislead an agent.

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 precisely and enumerates the concrete contents returned (length, play state, loop region, markers, per-track clips with beat positions). That is a clear read operation, but there is no explicit verb and no differentiation from siblings that also surface clip/track data, such as clips_list or tracks_list.

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 call this versus alternatives like clips_list, tracks_list or transport_get, and no mention of preconditions. Usage is only inferable from the list of returned fields, which is the same gap the calibration MID example was penalized for.

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

arrangement_place_clipA

Copy one session clip onto its track's timeline at start_beat; length_beats longer than the clip repeats it. MIDI tracks. Undoable.

NameRequiredDescriptionDefault
slotYes0-based clip slot (scene row) on the track.
trackYesTrack id (UUID string from tracks.list, stable) or 0-based index (shifts when tracks are added or moved).
start_beatYesStart on the timeline.
length_beatsNoLength (default one loop).

TDQS

A3.7/5.0
Behavior3/5

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

The description adds useful behavioral context beyond the annotations: the operation is undoable, applies to MIDI tracks, and repeats the clip when length_beats exceeds the clip length. It does not clarify overlap behavior or whether repeated calls create duplicate timeline clips, which matters for a non-idempotent mutation.

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 short, front-loaded with the core action, and every clause adds relevant information. The telegraphic phrasing is compact without being verbose.

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 four-parameter placement tool with complete schema coverage and annotations, the description supplies the key constraints: MIDI-only applicability, undoability, and repeat behavior for length_beats. It could be more complete by explicitly distinguishing itself from arrangement_copy_clip and by clarifying overlap or duplicate-call 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?

Schema description coverage is 100%, so the schema already carries most parameter meaning. The description adds value beyond the schema by explaining that length_beats longer than the source clip causes repetition, which is not stated in the length_beats schema 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?

The description states a specific action on a specific resource: copying a session clip onto its track's timeline at start_beat. It implicitly distinguishes the source as a session clip rather than an arrangement clip, which helps against siblings like arrangement_copy_clip, but it does not explicitly name or contrast those alternatives.

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 phrase 'Copy one session clip onto its track's timeline,' and 'MIDI tracks' gives an applicability constraint. However, there is no explicit guidance on when to use this versus arrangement_copy_clip, arrangement_edit_clip, or clips_launch, and no when-not conditions are stated.

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

arrangement_playA
Idempotent

Play the timeline from a beat: every track follows the arrangement again (like Back to Arrangement), the playhead moves, playback starts.

NameRequiredDescriptionDefault
from_beatNoStart (default 0).

TDQS

A3.8/5.0
Behavior4/5

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

With annotations already declaring readOnly=false, idempotent=true, and destructive=false, the description adds the key behavioral effect: all tracks resume following the arrangement, the playhead moves, and playback starts. It does not explain how existing session clip playback is overridden, but it supplies substantive state-change context beyond the annotations.

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 definition is a single front-loaded sentence with a helpful parenthetical analogy and no wasted text. Every clause contributes to explaining the action or its effect.

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 playback command with full annotation coverage and no output schema, the description explains what happens and the main side effect. It could be slightly richer about its interaction with transport_stop or transport_play, but it is sufficient to invoke correctly.

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

Parameters3/5

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

Schema description coverage is 100%, and the single from_beat parameter is already documented in the schema as 'Start (default 0)'. The description only echoes 'from a beat' without adding units, range, or behavioral detail, so the baseline 3 is appropriate.

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 ('Play the timeline from a beat') and distinguishes this from generic transport playback by noting that every track follows the arrangement again, like Back to Arrangement. It does not explicitly name the transport_play sibling, but the arrangement-specific behavior is clear enough to separate the two.

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 use case is implied — re-engaging arrangement playback from a beat, similar to Back to Arrangement — but the description never explicitly says when to choose this over transport_play or when not to use it. No prerequisites 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.

arrangement_remove_clipA
Destructive

Delete one timeline clip (index from arrangement.get; later clips on the track move down one index). Undoable.

NameRequiredDescriptionDefault
clipYesTimeline clip index on the track, from arrangement.get.
trackYesTrack id (UUID string from tracks.list, stable) or 0-based index (shifts when tracks are added or moved).

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is covered; the description adds the non-obvious side effect that later clips on the track shift down one index, plus that the operation is undoable. That reindexing warning is exactly the kind of consequence an agent cannot infer from annotations.

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 parenthetical-loaded sentence with zero filler; the destructive action, the index source, the reindex consequence, and undoability are all front-loaded.

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 destructive mutation with no output schema, the description covers safety, side effects, and recovery, which is what an agent needs before calling. Return value is not described, though 'Undoable' covers the main post-call concern.

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

Parameters3/5

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

Schema description coverage is 100%, and both schema fields already explain the clip index source (arrangement.get) and the track id/index distinction. The description merely echoes the index provenance, so baseline 3 applies.

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 and resource ('Delete one timeline clip') with an explicit scope qualifier ('one') that separates it from bulk siblings like arrangement_clear and clips_clear. The delete target and index source are stated in the same breath.

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?

'Delete one timeline clip' plus the pointer to arrangement.get implies this is the single-clip removal path rather than the bulk clear tools, and 'Undoable' tells the agent recovery is available. It stops short of naming alternatives or stating prerequisites explicitly.

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

arrangement_set_loopA
Idempotent

Set and enable (or disable) the arrangement loop region in beats. Undoable.

NameRequiredDescriptionDefault
enabledNoLoop on (default true).
end_beatYesLoop end.
start_beatYesLoop start.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=true), so the bar is lower. The description still earns credit by adding 'Undoable', a genuinely non-derivable behavioral fact, and by clarifying the enabled flag can also turn the loop off rather than only set it.

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 short sentence with the action front-loaded and zero filler; 'Undoable' is appended as a compact trailing fact. Nothing to cut and nothing buried.

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?

A simple three-parameter setter with full schema coverage, clear annotations, and no output schema, so little prose is required. It is nearly sufficient, with only minor gaps: what happens to an existing loop when a new range is set, and whether start_beat must be less than end_beat (the schema does not enforce it).

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters and baseline 3 applies. The description does add unit semantics ('in beats') that the schema's terse 'Loop start.'/'Loop end.' entries omit, but contributes nothing else beyond the 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 ('Set and enable (or disable)') and a specific resource ('the arrangement loop region'), scoped by unit ('in beats'). An agent can distinguish it from arrangement_get or arrangement_build_song, though it does not name those siblings 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?

Usage is implied rather than stated: you'd call it to define the transport loop range. There is no explicit when/when-not, no mention of arrangement_get as the read counterpart for inspecting the current loop, and no note on interaction with transport_play or scene/clip loop behavior.

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

audio_importA

Load an audio file (WAV, AIFF, FLAC, MP3, OGG) into a session slot of an audio track, as dropping it from the browser does; arrangement.place_clip then puts it on the timeline. Needs file access, granted in Omni's Settings (AI Create). Undoable.

NameRequiredDescriptionDefault
pathYesAbsolute path of the audio file.
slotYes0-based clip slot (scene row) on the track.
trackYesTrack id (UUID string from tracks.list, stable) or 0-based index (shifts when tracks are added or moved).

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare the write/mutation profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), so the bar is lower, and the description still adds real value: the required file-access permission and the explicit 'Undoable' reversibility guarantee. It does not say what happens if the target slot already holds a clip, which is the one behavioral 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?

Two compact sentences, front-loaded with the action and supported formats, followed by the sequencing hint and prerequisites. No filler or redundancy.

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 full schema coverage and no output schema, the description covers formats, destination, permission prerequisite, undoability, and the follow-on step. Only the overwrite/occupied-slot behavior is left unaddressed.

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

Parameters3/5

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

Schema description coverage is 100% and all three parameters are well documented, including the UUID-vs-index tradeoff for track and the 0-based slot semantics. The description adds no parameter-level detail beyond the schema, so the baseline 3 applies.

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?

States a specific verb (load) plus the resource (audio file), enumerates supported formats, and pins the destination as a session slot on an audio track. The analogy to browser drag-and-drop and the pointer to arrangement.place_clip for timeline placement separate it from siblings unambiguously.

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?

Explains the prerequisite (file access granted in Omni's Settings) and routes the agent to arrangement.place_clip for the timeline-placement step, which implicitly defines this tool's scope as session-slot loading only. It stops short of naming an explicit when-not-to-use case or contrasting with audio_transcribe/audio_split_stems.

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

audio_split_stemsA

Split a WAV mix into vocals, drums, bass and other with Demucs (the model downloads on first use). Returns a job; its result has the four file paths, which audio.import can load. Needs file access (Settings, AI Create).

NameRequiredDescriptionDefault
pathYesAbsolute path of the WAV to split.
folderYesAbsolute path of the folder for the stems.

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already mark it as non-read-only, non-idempotent, closed-world, and non-destructive, but the description adds important behavior beyond them: the model downloads on first use, the call returns a job rather than finished files directly, and the job result contains four file paths. The file-access requirement is also disclosed.

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?

Three sentences with no wasted wording. The core operation is front-loaded, followed by the return/job behavior and prerequisite 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 tool with no output schema, the description explains the return shape (a job whose result has four file paths) and the downstream audio.import step. It is nearly complete, though it could name jobs_get or jobs_wait for the job-polling workflow.

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 100%, so both parameters ('path' and 'folder') are already fully described in the input schema. The description reinforces that the input is a WAV mix and the folder is for stems, but adds no new syntax, constraints, or edge-case guidance.

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?

States a specific verb and resource: 'Split a WAV mix into vocals, drums, bass and other with Demucs'. It also names the downstream consumer ('audio.import can load'), which helps distinguish it from siblings like audio_import and export_stems.

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 clear operational context and a prerequisite ('Needs file access (Settings, AI Create)'), and indicates that the resulting stems can be loaded with audio.import. It does not explicitly state when not to use it or compare it to export_stems, so it stops short of full routing guidance.

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

audio_transcribeA
Read-onlyIdempotent

Audio to notes with Basic Pitch: a file (path) or the audio in a session slot (track + slot). mode poly (chords), melody (one line) or bass. Returns a job; its result has the notes in beats at the project tempo, ready for clips.write_midi, and the detected length. File paths need file access (Settings, AI Create).

NameRequiredDescriptionDefault
modeNoWhat to hear (default poly).
pathNoAbsolute path of an audio file.
slotNo0-based clip slot (scene row) on the track.
trackNoTrack id (UUID string from tracks.list, stable) or 0-based index (shifts when tracks are added or moved).
min_msNoShortest note in ms.
sustainNoHow long notes hold.
sensitivityNoHow readily a note is heard.

TDQS

A4.4/5.0
Behavior4/5

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

Beyond the readOnly/idempotent annotations, it discloses that the call is asynchronous ("Returns a job"), what the job result contains (notes in beats at project tempo plus detected length), and the permissions prerequisite. The main remaining gap is that it never says how to retrieve the job, leaving the agent to infer jobs_get/jobs_wait.

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?

Four dense sentences with no filler; the core transformation and input options are front-loaded, followed by output shape, then the permission caveat. Every clause carries actionable 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?

With no output schema, the description does the work of explaining the job/result model and the note format, which is what an agent needs. The one omission is the job-retrieval path (jobs_get/jobs_wait) and whether polling or waiting is expected.

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 100%, so the baseline is 3, but the description adds genuine meaning the schema lacks: path and slot are alternative input routes rather than independent settings, and the enum values are glossed (poly = chords, melody = one line, bass). It does not touch min_ms, sustain, or sensitivity, which are left to the schema.

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

Purpose5/5

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

The opening clause states a concrete transformation (audio to notes) and names the engine (Basic Pitch), then enumerates the two input sources (file path or session slot) and the three modes. An agent can distinguish this from audio_import or audio_split_stems purely from the text, without opening the schema.

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?

It clarifies input selection (a file path OR a track+slot pair) and the prerequisite that file paths require file access enabled in Settings / AI Create. It also points forward to clips.write_midi as the consumer of the result, which implies the intended workflow. It stops short of explicit exclusions such as when to prefer audio_import or clips_generate_melody instead.

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

automation_clearA
DestructiveIdempotent

Remove the automation of one parameter on a track (the lane stays, empty). Undoable.

NameRequiredDescriptionDefault
paramYesWhat to automate: "volume" (dB), "pan" (-1..1), or a params.list key (instrument:<id>, fx:<slot>:<index>) in that parameter's range.
trackYesTrack id (UUID string from tracks.list, stable) or 0-based index (shifts when tracks are added or moved).

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, readOnlyHint=false, so the safety profile is covered. The description adds non-obvious behavior beyond annotations: the automation lane is preserved but left empty, and the action is undoable — both useful facts an agent wouldn't know otherwise.

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 tight sentence with the key scope constraint parenthetically front-loaded. No filler; every clause 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 2-param destructive mutation with full schema coverage and no output schema, the description covers the essential behavioral facts (lane remains, undoable). Minor gap: no mention of error behavior or confirmation, but annotations carry most of the 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 100% and both parameters are fully documented in the schema (param types, track id/index semantics). The description adds nothing about parameters beyond the schema, so baseline 3 applies.

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?

States a specific verb (Remove) and resource (the automation of one parameter on a track), plus the scope clarification that the lane remains but empty. Clearly distinguishable from automation_list and automation_write by sibling names alone.

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?

Implicitly conveys usage (clearing automation), but never explicitly contrasts with automation_write or says when-not to use it. An agent can infer the intent but gets no explicit routing guidance.

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

automation_listB
Read-onlyIdempotent

The automation lanes of a track on the arrangement timeline: what each drives (its key), how many segments and points, the automated span in beats.

NameRequiredDescriptionDefault
trackYesTrack id (UUID string from tracks.list, stable) or 0-based index (shifts when tracks are added or moved).

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and closed-world, so the safety profile is fully covered. The description adds the shape of the returned data (per-lane key, segment and point counts, beat span), which is genuinely useful given there is no output schema, but says nothing about ordering, lane limits, or behavior for tracks with no automation.

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 zero padding, front-loaded on the resource and followed by the returned fields. It is a noun phrase rather than a complete statement, which makes it slightly less crisp as an opener.

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 one-parameter read-only list with full annotation coverage and no output schema, the description covers both the resource and the return contents. Only minor gaps remain: no guidance on when to call it relative to the automation write/clear siblings.

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

Parameters3/5

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

Schema description coverage is 100% and the schema already explains the UUID-vs-0-based-index duality and the index-shifting caveat in detail. The description contributes nothing about the track parameter, so the baseline of 3 applies.

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 a specific resource — the automation lanes of a track on the arrangement timeline — and enumerates what is returned (key, segment/point counts, span in beats). It never uses an explicit verb like 'list', and it doesn't name the sibling it complements (automation_write / automation_clear), but the resource 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 automation_write or automation_clear, and no prerequisite context (e.g., 'call before writing to see existing lanes'). The read-only intent is inferable only from the name and annotations, not from the description.

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

automation_writeA
Idempotent

Automate a track's volume, pan or any parameter over the song: points at song beats with values in the parameter's own unit; the lane is created if needed and its automation replaced. E.g. a filter sweep through a break: {param: "instrument:16", points: [{beat: 96, value: 400}, {beat: 128, value: 8000}]}. Plays when the arrangement plays. Undoable.

NameRequiredDescriptionDefault
curveNoHow each point moves to the next (default linear).
paramYesWhat to automate: "volume" (dB), "pan" (-1..1), or a params.list key (instrument:<id>, fx:<slot>:<index>) in that parameter's range.
trackYesTrack id (UUID string from tracks.list, stable) or 0-based index (shifts when tracks are added or moved).
pointsYesBreakpoints in time order.

TDQS

A4.5/5.0
Behavior5/5

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

The description adds important behavior beyond annotations: the lane is created automatically if needed, existing automation is replaced, the result plays with the arrangement, and the operation is undoable. These details are consistent with readOnlyHint=false, idempotentHint=true, and destructiveHint=false because replacement is idempotent and undoable.

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 front-loaded with the core action and scope, followed by a useful concrete example and two short behavioral notes. Every sentence adds value without unnecessary length.

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

Completeness5/5

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

Given full schema coverage, annotations covering safety and idempotency, and no output schema, the description is complete enough to call the tool correctly. It covers purpose, replacement behavior, playback timing, and undoability.

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 100%, so the schema already documents track, param, points, and curve. The description reinforces beat/value semantics and provides a concrete example, but it does not add new meaning for curve or the track id-vs-index distinction beyond what the schema provides.

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 gives a specific verb and resource: automate a track's volume, pan, or any parameter over the song. It also distinguishes the write behavior by stating that the lane is created if needed and existing automation is replaced, separating it from automation_list and automation_clear.

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?

It provides clear context for use: writing breakpoints at song beats over the arrangement, with an example of a filter sweep. It does not explicitly name alternatives like automation_list or automation_clear, or state when not to use this tool, so it falls short of full routing guidance.

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

clips_clearA
DestructiveIdempotent

Empty a session clip slot (notes, audio, sequencer). Undoable.

NameRequiredDescriptionDefault
slotYes0-based clip slot (scene row) on the track.
trackYesTrack id (UUID string from tracks.list, stable) or 0-based index (shifts when tracks are added or moved).

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the description's real contribution is 'Undoable' (reversibility via edit_undo) and the enumeration of what content is wiped. It stops short of saying whether the slot becomes empty or the clip is removed entirely.

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?

Eight words, front-loaded with the action and target, with the reversibility caveat appended. Nothing wasted and nothing buried.

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 mutation tool with rich annotations and full schema coverage, the description covers target, effect and reversibility. Only the post-clear state of the slot is left ambiguous.

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

Parameters3/5

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

Schema description coverage is 100%, with both 'track' (UUID vs shifting 0-based index) and 'slot' (0-based scene row) fully documented in the schema. The description adds no parameter meaning beyond that, so baseline 3 applies.

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: 'Empty a session clip slot', and enumerates what gets removed (notes, audio, sequencer). The word 'session' implicitly separates it from arrangement_clear and clips_stop, but 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 Guidelines3/5

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

Usage is only implied by the noun phrase 'session clip slot'; there is no explicit when-to-use, no prerequisites (e.g. clip must exist), and no routing away from clips_stop or arrangement_clear. The 'Undoable' note is the only contextual cue.

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

clips_duplicateA
Idempotent

Copy a session clip to another slot, on the same track or another one of the same kind (MIDI to MIDI, audio to audio). Overwrites the target. Undoable.

NameRequiredDescriptionDefault
slotYes0-based clip slot (scene row) on the track.
trackYesTrack id (UUID string from tracks.list, stable) or 0-based index (shifts when tracks are added or moved).
to_slotYes0-based clip slot (scene row) on the track.
to_trackNoTrack id (UUID string from tracks.list, stable) or 0-based index (shifts when tracks are added or moved).

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly=false, idempotent=true, destructive=false, so safety is partly covered. The description adds the two facts an agent actually needs before calling: the target slot's existing clip is overwritten, and the operation is undoable. The overwrite wording sits in mild tension with destructiveHint=false, but 'Undoable' reconciles it, so no genuine contradiction.

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?

Three short sentences, front-loaded with the action, then the compatibility constraint and the overwrite/undo consequences. Nothing restates the name and nothing is padding.

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 4-parameter mutation with full schema coverage and no output schema, the description covers the essential unknowns: type-compatibility restriction, target overwrite, and undoability. Minor omissions are what the call returns and whether the source clip remains in place.

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 100% and both track parameters are fully documented (UUID vs 0-based index, slot ranges), so the schema does the heavy lifting. The description only implicitly clarifies that to_track is optional ('same track or another one') and adds no slot or index semantics beyond the schema.

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?

States a specific verb and resource (copy a session clip to another slot) plus the scope constraint (same track or another of the same kind, MIDI→MIDI, audio→audio). That framing cleanly separates it from arrangement_copy_clip and clips_write_midi without needing to name them.

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?

The description supplies the operative condition: destination must be the same track or a track of the same kind, which tells the agent when this call will succeed. It stops short of naming an alternative (e.g. arrangement_copy_clip for timeline copies) or stating when not to use it.

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

clips_generate_melodyA
Idempotent

Write a melody into a MIDI slot with the piano roll's melody generator: a style (stepwise_flow, minimal_cell, classical_arch, funk_groove, celtic_reel, bebop_line, arpeggio_loop, synth_arp, sequence_run, ambient_drift, tension_build, modal_motive), a key, bars, register and density. It sits on the chords of the slot's chord lane, or of chords_from (e.g. the pad slot written by clips.write_progression). Same seed, same melody. Undoable.

NameRequiredDescriptionDefault
keyYes
barsNoBars to write (default 4).
seedNoSame seed, same melody (default 1).
slotYes0-based clip slot (scene row) on the track.
styleYesMelody style.
trackYesTrack id (UUID string from tracks.list, stable) or 0-based index (shifts when tracks are added or moved).
densityNoNotes per bar (default medium).
registerNoPitch range (default mid).
chords_fromNo

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare non-read-only, idempotent, non-destructive; the description adds two real facts beyond them — determinism from the seed and that the write is undoable. It does not say whether existing notes in the slot are replaced or merged, nor any clip-length handling, which is the main behavioral question for a write into an existing slot.

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 sentences, front-loaded with purpose then the harmonization rule, with no filler. The full enumeration of twelve style values restates the schema enum and is the one segment that does not earn its space.

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 9-parameter, nested-object write tool with no output schema, the description covers the core decision points (style, harmonic source, determinism, reversibility). The remaining gap — overwrite versus merge semantics for the target slot — is the one thing an agent still has to guess.

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 78% and the description adds meaning on top: the seed's determinism contract, and how chords_from relates to the slot's chord lane with a concrete example. The twelve style names are repeated from the enum, so it adds little for style itself.

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?

"Write a melody into a MIDI slot with the piano roll's melody generator" gives a specific verb, resource, and the generator it uses, and the parameter roll-call (style, key, bars, register, density) makes it clearly distinct from clips_write_midi (explicit notes) and clips_write_progression (chords).

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?

It explains the harmonic source decision: the slot's own chord lane by default, or chords_from pointing at another slot, with a concrete workflow example (the pad slot written by clips.write_progression). It never states when to prefer this over clips_write_midi or what happens if the slot already has notes, so the guidance is clear but not exclusive.

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

clips_get_notesA
Read-onlyIdempotent

Notes of a session MIDI clip (pitch, start and duration in beats, velocity) and its loop length.

NameRequiredDescriptionDefault
slotYes0-based clip slot (scene row) on the track.
trackYesTrack id (UUID string from tracks.list, stable) or 0-based index (shifts when tracks are added or moved).

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds real value beyond that by disclosing the return contents and the unit convention (times in beats), which the agent cannot get from any output schema since none exists. It stops short of saying what happens for an empty slot or a non-MIDI clip.

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 fragment with zero filler; every token carries information. It reads as a return-value spec rather than an action statement, which is slightly less scannable than a verb-first sentence but costs no waste.

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 output schema, the description is the only source on return values and it does list the fields, but not their structure (flat list? per-note objects?) or ordering, and it says nothing about empty slots or non-MIDI clips. Adequate for a simple two-parameter read, but not fully 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 description coverage is 100% — both 'track' (UUID or shifting 0-based index) and 'slot' (0-based scene row, 0-255) are fully documented in-schema. The description adds no parameter-level detail beyond implying that track+slot identify the clip, so the baseline 3 applies.

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?

Names the exact resource — notes of a session MIDI clip — and enumerates the returned fields (pitch, start, duration, velocity) plus loop length, so the agent knows precisely what it gets. It does not distinguish itself from nearby siblings such as clips_list (finding the clip) or arrangement_get (non-session clip data), leaving that inference to the agent.

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 phrase 'session MIDI clip' implicitly scopes usage: not arrangement clips, not audio clips. There is no explicit when-to-use guidance, no mention of using clips_list to discover a valid track/slot first, and no stated alternatives or preconditions.

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

clips_launchA
Idempotent

Play a session clip, quantised like a click on its slot. Starts the transport unless start_transport is false.

NameRequiredDescriptionDefault
slotYes0-based clip slot (scene row) on the track.
trackYesTrack id (UUID string from tracks.list, stable) or 0-based index (shifts when tracks are added or moved).
start_transportNoStart playback if stopped (default true).

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare non-destructive, idempotent, non-read-only, so the bar is lower; the description still adds real value by disclosing the transport side effect ('starts the transport unless start_transport is false') and the quantised launch timing. It does not say what happens when the target slot is empty.

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, no filler, with the core action stated first and the transport side effect immediately after. Every clause 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 3-parameter tool with full schema coverage and no output schema, the description covers the action and its main side effect. It falls slightly short on failure behaviour (empty slot, invalid track) which an agent might need before committing.

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 100% and each parameter already carries its own description, including the track UUID-vs-index tradeoff and the start_transport default. The description only echoes start_transport, adding nothing beyond the schema, so baseline 3 applies.

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?

A specific verb (Play) and resource (a session clip) with a scoping qualifier ('quantised like a click on its slot'). It is clearly distinguishable from clips_stop and from scenes_launch, but it never names those siblings to make the boundary explicit.

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 verb and the quantisation note, but there is no explicit guidance on when to choose this over scenes_launch (whole-scene) or transport_play, nor any mentioned prerequisites such as the track/slot needing an existing clip.

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

clips_listB
Read-onlyIdempotent

The session clip slots (scene rows) of a track: empty or not, kind (midi/audio/sequencer), loop length in beats, note count, playing / queued.

NameRequiredDescriptionDefault
trackYesTrack id (UUID string from tracks.list, stable) or 0-based index (shifts when tracks are added or moved).

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety is covered. The description adds value by enumerating the reported fields, which substitutes for the absent output schema. It does not state ordering (scene index order?), whether empty slots are always included, or what 'queued' means operationally.

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 dense sentence with no filler and the resource scope front-loaded before the field enumeration. It is a noun-phrase fragment rather than a sentence, which is slightly terse for an agent skimming for selection cues, but nothing 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?

For a one-parameter read tool with full annotation coverage and no output schema, the field enumeration covers most of what an agent needs. Missing: result ordering, whether empty slots appear, and any hint of result shape (array of objects vs. keyed map), which the absent output schema would otherwise carry.

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?

Single parameter with 100% schema description coverage; the schema already explains the UUID-vs-index tradeoff and the index instability caveat. The description says nothing about the track argument, so baseline 3 applies — it neither adds nor detracts from what the schema provides.

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 specific resource — the session clip slots (scene rows) belonging to one track — and enumerates the per-slot facts reported (empty/occupied, kind, loop length, note count, playing/queued). An agent can distinguish this from scenes_list (whole scenes) and clips_get_notes (note payload of one clip) without opening a schema. It lacks an explicit verb ('list'), but the resource scope 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 only implied: an agent infers this is the way to survey what fills a track's scene slots before doing anything clip-related. There is no explicit when-to-use statement and no named alternative (e.g. scenes_list for a per-scene cross-track view, clips_get_notes when note content is needed).

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

clips_set_lengthA
Idempotent

Set the loop length of a session clip in beats (notes past the end stay but do not play). Undoable.

NameRequiredDescriptionDefault
slotYes0-based clip slot (scene row) on the track.
trackYesTrack id (UUID string from tracks.list, stable) or 0-based index (shifts when tracks are added or moved).
length_beatsYesLoop length in beats.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare idempotent=true and destructive=false, but the description adds value beyond them: 'notes past the end stay but do not play' discloses the non-destructive side effect on out-of-range MIDI, and 'Undoable' confirms recoverability. It does not say what happens when the target slot is empty or whether an error is raised.

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 front-loaded clause plus a precisely chosen parenthetical and a one-word reversibility note. Nothing is padded and the most decision-relevant constraint (beats, retention behavior) comes first.

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 three-parameter mutation with full schema coverage, annotations, and no output schema, the description covers purpose, side effects, and reversibility. It stops short of stating failure modes or preconditions for slot occupancy.

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 100%, so the baseline is 3, but the description adds real meaning for length_beats by explaining the consequence of shortening the loop (content is retained, not truncated). Track and slot semantics are left entirely to the schema.

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?

States a specific verb ('Set'), a specific resource ('loop length of a session clip'), and a unit ('in beats'). The 'session clip' scoping cleanly separates it from siblings like arrangement_set_loop and clips_transform without needing to name 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 single-purpose nature makes the use case inferable, but there is no explicit guidance on when to use this versus alternatives such as clips_transform or clips_duplicate, and no stated preconditions (e.g. a clip must already exist in that slot).

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

clips_stopA
Idempotent

Stop the session clip of one track, or of every track when no track is given.

NameRequiredDescriptionDefault
trackNoTrack id (UUID string from tracks.list, stable) or 0-based index (shifts when tracks are added or moved).

TDQS

A3.7/5.0
Behavior3/5

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

The annotations already establish that this is a non-read-only, idempotent, non-destructive operation. The description adds the important behavioral detail that omitting track stops all tracks, but it does not describe any additional side effects, return behavior, or prerequisites.

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 definition is a single front-loaded sentence with no wasted wording. It communicates the core action and the all-tracks default efficiently.

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 mutation with annotations covering safety and no output schema, the description is largely complete. Its main gap is the lack of explicit comparison with alternative clip or transport controls.

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 100%, and the schema already explains UUID versus 0-based index semantics. The description adds meaning beyond the schema by stating that no track means every track, which clarifies the optional parameter's default scope.

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: stopping the session clip of one track or all tracks. It is clear and scoped, but it does not explicitly distinguish itself from nearby siblings such as clips_launch, clips_clear, or transport_stop.

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 explains the effect of omitting track (stop every track) and supplying one (stop that track), which is useful invocation guidance. However, it gives no explicit when-to-use guidance versus alternative clip or transport tools, and no exclusions.

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

clips_transformA

Edit every note of a MIDI clip at once: transpose (semitones), quantize starts to a grid in beats (0.25 = 1/16 in 4/4) with a strength, scale and offset velocities. Undoable.

NameRequiredDescriptionDefault
slotYes0-based clip slot (scene row) on the track.
trackYesTrack id (UUID string from tracks.list, stable) or 0-based index (shifts when tracks are added or moved).
quantizeNoGrid in beats.
transposeNoSemitones.
velocity_scaleNoVelocity multiplier.
velocity_offsetNoAdded to velocity after scaling.
quantize_strengthNoShare of the way to the grid (default 1).

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare the safety profile (readOnly=false, destructiveHint=false, idempotentHint=false). The description adds two behaviors not in the structured data: the operation applies to *every* note in the clip (whole-clip scope) and the change is undoable, which is essential for a bulk mutation on a non-destructive 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, front-loaded with the operation and scope, followed by a single-word reversibility note. Nothing is padded or restated from the schema.

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 7-parameter, 2-required bulk mutation with annotations and no output schema, the description covers what is changed and that it is reversible. It omits what the call returns (e.g., count of notes edited) and whether passing no transform params is a no-op or an error, minor gaps given the full schema documentation.

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 100%, so every parameter is already documented. The description contributes one genuinely useful detail ('0.25 = 1/16 in 4/4') and clarifies the scale-then-offset ordering for velocity, but leaves quantize_strength's default and the interaction between optional params to the 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 and resource ('Edit every note of a MIDI clip at once') and enumerates the transformations (transpose, quantize, velocity scale/offset), which clearly separates it from write/get/clear siblings. It stops short of naming which sibling to use for related tasks such as reading notes or replacing them wholesale.

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

Usage Guidelines3/5

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

Usage is implied rather than stated: the tool operates on an existing clip's notes in bulk, and 'Undoable' hints at a reversible mutation. There is no explicit when-to-use/when-not, no mention of clips_get_notes to inspect first or clips_write_midi to replace notes instead.

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

clips_write_drumsA
Idempotent

Write a drum pattern into a session slot of a TOMNIC track (TOMNIC plays its own step pattern, not clip notes). Each lane is one voice (kick, snare, hihat, bass, tom, perc, cymbal, fx, or 0-7) with a step string: x = hit, X = accent, . = rest; '|' and spaces may mark bars. At rate 1/16 sixteen steps are one 4/4 bar, e.g. kick "x...x...x...x...", snare "....x.......x...". Lanes may differ in length (polymeters). Replaces the pattern, or with mode merge only the lanes given. Undoable.

NameRequiredDescriptionDefault
modeNoReplace the pattern or merge lanes.
rateNoStep length (default 1/16).
slotYes0-based clip slot (scene row) on the track.
lanesYesVoices to write.
trackYesTrack id (UUID string from tracks.list, stable) or 0-based index (shifts when tracks are added or moved).

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already disclose readOnly=false, idempotent=true, destructive=false; the description adds real context beyond them by stating that the existing pattern is replaced, that merge preserves untouched lanes, that writes are undoable, and that polymeters are allowed. That is meaningful mutation-behavior disclosure, though it does not mention permission/eligibility 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?

Front-loads the verb and resource, then scoping, then notation rules and the replace/merge guarantee. The example patterns are compact and directly operational; no sentence is filler.

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

Completeness5/5

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

For a 5-parameter mutation tool with full schema coverage and annotations covering the safety profile, the description supplies everything an agent needs to construct valid calls: notation semantics, rate interpretation, replace-vs-merge behavior, and undoability. No output schema is needed since only a write acknowledgment is expected.

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 100%, so baseline is 3, and the description still adds value: it explains the step alphabet (x/X/.), that bars may be marked with '|' or spaces, that lane lengths may differ, and that at 1/16 sixteen steps equal one 4/4 bar. It goes beyond the schema field text rather than repeating it.

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?

States a specific verb and resource ("Write a drum pattern into a session slot") and immediately scopes it ("a TOMNIC track"), explicitly contrasting with clip-note writing, which is what sibling clips_write_midi does. An agent can route between the two without opening either schema.

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?

Implies the target condition (TOMNIC tracks that use their own step patterns) and explains mode selection ("Replaces the pattern, or with mode merge only the lanes given"). It does not explicitly name the alternative tool for non-TOMNIC tracks, so guidance is clear but not fully routing.

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

clips_write_midiA
Idempotent

Write notes into a session clip slot of a MIDI track, creating the clip if the slot is empty. mode 'replace' (default) leaves exactly these notes, 'merge' adds them. length_beats sets the loop (default: the notes rounded up to whole bars). Times are in beats from the clip start (1 beat = a quarter note; in 4/4 a bar is 4 beats). The clip loops; launch it with clips.launch. Undoable.

NameRequiredDescriptionDefault
modeNoReplace or merge the clip's notes.
slotYes0-based clip slot (scene row) on the track.
notesYesNotes to write.
trackYesTrack id (UUID string from tracks.list, stable) or 0-based index (shifts when tracks are added or moved).
length_beatsNoLoop length in beats.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare non-read-only, idempotent, non-destructive, but the description adds real behavior: the slot is created if empty, 'replace' leaves exactly these notes (i.e. prior notes are discarded), the clip loops, and the operation is undoable. That last point is the key mitigation for replace-mode overwriting. The mild tension between replace-mode deletion and destructiveHint=false is disclosed rather than hidden, so no contradiction.

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?

Four short sentences, front-loaded with the action and the slot-creation condition, then mode semantics, then length defaults, then units, then the launch pointer. Every sentence carries information the agent needs and none repeat the schema verbatim.

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 5-parameter mutation with no output schema, the description covers creation behavior, overwrite semantics, defaults, units, undoability, and the natural next call. The one gap is what the tool returns (e.g. whether it hands back the new clip reference), which an agent would want before chaining into clips.launch.

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 100%, so the baseline is 3; the description earns above that by explaining defaults and units the schema does not: length_beats defaults to the notes rounded up to whole bars, and times are in beats with '1 beat = a quarter note; in 4/4 a bar is 4 beats'. It also restates the replace/merge semantics of mode with more precision than the schema's one-liner.

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 opens with a specific verb+resource+location: 'Write notes into a session clip slot of a MIDI track', and adds the create-if-empty condition. It implicitly separates itself from arrangement_* and clips_get_notes by naming the session clip slot, but never explicitly contrasts with close siblings like clips_write_drums or clips_transform, so it stops 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 gives useful operating guidance — 'replace' is the default, 'merge' adds, length_beats defaults to whole bars, and 'launch it with clips.launch' as the follow-up. What it lacks is any when-to-use-this-vs-alternative routing: nothing tells the agent why to pick this over clips_write_progression, clips_generate_melody, or clips_transform.

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

clips_write_progressionA
Idempotent

Render a chord progression (text, library or generated, see theory.progression) into a session slot of a MIDI track and set the clip's chord lane, so the user sees the chords in the piano roll. The loop length is the progression's. Replaces the clip's notes. Undoable.

NameRequiredDescriptionDefault
slotYes0-based clip slot (scene row) on the track.
trackYesTrack id (UUID string from tracks.list, stable) or 0-based index (shifts when tracks are added or moved).
progressionYes

TDQS

A4.1/5.0
Behavior5/5

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

Adds real behavior beyond the annotations: it warns that existing clip notes are replaced, that the loop length is inherited from the progression rather than chosen, and that the operation is undoable. The 'Replaces the clip's notes' caveat is exactly the kind of consequence destructiveHint=false alone would not convey, and it is consistent with the annotations rather than contradicting them.

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?

Four short sentences, front-loaded with the action and destination, then the consequences (loop length, note replacement, undo). Nothing is padded or restated from the title.

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 three-parameter nested write with no output schema, the description covers the important semantics: what is written, what is overwritten, loop length source, and undo safety. It leaves out what is returned (e.g. the created/updated clip reference) and behavior when the target slot already holds a clip, which the reader must infer from 'Replaces the clip's notes.'

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 67% with deeply nested objects, and the description adds meaning the schema does not: the three mutually exclusive ways to supply a progression (inline chord text, a named library entry, or generated output) are surfaced as alternatives, and the chord-lane side effect explains why slot/track matter. It does not touch the perform sub-options, leaving some nested semantics to the 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?

Specific verb and resource: 'Render a chord progression ... into a session slot of a MIDI track and set the clip's chord lane.' That clearly separates it from note-level writers like clips_write_midi or clips_write_drums, and the parenthetical points at theory.progression as the source. It stops short of explicitly naming the sibling tools it is an alternative to.

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

Usage Guidelines3/5

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

Usage is implied rather than stated: it points to theory.progression for building the progression, and 'The loop length is the progression's' hints at how it differs from clips_set_length. But there is no explicit when-to-use/when-not guidance versus clips_write_midi, clips_write_drums, or clips_generate_melody.

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

clips_write_slicesA
Idempotent

Write which slices of a sliced audio clip play when (replacing its notes): steps with a slice index, start and length in beats, velocity, and pitch in semitones, so one slice can play a melody (a vocal chop, a stab) and many slices a rearranged break. Undoable.

NameRequiredDescriptionDefault
slotYes0-based clip slot (scene row) on the track.
stepsYesSlice hits.
trackYesTrack id (UUID string from tracks.list, stable) or 0-based index (shifts when tracks are added or moved).
length_beatsNoLoop length in beats.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare non-readonly, idempotent, non-destructive behavior, and the description usefully adds that the operation replaces existing notes and is undoable. That clarifies the mutation’s effect beyond the structured hints, though it does not cover 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 description is front-loaded and fits into one long sentence with no irrelevant material, though the examples make it slightly denser than strictly necessary.

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?

With a fully described schema and annotations covering safety/idempotency, the description supplies the critical replacement and undoability context. It is complete enough for an agent to invoke correctly, though it could mention the relationship to slicing tools like sampler_slice.

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 100%, so the schema already documents slice, start, duration, velocity, pitch, track, and slot. The description restates the key step fields but adds little syntax or meaning beyond the schema.

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: writing slice playback steps for a sliced audio clip, replacing its notes. It clearly distinguishes this from generic MIDI writing by tying the operation to slice indices and audio-clip slices.

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 provides implied usage context—melodic single-slice playback versus rearranged breaks with many slices—but never explicitly says when to use this instead of siblings like clips_write_midi or clips_transform.

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

devices_addA

Insert a builtin effect (a name from devices.types) into a chain, at the end or at 'position'. It starts at its default settings; shape it with devices.set_params. Returns the chain. Undoable.

NameRequiredDescriptionDefault
chainYesEffect chain: {"track": <id or index>}, {"return_bus": <index>} or "master".
deviceYesEffect name from devices.types, e.g. Compressor.
positionNo0-based position in the chain (signal order).

TDQS

A4.4/5.0
Behavior4/5

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

Adds genuinely non-schema context: the effect starts at default settings, the call returns the chain, and the operation is undoable. "Undoable" in particular is not derivable from the annotations, which only say destructiveHint=false and idempotentHint=false. It does not explain failure modes (invalid device name, full chain), so not a 5.

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?

Three short sentences with zero filler, front-loaded with the action, then the follow-up tool, then the return/undo facts. Every clause carries information an agent would otherwise have to infer.

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?

With a 100%-covered schema and no output schema, the description covers what the tool does, how to configure afterwards, what it returns, and reversibility. Missing only edge-case behavior such as an out-of-range position or an unknown device name.

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 100%, so the baseline is 3; the description still adds value by stating that omitting position appends to the end of the chain, a semantic the schema does not spell out. It also anchors the device parameter to the devices.types vocabulary.

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?

States a specific verb and resource ("Insert a builtin effect ... into a chain") plus the target scope (end of chain or an explicit position). This cleanly distinguishes it from siblings such as devices_remove, devices_set_params, and devices_list without requiring schema inspection.

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?

Routes the agent to devices.types for valid effect names and to devices.set_params for configuring the newly inserted effect, which is concrete alternative-routing guidance. It stops short of explicit exclusions or prerequisites (e.g. track must exist, chain length limits), so it is clear but not exhaustive.

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

devices_getB
Read-onlyIdempotent

Every parameter of a builtin effect with its current value, range, default, unit (dB, Hz, ms, %) and group; a choice lists its options (index = value, e.g. Shape 4 = HighPass). Values are in those units, not 0..1.

NameRequiredDescriptionDefault
slotYes0-based position in the chain (signal order).
chainYesEffect chain: {"track": <id or index>}, {"return_bus": <index>} or "master".

TDQS

B3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and non-destructive, so the safety profile is covered. The description earns credit for genuinely additive behavior: values are returned in real units (dB, Hz, ms, %) rather than normalized 0..1, and choice parameters expose an index-to-option mapping (Shape 4 = HighPass) — both are non-obvious and prevent misreading the response. It does not say what happens for an empty slot or a non-builtin/plugin device, which keeps it below 5.

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?

It is a single tight sentence with no filler, but it is front-loaded with return-value detail rather than the tool's action, which is the wrong lead for an agent scanning for a verb and resource. The content is efficient; the ordering is not.

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 output schema, the description carries the burden of explaining return values and does so partially: parameter value/range/default/unit/group and enumerated choices are covered. But it omits the top-level shape (does it also return device name, type, bypass state?), leaves 'builtin effect' undefined against plugin devices, and says nothing about failure on an empty slot. Adequate for a 2-parameter read, with clear gaps.

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

Parameters3/5

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

Schema description coverage is 100%: slot is documented as a 0-based signal-order position and chain is documented with the track/return_bus/master union, including the id-vs-index tradeoff. The description adds nothing about either parameter, so the baseline 3 applies — the schema does all the work here.

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 never states the operation explicitly — it never says 'retrieve the device at a chain slot' and never names the device as the resource being fetched. Instead it jumps straight into describing the shape of the returned parameter list, from which an agent must infer that this reads a builtin effect's parameters. It also does not distinguish itself from nearby siblings like params_list, devices_list, or midi_fx_get.

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 prerequisites, and no named alternative. With siblings such as params_list and devices_list present, an agent is left to guess whether this is the right call for inspecting effect parameters versus listing devices.

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

devices_listC
Read-onlyIdempotent

The effects of a chain in signal order: a track's inserts ({"track": id}), a return bus ({"return_bus": n}) or "master". Each with slot, name, kind (builtin/plugin/script), bypass and parameter count.

NameRequiredDescriptionDefault
chainYesEffect chain: {"track": <id or index>}, {"return_bus": <index>} or "master".

TDQS

C2.8/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the burden is light, and the description adds real value by disclosing the returned fields per device — slot, name, kind (builtin/plugin/script), bypass, and parameter count — plus that results come back in signal order. That return-shape and ordering information is nowhere in the structured data and is exactly what an agent needs to plan a follow-up call such as devices_set_params.

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?

It is a single compact sentence with no filler, but it is grammatically a fragment and front-loads an abstract phrase ("The effects of a chain in signal order") ahead of the actual operation. The per-device field list is the most useful part and arrives last.

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 one fully documented parameter and no output schema, the description partially compensates by enumerating returned fields and their meaning. It still leaves open what happens for an empty chain or invalid track id, whether MIDI effect chains are included, and whether devices add more fields than the five listed.

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 100% and the schema description already spells out {"track": <id or index>}, {"return_bus": <index>} and "master", including the stability caveat for indices. The description restates the same three forms without adding syntax or edge-case semantics, so it does not exceed the baseline for a fully documented parameter.

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 never states the verb ("list") or the resource ("devices"); it opens with "The effects of a chain in signal order," which is a noun phrase about the chain rather than about the tool. An agent can infer it enumerates devices in a track/return/master chain, but only after parsing the parenthetical forms, and nothing distinguishes it from devices_get or devices_types.

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

Usage Guidelines1/5

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

There is no statement of when to call this rather than devices_get, devices_types, params_list, or mixer_get, despite those siblings sitting in the same namespace. No prerequisites, no context cues — the agent must guess from the names.

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

devices_removeA
Destructive

Remove an effect from a chain; later slots move up. Undoable.

NameRequiredDescriptionDefault
slotYes0-based position in the chain (signal order).
chainYesEffect chain: {"track": <id or index>}, {"return_bus": <index>} or "master".

TDQS

A3.8/5.0
Behavior4/5

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

Adds two facts annotations cannot express: that subsequent slots re-index upward after removal, and that the operation is undoable. This meaningfully softens the destructiveHint and tells the agent a follow-up re-index is needed for any stored slot positions. Return payload and failure modes (invalid slot, empty chain) remain unstated.

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 dense clauses, front-loaded with the action, then the side effect, then the safety note. Nothing is wasted or repeated from the schema.

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 mutation with rich annotations and a fully documented schema, this covers the essential surprises (index shifting, undoability). It leaves out only error/edge behavior and whether the chain must be non-empty, which is minor given the rest of the definition.

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 100% and both parameters are documented in-schema, so the baseline of 3 applies. The description adds only indirect context ('later slots move up' clarifies that slot indices are positional and shift), but gives no guidance on the chain variants (master/track/return_bus) or on preferring stable track IDs over indices.

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?

Names a specific verb+resource ('Remove an effect from a chain') and states the resulting state change ('later slots move up'). It is clearly distinct from devices_add/set_bypass, though it uses 'effect' while the tool/sibling names use 'device', which adds a small terminology hop.

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 name and the removal semantics, but there is no explicit when-to-use or when-not guidance. It never distinguishes itself from the adjacent removal tools such as midi_fx_remove or mixer_remove_return, so the agent must infer that this one is for audio/instrument device chains.

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

devices_set_bypassA
Idempotent

Bypass (true) or enable an effect; the switch crossfades, no click. Useful to compare before / after with mix.meters. Undoable.

NameRequiredDescriptionDefault
slotYes0-based position in the chain (signal order).
chainYesEffect chain: {"track": <id or index>}, {"return_bus": <index>} or "master".
bypassedYesBypass the effect.

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare idempotent, non-destructive, non-read-only. The description adds genuine domain behavior beyond that: the switch crossfades with no click, and the change is undoable, pointing the agent at edit_undo. It does not say what happens if slot is out of range or the device is missing, which keeps it below 5.

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?

Three short clauses with no filler and the core action front-loaded. The opening phrase 'Bypass (true) or enable an effect' is slightly garbled (the object of 'bypass' is implicit), costing a little clarity in an otherwise tight two-sentence block.

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-parameter fully documented tool with annotations covering safety and idempotency, the description covers the essentials plus undo and click-free behavior. But with a near-identical sibling (midi_fx_set_bypass) unaddressed and no mention of failure conditions, an agent still has gaps to infer.

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 100% and each of chain/slot/bypassed is documented in the schema itself, so the baseline is 3. The description only disambiguates the boolean polarity (true = bypass), adding marginal value over the schema text 'Bypass the effect.'

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: bypass or enable an effect device. However, the title/aliasing against the sibling midi_fx_set_bypass is absent, so an agent looking at both 'set_bypass' tools gets no signal about which applies to audio devices vs MIDI FX. The polarity clarification ('true' = bypass) is helpful and specific.

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?

One concrete use case is given ('compare before / after with mix.meters'), which implies an A/B workflow, but there are no exclusions and no naming of the sibling alternative midi_fx_set_bypass. Usage is implied rather than directed.

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

devices_set_paramsA
Idempotent

Set several parameters of a builtin effect at once, by name (as devices.get lists them, case-insensitive) or index, in the parameter's own unit. All are checked against their ranges before any changes. One undo step. Returns the device with its new values.

NameRequiredDescriptionDefault
slotYes0-based position in the chain (signal order).
chainYesEffect chain: {"track": <id or index>}, {"return_bus": <index>} or "master".
valuesYesParameter name or index → value.

TDQS

A3.9/5.0
Behavior4/5

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

Adds real behavior beyond the annotations: all values are range-checked before any change (atomic), the whole batch is one undo step, and the device is returned with new values. The annotations already declare idempotency and non-destructiveness, so this extra transactional detail is what earns the score.

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?

Three tight sentences with no filler; the core action comes first, then validation/undo semantics, then the return value.

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 tool with full schema coverage and annotations, the description covers validation, atomicity, undo granularity, and the response. Only error behavior on out-of-range values is left unstated.

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 100%, so the baseline is 3, but the description adds value: values are interpreted in the parameter's own unit, and names are case-insensitive and match what devices.get reports. That resolves the main ambiguity in the loosely-typed 'values' map.

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: sets parameters of a builtin effect, in bulk, addressed by name or index. It distinguishes itself from devices_set_bypass and midi_fx_set_params through the 'builtin effect' scope, though it never names those siblings 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 phrase 'set several parameters ... at once' implies bulk use and the reference to devices.get implies prerequisites, but there is no explicit statement of when to prefer this over params_set, midi_fx_set_params, or devices_set_bypass.

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

devices_typesA
Read-onlyIdempotent

Omni's builtin effects that devices.add can insert, with their family: EQ, Filter, Compressor, Limiter, MultibandDynamics, Noise Gate, Transient Shaper, Saturator, Delay, Reverb, Chorus, Phaser and creative ones.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

The annotations already establish that this is a safe, read-only, idempotent operation, so the description has a lower burden. It adds useful domain context that these are Omni builtin effects grouped by family, but it does not clarify the return shape, whether the catalog is static, or what 'creative ones' includes.

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 definition is a single front-loaded sentence with no wasted preamble, and the family list is useful for understanding scope. The phrase 'and creative ones' is slightly vague but does not undermine the overall efficiency.

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 catalog with rich annotations, the description is mostly adequate and does mention that types come with their family. However, with no output schema, it should more explicitly state what is returned and better distinguish this from sibling tools like midi_fx_types and devices_list.

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 no parameters and the schema is empty, so there are no parameter semantics for the description to explain. A baseline of 4 is appropriate for a zero-parameter 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?

The description identifies a specific resource: builtin effect types that devices.add can insert, and enumerates their families. This distinguishes it reasonably well from devices_list and devices_add, though it is phrased as a noun list rather than explicitly saying it returns the available device types.

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 connection to devices.add, suggesting the tool is for discovering insertable effect types. However, it gives no explicit when-to-use guidance, no exclusions, and does not mention alternatives such as devices_list or midi_fx_types.

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

edit_redoA

Redo the step undone last. Returns what was redone.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare this is a non-readonly, non-idempotent, non-destructive edit. The description adds one piece of context beyond them: that the call returns what was redone. It does not disclose history-stack scope (per session vs global), error behavior when nothing is undone, or whether repeated calls walk further forward.

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 short sentences, front-loaded with the action, and nothing redundant is included. It is terse to the point of omitting useful behavior, but that is a completeness issue rather than verbosity.

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?

No output schema exists, so the description's single return-value sentence is doing real but minimal work. For a stateful, non-idempotent history operation in a large DAW toolset, missing details about the undo/redo stack scope and empty-stack behavior leave 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?

Zero parameters, so the schema carries no semantics to add to; baseline is 4. The description correctly avoids inventing argument descriptions.

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 clear verb (redo) and resource (the last undone edit), and the phrase 'step undone last' implicitly distinguishes it from the sibling edit_undo without naming it. No explicit routing sentence, so not 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?

The word 'undone last' implies the prerequisite that a prior undo must exist, which is the only usage context given. There is no explicit when-to-use vs edit_undo statement, no mention of what happens when the redo stack is empty, and no alternatives named.

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

edit_undoA

Undo the newest step in Omni's history (the user's or yours; every edit call of this API is one step labelled 'API: ...'). Returns what was undone.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare the safety profile (not read-only, not idempotent, not destructive), so the bar is lower. The description adds meaningful context beyond that: the undo target is a single labeled history step and the call reports what was undone, though it says nothing about what happens when history is empty or how deep the history goes.

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 with the action front-loaded and the parenthetical scope note earning its place by explaining what a 'step' means.

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 parameters, no output schema, and annotations covering the safety profile, the description is largely complete: it names the target and the return ('what was undone'). Only failure/empty-history behavior is left unstated.

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 baseline is 4. The description reinforces that the tool takes no selection input by specifying it always acts on the newest history entry, which is a useful semantic clarification.

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 newest step in Omni's history), which is clearly distinct from the sibling edit_redo. It doesn't explicitly name edit_redo as the counterpart, but an agent can tell the two operations apart from the text alone.

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 clarifies scope ('newest step', 'the user's or yours') and that every API edit call is one step labelled 'API: ...', which implies when this is useful. However, it never states when-not to use it or names edit_redo as the alternative for re-applying an undone step, so guidance is implied rather than explicit.

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

export_renderA

Render the arrangement (start_beat to end_beat, default the whole song) to a WAV file, as the Export dialog does: in real time through the audio device, or with fast offline (faster than real time, the same mix), optionally normalised to a loudness target. Returns a job: jobs.wait until done; the result has the path and an analysis of the written file. Writes only absolute .wav paths and does not overwrite unless asked. Session clips play only if recorded into the arrangement.

NameRequiredDescriptionDefault
fastNoRender offline, faster than real time (default false).
pathYesAbsolute path of the .wav file to write.
ditherNoDither when writing 16/24 bit (default: the export dialog's).
targetNoNormalise to this target from master.targets while writing.
end_beatNoEnd in beats (default: the song's end).
bit_depthNo16, 24 (default) or 32 (float).
overwriteNoReplace existing files (default false).
start_beatNoStart in beats (default 0).

TDQS

A4.5/5.0
Behavior5/5

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

Adds substantial behavioral context beyond the annotations: writes only absolute .wav paths, will not overwrite unless asked, session clips only sound if recorded into the arrangement, and the call returns an async job rather than the finished file. These are exactly the surprises an agent would otherwise hit.

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?

Front-loaded with the core action and mode choice, then return/job semantics, then write-safety notes — a good ordering. It is a single dense paragraph with some stacked parentheticals, but almost 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?

With no output schema, the description steps in to describe the job handle, waiting on it, and the result payload (path plus file analysis). Remaining gaps are minor: no note on expected runtime for real-time renders or on failure behavior for invalid paths.

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 100%, so the baseline is 3; the description still adds meaning by noting the beat range defaults to the whole song, that optional normalisation targets a loudness goal from master.targets, and that "fast" means the same mix rendered offline. Dither and bit-depth interplay with dithering is left entirely to the schema.

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?

States a specific verb and resource ("Render the arrangement ... to a WAV file") with scope (start_beat to end_beat, default whole song). The real-time vs fast-offline framing and the "as the Export dialog does" analogy make it clearly distinct from siblings such as export_stems and agent_export_preview.

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?

Explains the two rendering modes and their tradeoff (real time vs faster-than-real-time identical mix), and tells the agent what to do with the returned job ("jobs.wait until done"). It does not explicitly say when to prefer export_stems or agent_export_preview over this, so exclusion guidance is missing.

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

export_stemsA

Render one WAV per track (all audible tracks, or the ones listed) into a folder, offline and faster than real time: each stem is its track soloed, with its sends' returns, without the master chain unless through_master. Files are named ' .wav'. Returns a job whose result lists the files.

NameRequiredDescriptionDefault
ditherNoDither when writing 16/24 bit (default: the export dialog's).
folderYesAbsolute path of an existing folder for the stems.
tracksNoTracks to render (default: every non-group track).
end_beatNoEnd in beats (default: the song's end).
bit_depthNo16, 24 (default) or 32 (float).
overwriteNoReplace existing files (default false).
start_beatNoStart in beats (default 0).
through_masterNoKeep the master chain on each stem (default false).

TDQS

A3.8/5.0
Behavior4/5

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

Goes well beyond annotations by explaining that rendering is offline/faster than real time, that each stem is a soloed track including send returns but excluding the master chain unless through_master, the file naming pattern, and that the tool returns a job whose result lists files (valuable since no output schema exists). It does not address file-overwrite behavior or failure cases, but annotations already cover the non-destructive safety profile.

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?

Front-loads the action and output ('Render one WAV per track ... into a folder') and every clause carries information. The opening sentence is long and multi-clause, which slightly hurts readability, but nothing is redundant.

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 file-writing operation with no output schema, the description covers the essential gaps: the return value (a job with a result file list), the exact file naming, and the default stem composition. Overwrite semantics and prerequisite that the folder must exist are left to the schema, which is acceptable given full schema coverage.

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 100%, so the baseline is 3, but the description adds substantive meaning: what a 'stem' includes compositionally, what through_master actually changes about the output, and that 'tracks' defaults to every non-group track. It adds no detail for dither, bit_depth, or start/end beats, leaving those entirely to the 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 and resource: 'Render one WAV per track ... into a folder', which unambiguously identifies per-track stem export. It does not, however, distinguish itself from siblings like export_render (presumably a full mixdown) or audio_split_stems (separation of imported audio), so an agent must infer the boundary.

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 'all audible tracks, or the ones listed' and the master-chain toggle, giving a sense of when this is the right export mode. But there is no explicit when-to-use/when-not guidance and no named alternative (export_render, audio_split_stems), so routing remains inferential.

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

groove_getA
Read-onlyIdempotent

The project groove every clip follows (unless its track opts out): style, amount, grid, accent, lean, humanize; and which tracks play straight.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered. The description adds real domain context beyond that: the exact set of groove attributes returned (style, amount, grid, accent, lean, humanize) and the per-track opt-out semantics that determine whether a clip actually follows the groove.

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 the resource scope front-loaded and the field list trailing; nothing is wasted. The semicolon-and-parenthetical packing is slightly dense but still readable in one pass.

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?

With no parameters and no output schema, the description carries the burden of describing the return value and does so by naming the groove fields plus the track-level exception. It stops short of stating the response shape (a single groove object with a list of straight-playing tracks), which would have closed the last 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 the baseline of 4 applies and there is nothing for the description to clarify beyond the returned content, which it does list.

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 (the project-level groove) and enumerates its fields, and the parenthetical 'unless its track opts out' plus 'which tracks play straight' separates it from groove_set_track. It never states the verb (read/return), relying on the name 'groove_get' to imply retrieval, which keeps it just 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?

Usage is only implied through the get/set naming family — nothing says 'use this to inspect current groove before changing it with groove_set' or when to prefer groove_set_track. An agent can infer this is the read-side of a groove pair, but the description provides no explicit when/when-not guidance.

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

groove_setA
Idempotent

Change the project groove (fields left out stay): style (straight, mpc, jazz, nested, push, drunk, samba, waltz, custom), amount 0-1, grid 8th/16th/32nd, accent, lean_ms, humanize_ms, humanize_vel, seed. Picking a style without amount or grid takes the style's own. Undoable.

NameRequiredDescriptionDefault
gridNoSubdivision that swings.
seedNoHumanize seed.
styleNoGroove style.
accentNoDepth of the style's dynamics.
amountNo0 = straight, 1 = the style's full shape.
lean_msNoBeats 2 and 4 late (+) or early (-).
humanize_msNoRandom timing up to this many ms.
humanize_velNoRandom velocity, 0-1.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare non-destructive, idempotent writes, so the description doesn't need to repeat safety. It adds real value beyond that: patch semantics ('fields left out stay'), the interaction rule for style defaults, and 'Undoable', which tells the agent it can reverse the change via edit_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?

Front-loaded with the action and patch semantics, then the parameter enumeration and the default rule. It is dense and efficient, though the parameter list largely restates enum values already in the schema.

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 an 8-param optional-field mutation with full schema coverage and no output schema, the description covers what changes, what stays, default resolution, and reversibility. It stops short of saying whether the groove applies to already-recorded clips or only future playback, which would be the one remaining 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?

Schema coverage is 100%, so each parameter is already documented; baseline would be 3. The description earns above-baseline credit by stating the cross-parameter rule that selecting a style without amount or grid inherits the style's own values, which the schema cannot express.

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 the project groove') with a scope qualifier ('project') that implicitly separates it from the sibling groove_set_track. It doesn't name the sibling outright, but an agent can tell project-level vs track-level apart from the wording alone.

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 'project groove' and the sibling name groove_set_track, but the description never says when to prefer this over the per-track variant or when to use groove_get first. The default-behavior note ('Picking a style without amount or grid takes the style's own') is helpful behavior, not routing guidance.

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

groove_set_trackA
Idempotent

Whether a track follows the project groove (false = it plays straight, e.g. a tight bass under swung hats). Undoable.

NameRequiredDescriptionDefault
trackYesTrack id (UUID string from tracks.list, stable) or 0-based index (shifts when tracks are added or moved).
followYesFollow the groove.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare non-read-only, idempotent, non-destructive, so the description does not need to restate safety. It does add two things beyond them: that the change is undoable (pointing at edit_undo) and the concrete playback consequence of false (a straight bass under swung hats). It stops short of saying whether the change is audible immediately during playback.

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: the state being changed comes first and the clarifying example is parenthetical. The trailing 'Undoable.' is a one-word behavioral note that 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 two-parameter idempotent setter with full schema coverage, annotations and no output schema, this covers what an agent needs to call it correctly. The remaining gap is the relationship to groove_set/the project groove state, which the description never mentions.

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 100%, so 3 is the baseline, but the description genuinely adds meaning the terse schema line ('Follow the groove.') does not: it explains that the boolean toggles groove-following per track and what false sounds like. The track parameter's UUID-vs-index semantics are left entirely to the schema, which is acceptable given its quality.

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 — a per-track 'follow the project groove' flag — and the parenthetical distinguishes it from the project-wide groove_set by making clear this affects one track's playback. However, it never states the verb explicitly ('sets'), phrasing it as a question-of-state, and it does not name groove_set/groove_get as the project-level counterparts.

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 the tool for making one track swing or play straight. There is no explicit when-to-use, no prerequisite (e.g. a groove must be defined via groove_set), and no named alternative for the project-wide case.

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

instruments_listA
Read-onlyIdempotent

Instruments that tracks.create can load: name, family and the URI to pass as 'instrument'; installed plugins (group Plugin, with vendor and format) after the builtins. Families: Synth (Omni Synth = subtractive/wavetable all-rounder), Keys (Piano), Physical model (strings, winds, plucked, mallets), Drums (TOMNIC drum synth), Image to sound, DJ.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnly/idempotent/non-destructive, so safety is covered. The description adds useful return-shape context: builtins are listed first, plugins appear in a 'Plugin' group with vendor and format, and each entry carries name/family/URI. It says nothing about output format, ordering guarantees beyond 'after the builtins', or how missing plugins are handled, which is the remaining gap for an annotation-covered read tool.

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 core purpose is buried mid-sentence behind 'Instruments that tracks.create can load', and the plugin clause is tacked on with a semicolon. The family taxonomy is long, though it earns some of its space by helping the agent pick instruments; a leading 'List all loadable instruments' would have front-loaded the meaning.

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?

With zero parameters, no output schema, and annotations covering safety, the description's job is to convey the return shape, which it does: builtin entries with name/family/URI, plus a Plugin group with vendor/format, and the family taxonomy. What's missing is only format specifics (e.g., exact URI scheme) that the agent can't infer.

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 no parameters, so there is nothing to disambiguate and the 4 baseline applies. The description helpfully explains that the 'instrument' URI it returns is what the agent should pass to tracks.create, which connects the output to downstream parameter usage.

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 (instruments loadable via tracks.create) and the fields returned (name, family, URI used as the 'instrument' argument), which makes the tool's function inferable. It never states a verb like 'list', and leads with a purpose clause rather than an action, so the purpose is clear but not stated crisply.

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?

Referencing 'the URI to pass as instrument' and tracks.create implies the use case: call this before creating a track. However, it never explicitly says 'use before tracks_create' nor distinguishes this from instruments_presets / instruments_load_preset, which is the most likely sibling confusion.

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

instruments_load_presetA
Idempotent

Load a preset file (from instruments.presets) into the plugin on a track: its whole sound, as the plugin's own preset browser would. Then params.list shows the new values to tweak. Undoable.

NameRequiredDescriptionDefault
pathYesPreset file path from instruments.presets.
trackYesTrack id (UUID string from tracks.list, stable) or 0-based index (shifts when tracks are added or moved).

TDQS

A4.2/5.0
Behavior4/5

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

Annotations declare mutation (readOnlyHint=false) with idempotentHint=true and destructiveHint=false, so safety is partly covered. The description adds value beyond that by disclosing that the entire sound is replaced 'as the plugin's own preset browser would' and that the operation is undoable — the latter is not expressible in the annotations. It doesn't mention permissions 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?

Three short sentences, zero filler, with the core action front-loaded and the follow-up workflow in second position. 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 two-parameter mutation with annotations present and no output schema, the description covers what it does, what it replaces, the follow-up inspection path, and undoability. Only edge-case behavior (unsupported plugin, bad path) is absent, which is a minor gap.

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 100%, and the schema already explains that path comes from instruments.presets and that track accepts a stable UUID or a shifting 0-based index. The description's 'from instruments.presets' repeats rather than extends the schema, so the baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb (load), a specific resource (preset file), and a specific target (the plugin on a track), plus the scope of the effect ('its whole sound, as the plugin's own preset browser would'). This is clearly distinguishable from siblings like instruments_presets (which supplies the file) and params_set (which tweaks individual values).

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?

The description routes the agent through the workflow: get the path from instruments.presets, call this, then use params.list to see the resulting values to tweak. That gives clear context for when to reach for this tool, but it offers no exclusions or failure conditions (e.g. what if the plugin exposes no presets or the path is invalid).

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

instruments_presetsA
Read-onlyIdempotent

Preset files (.fxp) installed with the external plugin on a track, e.g. Surge XT's factory patches: name, category (their folders) and path. Filter with query words ("bass reese", "leads"); pages of up to 200.

NameRequiredDescriptionDefault
limitNoAt most this many (default 200).
queryNoWords that must all appear in the name or category.
trackYesTrack id (UUID string from tracks.list, stable) or 0-based index (shifts when tracks are added or moved).
offsetNoSkip this many matches.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent and non-destructive, so the safety burden is largely covered. The description adds genuinely useful context — that presets come from a plugin installed on a track, and that 'category' corresponds to the plugin's own folders — but says nothing about behavior when the track lacks a plugin or how results are ordered across pages.

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 compact sentences, front-loaded with what the tool returns and followed by filtering/paging notes. No filler; 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.

Completeness4/5

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

With no output schema, the description usefully names the returned fields (name, category, path) and documents filtering and page size limits. Only edge-case behavior (no plugin on track, empty result, ordering) is left unspecified.

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 100%, so the baseline is 3; the description earns above that by giving concrete query examples ('bass reese', 'leads') showing multi-word AND semantics in practice and by explaining that category maps to the plugin's folder structure.

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 resource: preset files (.fxp) from an external plugin on a given track, with the fields returned named (name, category, path). It is not explicitly contrasted with the neighboring instruments_list or instruments_load_preset tools, but the '.fxp preset' framing makes it reasonably distinguishable.

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 — the query-filtering examples ('bass reese', 'leads') and the 'pages of up to 200' hint at search/pagination usage, but it never says when to reach for this tool versus instruments_list or instruments_load_preset, nor what happens if the track has no external plugin.

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

jobs_getA
Read-onlyIdempotent

State (running / done / failed), progress and, once done, the result of a job started by another call.

NameRequiredDescriptionDefault
jobYesJob id from the call that started it.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive), so the description's contribution is the state machine and the fact that the result only materializes once done — genuinely useful beyond structured data. It doesn't say whether results/state expire or are retryable after failure.

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 state enumeration, and every clause (states, progress, result-once-done) carries information. No filler.

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?

With no output schema, the description does its job by naming the return fields (state, progress, result). Missing only guidance on polling cadence vs jobs_wait and whether the result is retrievable repeatedly.

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 100% and the sole parameter already documents 'Job id from the call that started it.' The description's line about jobs started by another call merely echoes the schema, adding no format or sourcing detail beyond it.

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 (get) and resource (job) and enumerates the observable states (running/done/failed) plus progress and result. It does not differentiate from the sibling jobs_wait, which likely covers the blocking-wait variant, 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?

'a job started by another call' implies usage as a poller for ids returned by async tools, which is useful implied context. But it never says when to use this instead of jobs_wait, nor whether repeated polling is expected versus a single blocking call.

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

jobs_waitA
Read-onlyIdempotent

Wait until a job finishes (at most timeout_seconds, default and limit 9) and return it as jobs.get does; call again while it is still running.

NameRequiredDescriptionDefault
jobYesJob id from the call that started it.
timeout_secondsNoLongest wait.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), so the description is free to spend its words on the behavior that matters: this call blocks up to a capped 9 seconds and must be re-invoked to keep waiting. It does not say what is returned if the job fails or if the wait expires, which is the remaining 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?

One sentence, front-loaded with the blocking wait, then the timeout cap, then the return contract, then the polling instruction. Every clause carries new information and nothing is repeated from the schema.

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?

Covers what it does, how long it waits, what it returns (by reference to jobs_get) and how to keep waiting — enough to call it correctly without an output schema. The terminal states (job failed, job vanished) are left unstated.

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 100%, so the baseline would be 3, but the description adds the one thing the schema omits: that timeout_seconds defaults to 9 and that 9 is also the ceiling. It still doesn't explain what happens at timeout 0 or what the return looks like mid-run, but that is beyond the parameter scope.

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 ('Wait until a job finishes') and immediately anchors the return shape to a named sibling ('return it as jobs.get does'), which distinguishes it from the plain jobs_get lookup. It stops short of naming the sibling as the non-blocking alternative, but the blocking-vs-snapshot distinction is still legible.

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?

The clause 'call again while it is still running' tells the agent exactly how to drive the tool — poll in a loop until the job completes. That is clear usage context, though it never states when to prefer jobs_get or agent_wait over this tool, so there is no explicit exclusion.

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

markers_addA

Add a marker (or, with end_beat, a section region) to the timeline. Undoable.

NameRequiredDescriptionDefault
beatYesPosition.
nameYesLabel, e.g. 'Chorus'.
colorNo#rrggbb.
end_beatNoEnd of the section region.

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare it is a non-read-only, non-idempotent, non-destructive write. The description adds one genuinely new fact — 'Undoable' — which matters given idempotentHint=false, but it does not say what happens on a duplicate position, whether existing markers are displaced, or what is returned.

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 primary action and immediately followed by the variant condition and the reversibility note. No filler.

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 four-parameter write tool with full schema coverage and annotations carrying the safety profile, this is largely sufficient. The only real gap is the absence of an output schema combined with no mention of a return value (e.g. a marker id), which an agent may need for later removal or edits.

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 100% so the baseline is 3; the description earns an extra point by explaining the semantic switch that end_beat triggers (region vs. single marker), which the schema alone only labels as 'End of the section region.'

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 ('Add a marker ... to the timeline') with an extra branch: passing end_beat creates a section region instead of a point marker. That distinguishes it clearly from markers_remove, though it never names the 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?

Usage is implied by 'add a marker to the timeline' and the end_beat branch hints at when a region is appropriate, but there is no explicit when-to-use vs. alternative guidance (e.g. versus automation or arrangement tools) and no stated preconditions.

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

markers_removeA
Destructive

Remove a marker by its index from arrangement.get. Undoable.

NameRequiredDescriptionDefault
indexYesMarker index.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, so the risk profile is partly covered. The description adds the crucial fact that the removal is undoable, which the agent needs in order to decide whether to act; it stops short of describing whether remaining marker indices shift after removal, which matters for a non-idempotent index-based 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 terse sentences, front-loaded with the action and target, with zero filler. The undoability note earns its place as a trailing clause.

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 one-parameter destructive tool with no output schema, the description covers action, target, index source, and reversibility. The only real gap is post-removal index behavior, a minor omission given the annotation coverage.

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 100% and the schema documents the 0-1023 bounds, so the baseline is 3. The description adds genuine meaning by naming arrangement.get as the source of the index, which the schema does not say.

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 (a marker), plus the identifying parameter (index). It does not explicitly contrast with the sibling markers_add, but the operation is unambiguous from the text alone.

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?

"from arrangement.get" tells the agent where the index value must come from, which is a real prerequisite for correct invocation. No explicit when-not conditions or sibling comparison are given, so it falls 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.

master_build_chainA

Put a mastering chain at the end of the master: an optional glue Compressor (2:1, slow attack, soft knee) and a true-peak Limiter with its ceiling at the target's. With a capture job of the master, the compressor threshold and the limiter's input gain are set from it to approach the target loudness. Refuses if the master already has a Limiter (adjust that one with devices.set_params). One undo step. Then capture again and master.check.

NameRequiredDescriptionDefault
jobNoFinished capture of the master.
glueNoAdd the glue compressor (default true).
targetYesTarget id from master.targets, e.g. spotify, apple_music, ebu_r128, club.

TDQS

A4.5/5.0
Behavior4/5

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

Adds real behavior beyond the annotations: a hard refusal precondition when a Limiter already exists, the fact that the whole operation is a single undo step (reversibility), and that it creates devices rather than editing them. It doesn't state what the response contains or what happens if the job is stale, but for a non-destructive, non-idempotent mutation the key risks are covered.

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?

Front-loaded with the action, then preconditions and follow-up, with no filler sentences. Slightly dense and grammatically compressed ("the limiter's input gain are set from it"), which costs a little readability but not content.

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?

No output schema exists, yet the description implies the outcome (chain added, one undo step, then re-capture and verify). Return shape and error details are unstated, but the agent has enough to call it correctly and knows how to validate the result.

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 already 100%, so baseline is 3, but the description adds causal meaning the schema doesn't: `target` sets the limiter ceiling, `job` is used to derive the compressor threshold and limiter input gain, and `glue` is optional with a default. That is meaningful semantics beyond the field descriptions.

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?

States a concrete verb and resource: place a mastering chain (glue Compressor + true-peak Limiter) at the end of the master, with specific settings (2:1, slow attack, soft knee, ceiling at target). This is clearly distinguishable from master_check, master_targets, and devices_set_params, which appear as siblings in the same domain.

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

Usage Guidelines5/5

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

Gives the workflow context (supply a capture job of the master so thresholds/gain are derived from it), an explicit exclusion path (refuses if a Limiter already exists — adjust that one with devices.set_params), and the follow-up step (capture again, then master.check). When-to-use, when-not-to-use, and the alternative are all present.

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

master_checkA
Read-onlyIdempotent

Pass / fail of a finished master capture (analysis.capture of "master", or analysis.file of an exported mix) against a target: loudness gap in LU, true peak against the ceiling, the gain that would hit the target, and notes (short capture, clipping, over-limiting, phase).

NameRequiredDescriptionDefault
jobYesFinished capture job.
targetYesTarget id from master.targets, e.g. spotify, apple_music, ebu_r128, club.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description goes further by disclosing the actual report contents (LU gap, peak vs ceiling, corrective gain, and flags for short capture, clipping, over-limiting, phase). With no output schema, this is exactly the missing behavioral context. It stops short of stating failure thresholds or units of the returned gain.

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 pass/fail verdict, followed by the enumerated checks and the note categories. The parentheticals add useful provenance rather than filler, though the sentence is dense enough to be slightly hard to scan.

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 read-only, two-parameter analysis tool with no output schema, the description covers purpose, inputs, and report contents reasonably well. What is missing is the failure criteria — what values cause a 'fail' and how notes should be interpreted — which an agent would need to act on the verdict.

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 100%, so the baseline is 3. The description adds real meaning: it constrains 'job' to a *finished* master capture and identifies the two producing calls (analysis.capture of 'master' or analysis.file of an exported mix), and frames 'target' as the ceiling/loudness standard being judged against.

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 (pass/fail check) and resource (a finished master capture) and enumerates exactly what is evaluated: loudness gap in LU, true peak vs ceiling, gain to target, and notes. It does not name a sibling to differentiate from, so it falls short of a 5, but an agent can tell this is a mastering QA evaluator rather than a capture or comparison 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: run this after producing a master capture ('analysis.capture of "master", or analysis.file of an exported mix'), which tells the agent the prerequisite step. There is no explicit when-not or pointer to alternatives such as analysis_compare, so the guidance stays implicit.

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

master_targetsA
Read-onlyIdempotent

Delivery targets: streaming platforms (Spotify, Apple Music, YouTube, Tidal, Amazon Music, Deezer), podcast, broadcast (EBU R128, ATSC A/85) and a club convention, each with integrated LUFS, tolerance and true-peak ceiling.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already establish readOnly, idempotent, non-destructive and closed-world, so safety is covered. The description adds genuine value beyond them by spelling out what the returned reference data contains — integrated LUFS, tolerance and true-peak ceiling per target — which is exactly what an agent needs to interpret the payload.

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 packs the full inventory of target categories and the three per-target measurements without a wasted word. The enumeration is dense but directly load-bearing content.

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?

With no output schema and no parameters, the description must carry the payload description and largely does. The remaining gap is that it never says how targets are identified or referenced (e.g. the key an agent would pass to master_build_chain or master_check), which is the one thing a caller likely needs next.

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 and the baseline of 4 applies. No parameter-level claims are made or needed.

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 a specific resource (delivery/loudness targets) and enumerates its contents precisely — streaming platforms, podcast, broadcast standards, club convention — so an agent can tell it is a reference catalogue rather than an action tool. It falls short of 5 because there is no verb and no explicit differentiation from the close siblings master_check and master_build_chain, which also deal with mastering targets.

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 call this versus master_check or master_build_chain, and no mention of it being the lookup step that supplies target values to those tools. Usage is only inferable from the word 'targets'; nothing is explicit.

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

midi_fx_addA

Append a MIDI effect from midi_fx.types to a track's MIDI FX chain, with its default settings. Undoable.

NameRequiredDescriptionDefault
trackYesTrack id (UUID string from tracks.list, stable) or 0-based index (shifts when tracks are added or moved).
deviceYesA name from midi_fx.types, e.g. Arpeggiator.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false and destructiveHint=false, so the mutation profile is known. The description still adds genuine value with "with its default settings" (the effect lands unconfigured) and "Undoable" (reversibility), but says nothing about duplicate-add behavior, where in the chain it lands, or failure modes, so it stays at a solid 3 rather than higher.

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; every clause (source of the name, target chain, defaults, undoability) 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 two-parameter creation tool with full schema coverage and annotations covering the safety profile, the description supplies what's needed to call it correctly. It doesn't note that defaults are subsequently changed via midi_fx_set_params, which would fully close the loop with its closest sibling.

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 100% and both parameters are fully documented, including the UUID-vs-index tradeoff for track, so the baseline of 3 applies. The description reinforces the device value source (midi_fx.types) but adds no syntax or format detail beyond the 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?

"Append a MIDI effect ... to a track's MIDI FX chain" gives a specific verb and resource, and the reference to midi_fx.types plus "MIDI FX chain" implicitly separates it from the device-level siblings like devices_add and from midi_fx_set_params. It stops short of naming any sibling explicitly, so it isn't a full 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?

The mention of midi_fx.types implies the agent must look up valid names first, which is useful implied usage. However there is no explicit statement of when to use this versus midi_fx_set_params (configure after adding) or midi_fx_remove, and no preconditions are spelled out.

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

midi_fx_getB
Read-onlyIdempotent

Every parameter of one MIDI FX slot: name, value, range, default.

NameRequiredDescriptionDefault
slotYes0-based clip slot (scene row) on the track.
trackYesTrack id (UUID string from tracks.list, stable) or 0-based index (shifts when tracks are added or moved).

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, closed-world and non-destructive, so the safety profile needs no restating. The description contributes the return shape (name, value, range, default per parameter), but says nothing about behavior for an out-of-range or missing slot, nor why 'slot' here differs from a normal FX chain index.

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 ten-word fragment with zero padding, and the returned-field list is front-loaded. It is efficiently sized but reads as a label rather than a sentence, leaving key framing implicit.

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 output schema, the description must carry the return contract, and it only partially does (field names, no structure, units, or count). Combined with the unresolved meaning of 'slot' and no error/empty-slot behavior, an agent has enough to call the tool but not to interpret results confidently.

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 100%, so both parameters are documented in the schema and the baseline is 3. However, the description's phrase 'one MIDI FX slot' implies slot is an FX chain index while the schema describes slot as a 0-based clip/scene slot, and the description does not resolve that conflict for the agent.

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 fragment states a specific resource and scope: all parameters of a single MIDI FX slot, with the returned fields enumerated. It is distinguishable from midi_fx_list and midi_fx_set_params, though it lacks an explicit verb (read/retrieve) and never names 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 Guidelines2/5

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

No guidance on when to call this versus midi_fx_list (to discover slots) or params_list (for device parameters), and no stated prerequisites such as knowing the slot exists. The agent must infer 'inspect before midi_fx_set_params' on its own.

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

midi_fx_listB
Read-onlyIdempotent

The MIDI FX chain of a track, in processing order.

NameRequiredDescriptionDefault
trackYesTrack id (UUID string from tracks.list, stable) or 0-based index (shifts when tracks are added or moved).

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds useful behavioral detail by stating the chain is returned in processing order, but it does not describe the return format or edge cases.

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?

It is a single efficient sentence with no waste, and the key scope and ordering information is front-loaded.

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 read tool with full schema coverage and strong annotations, the description says enough to call it correctly. Since no output schema exists, it could say more about the returned chain's contents, but the high-level return is clear.

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

Parameters3/5

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

Schema description coverage is 100%, so the track parameter's UUID/index semantics are fully documented in the schema. The description does not add parameter meaning beyond the schema, which is acceptable given full coverage.

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: the MIDI FX chain of a track, plus its ordering. It does not use an explicit verb like 'list' and does not differentiate from siblings such as midi_fx_get, but the purpose 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 guidance on when to use this tool versus midi_fx_get, midi_fx_types, or other MIDI FX siblings. The listing use case is implied by the name and description, but no alternatives or exclusions are stated.

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

midi_fx_removeA
Destructive

Remove one MIDI FX slot; later slots move down. Undoable.

NameRequiredDescriptionDefault
slotYes0-based clip slot (scene row) on the track.
trackYesTrack id (UUID string from tracks.list, stable) or 0-based index (shifts when tracks are added or moved).

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare destructive=true and idempotent=false, but the description adds two facts the annotations cannot express: subsequent slots shift down (index renumbering side effect) and the operation is undoable. That is exactly the extra context an agent needs before a destructive call.

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 clauses, no filler, with the reindexing consequence front-loaded before the undo note.

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 two-parameter destructive mutation, the description covers reversibility and post-state effects, which is the critical information. Only the discovery path for the slot index is missing.

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 100%, so track and slot semantics are already documented, and the description adds nothing about them. It also does not resolve the schema's confusing 'clip slot (scene row)' wording for a MIDI FX slot index.

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 one MIDI FX slot') that clearly separates it from devices_remove and mixer_remove_return, though it never names those siblings to make the distinction explicit.

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 or when-not-to-use guidance, no prerequisites, and no pointer to midi_fx_list for discovering valid slot indices. Usage is only loosely implied by the verb.

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

midi_fx_renderA
Idempotent

Play one MIDI FX slot offline over some bars and write what it played into a session slot as notes: a Markov / L-System / Marbles line becomes an editable clip, an Arpeggiator over the chord in input_slot becomes the arpeggio. The effect is bypassed afterwards (bypass false keeps it on). Undoable.

NameRequiredDescriptionDefault
barsNoBars to render (default 4).
slotYesThe MIDI FX slot.
trackYesTrack id (UUID string from tracks.list, stable) or 0-based index (shifts when tracks are added or moved).
bypassNoBypass the effect afterwards (default true).
to_slotYes0-based clip slot (scene row) on the track.
input_slotNo0-based clip slot (scene row) on the track.

TDQS

A4.1/5.0
Behavior3/5

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

Adds real value beyond the annotations: a non-obvious side effect (the effect is bypassed after rendering unless bypass=false) and reversibility ('Undoable'). However it never says what happens to notes already present in to_slot (overwrite/merge), what happens when input_slot is omitted, or what preconditions exist, which matters for a write tool whose annotations claim destructiveHint=false.

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, front-loaded with the core operation and followed by clarifying examples and the bypass/undo caveats. The parentheticals are short and each 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?

Covers the mechanism, the side effect, and undo, which is solid. But for a 6-parameter mutation tool with no output schema, the agent is left guessing about destination-slot overwrite semantics, the effect of omitting optional input_slot, and required preconditions — gaps that could cause an unintended data loss.

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 100%, so all six parameters are documented; the description still earns credit by explaining the relationship the schema cannot — input_slot is the chord source feeding an Arpeggiator, to_slot is the destination clip, and bypass is the post-render toggle. It does not clarify the meaning of input_slot when omitted or the interaction between bars and clip length.

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?

States a specific verb and resource ('play one MIDI FX slot offline over some bars and write what it played into a session slot as notes') and concretizes it with two worked examples distinguishing generative sources (Markov/L-System/Marbles, Arpeggiator) by their output clip type. That is enough for an agent to separate it from midi_fx_set_params, midi_fx_set_bypass and clips_write_midi without opening any schema.

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?

Makes the use case clear: convert a live MIDI FX generation into an editable clip (vs. leaving it as a live effect). It even flags the parameter-level alternative inline ('bypass false keeps it on'), pointing at the behavior of midi_fx_set_bypass. It stops short of explicit when-not-to-use statements or prerequisites (e.g. must the destination slot be empty, must transport be stopped).

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

midi_fx_set_bypassB
Idempotent

Bypass (or re-enable) one MIDI FX slot. Undoable.

NameRequiredDescriptionDefault
slotYes0-based clip slot (scene row) on the track.
trackYesTrack id (UUID string from tracks.list, stable) or 0-based index (shifts when tracks are added or moved).
bypassedYestrue = notes pass unchanged.

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare idempotentHint=true, destructiveHint=false, and readOnlyHint=false, so safety is covered. 'Undoable' is a small piece of genuinely new behavioral information not stated by the annotations, but nothing is said about what bypassing actually does to the chain or whether it affects the slot's settings.

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 waste, with the core action stated first and the undo property immediately after. Nothing extraneous and nothing 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?

A mutation tool with full annotation coverage and fully documented parameters, so most agent needs are met by structured fields. However, the description never clarifies the bypass-direction semantics (what 'bypassed=true' means in practice is only in the schema) or how this differs from the device-level bypass tool, leaving a sibling-selection gap.

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

Parameters3/5

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

Schema description coverage is 100%, including the non-obvious boolean semantics ('true = notes pass unchanged'), so the schema carries the burden. The description adds nothing beyond what the schema documents, which is the baseline for full coverage.

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 (bypass/re-enable) and specific resource (one MIDI FX slot) in a single sentence. It is reasonably distinguishable from the device-level sibling devices_set_bypass by naming the MIDI FX scope, though it never names that 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 Guidelines2/5

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

No guidance on when to use this instead of devices_set_bypass, midi_fx_set_params, or midi_fx_remove. The 'or re-enable' phrasing implies the boolean covers both directions, but there is no context about prerequisites or alternatives.

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

midi_fx_set_paramsA
Idempotent

Set parameters of one MIDI FX slot by name (or index), values in each parameter's range from midi_fx.get. Undoable, one step per call.

NameRequiredDescriptionDefault
slotYes0-based clip slot (scene row) on the track.
trackYesTrack id (UUID string from tracks.list, stable) or 0-based index (shifts when tracks are added or moved).
valuesYesParameter name or index -> value.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover idempotency and non-destructiveness; the description adds undo granularity ("Undoable, one step per call") and the requirement that values fall inside per-parameter ranges. That is genuinely new behavioral context beyond the annotations, though deeper failure/return details are absent.

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 resource, with no redundant or filler text. Every clause (range source, undoability, step granularity) 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 tool with a nested values object and no output schema, the description covers the key calling semantics: range source, undo behavior, and per-call granularity. It doesn't address partial failure or how unknown parameter names are handled, 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?

Schema coverage is 100%, so the baseline is 3. The description adds meaning by explaining that values must lie in each parameter's range and where to obtain those ranges (midi_fx.get), which the schema's generic number type does not convey.

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: setting parameters on one MIDI FX slot, by name or index. This distinguishes it from read siblings like midi_fx_get and from midi_fx_set_bypass. It stops short of explicitly contrasting with the analogous devices_set_params, so a 4 rather than 5.

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?

"values in each parameter's range from midi_fx.get" gives an actionable prerequisite workflow: fetch ranges first. "One step per call" clarifies batching expectations. No explicit when-not or exclusions against siblings, so not a 5.

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

midi_fx_typesA
Read-onlyIdempotent

MIDI effects a track can put in front of its instrument: transforms (Arpeggiator, Chord, Scale, Velocity, Note Length, Note Echo, Random, Ornaments, Tuplets) change the notes going through; generators (Marbles, Markov, L-System, Cellular, Thue-Morse, Recaman, Sequence, Shepard, Walks) play their own, locked to the song while a clip plays.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint=false, so the safety profile is fully covered by structured data. The description adds domain context — the transform/generator behavioral split and the 'locked to the song while a clip plays' constraint on generators — which helps interpret results, but says nothing about whether this is a static catalog, caching, or output shape.

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, front-loaded with the core concept and then expanding into the two families. The long name enumerations earn their place as they tell the agent exactly what to expect back, though the parenthetical lists make it dense.

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 output schema, the description must carry the return shape. Listing the type names partly does this, but it never says whether the response includes identifiers/slugs usable with midi_fx_add, descriptions, or parameter metadata — a real gap for the natural follow-up call.

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 per the baseline this scores 4. The description correctly implies a parameterless full-catalog read, with no misleading hints about filtering arguments.

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 resource — the catalog of MIDI effects that sit before a track's instrument — and splits it into two named families (transforms vs generators) with examples of each. An agent immediately understands this enumerates available effect types rather than instances, distinguishing it in substance from midi_fx_list, though the description never names that 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?

Usage is only implied: an agent can infer this is the discovery step before midi_fx_add, but the description never says 'use this to find a type name to pass to midi_fx_add' or when to prefer midi_fx_list. No exclusions, prerequisites, or alternative routing are stated.

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

mixer_add_returnA

Add a return bus (e.g. 'Reverb', 'Delay'): put an effect on it with devices.add ({"return_bus": n}, usually at 100% mix) and feed it from tracks with mixer.set_send. Returns the mixer. Undoable.

NameRequiredDescriptionDefault
nameNoName (default 'Return N').

TDQS

A4.5/5.0
Behavior4/5

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

Annotations cover read-only/destructive/idempotent, but the description adds two traits they do not: the call returns the mixer (important since there is no output schema) and the operation is undoable. It leaves open whether duplicate names create a second bus or collide, which is the one meaningful 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?

One dense sentence that front-loads what is created, then the follow-up steps, then the return value and undoability. No filler and nothing repeated from the schema.

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

Completeness5/5

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

For a single-optional-parameter creation tool with no output schema, the description supplies the return value, undoability, naming convention, and the two follow-up calls needed to make the bus useful. Nothing an agent needs in order to invoke it correctly 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?

Schema coverage is 100% and already documents the default ('Return N'), so the baseline is 3. The description adds real meaning by showing the naming convention in practice (name the bus after the effect, e.g. 'Reverb', 'Delay'), which guides an agent beyond the raw type declaration.

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?

States a specific verb and resource ("Add a return bus") with concrete examples of what a return bus is used for ('Reverb', 'Delay'). The inverse sibling mixer_remove_return makes the add/remove pair obvious, so an agent can route correctly without opening either schema.

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 the full workflow that follows creation: attach an effect via devices.add with {"return_bus": n} at ~100% mix, then feed it with mixer.set_send. That names the alternative/adjacent tools and the ordering, though it does not state when not to create a return bus (e.g. reusing an existing one via mixer_get/mixer_set_return).

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

mixer_getA
Read-onlyIdempotent

Master fader (dB) and balance, and the return buses (index, name, fader, insert count). Track faders and sends are in tracks.list.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior. The description adds useful behavioral context by enumerating the returned mixer sections, including insert counts on returns, which annotations cannot convey.

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: the first front-loads the returned mixer state, and the second routes track-level queries elsewhere. There is no wasted text.

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?

With no output schema, the description carries the burden of describing return values and does so concretely for master and return buses. It could be slightly more complete about whether the return bus list is exhaustive, but it is sufficient for a no-parameter read 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?

The tool has zero parameters, so there is no parameter semantics to explain. The description correctly avoids inventing filters or parameters, matching the empty input 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 names the exact resources returned: master fader in dB, balance, and return buses with index/name/fader/insert count. It also explicitly separates track-level data by pointing to tracks.list, so an agent can distinguish it from sibling listing tools.

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?

It gives clear routing guidance by saying track faders and sends are in tracks.list, which prevents misuse for track-level queries. It does not spell out when-not conditions beyond that, but for a zero-parameter read getter this is adequate.

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

mixer_remove_returnA
Destructive

Delete a return bus with its effects and every track's send to it. Later buses move down one index. Undoable (the sends come back too).

NameRequiredDescriptionDefault
busYesReturn bus index.

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already flag destructiveHint=true and idempotentHint=false, and the description adds real value on top: it names the cascade (bus effects and per-track sends are removed), the index-shift side effect on later buses, and that the operation is undoable with sends restored.

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?

Three short sentences, zero waste, with the destructive action and its cascade front-loaded before the index-shift and undo notes.

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

Completeness5/5

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

For a one-parameter destructive mutation with no output schema, the description covers the safety profile, cascade behavior, index consequences and reversibility — everything an agent needs before invoking it.

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 100% and the single parameter is documented there as 'Return bus index', so the description adds no syntax or range detail beyond it; baseline 3 applies.

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?

States a specific verb and resource ('Delete a return bus') plus its scope of effect (its effects and every track's send to it), which cleanly separates it from mixer_add_return and mixer_set_return.

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?

The context of use is clear from the deletion semantics and the disclosure that later buses shift down, but it never explicitly names alternatives or a when-not-to-use condition (e.g. to clear sends without deleting, use mixer_set_send).

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

mixer_set_masterA
Idempotent

Master fader in dB (up to about +6) and balance (-1..1). Prefer leaving the master at 0 dB and balancing the tracks. Undoable.

NameRequiredDescriptionDefault
panNoBalance -1 left .. +1 right.
volume_dbNoMaster fader in dB.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare idempotent, non-read-only and non-destructive; the description adds 'Undoable', which is genuinely new information about state recoverability. The stated headroom ('up to about +6') also warns the agent that the fader has a ceiling, which annotations do not convey. It stops short of saying whether the change is immediately audible or persisted.

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?

Three short clauses, zero filler, with the core purpose front-loaded and the advisory note placed after the facts. 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.

Completeness4/5

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

For a two-optional-parameter setter with full annotation coverage and no output schema, the description supplies purpose, an operational recommendation, and undoability. A minor gap is not stating what happens when both parameters are omitted.

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

Parameters3/5

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

Schema description coverage is 100% and the description merely echoes the schema ranges ('up to about +6', '-1..1'). The paraphrase of pan as 'balance' slightly clarifies intent, but no added syntax or format detail beyond the schema — baseline 3.

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 the specific resource (master fader) and the two properties being set (level in dB, balance), which cleanly separates it from the per-track mixer siblings like mixer_set_send and mixer_set_return. It never explicitly names those siblings, but the master-vs-track distinction 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 Guidelines4/5

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

'Prefer leaving the master at 0 dB and balancing the tracks' gives a concrete recommendation about when not to push this fader, which is real usage guidance rather than a restatement. It does not name a specific alternative tool (e.g. mixer_get, groove_set, track gain), so it falls short of the explicit routing seen in the top-tier examples.

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

mixer_set_returnC
Idempotent

Fader of a return bus in dB. Undoable.

NameRequiredDescriptionDefault
busYesReturn bus index.
volume_dbYesFader in dB.

TDQS

C2.7/5.0
Behavior3/5

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

Annotations already declare readOnly=false, idempotent=true, destructive=false, so the safety profile is covered. The description adds one genuinely useful trait not in the annotations — 'Undoable' — but says nothing about prerequisites (does the return bus need to exist?), how out-of-range values are handled, or how it relates to mixer_get.

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?

Two short fragments with zero waste, but the terseness tips into under-specification rather than crispness — a missing verb and missing object ('Fader of a return bus in dB' is not a sentence).

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 that changes audio levels, the description omits what the return bus is in this session model, whether the bus must already exist, and the audible consequence of the wide -200..6 dB range. Annotations cover reversibility, but the core operational context is thin.

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

Parameters3/5

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

Schema description coverage is 100%, with both 'bus' and 'volume_db' documented including min/max ranges, so the baseline is 3. The description restates 'return bus' and 'dB' without adding units, defaults, or the -200..6 dB range implications.

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 fragment names the resource (a return bus) and the quantity (fader in dB), so an agent can infer it sets a return bus level. But there is no verb and no differentiation from siblings such as mixer_set_send or mixer_set_master, which also set levels in dB.

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 guidance on when to use this versus mixer_set_send (per-track sends), mixer_set_master (master fader), or mixer_add_return. The agent must infer the distinction 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.

mixer_set_sendA
Idempotent

Send level from a track to a return bus in dB (up to +6; -120 or lower = off), e.g. to put a part into the reverb on a return. Undoable.

NameRequiredDescriptionDefault
busYesReturn bus index from mixer.get.
trackYesTrack id (UUID string from tracks.list, stable) or 0-based index (shifts when tracks are added or moved).
level_dbYesSend level in dB.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already cover idempotency, non-destructiveness, and closened-world behavior. The description adds two behavioral facts not in annotations: that levels below -120 dB disable the send, and that the operation is undoable. It doesn't address whether a send is auto-created when none exists, which would complete the picture.

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 core action front-loaded, the range/off semantics parenthesized, a use-case example, and undoability tacked on last. Zero wasted words.

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?

No output schema exists and annotations cover the safety profile, so the description only needs to fill in domain-specific behavior; the dB range, off threshold, and undoability do that. The one gap is what happens when no send currently exists on that track/bus pair — creation vs. error is unstated and matters for a mixer 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 100% so the baseline is 3; the description earns a bump by adding semantics the schema lacks — level_db is capped at +6 in practice and anything at -120 or below turns the send off rather than setting a very quiet level. Track and bus parameters are fully documented in the schema, so no further description is needed.

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?

States a specific verb and resource: setting a send level from a track to a return bus. The track→return-bus relationship and dB units clearly distinguish it from mixer_set_return (bus-level settings) and mixer_set_master, which no sibling covers.

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?

The example 'to put a part into the reverb on a return' gives a concrete use case, so the agent knows when to reach for it. It stops short of naming a contrasting alternative or stating exclusions (e.g., when to use mixer_set_return instead).

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

mix_metersA
Read-onlyIdempotent

Live levels, as the mixer meters show them: per track peak/RMS (dBFS) and EBU R128 loudness (momentary, short-term, integrated LUFS, true peak dBTP); on the master also stereo correlation and loudness range (LU). Meters only move while audio plays: start the transport, wait a few seconds, then read. null = silence or not measured yet.

NameRequiredDescriptionDefault
tracksNoOnly these tracks (default: all).

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already cover the safe-read profile (readOnly, idempotent, non-destructive), yet the description adds two non-obvious traits: readings are meaningless unless the transport is running, and null means silence or not-yet-measured. It does not describe snapshot timing/latency or per-frame vs averaged semantics, which keeps it at 4.

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?

Front-loaded with the resource and return contents, then the operational constraint, then the null convention. Dense but every clause carries information; the caveat is placed after the payload rather than buried.

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

Completeness5/5

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

No output schema exists, so the description must carry return-value semantics — and it does, enumerating peak/RMS in dBFS, momentary/short-term/integrated LUFS, true peak dBTP, stereo correlation and LU range. Combined with the null convention and playback precondition, nothing needed to interpret the response is missing.

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 100% and the single 'tracks' parameter is fully documented in-schema, including the UUID-vs-index distinction and default. The description adds nothing about parameter behavior (e.g. whether master is always included), so baseline 3 applies.

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 and resource ('Live levels, as the mixer meters show them') followed by an exact inventory of what is returned per track and on the master. It is clearly separable from the static 'mixer_get' and from offline analysis 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?

'Meters only move while audio plays: start the transport, wait a few seconds, then read' gives a concrete when-and-how sequence tied to transport_play. It does not name alternatives such as analysis_capture or analysis_file (offline measurement), so it stops short of full alternative routing.

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

params_listA
Read-onlyIdempotent

Every parameter of a track: its instrument (builtin synth or VST3 / CLAP plugin) and every insert effect, plugins included, with key, name, device, group, range, default and current value. Plugins have hundreds: narrow with filter (words that must all appear, e.g. 'filter cutoff') and page with offset / limit (default 100).

NameRequiredDescriptionDefault
limitNoMost returned (default 100).
trackYesTrack id (UUID string from tracks.list, stable) or 0-based index (shifts when tracks are added or moved).
filterNoWords that must all match name, group or device.
offsetNoSkip this many matches.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds meaningful behavior: the scope includes both instrument and insert-effect parameters, plugin tracks can have hundreds of entries, and the page size defaults to 100 — all useful for anticipating result size.

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: the first defines scope and return fields, the second gives the narrowing/paging strategy. The field list is dense but front-loaded and no sentence is filler.

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?

With no output schema, the description correctly compensates by naming the returned fields (key, name, device, group, range, default, current value), and it covers pagination defaults. Track identifier semantics are left to the schema, which documents them fully, so nothing essential 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?

Schema coverage is 100%, so baseline is 3. The description still earns a bump by explaining that filter words must ALL match (conjunctive semantics) and giving a concrete example ('filter cutoff'), plus restating the default page size in context of why paging matters.

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 precisely (every parameter of a track, covering the instrument and all insert effects, plugins included) and enumerates the returned fields. It's clear it's a read/list operation and distinct from params_set or devices_get, though the verb itself is only implied 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 Guidelines3/5

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

It gives concrete guidance on narrowing with filter and paging with offset/limit for plugin-heavy tracks, which is real usage advice. But it never says when to reach for this versus siblings like devices_get, automation_list, or params_set, leaving tool selection to inference.

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

params_setA
Idempotent

Set parameters of a track by their params.list keys (instrument:, fx::), each in its own range (plugins are usually 0-1). All are checked before any changes; one undo step. For builtin effects devices.set_params by name is simpler.

NameRequiredDescriptionDefault
trackYesTrack id (UUID string from tracks.list, stable) or 0-based index (shifts when tracks are added or moved).
valuesYesParameter key → value.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare non-readonly, idempotent, non-destructive. The description adds genuinely new behavior: values are validated as a batch before any write ('All are checked before any changes') and the whole call collapses into 'one undo step'. It does not say what an invalid value returns, which keeps it short of a 5.

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?

Three short sentences: what it sets and the key format first, the atomicity guarantee second, the alternative last. No filler, nothing to trim.

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-param mutation with full schema coverage and annotations, the description covers addressing, range expectation, atomic validation, and undo granularity — enough to call it correctly. It stops short of describing error/failure reporting, the only real gap for an agent that might pass an out-of-range value.

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 100% for the two top-level params, but the schema's 'values' is an opaque number map — the description supplies the key syntax and the per-parameter range expectation ('plugins are usually 0-1'), which the schema does not. That is real added meaning beyond the schema, though the track-id-vs-index distinction is left to the schema.

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?

States a specific verb and resource ('Set parameters of a track') and immediately pins down the addressing scheme with the params.list key syntax (instrument:<id>, fx:<slot>:<index>). It also names a sibling alternative (devices.set_params) so the agent can tell the two apart without opening either schema.

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 routes builtin-effect edits to devices.set_params 'by name' as the simpler path, implying this tool is for the raw-list key/range case. There is no hard when-not statement (e.g. do not use for device-level params at all), but the routing condition is clear.

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

sampler_getB
Read-onlyIdempotent

The sampler of an audio clip: file, length, playback mode, root note, transpose, envelope and its slices (index, the note that plays it, start and end in seconds).

NameRequiredDescriptionDefault
slotYes0-based clip slot (scene row) on the track.
trackYesTrack id (UUID string from tracks.list, stable) or 0-based index (shifts when tracks are added or moved).

TDQS

B3.1/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds no behavioral context beyond the field list: it does not say what happens if the slot is empty, if no Sampler device exists, or how slice data is ordered or bounded.

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 dense sentence that front-loads the resource and then enumerates returned fields, including units (seconds) for slice start/end. No filler, though the lack of an explicit verb makes the opening slightly ambiguous.

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?

With no output schema, the description carries the return-value burden and does so well by listing every field and clarifying sample-slice semantics (index, triggering note, start/end in seconds). It falls short only on error/edge-case behavior for clips without a Sampler.

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 100%; track and slot are fully documented in the schema (UUID vs shifting index, 0-based slot). The description mentions the clip only implicitly and adds nothing about parameter meaning, so the baseline 3 applies.

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 precisely what is returned for a given clip's sampler (file, length, root note, transpose, envelope, slices), which makes the retrieval purpose clear. But it is a bare noun phrase with no verb and gives no differentiation from sibling readers like devices_get, params_list, or sampler_set.

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 guidance on when to call this versus sampler_set, sampler_slice, clips_write_slices, or devices_get, and no stated precondition (e.g. that the slot must hold an audio clip with a Sampler device). The agent must infer usage entirely from the name.

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

sampler_setA
Idempotent

Change how an audio clip's sampler plays (fields left out stay): playback_mode one_shot, loop, slice, gate, granular, warp; root note, transpose in semitones, reverse, envelope (attack/decay/release ms, sustain 0-1). Undoable.

NameRequiredDescriptionDefault
slotYes0-based clip slot (scene row) on the track.
trackYesTrack id (UUID string from tracks.list, stable) or 0-based index (shifts when tracks are added or moved).
reverseNoPlay backwards.
sustainNoSustain level.
decay_msNoDecay.
attack_msNoAttack.
root_noteNoNote that plays the sample unshifted.
transposeNoSemitones.
release_msNoRelease.
playback_modeNoHow the clip plays.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare that this is a non-read-only, non-destructive, idempotent, closed-world operation. The description adds meaningful behavior beyond that by stating that omitted fields are preserved and that the change is undoable. It still does not describe permissions, return behavior, or edge cases, so it is strong but not exhaustive.

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

Conciseness4/5

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

The description is front-loaded with the core action and uses a compact one-sentence structure with no filler. The semicolon-separated field list is dense but efficient; it could be slightly clearer structurally, but nothing is wasted.

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 10-parameter mutation tool with full schema coverage and annotations covering safety and idempotency, the description supplies the important missing behavioral context: partial-update semantics and undoability. Track/slot identification is handled by the schema, and no output schema exists, so the description is complete enough without additional return-value detail.

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 100%, so the baseline is 3. The description adds some value by grouping envelope fields with units and ranges, listing the playback_mode enum values, and stating that omitted fields remain unchanged, but it does not provide deeper per-parameter semantics than the schema already offers.

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 gives a specific verb and resource: it changes how an audio clip's sampler plays. It enumerates the sampler fields, which clearly distinguishes it from general device or clip-writing tools. However, it does not explicitly route the agent away from siblings such as sampler_get, sampler_slice, or devices_set_params.

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 phrase 'fields left out stay' clarifies partial-update behavior, and 'Undoable' gives useful usage context. But the description does not explicitly say when to use this instead of sampler_get for reading, sampler_slice for slicing, or other parameter-setting tools, so guidance remains implied rather than explicit.

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

sampler_sliceA
Idempotent

Cut an audio clip into slices, as the sample editor's slice detection does: on transients (sensitivity), into equal parts (count) or on beats (division per beat at the clip's tempo). A clip holds at most 92 slices (notes 36-127): slice a short loop, not a whole song. Switches the clip to slice mode: each slice gets a note, so clips.write_slices can play patterns and melodies from them. Returns the slices. Undoable.

NameRequiredDescriptionDefault
modeNoHow to cut (default transients).
slotYes0-based clip slot (scene row) on the track.
countNoequal: number of slices.
trackYesTrack id (UUID string from tracks.list, stable) or 0-based index (shifts when tracks are added or moved).
divisionNobeats: slices per beat, 1 = quarters, 2 = eighths, 4 = sixteenths.
sensitivityNotransients: how readily a hit starts a slice.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations declare non-read-only, non-destructive, idempotent, but the description adds the substantive consequence: the clip is switched into slice mode and each slice receives a note, which is a real state mutation not visible from annotations. It also discloses the hard 92-slice limit, that slices are returned, and that the operation is undoable.

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?

Four dense sentences, each carrying distinct information: purpose and modes first, then the hard limit, then the side effect, then the return/undo note. No filler and no repetition of the schema.

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

Completeness5/5

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

For a 6-parameter mutation tool with no output schema, the description covers what it does, the constraint on clip size, the resulting state change, downstream consumers (clips.write_slices), the return value, and reversibility. Nothing an agent needs in order to call it correctly 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?

With 100% schema coverage the schema already defines every parameter, so the baseline is 3; the description earns extra credit by explicitly coupling each enum value of mode to the parameter that matters for it and noting beats are resolved at "the clip's tempo." It does not add format or boundary nuance beyond that.

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?

Opens with a specific verb+resource ("Cut an audio clip into slices") and immediately enumerates the three cutting strategies, so the agent knows exactly what the tool does and how it differs from neighbors like audio_split_stems or clips_transform. The mode-to-outcome mapping makes the tool's identity unambiguous.

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 concrete selection guidance for each mode (transients→sensitivity, equal→count, beats→division) and an explicit size exclusion: "slice a short loop, not a whole song" due to the 92-slice cap. It stops short of contrasting with sibling tools that also manipulate audio, but the in-tool guidance is clear.

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

scenes_launchA
Idempotent

Launch every clip of a scene row together, quantised like a click on the scene. Starts the transport unless start_transport is false.

NameRequiredDescriptionDefault
sceneYes0-based scene row.
start_transportNoStart playback if stopped (default true).

TDQS

A3.8/5.0
Behavior4/5

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

Adds real context beyond the annotations: the launch is quantised, and the transport side effect is disclosed with the start_transport escape hatch. What is missing is whether other currently playing scenes/clips are stopped or left running, which is the key behavioral question for a live-performance launch.

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 tightly written sentences, with the primary action front-loaded and the conditional side effect second. Nothing is wasted.

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 tool with full schema coverage and annotations that declare the safety profile (non-destructive, idempotent, closed-world), the description is nearly sufficient. The only gap is whether launching a scene stops other scenes.

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 100%, so both parameters are already documented, including the start_transport default. The description reinforces the transport behavior but adds no new syntax or semantic detail beyond 'quantised', which applies to the launch itself rather than to a parameter.

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: launching all clips of a scene row at once. The phrase 'every clip of a scene row together' implicitly distinguishes it from clips_launch (single clip) and transport_play, but it never names those siblings 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 scene-row scope implies when to use it over clips_launch, and 'quantised like a click on the scene' signals the musical context. However, there is no explicit when-to-use/when-not statement or named alternative.

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

scenes_listA
Read-onlyIdempotent

Scene rows of the session: index, name, colour and how many tracks have a clip in the row. Clip slot N of every track belongs to scene N.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so safety is covered. The description adds genuine domain context beyond that – the scene/clip-slot alignment rule ('Clip slot N of every track belongs to scene N') – which tells the agent how to interpret the returned counts, though it omits ordering guarantees and empty-session 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?

Two sentences, zero filler. The returned-field list is front-loaded and the clip-slot alignment rule follows as supporting context, so the agent gets the essentials first.

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?

With no output schema, the description carries the burden of describing return values and does so at the field level (index, name, colour, clip counts per row). What's missing is minor: whether the result is ordered by index and how rows with no clips are represented.

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; baseline 4 applies. The schema is empty and closed (additionalProperties=false), consistent with the description's implication of a parameterless full listing.

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 (scene rows of the session) and enumerates the exact fields returned: index, name, colour, and per-row track clip counts. This makes it clearly the read/list counterpart to scenes_launch and scenes_update, though it never explicitly says 'list' or names those 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?

Usage is only implied: an agent can infer this is the discovery call before launching or updating scenes, but the description gives no explicit when-to-use guidance, no prerequisites, and no mention of the sibling tools it replaces or complements.

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

scenes_updateA
Idempotent

Rename or recolour a scene row (e.g. 'Intro', 'Drop'). Undoable.

NameRequiredDescriptionDefault
nameNoNew name.
colorNo#rrggbb, or empty for the default colour.
sceneYes0-based scene row.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover readOnly=false, destructiveHint=false and idempotentHint=true, so safety is established structurally. The description adds genuine context beyond them by declaring the operation 'Undoable', telling the agent a recovery path exists via edit_undo. It does not clarify partial-update behavior (that both fields are optional), which would have pushed it higher.

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, front-loaded sentences with zero filler; the operation and its consequences arrive first. Nothing repeats the schema or the annotations.

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 three-parameter metadata mutation with full schema coverage and no output schema, the description supplies what matters: scope and undoability. The only gap is silence on whether supplying one field leaves the other unchanged.

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

Parameters3/5

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

Schema description coverage is 100%, so name, color format and the 0-based scene index are fully documented in the schema. The example values ('Intro', 'Drop') hint at typical names but add no semantics the schema lacks, making the baseline 3 correct.

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, recolour) and a precise resource (a scene row), so an agent can immediately tell this edits scene metadata rather than launching or listing scenes. It lacks an explicit contrast to scenes_list/scenes_launch, keeping it just 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?

Usage is only implied by the verb phrasing; there is no statement of when to call this versus scenes_launch or scenes_list, nor any prerequisite such as the scene existing first. Adequate but leaves selection to inference.

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

session_infoA
Read-onlyIdempotent

Overview of the open project: name, unsaved changes, sample rate, number of tracks, scenes and return buses, and whether the audio engine runs. Call this first to orient yourself.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered elsewhere. The description adds real value by disclosing the exact payload of the call (unsaved-changes flag, engine-running flag), which is the only signal about what comes back since there is no output schema. It does not cover failure modes such as calling with no project open.

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 informative field enumeration is front-loaded before the call-to-action. Every clause earns its place.

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

Completeness5/5

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

With zero parameters, no output schema, and full annotation coverage of safety semantics, the description supplies the one missing element: the contents of the response. An agent has everything it needs to decide to call this tool and interpret the result.

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, which is the baseline-4 case. Nothing in the description misleads about inputs, and the empty schema makes the parameter story unambiguous.

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 resource ('the open project') and enumerates exactly what the overview contains: name, unsaved changes, sample rate, track/scene/return-bus counts, engine status. That is well beyond a restated name. It does not explicitly contrast with the nearest sibling (session_save) or with tracks_list/scenes_list, so it falls just 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 Guidelines4/5

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

'Call this first to orient yourself' gives explicit ordering guidance that no sibling provides, telling the agent where in a workflow this belongs. It does not name when-not to call it or point to a specific alternative, so there's no full exclusion logic.

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

session_saveA
Idempotent

Save the project with its audio collected next to it, to its own file or to an absolute .omni path (a new name becomes the project's). Does not overwrite another existing file unless asked.

NameRequiredDescriptionDefault
pathNoAbsolute .omni path (default: the project's own).
overwriteNoReplace another existing file (default false).

TDQS

A4.1/5.0
Behavior4/5

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

Annotations cover the safety profile (non-read-only, non-destructive, idempotent), so the description earns credit by adding genuinely new behavior: audio is collected alongside the file, and a new filename renames the project itself. Those are real side effects an agent would not infer from the annotations.

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, zero filler, with the destination semantics front-loaded and the non-overwrite caveat trailing as a qualifier. 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 two-optional-param save tool with no output schema, the description covers destination, renaming, audio handling, and overwrite protection. It does not say what happens on failure or what the call returns, which is a minor 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?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema does not: passing a new name changes the project's identity, not just the write target. That is a semantic consequence of 'path' beyond 'Absolute .omni path'.

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 (Save) and resource (the project), plus two destinations: its own file or an absolute .omni path. No sibling tool performs a save, so there is nothing to disambiguate against, but the scope is unmistakable.

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?

The conditional clause 'Does not overwrite another existing file unless asked' tells the agent when the overwrite path applies, and the default-to-own-file behavior sets the no-argument baseline. It does not spell out prerequisites (e.g. unsaved changes), so it stops short of explicit when/when-not guidance.

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

tempo_getB
Read-onlyIdempotent

The project tempo, the tempo map (tempo changes and ramps over the song) and the time signature changes.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is fully covered elsewhere. The description adds value only by scoping the return payload (tempo, map with ramps, time signatures); it says nothing about cost, side effects, or freshness of the data.

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, and the three returned data groups are front-loaded. The parenthetical clarifying what a tempo map contains is the only structural wrinkle and it 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?

With no output schema, the description must convey the shape of the response, and it does so by naming the three components returned. What is missing is any sense of ordering or how the tempo map is represented, but for a zero-argument read this is close to 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?

The tool takes zero parameters, so there is nothing for the description to disambiguate. The baseline for a parameterless tool applies, and the description correctly avoids inventing arguments.

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 enumerates exactly what is retrieved: project tempo, the tempo map including changes and ramps, and time signature changes. It is a noun phrase rather than a verb-first statement, but the resource is specific enough that an agent can separate it from tempo_set_map, tempo_set_time_signatures, and transport_set_tempo.

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 reading tempo via transport_get or inspecting the map before editing with tempo_set_map. The read-only nature is only implied by the name and the content list, with no exclusions or recommended workflow.

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

tempo_set_mapA
Idempotent

Replace the tempo map: points at song beats with a tempo, each a step or a linear ramp to the next. Timeline clips, automation, markers and the loop stay on their beats. Empty points = one tempo (transport.set_tempo). A step at a section boundary plays exactly; a ramp inside a MIDI clip is followed block by block. Undoable.

NameRequiredDescriptionDefault
pointsYesTempo points in time order.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations declare idempotent and non-destructive, and the description adds genuinely useful context the annotations cannot: musical positions of clips/automation/markers/loop are preserved, the operation is undoable, and step vs ramp are interpreted differently by context (section boundary vs inside a MIDI clip, block by block). It stops short of saying what happens to points beyond the 256 cap or how conflicting existing maps are merged/replaced, but coverage is strong.

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

Conciseness4/5

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

Four short sentences, front-loaded with the core action and model, then edge-case behavior. Dense but not padded. The dotted "transport.set_tempo" reference is the one element that could be tighter or dropped.

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 one-parameter, no-output-schema mutation tool, the description covers the data model, the empty case, side effects on musical positions, playback interpretation, and undoability. Only ordering/duplicate-beat rules and the 256-point limit are left entirely to the schema.

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 100% and the schema already documents beat, bpm, and the curve enum, so the baseline is 3. The description earns above that by explaining inter-point semantics ("each a step or a linear ramp to the next") and the empty-array case, which the schema's "Tempo points in time order" does not convey.

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?

"Replace the tempo map: points at song beats with a tempo, each a step or a linear ramp to the next" gives a specific verb (replace), resource (tempo map), and the data model (beat/bpm points with step vs linear interpolation). It is clearly distinguished from the sibling transport_set_tempo, which it names as the single-tempo fallback.

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 alternative for the degenerate case: "Empty points = one tempo (transport.set_tempo)", so an agent knows where to go for a plain tempo change. It does not spell out when NOT to use this tool (e.g., vs tempo_set_time_signatures or arrangement tools), and the sibling is referenced as "transport.set_tempo" rather than the sibling name transport_set_tempo, which is a minor routing friction.

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

tempo_set_time_signaturesA
Idempotent

Replace the time signature changes: from a bar on, so many beats of a unit (7/8, 3/4, …). Empty = the project signature everywhere. Undoable.

NameRequiredDescriptionDefault
pointsYesSignature changes in bar order.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly=false and idempotent=true. The description adds value beyond them by disclosing the replace-all semantics (existing changes are overwritten), the empty-list reset behavior, and undoability — all critical for a mutation tool. Return shape is not described, but that is the only material 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?

Three compact clauses: the action, the empty-case behavior, and the undo guarantee. No wasted words, and the mutation scope is front-loaded.

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 single required array parameter with nested documented fields and no output schema, the description covers action, reset semantics, and reversibility. It could mention ordering constraints or that bars beyond the project length are ignored, but nothing essential to a correct call 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?

Schema coverage is 100% and the nested item fields are documented. The description still adds meaning the schema lacks: that each point defines a signature 'from a bar on' (persisting forward) and that an empty array restores the project signature everywhere — a semantic not captured by 'Signature changes in bar order.'

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 ('Replace the time signature changes') with a concrete format illustration (7/8, 3/4). It does not reference the neighboring tempo tools (tempo_set_map, transport_set_tempo), so an agent must infer the boundary, but the purpose itself 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?

The clause 'Empty = the project signature everywhere' is a genuine usage hint about the reset case, which is more than most definitions offer. However there is no explicit when-to-use guidance relative to tempo_set_map or transport_set_tempo, so selection between siblings is left implied.

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

theory_analyzeA
Read-onlyIdempotent

The chords a MIDI clip's notes spell, with symbols and numerals, one per resolution_beats (default a bar); the key is estimated from the notes unless given. Use it to understand a user's part before writing around it.

NameRequiredDescriptionDefault
keyNo
slotYes0-based clip slot (scene row) on the track.
trackYesTrack id (UUID string from tracks.list, stable) or 0-based index (shifts when tracks are added or moved).
resolution_beatsNoShortest chord in beats.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, non-destructive behavior, so the description's job is to add context — and it does: it discloses that the key is auto-estimated unless supplied, that output is chord symbols plus Roman numerals, and that segmentation is driven by resolution_beats defaulting to one bar. It does not cover degenerate cases such as a clip with no notes, but the added behavioral detail is substantive.

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 sentences, zero filler, and the output shape is packed into the first clause. The only weakness is front-loading: it leads with the output noun phrase rather than the action, so the agent must read to the second sentence to get the usage cue.

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?

With no output schema, the description takes on the burden of describing the return value, and it does so adequately (symbols and numerals, one per resolution_beats). The nested key object and the track/slot addressing are fully documented in the schema, so the remaining gap is only edge-case behavior on empty or non-MIDI clips.

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 75%, so the schema carries most weight, yet the description still adds meaning: it explains that key is optional because the key is inferred from the notes, and that resolution_beats defaults to a bar (the schema only says 'shortest chord in beats' with a 0.25–64 range). Track and slot semantics come entirely from the schema, which documents them well.

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 and output precisely: the chords a MIDI clip's notes spell, rendered as symbols and numerals at a given resolution. It implicitly distinguishes itself from generation siblings (theory_chord, theory_progression, clips_write_progression) by being an analysis of an existing clip, though the sentence opens with a bare noun phrase rather than a verb, slightly delaying the 'this analyzes' framing.

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?

'Use it to understand a user's part before writing around it' gives one concrete workflow, which is real guidance rather than none. But it never excludes alternatives — an agent can't tell from this whether to reach for clips_get_notes for raw note data or theory_harmonize when it wants derived parts instead of an analysis.

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

theory_chordA
Read-onlyIdempotent

Notes of a chord symbol (C, Am7, F#m7b5, Bbmaj9, G7/B, Dsus4, …): pitch classes, names and MIDI notes in close position from the root.

NameRequiredDescriptionDefault
octaveNoOctave of the root (4 = middle C's).
symbolYesChord symbol.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, so the safety profile is covered. The description adds genuinely new behavioral context by stating the returned voicing is 'close position from the root', which an agent cannot learn from the annotations or schema. It does not cover invalid-symbol handling, but that is a minor gap for a deterministic theory 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 front-loaded sentence naming the resource first, then what is returned, then the input domain. Every clause carries information; the example list is compact and earns its space by demonstrating valid syntax.

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?

With no output schema, the description correctly names the return contents (pitch classes, names, MIDI notes) and the voicing rule. What is missing is the shape of the return value (list vs object, note ordering, whether names correspond index-wise to MIDI numbers), which an agent consuming the result would want.

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 100%, so the baseline is 3, but the schema's description of 'symbol' is only 'Chord symbol.' The description meaningfully compensates by showing the accepted syntax across roots, qualities, extensions and slash chords. The octave parameter is fully described in the schema and correctly left alone.

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 gives a concrete resource (the notes of a chord symbol) and enumerates exactly what is produced: pitch classes, names and MIDI notes. The parenthetical example list (C, Am7, F#m7b5, G7/B, Dsus4) pins down the input domain precisely. It stops short of naming a sibling like theory_scale or theory_harmonize, so it is clear but not explicitly differentiated.

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 the chord-to-notes lookup, distinct from theory_scale (scales) or theory_harmonize. There is no explicit when-to-use statement, no mention of alternatives, and no guidance on how this pairs with clips_write_midi or theory_progression.

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

theory_harmonizeA
Idempotent

Find chords for the melody in a MIDI slot, in a key and a generator style (theory.vocabulary): one chord per harmonic-rhythm slot, chosen so the melody's strong notes are chord tones. fit 0 follows the style's habits, 1 the melody. Returns the chords; with write_to also writes them into a slot (performed like clips.write_progression). Undoable.

NameRequiredDescriptionDefault
fitNo0 = style, 1 = melody (default 0.7).
keyYes
barsNoBars to harmonise (default: the clip's).
seedNoColour seed (default 1).
slotYes0-based clip slot (scene row) on the track.
styleNoGenerator style from theory.vocabulary (default pop).
trackYesTrack id (UUID string from tracks.list, stable) or 0-based index (shifts when tracks are added or moved).
write_toNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare non-read-only, idempotent, non-destructive, but the description adds real context: harmonisation is one chord per harmonic-rhythm slot with strong notes as chord tones, writing only happens if write_to is supplied, output is returned as chords, and the write is undoable. These are behavioural facts the annotations cannot express.

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?

Front-loaded with the core action, then the fit semantics, then the write behaviour. Dense but no filler; the only cost is long sentences with stacked parentheticals.

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 an 8-parameter tool with nested objects and no output schema, it covers the return ('the chords'), the conditional write, and undo. The nested perform options rely entirely on schema text, which is acceptable given the schema documents them, but leaves the description slightly thin on the write path.

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 75%, so baseline 3, but the description clarifies the intent of fit ('0 follows the style's habits, 1 the melody') and frames style/key as theory.vocabulary-driven, which is more than the bare defaults in the schema. It says nothing about bars, seed, or write_to.perform, but those are documented in the schema.

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?

Opens with a specific verb+resource ('Find chords for the melody in a MIDI slot') and names the inputs (key, generator style) and the output (chords). It is clearly separable from siblings like theory_progression (which generates progressions without a melody) and clips_write_progression (which writes a given progression rather than deriving one).

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?

The description tells the agent when the tool applies (harmonising an existing melody clip) and how the fit parameter trades off style habits vs the melody. It also explains the optional write path and compares its behaviour to clips.write_progression, but gives no explicit exclusion telling the agent when to prefer that sibling instead.

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

theory_libraryA
Read-onlyIdempotent

Search the 240 named progressions (pop, rock, jazz, soul, blues, gospel, classical, modal, electronic, film, world, dark…). Pass a name to theory.progression or clips.write_progression as 'library'.

NameRequiredDescriptionDefault
limitNoMost entries returned (default 40).
queryNoWords that must all match, e.g. 'jazz turnaround'.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, closed-world, non-destructive, so the safety profile is fully covered. The description adds useful context the annotations lack: the bounded size of the library (240) and the intended hand-off pattern to other tools. It does not mention result ordering or that results are truncated by default, which keeps it below top marks.

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 sentences with zero filler; the identity and scope of the resource come first, the multi-tool hand-off second. Everything is front-loaded and nothing redundant is repeated from the schema.

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 read-only, fully described two-parameter search with no output schema, an agent has enough to call it correctly and knows where the results feed next. The only gap is what the returned entries look like or how they are ordered, which is minor given the annotation coverage.

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 100%, with both 'query' (all-words-match with example) and 'limit' (default 40, max 240) fully documented. The description adds only the implicit hint that a 'name' is the query target, which is marginal beyond the schema, so baseline 3 applies.

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?

States a specific verb (search) and resource (the 240 named progressions), and enumerates the genre scope, which distinguishes it from the sibling theory_progression lookup tool. An agent can immediately tell it retrieves library entries rather than generating or analyzing a progression.

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?

The second sentence gives clear downstream context: a found name can be passed to theory_progression or clips.write_progression as 'library'. That frames when the tool is useful, though it does not explicitly contrast with theory_vocabulary or state that this is browse-first when no progression name is known.

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

theory_progressionA
Read-onlyIdempotent

Turn a chord progression into voiced, voice-led notes ready for clips.write_midi: from text (numerals or symbols), from the library, or generated in a style. Optional bass line and playing pattern (arpeggios, pulses, strums, …). Deterministic. To write it straight into a clip with its chord lane, use clips.write_progression.

NameRequiredDescriptionDefault
keyYes
chordsNoRoman numerals or chord symbols. Each chord is one bar unless bars are marked: '|' separates bars and splits one between its chords, 'I:2' = 2 beats, '.' holds, '%' repeats the bar. E.g. 'ii7 V7 Imaj7 Imaj7', 'Am F C G', '| I | vi | IV V |'.
libraryNoName of a progression from theory.library.
performNo
generateNo

TDQS

A4.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered; the description's 'Deterministic' largely restates idempotentHint. It does add useful output-purpose context ('voiced, voice-led notes ready for clips.write_midi'), but with no output schema it never describes the shape of the returned note data, which is the main missing behavioral detail.

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 sentences plus a routing clause; the core action is front-loaded and every clause (input modes, optional bass/pattern, determinism, alternative tool) carries distinct 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 5-parameter tool with nested objects and no output schema, the description covers purpose, input modes, performance options, determinism and the sibling alternative. It stops short of describing the returned note structure and how key/mode constrain the generated/parsed chords, leaving a small 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?

Top-level schema coverage is only 40%, but the description compensates by mapping the three input modes onto chords/library/generate (an exclusivity the schema never states) and by citing perform.bass and perform.pattern with example values ('arpeggios, pulses, strums'). The nested field descriptions in the schema carry the rest, so only the 'key' object is left implicit.

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?

States a specific verb and resource ('turn a chord progression into voiced, voice-led notes') and names the downstream consumer (clips.write_midi). It is immediately distinguishable from the sibling clips.write_progression, which the description explicitly routes away.

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

Usage Guidelines5/5

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

Names the three input modes (text, library, generated), the optional performance layer, and the explicit alternative: use clips.write_progression to write directly into a clip with its chord lane. An agent can pick between theory_progression, clips.write_midi and clips.write_progression without opening a schema.

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

theory_scaleA
Read-onlyIdempotent

The seven degrees of a key (names, pitch classes, MIDI notes in the middle-C octave) and its diatonic chords as numerals, triads and sevenths. Use it to stay in key when writing melodies and bass lines.

NameRequiredDescriptionDefault
modeNoMode (default major): major, minor, dorian, phrygian, lydian, mixolydian, locrian, harmonic_minor, melodic_minor, phrygian_dominant.
rootYesTonic: C, C#, Db, D … B.

TDQS

A4/5.0
Behavior4/5

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

The annotations already declare read-only, idempotent, non-open-world, non-destructive behavior. The description adds useful behavioral context by saying exactly what information is returned, which matters because there is no output schema; it could still say more about output structure.

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, both useful: the first front-loads the returned musical data, and the second immediately gives a practical usage cue. There is no filler or redundancy.

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 read-only lookup tool with no output schema, the description supplies the key return contents and a usage context. It is nearly complete, though a little more detail about the output shape would make it fully self-contained.

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

Parameters3/5

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

Schema description coverage is 100%, so the root and mode parameters are already well documented in the schema. The description adds only the general idea of a key and the middle-C octave for MIDI notes, not additional parameter semantics beyond the 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 states the exact resource and contents: seven scale degrees with names, pitch classes, MIDI notes in the middle-C octave, plus diatonic chords as numerals, triads, and sevenths. It is clear what the tool provides, though it does not explicitly distinguish itself from nearby theory tools such as theory_chord or theory_progression.

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?

It gives a concrete use case: staying in key when writing melodies and bass lines. It does not explain when to avoid this tool or route to a sibling like theory_harmonize or theory_chord, so it falls short of full alternative guidance.

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

theory_vocabularyA
Read-onlyIdempotent

Every name the theory methods accept: modes, generator styles, playing patterns, library categories.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already establish readOnly/idempotent/non-destructive, so no credit is needed for safety. The description adds that the payload is a fixed, closed vocabulary (openWorldHint=false is consistent with this), but says nothing about whether values are returned flat or grouped by category, or about caching/staleness of the list.

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. It is slightly cryptic in phrasing ('Every name the theory methods accept') and would be stronger with a leading verb, but nothing 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?

With no parameters and no output schema, the description is the only place to explain the return shape. The four listed buckets hint at the structure but leave open whether the response is a flat list of strings or a mapping of category to values, which is the one thing an agent needs 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 schema carries no semantic burden and the description has nothing to disambiguate. Baseline 4 applies; there is no parameter detail it could usefully add.

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 resource: the enumeration of valid names ('modes, generator styles, playing patterns, library categories') accepted by the theory_* methods. That distinguishes it from theory_scale/theory_chord/theory_library, which compute or look up content rather than supply the vocabulary. It lacks an explicit verb ('returns'), so the purpose is clear but not crisply framed.

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 saying these are the names the theory methods accept, the agent can infer it should consult this before calling theory_* tools with name arguments. There is no explicit when-to-use statement, no mention of siblings, and no note on whether values are case-sensitive or how they combine.

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

tracks_createA

Add a track at the end. kind 'midi' plays notes through an instrument: pass an instrument from instruments.list: a builtin URI or an installed plugin (its uri = path, or its name). Without one the track is silent. Plugins load in the background: their parameters show in params.list a moment later. kind 'audio' plays samples. Returns the new track. Undoable.

NameRequiredDescriptionDefault
kindYesTrack type.
nameNoTrack name (default: the instrument's name).
instrumentNoinstruments.list uri (builtin or plugin) or plugin name (MIDI only).

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare the write/non-destructive/non-idempotent profile, and the description adds real behavioral detail beyond them: a track without an instrument is silent, plugins load asynchronously so their params appear in params.list 'a moment later', the new track is returned, and the operation is undoable. The async-loading warning is exactly the kind of gotcha an agent needs.

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?

Front-loads the core action in four words and every subsequent clause carries information (silence risk, plugin resolution, async loading, undo). The semicolon-chained sentences are dense and slightly run-on, costing it the top score.

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

Completeness5/5

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

With only three parameters, full schema coverage, and no output schema, the description covers everything an agent needs: the two kinds, the instrument resolution path, the silent-track pitfall, async plugin timing, the return value, and reversibility.

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 100%, so the baseline is 3, but the description adds meaning the schema lacks: why instrument matters (silence without it), what a plugin URI actually is ('its uri = path, or its name'), and the default name behavior. It doesn't restate the enum values or note that instrument is ignored for audio beyond the schema's own '(MIDI only)'.

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?

Opens with a specific verb and resource ('Add a track at the end'), then immediately splits the resource into its two kinds ('midi' vs 'audio'). This is clearly distinguishable from siblings like tracks_update, tracks_duplicate, and tracks_set_instrument.

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 concrete routing guidance for the required parameter ('pass an instrument from instruments.list: a builtin URI or an installed plugin') and explains the consequence of omitting it. It doesn't name alternative tools (e.g. tracks_set_instrument for later changes) or when-not-to-use conditions, so it falls 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.

tracks_deleteA
Destructive

Delete a track with its clips, devices and automation. Groups are not deleted this way (ungroup first). Indices of later tracks shift down. Undoable: undo rebuilds the whole track, instrument state included.

NameRequiredDescriptionDefault
trackYesTrack id (UUID string from tracks.list, stable) or 0-based index (shifts when tracks are added or moved).

TDQS

A4.7/5.0
Behavior5/5

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

Goes well beyond the destructive/idempotent annotations: it enumerates what is destroyed (clips, devices, automation), discloses a side effect on sibling data ('indices of later tracks shift down'), and states reversibility plus undo fidelity ('undo rebuilds the whole track, instrument state included'). That is exactly the context an agent needs before a destructive call.

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?

Four short sentences, front-loaded with the destructive action and its scope, then the group exception, then the collateral index shift, then undoability. No filler and nothing repeated from annotations or schema.

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

Completeness5/5

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

Single parameter fully documented in the schema, rich annotations, no output schema needed for a delete. The description covers destruction scope, exclusions, side effects and recoverability — everything required to call it safely.

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 100% and already explains id vs 0-based index, so the baseline is 3. The description adds meaning the schema lacks: that indices of later tracks shift after the delete, which materially affects how an agent should reason about the index form of the `track` parameter.

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 and resource ('Delete a track') with the full destruction scope spelled out: clips, devices, automation. It also carves out what it does not do ('Groups are not deleted this way'), which cleanly separates it from tracks_move, tracks_duplicate and family.

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?

Provides a concrete when-not condition ('groups... ungroup first') that prevents a misuse an agent would otherwise likely make. It stops short of naming an explicit alternative tool for group removal, but the required prerequisite action is stated clearly.

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

tracks_duplicateA

Copy a track (instrument, clips, effects, mixer settings, automation) right after it, named ' (Copy)'. A plugin instrument loads in the background: the copy shows in tracks.list a moment later. Undoable.

NameRequiredDescriptionDefault
trackYesTrack id (UUID string from tracks.list, stable) or 0-based index (shifts when tracks are added or moved).

TDQS

A4.3/5.0
Behavior5/5

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

The description adds substantial behavioral detail beyond the annotations: it lists exactly what gets copied, states that the duplicate is inserted immediately after the source, defines the naming convention, discloses that plugin instruments load asynchronously and may not appear in tracks.list immediately, and confirms the action is undoable. These details are highly relevant for an agent invoking a non-read-only, non-idempotent mutation.

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 focused sentences with the core action front-loaded, followed by important async and undo details. Every sentence contributes useful information without redundancy.

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

Completeness5/5

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

For a single-parameter mutation tool with no output schema, the description is complete enough: it explains what is copied, where the copy appears, the naming convention, async visibility timing, and undoability. Nothing essential for correct invocation is missing.

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?

The input schema has 100% description coverage for the single 'track' parameter, including both UUID string and 0-based index forms and the caveat that indexes shift. The description does not add further parameter-specific guidance, so the schema already carries the parameter 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 ('Copy a track') and enumerates exactly what is duplicated: instrument, clips, effects, mixer settings, and automation. It also specifies placement ('right after it') and naming ('<name> (Copy)'), which clearly distinguishes it from tracks_create and clips_duplicate.

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 usage is implied by 'Copy a track' and the insertion placement, but the description does not explicitly state when to use this instead of tracks_create or clips_duplicate. It gives useful context about placement and async behavior, but no explicit alternatives or exclusions.

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

tracks_listA
Read-onlyIdempotent

Every track in mixer order with its id, kind (midi/audio/group/vca), instrument, fader (dB), pan, mute/solo/arm, colour, group, insert effects and send levels. Use the ids in later calls; indices shift when tracks move.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so safety is covered; the description adds genuinely new behavior — that list order is mixer order and indices shift when tracks move, which steers the agent to persist ids rather than indices. It stops short of describing how nested insert/send data is shaped.

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, both dense with information: the first defines the payload, the second gives the operational caveat. The return-shape content is front-loaded and nothing is redundant.

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?

With no output schema, the description carries the burden of describing the return value and does so field-by-field, including the id/kind taxonomy. Remaining gaps are the internal structure of insert effects and send levels, and whether return/master tracks are included, but an agent can still call 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?

The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. No parameter-level claims are made or needed.

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 gives a specific resource (every track, in mixer order) and enumerates the returned fields — id, kind, instrument, fader, pan, mute/solo/arm, colour, group, inserts, sends. That is enough to distinguish it from tracks_create/tracks_update/tracks_delete and the narrower mixer_get without opening a schema.

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 the ids in later calls; indices shift when tracks move" tells the agent the tool is a discovery step that feeds id-based mutations, and warns that positional indices are unstable. There is no explicit when-not or named alternative, but the usage context is clear.

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

tracks_moveA
Idempotent

Move a track (a group with all its members) right before another track, joining that track's group, or to the end when 'before' is absent. Returns the new track order. Undoable.

NameRequiredDescriptionDefault
trackYesTrack id (UUID string from tracks.list, stable) or 0-based index (shifts when tracks are added or moved).
beforeNoTrack id (UUID string from tracks.list, stable) or 0-based index (shifts when tracks are added or moved).

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare non-read-only, idempotent, non-destructive, and closed-world behavior. The description adds valuable context beyond them: it returns the new track order and is undoable, and it explains group-joining semantics and the default end-placement when 'before' is omitted.

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?

Three short sentences, front-loaded with the primary action and followed by behavior and return value. Every sentence earns its place with no 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 simple mutation tool with 100% schema coverage and annotations covering safety and idempotency, the description supplies the key missing behavioral details: undoability, return value, group semantics, and default placement. Minor edge cases like moving a track before itself are unaddressed but not essential.

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 100%, so the baseline is 3. The description adds meaning beyond the schema by clarifying that 'track' moves as a group with all its members and that 'before' controls joining another track's group, with absence meaning end placement.

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?

States a specific verb (move) and resource (track) with precise semantics: moving a group before another track, joining that group, or to the end. No sibling tool performs track reordering, and the description makes the operation 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?

The description implies when to use it through the operation semantics, but never explicitly says when to choose this over alternatives or when not to use it. It gives no prerequisite or triggering context.

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

tracks_set_instrumentA
Idempotent

Replace the instrument of a MIDI track with one from instruments.list (builtin, or an installed plugin, loaded in the background). The track keeps its name, clips, effects and mixer settings. Undoable: undo brings the previous instrument back with its sound.

NameRequiredDescriptionDefault
nameNoNew track name (default: keep it).
trackYesTrack id (UUID string from tracks.list, stable) or 0-based index (shifts when tracks are added or moved).
instrumentYesinstruments.list uri, or a plugin name, e.g. Surge XT.

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations (readOnly=false, idempotent=true, destructive=false), it discloses that the track retains its name, clips, effects and mixer settings, that the change is undoable with the previous instrument and its sound restored, and that plugin instruments load in the background. These are meaningful behavioral traits an agent could not infer from structured fields.

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?

Three tight sentences, front-loaded with the action and source, followed by preservation and undo behavior. No redundant restatement of the name or schema.

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

Completeness5/5

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

With annotations covering safety/idempotency and no output schema required, the description supplies the remaining essentials: where the instrument comes from, what survives the swap, and that it is reversible. Nothing critical is missing for correct invocation.

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 100%, so the baseline is 3, but the description adds real meaning: the instrument value comes from instruments.list and may be a builtin or an installed plugin name, with background loading. The track id/index and optional name semantics are left to the schema, which is acceptable.

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 names a specific verb and resource ('Replace the instrument of a MIDI track') and states the source of the new instrument (instruments.list, builtin or installed plugin). This clearly separates it from siblings like tracks_update, devices_add, and instruments_load_preset.

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?

It gives clear context for when this tool applies (swapping a MIDI track's instrument from instruments.list) and notes plugin instruments are loaded in the background. It stops short of explicit exclusions or naming the alternative tool for non-MIDI/device-router cases.

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

tracks_updateA
Idempotent

Change a track's name, fader (volume_db, up to +6 dB), pan (-1..1), mute, solo or colour. Only the fields given change. Returns the track. One undo step (solo is monitoring and is not recorded).

NameRequiredDescriptionDefault
panNoPan, -1 left .. +1 right.
muteNoMute.
nameNoNew name.
soloNoSolo.
colorNoColour as #rrggbb.
trackYesTrack id (UUID string from tracks.list, stable) or 0-based index (shifts when tracks are added or moved).
volume_dbNoFader in dB; -120 or lower = fully down.

TDQS

A3.8/5.0
Behavior4/5

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

Adds real context beyond the annotations: partial-update semantics ("Only the fields given change"), the return value, and the undo/session-recording distinction for solo ("solo is monitoring and is not recorded"). That last point is genuinely non-obvious behavior an agent could not infer from idempotentHint/destructiveHint alone.

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?

Three short sentences, front-loaded with the operation and its mutable fields, then the update semantics, then the side effects. Nothing redundant or padded.

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?

Covers what it mutates, how partial updates behave, what it returns, and the undo/monitoring caveat — sufficient for a 7-param mutation tool with full schema coverage and no output schema. Only routing guidance to sibling tools is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so all seven parameters are already documented, including the pan and volume_db ranges the description repeats. The one meaningful addition is the patch semantics ("Only the fields given change"), which is only weakly implied by additionalProperties:false plus a single required field.

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?

Opens with a specific verb ("Change") and resource ("a track's name, fader, pan, mute, solo or colour"), which is unambiguous against siblings like tracks_create, tracks_delete and tracks_move. It stops short of a 5 because it never explicitly distinguishes itself from those siblings by name.

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: the field list and "Only the fields given change" tell an agent this is for modifying an existing track, but there is no explicit "use this instead of X when Y" and no mention that reordering belongs to tracks_move or renaming-on-create to tracks_create.

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

transport_getA
Read-onlyIdempotent

Play / record state, tempo (BPM), time signature and the playhead position in beats.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description adds that the payload includes BPM and beat-position values, which is useful context beyond annotations. It does not describe units beyond BPM/beats or whether the state is live-updating versus a snapshot, but with annotations doing the heavy lifting this is a reasonable 3.

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 listing the four returned facets with units inline where relevant (BPM, beats). No preamble, no restatement of the tool name, nothing wasted.

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?

There is no output schema, so the description must convey the return shape, and it does so by naming the four state facets an agent would need. It is slightly thin on whether 'record state' means armed/recording and whether position is a float or bar:beat string, but for a zero-parameter read it is nearly 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?

The schema has zero parameters, so there is nothing to disambiguate; baseline 4 applies. The description correctly signals the tool is argument-free by describing only returned state, avoiding any suggestion that a transport selector or filter is needed.

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 enumerates exactly what the tool exposes: play/record state, tempo in BPM, time signature and playhead position in beats. Combined with the name transport_get, an agent can tell this is the aggregate transport snapshot rather than a setter or a single-value read. It stops short of explicitly contrasting itself with tempo_get or transport_seek, so it is clear but not fully differentiated.

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: the field list suggests 'call this when you need the whole transport snapshot at once.' There is no explicit when-to-use, no statement that this is the read counterpart to transport_set_tempo/transport_seek, and no note that it takes no arguments so no filtering is needed. Adequate but leaves routing to inference.

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

transport_playA
Idempotent

Start playback from the playhead. Does nothing if already playing.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

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

The annotations already declare idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds the concrete no-op condition ('does nothing if already playing'), which is genuinely useful context beyond the generic idempotency flag. It omits whether playback resumes from the current playhead position versus restarting the scene/looped region.

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 with zero filler, and the primary action is front-loaded before the conditional no-op clause. Nothing could be trimmed without losing 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 zero-parameter, no-output-schema transport control, the description covers the action, the starting position, and the already-playing edge case. The one remaining gap is how this relates to arrangement_play and whether playback resumes stopped state at the playhead or restarts from the last start point.

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 no parameter semantics to document and the baseline of 4 applies. Nothing in the schema is left 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 and resource ('Start playback') and adds the scope detail 'from the playhead,' which separates it from transport_seek and transport_stop. It does not explicitly distinguish itself from arrangement_play, which is the only real ambiguity among 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?

Usage is strongly implied by the name and by its pairing with transport_stop, but no explicit when-to-use or alternative-selection guidance is given. It does not say how it differs from arrangement_play, which also appears to start playback.

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

transport_seekA
Idempotent

Move the playhead to a song position in beats (0 = song start).

NameRequiredDescriptionDefault
beatYesSong position in beats.

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true and destructiveHint=false, so safety and repeatability are covered elsewhere. The description adds only the beat-origin convention (0 = song start) and says nothing about the effect on ongoing playback or whether other transport state is altered, which is the main behavioral question for a seek.

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 short sentence with the action first and the origin convention second; no filler and nothing that could be trimmed without losing 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 one-parameter seek with full schema coverage and annotations carrying the safety profile, this is close to sufficient. The only meaningful gap is that it does not say what happens to playback if the transport is running when the playhead moves.

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 100% and the single parameter is already documented as 'Song position in beats.', so the baseline would be 3. The description earns an extra point for clarifying that 0 maps to song start and that positions are absolute in beats rather than relative offsets, which the schema does not state.

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 ('Move') and resource ('the playhead') plus the unit of the target position (beats), which is exactly what an agent needs to distinguish it from transport_play/stop/get. It does not explicitly name a sibling, but the resource+action pairing is unambiguous in a transport_* family.

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 naming and the '0 = song start' hint, so an agent can infer this positions the playhead rather than starting or stopping playback. However there is no explicit statement of when to prefer this over transport_play or transport_get, and no note on whether it must be called while stopped versus playing.

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

transport_set_tempoA
Idempotent

Set the project tempo in BPM (40-240). Arrangement clips keep their musical position. Undoable.

NameRequiredDescriptionDefault
bpmYesTempo in beats per minute.

TDQS

A3.9/5.0
Behavior4/5

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

Adds genuinely non-obvious behavior beyond the annotations: arrangement clips keep their musical position (i.e., audio/MIDI stays musically aligned rather than shifting in time) and the change is undoable. The undoability note reinforces destructiveHint=false, but the clip-position consequence is information the annotation set does not carry.

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?

Three short sentences, zero filler, and the core action plus range are front-loaded ahead of the secondary side-effect and undo notes.

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

Completeness5/5

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

For a one-parameter mutation with full schema coverage, annotation coverage, and no output schema, the description supplies what remains: valid range, side effect on arrangement clips, and reversibility. Nothing an agent needs to call it correctly is missing.

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 100% and the single parameter documents its type, required status, and 40-240 bounds inline; the description only restates the range. Baseline 3 is appropriate since the schema carries the full burden and the description adds no new meaning.

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 ("Set the project tempo in BPM") with an explicit value range, so the agent knows exactly what changes. It does not distinguish itself from near-siblings like tempo_set_map or tempo_set_time_signatures, which also mutate tempo-related 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?

Usage is only implied by the verb: the agent can infer this is for a single flat tempo value rather than a tempo map, but the description never says when to prefer it over tempo_set_map or how it interacts with tempo_get. No prerequisites 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.

transport_stopA
Idempotent

Stop playback (and a running recording, which is then kept).

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare non-read-only, idempotent, non-destructive behavior, and the description adds one genuinely useful detail: a recording in progress is stopped but kept. It says nothing about what happens to the playback position or to subsequent transport state.

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, front-loaded with the primary action, with the parenthetical carrying an extra fact that 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-output-schema tool with annotations covering safety, this is essentially sufficient. Only the post-stop transport state (e.g. whether the playhead resets) is left unstated.

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 no parameters, so the baseline is 4; there is nothing for the description to disambiguate beyond the action itself.

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 plus resource ("Stop playback") with an added scope detail that it also ends a running recording. It is clearly distinguishable from transport_play, though it never names that 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?

Usage is implied by the verb – you call it when something is playing or recording – but there is no explicit when-to-use guidance and no exclusion relative to clips_stop, which is a plausible source of confusion.

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. 115 tool updatesv0.3.0
    • First observedagent_apply
    • First observedagent_arrange_preview
    • First observedagent_arrange_timeline
    • First observedagent_export_preview
    • First observedagent_inspect
    • First observedagent_loop_preview
    • First observedagent_measure
    • First observedagent_midi_preview
    • First observedagent_preview
    • First observedagent_repeat_preview
    • First observedagent_status
    • First observedagent_verify_wav
    • First observedagent_wait
    • First observedanalysis_capture
    • First observedanalysis_compare
    • First observedanalysis_file
    • First observedarrangement_build_song
    • First observedarrangement_clear
    • First observedarrangement_copy_clip
    • First observedarrangement_edit_clip
    • First observedarrangement_get
    • First observedarrangement_place_clip
    • First observedarrangement_play
    • First observedarrangement_remove_clip
    • First observedarrangement_set_loop
    • First observedaudio_import
    • First observedaudio_split_stems
    • First observedaudio_transcribe
    • First observedautomation_clear
    • First observedautomation_list
    • First observedautomation_write
    • First observedclips_clear
    • First observedclips_duplicate
    • First observedclips_generate_melody
    • First observedclips_get_notes
    • First observedclips_launch
    • First observedclips_list
    • First observedclips_set_length
    • First observedclips_stop
    • First observedclips_transform
    • First observedclips_write_drums
    • First observedclips_write_midi
    • First observedclips_write_progression
    • First observedclips_write_slices
    • First observeddevices_add
    • First observeddevices_get
    • First observeddevices_list
    • First observeddevices_remove
    • First observeddevices_set_bypass
    • First observeddevices_set_params
    • First observeddevices_types
    • First observededit_redo
    • First observededit_undo
    • First observedexport_render
    • First observedexport_stems
    • First observedgroove_get
    • First observedgroove_set
    • First observedgroove_set_track
    • First observedinstruments_list
    • First observedinstruments_load_preset
    • First observedinstruments_presets
    • First observedjobs_get
    • First observedjobs_wait
    • First observedmarkers_add
    • First observedmarkers_remove
    • First observedmaster_build_chain
    • First observedmaster_check
    • First observedmaster_targets
    • First observedmidi_fx_add
    • First observedmidi_fx_get
    • First observedmidi_fx_list
    • First observedmidi_fx_remove
    • First observedmidi_fx_render
    • First observedmidi_fx_set_bypass
    • First observedmidi_fx_set_params
    • First observedmidi_fx_types
    • First observedmix_meters
    • First observedmixer_add_return
    • First observedmixer_get
    • First observedmixer_remove_return
    • First observedmixer_set_master
    • First observedmixer_set_return
    • First observedmixer_set_send
    • First observedparams_list
    • First observedparams_set
    • First observedsampler_get
    • First observedsampler_set
    • First observedsampler_slice
    • First observedscenes_launch
    • First observedscenes_list
    • First observedscenes_update
    • First observedsession_info
    • First observedsession_save
    • First observedtempo_get
    • First observedtempo_set_map
    • First observedtempo_set_time_signatures
    • First observedtheory_analyze
    • First observedtheory_chord
    • First observedtheory_harmonize
    • First observedtheory_library
    • First observedtheory_progression
    • First observedtheory_scale
    • First observedtheory_vocabulary
    • First observedtracks_create
    • First observedtracks_delete
    • First observedtracks_duplicate
    • First observedtracks_list
    • First observedtracks_move
    • First observedtracks_set_instrument
    • First observedtracks_update
    • First observedtransport_get
    • First observedtransport_play
    • First observedtransport_seek
    • First observedtransport_set_tempo
    • First observedtransport_stop

TDQS

B3.1/5.0

Scored across 115 tools

Disambiguation3/5

The core DAW tools mostly target distinct resources and actions, but there is meaningful overlap between transport_get and tempo_get, transport_set_tempo and tempo_set_map, and jobs_wait versus agent_wait. The large agent_* family (agent_preview, agent_apply, agent_arrange_preview, agent_arrange_timeline, agent_measure, agent_export_preview) also duplicates native arrangement, mastering, analysis and export operations, making boundaries unclear. An agent can often tell tools apart, but the parallel native/preview/agent layers create real misselection risk.

Naming Consistency4/5

Most tools follow a predictable domain_action snake_case pattern (tracks_list, clips_write_midi, mixer_set_send, devices_add), which is easy to scan. Minor deviations exist, such as agent_* tools using a different naming style and some domain_verb forms like transport_play versus noun-like session_info, but the overall convention is stable.

Tool Count1/5

115 tools is far beyond a well-scoped surface, even for a DAW with many domains. The large agent_* preview/wrapper family adds substantial duplication on top of already complete native tools, making the set unwieldy and hard to navigate.

Completeness4/5

The surface covers an unusually broad DAW lifecycle: transport, tracks, session clips, arrangement, automation, devices, MIDI FX, mixer, theory, audio analysis, mastering, export and jobs. Gaps are minor, such as no explicit scene delete, limited note-level editing, and no track group/ungroup operation, but most workflows can be completed or worked around.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    A
    maintenance
    Enables AI agents to control a browser-based digital audio workstation (openDAW) for music production, including track creation, effects, MIDI, automation, and rendering.
    100
    Apache 2.0
  • F
    license
    Not graded
    quality
    B
    maintenance
    Provides AI agents with reversible DAW control for music production, enabling inspection of instruments and parameters, batch edits, and evaluated revision runs with audio feedback and rollback.
    2
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables Claude to co-produce music in a self-hosted browser DAW by creating and editing patterns, chords, basslines and melodies, arranging and automating tracks, mixing with effects and spatial placement, analyzing and editing samples, rendering mixes with mastering feedback, and exporting MIDI and stems — all reflected live in the studio.
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    Control Logic Pro locally on macOS through MCP: transport, tracks, mixer, plug-in parameters, audio analysis, bounce and delivery, with optional gesture and voice control. Uses OSC, CoreMIDI and macOS Accessibility. Actions report confirmed, uncertain or failed outcomes. Actual control requires a local Mac with Logic Pro. Hosted/Linux builds are schema inspection only; all operations are disabled.
    12
    2
    MIT