Skip to main content
Glama

ableton-mcp

License: MIT M8ven Score

Local-first Ableton Live control for MCP clients. It has three parts: a Remote Script bridge that runs inside Live, a stdio MCP server, and an ableton-mcp CLI. Every change to the Live Set is planned first and runs only with a single-use confirmation.

Install

Requirements: macOS, Ableton Live 12 (tested with 12.4.6), Node.js 22.13 or newer, and ffmpeg for the audio analysis tools.

git clone https://github.com/cavi-ai/ableton-mcp.git
cd ableton-mcp
npm ci
npm run cli -- install

In Live's preferences, select CaviMcpBridge as a Control Surface. Then check the connection:

npm run cli -- doctor --json

Related MCP server: ableton-agent-mcp

Quickstart

Register the stdio server with your MCP client, using the absolute path of your checkout:

{
  "mcpServers": {
    "ableton": {
      "command": "node",
      "args": ["/path/to/ableton-mcp/apps/ableton-mcp/src/cli.mjs", "serve"]
    }
  }
}

Or call tools from the shell:

npm run cli -- status --json
npm run cli -- call list_devices --args '{"trackId":"track-0"}' --json

Find workflow guidance before choosing individual tools:

npm run cli -- call get_producer_workflow --args '{"query":"silent part","limit":3}' --json

Search returns keyword candidates with their required arguments. Retrieve a chosen reference by its exact workflow name and named string arguments. Searching and reading guidance do not execute Live operations.

To try client wiring without Live, run ABLETON_MCP_FIXTURE=1 npm start.

For a smaller initial tool catalog, set ABLETON_MCP_TOOL_PROFILE=core in the MCP server's environment. It advertises 63 common tools instead of the full catalog. Use the default all profile when an agent needs the complete MIDI, audio, rack, or snapshot toolset; restart the server after changing profiles. The CLI's direct call command remains independent of the discovery profile.

What it does

For separate creative and functional model contexts, configure optional production specialists. ABLETON_MCP_TOOL_PROFILE=producer exposes twelve tools, with detailed context and durable session history stored in private artifacts. Each role can use an installed Ollama model, a configured ACP agent or an explicitly enabled API client for Claude, Codex, OpenClaw, Hermes, OpenCode or AGY; Live changes retain their existing confirmation guards.

  • Reads: transport, tempo, key and scale, quantization, grooves, cue points, tracks, scenes, clips, notes, clip envelopes, devices and parameters, mixer and routing, rack hierarchies, and the Live browser.

  • Guarded mutations: track, scene and clip lifecycle, device loading and parameters, MIDI note editing, mixing and routing, undo and redo, and panic.

  • Music helpers: scale-aware chords, basslines, melodies, voicings, arpeggios, strums, drum patterns, humanization and velocity curves.

  • Audio analysis: loudness, true peak, spectrum, pitch, transients and tuning of local audio files.

  • Optional NKS preset catalog: search, tags and favorites for presets discovered from your plug-in libraries.

It publishes 328 tools, 9 concrete resources, 13 resource templates and 89 prompt templates. When Live's Remote Script API doesn't expose something, such as Arrangement automation, the tool reports that boundary and fails closed.

Documentation

Configuration

Variable

Default

Purpose

ABLETON_MCP_BRIDGE_SOCKET

/tmp/cavi-ableton-mcp.sock

Bridge socket. Read by both the bridge inside Live and the server.

ABLETON_MCP_CATALOG_PATH

unset

NKS catalog database for preset search.

ABLETON_MCP_BROWSER_METADATA_PATH

~/.cavi/ableton-mcp/browser-metadata.sqlite

Tags and favorites for Live browser items.

ABLETON_MCP_SPLICE_ROOTS

Existing macOS ~/Splice/Sounds and ~/Library/Splice/Plug-in/samples directories; otherwise []

Override with a JSON array of absolute local Splice folders. Set [] to disable discovery. Local cache files are not proof of a download license; cloud search and sync are not supported.

ABLETON_MCP_CONFIRMATION_DIR

~/.cavi/ableton-mcp/confirmations

Confirmation tokens for CLI call.

ABLETON_MCP_SNAPSHOT_DIR

~/.cavi/ableton-mcp/snapshots

Saved track, device-chain, group-system, and MIDI-feel snapshots in separate subdirectories.

ABLETON_MCP_FIXTURE

unset

1 makes npm start serve fixture data without Live.

ABLETON_MCP_TOOL_PROFILE

all

core: 63 common tools; producer: 12 specialist/session tools; directory: named native tools without coordinators; all: every tool. Compact profiles retain full runtime result validation.

Security

The bridge listens on a Unix domain socket and opens no TCP port. Live Set mutations require an observed state version, return a dry-run plan by default, and execute only with a 60-second, single-use token bound to the plan's hash. See the security model and SECURITY.md.

Tests

npm test
npm run eval:core
npm run verify:package

npm test runs the pipeline and server suites, the bridge's Python tests, and the docs tests. eval:core checks the compact MCP catalog and read-only tool behavior with MCP Eval. ImageMagick 7 (magick) and ffmpeg must be installed. verify:package packs the npm tarball, installs it into a temporary project, and drives the installed CLI and server.

Readiness scoring also requires a running Live bridge, a configured preset catalog, and available MIDI clips, audio sources, and devices. The manifest gate and readiness score are reported separately.

For model-driven mixer, MIDI, device and reconnect/resume checks against a saved scratch Set, see workflow validation.

Project status

See GitHub Releases and the changelog for released versions and changes. The tool surface can still change before 1.0.

Contributing

See CONTRIBUTING.md.

License

The code and the generic example artwork are MIT licensed. Third-party product names belong to their owners. No vendor artwork, logos or presets are included, and no endorsement is implied.

Available Tools

328 tools
add_audio_warp_markerA
Destructive

Plan or apply an audio warp anchor. Omit sampleTime to preserve playback timing; explicit sample positions are seconds. Live enforces sample bounds, neighbor ordering, and segment BPM limits.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
trackIdYesID from list_tracks.
beatTimeYesAnchor beat time.
planHashNoPlan hash.
sampleTimeNoOptional source position in seconds.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare this is a destructive mutation, and the description adds important behavioral context: Live enforces sample bounds, neighbor ordering, and segment BPM limits. It also distinguishes planning from applying via the first sentence, though it does not fully detail the confirmation-token workflow or what is irreversibly changed.

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 tightly written sentences with no waste. The core purpose is front-loaded, followed by practical parameter guidance and then validation constraints.

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 the presence of an output schema, full parameter descriptions, and destructive annotations, the description covers the key action, sampleTime semantics, and Live-enforced constraints. It could be slightly richer about the plan-vs-apply token flow, but the structured fields already carry that 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 coverage is 100%, so the schema provides the baseline parameter documentation. The description adds meaning beyond the schema by explaining that omitting sampleTime preserves playback timing and that explicit sample positions are in seconds, which clarifies the most semantically important optional 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?

The description states a specific verb and resource: "Plan or apply an audio warp anchor." It is clear what the tool does and implies its dual plan/apply nature, though it does not explicitly distinguish itself from siblings like move_audio_warp_marker or remove_audio_warp_marker.

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

Usage Guidelines2/5

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

The description gives parameter behavior (omit sampleTime to preserve playback timing) but does not state when to use this tool versus alternatives such as move_audio_warp_marker, remove_audio_warp_marker, or quantize_audio_clip. There are no explicit when-not conditions or prerequisite guidance.

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

adjust_rack_macro_countA
Destructive

Plan or invoke one native add/remove macro action on an exact rack, then report the observed count. Removal is refused while any macro mapping exists because Live does not expose the affected mapping target.

NameRequiredDescriptionDefault
actionYesOne native macro-count adjustment.
dryRunNoFalse executes with token and hash.
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.
deviceIdYesID from list_devices.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare destructive=true, readOnly=false and idempotent=false, so the safety profile is covered. The description earns credit on top by disclosing the removal precondition and its underlying reason (Live does not expose the affected mapping target) plus the fact that the result reports an observed count — context the 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 tight sentences with zero filler: the action and its post-condition come first, the constraint and its rationale second. Every clause adds 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?

An output schema exists, so return format need not be explained, and schema coverage is complete. What is missing is any framing of the dryRun → planHash/confirmationToken → execute sequence and expectedStateVersion staleness handling across the two calls, which matters for a non-idempotent multi-step mutation.

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 including the action enum, dryRun, planHash and confirmationToken are already documented, giving baseline 3. The description adds only the 'exact rack' scoping nuance and none of the optimistic-concurrency semantics behind expectedStateVersion, so it does not exceed the baseline.

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 verb pair (add/remove) on a specific resource (native rack macro count) scoped to 'an exact rack', and adds a post-condition ('report the observed count'). It does not name the adjacent siblings (rename_rack_macro, map_rack_macro_to_parameter, randomize_rack_macros) that an agent might confuse it with, so it stops short of full differentiation.

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?

'Plan or invoke' hints at the dryRun-then-execute workflow without stating which mode to use first or how planHash/confirmationToken flow. The one real exclusion is given clearly ('Removal is refused while any macro mapping exists'), which is valuable, but no alternative tool is named for the case where a mapping must be handled first.

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

adopt_instrument_comparisonA
Destructive

Plan or bind a new runtime comparison handle to two explicitly chosen existing MIDI parts, including after restart. Binds current notes, timing, devices, routing and topology; no tracks, notes, mutes or playback are changed. Restore uses both adoption-time mutes, not an unknown prior baseline. Refuses active pairs, recording, solo, live-input conflicts and two unmuted tracks. Does not prove historical identity or matching copies.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
originalYes
planHashNoPlan hash.
variationYes
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior5/5

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

Goes well beyond the annotations by enumerating exactly what is bound (notes, timing, devices, routing, topology), what is NOT touched (tracks, notes, mutes, playback), restore semantics (adoption-time mutes rather than an unknown baseline), and hard refusal conditions. This is unusually rich behavioral context; the destructiveHint=true annotation is consistent with creating persistent handle state even though musical content is unchanged.

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 purpose and each subsequent sentence adds a distinct behavioral fact (persistence, binding scope, restore semantics, refusals, limitations). Dense and jargon-heavy but largely waste-free.

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 destructive, multi-step tool the description covers behavior, prerequisites and refusals well, and an output schema exists so return values need not be explained. The notable gap is the missing explanation of the plan→dryRun→token execution flow, which matters for correct invocation.

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 67%, and the description adds only the mapping that the two targets are 'explicitly chosen existing MIDI parts'; it does not clarify the dryRun/planHash/confirmationToken plan-and-confirm workflow or expectedStateVersion. Baseline 3 is appropriate since the schema carries most parameter 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+resource: 'Plan or bind a new runtime comparison handle to two explicitly chosen existing MIDI parts,' which is precise and actionable. It clarifies persistence ('including after restart'), but it never names the sibling comparison tools (prepare_/select_/get_instrument_comparison), so an agent cannot disambiguate the family from the description 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?

Provides concrete when-not conditions ('Refuses active pairs, recording, solo, live-input conflicts and two unmuted tracks') and scope notes ('Does not prove historical identity or matching copies'). It gives real context for when this is applicable, but stops short of naming an alternative tool or stating the plan-vs-bind selection path against siblings.

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

advance_production_sessionA
Destructive

Advance one durable session phase with optimistic revision checks. propose runs a bounded specialist; choose selects a saved creative alternative; apply retains original dry-run and confirmation guards. resume inspects fresh state and preserves uncertain or partially failed execution. replan explicitly starts a new proposal from that inspection and its saved ledger. evaluate uses listening or caller-postcondition completion. Interrupted execution is never replayed.

NameRequiredDescriptionDefault
textNoListening feedback for feedback, or an explicit remaining goal for replan; not an observed Live fact.
actionYes
dryRunNo
decisionNo
planHashNoOriginal tool's plan hash.
projectIdYesPrivate project namespace.
sessionIdYesDurable session ID returned by start_production_session.
constraintsNo
alternativeIndexNo
expectedRevisionYes
confirmationTokenNoOriginal tool's single-use confirmation token.
expectedStateVersionNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Goes well beyond the annotations: 'optimistic revision checks' discloses the concurrency contract, 'apply retains original dry-run and confirmation guards' discloses the mutation safeguards, and 'Interrupted execution is never replayed' explains the non-idempotency that idempotentHint=false only implies. It does not spell out auth/permission requirements or what destructive effects actually occur.

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 purpose, then a dense sequence of action-specific clauses, each carrying distinct information with no filler. The single-run-on style makes it slightly hard to scan but no sentence is wasted.

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

Completeness3/5

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

For a 12-parameter destructive mutation with only 42% schema coverage, the description covers the action semantics and key safety traits well, and the output schema removes the need to explain returns. However, the unexplained 'feedback' action and undocumented revision/decision/token parameters leave gaps an agent must guess at.

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 only 42%, so the description should carry more load. It does define six of the seven action enum values in prose (useful, since the schema gives no description for 'action'), but it omits the 'feedback' action entirely and says nothing about expectedRevision, expectedStateVersion, decision, planHash, or confirmationToken. Partial compensation only.

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 ('Advance one durable session phase') and immediately qualifies it with the concurrency model ('optimistic revision checks'). An agent can tell this is the phase-progression driver of a session workflow, distinct from start_/get_production_session. It does not name a sibling explicitly, so it falls 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 Guidelines4/5

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

The description routes the agent across the action enum, giving a condition for each: propose for a bounded specialist, choose for a saved alternative, resume for inspection of fresh state, replan for a new proposal, evaluate for completion. This is genuine when-to-use guidance. It lacks explicit when-not-to-use framing against sibling session tools.

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

analyze_arrangement_sectionA
Read-onlyIdempotent

Read one explicit Arrangement beat window across all or selected ordinary tracks. Report overlapping clips and projected stored-MIDI tonal evidence with loop repeats and trimmed boundaries. Optional includeHarmony adds timed pitch sets, literal chord candidates and gaps. Includes muted material; audio, drums, recording and large clips remain explicit exclusions. Not playback, a detected key, or a meter/key map. Read-only; no focus changes.

NameRequiredDescriptionDefault
endBeatsYesExclusive end; increasing range, at most 512 beats.
trackIdsNoOptional unique ordinary tracks; omit for all, up to 64.
startBeatsYesInclusive song-time start in quarter-note beats.
includeHarmonyNoInclude timed stored-pitch sets and exact chord candidates, gaps and ambiguity. At most 4096 projected spans and 256 intervals; no inferred harmonic function or audio.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/non-destructive, so credit goes to what is added: muted material is included, loop repeats and trimmed clip boundaries are reflected, and size caps are implied via the schema. 'No focus changes' and the exclusion list are genuinely behavioral 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.

Conciseness4/5

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

Front-loaded with scope first, then output content, then the optional flag, then exclusions. It is dense and slightly telegraphic in places ('projected stored-MIDI tonal evidence with loop repeats and trimmed boundaries'), but nearly every clause 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?

With an output schema present, the description needn't explain return shape, and it focuses on scope, exclusions, and the optional harmony mode. What an agent needs to call it correctly is essentially present; only explicit guidance on the fallback tool for excluded material 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, but the description still adds meaning: includeHarmony is characterized as literal chord candidates plus gaps and ambiguity, and the evidence is described as projected stored MIDI. It does not add syntax for startBeats/endBeats or trackIds 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?

Opens with a specific verb+resource+scope: 'Read one explicit Arrangement beat window across all or selected ordinary tracks.' It then names its outputs (overlapping clips, projected stored-MIDI tonal evidence) and explicitly contrasts itself against adjacent analyses ('Not playback, a detected key, or a meter/key map'), which separates it from siblings like analyze_midi_parts and get_midi_clip_notes.

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 inclusion/exclusion rules: includes muted material, excludes audio, drums, recording and large clips, and states that includeHarmony is what unlocks timed pitch sets and chord candidates. It stops short of naming the sibling to use instead when the window is audio or drums, so the agent knows what not to expect but not where to go.

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

analyze_audio_clipA
Read-onlyIdempotent

Measure a Session or Arrangement clip's local source window, with optional approximate note events. A target note proposes absolute clip pitch accounting for current pitch settings for stable monophonic windows; review only, no edits or correction of changing notes. Loudness uses the source stream; optional analyses use the selected channel. Excludes rendered clip/track audio.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
trackIdYesID from list_tracks.
channelIndexNoSource channel for optional analyses; zero-based, default 0.
includePitchNoMonophonic channel pitch in overlapping 256-ms frames; no correction.
startSecondsNoSource window start.
targetMidiNoteNoMIDI reference at A4=440 Hz; enables monophonic pitch analysis, not correction.
durationSecondsNoSource window duration, defaults to 10 seconds.
includeSpectrumNoOne channel spectral frame of 4096 samples.
includeWaveformNoUp to 1024 contiguous channel min/max/RMS buckets at 48 kHz.
includeTransientsNoChannel onset candidates at 10-ms resolution; not Live warp/slice markers.
includePitchEventsNoApproximate monophonic channel note events for review; no correction.
includeSpectrogramNoUp to 64 channel spectral frames at 48 kHz.
includeResonanceCandidatesNoNarrow spectral features persisting across 4+ frames; heuristic, not confirmed resonances or EQ advice.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive behavior, so the bar for additional disclosure is lower. The description still adds meaningful context: loudness uses the source stream, optional analyses use the selected channel, results are approximate/review-only, and rendered clip/track audio is excluded.

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 then adds only relevant qualifiers. Three sentences carry purpose, limitations, and stream/channel behavior without obvious 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?

Given the tool's complexity, the rich input schema, annotations, and output schema, the description covers the key behavioral boundaries an agent needs. The main remaining gap is explicit alternative-selection guidance rather than return-value or schema 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 coverage is 100%, so the baseline is 3 even without description-level parameter detail. The description adds useful cross-parameter meaning, especially that a target note proposes absolute clip pitch accounting for current pitch settings and only applies to stable monophonic windows.

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: measure a Session or Arrangement clip's local source window, with optional note events. It clearly distinguishes this from rendered clip/track audio, but it does not explicitly differentiate itself from nearby analysis siblings such as analyze_audio_file or compare_audio_reference.

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 constraints such as 'review only,' 'no edits or correction,' and 'Excludes rendered clip/track audio.' However, it does not explicitly say when to choose this tool over alternatives or name the sibling tools it should replace.

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

analyze_audio_fileA
Read-onlyIdempotent

Measure local source loudness, true peak, format, and optional spectrum, spectrogram, monophonic pitch or note events. A target note proposes a review-only whole-clip offset for stable monophonic windows; no edits or correction of changing notes. Loudness uses the source stream; optional analyses use the selected channel. Excludes Live processing. Requires ffmpeg/ffprobe.

NameRequiredDescriptionDefault
sourcePathYesAbsolute local audio file.
channelIndexNoSource channel for optional analyses; zero-based, default 0.
includePitchNoMonophonic channel pitch in overlapping 256-ms frames; requires 256+ ms.
startSecondsNoWindow start.
targetMidiNoteNoMIDI reference at A4=440 Hz; enables monophonic pitch analysis, not correction.
durationSecondsNoWindow duration, defaults to 10 seconds.
includeSpectrumNoOne 4096-sample spectral frame at window start.
includeWaveformNoUp to 1024 contiguous channel min/max/RMS buckets at 48 kHz.
includeTransientsNoChannel onset candidates at 10-ms resolution; not Live warp/slice markers.
includePitchEventsNoApproximate monophonic channel note events for review; no correction.
includeSpectrogramNoUp to 64 spectral frames at 48 kHz.
includeResonanceCandidatesNoNarrow spectral features persisting across 4+ frames; heuristic, not confirmed resonances or EQ advice.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4/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). The description adds genuinely new behavior: requires ffmpeg/ffprobe, loudness is measured on the source stream while optional analyses follow channelIndex, and pitch/offset output is advisory with no correction of moving notes.

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?

Dense but front-loaded: the measurement scope comes first, then caveats and the dependency. Dense and telegraphic in places 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 an output schema present, return values need not be explained; annotations cover safety. The description supplies the dependency requirement, channel semantics, and the analytical limits an agent needs to invoke this 12-param tool correctly.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description adds meaning beyond the schema: it links targetMidiNote to a review-only whole-clip offset, and clarifies why channelIndex exists (optional analyses only, loudness stays on source).

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 (Measure) and enumerates the resources (loudness, true peak, format, spectrum, spectrogram, pitch, note events) on a local source file. 'Excludes Live processing' and 'local source' implicitly separate it from Live-object siblings like analyze_audio_clip, though no sibling is named.

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 that the target-note output is review-only and limited to stable monophonic windows, and clarifies the source-stream vs selected-channel split. It gives constraints but never states when to choose this over analyze_audio_clip or analyze_midi_parts.

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

analyze_midi_clip_chordsA
Read-onlyIdempotent

Analyze sustained-note-aware chord events in one exact MIDI clip against the current Live key and scale. Returns deterministic chord candidates, inversions, Roman-numeral function, ambiguity, and chromatic pitch classes without editing notes. Read-only.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
trackIdYesID from list_tracks.

Output Schema

NameRequiredDescription

No output 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/destructiveHint=false, and the description reinforces this with 'without editing notes. Read-only.' Beyond that it adds genuinely useful behavior: 'sustained-note-aware' handling, 'deterministic' output, and dependence on the current Live key/scale context. It stops short of disclosing edge cases (empty clips, non-chordal material).

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 packed sentences with zero filler; the core purpose leads and the return contents plus read-only guarantee follow. No wasted clauses.

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?

An output schema exists, so return values need not be spelled out, yet the description helpfully previews the result shape (candidates, inversions, Roman-numeral function, ambiguity, pitch classes). Combined with 100% schema coverage and full annotation set, 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 description coverage is 100%, so both trackId and clipId (including the list_clips/list_arrangement_clips ID provenance) are already documented in the schema. The description adds no further meaning about the parameters, 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 (analyze) and resource (chord events in one exact MIDI clip) and clarifies it runs against the current Live key and scale. The chord-focused framing clearly separates it from sibling analyzers like analyze_midi_clip_scale and analyze_midi_parts without needing 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 Guidelines3/5

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

Usage is implied: it is a read-only analysis tool that does not edit notes. However, it never states when to choose this over closely related siblings such as analyze_midi_clip_scale or analyze_midi_feel, nor any prerequisites, so the agent must infer the situation.

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

analyze_midi_clip_scaleA
Read-onlyIdempotent

Analyze one exact MIDI clip against the current Live key and scale. Returns per-note pitch names, scale degrees, chromatic note IDs, and bounded nearest in-scale correction candidates without editing notes. Read-only.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
trackIdYesID from list_tracks.

Output Schema

NameRequiredDescription

No output 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 destructiveHint=false, so 'without editing notes. Read-only.' largely restates them. The one piece of genuine added context is that results depend on the current Live key/scale and that correction candidates are 'bounded', hinting at a cap the agent should expect.

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 with the core action front-loaded and the read-only guarantee trailing as a qualifier. The final 'Read-only.' is slightly redundant given annotations and costs a few words, but nothing else 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?

With a full output schema and complete annotations, the description only needs to flag the state dependency on the current Live key/scale — which it does — and it does so in a single clip scoped tool. Missing only a note on what happens if no scale is set or how many candidates the bound caps.

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 (clipId, trackId) are documented in-schema down to their source tools. The description's only contribution is 'one exact MIDI clip', reinforcing that a single clip is targeted rather than a range, 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 a specific verb and resource with scope ('Analyze one exact MIDI clip against the current Live key and scale'). The key/scale framing implicitly separates it from sibling analyzers like analyze_midi_clip_chords and analyze_midi_feel, 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: it is clearly the inspection step that precedes correct_midi_clip_to_scale or the plan_midi_diatonic_* family, but the description never says when to choose this over analyze_midi_clip_chords or get_midi_clip_notes, nor does it state any prerequisites or exclusions.

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

analyze_midi_feelA
Read-onlyIdempotent

Measure stored MIDI timing/velocity by grid slot over 1–8 clip-meter bars, with optional exact notes and cycle origin. Defaults: all notes, beat zero. Read-only; assigned native groove playback is not measured or extracted.

NameRequiredDescriptionDefault
barsNoNumber of clip-meter bars in the repeating analysis cycle; defaults to one.
gridYes
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
noteIdsNoExact source note IDs; omitted means all stored notes.
trackIdYesID from list_tracks.
originBeatsNoClip-beat cycle origin; defaults to zero. Use an observed loop start when intended.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already carry readOnly, idempotent, non-destructive and closed-world, and the description reinforces 'Read-only' consistently. It adds genuine value beyond the annotations by clarifying the scope boundary that 'assigned native groove playback is not measured or extracted', which is not derivable from the 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 compact clauses front-load the core action, then defaults, then the read-only/scope caveat. Every segment carries information and nothing is repeated from 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?

An output schema exists so return values need not be described, and annotations cover the safety profile; the description supplies scope, defaults, and the crucial stored-vs-native-groove exclusion. The only gap is the absence of guidance on choosing this tool over its analysis siblings.

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 83% schema coverage the baseline is 3, but the description meaningfully synthesizes several parameters: the 1-8 bar range, optional exact notes (noteIds), and cycle origin (originBeats), plus defaults. The grid enum values are left to the schema, which is fine, though no extra semantic detail is added there.

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 (measure) and resource (stored MIDI timing/velocity) scoped by grid slot and clip-meter bar range, which is far more precise than a tautology. It does not name or differentiate itself from close siblings such as analyze_midi_parts or analyze_midi_clip_scale, leaving the agent to infer which analysis applies.

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 the analysis context ('stored MIDI', 'beat zero' default) and scopes out native groove playback, but never states when to reach for this tool versus alternatives like get_clip_groove_context or inspect_clip_groove_postconditions. Usage is inferrable from the scope statement rather than explicit.

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

analyze_midi_partsA
Read-onlyIdempotent

Read 1-8 explicit Session/Arrangement clips together. Report per-part register, duration-weighted pitch classes and combined diatonic compatibility. Loop/marker ranges only; not simultaneous playback or detected key. Audio, drums, recording and oversized clips are excluded explicitly. No edits or focus changes.

NameRequiredDescriptionDefault
partsYesExact parts from list_clips or list_arrangement_clips; unique references, at most 16384 analyzed notes total.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/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 bar is lower; the description adds substantive context beyond them — the analysis outputs (per-part register, duration-weighted pitch classes, combined diatonic compatibility) and the hard input restrictions (audio/drums/recording/oversized excluded, loop/marker ranges only). "No edits or focus changes" largely restates readOnlyHint but reinforces it rather than contradicting.

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 dense sentences, front-loaded with the core action and followed by output summary, exclusions, and safety note. Every sentence carries information, though the final "No edits or focus changes" is mildly redundant against 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?

An output schema exists, so return values need not be spelled out, and annotations cover the safety profile. The description fills the remaining gaps — scope, exclusions, and analysis nature — leaving only minor omissions like pagination/size behavior, which is already bounded by the schema's note count.

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 `parts` parameter is fully documented in the schema itself. The description's "1-8 explicit clips" mirrors the schema's minItems/maxItems rather than adding new syntax or format detail, so the baseline 3 applies when the schema does the heavy lifting.

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-plus-resource ("Read 1-8 explicit Session/Arrangement clips together... Report per-part register, duration-weighted pitch classes and combined diatonic compatibility") that distinguishes it from single-clip analyzers like analyze_midi_clip_scale or analyze_midi_clip_chords. It also explicitly excludes adjacent scopes ("not simultaneous playback or detected key"), so an agent can tell what this tool is not.

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 context and exclusions: "Loop/marker ranges only," "Audio, drums, recording and oversized clips are excluded explicitly." It does not name a sibling alternative by name (e.g. analyze_midi_clip_scale for one clip), so routing between tools is left partly to inference.

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

apply_drum_variationC
Destructive

Plan or apply a guarded deterministic drum variation with exact native context and complete note readback.

NameRequiredDescriptionDefault
barsYes
fillNo
gridYes
seedYesDeterministic variation seed.
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
trackIdYesID from list_tracks.
planHashNoPlan hash.
startBarYes
laneNotesYesUnique drum pitches to humanize.
timingAmountYesMaximum timing movement as a fraction of the selected grid step.
velocityAmountYesMaximum velocity movement.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.
preserveAccentsAboveYesRequired threshold; do not alter velocity at or above it.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior3/5

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

Annotations already declare destructive=true, idempotent=false, readOnly=false, so safety is covered. The description adds that this is a two-phase 'plan or apply' operation and that it is 'guarded', implying state-version/token checks, but never states what gets mutated, what the guard rejects, or what 'readback' 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 front-loaded sentence with no restatement of the tool name. It is efficient, though 'exact native context and complete note readback' reads as padding that displaces more useful operational detail.

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 15-parameter, 11-required, nested-object, destructive mutation with an output schema, this one-liner is far too thin. It omits the plan/confirm handshake mechanics (expectedStateVersion, planHash, confirmationToken), what 'guarded' protects against, and any indication of failure or partial-application behavior.

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?

At 73% schema coverage the schema documents most parameters (seed, timingAmount, velocityAmount, preserveAccentsAbove, confirmationToken, planHash, dryRun), so baseline is 3. The description adds no meaning beyond those labels and does nothing to compensate for the ~27% undocumented surface.

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

Purpose3/5

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

Names a verb+resource ('apply ... drum variation') and hints at scope ('deterministic', 'guarded'), but the qualifiers 'exact native context' and 'complete note readback' are opaque jargon. It fails to distinguish from the sibling plan_drum_variation, with which 'Plan or apply' creates overlap.

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, when-not, or prerequisite guidance. The key routing decision – dryRun plan vs. token-based apply – is left entirely to the schema, and the near-identically named sibling plan_drum_variation is never addressed.

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

apply_midi_chord_arpeggiationA
Destructive

Plan or apply guarded chord arpeggiation with stable native note IDs and complete readback verification.

NameRequiredDescriptionDefault
gateYesNote duration as a fraction of stepBeats.
modeYesPitch traversal order for each complete chord onset.
seedYesDeterministic seed used by random mode.
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
noteIdsYesUnique stable note IDs at complete chord onsets.
trackIdYesID from list_tracks.
planHashNoPlan hash.
stepBeatsYesSpacing between arpeggiated notes in beats.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

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, idempotent=false and non-readonly, so the safety profile is known; the description adds genuine context on top: the operation is 'guarded', it relies on stable native note IDs, and it performs complete readback verification after mutation. It stops short of saying what exactly is destroyed (note start times/pitches rewritten) or how failure/rollback behaves.

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

Conciseness4/5

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

A single sentence with no filler, front-loading the verb and the guarded/verified nature of the operation. It is dense but every clause carries information.

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

Completeness3/5

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

For an 11-parameter destructive mutation with an output schema, the description covers the safety posture and verification but omits the mechanics of the plan/execute handshake (dryRun → planHash + confirmationToken) and the optimistic-concurrency role of expectedStateVersion. Adequate but leaves an agent to infer the workflow order from the schema 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 description coverage is 100%, so every one of the 11 parameters is already documented, and the description adds little parameter-level meaning beyond echoing 'stable native note IDs' for noteIds. Baseline 3 is appropriate when the schema does the heavy lifting.

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 ('Plan or apply') and resource ('chord arpeggiation') plus the key invariant of stable native note IDs, which is concrete enough to act on. It does not, however, explicitly distinguish itself from the sibling plan_midi_chord_arpeggiation or other apply_midi_* siblings, leaving the plan-vs-apply routing implicit in the word 'or'.

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?

'Plan or apply' and 'guarded' imply a two-phase preview-then-commit flow, and the presence of dryRun/planHash/confirmationToken in the schema supports that reading. But the description never says when to choose this over plan_midi_chord_arpeggiation, nor does it state any prerequisite (e.g. that a plan must be obtained first, or that notes must form complete chord onsets).

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

apply_midi_chord_doublingC
Destructive

Plan or apply guarded chord doublings while preserving existing notes and verifying every native addition.

NameRequiredDescriptionDefault
modeYesAdd the lowest voice down an octave, highest voice up an octave, or both outer voices.
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
noteIdsYesUnique stable note IDs at complete chord onsets.
trackIdYesID from list_tracks.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, non-idempotent, non-read-only, so safety is covered. The description adds value by saying existing notes are preserved and every native addition is verified, but it omits the guarded two-step token/stateVersion contract that a destructive mutation demands.

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 efficient, though the brevity contributes to the missing workflow guidance.

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 a rich 8-param schema and an output schema, the factual surface is well covered by structured fields. What remains unexplained is the plan-vs-execute flow and how expectedStateVersion, planHash, and confirmationToken sequence together, which matters 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 100% with per-parameter descriptions and an enum on mode, so the description need not re-document them. It adds nothing beyond the schema, making 3 the appropriate baseline.

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 (plan/apply) and resource (chord doublings) are named, but the phrasing 'Plan or apply' blurs the split with the sibling plan_midi_chord_doubling, leaving the agent unclear on whether this is the executor or the planner. A specific action is conveyed but sibling differentiation is weak.

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

Usage Guidelines2/5

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

There is no explicit when-to-use, when-not, or routing to alternatives such as plan_midi_chord_doubling or the other apply_midi_* transforms. The dryRun/plan-token workflow, which decides whether this mutates or only plans, is never described.

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

apply_midi_chord_inversionB
Destructive

Plan or apply guarded chord inversions with complete native note readback verification.

NameRequiredDescriptionDefault
stepsYesNumber of chord tones to rotate at each selected onset.
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
noteIdsYesUnique stable note IDs at complete chord onsets.
trackIdYesID from list_tracks.
planHashNoPlan hash.
directionYesRotate the lowest notes upward or highest notes downward by one octave.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the mutation risk is covered. The description adds useful context with 'guarded' and 'complete native note readback verification,' but it does not explain what the guard entails, such as confirmation tokens, plan hashes, or state-version requirements.

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

Conciseness4/5

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

The description is a single front-loaded sentence with no filler. It is efficient, though the 'Plan or apply' phrasing is slightly ambiguous and could be clarified without adding much length.

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?

An output schema exists, so the description need not explain return values, and annotations cover the destructive nature. However, for a complex destructive mutation with 9 parameters and token/hash workflow, the description does not sufficiently convey the plan-then-apply workflow or the role of expectedStateVersion.

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 input schema already documents all parameters in detail. The description does not add parameter-level meaning beyond what the schema provides, so the baseline score of 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 names a specific verb and resource: applying guarded chord inversions. It is clear what the tool does at a high level, but it does not differentiate itself from the sibling plan_midi_chord_inversion tool or explain why it says 'Plan or apply.'

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 'Plan or apply' implies that the tool supports a dry-run planning mode and an execution mode, but it gives no explicit conditions for choosing this tool over plan_midi_chord_inversion. There is no stated when-to-use or when-not-to-use guidance.

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

apply_midi_chord_voice_leadingB
Destructive

Plan or apply guarded chord voice leading with complete native note readback verification.

NameRequiredDescriptionDefault
modeYesLead every voice by octave or keep each chord's current bass fixed.
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
noteIdsYesUnique stable note IDs across complete ordered chord onsets.
trackIdYesID from list_tracks.
maxPitchYes
minPitchYes
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

Annotations declare destructiveHint=true and non-idempotent behavior, and the description adds that the operation is "guarded" and includes native note readback verification. It does not explain what is overwritten, how confirmation tokens or expectedStateVersion protect the operation, or the practical consequences of a non-dry run.

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 core purpose front-loaded and no filler. It is efficient, though the phrase "guarded" is doing vague work without elaboration.

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?

Output schema and annotations cover return format and safety profile, and 80% of parameters are documented. For a destructive, state-versioned, 10-parameter mutation tool, the description still omits the critical plan-then-apply workflow and the role of readback 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 80%, so most parameters already carry documentation and the baseline is 3. The description adds no parameter-specific meaning, such as how noteIds, minPitch/maxPitch, or the planHash/confirmationToken pair should be used.

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: "Plan or apply guarded chord voice leading," plus the verification behavior. It does not distinguish itself from the sibling plan_midi_chord_voice_leading, despite both "plan" and "apply" appearing in the description.

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?

Mentions "Plan or apply" and the schema has a dryRun parameter, so the planning/execution split is implied. However, it never explicitly says when to use this tool versus plan_midi_chord_voice_leading or when to go through the dry-run/confirm workflow.

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

apply_midi_diatonic_chord_qualityB
Destructive

Plan or atomically apply guarded functional-harmony chord rebuilding with per-onset functions, recipes, inversions, voicing modes, slash basses, stable retained voices, and verified additions/removals.

NameRequiredDescriptionDefault
modeYes
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
noteIdsYesUnique stable note IDs at complete chord onsets.
trackIdYesID from list_tracks.
planHashNoPlan hash.
chordSizeNoExact voicing recipe. Triad, seventh, and ninth stack thirds from Live's scale; suspended, added-tone, and dominant recipes use their named literal intervals, with tensions voiced above the chord.
chordSizesNoOne exact voicing recipe for each ordered onset.
inversionsNoOptional inversion steps for each ordered onset; zero keeps root position.
bassDegreesNoOptional Live scale degree for one added slash-bass voice below each ordered onset.
rootDegreesYesOne root degree from Live's current scale for each ordered onset.
voicingModesNoOptional deterministic voicing mode for each ordered onset.
confirmationTokenNoSingle-use plan token.
harmonicFunctionsNoOptional harmonic function for each ordered onset; secondary-dominant root degrees name tonicized targets.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already declare destructive=true, readOnly=false and idempotent=false, so safety is largely covered. The description adds genuine value beyond that: atomicity ("atomically apply"), a guard/verification step ("verified additions/removals"), and preservation of untouched material ("stable retained voices"). It stops short of stating permission or failure/precondition 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?

It is a single sentence with the action front-loaded, and nothing is repeated. The feature enumeration is dense and reads more as a keyword list than prose, which slightly hurts scanability, but there is no filler.

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

Completeness3/5

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

With an output schema present, return values need not be explained, and annotations cover the destructive profile. For a 15-parameter, 6-required guarded mutation, though, the description never explains the plan/apply verification flow (expectedStateVersion, planHash, confirmationToken) or its relation to the plan_ sibling tool, leaving the agent to reconstruct the workflow from the schema 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 description coverage is 93%, so the schema already documents nearly every parameter. The description's enumeration (per-onset functions, recipes, inversions, voicing modes, slash basses) maps onto harmonicFunctions, chordSize/chordSizes, inversions, voicingModes and bassDegrees but adds little syntax or semantics beyond the schema. 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 clear verb pair ("Plan or atomically apply") and a specific resource ("functional-harmony chord rebuilding"), so an agent knows it edits chord qualities rather than the harmony/transposition siblings. It does not, however, distinguish itself from close siblings like plan_midi_diatonic_chord_quality, apply_midi_diatonic_harmony, or apply_midi_scale_chord_remapping, and terms like "guarded" and "rebuilding" remain jargon.

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 phrase "Plan or atomically apply" hints at a two-phase dry-run/commit workflow, but the description gives no explicit when-to-use conditions, prerequisites, or pointer to an alternative sibling. The agent is left to infer which tool handles which harmony scenario.

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

apply_midi_diatonic_harmonyA
Destructive

Plan or apply guarded scale-aware harmony additions while preserving source notes and expression.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
noteIdsYesUnique stable in-scale source note IDs.
trackIdYesID from list_tracks.
planHashNoPlan hash.
degreeOffsetsYesUnique signed non-zero scale-degree offsets for added harmony voices.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true and non-idempotent, so the description's job is supplementary. It adds real value by stating the operation is 'guarded' and that source notes and expression are preserved, which tells an agent the mutation is additive and state-version-checked rather than a rewrite.

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; 'guarded' and the preservation clause both earn their place. It is efficient, though a brief clause on the plan/apply split would have been worth the extra words.

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

Completeness3/5

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

Annotations and an output schema cover safety and returns, but the description omits the two-phase planning protocol (dryRun, planHash, confirmationToken, expectedStateVersion) that is central to invoking this tool correctly. For an 8-parameter destructive tool, that is a real 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%, so every parameter is already documented in the schema (degreeOffsets, noteIds, planHash, confirmationToken). The description adds no syntax or constraint detail beyond the schema, which is the expected baseline when the schema carries the load.

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 ('plan or apply') and resource ('scale-aware harmony additions'), which is enough to distinguish it from generic transposition or chord tools. It does not explicitly name plan_midi_diatonic_harmony as the planning-only sibling, so the plan-vs-apply duality is only hinted at.

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 'Plan or apply' implies a two-phase workflow, but the description never states when to use dryRun versus execute, or that a planHash/confirmationToken from planning is required for apply. Usage must be inferred from the schema.

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

apply_midi_diatonic_transpositionA
Destructive

Plan or apply guarded scale-degree MIDI transposition bound to Live's current key and scale.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
noteIdsYesUnique stable in-scale note IDs to transpose.
trackIdYesID from list_tracks.
planHashNoPlan hash.
scaleStepsYesSigned non-zero movement in degrees of Live's current scale.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already disclose destructiveHint=true, idempotentHint=false, and readOnlyHint=false, so the safety profile is covered. The description adds that the operation is 'guarded' and bound to Live's current key and scale, but it does not explain what the guard protects, what gets mutated, or how plan tokens/state versions affect behavior.

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

Conciseness5/5

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

The description is a single front-loaded sentence with no filler. It conveys the core operation and scope efficiently, even if other dimensions need more detail.

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 a rich schema with full parameter descriptions, an output schema, and destructive/idempotency annotations, the description does not need to repeat return values or parameter details. It is nearly complete but remains terse about the guarded plan/apply workflow for a destructive operation.

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 eight parameters, including scaleSteps, dryRun, confirmationToken, and planHash. The description reinforces the scale-degree/key-scale context but does not add parameter semantics beyond 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 a specific operation: 'Plan or apply' a 'scale-degree MIDI transposition' 'bound to Live's current key and scale.' This distinguishes it from generic transposition and from purely planning tools, though it does not explicitly name the sibling 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?

The phrase 'Plan or apply' implies dry-run versus execution modes, and 'guarded' implies a safe workflow, but the description does not state when to use this tool versus plan_midi_diatonic_transposition, apply_midi_transposition, or other siblings. Usage is implied rather than explicitly guided.

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

apply_midi_drop_voicingA
Destructive

Plan or apply guarded chord drop voicings with complete native note readback verification.

NameRequiredDescriptionDefault
modeYesTraditional upper-voice octave drop applied independently at each onset.
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
noteIdsYesUnique stable note IDs at complete chord onsets.
trackIdYesID from list_tracks.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and non-idempotent, and the description adds real context beyond them: the confirmation-token/hash guard implied by 'guarded' and post-write verification via 'complete native note readback'. It stops short of saying what happens to the original notes or whether the edit is reversible.

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, but terms like 'guarded' and 'native note readback verification' are dense jargon that would benefit from one clarifying clause rather than standing alone.

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?

An output schema exists, so return-value explanation is unnecessary, and the plan/apply guard is mentioned. However, for a destructive mutation of MIDI notes across eight parameters, the description omits what the operation replaces or removes and what the dry-run output contains, leaving meaningful 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%, so every parameter including mode, dryRun, planHash, confirmationToken, and noteIds is already documented in the schema. The description adds no syntax or constraint detail beyond that, making the baseline 3 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?

States a specific verb+resource ('apply ... chord drop voicings') and adds two distinguishing traits: guarded execution and native note readback verification. It does not name the closely related sibling plan_midi_drop_voicing, so the boundary between 'plan' and 'apply' is left implicit even though the description opens with 'Plan or apply'.

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?

'Plan or apply' plus the dryRun parameter implies a two-phase workflow, but the description never states when to prefer this over plan_midi_drop_voicing, nor what preconditions (complete chord onsets, stable note IDs) must hold before calling. Usage is inferable rather than stated.

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

apply_midi_feel_templateA
Destructive

Plan or transfer a stored-MIDI feel template or measured source-audio feel summary onto exact target note IDs. MIDI templates support timing and velocity blends; audio feel is timing-only and requires velocityAmount zero because audio strength is not MIDI velocity. Preserves note IDs, durations and expression metadata through guarded per-note edits. Rejects a target with an assigned native groove; this is not Live Groove Pool baking.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
noteIdsNoOptional exact target note IDs; omit to transfer to all notes at populated slots.
trackIdYesID from list_tracks.
planHashNoPlan hash.
templateYes
originBeatsNoClip-beat cycle origin; defaults to zero. Use an observed loop start when intended.
timingAmountYesBlend toward template timing; zero preserves each target start.
velocityAmountYesBlend toward template mean velocity; zero preserves each target velocity.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the annotations, the description discloses that edits are guarded per-note operations, preserve note IDs/durations/expression metadata, and reject targets with a native groove. It also distinguishes MIDI timing+velocity behavior from audio timing-only behavior, which is meaningful behavioral context for a destructive mutation.

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

Conciseness5/5

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

The description is front-loaded with the core action, then adds constraints and behavioral notes in four dense, relevant sentences. Every sentence contributes to correct selection or invocation, with 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?

Given the high schema coverage, output schema, and annotations, the description covers the major behavioral and selection concerns: MIDI vs audio feel, preservation guarantees, native-groove rejection, and non-groove-pool scope. It does not explicitly explain the dryRun/planHash/confirmationToken execution flow, but those details are documented in 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 high at 91%, so the baseline is 3. The description adds useful meaning by explaining that MIDI templates support timing and velocity blends, audio feel is timing-only, and velocityAmount must be zero for audio summaries, directly clarifying key parameter behavior beyond the schema 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?

The description gives a specific verb/resource/action: transferring or planning a stored-MIDI feel template or audio feel summary onto exact target note IDs. It explicitly distinguishes the operation from Live Groove Pool baking and from targets with a native groove, so an agent can tell what this tool is for without opening sibling schemas.

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 states when to use the tool: applying MIDI or audio feel templates to target notes, with the important audio-specific rule that velocityAmount must be zero. It also states when not to use it: targets with an assigned native groove and groove-pool baking. It does not name the specific sibling tools for measuring or saving templates, but the intended 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.

apply_midi_gate_patternB
Destructive

Plan or apply guarded MIDI gate durations while preserving onset, pitch, velocity, probability, and expression metadata.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
noteIdsYesUnique stable note IDs at complete selected onsets.
trackIdYesID from list_tracks.
planHashNoPlan hash.
gridBeatsYesReference grid step in beats, including fractional triplet values.
gateRatiosYesExplicit repeating gate ratios by ordered onset.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already flag this as destructive, non-idempotent, non-read-only, so the safety bar is partly met. The description adds real value by specifying that only gate durations are altered and onset/pitch/velocity/probability/expression are preserved — an important blast-radius statement. However 'guarded' is never unpacked: nothing about the expectedStateVersion conflict behavior, the single-use confirmation token, or whether a partial application can occur.

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 repetition, and the preservation clause is the most useful piece of information in it. 'Guarded' is the one soft word that does not pay rent on its own.

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?

An output schema exists, so return values need not be explained, and the schema covers parameters. What is missing is the operational context of a destructive, state-version-checked mutation: the plan-then-apply contract that the presence of planHash and confirmationToken implies. For a 9-parameter destructive tool this leaves a meaningful 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%, so all nine parameters are already documented inline (gridBeats, gateRatios, noteIds, dryRun, planHash, confirmationToken, expectedStateVersion). The description adds no extra semantics about how gridBeats and gateRatios interact or how noteIds must align to onsets. Baseline 3 applies when the schema carries the load.

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-phrase and resource: setting MIDI gate durations, with the added qualifier that other note attributes (onset, pitch, velocity, probability, expression) are left intact. It never mentions plan_midi_gate_pattern, which is a sibling with a nearly identical name, so an agent cannot tell from this description alone why 'Plan or apply' lives here rather than there.

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?

'Plan or apply' implies a two-mode flow but never says when to use dryRun/planHash/confirmationToken or when to prefer the dedicated plan_midi_gate_pattern sibling. No prerequisites, no exclusions, no statement of what happens if you call it without a plan token.

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

apply_midi_probability_patternB
Destructive

Plan or apply guarded MIDI playback probabilities while preserving pitch, timing, velocity, mute, and expression metadata.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
noteIdsYesUnique stable note IDs at complete selected onsets.
trackIdYesID from list_tracks.
planHashNoPlan hash.
probabilitiesYesExplicit repeating probabilities from 0 to 1.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=false, and openWorldHint=false, so the mutation risk is covered by structured data. The description does add real value by disclosing that all other note attributes are preserved, and 'guarded' hints at the state-version/token safeguard. It omits the two-phase plan→apply contract, the single-use confirmation token, and that the operation is irreversible.

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 resource and preservation scope front-loaded; nothing is padded. The only weakness is that bundling 'Plan or apply' into one phrase creates ambiguity rather than saving 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?

Wait — recalibrating: this is a destructive mutation with eight parameters, an output schema, and a required two-phase plan/apply protocol using expectedStateVersion, planHash, and confirmationToken. The description never explains that protocol, which an agent must know to invoke it successfully. That gap keeps it at 3.

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 eight parameters including dryRun, planHash, confirmationToken, and expectedStateVersion are documented in the schema. The description only reinforces the meaning of `probabilities` implicitly through the preservation list; it adds no semantic detail beyond the schema. 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?

States a specific verb and resource: 'Plan or apply guarded MIDI playback probabilities.' The preservation clause (pitch, timing, velocity, mute, expression) narrows exactly what is and isn't touched. It never names or distinguishes itself from the sibling plan_midi_probability_pattern, which is confusing given the description itself says 'Plan or apply'.

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 plan_midi_probability_pattern or the other apply_midi_* siblings, and no guidance on when to run with dryRun=false. The only hint is the ambiguous 'Plan or apply' phrasing, which conflates the two phases an agent must choose between.

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

apply_midi_ratchet_patternB
Destructive

Plan or apply guarded MIDI ratchets while preserving velocity, probability, mute, release velocity, and velocity deviation.

NameRequiredDescriptionDefault
gateYesEach repeated note's duration as a fraction of its subdivision.
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
noteIdsYesUnique stable note IDs at complete selected onsets.
trackIdYesID from list_tracks.
planHashNoPlan hash.
spanBeatsYesTotal beat span occupied by every selected onset's repeats.
repeatCountsYesRepeating ratchet count by ordered onset; 3 creates an exact triplet inside spanBeats.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare destructive=true and idempotent=false, so the safety profile is covered. The description adds real value by naming what is preserved (velocity, probability, mute, release velocity, velocity deviation), but omits the guarded plan-then-apply flow that a destructive tool should disclose.

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 appropriately sized, though it spends its one clause on preservation while omitting the more decision-critical plan/execute distinction.

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?

An output schema exists so return values need not be explained, but for a destructive 10-parameter mutation tool the description is thin: it never explains the dryRun/planHash/confirmationToken safety sequence that an agent must follow to avoid an unintended write.

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 all ten parameters are already documented in the schema. The description adds no syntax, format, or relationship detail beyond that, which is the correct baseline when the schema does the heavy lifting.

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 ('Plan or apply') and resource ('guarded MIDI ratchets') plus the properties preserved. However, the 'Plan or apply' phrasing collides with the sibling plan_midi_ratchet_pattern, leaving the boundary between the two tools unclear.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no routing to the sibling plan_midi_ratchet_pattern despite the description literally claiming to also 'plan'. The dry-run vs execute workflow implied by the dryRun/planHash/confirmationToken params is not surfaced.

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

apply_midi_scale_chord_remappingB
Destructive

Plan or apply guarded scale-aware chord remapping with optional bass voice leading and complete native readback.

NameRequiredDescriptionDefault
modeYesAnchor each chord near its source register or each later chord near the previous remapped bass.
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
noteIdsYesUnique stable note IDs at complete chord onsets.
trackIdYesID from list_tracks.
planHashNoPlan hash.
targetDegreesYesOne target Live scale degree for each ordered chord onset.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already disclose that the operation is destructive, non-idempotent, and not read-only. The description adds 'guarded' and 'complete native readback,' but does not explain what is guarded, what state is changed, or how confirmation tokens and state versions protect the mutation.

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

Conciseness4/5

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

The definition is a single front-loaded sentence with no wasted text. Its compression contributes to the ambiguity around plan versus apply, but it remains efficiently structured.

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 a rich schema, output schema, and destructive annotations, the description only needs to carry the high-level workflow. It gives a useful summary but leaves the critical plan/apply/confirmation flow implicit, which is a meaningful gap 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 description coverage is 100%, so every parameter is already documented in the schema. The description mentions voice leading and scale awareness, but does not add syntax or usage details beyond what the parameter descriptions provide.

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 musical resource and transformation: scale-aware chord remapping with optional bass voice leading. It is clear enough to identify the tool's general function, but it does not distinguish this apply tool from the sibling plan_midi_scale_chord_remapping tool.

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

Usage Guidelines2/5

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

It says 'Plan or apply,' which hints at dry-run versus execution, but gives no explicit conditions for choosing between planning, dry-run, and destructive apply. It also does not mention the sibling plan tool or prerequisites for a real mutation.

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

apply_midi_strum_patternB
Destructive

Plan or apply guarded chord strumming while preserving pitch, velocity, probability, mute, release velocity, and velocity deviation.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
noteIdsYesUnique stable note IDs at complete chord onsets.
trackIdYesID from list_tracks.
planHashNoPlan hash.
directionYesPitch order for each chord; alternating starts upward and reverses on each following onset.
spreadBeatsYesTotal beat distance from the first to last attack in each chord.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=false, and readOnlyHint=false, so the safety profile is covered. The description adds that pitch, velocity, probability, mute, release velocity, and velocity deviation are preserved during the operation, which is useful context, but it does not explain what 'guarded' means or what exactly gets modified.

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

Conciseness4/5

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

The description is a single front-loaded sentence with no wasted words. However, the phrase 'Plan or apply' is slightly ambiguous in a tool named apply_midi_strum_pattern and could be tightened for a clearer distinction from the planning sibling.

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?

Given the tool's complexity (9 parameters, state versioning, token-based execution, output schema), the description is thin. The schema and annotations carry much of the load, but the description omits workflow guidance (plan-then-apply, dryRun semantics) and does not clarify what 'guarded' entails, leaving the agent to infer critical usage details.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents every parameter, including dryRun, expectedStateVersion, planHash, and confirmationToken. The description does not add meaning beyond the schema for any of these parameters, so the baseline of 3 is appropriate.

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

Purpose4/5

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

The description states a specific verb pair ('Plan or apply') and resource ('chord strumming'), making the core purpose clear. It does not explicitly differentiate this tool from the sibling plan_midi_strum_pattern, leaving some ambiguity about which tool handles pure planning versus execution.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use this tool versus the sibling plan_midi_strum_pattern or when to set dryRun to true. The phrase 'Plan or apply' implies both modes exist but does not tell the agent which conditions select one over the other.

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

apply_midi_transpositionB
Destructive

Plan or apply guarded chromatic MIDI transposition with complete native readback verification.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
noteIdsYesUnique stable note IDs to transpose.
trackIdYesID from list_tracks.
planHashNoPlan hash.
semitonesYesSigned non-zero chromatic transposition in semitones.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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

The annotation already declares destructiveHint=true and readOnlyHint=false, so the safety profile is clear. The description adds useful context with 'guarded' and 'complete native readback verification', but it does not state what is mutated, whether changes are reversible, or how the confirmation token and expected state version protect the operation.

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

Conciseness5/5

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

The description is a single front-loaded sentence with no wasted language. It conveys the core purpose and verification behavior efficiently.

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

Completeness3/5

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

The output schema exists, so return values need not be explained, and the annotations carry the destructive safety profile. However, for a guarded plan/apply workflow with confirmation tokens, plan hashes, and expected state versions, the description should say more about the dry-run-to-apply sequence and what 'guarded' entails.

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 eight parameters are documented in the input schema. The description adds no parameter-level meaning beyond the schema, which is the baseline expectation when the schema is this complete.

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

Purpose4/5

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

The description names a specific verb and resource: guarded chromatic MIDI transposition with native readback verification. It is clear what the tool does, but it does not distinguish this apply tool from the sibling plan_midi_transposition, and the phrase 'Plan or apply' blurs that boundary.

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

Usage Guidelines2/5

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

The description gives no explicit guidance on when to use this tool versus plan_midi_transposition or apply_midi_diatonic_transposition, nor does it explain prerequisites such as when a dry run is required. Any workflow implication comes from the parameter schema rather than the description.

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

apply_midi_velocity_curveA
Destructive

Plan or apply a guarded MIDI velocity curve while preserving timing, pitch, duration, probability, and expression metadata.

NameRequiredDescriptionDefault
curveYesExact crescendo, decrescendo, fixed, or repeating accent target.
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
noteIdsYesUnique stable note IDs at complete selected onsets.
trackIdYesID from list_tracks.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare a destructive, non-idempotent mutation, so the description is not burdened with safety disclosure. It adds useful scope by saying timing, pitch, duration, probability, and expression metadata are preserved, clarifying exactly what the operation should not alter.

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

Conciseness5/5

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

The description is a single front-loaded sentence with no redundant restatement of schema or annotations. Every clause earns its place by naming the operation and the attributes it preserves.

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 complete annotations, full schema coverage, and an output schema, the description provides enough context about affected and preserved data to invoke the tool correctly. Its only notable omission is routing guidance relative to the planner 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 description coverage is 100% and documents all 8 parameters, including curve variants and the guard fields. The description adds no parameter-level meaning beyond 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.

Purpose4/5

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

States a specific verb and resource ('plan or apply a MIDI velocity curve') and lists preserved attributes, making the operation recognizable. However, it does not differentiate from the sibling plan_midi_velocity_curve, and 'Plan or apply' blurs whether this is the execution tool or also a planner.

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

Usage Guidelines2/5

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

The description gives no explicit when-to-use guidance, no alternatives, and no prerequisites. It does not mention plan_midi_velocity_curve or explain when dryRun/planHash/confirmationToken should be used, leaving selection to inference from the name and schema.

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

apply_monophonic_audio_tuningA
Destructive

Plan or apply an exact Live clip coarse/fine pitch offset from full-source, stable monophonic analysis of a mono or stereo local source at most 60 seconds long. Every stereo channel must agree; confirmation binds a SHA-256 source hash and current clip state, then verifies native pitch readback. Whole-clip tuning only: not note-by-note vocal correction, rendered audio analysis, or audible validation.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
trackIdYesID from list_tracks.
planHashNoPlan hash.
targetMidiNoteYesExplicit equal-tempered target note at A4=440 Hz.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

Goes well beyond the destructive/non-idempotent annotations by disclosing the confirmation mechanism (SHA-256 source hash + current clip state binding) and post-apply native pitch readback verification, plus the 'every stereo channel must agree' precondition. It does not state what happens on hash/state mismatch or whether the change is undoable, leaving some mutation risk opaque.

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 dense sentences with the core operation front-loaded and the exclusions correctly placed last. The phrasing is compressed to the point of being terse ('Every stereo channel must agree'), but 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?

An output schema exists, so return values need not be explained, and for a destructive mutation the description covers the source constraints, confirmation binding and verification. Minor gaps remain around failure modes and reversibility, but the essential call path is fully described.

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, but the description adds real meaning: it explains the plan/apply token-and-hash flow implied by planHash/confirmationToken and ties expectedStateVersion to 'current clip state' binding. It still does not explain how targetMidiNote interacts with the 'coarse/fine pitch offset' computation.

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 (plan/apply), a precise resource (Live clip coarse/fine pitch offset) and scope constraints (whole-clip, monophonic, <=60s local source). It excludes adjacent categories ('not note-by-note vocal correction, rendered audio analysis, or audible validation') but never names a concrete sibling tool to contrast with, which keeps it 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?

The plan-vs-apply split is clear from 'Plan or apply' plus the dryRun parameter, and the closing sentence gives explicit when-not conditions (no note-by-note correction, no rendered analysis, no audible validation). It stops short of naming an alternative tool for those excluded cases.

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

apply_production_operationA
Destructive

Plan one proposed operation through its original tool, or execute using that exact plan's confirmation. Requires unchanged task state; later operations require the preceding applied receipt. Returns bounded result references and observed postconditions, not an audible judgment.

NameRequiredDescriptionDefault
dryRunNo
taskIdYesArtifact ID returned by a producer tool.
planHashNoOriginal tool's plan hash.
projectIdYesPrivate project namespace.
operationIndexYes
confirmationTokenNoOriginal tool's single-use confirmation token.
previousReceiptIdNoArtifact ID returned by a producer tool.
expectedStateVersionYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare destructive=true, idempotent=false and openWorld=true. Beyond that, the description adds real behavioral context: the strict unchanged-task-state requirement, sequential receipt dependency, and the fact that it returns bounded result references and observed postconditions rather than a verdict. It stops short of stating what state is mutated or what the destructive effect is.

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 dense but front-loaded sentences with no filler; the plan/execute distinction leads. It is efficient, though the phrasing is abstract enough that some sentences require re-reading.

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?

An output schema exists, so return values need not be spelled out (the description still flags bounded references and postconditions). For a high-complexity, 8-parameter, destructive, two-phase tool, the prerequisites and sequencing are covered adequately, leaving only per-parameter detail to the schema.

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

Parameters3/5

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

Schema coverage is 63% across 8 parameters. The description usefully implies the dryRun-confirmationToken relationship ('plan... or execute using that exact plan's confirmation') and the expectedStateVersion/operationIndex semantics through 'unchanged task state' and 'later operations'. But planHash and previousReceiptId semantics are left entirely to the schema, so it only partially compensates for the coverage gap.

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

Purpose4/5

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

The description states a specific two-mode verb+resource: plan a proposed operation via its original tool, or execute using that plan's confirmation. An agent can grasp that this is a plan/execute gate for a single production operation, though 'one proposed operation' stays abstract and no sibling (e.g. run_production_task) is named for disambiguation.

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 ordering/prerequisite guidance ('requires unchanged task state; later operations require the preceding applied receipt'), which implies when the tool can be invoked. However, it never names an alternative tool or states when NOT to use this versus the sibling production/lifecycle tools, so usage context 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.

arm_trackC
Destructive

Guard exact-track arming; inspect verified and partial state.

NameRequiredDescriptionDefault
armedYesRequested arm state.
dryRunNoFalse executes with token and hash.
trackIdYesID from list_tracks.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, non-idempotent, and non-read-only, so the safety profile is covered. The description adds the notion of a 'guard' and partial/verified state, hinting at optimistic concurrency via expectedStateVersion, but it never explains what gets destroyed, why a confirmation token is needed, or what 'partial state' means.

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 that is front-loaded with the operation. It is efficiently sized, though the second clause ('inspect verified and partial state') is too ambiguous to fully earn its place.

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?

An output schema, full annotation coverage, and 100% schema descriptions carry most of the load, but for a destructive, token-gated mutation the description omits the two-phase guarded workflow (plan hash, confirmation token, state-version check) and its relationship to get_track_arm_context.

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 every parameter (armed, dryRun, trackId, planHash, confirmationToken, expectedStateVersion) is already documented in the schema. The description adds no syntax, format, or interaction detail beyond that, so baseline 3 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 verb 'arm' and resource 'track' are present, but 'Guard exact-track arming; inspect verified and partial state' is cryptic - it is unclear whether the tool arms a track, verifies an arming attempt, or inspects state, or all three in a guarded flow. It does not differentiate itself from the sibling get_track_arm_context.

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

Usage Guidelines2/5

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

No when-to-use guidance, no preconditions, and no mention of the obvious alternatives like get_track_arm_context or the plan/dryRun workflow. An agent has to infer the guarded two-phase pattern from the schema alone.

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

audition_arrangement_passageA
Destructive

Plan/start a looping Arrangement passage from stopped transport with recording off and no pending launches. Return only explicit ordinary tracks from Session override; reject Groups. Changes global loop/playhead and starts global playback until stopped. Other tracks may sound. Partial failure reports observed controls; earlier Session phase is not restored. Requires all profile.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
endBeatsYesExclusive end; increasing range of at most 512 beats.
planHashNoPlan hash.
trackIdsYesOrdinary tracks to return to Arrangement; other overrides stay in place.
startBeatsYesInclusive song-time start in quarter-note beats.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior5/5

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

Beyond the destructiveHint=true annotation, the description discloses concrete side effects: it changes the global loop/playhead and starts global playback that runs until stopped, other tracks may sound, and on partial failure it reports observed controls without restoring the earlier Session phase. Reversibility, blast radius, and failure semantics are all covered and consistent with 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.

Conciseness4/5

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

Every sentence carries distinct information (preconditions, track filtering, global side effects, failure behavior), and the key scope constraint is front-loaded. The phrasing is dense and jargon-heavy, which costs some readability but not correctness.

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 destructive, non-idempotent transport-mutating tool, the description covers preconditions, what changes, what is not restored, and failure reporting, and an output schema exists so return values need not be explained. The main gap is that related tools with overlapping effects (return_tracks_to_arrangement) are not contrasted.

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 seven parameters (beats, hashes, tokens, stateVersion). The description adds only marginal parameter meaning, mainly the "reject Groups / explicit ordinary tracks" constraint on trackIds and an implicit plan-vs-execute distinction. Baseline 3 is appropriate when the schema carries the parameter burden.

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+resource ("Plan/start a looping Arrangement passage") and narrows scope ("Return only explicit ordinary tracks from Session override; reject Groups"). It does not, however, distinguish itself from the closely related sibling return_tracks_to_arrangement or plan_arrangement_repeat, so it stops short of full sibling differentiation.

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?

Clear preconditions are given: stopped transport, recording off, no pending launches, and "Requires all profile." That is actionable context for when the tool applies. There is no explicit exclusion or named alternative (e.g. return_tracks_to_arrangement), so it stays below a 5.

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

bounce_track_in_placeA
Destructive

Destructively commit one whole ordinary track to audio, removing its devices in Session and Arrangement. Duplicate first to keep an editable source. Requires saved Set, stopped transport, unarmed visible target and macOS English Live. Rechecks native identity/selection and verifies audio layout, controls and file coverage; no audible-equivalence claim.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
trackIdYesID from list_tracks.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior5/5

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

Adds substantial context beyond the destructiveHint=true annotation: exactly what is destroyed (devices in Session and Arrangement), the environmental prerequisites, the internal re-verification of identity, selection, and file coverage, and an honest caveat that no audible-equivalence is claimed.

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 destructive commit and its side effect, then layers advice, prerequisites, and verification caveats. Dense but every clause carries information; only the verification detail is mildly tangential.

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 an output schema present, return values need no explanation, and the description fully covers preconditions and side effects. The two-phase dryRun/planHash/confirmationToken execution flow implied by the schema is not addressed, a minor completeness 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%, so all five parameters are documented in the schema already; the description adds nothing about dryRun, planHash, confirmationToken, or expectedStateVersion. Baseline 3 is correct when the schema carries the parameter burden.

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+resource: 'commit one whole ordinary track to audio, removing its devices in Session and Arrangement.' This is a clear, distinct action from siblings like export_audio_track or set_track_freeze_state, though it never names one to sharpen 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 Guidelines4/5

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

Provides actionable preconditions (saved Set, stopped transport, unarmed visible target, macOS English Live) and a workflow cue ('Duplicate first to keep an editable source'). It lacks an explicit contrast against alternative render/freeze/export tools, so it stops short of 5.

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

browse_local_splice_directoryA
Read-onlyIdempotent

Page through immediate subfolders and audio files inside a configured local Splice root. Optionally join private MCP tags and favorites for audio files. Returned folder paths can be searched individually when a broad search is truncated. Skips symlinks and non-audio files; not Splice cloud browsing, downloads, or license verification.

NameRequiredDescriptionDefault
limitNoMaximum entries per page; defaults to 100.
offsetNoZero-based entry offset; defaults to zero.
rootPathYesAbsolute configured Splice root or descendant folder returned by this tool.
includeMetadataNoInclude private MCP tags and favorites for audio-file entries.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/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, closed-world behavior, so the description is free to add filtering semantics the annotations cannot express: symlinks and non-audio files are skipped, and metadata (tags/favorites) is only joined on request. This is meaningful behavioral context beyond the 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?

Four tight sentences, front-loaded with the core enumeration behavior, then the metadata option, then the paging handoff, then the exclusions. No filler and every clause carries distinct information.

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 an output schema present and 100% schema coverage, the description only needs to cover behavior: paging, optional metadata join, filtering rules, and scope exclusions. All of these are present, leaving nothing an agent needs 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 limit, offset, rootPath, and includeMetadata are all documented in the schema already. The description only restates the metadata join and the paging concept without adding format or constraint detail, so 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 ('Page through') and resource ('immediate subfolders and audio files inside a configured local Splice root'), and explicitly scopes itself against related capabilities ('not Splice cloud browsing, downloads, or license verification'). An agent can separate this from list_local_splice_roots and search_local_splice_samples 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?

Gives clear operative context: use it to enumerate a root, and 'returned folder paths can be searched individually when a broad search is truncated' implies the handoff to a search tool. Explicit exclusions are stated. However, it never names the sibling tool to switch to, so the routing is inferred rather than spelled out.

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

capture_device_chain_snapshotA
Read-onlyIdempotent

Capture ordered devices, nested rack topology, exposed parameters, Return or master mixer, available master output channel, chain mixer, Drum Rack note routing and populated pad mute/solo as persistable JSON. Not a native rack or preset; excludes hidden plugin state, samples, automation, and mappings.

NameRequiredDescriptionDefault
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.

Output Schema

NameRequiredDescription

No output parameters

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, so the safety profile is covered. The description adds genuine value beyond that: the output is 'persistable JSON' and it explicitly enumerates what is NOT captured (hidden plugin state, samples, automation, mappings), which prevents false expectations about completeness. It stops short of describing failure modes or size limits.

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, verb-front-loaded, with the capability list first and the exclusion note second. The enumeration of captured fields is long but each item is informative; no filler sentences. Slightly dense but structurally sound.

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?

An output schema exists, so return shape need not be restated, and the one parameter is fully covered by the schema. Annotations carry the safety profile and the description supplies scope and exclusions. What remains missing is the relationship to the save/load/recall siblings, which is the main open question for this 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?

There is a single parameter with 100% schema coverage, and the schema itself documents the accepted forms (track-N from list_tracks, return-N from get_set_mixer, master). The description adds no parameter-specific meaning, so the baseline of 3 applies when the schema does all the work.

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 verb 'Capture' plus a detailed enumeration of the resource (ordered devices, nested rack topology, exposed parameters, mixer state) makes the purpose unambiguous. It also clarifies what it is not ('Not a native rack or preset'), but it never distinguishes itself from the close siblings capture_device_parameter_snapshot or capture_track_state_snapshot, 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 only implied: capture a device chain into persistable JSON. The negative scoping ('Not a native rack or preset; excludes hidden plugin state, samples, automation, and mappings') hints at boundaries but is framed as content scope, not as a when-to-use rule. It gives no guidance on the capture → save → load → recall lifecycle it sits inside, so an agent has no explicit routing to alternatives.

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

capture_device_parameter_snapshotA
Read-onlyIdempotent

Capture exposed device parameters as persistable JSON, with a consistent live identity check. Not a native preset: excludes hidden plugin state, samples, automation and mappings.

NameRequiredDescriptionDefault
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.
deviceIdYesID from list_devices.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already establish the safety profile (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint=false), lowering the bar. The description still adds real behavioral content: the captured payload is persistable JSON, a 'consistent live identity check' is performed, and hidden plugin state, samples, automation and mappings are excluded from scope. The phrase 'live identity check' remains somewhat cryptic, keeping this from 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?

Two tightly written sentences with zero filler. The core action and the persistable-JSON output are front-loaded, and the exclusion clause that follows is genuinely informative rather than 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?

With an output schema present the return shape need not be described, and annotations cover the safety profile, so the remaining burden is scope and orientation. The description covers excluded content well. The residual gap is that it never says the snapshot is later consumed by recall_device_parameter_snapshot, nor distinguishes itself from the chain/track/group snapshot variants.

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 parameters are documented in place (trackId referencing list_tracks/get_set_mixer/master, deviceId referencing list_devices). The description adds no additional parameter meaning or syntax, 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?

States a specific verb and resource ('Capture exposed device parameters as persistable JSON') and clarifies what it is not ('Not a native preset'). It does not, however, differentiate itself from sibling snapshot tools such as capture_device_chain_snapshot or capture_track_state_snapshot, which the agent must distinguish on its own.

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?

'Not a native preset: excludes hidden plugin state, samples, automation and mappings' bounds the scope and implicitly suggests when to prefer it over save_native_device_preset. But there is no explicit when-to-use statement, no precondition (e.g. that a device must be selected/loaded), and no routing to the related recall_device_parameter_snapshot sibling.

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

capture_group_system_snapshotA
Read-onlyIdempotent

Capture an existing Group Track, nested groups and all descendant tracks in Live order as persistable JSON. Every track snapshot and the final hierarchy must match one state version. Read-only; does not save clips, samples, hidden plug-in state, automation or mappings, or create/recall tracks.

NameRequiredDescriptionDefault
busTrackIdYesID from list_tracks.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent and non-destructive, but the description adds real context beyond them: it enumerates exactly what state is excluded (clips, samples, hidden plug-in state, automation, mappings) and asserts the atomicity guarantee that every track snapshot and the hierarchy must match one state version. That is useful behavioral disclosure not present in the 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?

Two tight sentences with zero redundancy. The positive definition (what is captured, in what order, as what) leads, and the read-only/exclusion caveats follow, making it well 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?

With annotations covering the safety profile, an output schema handling return values, and full parameter documentation, the description only needs to add scope and exclusions, which it does. A brief pointer to the paired save/recall tools would make it self-sufficient, but nothing essential 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?

There is a single parameter with 100% schema coverage, and the schema already explains it ('ID from list_tracks'). The description adds no further meaning about busTrackId, 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 states a specific verb (capture) and resource (an existing Group Track, nested groups and all descendant tracks) and adds the output form (persistable JSON in Live order). It implicitly separates itself from save/load/recall siblings by naming 'capture', but it does not explicitly contrast with the similar capture_track_state_snapshot, 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 Guidelines3/5

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

The description gives negative scoping ('read-only; does not save clips, samples, hidden plug-in state, automation or mappings, or create/recall tracks'), which tells the agent what this is not. However, it never states when to prefer it over capture_track_state_snapshot or how it feeds save_group_system_snapshot/recall_group_system_snapshot, leaving usage largely implied.

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

capture_live_audioA
Destructive

Plan or start a bounded Live Resampling recording of current playback into a new muted, monitor-off audio track. Requires playback, recording off and no armed tracks. Only its capture is stopped/disarmed automatically, even after client disconnect. No isolated-stem, hardware or listener proof.

NameRequiredDescriptionDefault
nameYesName for the retained capture track.
beatsYesRecord 1-16 beats, lasting 0.5-30 seconds at current tempo.
dryRunNoFalse executes with token and hash.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and non-idempotent, so the mutation profile is covered. The description adds value beyond that: the created track is muted/monitor-off, cleanup stops and disarms only this capture even after client disconnect, and 'no isolated-stem, hardware or listener proof' warns the agent that success is not independently verifiable. That last caveat is slightly telegraphic but is genuinely useful context.

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

Conciseness4/5

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

Four tight sentences, front-loaded with purpose, then preconditions, then lifecycle/cleanup behavior, then limits. No filler; the only cost is that the final sentence is compressed into a near-note form ('No isolated-stem, hardware or listener proof') that takes a re-read.

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 annotations, a full schema, and an output schema, most burden is carried elsewhere, and the description still covers preconditions, what is created, cleanup semantics, and verification limits. The remaining gap is the explicit handoff to the capture-status and finish siblings, which an agent would need for the full 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 beats range, name length, dryRun/planHash/confirmationToken and expectedStateVersion are all documented in the schema itself. The description adds no parameter-level semantics beyond that, 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 a specific verb pair ('Plan or start') and resource ('bounded Live Resampling recording of current playback into a new muted, monitor-off audio track'), which is far more than a restatement of the name. It does not, however, name the lifecycle siblings (get_live_audio_capture / finish_live_audio_capture), so an agent must infer the pairing from 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?

'Requires playback, recording off and no armed tracks' gives concrete preconditions, which is real usage guidance. But it never says when to use dryRun/plan versus execute, nor points to get_live_audio_capture or finish_live_audio_capture as the follow-up and teardown steps, leaving the multi-call workflow implicit.

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

capture_midi_sessionA
Destructive

Capture Live's hidden recent MIDI input into Session globally. Rechecks native identities, existing note/timing, routing, arms, monitoring and musical/recording state. May start playback/add scenes/change tempo. Known playing-clip changes require explicit allowExistingClipChanges. Read changedSlots and captureVerified; no exact buffer preview or automatic rollback.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.
allowExistingClipChangesNoExplicit authority for known playing Session clip changes; default false.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior5/5

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

Annotations already flag destructive=true, but the description goes well beyond them: it enumerates concrete side effects (may start playback, add scenes, change tempo), states what is NOT available (no exact buffer preview, no automatic rollback), and describes the verification work done (rechecks identities, routing, arms, monitoring). That is exactly the extra context an agent needs before invoking a 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.

Conciseness4/5

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

The scope statement is front-loaded and every sentence carries content — side effects, gating flag, and return/limitation notes. It is dense to the point of being telegraphic ('Rechecks native identities, existing note/timing, routing, arms, monitoring and musical/recording state'), which costs a point on readability.

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 destructive, non-idempotent capture operation with a rich output schema, the description covers side effects, the required opt-in flag, and the absence of rollback/preview. What's missing is the failure/precondition surface: what happens when there is no recent MIDI input or when expectedStateVersion is stale.

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 all five parameters are already documented. The description only re-touches allowExistingClipChanges with the phrase 'require explicit', adding a mild conditional on top of the schema's 'Explicit authority ... default false'. dryRun/planHash/confirmationToken/expectedStateVersion get no added semantics, which is acceptable given full schema 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 first sentence names a specific verb + resource + target scope: capturing Live's recent MIDI input into Session globally. That distinguishes it from the adjacent get_midi_capture_context sibling. It loses a notch because 'hidden recent MIDI input' is jargon-rich and doesn't clarify what 'hidden' means in practice.

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 states one conditional rule — known playing-clip changes require allowExistingClipChanges — which is real usage guidance. However, it never says when to call this vs. get_midi_capture_context or when not to call it (e.g., no recent input, wrong arm state). Usage is implied by the name rather than stated.

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

capture_session_sceneA
Destructive

Natively capture AND immediately launch the currently playing Session combination as a named scene below the selected anchor. Binds sources/layouts and rechecks at undo entry. Requires playing transport, all explicit/implicit arms off, recording/count-in off and settled launches. Live can adjust copied start markers; verifies other exposed material and reports exact marker differences and playback separately. Full-row launch can affect Arrangement overrides and empty tracks. Partial work remains without rollback/replay. No rendered audio or mixer recall. Updated bridge; all profile.

NameRequiredDescriptionDefault
nameYesExplicit new scene name without controls.
dryRunNoFalse executes with token and hash.
planHashNoPlan hash.
afterSceneIdYesExact selected scene ID from selection/scenes. Native action inserts below it and immediately launches the captured row.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior5/5

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

Goes well beyond the destructiveHint=true/no-idempotency annotations by disclosing that partial work remains with no rollback or replay, that there is no rendered audio or mixer recall, that Live may adjust copied start markers, and that full-row launch can affect Arrangement overrides and empty tracks. These are exactly the side-effect details an agent needs before an irreversible write.

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?

Purpose is front-loaded, but the body is dense and contains cryptic fragments such as 'Updated bridge; all profile.' and 'Binds sources/layouts and rechecks at undo entry' that consume space without conveying actionable meaning. Sentence count is reasonable but not 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?

With an output schema present (so return values need no explanation) and annotations covering the safety profile, the description still supplies prerequisites and side effects. It is nearly complete; only the meaningless trailing fragments keep it from being fully adequate.

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 each of the six parameters is already documented in the schema and the baseline is 3. The description reinforces anchor placement ('below the selected anchor') and naming, but adds no semantics for dryRun, planHash or confirmationToken beyond what the schema states.

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 compound verb+resource: 'capture AND immediately launch the currently playing Session combination as a named scene below the selected anchor.' This clearly separates it from plain create_scene and launch_scene siblings. The phrasing is jargon-heavy but the action is still identifiable.

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 preconditions for when this is valid: 'Requires playing transport, all explicit/implicit arms off, recording/count-in off and settled launches.' That is real when-to-use guidance. It stops short of naming alternative tools (e.g. create_scene or launch_scene) for the cases those preconditions fail.

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

capture_track_state_snapshotA
Read-onlyIdempotent

Capture one consistent, persistable JSON snapshot of group membership, track mixer, routing, ordered devices, nested rack parameters, chain mixer, Drum Rack note routing and populated pad mute/solo. Not a native track preset; excludes clips, hidden state, samples, automation and mappings.

NameRequiredDescriptionDefault
trackIdYesID from list_tracks.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/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; the description still earns credit for disclosing the exact scope of the capture and, importantly, what is NOT captured. It does not say where the snapshot is held or how it relates to the save/recall siblings, so it stops short of full transparency.

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, both dense with information, with the verb and scope front-loaded and the exclusion list packed at the end. Slightly heavy noun-stacking ('nested rack parameters, chain mixer, Drum Rack note routing') but no wasted sentence.

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?

An output schema exists, so return-value description is not required, and the description covers the non-obvious boundary (what is excluded) that an agent could not infer. The remaining gap is the relationship to the save/load/recall snapshot siblings in a very large toolset.

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

Parameters3/5

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

Only one parameter (trackId) with 100% schema description coverage ('ID from list_tracks'), so the schema already carries its meaning. The description adds no interpretation of trackId or of what the resulting snapshot is keyed to; 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?

States a specific verb ('Capture') and resource ('JSON snapshot of group membership, track mixer, routing, devices...') with an enumerated contents list, which is far more precise than the name alone. It does not explicitly contrast itself with the sibling save_track_state_snapshot / load_track_state_snapshot / recall_track_state_snapshot trio, leaving the capture-vs-save distinction implicit.

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

Usage Guidelines3/5

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

The negative scoping ('Not a native track preset; excludes clips, hidden state, samples, automation and mappings') implies when this tool is appropriate, but it never states a triggering condition or names save_track_state_snapshot as the follow-up when persistence is desired. Usage is inferable rather than directed.

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

claim_nks_generation_jobA
Destructive

Atomically lease one pending NKS generation job for a worker. Returns its catalog preset without loading the plugin or saving a file.

NameRequiredDescriptionDefault
workerIdYesNon-empty worker identity.
productSlugYesExact product slug.

Output Schema

NameRequiredDescription

No output parameters

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, non-idempotent, and closed-world. The description adds genuinely useful behavioral context beyond them: the lease is atomic (no double-claim race) and does not load the plugin or save a file, which bounds the side effects of an otherwise 'destructive' claim. It doesn't cover lease expiry/timeout semantics, which would be nice for a non-idempotent mutator.

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 packed sentences with no waste. The action and the atomicity constraint come first, then the return/side-effect clarification.

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 an output schema present, return values needn't be explained, and the description still clarifies that the preset is returned without plugin load or file writes. The main missing element is lease lifetime/timeout behavior for a non-idempotent claim, which matters operationally.

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 both required parameters are documented in the schema itself. The description only echoes 'for a worker' and never explains the productSlug scoping role; baseline 3 applies since the schema carries the load.

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 — atomically lease one pending NKS generation job for a worker — which is a distinct action from the read sibling get_nks_generation_job and the complete/fail siblings. It does not name those siblings explicitly, so the differentiation is implicit rather than spelled out.

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 'for a worker' and 'one pending job' implies the queue-consumer context, but there is no explicit guidance on when to claim versus reading status with get_nks_generation_job or when to complete/fail a claimed job. The agent must infer the workflow.

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

collect_project_mediaA
Destructive

Collect all four native media categories into the current Project and save its clean named Live 12 Set. Requires stopped transport and macOS English Live. Binds saved references and source bytes; verifies Project-relative sample copies. Can copy large libraries. No automatic replay or complete-portability claim.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.
expectedSetFingerprintYesCurrent Set fingerprint from get_live_state.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and readOnlyHint=false, so the safety profile is covered. The description adds substantive context beyond that: stopped transport, macOS English Live, binding saved references and source bytes, verifying Project-relative sample copies, large library copying, and an explicit no-portability-guarantee caveat. It stops short of saying what existing Set content is overwritten.

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

Conciseness4/5

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

The purpose is front-loaded in the first sentence, followed by compact precondition and caveat sentences. Each sentence carries information, though the telegraphic phrasing ('Binds saved references and source bytes') is dense and the final caveat sentence is somewhat cryptic.

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 destructive, non-idempotent operation with an output schema and full parameter coverage, the description supplies the key preconditions, side effects and caveats an agent needs. It does not define the four media categories or state whether an existing saved Set is overwritten, but overall it is complete enough to call 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 coverage is 100% and all five parameters are documented in the schema, including dryRun, planHash and confirmationToken. The description adds no parameter-level meaning and does not mention the plan/confirmation workflow, 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?

States a specific verb and resource: 'Collect all four native media categories into the current Project and save its clean named Live 12 Set.' An agent can distinguish this from the read-only sibling get_project_media, though the description never names that sibling or save_live_set 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?

Gives real preconditions ('Requires stopped transport and macOS English Live') and a caution ('Can copy large libraries'), which implies usage context. It never states when to choose this over get_project_media or save_live_set, or when not to use it, so guidance remains implicit rather than explicit.

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

compare_audio_referenceA
Read-onlyIdempotent

Compare equal 3–60-second local mono/stereo mix and reference windows for LUFS, true peak and loudness range. Binds both files with identity and SHA-256 before/after measurement; maximum 512 MiB each. Returns mix-minus-reference differences and attenuation-only level-match proposals. Read-only: no playback, normalization, mix edits, tonal or quality judgment. All profile; ffmpeg/ffprobe required.

NameRequiredDescriptionDefault
mixPathYesAbsolute local rendered mix or verified capture file.
referencePathYesAbsolute local reference audio file.
durationSecondsNoShared window duration, 3–60 seconds; defaults to 10. Both sources must contain the full window.
mixStartSecondsNoMix window start in source-file seconds; default zero.
referenceStartSecondsNoReference window start in source-file seconds; default zero.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior5/5

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

Adds substantial behavior beyond annotations: SHA-256 identity binding before and after measurement, 512 MiB per-file limit, attenuation-only level-match proposals, and explicit exclusions for playback, normalization, mix edits, and quality judgment. These details are consistent with the read-only, idempotent, non-destructive 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 description is dense but front-loaded and well organized: purpose first, then binding/limits, outputs, read-only scope, and environment requirement. Every sentence contributes operational information, with only minor terseness in phrases like 'All profile'.

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 complex audio-analysis tool with an output schema and rich annotations, the description supplies the remaining operational context: file locality, duration range, size cap, measurement metrics, output behavior, safety boundaries, and ffmpeg/ffprobe dependency. An agent has enough information to decide whether it can invoke the tool correctly.

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

Parameters4/5

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

Schema coverage is already 100%, so the schema carries most parameter meaning. The description still adds useful semantics such as local mono/stereo sources, equal comparison windows, and a maximum file size, though it does not add per-parameter detail for the start-offset 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: compare a mix window against a reference window for LUFS, true peak, and loudness range. The operation is clearly distinct from single-file analysis tools, but the description does not explicitly name sibling tools or state how it differs from 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?

Provides useful constraints and exclusions such as equal 3–60-second windows, local files, read-only behavior, and no tonal or quality judgment. However, it does not explicitly say when to choose this over alternatives like analyze_audio_file or analyze_audio_clip, so routing guidance is only implied.

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

complete_nks_generation_jobA
Destructive

Mark an owned NKS job done only after its catalog preset contains verified saved-artifact evidence. Does not generate or validate the artifact itself.

NameRequiredDescriptionDefault
presetIdYesNKS catalog preset ID.
workerIdYesLease owner identity.

Output Schema

NameRequiredDescription

No output parameters

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 meaningful constraint that evidence must be verified first and that validation/generation is out of scope. It stops short of saying what happens to the job/lease if the evidence check fails or whether completion is reversible.

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 precondition plus scope boundary are front-loaded before anything else. Nothing repeats the tool name 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?

An output schema exists, so return values need no explanation, and both parameters are documented in the schema. What remains thin is the failure path for a destructive, non-idempotent completion (missing evidence, stale lease), which an agent would have to discover by trial.

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 presetId and workerId are already documented in the schema. The description's word 'owned' hints that workerId is a lease-ownership check, but it adds no format, source, or validation detail beyond that. Baseline 3 applies when the schema does the heavy lifting.

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 ('Mark an owned NKS job done') plus the scope constraint that only owned jobs are affected. Against siblings like claim_nks_generation_job, fail_nks_generation_job and get_nks_generation_job, the terminal 'complete' action is unambiguous 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?

Gives an explicit precondition for use: only after the catalog preset contains verified saved-artifact evidence. It also draws a negative boundary ('does not generate or validate the artifact itself'), but it does not name the sibling it replaces when the precondition fails (fail_nks_generation_job), leaving that routing to inference.

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

copy_arrangement_clip_to_trackA

Copy one exact Arrangement MIDI or audio clip onto another compatible ordinary track at an explicit empty interval and name. Binds native owners, layouts and exposed source content, rechecks at undo entry and verifies actual copy readback. Retains partial work without rollback or replay. Does not copy devices, routing or hidden/envelope state; audio shares its source file. Updated bridge; all profile.

NameRequiredDescriptionDefault
nameYesExplicit new clip label without controls.
clipIdYesExact track-N:arrangement-clip-M source ID.
dryRunNoFalse executes with token and hash.
trackIdYesID from list_tracks.
planHashNoPlan hash.
startBeatsYesNonnegative destination beat; entire observed source span must be empty.
confirmationTokenNoSingle-use plan token.
destinationTrackIdYesID from list_tracks.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior5/5

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

Goes well beyond annotations: discloses what is NOT copied (devices, routing, hidden/envelope state), that audio shares its source file, that it verifies readback and rechecks at undo entry, and that partial work is retained without rollback — genuinely useful behavioral context 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.

Conciseness3/5

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

The first sentence is front-loaded and precise, but subsequent sentences are dense and cryptic ('Binds native owners, layouts and exposed source content', 'Updated bridge; all profile') that read as jargon rather than clear guidance, costing readability.

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?

An output schema exists so return values need not be described, and annotations cover the safety profile. The description adds scope, exclusions, verification, and partial-failure behavior — nearly complete, though the opaque 'all profile'/'updated bridge' phrasing leaves 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%, so the schema documents all parameters including clipId, startBeats, name, and the confirmationToken/planHash/dryRun plan flow. The description only reinforces the empty-interval and explicit-name semantics without adding syntax or format details, so baseline 3 is correct.

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 an Arrangement MIDI or audio clip) and the destination constraint (onto another compatible ordinary track at an explicit empty interval), which distinguishes it from in-place siblings like duplicate_arrangement_clip or move_arrangement_clip without naming 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?

Preconditions are stated clearly (compatible ordinary track, explicit empty interval, explicit name), implying when the tool applies. However, no alternatives or when-not guidance are explicit — it never says 'use duplicate_arrangement_clip for in-place' or names a sibling to route away from.

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

copy_device_ab_slotA
Destructive

Request native copying of current device state over the other A/B slot. Requires explicit overwriteOtherSlot true; previous other-slot contents are not backed up. Binds native identity/current controls and refuses recording, frozen owner or active/unknown automation. Copy request is not hidden-state verification. No automatic rollback.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.
deviceIdYesID from list_devices.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
overwriteOtherSlotYesExplicit authority to discard the other native A/B slot; must be true.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior5/5

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

Goes well beyond the destructive/non-idempotent annotations: previous other-slot contents are not backed up, there is no automatic rollback, and the operation binds native identity/current controls. The refusal conditions (recording, frozen owner, active/unknown automation) are exactly the kind of behavioral context 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.

Conciseness4/5

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

Front-loads the action and the destructive consequence, then packs preconditions and caveats into short declarative sentences. Four sentences with no filler, though the telegraphic phrasing ('Binds native identity/current controls') costs some clarity.

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 a destructive mutation with an output schema and fully documented params, the description covers what matters: irreversibility, no backup, refusal states, and the verification caveat. It stops short of describing the dryRun/token workflow, but the schema carries that.

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 states overwriteOtherSlot 'must be true'; the description merely reinforces that requirement. It adds no detail on dryRun, planHash, confirmationToken, or expectedStateVersion beyond what the schema documents, 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: 'native copying of current device state over the other A/B slot.' It is clearly distinct from the sibling read/select tools (get_device_ab_context, select_device_ab_slot), but doesn't name them explicitly, so an agent must infer the relationship.

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 preconditions: overwriteOtherSlot must be explicitly true, and the call is refused during recording, frozen owner, or active/unknown automation. It also clarifies that the copy request 'is not hidden-state verification,' implying a separate verification step, though it doesn't direct the agent to the specific context tool to call first.

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

correct_midi_clip_to_scaleA
Destructive

Plan or apply guarded pitch correction of exact chromatic MIDI notes into the current Live scale. Direction is explicit; equal nearest choices require an explicit tie break. Existing in-scale notes are never changed.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
noteIdsNoOptional stable note IDs; omitted selects every chromatic note.
trackIdYesID from list_tracks.
planHashNoPlan hash.
tieBreakNoRequired only for equal nearest choices.
directionYes
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already flag destructive=true and idempotent=false, so the bar is lower. The description still adds genuine behavior: corrections are 'guarded', only exact chromatic notes are touched, and existing in-scale notes are never changed — a meaningful scope guarantee 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?

Three tight sentences, front-loaded with the action and scope, followed by the direction/tie-break rule and the invariant. 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 an output schema, rich annotations, and 89% schema coverage, the description only needs to convey intent and behavioral scope, which it does. It does not need to explain return values, and the plan/apply token flow is covered by 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 89%, so the schema carries most parameter docs. The description nonetheless adds real semantics: direction is treated as explicit and equal nearest choices require an explicit tie break, clarifying the direction/tieBreak interplay, and the note-scope statement explains which notes noteIds selects.

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: guarded pitch correction of exact chromatic MIDI notes into the current Live scale. It is clear this is scale-snapping, not transposition, but it never names the many sibling transform/scale tools it could be confused with, so it falls short of full sibling differentiation.

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?

'Plan or apply' implies the dryRun-vs-execute split, and the note about tie break gives some invocation context. However there is no explicit when-to-use/when-not guidance and no reference to alternatives like analyze_midi_clip_scale or the plan/apply transposition tools.

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

create_arrangement_audio_clipA

Import a local audio file directly onto an ordinary audio track with an empty Arrangement, at an explicit start and name. Binds native ownership and file metadata, rechecks at undo entry and verifies actual reference/settings/span. Native import determines duration/warping; populated timelines refuse. Partial work remains without rollback or replay. Does not bind file bytes or decoded cache, start playback or use Session staging. Updated bridge; all profile.

NameRequiredDescriptionDefault
nameYesExplicit new clip label without controls.
dryRunNoFalse executes with token and hash.
trackIdYesID from list_tracks.
planHashNoPlan hash.
sourcePathYesAbsolute local audio-file path; Live validates format.
startBeatsYesAbsolute quarter-note song start, within 0 to 1576800.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Goes well beyond the annotations by disclosing transactional semantics: partial work persists with no rollback or replay, verification at undo entry checks reference/settings/span, and native import decides duration/warping. It also scopes non-goals (does not bind file bytes or decoded cache). Some phrasings ('Updated bridge; all profile') are opaque rather than informative.

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?

Front-loaded with the core action, but the body is compressed jargon ('Binds native ownership and file metadata', 'all profile') that costs parsing effort. The trailing fragment 'Updated bridge; all profile' consumes space without conveying actionable 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?

For a mutation tool with annotations and an output schema, the description covers preconditions, partial-failure behavior, verification, and explicit non-goals. Only the dry-run/confirmation-token flow and relationship to specific sibling creation tools remain 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 coverage is 100%, so all eight parameters are already documented, including dryRun, planHash and confirmationToken. The description adds only broad notions of 'explicit start and name' and a verification/undo-entry step, without explaining the plan-token or dry-run workflow beyond what the schema says. 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 (import a local audio file) and precise resource/target (ordinary audio track with an empty Arrangement, explicit start and name). It implicitly separates itself from Session-based and MIDI creation tools via 'empty Arrangement' and 'does not use Session staging', though it never names the sibling alternatives directly.

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 real preconditions and failure modes: 'populated timelines refuse', Arrangement must be empty, and it explicitly excludes playback and Session staging. It does not name a specific alternative tool to call when the timeline is populated, which keeps it below a 5.

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

create_arrangement_cue_pointB

Plan or create an Arrangement cue point at an exact beat position.

NameRequiredDescriptionDefault
nameYesCue-point name.
dryRunNoFalse executes with token and hash.
planHashNoPlan hash.
timeBeatsYesCue-point position in beats.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=false, so the safety profile is covered. The description adds only that position is an 'exact beat position' and that a plan mode exists; it does not disclose the plan-hash/confirmation-token handshake, that the token is single-use, or how expectedStateVersion failure behaves — all critical for a mutation tool.

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

Conciseness4/5

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

A single front-loaded sentence with no filler, and the key resource and constraint come first. It is efficient, though its brevity leaves the two-phase protocol unstated rather than trimming redundancy.

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?

An output schema exists and the input schema is fully described, which lowers the burden. However, for a non-idempotent mutation tool whose six parameters encode a plan-then-confirm handshake, the description omits the one piece an agent most needs: that a dry run must precede execution to obtain the hash and single-use token.

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 (including dryRun, planHash, confirmationToken, expectedStateVersion) is already documented in the schema, and the baseline of 3 applies. The description adds only the 'exact beat position' nuance for timeBeats and does not clarify how the plan/execute parameters relate to one another.

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-plus-resource (create an Arrangement cue point) with a locating detail (exact beat position). The siblings list_arrangement_cue_point, rename_arrangement_cue_point, and delete_arrangement_cue_point are naturally distinguished by the 'create' verb, though the description never names them 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?

There is no guidance on when to use this versus rename/delete/jump/list cue-point siblings beyond the implied verb, and no statement of prerequisites such as needing an observed stateVersion or needing to run a dry run first. The phrase 'Plan or create' hints at a two-step flow but never explains the condition that selects each step.

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

create_arrangement_midi_clipA

Create one named MIDI part directly in an empty Arrangement interval on an ordinary MIDI track, with up to 4096 basic notes relative to the clip start. Binds native owner/layout, rechecks at undo entry and reports actual interval, notes and timing. Preserves existing layout and processing; partial work remains without rollback or replay. Does not start playback or use Session staging. Updated bridge; all profile.

NameRequiredDescriptionDefault
nameYesExplicit name without controls.
notesYesInitial basic MIDI notes; start/duration are relative clip beats and must fit the span.
dryRunNoFalse executes with token and hash.
trackIdYesID from list_tracks.
planHashNoPlan hash.
startBeatsYesAbsolute quarter-note song position.
lengthBeatsYesPositive span; end must be at most 1576800 beats.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior4/5

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

Goes meaningfully past the annotations: it discloses non-atomic behavior ('partial work remains without rollback or replay'), that existing layout and processing are preserved, that state is rechecked at undo entry, and that the result reports the actual interval/notes/timing. The phrase 'Updated bridge; all profile' is opaque and adds no usable behavioral signal.

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?

Front-loaded with the create action, which is good, but the body is dense jargon ('Binds native owner/layout', 'all profile') and the trailing 'Updated bridge; all profile' sentence carries no actionable meaning for an agent.

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 mutation tool with an output schema (so return values need not be described), it covers preconditions, non-atomicity, state revalidation, and side effects on existing layout. The unresolved gap is the plan/confirm execution protocol implied by dryRun, planHash, and confirmationToken.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description corroborates the note cap (4096) and clip-relative timing, but adds nothing about the state token, plan hash, dry-run execution mode, or the max-beat bounds — arguably the parameters most likely to be misused.

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 precise verb+resource+location: create a named MIDI part in an empty Arrangement interval on an ordinary MIDI track, with a bounded note payload. 'Does not use Session staging' and 'ordinary MIDI track' implicitly separate it from create_midi_clip and return-track variants, though no sibling is named outright.

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?

Preconditions are implied rather than prescribed: the target interval must be empty and the track must be an ordinary MIDI track, and Session staging is excluded. But there is no explicit 'use X instead when Y', and the dryRun/planHash/confirmationToken planning flow that the schema gates on is never explained in prose.

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

create_audio_clipA

Plan/import local audio into an empty Session slot on an unfrozen audio track. Binds source identity, size and mtime; Live validates format.

NameRequiredDescriptionDefault
nameNoOptional imported clip name.
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
trackIdYesID from list_tracks.
planHashNoPlan hash.
sourcePathYesAbsolute local audio-file path.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnly false, destructive false, openWorld true, idempotent false), so the description is free to add unique context: 'Plan/import' signals a two-phase plan-then-apply flow, 'Binds source identity, size and mtime' explains the staleness guard, and 'Live validates format' sets expectations about failure modes. It never states that the apply step needs the plan hash/token, though that is covered by the schema.

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, fully front-loaded: the action and target come first, the validation caveat second. No sentence is filler and nothing important is 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?

An output schema exists, so return values need no explanation, and the description plus rich schema cover the preconditions and validation behavior. The only soft spot is that the plan/dry-run/token relationship is only hinted at by 'Plan/import' rather than spelled out, which would help an agent sequence the calls.

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 8 parameters including dryRun, planHash, confirmationToken and expectedStateVersion are already documented. The description's mention of identity/size/mtime adds conceptual framing but no new per-parameter meaning, so the baseline 3 holds.

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+resource: 'Plan/import local audio into an empty Session slot on an unfrozen audio track.' The target container (Session slot, not arrangement) and track precondition cleanly separate it from siblings such as create_arrangement_audio_clip, create_midi_clip, and create_clip_slot_stop_button.

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 preconditions 'empty Session slot' and 'unfrozen audio track' implicitly state when the tool applies and when it does not, which is real routing value. It stops short of naming an explicit alternative (e.g. what to call for arrangement audio or a non-empty slot), so it is clear context rather than full 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.

create_clip_mixer_envelopeA

Create an absent Session volume, Stereo pan or exact Return-send envelope with 1–128 ordered steps. Exact raw values; volume/send also accept finite native dB targets. Pan refuses Split Stereo or unknown modes. No clamping. Requires stopped playback, recording off and inactive target automation. Binds clip, mixer and Return identity; verifies sampled interiors. Existing lanes are preserved. All profile.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
pointsYes
sendIdNoRequired for send; exact ID from get_track_mixer. Omit for volume or pan.
trackIdYesID from list_tracks.
planHashNoPlan hash.
mixerControlYesTrack fader, Stereo pan or exact track-to-Return send. Pan refuses Split Stereo or unknown modes.
returnTrackIdNoRequired for send; matching Return ID from get_track_mixer. Omit for volume or pan.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations only declare the mutation safety profile; the description adds real behavior: no clamping, exact raw native values vs finite dB targets, pan refusing Split Stereo/unknown modes, identity binding of clip/mixer/Return, and verification of sampled interiors. It omits the dryRun→planHash→confirmationToken two-phase execution model, which is the most consequential behavior for a non-idempotent write.

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 and dense with no filler sentences; each clause carries a constraint. Two fragments are opaque to an outsider — "verifies sampled interiors" and "All profile" — which cost some clarity without adding discernible 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 10-parameter mutation with nested oneOf points and an output schema, the description covers preconditions, value semantics, and preservation guarantees adequately. The remaining gap is the confirmation-token/planHash workflow and expectedStateVersion conflict behavior, which the schema names but does not explain.

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 90%, and the nested points variants are thoroughly documented in the schema itself (time/value/duration vs targetDisplay). The description restates the 1–128 step limit and that volume/send accept dB targets while pan requires a raw value, but that largely duplicates the schema rather than adding 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: create an absent Session envelope for a mixer control (volume, Stereo pan, or Return send) with 1–128 ordered steps. The mixer-control scope implicitly separates it from create_clip_parameter_envelope and set_clip_parameter_envelope, though it never names those siblings explicitly to confirm 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 Guidelines4/5

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

"Create an absent ... envelope" plus the preconditions (stopped playback, recording off, inactive target automation) give clear when-to-use context, and "Existing lanes are preserved" signals that this is not the tool for editing an existing lane. It stops short of naming the alternative tool to use when a lane already exists.

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

create_clip_parameter_envelopeA

Create an absent Session clip device-parameter envelope with 1–128 ordered, nonoverlapping steps in beats. Accepts exact native values or supported unit displays. Requires stopped playback and recording off; preserves existing lanes. Verifies sampled steps, not the full curve. Requires all profile.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
pointsYes
trackIdYesID from list_tracks.
deviceIdYesID from list_devices.
planHashNoPlan hash.
parameterIdYesID from list_device_parameters.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare destructiveHint=false, openWorldHint=false and idempotentHint=false, so the safety profile is covered. The description adds real behavioral context beyond that: playback/record preconditions, that existing lanes are preserved, and that verification only samples steps rather than the full curve — a non-obvious verification-scope caveat. 'Requires all profile' is too terse to be a clean disclosure item.

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?

Five short clauses, front-loaded with the core verb+resource, with only minor ambiguity ('Requires all profile' is opaque and reads like internal shorthand). Almost every sentence carries distinct information, but the phrasing is telegraphic rather than polished.

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 mutation tool with an output schema available, the description covers scope, preconditions, payload shape constraints, side effects on existing lanes, and verification limits — everything an agent needs before calling. Return-value detail is correctly left to the output 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 89%, so baseline is 3, and the description earns an extra point by stating a constraint the schema cannot express — that steps must be ordered and nonoverlapping — and by clarifying that points accept either exact native values or supported unit displays (the oneOf branches). It still leaves the plan/token/hash confirmation flow 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?

The description gives a specific verb and resource ('Create an absent Session clip device-parameter envelope') plus the cardinality and unit of the payload ('1–128 ordered, nonoverlapping steps in beats'). The word 'absent' implicitly separates it from set_clip_parameter_envelope, but no sibling is named explicitly, 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 Guidelines4/5

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

'Create an absent ... envelope' scopes usage to the case where no envelope exists, and 'Requires stopped playback and recording off' states a concrete precondition. It does not name set_clip_parameter_envelope as the alternative for existing envelopes, so the routing guidance is context rather than an explicit when/when-not pair.

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

create_drum_pattern_clipA

Plan or create one exact multi-lane drum pattern in an empty Session clip. Binds current meter, tempo, grid, lanes, destination, and state; native execution verifies every generated note.

NameRequiredDescriptionDefault
barsYes
gridYes
nameYesNew drum clip name.
lanesYesExplicit drum lanes and their per-bar steps.
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
trackIdYesID from list_tracks.
planHashNoPlan hash.
startBeatNoAbsolute clip beat offset; defaults to zero.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare it as a non-idempotent write that is non-destructive and closed-world. The description adds real value beyond that: it says state is bound (meter, tempo, grid, lanes, destination) and that 'native execution verifies every generated note', disclosing a verification guarantee 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?

Two dense sentences with no filler, and the core action and scope are front-loaded. The second sentence earns its place by disclosing the binding and verification behavior.

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 an output schema, 82% parameter coverage, and write/non-idempotent annotations present, the description covers the essential purpose and the state-binding/verification behavior. Only an explicit prerequisite or sibling-routing note 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 82%, so the schema already documents most parameters (grid enum, lanes structure, dryRun/confirmationToken/planHash/expectedStateVersion). The description gestures at the bound context but adds no syntax or meaning beyond what the schema provides; the high coverage justifies the 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 a specific verb pair (plan/create) and resource (one exact multi-lane drum pattern) with a clear scope constraint ('in an empty Session clip'), which distinguishes it from edit_drum_pattern_clip. It doesn't explicitly name plan_drum_pattern as a sibling alternative, but the resource and scope are 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 phrase 'in an empty Session clip' implies a precondition (clip must be empty), which is useful usage context. However, it never points to alternatives like plan_drum_pattern, edit_drum_pattern_clip, or apply_drum_variation, and the plan-then-execute flow (dryRun vs confirmed execution) is left to be inferred from the schema.

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

create_grooveA

Plan or create a new groove in Live's Groove Pool with an optional name. Adjust its base grid and amounts afterward with set_groove; groove deletion is not exposed by Live's public API.

NameRequiredDescriptionDefault
nameNoNew groove name.
dryRunNoFalse executes with token and hash.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare the safety profile (not read-only, not destructive, not idempotent). The description adds two pieces of behavioral context beyond that: deletion is impossible via the public API, and refinement happens via set_groove. However, it says nothing about the plan/execute mechanics implied by dryRun, planHash, and confirmationToken, which is a notable gap 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?

Two tight sentences with the core action front-loaded, followed by the follow-up tool and the API limitation. Every clause carries information; no 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?

With an output schema present, return values need no explanation, and the description covers purpose, follow-up, and a hard boundary. The main omission is any framing of the plan/execute token workflow, though the 100%-covered schema partially compensates.

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 five parameters, and the baseline is 3. The description only adds that the name is optional, which the schema already conveys; it does not explain the plan-then-confirm workflow parameters.

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

Purpose4/5

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

The description states a specific verb (create/plan) and resource (a new groove in Live's Groove Pool), and explicitly names the sibling set_groove as the follow-up for adjusting grid and amounts. This lets an agent distinguish creation from subsequent modification without opening schemas. It is slightly ambiguous about the plan-vs-execute duality but still concrete.

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: create a groove here, then refine with set_groove. The note that groove deletion is not exposed is a useful boundary, but there is no explicit when-to-use-this-vs-alternative statement or precondition guidance beyond the follow-up pointer.

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

create_midi_clipB

Plan or create a MIDI clip in an exact empty Session slot.

NameRequiredDescriptionDefault
nameNoOptional clip name.
notesYesInitial MIDI notes.
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
trackIdYesID from list_tracks.
planHashNoPlan hash.
lengthBeatsYesClip length.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already disclose the mutation profile (readOnlyHint=false, idempotentHint=false, destructiveHint=false), so the bar is lower. The description adds a useful precondition — the target slot must be empty — but the plan/execute token flow that dominates this tool's behavior is left to the schema.

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

Conciseness5/5

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

A single front-loaded sentence with zero filler. The scoping constraint ('exact empty Session slot') is the first thing the reader sees.

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?

An output schema exists, so return values need no explanation. However, for a tool whose parameters encode a confirm-with-token two-phase commit, the description is thin — it never tells the agent that a plan must be produced and then confirmed.

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 nine parameters including the planHash/confirmationToken/dryRun mechanics. The description adds no parameter meaning beyond what the schema provides, so baseline 3 is 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?

States a specific verb (create/plan) and resource (MIDI clip) and scopes it to an 'exact empty Session slot', which distinguishes it from arrangement-oriented siblings like create_arrangement_midi_clip. It does not name any sibling explicitly, so differentiation is inferential rather than stated.

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

Usage Guidelines2/5

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

No when-to-use guidance and no explanation of when the 'plan' path versus the 'create' path applies, despite the schema exposing dryRun, planHash, and confirmationToken. The agent must infer the two-phase workflow entirely from parameter names.

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

create_rack_chainA

Plan or create a named empty chain in an exact rack on an ordinary, Return, or Main track, including nested racks. Omitted index appends. Drum-pad assignment is separate.

NameRequiredDescriptionDefault
nameYesNew chain name.
indexNo
dryRunNoFalse executes with token and hash.
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.
deviceIdYesID from list_devices.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare non-read-only, non-destructive, non-idempotent behavior, and the description adds that the chain is empty and that omitted index appends. However, it does not describe the two-phase plan/execute flow beyond the words 'Plan or create,' nor does it explain confirmation-token or state-version implications.

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 front-load the core action and include only operationally useful caveats. There is no filler or redundant restatement of the tool name.

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?

The description covers the key creation semantics, track types, nested racks, append behavior, and the drum-pad boundary. With rich schema coverage, annotations, and an output schema, the remaining gaps around dryRun/execute sequencing are minor and mostly handled by structured fields.

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 high at 88%, so the baseline is 3, but the description adds useful meaning for the otherwise undocumented index parameter by stating that omission appends. It also clarifies the track scope for trackId ('ordinary, Return, or Main track') without repeating schema 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?

The description uses a specific verb pair ('Plan or create') and a precise resource ('named empty chain') scoped to an exact rack on ordinary, Return, or Main tracks, including nested racks. It clearly distinguishes the operation from adjacent sibling tools such as rename_rack_chain, set_rack_chain_mixer, and set_drum_pad_state by noting that drum-pad assignment is separate.

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 contextual guidance: omitted index appends, and drum-pad assignment is handled elsewhere. It does not explicitly state when to prefer dryRun planning versus actual creation, though the schema's dryRun description provides that detail.

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

create_return_trackA

Plan or append a Return Track for shared send effects using Live's native bus API. Name is the raw label; Live prefixes the displayed return letter, and the result reports the observed display name.

NameRequiredDescriptionDefault
nameYesRaw Return Track label without its automatic bus-letter prefix.
dryRunNoFalse executes with token and hash.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

Annotations only declare the write/safety profile (readOnly=false, non-idempotent, non-destructive). The description adds real context beyond that: the bus-API basis, the auto-letter-prefix naming behavior, and that the result reports the observed display name. It still omits the planHash/confirmationToken two-step mechanics.

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

Conciseness4/5

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

Two tight sentences, with purpose front-loaded ahead of the naming nuance. No filler, though the second clause is somewhat redundant with the schema's 'name' description.

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 an output schema and full schema-level parameter documentation, the description carries only the burden of intent and naming behavior, both of which it covers. The plan/confirm token workflow is left to schema descriptions.

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 five parameters including the 'name' semantics. The description restates the raw-label/prefix behavior rather than adding new parameter meaning, 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?

States a specific verb and resource: create/append a Return Track for shared send effects via Live's native bus API. It is distinguishable from create_track by resource, though it does not explicitly call out the sibling or when to prefer it.

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 'Plan or append' implies a two-phase plan/execute workflow, but there is no explicit when-to-use, when-not-to-use, or named alternative versus sibling tooling like create_track or route_tracks_to_return_bus. Usage must be inferred.

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

create_scale_bassline_clipA

Plan or create one scale-aware bassline in an exact empty Session clip. Binds the Live key, progression, rhythm, register, destination, and state version; native execution verifies every generated note.

NameRequiredDescriptionDefault
gateYesNote duration as a fraction of stepBeats.
nameYesNew clip name.
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
degreesYesOrdered one-based scale degrees.
trackIdYesID from list_tracks.
maxPitchYes
minPitchYes
planHashNoPlan hash.
velocityYes
stepBeatsYesGrid subdivision in beats; must divide chordBeats exactly.
chordBeatsYesDuration of each progression degree in beats.
startBeatsYesBassline start in beats.
activeStepsYesUnique zero-based grid steps played within every chord.
pitchPatternYes
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Beyond the annotations (which only declare the mutation and non-idempotent profile), the description adds the empty-clip precondition, that it binds key/progression/rhythm/register/destination/state version (optimistic concurrency), and that native execution verifies every generated note. That is meaningful context not already in structured fields, though non-idempotency and error behavior 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 tight sentences with the action and scope front-loaded and no filler; 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?

An output schema exists so return values need not be explained; the description covers preconditions, state-version binding, and verification, which is most of what an agent needs before calling this 17-param mutation. Only the dry-run/execute distinction and required-confirmation flow are left to the schema.

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

Parameters3/5

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

At 76% schema coverage the schema documents most parameters, so baseline is near 3. The description's list (key, progression, rhythm, register, destination, state version) conceptually groups params like degrees/chordBeats, activeSteps/stepBeats/gate, minPitch/maxPitch, and expectedStateVersion, but adds no format or constraint 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?

States a specific verb-plus-resource ('plan or create one scale-aware bassline') and scopes the destination ('exact empty Session clip'), which distinguishes it from siblings like plan_scale_bassline and create_scale_melody_clip. It stops short of explicitly naming the alternatives it differs from.

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 'exact empty Session clip' precondition and the 'plan or create' framing imply when it applies, but the description never names when to choose it over plan_scale_bassline, create_scale_melody_clip, or create_scale_chord_progression_clip. Usage is inferred rather than stated.

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

create_scale_chord_progression_clipB

Plan or create a functional scale-degree chord progression in one exact empty Session clip. Native execution independently rederives the signed harmony and verifies every generated note.

NameRequiredDescriptionDefault
nameYesNew clip name.
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
degreesYesOrdered one-based scale degrees.
trackIdYesID from list_tracks.
maxPitchYes
minPitchYes
planHashNoPlan hash.
velocityYes
chordBeatsYesDuration and spacing of each chord in beats.
startBeatsYesFirst chord start in beats.
bassDegreesNoOptional Live scale degree for an added bass voice below each ordered chord; null leaves that chord unchanged.
articulationNo
chordRecipesNoOptional exact recipe for each ordered degree.
voiceLeadingYes
notesPerChordYes
confirmationTokenNoSingle-use plan token.
harmonicFunctionsNoOptional harmonic function for each ordered degree; secondary-dominant degrees name tonicized targets.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior4/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, closed-world mutation, so the safety profile is covered. The description adds useful behavioral context beyond annotations: it requires an exact empty Session clip, and native execution independently rederives the signed harmony and verifies every generated note.

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 no wasted text. The scope constraint and the verification behavior are front-loaded and easy for an agent to parse.

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?

Although an output schema exists and annotations cover safety, this is a complex 19-parameter mutation with nested objects. The description omits the plan/execute flow, expectedStateVersion significance, and most parameter semantics, leaving too much for the agent to infer from the schema 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?

With 19 parameters and only 68% schema description coverage, parameter documentation is materially incomplete. The description adds no parameter-level meaning for key inputs like degrees, notesPerChord, voiceLeading, chordRecipes, harmonicFunctions, articulation, dryRun, or confirmationToken, so it does not compensate for the schema gaps.

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

Purpose4/5

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

States a specific verb combination and resource: plan or create a scale-degree chord progression, scoped to one exact empty Session clip. It is clear what the tool produces, but it does not differentiate itself from the similarly named sibling plan_scale_chord_progression, so sibling distinction is missing.

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 implies the target scenario (one exact empty Session clip) but gives no explicit when-to-use guidance, no when-not-to-use exclusions, and never names alternatives such as plan_scale_chord_progression or create_scale_melody_clip. It also does not explain when to use the plan/dry-run path versus actual creation.

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

create_scale_melody_clipA

Plan or create one exact scale-degree melody in an empty Session clip. Binds Live key, meter, grid, destination, and state; native execution verifies every generated note.

NameRequiredDescriptionDefault
gateYesNote duration as a fraction of one selected grid step.
gridYes
nameYesNew melody clip name.
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
eventsYesExplicit scale-degree events; omitted grid steps are rests.
repeatsYes
trackIdYesID from list_tracks.
maxPitchYes
minPitchYes
planHashNoPlan hash.
velocityYesDefault note velocity.
basePitchYesMIDI pitch for scale degree one.
motifBarsYes
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare non-readonly, non-idempotent, non-destructive, so the description does not need to repeat the safety profile. The description does add meaningful context beyond the annotations: the tool binds key, meter, grid, destination, and state, and native execution verifies every generated note, which tells the agent that output is validated rather than written blindly. It stops short of stating what happens if verification fails, or how the single-use token and plan hash are consumed.

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 dense sentences with the resource and the empty-clip precondition front-loaded, followed by the binding and verification guarantees. Nothing is padded, though the second sentence is heavily compressed and could be clearer.

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?

An output schema exists, so the description does not need to explain return values. With 16 params, 13 required, and a multi-step plan-and-execute protocol, the description is adequate but leaves the agent without guidance on how the dryRun/planHash/confirmationToken sequence works, or how this tool differs from plan_scale_melody.

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 69%, so about a third of the 16 parameters, including the motifBars, repeats, and minPitch/maxPitch group, carry no description. The description adds no param-level meaning of its own, so the mid-range schema baseline of 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?

It states a specific verb pair (plan or create) and a specific resource (an exact scale-degree melody in an empty Session clip), plus the key constraint that the destination must be empty. It does not name the closely related sibling plan_scale_melody or plan_scale_bassline/create_scale_bassline_clip, so an agent must infer the boundary itself.

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?

'Plan or create' plus the dryRun parameter implies a two-phase workflow, and 'empty Session clip' implies a precondition. However, there is no explicit statement about when to use this tool rather than plan_scale_melody, create_scale_chord_progression_clip, or create_midi_clip, and no exclusion of non-empty clips beyond the parenthetical phrase.

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

create_sceneA

Plan or create a Session scene at an exact insertion index. Native execution rechecks the neighboring scene records and verifies the new scene in one Live undo step.

NameRequiredDescriptionDefault
nameYesScene name.
indexNoZero-based insertion index; omit to append.
dryRunNoFalse executes with token and hash.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/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 mutation. The description adds meaningful behavioral context beyond annotations by explaining that native execution rechecks neighboring scene records and verifies the new scene within one Live undo step.

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, front-loaded with purpose and followed by relevant execution behavior. No sentence is wasted, and the key insertion-index concept is stated immediately.

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

Completeness4/5

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

The tool has six parameters, full schema coverage, annotations, and an output schema, so the description need not cover return values. It provides the important behavioral context of verification and undo atomicity, though it could more explicitly explain the plan-then-execute token flow.

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 every parameter is already documented in the schema. The description mentions the exact insertion index but does not add syntax or meaning beyond the schema's own parameter 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?

The description uses a specific verb and resource: it creates or plans a Session scene at an insertion index. It is clear what the tool does, though it does not explicitly differentiate itself from siblings such as launch_scene or list_scenes.

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 'Plan or create' implies two usage modes, but the description does not explicitly state when to use planning versus execution or when to choose this tool over alternatives. The schema supplies the dryRun/token details, leaving usage guidance only implied.

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

create_trackB

Plan/create an audio/MIDI track at an insertion index. Live rechecks neighbors and verifies inserted type/name in one undo step.

NameRequiredDescriptionDefault
nameYesTrack name.
typeYesNative track type to create.
indexNoZero-based insertion index; omit to append.
dryRunNoFalse executes with token and hash.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior4/5

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

Goes beyond the annotations by disclosing that Live rechecks neighbors, verifies inserted type/name, and that the whole insertion resolves in one undo step — useful atomicity and verification context. It does not describe the confirmation-token/dryRun mechanics, which is the main remaining 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.

Conciseness4/5

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

Two front-loaded sentences with no wasted words; the scope (index) and the safety guarantees (recheck, verify, one undo) are stated up front. It is tight, though a clause on the plan/execute flow would have been more valuable than the summary style.

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?

Output schema and annotations cover returns and safety, but four of the seven parameters (dryRun, planHash, confirmationToken, expectedStateVersion) implement a two-phase commit that the description never explains. For a mutation tool with a plan/confirm protocol, that is a meaningful documentation 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%, so every parameter is already documented, and the description only restates insertion-index placement plus type/name verification. Baseline 3 applies since the schema carries the parameter burden.

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 ('create an audio/MIDI track') with the insertion-index placement scope, which an agent can act on. It does not differentiate from siblings like create_return_track or create_midi_clip, so an agent must infer which creation tool applies.

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 'Plan/create' but never explains the two-phase plan-then-execute workflow implied by dryRun, planHash, and confirmationToken, nor when to create a track versus a return track or scene. No when-to-use or when-not-to-use guidance is provided.

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

crop_audio_clipA
Destructive

Plan or apply Live native cropping of one exact audio clip. Preview reports the selected loop interval when enabled, otherwise start/end markers, in current units. Live may retain pre-loop playback material and creates a processed source. Selected interval is not a guarantee of exclusive source-file bounds. Binds audio and loop state and reads back native results.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
trackIdYesID from list_tracks.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

Adds meaningful behavior beyond the annotations: it warns that Live may retain pre-loop playback material, creates a processed source, and that the selected interval is not guaranteed to match exclusive source-file bounds. It does not fully explain reversibility or the confirmation-token workflow, but the destructive caveats are substantially clearer than the annotations alone.

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

Conciseness4/5

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

The purpose is front-loaded and most sentences add behavioral detail. Some phrases such as "Binds audio and loop state" and "in current units" are dense and could be clearer, but the description is not bloated.

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 the output schema and full input-schema coverage, the description need not explain return values or every parameter. It covers the important cropping caveats and preview/apply distinction, though the plan-confirmation workflow is left mostly to the schema.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents dryRun, planHash, confirmationToken, and the required IDs. The description adds context about loop intervals and start/end markers, but little parameter-level 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?

States a specific verb and resource: "Plan or apply Live native cropping of one exact audio clip." The audio-clip scope and plan/apply framing distinguish it from crop_midi_clip and from broader audio-state tools.

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

Usage Guidelines3/5

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

The description implies a preview-vs-apply workflow through "Plan or apply" and "Preview reports," but it does not explicitly say when to choose each mode or name alternatives such as crop_midi_clip or set_audio_clip_state. Usage is inferable but not clearly routed.

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

crop_midi_clipA
Destructive

Request native MIDI crop to the observed loop or marker interval. Can discard notes/expression and change source coordinates or IDs. Binds native context and returns complete exposed readback; no automatic rollback.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
trackIdYesID from list_tracks.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, but the description adds specific consequence detail: notes/expression can be discarded, source coordinates or IDs can change, and there is no automatic rollback. Those specifics go meaningfully beyond the generic annotations.

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 front-loaded and only three sentences, with the destructive consequence and lack of rollback clearly stated. The phrases 'Binds native context' and 'complete exposed readback' are slightly opaque, but overall it is compact.

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?

The tool is destructive and has an output schema, and the description covers the important irreversibility and side effects. It does not explain the dryRun/confirmation-token workflow or expectedStateVersion requirements, but those are documented in the schema.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already explains all six parameters. The description does not add meaningfully to individual parameter semantics beyond the phrase 'observed loop or marker interval,' so the baseline of 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?

The description states a specific verb and resource: 'Request native MIDI crop' to an observed loop or marker interval. This distinguishes it from audio cropping and other clip-editing siblings without requiring the reader to inspect 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 Guidelines3/5

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

Usage is implied by the MIDI/clip scope, but the description does not explicitly say when to choose this over siblings such as crop_audio_clip or duplicate_clip_loop. It also does not state prerequisites or exclusions beyond what the schema requires.

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

delete_arrangement_clipA
Destructive

Plan or delete one exact whole Arrangement clip with native identity, exposed content and layout confirmation. Observes target clearance and other clip identities/metadata. Includes clip envelopes and note expression; the snapshot is not a restorable backup.

NameRequiredDescriptionDefault
clipIdYesExact timeline clip ID returned by list_arrangement_clips.
dryRunNoFalse executes with token and hash.
trackIdYesID from list_tracks.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare destructive=true and non-idempotent, so safety is covered. The description adds real value by disclosing that the operation includes clip envelopes and note expression, observes other clip identities/metadata, and that 'the snapshot is not a restorable backup' – a meaningful caveat about reversibility.

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 sentences that front-load the verb and resource. Some phrases are jargon-heavy ('native identity, exposed content and layout confirmation'), but no sentence is wasted and the destructive caveat lands at the end.

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 an output schema present and annotations covering the safety profile, the description supplies the extra behavioral context an agent needs (confirmation workflow, what is included, non-restorable caveat). Only the relationship to sibling delete tools is left unstated.

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 six parameters are already documented, making 3 the baseline. The description's phrases like 'layout confirmation' and 'native identity' gesture at the plan/confirmation parameters but add no format or syntax 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?

States a specific verb+resource pair (plan/delete an Arrangement clip) and constrains scope with 'one exact whole' clip. This distinguishes it from broader siblings like delete_clip and delete_session_object, though it does not name them directly.

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?

'Plan or delete' implies the dryRun/confirm workflow, giving a hint about two modes of use. However, it never states when to prefer this over delete_clip, duplicate_arrangement_clip, or move_arrangement_clip, leaving the agent to infer the routing.

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

delete_arrangement_cue_pointB
Destructive

Plan or delete one exact Arrangement cue point.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
planHashNoPlan hash.
cuePointIdYesCurrent cue-point ID from list_arrangement_cue_points.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=false, and readOnlyHint=false, so the safety profile is covered. The description adds only the hint of a planning mode ('Plan or delete'), which aligns with the dryRun/token parameters, but does not disclose irreversibility, permission needs, or what the delete removes.

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

Conciseness4/5

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

A single short sentence with the action front-loaded and zero filler. It is arguably too terse for a tool with a multi-step plan/execute contract, but the sentence itself wastes nothing.

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

Completeness3/5

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

An output schema and rich annotations exist, so the description need not explain returns or safety. However, it omits the central two-phase workflow (plan with dryRun/planHash, then confirm with confirmationToken) that the parameter set implies, leaving the operational contract under-explained 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 100%, so the schema already documents all five parameters; per the rubric this sets a baseline of 3. The description's 'Plan or delete' gives a faint mapping to the dry-run vs. execute parameters but adds no format or sequencing detail beyond the schema text.

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 ('delete') and resource ('Arrangement cue point'), and the resource name alone distinguishes it from siblings like create_arrangement_cue_point, rename_arrangement_cue_point, and jump_to_arrangement_cue_point. The 'Plan or delete' phrasing slightly muddies the single action but still conveys the operation.

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 is given. It never states that the cue point ID must come from list_arrangement_cue_points, nor explains the plan-then-execute sequence implied by dryRun/planHash/confirmationToken, leaving the agent to infer usage entirely from the schema.

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

delete_clipA
Destructive

Plan or delete one exact whole Session clip with native identity, exposed content and layout confirmation. Includes clip envelopes and note expression; the snapshot is not a restorable backup.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
trackIdYesID from list_tracks.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

Beyond the destructiveHint=true annotation, the description adds meaningful context: it discloses that the removal includes clip envelopes and note expression, and warns 'the snapshot is not a restorable backup'. That is exactly the kind of consequence disclosure a mutation tool needs, though the auth/token flow is left to the 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?

Two sentences, front-loaded with the core action and scope, then the destructive-consequence caveat. Dense but no wasted filler, though the phrasing is jargon-heavy.

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?

An output schema exists so return values need not be explained. The description covers scope, the plan/execute split, and the non-restorable-backup warning. Remaining gap is the exact dryRun->execute sequencing, which is only partially inferable from the short schema descriptions.

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 six parameters. The description's 'native identity, exposed content and layout confirmation' is loosely suggestive but adds no syntax or meaning beyond the schema entries. Baseline 3 applies when the schema does the heavy lifting.

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+resource: deleting 'one exact whole Session clip', which scopes it distinctly from arrangement-clip deletion siblings. The 'Plan or delete' phrasing signals a dual plan/execute mode. It does not name the sibling tools (delete_arrangement_clip, delete_session_object) it should be disambiguated from.

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?

'Plan or delete' plus the dryRun/planHash/confirmationToken parameters imply a plan-then-execute workflow, giving implied usage. However, there is no explicit when-to-use or when-not-to-use guidance, and no routing against the many delete_* siblings.

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

delete_deviceC
Destructive

Plan or delete one exact loaded device from an ordinary, Return, Main, or rack chain.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.
deviceIdYesID from list_devices.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so the safety profile is carried by structured data. The description adds the 'one exact device' exactness constraint and the chain-context scope, but omits the biggest behavioral fact: execution requires a prior plan's token and hash and is non-idempotent.

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 verb front-loaded and zero filler. The only structural weakness is the ambiguous 'Plan or delete' coupling, which packs two operations into one verb phrase.

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 annotations covering destructiveness, a full schema, and an output schema, the basics are covered. Still, for a destructive, non-idempotent, token-gated tool, the description never states the dry-run-first contract or what the deletion affects, leaving a meaningful 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%, so all six parameters including dryRun and expectedStateVersion are already documented in the schema. The description's mention of chain kinds loosely echoes trackId semantics but adds no format or sequencing detail beyond the schema.

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 is present ('delete') and the resource is specific ('one exact loaded device'), and it scopes the device to ordinary/Return/Main/rack chains. However, 'Plan or delete' fuses two distinct operations into one clause without explaining the relationship, and it gives no differentiation from nearby siblings like delete_session_object or move_device.

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 choose this over delete_session_object, nor of prerequisites. The two-phase plan-then-execute workflow (dry run producing planHash/confirmationToken) is only implied by the phrase 'Plan or delete' and the schema, never spelled out in the description.

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

delete_rack_macro_variationA
Destructive

Plan or delete one exact zero-based rack macro variation. Destructive: Live does not expose saved variation contents for preview or reconstruction. Requires confirmation and reports observed count.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.
deviceIdYesID from list_devices.
planHashNoPlan hash.
variationIndexYes
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

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=false, but the description adds genuinely new context: Live does not expose saved variation contents for preview or reconstruction, so deletion is irreversible. It also discloses that confirmation is required and that the result reports an observed count, which is behavior beyond the structured hints.

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 compact sentences, front-loaded with the verb+resource and followed immediately by the destructive warning. Every sentence carries weight; only 'reports observed count' is slightly terse and could be vague to an unfamiliar agent.

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?

An output schema exists, so return values need not be explained, and the description covers the irreversibility, confirmation requirement, and the plan/delete modes for a 7-parameter tool. The plan-to-execute handoff (planHash + confirmationToken sequencing) is implied but not spelled out, 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?

Schema coverage is 86%, so the baseline is 3, but the description adds meaning the schema lacks: 'zero-based' qualifies variationIndex (schema only says minimum 0), and 'Requires confirmation' ties to the confirmationToken. 'Reports observed count' hints at the expectedStateVersion check semantics.

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 (plan or delete) and the exact resource (one zero-based rack macro variation), which is more precise than the vague sibling names store_rack_macro_variation or recall_rack_macro_variation. It does not explicitly name those siblings, so an agent must infer the boundary, but the 'one exact zero-based variation' scoping is clear.

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?

'Plan or delete' implicitly maps to the dryRun parameter, and 'Requires confirmation' signals the two-phase workflow before execution. However, it never names an alternative (e.g. recall_rack_macro_variation or delete_device) or states the condition that selects between plan and delete, leaving the choice to inference.

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

delete_session_objectA
Destructive

Delete an exact track/Group, Return, scene or whole Session clip. Binds native identity and exposed content, including Group descendants or affected Return send lanes. Requires explicit content authority; retains partial outcomes. Clip removal includes envelopes and note expression.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
trackIdNoID from list_tracks.
planHashNoPlan hash.
targetIdYesStable target ID.
targetTypeYes
allowContentNoAllow deletion of contained material or a Return Track and its send lane.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior4/5

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

The destructive annotations already flag the safety profile, and the description still adds real blast-radius detail: Group descendants go with the Group, Return send lanes are affected, clip removal takes envelopes and note expression with it, and partial outcomes are retained (i.e. non-atomic). Phrasing like 'binds native identity and exposed content' is jargon that costs some clarity.

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?

Front-loaded correctly with what gets deleted, and it is short. But the second sentence ('Binds native identity and exposed content') is vague enough to be near-unusable, so the brevity trades against intelligibility.

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 destructive mutation with an output schema, the description covers blast radius, the authority requirement and partial-failure behavior. The two-phase plan/confirm flow that the three required params encode is only in the schema, which keeps this from a 5.

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 88%, so the schema already explains dryRun, planHash, confirmationToken, expectedStateVersion and allowContent. The description reinforces the allowContent idea via 'explicit content authority' but adds nothing about the plan-hash/token handshake or the optimistic-concurrency check, so 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?

Names a specific verb ('Delete') and enumerates the exact resource universe (track/Group, Return, scene, whole Session clip), which lets an agent pick a valid targetType without opening the schema. It hints at the Session-scope boundary ('whole Session clip') but never names delete_clip or delete_arrangement_clip, so the agent still has to infer which delete tool to reach for.

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?

'Requires explicit content authority' implies the allowContent gate, but stated as a precondition rather than a when-to-use rule. There is no statement of when not to use this versus the other delete siblings, and the dryRun/plan/confirm workflow is left to the schema.

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

duplicate_arrangement_clipA

Plan or duplicate one exact Arrangement clip at a non-overlapping beat position on the same track. Binds native identity, exposed source content and prior layout; rechecks at undo entry and verifies actual copy/source state. Retains the source name. Partial copies remain without rollback or replay. Requires the updated bridge; hidden state and envelope contents are not compared.

NameRequiredDescriptionDefault
clipIdYesExact source timeline clip ID from list_arrangement_clips.
dryRunNoFalse executes with token and hash.
trackIdYesID from list_tracks.
planHashNoPlan hash.
startBeatsYesNonnegative destination position in beats.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

Goes well beyond annotations: discloses the recheck-at-undo-entry step, actual copy/source verification, and a failure mode ('Partial copies remain without rollback or replay') that is consistent with idempotentHint=false. Adds the 'updated bridge' prerequisite and explicitly scopes what is NOT compared (hidden state, envelope contents).

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?

Purpose is front-loaded in the first sentence and the remaining sentences each add a distinct behavioral fact. Slightly dense jargon ('Binds native identity, exposed source content and prior layout') but not wasteful.

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 an output schema covering returns and annotations covering safety, this description supplies the remaining behavioral context (prerequisites, verification, partial-copy semantics). The notable gap is routing guidance against sibling duplication tools.

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 every parameter is documented in the schema, so the baseline is 3. The description adds functional context (non-overlap constraint, source-name retention, plan/execute modes) but no per-parameter syntax or format detail.

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 (duplicate) and resource (Arrangement clip) with scope constraints: 'non-overlapping beat position on the same track.' The 'same track' constraint implicitly differentiates it from copy_arrangement_clip_to_track, though no sibling is named explicitly.

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

Usage Guidelines3/5

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

The description implies a plan-vs-execute workflow ('Plan or duplicate') and states a hard prerequisite ('Requires the updated bridge'), but never explains when to choose this over copy_arrangement_clip_to_track, duplicate_clip, or duplicate_clip_loop. Usage is largely left to inference.

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

duplicate_clipA

Copy a Session audio/MIDI clip into an empty compatible slot. Destination defaults to source track. Binds owners/layout and exposed content, rechecks at undo entry and reports explicit copy/name/preservation outcomes. Partial copies remain without cleanup/replay. Hidden state/envelopes/processing/file bytes not verified; audio shares its file. Updated bridge required.

NameRequiredDescriptionDefault
nameNoOptional copy name.
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
trackIdYesID from list_tracks.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
destinationClipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
destinationTrackIdNoDestination ordinary track ID; defaults to trackId. Must accept the source clip kind.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior4/5

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

The description adds substantial non-obvious behavior beyond the annotations: owner/layout binding, exposed content, undo-entry recheck, explicit outcome reporting, partial-copy behavior without cleanup or replay, unverified hidden state/envelopes/processing/file bytes, and file sharing for audio. The phrasing is dense and somewhat opaque, but it provides meaningful operational context that annotations alone do not cover.

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 purpose is front-loaded and the description is appropriately sized for a complex mutation tool. However, several sentences are telegraphic and jargon-heavy ('Binds owners/layout and exposed content'), and the important prerequisite 'Updated bridge required' is buried at the end.

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 the output schema, the description does not need to explain return values and instead covers key operational caveats: partial copies, unverified hidden state/envelopes/processing/file bytes, shared audio file bytes, and bridge requirements. It is close to complete, though the prerequisite and failure semantics could be clearer.

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 nine parameters. The description adds contextual meaning for the destination ('empty compatible slot', 'defaults to source track') and notes that audio shares its file, but it does not explain the dry-run, plan-hash, confirmation-token, or state-version parameters beyond what the schema already states.

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

Purpose4/5

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

The first sentence gives a specific verb and resource: copy a Session audio/MIDI clip into an empty compatible slot. The 'Session' qualifier helps distinguish it from arrangement-clip duplicates, though it does not explicitly name or rule out close siblings such as duplicate_clip_loop or duplicate_session_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?

Usage is implied by the 'empty compatible slot' condition, the default destination track, and the bridge requirement. However, there is no explicit comparison to sibling tools or statement of when to prefer this over duplicate_clip_loop, duplicate_session_object, or duplicate_arrangement_clip.

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

duplicate_clip_loopC
Destructive

Plan or duplicate the current loop region of one exact clip.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
trackIdYesID from list_tracks.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false; the description adds little beyond that. It does not explain what the destructive duplication affects, how dryRun/confirmationToken/planHash/expectedStateVersion work together, or what safety and confirmation behavior the agent should expect.

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 a single front-loaded sentence with no filler. Its brevity is efficient, though it borders on under-specification for a destructive plan/execute tool.

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?

An output schema exists and annotations cover the safety profile, but the description is too thin for a destructive operation with a multi-step plan/confirm flow. It omits the operational distinction between planning and execution and does not route the agent away from relevant duplicate_* 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%, so the baseline is 3. The description only adds 'one exact clip' and 'current loop region' and does not clarify the roles of expectedStateVersion, planHash, confirmationToken, or dryRun beyond the schema text.

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 verb pair and resource: 'Plan or duplicate the current loop region of one exact clip.' It is intelligible, but it does not distinguish this from sibling tools such as duplicate_clip or duplicate_arrangement_clip, and the 'Plan or duplicate' duality adds ambiguity.

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 condition or alternative is named. The description never says when to choose duplicate_clip_loop over duplicate_clip, duplicate_arrangement_clip, or duplicate_midi_clip_variations, nor when to use its planning versus execution mode.

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

duplicate_midi_clip_variationsA

Copy 1-4 named Session MIDI clips to empty slots on the same track. Binds notes/timing; verifies exposed copies and preserves original. One undo step; removes copies on failure. Edit identical copies separately.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
trackIdYesID from list_tracks.
planHashNoPlan hash.
variantsYesNamed copies.
sourceClipIdYesExact populated Session MIDI clip ID.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Goes beyond annotations by disclosing atomicity semantics: 'One undo step; removes copies on failure', 'verifies exposed copies and preserves original'. That is meaningful for a mutating tool with destructiveHint=false and idempotentHint=false, since it tells the agent the operation is all-or-nothing and rollback-safe. Missing only the dryRun/planToken confirmation flow, which the schema covers.

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 terse sentences with zero filler. The core action and its constraints are front-loaded, followed by the behavioral guarantees (atomicity, preservation) and the semantic caveat about copy independence.

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 mutation tool with an output schema and full annotation coverage, the description supplies the essential behavioral context (atomicity, failure cleanup, original preservation, copy independence). Only the two-phase dryRun/token execution model is left entirely to the schema, which is acceptable but leaves a small 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%, so each parameter is already documented (including that clipId must be an existing empty slot and sourceClipId must be populated). The description's '1-4 named' matches the variants constraints but adds no syntax 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.

Purpose4/5

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

States a specific verb (copy/duplicate) and resource (Session MIDI clips) with an explicit cardinality limit (1-4) and destination constraint (empty slots on the same track). An agent can distinguish it from single-clip duplicate_clip or duplicate_clip_loop by the batched, named-variant framing, though no sibling is named outright.

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 conveys the precondition (empty slots on the same track) and the post-condition ('Edit identical copies separately'), which implies usage context, but it never tells the agent when to prefer this over duplicate_clip, duplicate_clip_loop, or duplicate_session_object. Usage is inferred, not stated.

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

duplicate_session_objectA

Copy an exact track/Group, scene or Session clip. Binds native identity and exposed material; verifies insertion before naming. Clip copies use the following empty slot. Refuses armed track sources. Retains partial copies without replay or cleanup. Updated bridge required.

NameRequiredDescriptionDefault
nameNoOptional name for a duplicated track.
dryRunNoFalse executes with token and hash.
trackIdNoID from list_tracks.
planHashNoPlan hash.
targetIdYesStable source ID.
targetTypeYes
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

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 (not read-only, not destructive, not idempotent), and the description adds meaningful behavior beyond that: it verifies insertion before naming, refuses armed track sources, and retains partial copies without replay or cleanup. The 'updated bridge required' note is useful operational context. It does not contradict the annotations, though the 'retains partial copies' phrasing hints at non-atomic behavior that could be clearer.

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 dense and front-loaded, leading with the core copy action and following with constraints and caveats. The telegraphic fragments are occasionally cryptic ('Binds native identity and exposed material') but every sentence conveys a distinct operational fact.

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?

An output schema exists, so return values need not be explained, and the description covers purpose, preconditions, failure/partial-copy behavior, and a prerequisite (updated bridge). For a mutating duplicate tool with annotations present, this is sufficiently complete.

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

Parameters3/5

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

Schema description coverage is 88%, so the schema already documents the parameters (dryRun, planHash, confirmationToken, etc.). The description adds no explicit parameter meaning, only an implicit hint via 'updated bridge required' and 'verifies insertion before naming'. Baseline 3 is appropriate when the schema carries the parameter burden.

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 opening sentence gives a specific verb (Copy) and enumerates the exact resources (track/Group, scene or Session clip), which scopes it clearly against most siblings. It doesn't explicitly distinguish itself from close siblings like duplicate_clip or duplicate_arrangement_clip, so an agent still has to infer the session-vs-arrangement 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?

There is implied guidance ('Clip copies use the following empty slot', 'Refuses armed track sources'), which tells the agent some preconditions. However, no alternative tool is named and there is no explicit when-to-use-this-vs-sibling statement, leaving usage mostly inferred.

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

edit_drum_pattern_clipA
Destructive

Plan or apply guarded replacement of selected drum lanes and bars in an existing MIDI clip. Preserves unrelated notes and verifies the complete native note set.

NameRequiredDescriptionDefault
barsYes
gridYes
lanesYesDrum lanes to replace inside the selected bars.
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
trackIdYesID from list_tracks.
planHashNoPlan hash.
startBarYes
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already flag destructive=true and idempotent=false, but the description adds genuine value beyond them: 'guarded replacement' points at the token/hash confirmation flow, and it discloses two guarantees the annotations cannot — unrelated notes are preserved, and the resulting native note set is verified. It stops short of saying what happens on non-destructive paths or whether partial failures roll back.

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 front-loaded sentences with no filler: the operation and scope come first, then the safety guarantees. Every clause carries information an agent needs.

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 destructive, 10-parameter mutation with a nested lanes array, the description covers the safety posture and preservation semantics but leaves the plan/apply workflow and sibling routing unexplained, which is the main thing an agent can get wrong here. An output schema exists, so omitting return values is acceptable.

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 70%, so the schema carries most parameter meaning ('guarded replacement' loosely gestures at planHash/confirmationToken/expectedStateVersion). The description adds nothing about grid semantics, lane step indexing, bar ranges, or the plan-versus-execute split the two mode parameters require.

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: guarded replacement of selected drum lanes and bars inside an existing MIDI clip. The 'existing clip' framing implicitly separates it from create_drum_pattern_clip, but it never distinguishes itself from the very nearby plan_drum_pattern_edit or apply_drum_variation, which is a real ambiguity for an agent choosing among them.

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 explicit when-to-use guidance. The closest thing is 'Plan or apply', which maps to the dryRun parameter rather than to sibling selection — the description never says when to pick this over plan_drum_pattern_edit, plan_drum_pattern, or apply_drum_variation, all of which sit adjacent in the toolset.

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

enqueue_nks_generation_jobsA
Destructive

Plan or enqueue only explicitly selected eligible discovered presets, in batches of at most 100, using a single-use confirmation. Serum 2 and Omnisphere are limited to their deterministic factory pilots until every pilot record is validated. Does not generate or mark any preset saved.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
planHashNoPlan hash.
presetIdsYesExact preset IDs to enqueue; product-wide enqueue is not supported.
productSlugYesExact product slug.
confirmationTokenNoSingle-use plan token.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true, idempotentHint=false and readOnlyHint=false, so the bar is lower, yet the description adds real value: single-use confirmation tokens, the 100-item batch ceiling, vendor-specific restrictions (Serum 2 / Omnisphere limited to factory pilots until validation), and an explicit non-effect ('Does not generate or mark any preset saved'). It stops short of explaining what happens to a plan if the token expires or jobs are partially enqueued.

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 sentences, all load-bearing, with the core scope constraint front-loaded. Slight density in 'deterministic factory pilots' costs a bit of readability but nothing is redundant.

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?

An output schema exists, so return values need not be explained, and the annotations carry the safety profile. For a destructive, non-idempotent batch mutation the description covers the critical unknowns: batch ceiling, single-use confirmation, vendor gating, and the explicit statement that nothing is generated or marked saved.

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 dryRun, planHash, presetIds, productSlug and confirmationToken are already documented and the baseline is 3. The description reinforces the 100-item batch limit and the single-use token semantics but adds no syntax, format, or sequencing detail (e.g., how planHash and confirmationToken relate) 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 and resource ('Plan or enqueue ... presets') and constrains scope to 'explicitly selected eligible discovered presets,' which separates it from worker-side siblings like claim_nks_generation_job and complete_nks_generation_job. It never names those siblings explicitly, so the differentiation is inferred 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 eligibility and batching constraints ('explicitly selected eligible,' 'batches of at most 100') and mentions single-use confirmation, which implies a plan-then-execute flow. However it never states when to use dryRun planning versus execution, nor routes the agent to get_nks_generation_status or claim_nks_generation_job alternatives. Usage is implied, not prescribed.

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

export_audio_mixA
Destructive

Export Main as stereo WAV through the macOS English Live dialog. Requires stopped transport, recording off, unarmed tracks and an absent destination. Rechecks document/mix controls and verifies native settings and file format. Full-range render completion remains unconfirmed. Current Session overrides are included. Updates export preferences; no overwrite or musical-quality claim.

NameRequiredDescriptionDefault
pathYesAbsolute new .wav path; parent directory must exist.
startYesNative render start as bars.beats.sixteenths, e.g. 1.1.1.
dryRunNoFalse executes with token and hash.
lengthYesNative render length, e.g. 4.0.0 for four bars; include intended tails.
bitDepthNoDefaults to 24; 32 uses floating point.
planHashNoPlan hash.
sampleRateNoDefaults to 48000 Hz.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.
expectedSetFingerprintYesCurrent Set fingerprint from get_live_state.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing the macOS English Live dialog dependency, the re-verification of document/mix controls and native settings, that Session overrides are baked into the render, that export preferences are mutated, and that full-range render completion is not confirmed. The 'no overwrite or musical-quality claim' line explicitly disclaims guarantees the agent might otherwise assume, which is exactly the kind of residual-risk context annotations cannot carry.

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?

Purpose is front-loaded in the first clause and every following sentence carries semantic load (preconditions, verification, limitations). The telegraphic closing fragment 'no overwrite or musical-quality claim' is grammatically compressed to the point of slight ambiguity, costing it a point.

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 destructive 10-parameter export with an output schema present, the description covers preconditions, side effects on export preferences, and known limitations. The one material omission is the dryRun/planHash/confirmationToken two-step execution model, which an agent must reconstruct from the schema 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 path, start, length, bitDepth, sampleRate and the concurrency fields are already described; the description's mention of verifying 'native settings and file format' loosely ties to bitDepth/sampleRate. The most consequential parameters — planHash, confirmationToken and dryRun, i.e., the plan-then-confirm two-phase flow — are never explained in the description, so it adds only marginal 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 with scope: 'Export Main as stereo WAV,' which distinguishes it from track- and clip-level exports by naming the Master bus and the stereo/WAV output. It does not name any sibling (e.g., export_audio_track) explicitly, so the agent must infer the boundary from the object ('Main').

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 use gate: 'Requires stopped transport, recording off, unarmed tracks and an absent destination,' which tells the agent the session conditions that must hold before calling. It stops short of naming an alternative tool or saying what to do when the destination already exists, so the agent must derive the fallback on its own.

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

export_audio_trackA
Destructive

Export one exact ordinary/Group/Return audio output as stereo WAV through the macOS English Live dialog without changing solo/mutes. The ordered eligible menu and selected position bind duplicate names. Include Return/Main effects only when explicitly chosen. Requires stopped transport, recording off, unarmed tracks and an absent destination. Rechecks document/mix controls and verifies native settings and file format. Full-range render completion remains unconfirmed. Current Session overrides are included. Updates export preferences; no overwrite or musical-quality claim.

NameRequiredDescriptionDefault
pathYesAbsolute new .wav path; parent directory must exist.
startYesNative render start as bars.beats.sixteenths, e.g. 1.1.1.
dryRunNoFalse executes with token and hash.
lengthYesNative render length, e.g. 4.0.0 for four bars; include intended tails.
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.
bitDepthNoDefaults to 24; 32 uses floating point.
planHashNoPlan hash.
sampleRateNoDefaults to 48000 Hz.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.
expectedSetFingerprintYesCurrent Set fingerprint from get_live_state.
includeReturnMainEffectsNoInclude shared Return and Main processing; defaults false. Effects-inclusive exports may not sum to the mix.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Annotations declare destructive/non-idempotent/openWorld, and the description goes well beyond them: it states required preconditions, that it updates export preferences, that no overwrite occurs, and candidly flags 'Full-range render completion remains unconfirmed.' This is unusually rich behavioral disclosure.

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?

Purpose and scope are front-loaded, and each clause carries operational information. The telegraphic, unpunctuated phrasing is dense but not padded; minor readability cost keeps it from a 5.

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 12-parameter destructive export with an output schema and rich annotations, the description covers preconditions, side effects (preference updates, no overwrite), and honesty about render-completion uncertainty. Nothing critical to correct invocation appears 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 schema carries the burden, but the description adds meaning: the ordered eligible menu/selected position binds duplicate names (trackId), effects inclusion is explicit (includeReturnMainEffects), and it notes document/mix control rechecking tied to the state/fingerprint parameters.

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 (Export), the exact resource (one exact ordinary/Group/Return audio output), and the output format (stereo WAV via the macOS English Live dialog). The scope 'one exact... output' implicitly distinguishes it from the mix-level sibling export_audio_mix without ambiguity.

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

Usage Guidelines4/5

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

Provides clear preconditions: stopped transport, recording off, unarmed tracks, absent destination, and 'Include Return/Main effects only when explicitly chosen.' However, it never names an alternative such as export_audio_mix or bounce_track_in_place, so the agent must infer routing between export tools.

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

export_looper_clipA
Destructive

Export a fixed nonempty native Looper buffer into an empty unarmed audio Session slot. Binds exposed context and native identities; never launches, clears Looper or overwrites a clip. Partial material is retained. Buffer audio equivalence is not verified.

NameRequiredDescriptionDefault
nameNoOptional new clip name.
dryRunNoFalse executes with token and hash.
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.
deviceIdYesID from list_devices.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
destinationClipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
destinationTrackIdYesID from list_tracks.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

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

Beyond the annotations, the description discloses important behavioral limits: it never launches or clears the Looper, never overwrites a clip, retains partial material, and does not verify buffer audio equivalence. These caveats materially help an agent understand the operation's side effects and guarantees.

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 short and front-loads the core action, followed by guardrails and caveats. The phrase 'Binds exposed context and native identities' is somewhat opaque, but the overall structure is efficient.

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?

The tool is a complex mutation with annotations, an output schema, and fully described parameters, and the description covers the key destination requirements and caveats. It does not explicitly describe the dryRun/token workflow or when to call get_looper_export_context first, but those details are largely available through structured fields.

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 input schema already documents all parameters thoroughly. The description does not add parameter-specific meaning beyond the schema, making the baseline 3 appropriate.

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

Purpose5/5

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

The description names a specific verb and resource: exporting a fixed nonempty native Looper buffer into an empty unarmed audio Session slot. This distinguishes it from related tools such as get_looper_export_context and set_looper_state.

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 clearly states the required context: a fixed nonempty Looper buffer and an empty unarmed audio Session slot as destination. It does not explicitly name alternatives or when to use this instead of nearby export tools, so it falls short of a full 5.

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

export_midi_clipA
Destructive

Export one exact Session or Arrangement MIDI clip through native macOS English Live to a new .mid file. Changes selection/focus; requires stopped recording/playback. Refuses overwrites. Verifies SMF0, source preservation and unmuted note pitch/timing/velocity within file resolution. Includes stored notes outside loop markers; no Live playback, MPE/controller or audible equivalence claim.

NameRequiredDescriptionDefault
pathYesAbsolute new .mid destination in an existing directory. Native export may include notes outside playback/loop markers and omit muted notes.
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
trackIdYesID from list_tracks.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the annotations, the description discloses side effects (selection/focus changes), preconditions (stopped transport), overwrite behavior, verification steps (SMF0, source preservation, note data), loop-marker inclusion, and explicit non-claims about playback/MPE/audible equivalence. This is unusually rich behavioral context for a destructive export operation.

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

Conciseness5/5

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

The core action is front-loaded in the first sentence, followed by prerequisites, side effects, verification behavior, and scope caveats. The dense semicolon structure is justified by the amount of high-value operational information, with no apparent 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 destructive seven-parameter tool with annotations and an output schema, the description covers what an agent needs: transport precondition, overwrite refusal, focus side effect, verification scope, and what the export does not claim to represent. The remaining parameter mechanics are fully documented in the schema.

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

Parameters3/5

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

Schema coverage is 100%, and the schema already documents path, clipId, dryRun, planHash, confirmationToken, trackId, and expectedStateVersion. The description adds scope around the clip and destination file but does not add syntax or workflow detail for the plan token, dry run, or state-version parameters, so 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?

The description states a specific verb and resource: exporting one exact Session or Arrangement MIDI clip to a new .mid file. It also constrains the mechanism to native macOS English Live, which clearly separates it from audio export and import 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 useful operational conditions: stopped recording/playback is required, overwrites are refused, and selection/focus changes. It does not explicitly name when to use this instead of sibling export or import tools, but the prerequisites and limitations provide clear usage context.

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

fail_nks_generation_jobA
Destructive

Record a worker failure and return the leased NKS job to pending, or quarantine it after the retry limit. Does not change preset lifecycle.

NameRequiredDescriptionDefault
reasonYesNon-empty failure reason.
presetIdYesNKS catalog preset ID.
workerIdYesLease owner identity.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

Beyond the annotations (destructiveHint=true, idempotentHint=false), the description discloses real state-machine behavior: the lease is released and the job re-queued, and it is quarantined once the retry limit is hit. It also explicitly scopes out preset lifecycle side effects, which prevents a false assumption of collateral damage. It does not note that repeat calls will not be idempotent in effect.

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, with the primary effect front-loaded and the scope exclusion placed last where it reads as a guardrail.

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 annotations covering safety and an output schema covering returns, the description supplies the missing pieces: the retry/quarantine state machine and the blast-radius boundary. Only the explicit routing against sibling job tools is absent.

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 explains presetId, workerId, and reason. The description only adds implicit semantics (the worker owns the lease), which justifies the baseline rather than a higher score.

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 (record a worker failure) and resource (leased NKS generation job) plus the resulting state transition (back to pending or quarantine). The final clause scopes it away from preset lifecycle changes, so it is distinguishable from complete_nks_generation_job and heartbeat_nks_generation_job.

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 agent must infer that this is the call for a worker that failed, as opposed to complete_nks_generation_job for success. No sibling is named and no explicit when-not condition is given, though the failure/retry framing makes the situation clear.

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

finish_arrangement_takeA
Destructive

Release a stopped Arrangement take handle and retain its material. Cancel true stops only owned global record/playback early; partial material retained. Ownership loss leaves transport untouched and retains the handle until stopped. Does not disarm, restore setup, save or delete; all profile.

NameRequiredDescriptionDefault
cancelNoExplicit early-stop request; defaults to false.
dryRunNoFalse executes with token and hash.
takeIdYesRuntime take ID from record/read.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

Goes well beyond the annotations by describing cancel semantics ('stops only owned global record/playback early; partial material retained'), behavior under ownership loss ('leaves transport untouched and retains the handle until stopped'), and explicit non-effects (does not disarm, restore setup, save or delete). This is rich context for a destructive mutation. Minor tension: destructiveHint=true while the description stresses material is retained, though releasing a handle still qualifies as a state-ending mutation.

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?

Purpose is front-loaded, which is good, but the remaining sentences are dense and telegraphic ('Cancel true stops only owned global record/playback early', 'all profile'), demanding re-reads. Every clause carries some information, yet the phrasing sacrifices clarity for brevity.

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 an output schema and annotations covering the safety profile, the description supplies the key behavioral nuances an agent needs for this take-lifecycle tool. The only gap is the ambiguous closing fragment 'all profile', which leaves one aspect under-specified.

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, but the description adds genuine meaning for the cancel parameter by explaining the 'owned global record/playback' early-stop semantics and partial retention, which the schema's one-liner does not. Other params (dryRun, planHash, confirmationToken, expectedStateVersion) are left to their schema 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 specific verb and resource: 'Release a stopped Arrangement take handle and retain its material,' which is distinguishable from record_arrangement_take and get_arrangement_take. It does not explicitly name those siblings, but the release/retain framing is clear enough for an agent to pick the right tool. The trailing clause 'all profile' is opaque jargon.

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 'Release a stopped Arrangement take handle' implies the precondition that a take is already stopped, and the cancel clause clarifies one invocation path. However, there is no explicit when-to-use vs. alternatives guidance (e.g., vs. get_arrangement_take or return_tracks_to_arrangement), so selection depends on inference.

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

finish_beat_repeat_fillC
Destructive

Release a terminal fill handle; cancel true attempts owned Repeat Off early. Preserves manual Repeat edits and other controls. Cleanup failure stays explicit; releasing a terminal handle does not repair its device. Updated bridge; all profile.

NameRequiredDescriptionDefault
cancelNoExplicitly end an active fill early; default false.
dryRunNoFalse executes with token and hash.
fillIdYesExact retained fill ID.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior3/5

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

The description adds some behavior beyond the annotations by saying manual Repeat edits and other controls are preserved, cleanup failure remains explicit, and releasing a terminal handle does not repair its device. However, it does not clearly explain what is destroyed or what the destructive release actually changes, and 'Updated bridge; all profile' adds no usable behavioral context.

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 opening clause is front-loaded, but the description contains cryptic phrasing and the trailing sentence 'Updated bridge; all profile' is unclear and does not earn its place. It is short overall but not efficiently structured.

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 annotations, full schema coverage, and an output schema, so the description need not explain parameters or return values. Still, for a destructive lifecycle operation with several sibling beat-repeat tools, it should more clearly establish when this terminal action applies and what it affects.

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 six parameters. The description adds only a loose semantic hint about cancel=true ending an active fill early and does not meaningfully clarify planHash, confirmationToken, expectedStateVersion, or dryRun beyond the schema.

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 'Release a terminal fill handle' gestures at the lifecycle-ending action, but 'terminal fill handle' is vague jargon and the description never plainly states that this finishes or closes a Beat Repeat fill. It also does not distinguish the operation from siblings such as perform_beat_repeat_fill or get_beat_repeat_fill.

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 a hint that cancel=true ends an active fill early, but the description gives no explicit guidance on when to use this tool versus perform_beat_repeat_fill, get_beat_repeat_fill, or other beat-repeat controls. No preconditions 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.

finish_live_audio_captureA
Destructive

Plan or release a completed capture handle, keeping its track/file. Cancel true stops and disarms an active capture early and retains partial audio. A pending native stop returns captureActive true with stopping status; read until confirmed, then finish. Cleanup failure is explicit and preserves the handle. Never stops source playback.

NameRequiredDescriptionDefault
cancelNoExplicitly stop an in-progress capture early; retain partial recording.
dryRunNoFalse executes with token and hash.
planHashNoPlan hash.
captureIdYesCapture ID from start or listing.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Adds real behavioral context beyond the destructiveHint/readOnly annotations: cancel retains partial audio, cleanup failure is explicit and preserves the handle (so the agent can retry), and it never stops source playback. What it does not say is what 'release' does to the handle afterward or whether the operation is retryable beyond cleanup failure.

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?

Every sentence carries information and the state-machine constraint is front-loaded, but the prose is telegraphic to the point of ambiguity ('Cancel true stops and disarms', 'keeping its track/file'), which costs clarity without saving much length.

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 the key state machine (pending stop → stopping status → confirm → finish), the early-cancel branch, failure/cleanup behavior, and the non-interference guarantee with playback. With an output schema present, return values need not be explained, so remaining gaps are minor.

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 all six parameters including cancel and dryRun. The description reinforces the cancel semantics ('stops and disarms an active capture early and retains partial audio') but adds nothing about expectedStateVersion, planHash, or confirmationToken, so baseline 3 is 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?

States a specific verb pair (plan or release) on a specific resource (a completed capture handle) and clarifies what persists ('keeping its track/file'). It is distinguishable from capture_live_audio and get_live_audio_capture, though the phrase 'plan or release a completed capture handle' is jargon-heavy and slightly obscures the plain-finish semantics.

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 concrete precondition-and-loop: if the native stop returns captureActive true with stopping status, read (via the sibling getter) until confirmed, then finish. It also marks the cancel=true path as the early-stop alternative. It stops short of naming get_live_audio_capture explicitly as the polling tool.

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

finish_session_arrangement_recordingA
Destructive

Release a settled Session-to-Arrangement recording handle, retaining material. Explicit cancel true requests early global record/transport stop only under unchanged observed recording scope; changed scope remains untouched and unresolved recording cannot be released. Growing clips and advancing time are excluded from stop confirmation. Updated bridge; all profile.

NameRequiredDescriptionDefault
cancelNoExplicit early global record/transport stop; default false.
dryRunNoFalse executes with token and hash.
planHashNoPlan hash.
recordingIdYesExact runtime recording ID.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

It adds meaningful behavior beyond the annotations: releasing retains material, `cancel: true` stops only under unchanged observed scope, changed scope remains untouched, and growing clips/advancing time are excluded from stop confirmation. It does not fully explain the destructive effect of releasing the handle or the token flow, but the safety constraints are unusually specific.

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 purpose is front-loaded, but the second sentence is a dense conditional chain, and the trailing phrase "Updated bridge; all profile." is opaque and does not earn its place. The description is appropriately sized but not consistently clear or structured.

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 destructive, non-idempotent tool with rich schema and output schema, the description covers purpose, release constraints, and cancellation semantics well. It remains vague about preconditions and the plan/confirm token workflow, but that is largely covered by the schema descriptions.

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 semantics for `cancel` beyond the schema's generic wording: it is an early global record/transport stop only under unchanged observed recording scope, with changed scope untouched and unresolved recordings unreleasable. It does not add meaning for the other five parameters, which the schema already describes.

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: "Release a settled Session-to-Arrangement recording handle." That is enough to distinguish it from recording or reading the handle, though it does not explicitly name sibling tools or clarify the lifecycle relationship.

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 gives clear usage conditions: it is for a "settled" handle, and "unresolved recording cannot be released." It also qualifies when `cancel: true` applies, but it does not name alternatives or explicitly say to use `get_session_arrangement_recording` first.

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

finish_session_clip_holdA
Destructive

Release a terminal Session hold handle, or cancel:true to request early release of its retained native clip. Does not globally stop playback or stop a continuing Repeat clip. A failed release retains its handle and track reservation until an explicit cancel retry succeeds. Updated bridge; all profile.

NameRequiredDescriptionDefault
cancelNoRequest early release, or retry a failed release; defaults to false.
dryRunNoFalse executes with token and hash.
holdIdYesExact retained hold ID.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/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 important failure semantics: a failed release retains the handle and track reservation until an explicit cancel retry succeeds. It also clarifies the non-global scope of release, though it does not explain the token/hash execution flow.

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

Conciseness4/5

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

The core release and cancel semantics are front-loaded and efficient. The trailing phrase 'Updated bridge; all profile.' is cryptic and does not clearly help an agent decide or invoke the tool.

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?

The definition covers the key mutation behavior, failure retention, and scope limits for a destructive hold-release tool with annotations and an output schema. It leaves the dryRun/planHash/confirmationToken workflow to the schema, which is acceptable given 100% schema 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 description coverage is 100%, so all six parameters are already documented in the schema. The description reinforces cancel:true and retry behavior, but adds little parameter meaning beyond what the schema already 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 states a specific verb and resource: release a Session hold handle. It also clarifies the optional cancel:true behavior and distinguishes the tool from broader playback/repeat control by saying it does not globally stop playback or stop a continuing Repeat 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 gives clear usage context: release a terminal hold, use cancel:true for early release, and use cancel as a retry after a failed release. It also states what the tool does not do, but it does not explicitly name sibling alternatives such as hold_session_clip or get_session_clip_hold.

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

get_arrangement_takeA
Read-onlyIdempotent

Read one Arrangement recording handle, new clip spans, range coverage and control ownership, or list handles after a lost reply. Start acceptance and range coverage do not prove recorded performance, audio-file finalization or sound. Handles last until release or bridge restart; all profile.

NameRequiredDescriptionDefault
takeIdNoRuntime take ID; omit to list retained handles.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/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 appropriately adds context about handle lifetime and semantic limits: handles last until release or bridge restart, and acceptance/range coverage do not prove recorded performance, audio finalization, or sound. This is useful behavioral guidance 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.

Conciseness4/5

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

The description is short and front-loads the read/list purpose before the caveats. The phrase 'all profile' is somewhat cryptic, but the overall structure is efficient and no sentence is clearly 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?

With an output schema present and annotations covering safety, the description provides enough context about handle state, listing behavior, and lifetime caveats for an agent to call the tool correctly. The remaining gaps are minor, mainly the lack of explicit sibling routing.

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 takeId description already explains that omitting it lists retained handles. The tool description mirrors that behavior but adds no extra syntax or format detail, so the baseline of 3 is appropriate.

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

Purpose4/5

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

The description clearly states a read operation on an Arrangement recording handle and mentions listing retained handles, which separates it from write-oriented siblings like record_arrangement_take and finish_arrangement_take. It does not explicitly name those siblings, so it stops short of true sibling differentiation.

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 'or list handles after a lost reply' gives one concrete usage scenario, but the description does not explicitly say when to use this instead of record_arrangement_take, finish_arrangement_take, or audition_arrangement_passage. Usage is implied rather than fully guided.

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

get_audio_clip_stateB
Read-onlyIdempotent

Read Session/Arrangement audio settings, markers and timeline identity. Unavailable fades report supported=false.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
trackIdYesID from list_tracks.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/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 covered. The description adds useful behavioral detail with "Unavailable fades report supported=false," but it does not go further into failure modes, permissions, 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?

The description is two short sentences and front-loads the core read scope. The second sentence about unavailable fades is a useful caveat, though slightly cryptic without more context.

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 rich annotations, 100% schema coverage, and an output schema, the description only needs to state scope and notable caveats. It does that, though it could be more complete by clarifying the distinction from adjacent clip-inspection and timing tools.

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 clipId and trackId documented directly in the input schema. The description adds no additional parameter semantics beyond what the schema already provides, so the baseline score of 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 uses a specific verb ("Read") and names the resource areas: "Session/Arrangement audio settings, markers and timeline identity." This distinguishes it from the mutating sibling set_audio_clip_state, but it does not explicitly name or differentiate itself from related read tools such as analyze_audio_clip or get_clip_timing.

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?

It states what is read but gives no explicit guidance on when to use this tool versus set_audio_clip_state, analyze_audio_clip, get_clip_timing, or other clip-inspection siblings. There are no prerequisites, exclusions, or alternative-selection conditions in the description.

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

get_audio_source_beat_timesA
Read-onlyIdempotent

Read native warped clip-beat positions for source-audio seconds. Uses Live's sample-to-beat converter, not interpolation from sparse warp markers; does not edit the clip.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
trackIdYesID from list_tracks.
sourceSecondsYesSource times to convert, in order.

Output Schema

NameRequiredDescription

No output parameters

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 genuine value beyond that: it discloses the underlying computation (native sample-to-beat converter rather than interpolation from sparse warp markers), which tells the agent about precision and edge-case behavior, and reiterates that the clip is not modified.

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 the core purpose front-loaded and the implementation caveat second. Nothing is 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?

An output schema exists, so return values need not be explained, and the description covers the computation and non-mutation. It leaves minor gaps: prerequisites (the clip must actually be warped/audio), behavior for out-of-range source times, and the 256-item batch limit.

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 three parameters (trackId, clipId, sourceSeconds) are already documented, including that clipId comes from list_clips or list_arrangement_clips. The description reinforces that sourceSeconds are source-file seconds but adds no syntax, ordering, or limit 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.

Purpose4/5

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

States a specific verb and resource: reads native warped clip-beat positions for given source-audio seconds, via Live's sample-to-beat converter. It distinguishes itself from a naive warp-marker interpolation approach, though it never names a sibling tool (e.g. get_clip_timing, get_audio_clip_state) that an agent might confuse it with.

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 the use case (converting source-file seconds to clip-beat positions on a warped clip) but gives no explicit when-to-use or when-not guidance, and no alternatives among the many clip-timing/clip-state siblings are named. Usage is inferable from the verb+resource but not routed.

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

get_automation_capabilitiesB
Read-onlyIdempotent

Report exact supported and unsupported automation and per-note expression surfaces.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output 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, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered by structured data. The description contributes the useful nuance that results are 'exact' and explicitly enumerate both supported and unsupported cases (rather than a partial probe), but says nothing about scope, size, or staticness of the report.

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. The only cost is that 'surfaces' is vague, so brevity comes at the price of a grain of clarity.

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?

An output schema exists, so return values need not be described. However, for a tool in a family of automation siblings, the description leaves the key ambiguity unresolved: whether this is a static capability manifest or a state-dependent query, and what 'per-note expression surfaces' specifically covers.

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 description introduces none, so there is nothing to mis-document. With no arguments to clarify, the baseline of 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 verb 'Report' plus the resource 'supported and unsupported automation and per-note expression surfaces' gestures at a capability-discovery tool, but 'surfaces' is undefined jargon and the description never says whether this is a static schema listing or a dynamic probe. It also fails to distinguish it from near siblings like get_parameter_automation_context and get_clip_parameter_envelope.

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 statement, no prerequisite, and no named alternative. An agent has no signal for choosing this over get_parameter_automation_context or override_parameter_automation beyond guessing from the word 'capabilities'.

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

get_beat_repeat_fillA
Read-onlyIdempotent

Read a temporary Repeat fill or list retained handles after reconnect. Reports current native IDs, status, Off observation, historical release verification and cleanup errors. Handles are not saved in the Set.

NameRequiredDescriptionDefault
fillIdNoFill ID from start or listing; omit to list.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already establish that this is a read-only, idempotent, non-destructive operation. The description adds useful behavioral context beyond that: it reports native IDs, status, Off observation, historical release verification, cleanup errors, and notes that handles are not saved in the Set.

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 short and front-loads the primary action, with no obvious filler. Some phrases such as 'Off observation' and 'historical release verification' are dense, but they are relevant rather than 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?

Given the low parameter complexity, full schema coverage, annotations, and an output schema, the definition contains enough information to invoke the tool correctly. The main missing context is explicit routing versus the related perform/finish and performance-context 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?

There is one optional parameter with 100% schema description coverage, and the schema already explains 'Fill ID from start or listing; omit to list.' The description supports the same read-vs-list distinction but adds little parameter detail beyond the schema baseline.

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 read/list operation over temporary Repeat fills and retained handles, so the agent can identify the resource and basic action. It does not explicitly name the related perform/finish sibling tools, but the read-only retrieval purpose is clear.

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 'after reconnect' gives one usage context, and the schema says to omit fillId to list, implying two invocation modes. However, the description does not explicitly state when to use this versus perform_beat_repeat_fill, finish_beat_repeat_fill, or get_beat_repeat_performance_context.

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

get_beat_repeat_performance_contextA
Read-onlyIdempotent

Read one native snapshot of a loaded Beat Repeat's Repeat, Grid, Interval, Block Triplets, Mix Type, all exposed parameters and their display values, track routing, monitoring, and transport. Grid and Interval expose labels at their native integer positions; duplicate labels are not assumed equivalent, and quantized behavior is not inferred from this mapping. Read-only; no audible outcome is inferred.

NameRequiredDescriptionDefault
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.
deviceIdYesID from list_devices.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already carry the safety profile (readOnly, idempotent, non-destructive), yet the description still adds real domain caveats: labels sit at native integer positions, duplicate labels are not equivalent, and quantization must not be inferred. That is genuine behavioral guidance beyond the structured fields, though it says nothing about failure modes for a non-Beat-Repeat device.

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 scope in the first clause; every clause is substantive rather than filler. The single long enumeration sentence is dense but the content is all load-bearing, with the caveats correctly placed at the end.

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?

An output schema exists, so return-value explanation is not required, and the description still names the covered fields. What remains unstated is behavior when the device is not a Beat Repeat or is unloaded, which an agent would want to know before calling.

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?

Both parameters (trackId, deviceId) are fully documented in the schema at 100% coverage, including the 'track-N / return-N / master' format and where deviceId comes from. The description adds no parameter-level detail, 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 (read) and a precisely enumerated resource: Repeat, Grid, Interval, Block Triplets, Mix Type, parameters, routing, monitoring, transport of a loaded Beat Repeat. This enumeration cleanly separates it from sibling writers (set_beat_repeat_grid, set_beat_repeat_interval) and from get_beat_repeat_fill.

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 scope ('a loaded Beat Repeat') implies usage, and 'read-only; no audible outcome is inferred' signals this is inspection, not action. However, it never explicitly names an alternative such as list_device_parameters or get_beat_repeat_fill, nor states when not to use it (e.g. device not present, non-Beat-Repeat device).

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

get_browser_item_metadataA
Read-onlyIdempotent

Read private MCP-managed tags, favorite state, and revision for one exact observed Live browser item or local audio sample. A Live user-folder sample shares the local Splice record only when its URI unambiguously matches a configured local Splice file; reserved URI delimiters and existing separate Live metadata preserve exact Live identity. For a local sample, use root local_splice and path [absolute directory, relative audio path]. Does not read native collections.

NameRequiredDescriptionDefault
pathYesNon-empty path to one item.
rootYesLive browser root or local_splice.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/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 description adds value by disclosing the data source (private MCP-managed tags, not native Live metadata), an identity-resolution rule for user-folder samples whose URI matches a configured Splice file, and an explicit negative scope ('Does not read native collections'). That is real behavioral context beyond the structured fields, though it stops short of describing pagination or failure modes.

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 purpose is front-loaded in the first clause, which is good. However, the middle sentence about URI delimiters and 'existing separate Live metadata preserve exact Live identity' is dense, jargon-heavy, and hard to parse, and could be compressed without losing meaning.

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?

An output schema exists, so return values need not be explained, and the tricky identity edge case is covered. The missing piece is provenance: the agent is told the item must be 'exact observed' but not where to obtain a valid root/path (list_browser_roots, list_local_splice_roots, or the search tools), which matters for a 2-required-param lookup 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 description coverage is 100%, so both root and path are already documented in the schema, including the local_splice two-element path form. The description largely restates that mapping and adds only marginal semantics (the notion of a 'configured local Splice file'), 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 ('Read private MCP-managed tags, favorite state, and revision') for exactly one item, and the closing 'Does not read native collections' carves out scope. It does not name its siblings (set_browser_item_metadata, search_browser_item_metadata, get_browser_items), so the read-vs-write-vs-search distinction must be inferred from the verb.

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 usage via 'one exact observed ... item', meaning it applies when identity is already known, but it never states when to choose this over get_browser_items, search_browser_item_metadata, or get_preset_metadata. The local_splice sentence is parameter guidance rather than when-to-use guidance, and there are no stated prerequisites or exclusions relative to siblings.

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

get_browser_itemsA
Read-onlyIdempotent

Browse one level of Live factory/plug-in/Pack/Max/project/user content. Page with offset and limit together. Optional private MCP tags/favorites use exact child identities; not native collections.

NameRequiredDescriptionDefault
pathNoPath below the root.
rootYesLive browser root.
limitNoMaximum children per page; supply with offset.
offsetNoZero-based child offset; supply with limit.
includeMetadataNoJoin private MCP tags and favorites for children with exact URIs.

Output Schema

NameRequiredDescription

No output parameters

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/closed-world, so safety is covered. The description adds genuinely non-obvious behavior: traversal is exactly one level deep, offset and limit must be supplied as a pair, and the metadata join matches on exact child identities rather than native collection membership.

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 sentences, front-loaded with the browse scope, no filler. The final sentence is compressed to the point of near-unreadability ('use exact child identities; not native collections'), costing a point on structure.

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?

An output schema exists, so return shape needn't be explained, and paging plus metadata semantics are covered. What's missing for a tool sitting among a dense browser family is routing context: which root to pick and when to use this instead of the factory or search variants.

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 earns above that by adding the offset/limit coupling rule the schema only hints at ('supply with offset') and by clarifying what includeMetadata actually joins ('private MCP tags/favorites ... exact child identities; not native collections').

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: 'Browse one level of Live factory/plug-in/Pack/Max/project/user content', with the key scope qualifier 'one level' that separates it from a recursive search. It does not name or contrast any of the many browser siblings (get_factory_browser_items, search_browser_items, list_browser_roots), so an agent must infer the distinction from the scope word 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?

'Page with offset and limit together' is a real usage constraint that tells the agent how to page, and 'one level' implies shallow traversal. But there is no guidance on when to choose this over get_factory_browser_items or search_browser_items, and no prerequisites stated.

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

get_browser_preview_contextC
Read-onlyIdempotent

Read native browser preview/stop availability and optional exact item with document/selection guards. Does not observe active preview, route, duration or audible output. No input or loading; all profile.

NameRequiredDescriptionDefault
pathNo
rootNoObserved Live browser root.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior4/5

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

Annotations already declare this as a safe, idempotent read. The description adds useful behavioral context beyond annotations by stating what it does not observe (active preview, route, duration, audible output) and referring to document/selection guards. The final sentence is unclear, but overall transparency 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.

Conciseness3/5

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

The description is short and front-loaded, with the negative scope in a separate sentence. But the wording is dense and 'No input or loading; all profile' is confusing rather than clarifying, so not every sentence earns its place cleanly.

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?

An output schema exists, so the description need not explain return values. Still, for a read tool with optional path/root parameters and guard conditions, the description leaves too much ambiguity about parameter semantics and operational prerequisites, though it does cover negative scope.

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 only 50%, with root described in the schema but path undocumented except for constraints. The description hints at an 'optional exact item' but does not explain what path means, how root and path relate, or what happens when neither is provided.

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 gives a specific verb (Read) and resource (browser preview/stop availability), and adds negative scope about what is not observed. However, phrases like 'document/selection guards' and 'optional exact item' are vague, and it does not explicitly distinguish this read tool from the sibling set_browser_preview.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use this tool versus alternatives such as set_browser_preview or other browser-context tools. 'No input or loading; all profile' is cryptic and does not establish usage conditions or exclusions.

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

get_clip_groove_contextB
Read-onlyIdempotent

Read one native callback snapshot of exact clip/track names, MIDI note IDs and expression metadata or audio state, clip timing, complete Groove Pool and global musical context. Supports before/after validation of UI-only extraction and baking; does not execute them.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
trackIdYesID from list_tracks.

Output Schema

NameRequiredDescription

No output parameters

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, closed-world, so the safety profile is covered. The description adds that the result is 'one native callback snapshot' (a point-in-time capture) and that the tool does not perform baking/extraction, which is meaningful beyond the annotations. It stops short of saying anything about size, cost, or how snapshot staleness behaves.

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 sentence but heavily noun-stacked ('one native callback snapshot of exact clip/track names, MIDI note IDs and expression metadata or audio state, clip timing, complete Groove Pool and global musical context'), which reads as a catalogue rather than a prioritized statement. The genuinely important constraint (read-only, no execution) is buried in a second 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?

With an output schema present and fully documented parameters, the description only needs to convey scope and non-mutation, and it does both. The remaining gap is navigational: an agent facing this large library still cannot tell from the description why it would pick this over the nearby postcondition-inspection or timing-read tools.

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 carry their own descriptions pointing at list_clips/list_arrangement_clips and list_tracks. The description adds no further meaning about clipId/trackId semantics, 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?

Specific verb ('Read') plus a well-scoped resource: a per-clip context snapshot covering names, MIDI note IDs, expression/audio state, clip timing, Groove Pool and global musical context. It is clearly a read tool as opposed to the sibling that inspects postconditions, though it never names that sibling, so the distinction is implicit rather than 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?

It implies usage ('Supports before/after validation of UI-only extraction and baking') and states a boundary ('does not execute them'), which is useful. But it never names alternatives such as inspect_clip_groove_postconditions, get_clip_timing, or get_midi_clip_notes, nor states when this broad snapshot should be preferred over those narrower reads.

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

get_clip_mixer_envelopeA
Read-onlyIdempotent

Read an ordinary Session clip volume, Stereo pan or exact Return-send envelope without changing focus or playback. MIDI/warped audio beats. Pan requires known Stereo mode. Samples do not recover the complete curve.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
sendIdNoRequired for send; exact ID from get_track_mixer. Omit for volume or pan.
trackIdYesID from list_tracks.
sampleTimesNoOptional native probes.
mixerControlYesTrack fader, Stereo pan or exact track-to-Return send. Pan refuses Split Stereo or unknown modes.
returnTrackIdNoRequired for send; matching Return ID from get_track_mixer. Omit for volume or pan.

Output Schema

NameRequiredDescription

No output 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/non-destructive, so the bar is lower. The description adds genuinely useful context beyond them: it changes neither focus nor playback, beat semantics are MIDI/warped-audio based, pan refuses Split Stereo, and sampling does not reconstruct the full curve. These caveats materially help an agent avoid misuse.

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 purpose and keeps every sentence load-bearing with no filler. Some fragments ('MIDI/warped audio beats.') are telegraphic and slightly cryptic, costing a little clarity but not wasting 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?

With an output schema present, annotations covering safety, and full schema coverage, the description need not explain returns. It supplies the key caveats (mode requirements, sampling limits, no focus/playback change), leaving only alternative-selection guidance thin.

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: 'exact Return-send' clarifies the sendId/returnTrackId pairing, 'Pan requires known Stereo mode' constrains the pan enum value, and the sampling caveat contextualizes sampleTimes. It goes modestly 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 ('Read') and resource ('Session clip volume, Stereo pan or exact Return-send envelope'), making scope concrete enough to separate it from device-parameter envelopes. It doesn't name sibling tools like get_clip_parameter_envelope to sharpen the contrast, 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?

Provides prerequisites ('Pan requires known Stereo mode') and a caveat ('Samples do not recover the complete curve') that imply when it works and when it doesn't. However, it gives no explicit guidance on when to choose this over alternatives or how to handle the unsupported cases, leaving usage mostly implied.

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

get_clip_parameter_envelopeB
Read-onlyIdempotent

Sample one Session clip parameter envelope at exact beat positions.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
trackIdYesID from list_tracks.
deviceIdYesID from list_devices.
parameterIdYesID from list_device_parameters.
sampleTimesNoBeat positions to sample.

Output Schema

NameRequiredDescription

No output 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=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds only the sampling semantics (values at exact beat positions); it says nothing extra about permissions, batching of sampleTimes, or edge cases. Baseline 3 is appropriate given annotation coverage.

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 the verb first and zero wasted words. 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?

With an output schema covering return values and annotations covering the read-only/idempotent profile, the description is largely sufficient. The only gap is the absence of sibling routing, which is minor for a narrowly-scoped read 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 description coverage is 100% and every parameter (including the beat-position semantics of sampleTimes) is documented in the schema itself. The description adds no syntax or constraint detail beyond that, 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 a specific verb (sample), resource (Session clip parameter envelope), and scope (exact beat positions). An agent can tell it reads envelope values rather than writing them, but the description never names or contrasts the closest sibling (get_clip_mixer_envelope) so differentiation is left implicit.

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

Usage Guidelines2/5

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

"Sample ... at exact beat positions" hints at the use case but the description gives no explicit when-to-use, when-not-to-use, or alternative. With several envelope-reading siblings (get_clip_mixer_envelope, get_parameter_automation_context) the agent gets no routing guidance.

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

get_clip_timingA
Read-onlyIdempotent

Read Session/Arrangement loops and markers, plus Session launch modes. Units: MIDI/warped beats, unwarped seconds. Unavailable: supported=false.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
trackIdYesID from list_tracks.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/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. The description adds useful behavioral context beyond annotations by specifying the units used for MIDI/warped beats versus unwarped seconds and by disclosing the supported=false unavailability signal.

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 short, front-loaded sentences with no filler. Each sentence provides distinct information: scope, units, and unavailability behavior.

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 tool with an output schema, two required parameters, and full schema descriptions, the description is largely complete: it states what is read, the relevant units, and the unsupported-case behavior. It could more explicitly distinguish this tool from adjacent read-only context tools, but nothing critical is missing for invocation.

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 trackId and clipId already have explanatory schema text. The description does not add parameter-specific meaning beyond the schema, which is acceptable at baseline when the schema carries the parameter semantics.

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 read operation over Session/Arrangement loops, markers, and Session launch modes. It is clear enough to distinguish this read-oriented timing tool from the write-oriented sibling set_clip_timing, though it does not explicitly contrast with other read siblings such as get_clip_groove_context or get_audio_clip_state.

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 read verb implies a general when-to-use, but the description gives no explicit guidance on when to choose this tool over alternatives like get_clip_groove_context, get_audio_clip_state, or set_clip_timing. There are no exclusions or prerequisites stated.

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

get_crossfader_contextA
Read-onlyIdempotent

Read Main crossfader value, native bounds, availability and automation plus every ordinary/Group/Return A/B assignment and Group relationship. Unsupported fields remain explicit. No playback, selection or mixer changes; all profile.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/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 covered. The description adds useful behavioral detail: unsupported fields are returned explicitly and no playback, selection, or mixer state is altered. It does not explain auth or limits, but those are not material here.

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 compact sentences, front-loaded with the read target and field list. 'Unsupported fields remain explicit' and 'all profile' are slightly opaque, but the description remains efficient.

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 a rich output schema, zero parameters, and strong annotations, the description supplies the right amount of scope: what state is read, that unsupported fields are explicit, and that nothing is mutated. It is complete enough for an agent to select and invoke 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?

There are zero input parameters, so the schema imposes no parameter-semantics burden; the baseline is 4. The description appropriately does not invent parameters and instead focuses on returned state.

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 ('Read') and resource ('Main crossfader'), then enumerates exactly which fields are returned: value, native bounds, availability, automation, A/B assignments, and Group relationships. This clearly distinguishes it from the mutation sibling set_crossfader_state and from broader mixer-context 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?

Frames the tool as a read-only inspection of crossfader state and explicitly says it makes no playback, selection, or mixer changes. However, it does not explicitly name set_crossfader_state or state when to prefer other mixer-context siblings, so routing is implied by 'Read' rather than spelled out.

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

get_device_ab_contextA
Read-onlyIdempotent

Read one device's native A/B capability, active slot, exposed parameters, identity and recording context without changing focus. Other-slot contents and hidden state are unavailable. Updated bridge; all profile.

NameRequiredDescriptionDefault
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.
deviceIdYesID from list_devices.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

The annotations already establish that this is a safe, idempotent read operation. The description adds useful behavioral context beyond the annotations: it does not change focus and cannot expose other-slot contents or hidden state. The trailing 'Updated bridge; all profile.' is vague but does not contradict 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.

Conciseness4/5

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

The description is short and front-loads the core action and scope. The final fragment 'Updated bridge; all profile.' is unclear and does not obviously earn its place, but the rest is efficient.

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?

An output schema exists, so the description need not explain return values in detail; nevertheless, it names the key returned context fields and states important visibility limits. It is largely complete for a read-only context tool, with the main remaining gap being explicit sibling differentiation.

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 that trackId comes from list_tracks/get_set_mixer/master and deviceId comes from list_devices. The description does not add parameter-specific meaning beyond the schema, so the baseline score of 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 gives a specific verb and resource: read one device's A/B capability, active slot, exposed parameters, identity, and recording context. The phrase 'without changing focus' helps distinguish it from mutation siblings like select_device_ab_slot, 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 by 'without changing focus' and by the limitation that other-slot contents and hidden state are unavailable, suggesting this is the inspection-only path. However, the description does not explicitly say when to use this instead of get_device_hierarchy, list_device_parameters, select_device_ab_slot, or copy_device_ab_slot.

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

get_device_activation_contextB
Read-onlyIdempotent

Read one exact device's binary Device On control, local on/off, effective native activation, enclosing rack activation, automation and edit-safety context. Preserves focus/playback; unsupported controls explicit. All profile; updated bridge.

NameRequiredDescriptionDefault
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.
deviceIdYesID from list_devices.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already establish that this is read-only, idempotent, non-destructive, and closed-world. The description adds useful behavioral context that focus and playback are preserved and that unsupported controls are reported explicitly, though the final phrase 'All profile; updated bridge' is opaque.

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

Conciseness3/5

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

The description is short and front-loads the read operation, but it is dense with specialized terminology and semicolon fragments. The trailing 'All profile; updated bridge' is cryptic and does not clearly earn 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 read-only context tool with a full output schema and annotations, the description covers the important activation and edit-safety aspects an agent needs. It does not explain how to interpret unsupported controls or the final profile/bridge note, but the structured fields carry most of the remaining detail.

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 that trackId comes from list_tracks, get_set_mixer, or master, and deviceId comes from list_devices. The description reinforces 'one exact device' but adds no further parameter semantics beyond 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 clearly states a specific read operation for one device's activation context, listing the concrete facets returned: Device On, local on/off, effective native activation, rack activation, automation, and edit safety. It is distinguishable from write siblings like set_device_active, but it does not explicitly name alternatives to reinforce sibling differentiation.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use this tool versus alternatives such as set_device_active, get_device_ab_context, or list_device_parameters. The purpose implies inspection, but the description does not state prerequisites, exclusions, or decision rules.

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

get_device_hierarchyA
Read-onlyIdempotent

Read rack chains/mixers, populated Drum Rack pads and macro/variation state. Available macro_mappings include displayed target path, parameter and min/max; paths are descriptive, not stable IDs. Variation contents are unavailable.

NameRequiredDescriptionDefault
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.
deviceIdYesID from list_devices.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare a safe, idempotent read, so the description adds real value beyond them: it discloses that macro paths are descriptive rather than stable IDs, that variation contents are unavailable, and what macro_mappings fields contain. These are meaningful behavioral details an agent cannot get 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.

Conciseness4/5

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

Three tight sentences, front-loaded with the core read action, followed by output caveats. No filler, though the second sentence is dense and could be slightly better segmented.

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 an output schema present, return values need not be explained, yet the description still clarifies the shape of macro_mappings and the limits on variations. Combined with full param coverage, an agent has what it needs to call the tool 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% (trackId and deviceId are documented, including accepted source formats), so the schema carries parameter semantics. The description adds no parameter-level detail, 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 a specific verb (Read) and concrete resources (rack chains/mixers, Drum Rack pads, macro/variation state), which is clearly scoped and distinct from sibling inspection tools. It does not explicitly name the sibling it complements, but the resource list is specific enough to identify the tool.

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

Usage Guidelines2/5

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

There is no guidance on when to use this versus alternatives like get_rack_performance_context, inspect_producer_chain, or get_device_ab_context, nor any stated prerequisites. The agent must infer usage from the resource scope alone.

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

get_device_sidechain_routingA
Read-onlyIdempotent

Read exact native external-sidechain source type and channel choices for one loaded device. Reports unsupported explicitly; does not confuse device-sidechain routing with track input routing.

NameRequiredDescriptionDefault
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.
deviceIdYesID from list_devices.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover readOnly, idempotent, non-destructive and closed-world semantics, so the bar is lower. The description still adds real behavioral value: it notes that unsupported cases are reported explicitly rather than erroring, and it clarifies the semantic boundary against track input routing.

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 zero filler; the core purpose is front-loaded and the disambiguation constraint follows immediately. 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?

With an output schema present and annotations covering the safety profile, the description needs only to establish purpose, scope and edge-case behavior, which it does. A single mention of the write-side sibling would make it fully complete.

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

Parameters3/5

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

Schema description coverage is 100% and both parameters (trackId, deviceId) are fully documented in the schema, so the baseline is 3. The description's 'one loaded device' only loosely echoes the deviceId requirement and adds no format or sourcing detail beyond what the schema already 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?

States a specific verb (Read) and a precise resource (native external-sidechain source type and channel choices) scoped to one loaded device. An agent can distinguish it from its write counterpart set_device_sidechain_routing by the 'Read' framing, though that sibling is never 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?

The phrase 'for one loaded device' implies the required state, and the closing clause steers the agent away from confusing this with track input routing (get_track_routing/get_track_midi_routing). However, it never states when to prefer this tool over its sibling set_device_sidechain_routing or any prerequisite conditions.

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

get_factory_browser_itemsA
Read-onlyIdempotent

Browse one exact level of a Live factory browser root; optional offset and limit return a bounded child page. Optionally join private MCP tags and favorites for exact child identities, not native Live collections.

NameRequiredDescriptionDefault
pathNoPath below the root.
rootYesFactory browser root.
limitNo
offsetNo
includeMetadataNoJoin private MCP tags and favorites for children with exact URIs.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive, and closed-world behavior. The description adds useful behavioral context beyond that: offset and limit produce a bounded child page, and includeMetadata joins private MCP tags and favorites rather than native Live collections.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the core browsing action, then adding pagination and metadata behavior. Every clause carries information and there is 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 annotations covering safety and an output schema covering return values, the description supplies the key missing context: one-level browsing, bounded pagination, and the special includeMetadata join. It could be slightly more complete by mentioning valid roots or that the output schema describes child items, but it is sufficient 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 only 60%, so the description must compensate. It does so by explaining that offset and limit return a bounded child page, that includeMetadata joins private MCP tags and favorites for exact child identities, and that root refers to a Live factory browser root at one exact level. It still omits default values and numeric bounds.

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 (browse) and resource (one exact level of a Live factory browser root), and clarifies that it returns a bounded child page. It does not explicitly name sibling alternatives, so it is clear but not fully differentiated from tools like get_browser_items or search_browser_items.

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 implies usage by saying to browse one exact level, but it never states when to use this tool instead of alternatives such as get_browser_items, list_browser_roots, or search_browser_items. There are no exclusions, prerequisites, or alternative conditions.

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

get_factory_coverageA
Read-onlyIdempotent

Compare observed top-level Live factory browser devices with name-matched knowledge profiles. Reports missing profiles, not verified deep integration or all presets/Packs/plugins.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description adds real behavioral context beyond them: the comparison is name-matched only, restricted to top-level devices, and reports missing profiles rather than integration depth or preset/Pack coverage.

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 the operation and immediately qualified by scope limits. Dense but every clause earns its place; 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?

An output schema exists, so return values need no explanation, and there are no parameters to document. The description supplies the one thing structured fields can't: what the comparison does and does not claim. Only missing piece is a clear when-to-use cue against sibling coverage/inspection tools.

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 per the rubric the baseline is 4. There is nothing for the description to disambiguate, and it correctly spends no words on inputs.

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

Purpose4/5

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

States a specific verb (compare) plus both operands: observed top-level Live factory browser devices and name-matched knowledge profiles. An agent can distinguish this coverage-check from siblings like list_factory_device_profiles or get_plugin_integration_context, though the 'knowledge profiles' concept is jargon that isn't defined.

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?

No explicit when-to-use statement or named alternatives among the many factory/browser siblings. The clause 'not verified deep integration or all presets/Packs/plugins' works as a scope-boundary (when-not) hint, which is partial guidance at best.

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

get_factory_device_contextA
Read-onlyIdempotent

Read native parameters, matched factory knowledge and group coverage. Auto Shift includes song key, Scale Aware, manual Root/Scale and selected scale source; no proof of audible correction. Includes configured plug-in controls or exposed/enabled Max for Live parameter IDs and duplicate-name warnings. Excludes hidden plug-in state, Max patch internals and modulation targets.

NameRequiredDescriptionDefault
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.
deviceIdYesID from list_devices.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior5/5

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

Annotations already cover read-only/idempotent/non-destructive safety. The description adds material behavior beyond annotations: Auto Shift fields, the caveat 'no proof of audible correction', plugin/Max for Live parameter ID exposure, duplicate-name warnings, and explicit exclusions of hidden state, patch internals, and modulation targets.

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 purpose and contains no filler. The middle Auto Shift sentence is dense, but the overall size is economical for a complex context tool.

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 an output schema and fully documented parameters, the description supplies enough domain boundaries and caveats to invoke the tool correctly. Missing explicit sibling routing is a usage issue, not a completeness gap for calling the 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 100% and both required params (trackId, deviceId) are documented in the schema. The description adds no parameter-level syntax or constraints beyond what the schema provides, so the baseline is 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?

The opening sentence gives a specific verb ('Read') and the exact resources (native parameters, matched factory knowledge, group coverage). The inclusion/exclusion list further bounds the tool, but no sibling tool is named, so differentiation from list_device_parameters/get_factory_coverage is implicit.

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, when-not-to-use, or alternative-tool guidance is provided. The exclusions describe data scope rather than task selection, so an agent must infer that this getter is for factory-aware device context.

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

get_history_stateA
Read-onlyIdempotent

Read current Ableton undo and redo availability.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output 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, and destructiveHint=false, so the safety profile is clear. The description adds only that it reads 'current' availability; it does not disclose anything further about return shape, edge cases, or side effects, which is acceptable given the annotation coverage but not richly informative.

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

Conciseness5/5

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

A single front-loaded sentence with no filler. Every word contributes to identifying the read operation and its target.

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 trivial no-parameter read tool with full annotations and an output schema, the description is sufficient: it says what state is read. It does not need to describe return values, and no critical behavioral detail is missing, though a hint about output structure could add marginal 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?

The tool takes zero parameters, so the schema has nothing to document and the parameter semantics burden is minimal. The description does not need to explain any inputs.

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

Purpose4/5

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

The description states a specific verb ('Read') and resource ('undo and redo availability'), making the tool's purpose clear. It implicitly distinguishes itself from the mutation-oriented siblings 'undo' and 'redo', though it does not name them 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: an agent can infer this should be called to check whether undo or redo is currently possible. However, there is no explicit guidance on when to prefer this over calling undo/redo directly, no prerequisites, and no exclusions.

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

get_instrument_comparisonA
Read-onlyIdempotent

Read a runtime instrument comparison and current track IDs, mute states and readiness. Omit comparisonId to list this bridge instance's active comparisons, including after a timed-out preparation. No edits.

NameRequiredDescriptionDefault
comparisonIdNoComparison ID returned by preparation or listing.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, non-destructive behavior, and the description adds useful context: listing fallback behavior and visibility of timed-out preparations. It also reinforces no edits, though it does not discuss pagination or auth details.

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 core read behavior and followed by the important optional-parameter effect. No unnecessary detail.

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?

A simple one-parameter read tool with full schema coverage, an output schema, and read-only annotations. The description covers the main behavior, listing fallback, and timed-out preparation edge case, so it is complete enough 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?

The single parameter is optional and fully documented in the schema. The description adds meaningful semantics beyond the schema: omitting comparisonId switches to listing active comparisons, which is key invocation behavior.

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: reading a runtime instrument comparison plus current track IDs, mute states, and readiness. It clearly indicates a read-only operation, though it does not explicitly name prepare/adopt/select siblings as alternatives.

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 that omitting comparisonId lists this bridge instance's active comparisons, including after a timed-out preparation. This gives clear usage context but does not state when not to use the tool or explicitly route to sibling preparation/adoption tools.

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

get_live_audio_captureA
Read-onlyIdempotent

Read a capture's status, current native track/clip IDs, cleanup errors and stable completed file provenance. Omit captureId to list handles after reconnect or a timed-out start. No edits; runtime handles are not saved in the Set.

NameRequiredDescriptionDefault
captureIdNoCapture ID from start or listing.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/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-destructive, closed-world behavior, so the description earns credit for adding non-obvious traits: cleanup errors, stable completed file provenance, and the fact that runtime handles are not saved in the Set. It does not explain how invalid or stale captureIds are reported, but that may be visible in the 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.

Conciseness5/5

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

The description is two compact sentences. It front-loads what the tool reads and what data it returns, then follows with the special omit behavior and persistence caveat. 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 rich annotations and an output schema present, the description covers the tool's purpose, return highlights, and the unusual captureId-omitted case. A minor gap is how invalid or expired capture IDs are surfaced, though that may be handled by the output 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 already 100%, so the baseline is 3, but the description adds important semantics beyond the schema by explaining what happens when captureId is omitted: it lists handles. That omission behavior is the key parameter nuance an agent needs.

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 ('Read a capture's status') and enumerates what it returns (track/clip IDs, cleanup errors, file provenance). It is clearly distinguishable from capture_live_audio and finish_live_audio_capture, 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 Guidelines4/5

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

It gives a concrete usage rule: omit captureId to list handles after reconnect or a timed-out start. That is strong contextual guidance, but it does not state when not to use this tool or name an alternative tool to call instead.

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

get_live_object_colorsA
Read-onlyIdempotent

Read native RGB colors and palette indices for one to 64 explicit tracks, Returns, Main, scenes or existing Session/Arrangement clips. Preserves focus. All profile.

NameRequiredDescriptionDefault
objectIdsYesExact objects to inspect.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/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 the safety profile is covered. The description adds useful behavioral context by stating 'Preserves focus,' which is important for an inspection tool. The final phrase 'All profile' is ambiguous and does not add clear 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.

Conciseness4/5

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

The description is short and front-loads the core purpose and scope. It is efficient overall, but the trailing fragment 'All profile' is cryptic and slightly weakens the structure.

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 tool with an output schema, annotations, and full parameter schema coverage, the description provides enough context to invoke it correctly. Minor gaps remain around invalid IDs and the ambiguous 'All profile' phrase, but neither is critical.

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 defines the canonical ID format, item types, maxItems=64, minItems=1, and uniqueness. The description restates the object categories and count but adds little semantic detail beyond the schema; baseline 3 is appropriate when the schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states a specific verb and resource: reading native RGB colors and palette indices for tracks, Returns, Main, scenes, and existing Session/Arrangement clips. It sets clear scope with 'one to 64 explicit' objects. However, it does not explicitly differentiate itself from sibling tools such as set_live_object_colors beyond the implicit read/write distinction.

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 object types and 'one to 64 explicit' limit imply when to use the tool, but the description does not name alternatives or say when not to use it. It gives no explicit comparison to set_live_object_colors or other color/state inspection tools.

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

get_live_scale_referenceB
Read-onlyIdempotent

Resolve one exact Ableton Live 12 scale and root to semitone intervals, pitch classes, note names, degrees, and scale family. Read-only.

NameRequiredDescriptionDefault
rootNoteYesC=0 through B=11.
scaleNameYesExact Live scale name.

Output Schema

NameRequiredDescription

No output 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, openWorldHint=false and destructiveHint=false, so 'Read-only' merely restates structured data. The remaining content is a list of return fields, which the output schema already covers; no extra behavioral context (e.g. that this is a pure computation with no Live state dependency) is added.

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 verb and resource, with the output list compressed into one clause. 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 a rich output schema and full annotations, the definition only needs to establish identity and scope, which it does. It falls short only in not relating itself to the sibling enumeration tool or stating any prerequisite, but nothing critical to 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?

Schema coverage is 100% and the scaleName enum plus rootNote 0-11 mapping are fully documented in the schema. The description adds nothing beyond echoing 'scale and root', so 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?

States a specific verb (resolve) and a precise resource (one exact Ableton Live 12 scale + root), plus the shape of the result (intervals, pitch classes, note names, degrees, family). It does not name or contrast with the obvious sibling list_live_scales, so an agent must infer the singular-vs-enumeration split.

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

Usage Guidelines2/5

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

There is no explicit when-to-use or when-not-to-use guidance and no alternatives are named. An agent can infer that this is the lookup for a single designated scale, but the description never says so, nor does it point to list_live_scales for enumeration.

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

get_live_stateA
Read-onlyIdempotent

Read bridge identity, capabilities, Set path, tempo, playback and state version.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output 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, and closed-world, so the safety profile is fully covered without the description. The description contributes the inventory of returned values, but adds no behavioral context such as whether the state version is monotonic or how often the snapshot refreshes. With annotations carrying the main burden, a 3 is appropriate.

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 dense sentence with the verb first and the returned fields enumerated in priority order. No filler, no repetition of the tool name meaninglessly.

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, a rich annotation set, and an output schema that documents the return shape, the description only needs to signal the scope of the snapshot, which it does. Only a hint about when in a workflow 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, so the baseline is 4. The schema is empty and complete for the tool's contract; nothing about parameters needs explaining.

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 verb 'Read' plus an explicit enumeration of the resource contents (bridge identity, capabilities, Set path, tempo, playback, state version) tells an agent precisely what comes back. It is distinguishable from domain-specific siblings like get_transport_context or get_set_mixer because it returns bridge-level metadata and a state version that no sibling does. It stops short of naming that distinction 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?

There is no statement of when to call this versus the many other get_* context tools, nor any sequencing guidance (e.g., call first on connect, or use state version for change detection). Usage must be inferred from the field list alone.

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

get_looper_export_contextA
Read-onlyIdempotent

Read native Looper export capability, buffer length, state and an exact destination slot without changing focus or playback. Buffer audio bytes are unavailable.

NameRequiredDescriptionDefault
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.
deviceIdYesID from list_devices.
destinationClipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
destinationTrackIdYesID from list_tracks.

Output Schema

NameRequiredDescription

No output parameters

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, so the safety profile is covered. The description still adds real behavioral context beyond them: the operation does not steal focus or interrupt playback, and critically that no buffer audio bytes are returned — a limitation an agent could otherwise assume away when planning an export.

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

Conciseness4/5

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

Two tight sentences with the read-only guarantee front-loaded and the audio-bytes caveat as a closing constraint. No filler, though the second sentence is fragmentary rather than integrated.

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?

An output schema covers the return shape, and all four required parameters are schema-documented, so the description only needs to establish read-only semantics and the missing-audio caveat — both present. The remaining gap is not clarifying the relationship to export_looper_clip, which an agent would need to sequence work.

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 each of the four IDs is already documented with its source tool. The description only gestures at 'an exact destination slot', loosely hinting at destinationTrackId/destinationClipId, without adding format or constraint detail. Baseline 3 applies when the schema does the heavy lifting.

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 (Read) and enumerates exactly what is returned: native Looper export capability, buffer length, state, and the resolved destination slot. This clearly separates it from a plain state read, though it never names the siblings it is adjacent to (get_looper_performance_context, export_looper_clip, set_looper_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?

'without changing focus or playback' implies this is the non-intrusive inspection path, but it never states when to pick this over get_looper_performance_context or when to move on to export_looper_clip. Usage is inferable rather than instructed.

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

get_looper_performance_contextA
Read-onlyIdempotent

Read one native snapshot of a loaded Looper's State, Quantization, Monitor, Song Control, Tempo Control, all exposed parameters, global clip-launch quantization, track input/output routing, monitoring, and transport. Read-only; source readiness and audible outcome are not inferred.

NameRequiredDescriptionDefault
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.
deviceIdYesID from list_devices.

Output Schema

NameRequiredDescription

No output 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=true and idempotentHint=true, so the safety profile is covered. The description adds two genuinely useful behavioral facts beyond that: the read is a single point-in-time snapshot ('one native snapshot'), and 'source readiness and audible outcome are not inferred,' which warns the agent not to treat the result as proof of what is actually audible.

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 the verb and the snapshot concept, with no filler. The long enumeration of captured fields is dense but each item earns its place by defining scope; it could have been punctuated more cleanly, but nothing is redundant.

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 an output schema present, the description need not explain return values, and annotations cover the safety profile. The description still supplies the full scope of what the snapshot includes plus the important caveat that readiness and audibility are not inferred, leaving nothing an agent needs 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%, with trackId and deviceId both documented in the schema (including the 'master' special case). The description adds no additional meaning about the parameters, so the baseline of 3 is appropriate.

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

Purpose4/5

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

States a specific verb ('Read one native snapshot') and enumerates the exact state surface captured (Looper macros, exposed parameters, routing, monitoring, transport). It is clearly a read tool, but it never explicitly distinguishes itself from near-neighbors like get_looper_export_context or set_looper_state, leaving the agent to infer the boundary from the verb 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?

There is no explicit when-to-use or when-not-to-use guidance and no alternative tool is named. Usage is only implied by the 'read-only' qualifier and the enumeration of captured state, so an agent must reason about the pairing with set_looper_state or export_looper_clip on its own.

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

get_midi_capture_contextA
Read-onlyIdempotent

Read global Capture MIDI readiness, armed/monitored candidates, playing-clip risks, input routing, full-note digests and clip timing with native identity. Does not expose buffer contents or reserve a moving playhead.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output 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=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds useful behavioral boundaries by stating that it does not expose buffer contents or reserve a moving playhead, which helps set expectations 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 description is two front-loaded sentences that are dense but purposeful: the first lists the context returned, and the second states key limitations. There is no redundant restatement of the tool name or annotations.

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 parameters, rich read-only annotations, and an output schema present, the description provides enough context for correct invocation. It names the main areas of returned context and clarifies what is deliberately excluded, while the output schema can carry return-value details.

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 document. The baseline for a zero-parameter tool is 4, and the description appropriately does not invent parameter details.

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, 'Read', and names the resource and scope: global Capture MIDI readiness, armed/monitored candidates, playing-clip risks, input routing, and clip timing. It is clearly a read-only context getter, but it does not explicitly distinguish itself from siblings such as capture_midi_session or get_transport_recording_context.

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 implies that the tool is used to inspect MIDI capture readiness, but it gives no explicit guidance on when to use it versus related siblings like capture_midi_session or get_transport_recording_context. The second sentence states limitations, not selection criteria or alternatives.

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

get_midi_clip_notesA
Read-onlyIdempotent

Read standard MIDI notes from one exact Session or Arrangement MIDI clip; Arrangement responses include timeline identity.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
trackIdYesID from list_tracks.

Output Schema

NameRequiredDescription

No output 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 and closed-world, so the safety profile is covered. The description adds one useful behavioral note — Arrangement responses carry timeline identity — but says nothing about whether notes are returned raw vs. transformed, ordering, or limits.

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; the read operation and clip-scope constraint come first. It is efficient, though the term 'standard' is left undefined and slightly weakens precision.

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 an output schema present and rich annotations, the description needn't explain return values, and both parameters are documented. It is largely complete for a narrow read tool, with the only omission being how it relates to the extended 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 description coverage is 100%, with clipId explaining it comes from list_clips or list_arrangement_clips and trackId from list_tracks. The description's 'Session or Arrangement' phrasing echoes rather than extends that, and it adds no new semantics for the two required IDs.

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

Purpose4/5

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

States a specific verb and resource ('Read standard MIDI notes') and scopes it to 'one exact Session or Arrangement MIDI clip,' which is clear. However, it never names or distinguishes itself from the obvious sibling get_midi_clip_notes_extended, so the agent must infer what 'standard' means.

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 is implied by the phrase 'one exact ... clip' and the schema's pointer to list_clips / list_arrangement_clips IDs, but there is no explicit when-to-use, when-not, or routing to the extended variant or the note-analysis siblings. Adequate but with clear gaps.

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

get_midi_clip_notes_extendedB
Read-onlyIdempotent

Read complete Session/Arrangement MIDI notes and timeline identity.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
trackIdYesID from list_tracks.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnly=true, idempotent=true, destructive=false, so the safety profile is fully covered. The description adds only that it returns 'complete' notes and 'timeline identity' across both Session and Arrangement contexts, which is useful but thin beyond the structured metadata.

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

Conciseness5/5

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

A single front-loaded sentence with no filler. Nothing is wasted, and the resource and scope appear 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?

An output schema exists, so return values need not be described, and annotations cover the safety profile. The remaining gap is the unresolved relationship to get_midi_clip_notes, which the description should clarify given the crowded MIDI-reader sibling set.

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 both trackId and clipId are documented in the schema itself. The description adds no syntax, format, or cross-reference detail beyond what the schema provides, so the baseline 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 (Read) and resource (MIDI notes) with scope (Session/Arrangement) plus an extra output facet ('timeline identity'). However, it never distinguishes itself from the sibling get_midi_clip_notes, leaving the meaning of 'extended' and 'complete' ambiguous.

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, prerequisites, or alternative selection guidance. With a near-identical sibling (get_midi_clip_notes) in the toolset, the absence of a routing rule forces the agent to infer which variant to call.

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

get_midi_note_insertion_contextA
Read-onlyIdempotent

Read complete notes, timing, native identity and edit safety for adding notes to one Session/Arrangement MIDI clip. Read-only, up to 4096 notes without sampling; all profile.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
trackIdYesID from list_tracks.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already cover readOnly, idempotent and non-destructive, so the safety bar is met elsewhere; the description adds genuine extra context by disclosing the read is unsampled and complete up to 4096 notes and covers the 'all profile' scope. This tells the agent the returned note set is exhaustive, which the annotations do not.

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

Conciseness4/5

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

Front-loaded with what is read, then scope, then the limit/read-only qualifiers — efficient and short. The trailing fragment 'all profile' is compressed to the point of ambiguity, a minor cost.

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 an output schema present and annotations declaring the safety profile, the description only needs to frame scope and read guarantees, which it does (single clip, up to 4096 notes, no sampling). It stops short of explaining what 'edit safety' or 'native identity' convey to the caller, leaving the main conceptual 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 both required parameters (trackId, clipId) are documented in the schema itself, so the description only reinforces scope ('one Session/Arrangement MIDI clip'). No added meaning about ID formats or constraints beyond what the schema states. 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 a concrete verb and resource ('Read complete notes, timing, native identity and edit safety') scoped to one Session/Arrangement MIDI clip. The 'for adding notes' qualifier separates it from the plain note-reading siblings like get_midi_clip_notes, though the phrase 'native identity' and 'edit safety' remain opaque without opening the output schema.

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 'for adding notes' implies this is the pre-flight read before insert_midi_notes, but no sibling or alternative is named and no condition for choosing it over get_midi_clip_notes / get_midi_clip_notes_extended / get_midi_note_removal_context is given. Usage is inferable rather than stated.

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

get_midi_note_removal_contextA
Read-onlyIdempotent

Read complete notes, timing, native target identity and safety for explicit note deletion from a Session/Arrangement MIDI clip. Read-only, up to 4096 notes without sampling; all profile.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
trackIdYesID from list_tracks.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive, closed-world behavior, and the description reinforces this with 'Read-only'. It adds genuine behavioral context beyond annotations: a hard cap of 4096 notes and 'without sampling', which tells the agent results are complete rather than truncated. The vague 'all profile' phrase slightly muddies this.

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

Conciseness4/5

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

A single dense sentence that front-loads the core purpose and appends the safety/scale constraints. It wastes little space, though 'native target identity and safety' and 'all profile' are jargon-y and less informative than plain phrasing.

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?

An output schema exists, so return-value explanation isn't required, and annotations cover the safety profile. The description supplies the clip scope, the 4096-note completeness guarantee, and the read-only nature, leaving little an agent needs missing apart from explicit sibling/alternative routing.

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 trackId and clipId are already documented as ID sources. The description refers to 'Session/Arrangement MIDI clip' and 'native target identity', loosely corroborating the clipId/trackId pairing, but it adds no syntax or format detail beyond the schema. 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 uses a specific verb (Read) with a concrete resource (complete notes, timing, native target identity and safety) and a stated purpose (explicit note deletion from a Session/Arrangement MIDI clip). It implicitly frames itself as the pre-flight read for deletion, distinguishing it from insertion, but never names a sibling like get_midi_clip_notes or get_midi_note_insertion_context 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?

'for explicit note deletion' implies the use case (gather context before remove_midi_notes), but the description gives no explicit when-to-use/when-not guidance and does not point to alternatives such as get_midi_clip_notes (full note dump) or get_midi_note_insertion_context. Usage must be inferred.

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

get_midi_note_selectionA
Read-onlyIdempotent

Read stable native note selection for one exact current detail Session/Arrangement MIDI clip without moving focus or selecting notes. Returns selected IDs/properties and a token for optional set_midi_note_properties guarding. Empty, unavailable and not-detail-clip are distinct. Up to 4096 selected notes, no truncation; all profile.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
trackIdYesID from list_tracks.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior5/5

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

Beyond the annotations (which already declare read-only/idempotent/non-destructive), it discloses that it returns IDs/properties plus a guard token, distinguishes empty vs unavailable vs not-detail-clip states, and states a 4096-note ceiling with no truncation. That is substantive behavioral context the annotations do 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.

Conciseness4/5

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

Front-loads the core action and read-only guarantee, then layers return/limit details efficiently. A few telegraphic fragments ('all profile') cost a little clarity 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?

With an output schema present, return values needn't be spelled out, and the description still covers the guard token, distinct edge-case states, and the 4096 cap. Nearly complete for a 2-param read tool; minor missing detail about what 'properties' includes.

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 both trackId and clipId are already documented in the schema. The description adds no param-level meaning beyond what the schema provides, 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 a specific verb (Read) and resource (stable native note selection) scoped to one exact current detail MIDI clip, and the phrase 'without moving focus or selecting notes' distinguishes it from selection-mutating tools. Slightly jargon-heavy ('detail clip') and does not name a sibling alternative explicitly, keeping it below a 5.

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

Usage 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 read-only snapshot framing plus the mention of a token 'for optional set_midi_note_properties guarding' signals when this is useful, but it never says when to prefer this over get_midi_clip_notes or get_selection_context.

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

get_mixer_panning_contextB
Read-onlyIdempotent

Read exact track, Group, Return or Main panning mode and Stereo/left/right native values, displays, bounds, enablement and automation. Binds native owner/mixer/parameter identities. Read-only; unsupported fields explicit. All profile.

NameRequiredDescriptionDefault
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.

Output Schema

NameRequiredDescription

No output parameters

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 is covered. The description adds genuine context — that unsupported fields are reported explicitly rather than silently omitted, and that native owner/mixer/parameter identities are bound — but phrases like 'All profile' are opaque jargon that don't clearly disclose behavior.

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-loads the read action, but several fragments ('Binds native owner/mixer/parameter identities,' 'All profile') cost more in ambiguity than they save in brevity. The sentences are dense staccato units that a reader must re-parse.

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?

An output schema exists, so return value shape need not be explained, and the description covers scope (Track/Group/Return/Main), the value families returned, and the explicit-unsupported-fields behavior. For a single-parameter read tool this is nearly sufficient, with 'All profile' the only loose end.

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?

With 100% schema description coverage on the single trackId parameter, the schema already explains accepted forms ('track-N from list_tracks, return-N from get_set_mixer, or master'). The description adds nothing about the parameter, 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?

Starts with a specific verb and resource: 'Read exact track, Group, Return or Main panning mode and Stereo/left/right native values, displays, bounds, enablement and automation,' which tells an agent exactly what data this returns. The 'Read' framing implicitly contrasts with the set_mixer_panning sibling, but no sibling is named, so differentiation is left to inference.

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 get_track_mixer, get_set_mixer, or set_mixer_panning — the agent must infer from the name and the 'Read-only' phrase. No prerequisites or exclusions are given, so the nearest thing to guidance is the optional catch-all 'All profile.'

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

get_nks_generation_jobA
Read-onlyIdempotent

Read one durable NKS generation job and its ordered event history without creating or changing the queue.

NameRequiredDescriptionDefault
presetIdYesNKS catalog preset ID.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/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 scope, so the safety profile is covered. The description adds that the read returns an 'ordered event history' and reiterates that the queue is untouched, which is modest value beyond the structured hints. No mention of pagination, retention, or error behavior for a missing job.

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

Conciseness5/5

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

One sentence, front-loaded with the verb and resource, with the no-side-effects guarantee appended. Nothing is wasted and nothing is 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?

An output schema exists, so the description need not explain return values, and it sensibly states that event history is included. The remaining gap is how the read relates to its closest sibling (get_nks_generation_status) and why a job is keyed by presetId, both left to inference.

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 there is only one parameter, so the schema fully documents presetId. The description adds no format or identity semantics beyond it — notably it never clarifies that a single job is addressed by presetId, which is the least obvious part of the call.

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+resource: 'Read one durable NKS generation job and its ordered event history.' It distinguishes the single-job read from the queue-mutating siblings by emphasizing 'one' job and the read-only posture, though it never explicitly names get_nks_generation_status as the alternative view.

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: 'without creating or changing the queue' signals this is the safe inspection call relative to enqueue/claim/fail/complete siblings. There is no explicit statement of when to prefer this over get_nks_generation_status or the context tools, so the agent must infer the choice.

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

get_nks_generation_statusA
Read-onlyIdempotent

Read discovered preset and durable job counts for one product. Serum 2 and Omnisphere also report pilot size, validated count, gate state, queueable factory count (including already queued presets), remaining discovered pilot IDs, and unqueued discovered pilot IDs without a durable job. Does not create a queue or contact Live.

NameRequiredDescriptionDefault
productSlugYesExact product slug.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

While annotations cover safety (`readOnlyHint: true`), the description provides valuable functional context regarding the data returned (e.g., 'queueable factory count', 'remaining discovered pilot IDs'). Furthermore, explicitly stating that it does not contact Live adds a necessary behavioral boundary not found in the schema or hints.

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 highly efficient, using two concise sentences to define the primary function, list the breadth of the data, and set critical operational boundaries. Every word contributes necessary functional information.

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 that the tool is a status checker and provides a detailed enumeration of the specific data categories and fields it returns, the description is complete enough for an AI agent to confidently determine if this tool can satisfy a request for a status update on an NKS generation job.

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?

With schema description coverage at 100% and only one required parameter, the baseline score of 3 is appropriate. The description simply reinforces the requirement that the status is retrieved 'for one product,' which is already captured by the parameter description.

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 clearly states the tool's purpose is to 'Read discovered preset and durable job counts' for a single product. It distinguishes its scope by listing specific metrics (pilot size, validated count, etc.) and naming specific product lines (Serum 2 and Omnisphere), allowing agents to precisely match user intent.

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?

It provides crucial usage guidance by explicitly stating what the tool does not do: 'Does not create a queue or contact Live.' This immediately prevents the agent from invoking the tool when the user intends to start a process or interact with the live environment.

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

get_parameter_automation_contextA
Read-onlyIdempotent

Read discoverable device parameters or mixer controls and native automation handoff support on an exact track, Group, Return or Main. Omit parameterId to list, supply one observed ID for a target read. Unsupported controls remain explicit. Read-only; all profile.

NameRequiredDescriptionDefault
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.
deviceIdNoID from list_devices.
parameterIdNoObserved parameter-N for a device, or a mixer control ID from this read. Omit deviceId for mixer controls.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description adds a real behavioral trait: unsupported controls are surfaced explicitly rather than silently dropped, so the agent knows to expect negative results in the payload. The trailing 'all profile' is opaque jargon that conveys no usable 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 verb and scope are front-loaded, and the mode rule follows immediately with no filler. The closing fragment 'Read-only; all profile' is redundant with readOnlyHint and partially unintelligible, costing a perfect 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 a complete schema, full annotations, and an output schema, the description only needs to convey scope, mode selection, and safety; it does all three. Return values are covered by the output schema, so no further detail is owed.

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 a mode semantic the schema does not state: omitting parameterId switches to list mode versus supplying an 'observed' ID for a target read. This correctly signals that a prior read is required to obtain a valid ID, which the schema only implies with 'Observed parameter-N'.

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 ('Read') with specific resources: discoverable device parameters, mixer controls, and native automation handoff support, scoped to an exact track/Group/Return/Main. It is distinguishable in substance, but it never names the closely related siblings (list_device_parameters, get_selected_parameter_context, get_automation_capabilities), leaving the agent to disambiguate by inference.

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?

'Omit parameterId to list, supply one observed ID for a target read' gives clear mode selection for the two call shapes. However, there is no guidance on when to choose this tool over list_device_parameters or get_selected_parameter_context, nor any prerequisite ordering for obtaining observed IDs.

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

get_plugin_integration_contextA
Read-onlyIdempotent

Inspect loaded Serum 2/Omnisphere/VPS Avenger: installed variants, controls, NKS counts, browser limits and Live UI save/User Library load. Loading in Live does not verify hidden plug-in state.

NameRequiredDescriptionDefault
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.
deviceIdYesID from list_devices.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/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, closed-world behavior. The description adds meaningful context about which plugin integration details are inspected and warns that Live loading alone does not verify hidden plug-in state, though it does not discuss 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.

Conciseness4/5

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

Two tightly packed sentences front-load the inspection purpose and follow with a useful caveat. The colon-delimited list is efficient, though some entries are dense.

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 an output schema, complete parameter descriptions, and read-only annotations, the description only needs to convey scope and key caveats. It does that well, but it could better connect the tool to sibling device-inspection tools.

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 trackId and deviceId are already documented in the input schema. The description does not add any parameter-level meaning beyond the schema, which meets the baseline 3 for high-coverage schemas.

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 read/inspection action for loaded Serum 2, Omnisphere, and VPS Avenger and names the details exposed (variants, controls, NKS counts, browser limits, UI save/User Library load). It is clearly narrower than generic device tools, though it never names a sibling tool for comparison.

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 caveat that loading in Live does not verify hidden plug-in state implies this tool should be used to inspect that hidden state, giving some usage context. However, it provides no explicit 'use this when...' guidance or alternatives such as get_device_hierarchy or list_devices.

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

get_presetB
Read-onlyIdempotent

Read one exact NKS preset catalog record.

NameRequiredDescriptionDefault
presetIdYesNKS catalog preset ID.

Output Schema

NameRequiredDescription

No output parameters

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, non-destructive and closed-world, so the safety profile is fully covered. The description only adds the 'exact record' framing, with nothing about behaviour for a missing or unknown presetId; with annotations doing the heavy lifting, a 3 is appropriate.

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

Conciseness4/5

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

One short front-loaded sentence with zero waste. It is efficient, though the brevity leaves it close to under-specified rather than maximally informative.

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 documented parameter, an output schema and full annotations, the essential calling information is present. What is missing is the relationship to sibling read tools and any not-found/error behaviour, which an agent would need to route 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 presetId parameter is already documented as 'NKS catalog preset ID'. The description's 'exact' wording reinforces that this is a precise identifier match rather than a pattern, but adds no format or constraint 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?

States a specific verb ('Read') and resource ('NKS preset catalog record') scoped to a single item, and the word 'exact' signals a direct ID lookup rather than a query. It does not name the neighbouring read tools (search_presets, get_preset_metadata) explicitly, so differentiation still takes some inference.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no mention of alternatives such as search_presets for discovery or get_preset_metadata for the metadata view. The agent must infer the routing from the sibling names alone.

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

get_preset_metadataA
Read-onlyIdempotent

Read user tags, favorite state, and revision for one preset.

NameRequiredDescriptionDefault
presetIdYesNKS catalog preset ID.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/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. The description adds useful context by naming the specific metadata fields returned, which helps the agent understand the read's output beyond the schema.

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 states the action, the returned fields, and the scope. There is no wasted wording.

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?

The tool is simple: one required parameter, full schema coverage, annotations covering safety, and an output schema. The description is sufficient for correct invocation, though a brief note distinguishing it from get_preset would make it fully complete.

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

Parameters3/5

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

Schema description coverage is 100%, with presetId documented as an 'NKS catalog preset ID.' The description adds only 'for one preset,' which does not add meaning beyond the schema. Baseline 3 is appropriate when the schema fully documents the sole 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?

The description uses a specific verb ('Read') and names the exact metadata fields returned (user tags, favorite state, revision) for a single preset. This clearly distinguishes it from a broader preset read, though it does not explicitly name sibling tools like get_preset or set_preset_metadata.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use this tool versus get_preset, set_preset_metadata, or search_presets. The phrase 'for one preset' implies a single-item scope, but no alternatives or exclusions are mentioned.

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

get_producer_chain_blueprintB
Read-onlyIdempotent

Return one ordered factory-device chain or shared-bus topology with exact browser paths, stage roles, execution tools, and explicit limitations.

NameRequiredDescriptionDefault
targetYesExact blueprint ID returned by list_producer_chain_blueprints.

Output Schema

NameRequiredDescription

No output parameters

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, non-destructive, closed-world, so the safety profile is covered. The description adds the content shape (ordered chain, stage roles, execution tools, limitations), but says nothing about failure behavior for an unknown target ID or whether 'explicit limitations' means caveats about the blueprint versus unsupported targets.

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, front-loaded sentence with no filler and the object of the return stated up front. It is slightly overloaded by enumerating four payload facets, 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-param lookup with a full output schema and complete annotations, the description covers enough to invoke it, but it leaves the agent without routing guidance among the several closely named producer-chain/inspect siblings, which is the main remaining risk.

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 enum parameter is fully documented as 'Exact blueprint ID returned by list_producer_chain_blueprints'. The description supplies no additional parameter meaning, 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 ('Return') and resource ('one ordered factory-device chain or shared-bus topology') are stated, along with what the payload contains (browser paths, stage roles, execution tools, limitations). It is clear what the tool produces, though it never names the sibling list_producer_chain_blueprints that produces the IDs, so the enumeration-vs-single-fetch distinction is only implied by the verb.

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, when-not-to-use, or alternatives are given. Nothing tells the agent to call list_producer_chain_blueprints first or how this differs from inspect_producer_chain / inspect_producer_bus, which sit adjacent in the sibling list and sound like overlapping read tools.

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

get_producer_workflowA
Read-onlyIdempotent

Find workflow references by optional keyword query (default 5 results, maximum 20), list all, or retrieve one exact workflow with named string arguments. Search matches metadata words/prefixes and may return partial matches. Does not call Live or execute work. Available in all and producer profiles.

NameRequiredDescriptionDefault
limitNoSearch result limit; requires query.
queryNoSearch names, descriptions and argument descriptions; omit workflow and arguments.
workflowNo
argumentsNoNamed prompt arguments from listing, such as request, mode or setPath.

Output Schema

NameRequiredDescription

No output parameters

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-destructive, and closed-world behavior, so the description is not carrying the safety burden. It still adds real value beyond them: 'Does not call Live or execute work' clarifies that workflows are references, not executions, and 'Available in all and producer profiles' plus 'Search matches metadata words/prefixes and may return partial matches' disclose availability and result-fuzziness that annotations do not cover.

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 mode detail, then behavioral caveats and availability. It is dense but each clause contributes (modes, limits, matching semantics, non-execution, profile availability); the sentence is long and slightly run-on but no filler is present.

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?

An output schema exists, so return-value description is not required, and the definition covers the remaining decision points: which mode, the limit bounds, that search is fuzzy, and that this is a pure lookup with no Live call. The only soft spot is the arguments object, where the agent must infer from 'named string arguments' and the schema's 'from listing' note that a listing call is the prerequisite.

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%, and the description compensates meaningfully: it gives the default result count (5) and ceiling (20) for limit, which the schema states only as a maximum, and it explains that query hits metadata words and prefixes with possible partial matches, which shapes how an agent interprets results. It adds little on the nested arguments object beyond the schema's own 'named prompt arguments from listing' note, but overall it goes beyond structured 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?

The description opens with a specific verb+resource ('Find workflow references') and enumerates the three operating modes: keyword search, list all, and exact retrieval by name. It does not name any sibling tool, so an agent must infer that this is distinct from tools like list_producer_chain_blueprints or get_producer_chain_blueprint, but the resource 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 Guidelines4/5

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

It clearly implies the mode-selection rule: supply a query to search (default 5, max 20), omit it to list everything, or name a workflow plus arguments to retrieve one exact entry. What is missing is any explicit exclusion or pointer to an alternative tool for adjacent needs, so the routing guidance is strong internally but silent about siblings.

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

get_production_contextA

Capture consistent Live selection and musical context in a persistent private artifact; return a bounded overview and contextRef. No model call or Live edit.

NameRequiredDescriptionDefault
projectIdYesPrivate project namespace.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

The annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=false, and the description adds meaningful context: it writes to a persistent private artifact, returns a bounded overview plus contextRef, and explicitly performs no model call and no Live edit. It does not clarify artifact lifetime or whether repeated calls replace versus create separate artifacts, but the core side-effect profile is well covered.

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

Conciseness5/5

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

The description is two tight sentences: the main capture-and-return behavior is front-loaded, and the second sentence efficiently rules out model calls and Live edits. Every clause carries relevant 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 an output schema present, the description need not explain return values, and the single documented parameter plus rich annotations mean the call mechanics are clear. It leaves some ambiguity about when to use this versus sibling context tools and how long the private artifact persists, but it is otherwise sufficient for correct invocation.

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?

There is only one parameter, projectId, and the schema already documents it as the private project namespace at 100% description coverage. The description adds no syntax or format detail beyond what the schema provides, 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 states a specific action and resource: capture Live selection and musical context into a persistent private artifact, then return an overview and contextRef. It clearly distinguishes itself from tools that edit Live or invoke a model, but does not explicitly differentiate from other context-getter siblings such as get_selection_context or get_song_musical_context.

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 need for a persistent private artifact of consistent selection plus musical context, rather than stated as an explicit when-to-use rule. No alternatives or exclusions are named, so an agent must infer when this is preferable to another context tool.

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

get_production_sessionA
Read-onlyIdempotent

Read a bounded durable session summary, or list up to twenty sessions in this project when sessionId is omitted. Does not refresh Live; use advance action resume before continuing.

NameRequiredDescriptionDefault
offsetNo
projectIdYesPrivate project namespace.
sessionIdNoDurable session ID returned by start_production_session.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already cover the read-only/idempotent profile, and the description adds real context beyond them: results are a 'bounded' summary, listing is capped at twenty, and the call explicitly does not refresh Live state. That last constraint is exactly the kind of behavioral fact an agent needs. It still doesn't say what 'bounded' means numerically.

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, front-loaded with the primary read behavior and mode switch; nothing is padded. The trailing 'advance action resume' phrasing is dense and slightly ambiguous, costing a point.

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?

An output schema exists, so return shapes need no explanation, and annotations carry the safety profile. What's missing is any treatment of offset/pagination and a clean pointer to the refresh flow, but for a read tool this is close to complete.

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

Parameters3/5

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

Schema coverage is 67% and the description usefully explains that sessionId is optional and switches the tool into list mode, which the schema alone doesn't convey. The offset parameter is undocumented in both places, so pagination semantics remain 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 pair (read/list) on a specific resource (bounded durable session summary) and makes the two modes explicit via the sessionId condition. It stops short of naming siblings like start_production_session or advance_production_session, so an agent must infer the boundary from those tools' own descriptions.

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?

Gives one clear selection rule: omit sessionId to list up to twenty sessions, supply it to read a summary. The 'does not refresh Live; use advance action resume before continuing' line hints at an alternative but is phrased obliquely, leaving the agent to guess that advance_production_session with action=resume is meant.

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

get_project_mediaA
Read-onlyIdempotent

Inspect saved Live 12 sample references and file contents in the current Project. Reports missing, ambiguous and external samples; distinguishes the saved snapshot from unsaved Live edits. Does not certify plug-in libraries, licenses, Max dependencies or other Sets. Requires macOS English Live for native clean-state observation.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already declare read-only, idempotent, non-destructive behavior, but the description adds genuinely new context: what it reports (missing, ambiguous, external samples), the snapshot-vs-unsaved-edits distinction, and the platform/environment requirement for clean-state observation. These are behavioral traits the structured fields do not convey.

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

Conciseness4/5

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

Four tight sentences, front-loaded with the core action and followed by report scope, exclusions, and environment requirement. Each sentence carries distinct information, though the platform caveat could be tightened.

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 an output schema present, return values need not be spelled out, and the description covers the remaining gaps an agent needs: what the inspection surfaces, its limitations, and the environment precondition. Nothing required 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?

The tool takes no parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The description correctly implies operation against the current Project without introducing phantom 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 (Inspect) and resource (saved Live 12 sample references and file contents in the current Project), with scope clearly bounded to the saved snapshot rather than unsaved edits. It is distinguishable from write-oriented siblings, though it does not explicitly name the adjacent collect_project_media to contrast 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 Guidelines4/5

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

Gives a clear when-not boundary ("Does not certify plug-in libraries, licenses, Max dependencies or other Sets") and a prerequisite ("Requires macOS English Live"). It lacks an explicit pointer to the alternative tool (e.g., collect_project_media) for when collection rather than inspection is wanted.

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

get_rack_performance_contextA
Read-onlyIdempotent

Read one native snapshot of visible rack macros, exact mapped descendant parameters, ranges, current values, automation and variation count/index. Unresolved mappings and unknown layouts are explicit. Saved variation contents and audible results are unavailable.

NameRequiredDescriptionDefault
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.
deviceIdYesID from list_devices.

Output Schema

NameRequiredDescription

No output parameters

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 description is free to add semantics, which it does: unresolved mappings and unknown layouts are reported explicitly, and it declares the boundaries (variation contents and audible results unavailable). These are useful behavioral disclosures beyond the structured hints, though return shape detail is left to the 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.

Conciseness5/5

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

Two dense sentences with the read verb and scope front-loaded, followed by boundary conditions. No filler; 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 a 2-param schema at full coverage, an output schema present, and read-only annotations, the description only needs to frame scope and boundaries, which it does. It is essentially complete for an agent to call correctly, with minor room for explicit when-to-use guidance.

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 two required params (trackId, deviceId) are documented with precise accepted value forms in the schema. The description adds no parameter-level detail, 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 a specific verb and resource ('Read one native snapshot of visible rack macros, exact mapped descendant parameters, ranges, current values, automation and variation count/index'). An agent can tell it reads rack macro state rather than mutating it, though it does not name rack siblings such as recall_rack_macro_variation directly.

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 is the read-side companion to the rack macro mapping/variation tools, and the 'Saved variation contents ... unavailable' line hints at what it cannot do. However, there is no explicit when-to-use trigger or named alternative, leaving routing to inference.

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

get_return_routingA
Read-onlyIdempotent

Read the exact output destination and available choices of one Return Track without changing routing, selection or playback. Reports unavailable native properties explicitly; send pre/post mode is not exposed.

NameRequiredDescriptionDefault
returnTrackIdYesCanonical return-N ID from get_set_mixer.

Output Schema

NameRequiredDescription

No output parameters

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 and closed-world, so the description adds real value beyond them: it discloses that unavailable native properties are reported explicitly and that send pre/post mode is not exposed. That caveat heads off an agent assuming an incomplete payload is an error.

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 zero waste. The read-only guarantee is front-loaded, and the payload caveat follows it in one compact 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?

With an output schema present, the description need not explain return values, and it covers the main behavioral surprises (non-mutating, explicit unavailability reporting, missing pre/post mode). What remains thin is guidance on its relationship to other routing readers, 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?

There is a single parameter with 100% schema description coverage; the schema already says it takes the canonical return-N ID from get_set_mixer. The description adds no further format or validation detail, 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 ('read') and a precisely scoped resource: the output destination and available choices of one Return Track. It separates itself from mutation siblings like set_return_mixer and set_track_routing by emphasizing that no routing, selection or playback changes occur, though it never names an alternative read tool (e.g. get_track_routing) directly.

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 read-only framing implies when to use it, and the scope is limited to a single return track, but there are no explicit when/when-not statements or references to sibling tools for regular tracks or for changing routing. Usage is inferable rather than stated.

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

get_scene_launch_contextA
Read-onlyIdempotent

Preview an exact Session scene in one native read: every track/slot, clip/stop/Group actions, arms, recording risks, current playback and global/scene musical context. Preserves selection and playback. Launch metadata only; no audible or follow-action prediction. All profile.

NameRequiredDescriptionDefault
sceneIdYesID from list_scenes.

Output Schema

NameRequiredDescription

No output 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. The description adds value beyond them by stating the operation 'Preserves selection and playback' (a side-effect guarantee the annotations do not express) and by scoping the result to launch metadata with no audible or follow-action prediction. 'All profile' is left unexplained.

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?

Front-loaded with the core verb and compact at two sentences, but the token-dense enumeration and the cryptic fragment 'All profile' cost clarity. Some listed items (arms, recording risks, playback) could be compressed into a cleaner phrase.

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 an output schema present, the description need not detail return values, and it still sketches the returned content well enough to set expectations. The unexplained 'All profile' scope marker and absent preconditions (e.g., session must be open) are the main residual 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?

Single parameter with 100% schema description coverage ('ID from list_scenes.'), so the schema carries the meaning. The description adds nothing about sceneId format or sourcing, making the 3 baseline 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?

Specific verb and resource: 'Preview an exact Session scene in one native read', followed by an enumeration of what the read covers (tracks/slots, clip/stop/Group actions, arms, recording risks, playback, musical context). It is clearly a preview/read, distinguishable from the sibling launch_scene which actually launches. Dense jargon ('Group actions', 'All profile') slightly dulls precision.

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: that this is a pre-launch preview, and the negative boundary 'Launch metadata only; no audible or follow-action prediction' tells the agent what it will not get. No sibling is named and no explicit 'use this before launch_scene' routing is given.

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

get_selected_parameter_contextA
Read-onlyIdempotent

Resolve Live’s selected native device or track/Return/Main mixer parameter without changing focus. Includes exact target IDs, control bounds/display/automation and selection token. None, unavailable and unresolved are distinct; chain mixers and hidden controls are unresolved. All profile.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/no-destructive, so the bar is lower, and the description still adds real value: focus is preserved, the return payload includes target IDs, bounds, display, automation and a selection token, and the None/unavailable/unresolved states are explicitly separated. Chain mixers and hidden controls being 'unresolved' is a concrete behavioral caveat 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.

Conciseness3/5

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

Front-loaded and compact, with the verb and scope in the first clause. However, the trailing fragment 'All profile.' is cryptic and the semicolon-chained status sentence is dense; a little of the terseness costs clarity rather than saving it.

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 parameters, a rich annotation block and an output schema that carries the return shape, so the description only needs to convey semantics and edge cases — which it does via the distinct resolution states. The vague 'All profile.' phrase is the one loose end.

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 description correctly focuses its words on the resolved target rather than inventing parameter guidance.

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+resource: resolve Live's currently selected native device or track/Return/Main mixer parameter, and qualifies it with 'without changing focus'. This distinguishes it clearly from the mutating sibling set_selected_parameter, though it never names any 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: 'without changing focus' signals this is the read-side counterpart to set_selected_parameter, but the description never says when to prefer it over get_parameter_automation_context or get_selection_context. There are no explicit exclusions or alternative routing.

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

get_selection_contextA
Read-onlyIdempotent

Read selected track/scene/device, displayed clip and highlighted slot together without changing focus. Null is unresolved; clip and slot can differ.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

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, but the description adds two things they don't: the guarantee that focus is not modified, and the null-is-unresolved semantics plus the caveat that clip and slot can diverge. That is genuine behavioral context for interpreting results.

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

Conciseness4/5

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

Two tight sentences with no filler; the scope of what is read comes first and the null/divergence caveat follows. Dense but occasionally telegraphic ('Null is unresolved' reads clipped), which costs a point.

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 an output schema present, return values needn't be described, and the description still warns about nulls and clip/slot divergence — exactly the interpretation traps an agent would hit. Nothing essential is missing for a zero-argument 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?

Zero parameters, so there is nothing to document and no schema gap to compensate for; baseline 4 applies. The description correctly spends none of its words on inputs.

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

Purpose4/5

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

States a concrete verb (read) plus the exact resources it returns: selected track/scene/device, displayed clip, highlighted slot, all at once. It distinguishes itself from other readers by the 'without changing focus' clause. Slight ambiguity remains about whether these are returned as a single composed snapshot or independently.

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 'without changing focus' phrasing implies this is the safe, side-effect-free way to inspect current selection versus tools that select or show objects (e.g. show_live_object, set_selected_parameter), but no sibling is named and no when-not condition is given. Usage is only inferable, not stated.

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

get_session_arrangement_recordingA
Read-onlyIdempotent

Read a retained Session-to-Arrangement recording or list handles after reconnect. Without an ID also reads current controls, native barPosition and all Arrangement clip metadata, up to 8192 clips, with appendAfterBeats for preparation. Reports native recording/stop observations, captured clip metadata, preservation limits and inspection errors. Runtime handles are not saved in the Set. No focus or playback changes; all profile.

NameRequiredDescriptionDefault
recordingIdNoRuntime recording ID; omit to list handles and preparation context.

Output Schema

NameRequiredDescription

No output parameters

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, closed-world behavior. The description adds useful context beyond that: 8192-clip limit, appendAfterBeats preparation, reported preservation limits and inspection errors, runtime handles not saved in the Set, and no focus or playback changes. 'All profile' is vague, but the overall behavioral disclosure 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?

The description is front-loaded with the main action and then layers in behavioral details efficiently. It is slightly dense and ends with the unclear phrase 'all profile', but most sentences earn their place and there is no redundant 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?

Given a single optional parameter, rich annotations, and an existing output schema, the description provides sufficient context for correct invocation. It explains the ID-omission behavior, clip limits, preservation reporting, and absence of side effects, though the meaning of 'all profile' remains opaque.

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 parameter is already documented. The description adds meaning by explaining the two modes: providing a recordingId reads a retained recording, while omitting it lists handles and also reads current controls, barPosition, and Arrangement clip metadata. That goes beyond the schema's brief parameter note.

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 ('Read') and resource ('retained Session-to-Arrangement recording'), and it clearly describes the dual list/read behavior. It does not explicitly distinguish itself from related siblings like record_session_arrangement or finish_session_arrangement_recording, but the purpose is unambiguous 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 Guidelines3/5

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

It implies when to use the tool ('after reconnect', 'for preparation') and explains the effect of omitting the ID, but it never states when to choose this tool over sibling inspection tools such as get_arrangement_take. The 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.

get_session_clip_holdA
Read-onlyIdempotent

Read one retained Session clip hold, or list holds after a lost response. Reports press/release command receipts, current native clip IDs, playback snapshots and cleanup errors. No input or playback changes. Runtime state may disappear after reload; missing handles do not prove release. All profile.

NameRequiredDescriptionDefault
holdIdNoRetained hold ID; omit to list.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior5/5

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

Goes well beyond the readOnly/idempotent annotations: it enumerates what the response carries (press/release command receipts, native clip IDs, playback snapshots, cleanup errors) and, critically, discloses two non-obvious caveats — runtime state may vanish on reload, and a missing handle does not prove release. That last point prevents a serious false inference by the agent.

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 verb+resource and the list-mode trigger; each sentence carries distinct information (capability, read-only guarantee, caveats). 'All profile' is an opaque trailing fragment that costs a little clarity.

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?

An output schema exists, so return values need no further explanation, and the description still summarizes payload contents plus retention caveats. The only residual gap is the unexplained 'All profile' scope phrase.

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 says 'omit to list', so the description's 'Read one ... or list holds' only restates the schema-supported behavior. Baseline 3 is appropriate when a single optional parameter is fully documented in 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 ('Read one retained Session clip hold') and adds the dual mode (single read vs. list). It does not name the sibling write tools (hold_session_clip / finish_session_clip_hold), so differentiation is implied by 'Read' and 'No input or playback changes' rather than explicit.

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?

'or list holds after a lost response' gives a concrete trigger for the list mode (idempotent recovery after a failed call), and 'No input or playback changes' implicitly steers away from the mutating siblings. No explicit when-not or named alternatives, 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.

get_session_midi_overdub_contextA
Read-onlyIdempotent

Read readiness and identity of one already playing Session MIDI loop for interactive overdub. Requires an armed unfrozen target, other explicit/implicit arms off, no pending launches, Arrangement recording/count-in/automation arm off. Binds input, timing, musical controls and initial note digest; incoming notes are excluded while recording. No focus or playback changes. Updated bridge; all profile.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
trackIdYesID from list_tracks.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/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. The description adds meaningful context beyond those: it enumerates the exact state preconditions, notes that incoming notes are excluded while recording, and states there are no focus or playback changes. That is valuable operational detail for a context-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 purpose is front-loaded, but the prose is dense with unexplained internal jargon such as 'Updated bridge; all profile,' which adds noise rather than clarity. The precondition list is useful but could be more cleanly structured.

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?

An output schema exists, so the description need not explain return values. It covers prerequisites, non-effects, and note-exclusion behavior, which is sufficient for an agent to call this read-only context getter correctly. Only minor gaps remain around failure behavior and sibling differentiation.

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 (trackId, clipId) are documented in the input schema. The description adds no additional meaning about parameter formats or selection criteria, 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 read operation: readiness and identity of an already-playing Session MIDI loop for overdub. It is distinguishable from mutation siblings like set_session_midi_overdub, but it never names the alternative or clarifies how it differs from related context getters such as get_session_clip_hold.

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 preconditions (armed unfrozen target, other arms off, no pending launches, no arrangement recording/count-in/automation arm) imply this is a preflight check before interactive overdub. However, it does not explicitly say when to call this versus alternatives or what to do if the checks fail, leaving usage partly inferred.

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

get_session_orientationB
Read-onlyIdempotent

Read Set, recording, selection, clip and instruments together; configured scale and ambiguous MIDI evidence. No edits, playback or focus changes.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output 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, idempotentHint=true, and openWorldHint=false. The description adds specific non-effects ('no playback or focus changes'), but 'No edits' largely repeats the read-only annotation and no further behavioral details are provided.

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 short and front-loads the read operation, with no wasted sentences. Its compressed phrasing, especially 'ambiguous MIDI evidence,' makes it slightly cryptic, but it remains appropriately sized.

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?

An output schema exists, so return values need not be explained, and the annotations cover safety. However, for a no-parameter aggregate read amid many sibling context tools, the description leaves key selection context and the meaning of 'ambiguous MIDI evidence' insufficiently clear.

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

Parameters4/5

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

The tool has zero parameters, so there are no parameter semantics for the description to clarify. Per the baseline for zero-parameter tools, a 4 is appropriate.

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 names a read operation over several session domains (Set, recording, selection, clip, instruments), but the phrase 'ambiguous MIDI evidence' is opaque and the overall purpose is not clearly framed as a single session-orientation snapshot. It does not explicitly distinguish this aggregate read from nearby context tools such as get_live_state or get_selection_context.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives, despite many sibling context/read tools. The only boundary given is 'No edits, playback or focus changes,' which describes non-effects rather than usage selection criteria.

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

get_set_mixerA
Read-onlyIdempotent

Read master and return-bus mixer levels, sends, and routing from the current Live Set.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output 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, idempotentHint, non-destructive, and closed-world behavior, so the safety profile is covered. The description adds useful specifics about what is read: master and return-bus levels, sends, and routing from the current Live Set. A lower score is not warranted because it does not contradict annotations and it adds meaningful scope beyond 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?

The description is a single, front-loaded sentence with no wasted words. It states the action, scope, and relevant mixer data 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?

Given zero parameters, rich read-only/idempotent annotations, and an output schema, the description provides enough context to call the tool correctly. It could be slightly more complete by explicitly stating that this reads all return buses and the master bus rather than a single track, but the core information is present.

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 the baseline is 4. Schema coverage is 100% and there are no parameters to document, so no compensation in the description 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 uses a specific verb plus resource ('Read master and return-bus mixer levels, sends, and routing') and scopes it to the current Live Set. It distinguishes this from track-level mixer reads implied by siblings like get_track_mixer, though it does not explicitly name that sibling.

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?

Read-only usage is implied by 'Read', but there is no explicit when-to-use vs when-not-to-use guidance or named alternatives such as get_track_mixer, set_master_mixer, or set_return_mixer. The scope is clear enough that an agent can infer this is for reading the master/return bus, not modifying it.

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

get_simpler_sample_stateB
Read-onlyIdempotent

Read one existing Simpler, including nested racks: path, length/start-end markers/slices in sample frames, rate in Hz, native warp/slicing controls, playback mode, parameters and edit context. No edits. All profile; requires updated bridge.

NameRequiredDescriptionDefault
trackIdYesID from list_tracks.
deviceIdYesID from list_devices.

Output Schema

NameRequiredDescription

No output parameters

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, so 'No edits' is largely redundant. The genuinely new disclosure is the precondition 'requires updated bridge' plus the note that nested rack state is included — useful, but cryptic ('All profile') and lacks any mention of what happens if the bridge is stale.

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 target, followed by a compact inventory of returned fields. The field list is dense but every item clarifies scope of the read; only 'All profile' is wasted/opaque phrasing.

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

Completeness3/5

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

An output schema exists, so return detail is optional; the description nonetheless sketches it. What's missing is the operational context an agent needs to sequence this correctly against its many mutation siblings and to diagnose the 'updated bridge' requirement.

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 required parameters (trackId, deviceId) are documented with their source list tools. The description adds no addressing or scoping guidance beyond what the schema supplies, 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?

Opens with a specific verb and resource: 'Read one existing Simpler, including nested racks,' then enumerates exactly what state is returned (path, markers, slices, rate, warp controls, playback mode, parameters). That distinguishes it reasonably from the set_/load_ Simpler siblings, though it never names 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?

'No edits' implicitly positions this as the read counterpart to load_simpler_sample / set_simpler_sample_region / set_simpler_manual_slices, but no explicit when-to-use or ordering guidance is given (e.g., read before you edit). Usage is inferable rather than stated.

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

get_song_grid_referenceB
Read-onlyIdempotent

Read a meter/tempo-aware bar of straight 16ths and eighth/sixteenth triplets, downbeats/offbeats and advisory 4/4 genre placements. Read-only.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior3/5

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

The annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the trailing 'Read-only' repeats structured data and earns no credit. The description does add some value by labeling the genre placements 'advisory' (non-authoritative) and the grid 'meter/tempo-aware', implying output adapts to the song's tempo and meter.

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 filler, though the dense noun-stacking ('meter/tempo-aware bar of straight 16ths and eighth/sixteenth triplets') hurts readability slightly.

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 an output schema present, the description does not need to explain return values, and annotations cover the safety profile. What remains missing is any routing guidance for an agent surrounded by dozens of other 'get_*_context/reference' siblings, which is the main completeness 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 schema imposes no semantic burden and the baseline is 4. There is nothing for the description to compensate for on this dimension.

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 'Read' and the resource 'song grid reference' (from the name) are present, and the description sketches the returned content (16ths, triplets, downbeats/offbeats). However, the phrasing 'meter/tempo-aware bar' and 'advisory 4/4 genre placements' is jargon-heavy and hard to parse, and it never distinguishes this from siblings like get_song_musical_context or get_live_scale_reference.

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 statement, no prerequisites, and no named alternative among the many context/reference siblings. 'Advisory 4/4 genre placements' hints at a use case but does not tell an agent when to reach for this tool versus the other reference tools.

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

get_song_musical_contextA
Read-onlyIdempotent

Read key, scale, time signature, quantization, groove, swing, and Arrangement loop context.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output 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, idempotentHint, openWorldHint=false and destructiveHint=false, so the safety profile is fully covered. The description's only added value is enumerating which fields are retrievable, but with an output schema present even that is largely redundant.

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

Conciseness5/5

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

A single front-loaded sentence with no filler; every listed field earns its place and nothing is repeated.

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 an output schema covering return values and annotations covering safety, the description needs only to scope the read, which it does. It could be a notch stronger by noting that this reflects song-level (not clip-level) settings and that clip groove context lives in get_clip_groove_context.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4. The description correctly implies a parameterless global read of the song's musical settings, with nothing to clarify further.

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 ('Read') and enumerates the exact musical-context fields returned: key, scale, time signature, quantization, groove, swing, and Arrangement loop context. An agent can tell it apart from the setter sibling set_song_musical_context by the 'Read' verb, 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 only implied — reading song musical context is presumably a precursor to set_song_musical_context or to planning scale/grid operations, but the description does not say so or name any alternative. No exclusions or preconditions are given.

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

get_take_lane_audition_contextA
Read-onlyIdempotent

Read native take inventory and currently exposed macOS English Live audition checkboxes without changing view, focus or playback. Hidden lanes have unknown audition state. Requires a saved Set with native document identity, one Live instance and an updated bridge; all profile.

NameRequiredDescriptionDefault
trackIdYesID from list_tracks.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

Although annotations already mark it read-only and idempotent, the description adds meaningful behavioral context: no view/focus/playback changes, hidden-lane uncertainty, and prerequisites around saved Set identity, Live instance count, and bridge version. That is useful beyond the structured annotations.

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 short and front-loads the core read operation, then follows with caveats and prerequisites. The phrase 'all profile' is slightly cryptic, but overall it is efficient.

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 context getter with rich annotations and an output schema, the description covers purpose, side-effect constraints, hidden-lane limitations, and environment prerequisites. It does not explain return values, but the output schema does that.

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 is documented as an ID from list_tracks. The description adds no further parameter detail, which is acceptable given full schema coverage but leaves the baseline score.

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 read operation: take inventory plus exposed Live audition checkbox state. It is clearly about audition context, though it does not explicitly differentiate itself from siblings like get_take_lane_context or select_take_lane_audition.

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

Usage Guidelines3/5

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

It implies safe read-only usage by saying it does not change view, focus, or playback, and it notes that hidden lanes have unknown audition state. However, it gives no explicit when-to-use guidance or comparison to alternative take-lane tools.

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

get_take_lane_contextA
Read-onlyIdempotent

Inspect one track take-lane inventory and optionally one complete stored take clip. Read-only; preserves focus. Selected MIDI reports up to 4096 notes; audio reports exposed source/timing controls. Does not expose comp selections, envelopes or rendered sound. All profile.

NameRequiredDescriptionDefault
trackIdYesID from list_tracks.
takeClipIdNoExact take clip ID from this inventory; omit for lane/clip summaries.

Output Schema

NameRequiredDescription

No output parameters

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 closed-world, so the bar is lower; the description still adds real value with the 4096-note MIDI cap, the audio source/timing control reporting, and 'preserves focus'. The explicit negative scope (no comp selections, envelopes or rendered sound) prevents false expectations. It stops short of describing truncation behavior when the note cap is 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?

Three tight sentences with the core purpose front-loaded and the exposure limits following logically. The trailing fragment 'All profile.' is ambiguous and spends a sentence's slot without conveying clear 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?

An output schema exists, so return-value explanation is not required, and the description complements it by defining what is exposed and what is deliberately omitted. A prerequisite such as whether take lanes must be visible on the track would have made it fully complete for a two-parameter read 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 100% and both parameters carry their own descriptions, including 'omit for lane/clip summaries' for takeClipId, so the schema does the heavy lifting. The description adds only that the clip returned is 'complete', which is marginal 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?

Specific verb 'Inspect' plus a precise dual resource: 'one track take-lane inventory and optionally one complete stored take clip'. It cleanly scopes what is and is not returned, though it never names the nearby siblings (get_take_lane_audition_context, show_take_lanes) to draw the boundary 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: 'optionally one complete stored take clip' hints at when to supply takeClipId, and the exclusions hint at what questions this tool cannot answer. There is no explicit when-to-use/when-not statement or pointer to an alternative tool.

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

get_track_arm_contextA
Read-onlyIdempotent

Read exact native track arm capability, input, all arm states and recording readiness without changing focus or controls. Explains refusals; all profile.

NameRequiredDescriptionDefault
trackIdYesID from list_tracks.

Output Schema

NameRequiredDescription

No output parameters

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 adds real value beyond them: it explicitly promises no focus or control changes and that it 'explains refusals' (i.e., surfaces reasons arm attempts would fail). That is meaningful behavioral context not present in 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.

Conciseness4/5

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

Two short sentences, front-loaded with the core action. The trailing 'all profile' fragment is vague and slightly undermines clarity, but overall there is minimal waste.

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?

An output schema exists, so return values need not be explained; the description covers scope, side-effect profile and refusal explanation. Adequate for a single-parameter read tool, though the meaning of the 'profile' portion is left unclear.

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

Parameters3/5

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

Only one parameter (trackId) and schema coverage is 100% with its own description pointing to list_tracks. The description adds no further semantics about the ID, 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 a specific verb+resource: reads native track arm capability, input, arm states and recording readiness for a track. Clearly distinguishable from the mutating sibling arm_track, though the phrasing 'all profile' is opaque.

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 'without changing focus or controls' implies this is a non-mutating inspection step before arming, but it never explicitly says when to call this vs arm_track or get_transport_recording_context. Usage is only implied.

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

get_track_freeze_stateA
Read-onlyIdempotent

Read one track native freeze state. A frozen flag does not prove saved state or audio equivalence.

NameRequiredDescriptionDefault
trackIdYesID from list_tracks.

Output Schema

NameRequiredDescription

No output 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/destructiveHint=false, so the safety profile is covered. The description adds real value beyond those flags with the caveat that a frozen flag does not prove saved state or audio equivalence — a substantive warning about how to interpret the returned value.

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: purpose first, interpretive caveat second. Nothing is redundant and nothing needs to be read twice.

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?

An output schema exists, so return-value shape need not be described, and annotations carry the safety profile. For a single-parameter read tool the description is nearly sufficient, with the only real gap being the lack of explicit contrast with set_track_freeze_state.

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 there is a single required trackId documented as 'ID from list_tracks.' The description adds no syntax, format, or sourcing detail beyond the schema, 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?

Names a specific verb ('Read') and resource ('one track native freeze state'), so the agent knows exactly what it retrieves. It does not, however, name or distinguish itself from the sibling set_track_freeze_state, which is the natural confuse-pair for a freeze-state tool.

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

Usage Guidelines3/5

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

Usage is implied by 'Read one track native freeze state' — query the current freeze status for a track. There is no explicit when-to-use, when-not-to-use, or pointer to alternatives such as set_track_freeze_state to change the state; the second sentence is an interpretation caveat rather than routing guidance.

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

get_track_grouping_statusA
Read-onlyIdempotent

Inspect a retained native grouping handle from a group_tracks plan, including after a lost reply. Resolves actual Group/member IDs, hierarchy, exposed material and controls. Read-only; does not repeat grouping or restore anything. Runtime handles can expire or disappear after bridge reload; missing handles require current-track inspection. All profile.

NameRequiredDescriptionDefault
groupingIdYesRetained groupingId from the plan or result.

Output Schema

NameRequiredDescription

No output 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/destructiveHint, but the description adds real context beyond them: handles can expire or disappear after a bridge reload and missing handles must fall back to current-track inspection. It also clarifies the negative space ("does not repeat grouping or restore anything"), useful for a status tool that could be mistaken for an action.

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?

Front-loaded with the core purpose in sentence one, and most sentences carry information. However it is dense internal jargon and the trailing "All profile" is unexplained, slightly undermining clarity without adding obvious 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?

An output schema exists so return values need not be restated, and annotations cover the safety profile; the description supplies the missing behavioral nuance (expiry, fallback, non-restorative nature). Complete enough to call correctly, with only minor ambiguity.

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 groupingId parameter is already documented as "Retained groupingId from the plan or result." The description echoes that origin but adds no format, validity or expiry 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.

Purpose4/5

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

States a specific verb (Inspect) and resource (retained native grouping handle) and ties it to its origin, the group_tracks plan, so the agent knows it is a read of a prior grouping operation. It does not explicitly distinguish itself from the analogous sibling get_track_ungrouping_status, which keeps it from 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?

"including after a lost reply" signals when the tool is worth calling, and "missing handles require current-track inspection" tells the agent what to do when the handle is dead. It never names an alternative tool or a hard when-not-to-use, so it stops short of 5.

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

get_track_midi_routingA
Read-onlyIdempotent

Read one track's native MIDI note routing (input/output notes and scale transposition) from its MIDIMap. Reports unsupported explicitly when Live does not expose it.

NameRequiredDescriptionDefault
trackIdYesID from list_tracks.

Output Schema

NameRequiredDescription

No output 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, destructiveHint=false and closed-world scope, so the safety profile is covered. The description adds genuinely new behavior: the source is the track's MIDIMap, and unsupported/unexposed routing is reported explicitly rather than silently omitted — useful error-contract context the annotations do not 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 tightly packed sentences with zero filler: the read scope and return contents come first, the edge-case contract second. Nothing is repeated from 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 single-parameter read tool with a full input schema, an output schema (so return values need no explanation) and complete annotations, the description covers purpose plus the unsupported-case behavior. Only the missing routing-vs-alternative disambiguation (e.g. against get_track_routing) keeps it short of complete.

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

Parameters3/5

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

One parameter at 100% schema description coverage, so the schema fully documents trackId ('ID from list_tracks'). The description adds no syntax or semantics beyond that — the baseline 3 is correct when the schema does all the work.

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 + resource + scope: 'Read one track's native MIDI note routing (input/output notes and scale transposition) from its MIDIMap.' The qualifier 'native MIDI note routing' and the enumeration of what it returns separate it from the broader get_track_routing and from its writer counterpart set_track_midi_routing, though no sibling is named explicitly.

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

Usage Guidelines3/5

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

No explicit when-to-use statement and no named alternative — unlike the strong calibration example, it never says 'for audio/track output routing use get_track_routing instead.' Guidance is only implied by the read-only 'get_' framing and the MIDI-routing specificity of the resource.

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

get_track_mixerB
Read-onlyIdempotent

Read bounded track volume, pan, mute, solo, and named return sends.

NameRequiredDescriptionDefault
trackIdYesID from list_tracks.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and non-destructive, so safety is covered. The description adds only the scope of values returned, consistent with annotations, but does not explain what 'bounded' means or whether sends include post/pre-fader detail. No contradiction with annotations.

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 that enumerates the relevant fields with no wasted clauses. The only weakness is the ambiguous word 'bounded', which costs clarity for a word that may not be needed.

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 an output schema present, the description need not explain return values, and annotations cover safety. For a one-parameter read tool it is nearly sufficient, though a brief note on units (dB) or on what 'named return sends' look like in the response would close the 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?

Only one parameter (trackId), and the schema documents it fully at 100% coverage with a pointer to list_tracks. The description adds nothing about the identifier beyond what the schema states, 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 ('Read') and the exact resource fields (volume, pan, mute, solo, return sends) scoped to a track. An agent can distinguish it from set_track_mixer by the read verb, though the modifier 'bounded' is unexplained and it doesn't explicitly differentiate from get_set_mixer or get_mixer_panning_context.

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 the several adjacent mixer-read siblings (get_set_mixer, get_mixer_panning_context, get_track_signal_activity), nor any stated preconditions. Usage must be inferred entirely from the name and description.

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

get_track_routingA
Read-onlyIdempotent

Read exact input, output, and monitoring choices for one track. Group Tracks expose monitoring as null because Live does not support it.

NameRequiredDescriptionDefault
trackIdYesID from list_tracks.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already establish that this is a safe, idempotent read operation. The description adds real behavioral value by disclosing that Group Tracks expose monitoring as null because Live does not support it, which prevents misinterpretation of output.

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 core action and followed by a relevant exception. 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 one-parameter read tool with annotations and an output schema, the description is nearly complete. The only gap is that it does not explicitly distinguish itself from related routing getters/setters.

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 schema has 100% description coverage and documents trackId as coming from list_tracks. The description does not add any parameter-level detail beyond the schema, so 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 ('Read') and resource ('input, output, and monitoring choices for one track'), making the core purpose clear. It does not explicitly differentiate itself from nearby siblings such as get_return_routing, get_track_midi_routing, or set_track_routing, 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?

Usage is implied: read routing for a track. The second sentence gives a useful caveat about Group Tracks, but there is no explicit guidance on when to choose this over get_return_routing, get_track_midi_routing, or set_track_routing.

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

get_track_signal_activityA
Read-onlyIdempotent

Read native input/output peak-hold meters and control flags for one trackId, or 1-64 unique trackIds in one callback with shared transport and ordered tracks. Track, Group, Return and Main supported. Native 0–1; not dB, sample-synchronous audio, silence or speaker proof. Unavailable meters stay unknown. Includes bounded native Group ancestry and shared explicit track/Return solo context; unknown or limited context is explicit, not proof of routing or isolation. No edits; all profile.

NameRequiredDescriptionDefault
trackIdNotrack-N from list_tracks, return-N from get_set_mixer, or master.
trackIdsNoExact track/Group/Return/Main IDs in requested order; excludes trackId.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior5/5

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

Beyond the annotations, the description discloses important behavior: batching 1–64 unique track IDs in one callback, ordered tracks, shared transport, bounded Group ancestry, shared solo context, and explicit unknown or limited context. It also clarifies that the values are native 0–1 peak-hold data and not proof of silence, speaker output, or isolation.

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

Conciseness4/5

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

The description is front-loaded with the core action and then layers in relevant limits and caveats. It is dense but mostly purposeful, with only minor jargon such as 'all profile' that could be clearer.

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 rich annotations, full schema description coverage, and an output schema, the description sufficiently covers scope, supported object types, numerical units, batching behavior, and ambiguity caveats. An agent has enough information to call the tool correctly without needing return-value details in the description.

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 schema already defines trackId and trackIds. The description adds useful semantics beyond the schema by explaining the one-or-many calling pattern, shared transport behavior, ordered tracks, and the 1–64 unique-ID batch limit.

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: read native input/output peak-hold meters and control flags for one or many track IDs. It clearly scopes supported object types (Track, Group, Return, Main), though it does not explicitly name a sibling alternative for comparison.

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 meter-reading purpose and caveats such as not being dB or sample-synchronous audio, but the description does not state when to prefer this over sibling context tools or when not to use it. The limitations help set expectations but stop short of explicit routing guidance.

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

get_track_ungrouping_statusA
Read-onlyIdempotent

Inspect actual removal, retained descendants, membership, exposed material and routing for a retained ungroupingId, including after a lost reply. Read-only; never repeats removal or regroups. Runtime handles can expire or disappear after bridge reload. Missing handles require current-track inspection. All profile.

NameRequiredDescriptionDefault
ungroupingIdYesRetained ungroupingId from the plan or result.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive, so the description is not obligated to restate safety. It goes further by disclosing that it never repeats removal or regroups, and that runtime handles can expire or disappear after a bridge reload — genuine operational context beyond the annotations. It stops short of describing response shape or failure modes in detail.

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?

Opening sentence is front-loaded with the operation, which is good. But the prose is dense jargon ('exposed material', 'All profile.') and that trailing fragment is opaque rather than informative, so not every sentence clearly 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?

An output schema exists, so return values needn't be explained, and the description covers the important subtleties: read-only behavior, handle expiry after bridge reload, and the fallback to current-track inspection. Complete enough for an agent to call it 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 coverage is 100% and the single parameter is fully documented as 'Retained ungroupingId from the plan or result.' The description echoes 'retained ungroupingId' but adds no format, sourcing, or lifetime detail beyond the schema. 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 verb 'Inspect' plus the resource 'for a retained ungroupingId' states a specific operation and scopes it to the post-ungroup state. It implicitly contrasts with get_track_grouping_status and ungroup_tracks, though it never names them. The listed inspection facets (removal, descendants, membership, routing) give an agent a concrete sense of what 'status' means here.

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?

'including after a lost reply' and 'Missing handles require current-track inspection' give real use-case cues. However, it never names an alternative tool (get_track_grouping_status, ungroup_tracks, or current-track inspection calls) nor states explicit exclusions, so an agent must infer which sibling to fall back on.

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

get_transport_contextA
Read-onlyIdempotent

Read transport playback, metronome, and count-in state.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output 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 only the scope of state read (playback, metronome, count-in) and says nothing about return shape or freshness, which is acceptable given an output schema exists.

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

Conciseness5/5

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

A single front-loaded sentence with no filler; the resource list is the only content and every word earns its place.

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

Completeness4/5

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

With zero params, full annotation coverage, and an output schema describing the return values, the description covers everything an agent needs in order to call it. A brief note on when to reach for it versus sibling context getters would make it 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 tool takes zero parameters, so there is nothing for the description to disambiguate. The baseline for a parameterless tool 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 (Read) and enumerates the exact state read: transport playback, metronome, and count-in. This clearly separates it from sibling mutators like set_transport_context and from get_transport_recording_context, though it does not explicitly name 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?

No explicit when-to-use or when-not-to-use guidance is given. Usage is only implied by the 'get_..._context' naming convention (read state before configuring it), leaving the agent to infer the call ordering relative to set_transport_context.

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

get_transport_recording_contextA
Read-onlyIdempotent

Read playhead, Arrangement and Session recording modes, automation arm, and native Capture MIDI readiness with MIDI track IDs.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output 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=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the useful specifics of which state fields are read (playhead, recording modes, automation arm, Capture MIDI readiness), but stops short of noting side effects, timing, 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.

Conciseness5/5

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

A single dense sentence front-loads the verb and then lists the exact return fields with no filler. Every clause corresponds to a distinct piece of state the agent needs.

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 an output schema present, the return structure need not be restated, and annotations carry the safety profile. The description is sufficient for a zero-parameter read tool, though it could have noted its relationship to sibling transport/capture tools.

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; per the rubric this yields a baseline of 4. Schema coverage is 100% and nothing is left ambiguous by the absence of inputs.

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

Purpose4/5

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

The description uses a specific verb ('Read') and enumerates the exact resources retrieved: playhead position, Arrangement/Session recording modes, automation arm, and Capture MIDI readiness with MIDI track IDs. An agent knows precisely what this tool returns, but it does not distinguish itself from close siblings like get_transport_context or get_midi_capture_context.

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 get_transport_context, get_midi_capture_context, or set_transport_recording_context. Usage is only implied by the read-only nature of the tool; no prerequisites or alternatives are named.

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

group_tracksA
Destructive

Create a native Group through macOS English Live UI from two to 64 consecutive ungrouped ordinary audio-producing tracks feeding Main. Saved Set, stopped playback/recording, unarmed/unfrozen sources and no pending launches required. Changes focus, hierarchy, routing and track IDs. Verifies retained objects and exposed material/controls. Partial results remain; no automatic undo. Retain groupingId for lost-response inspection. All profile.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
planHashNoPlan hash.
trackIdsYesConsecutive exact track IDs in Live order.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.
expectedSetFingerprintYesCurrent Set fingerprint from get_live_state.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and idempotentHint=false; the description adds substantial context beyond them, disclosing that focus, hierarchy, routing and track IDs change, that partial results remain, and that there is no automatic undo. Retaining groupingId for lost-response inspection is a genuinely useful operational detail.

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 most decision-relevant facts (what it creates and the consecutive-track scope) are front-loaded, and almost every sentence carries distinct information. It is dense and jargon-heavy, with a few shorthand clauses that border on cryptic, but nothing is plainly wasteful.

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 destructive UI-driven mutation with 6 params and an output schema, the description covers preconditions, mutation effects, partial-failure behavior, undo absence, and the lost-response recovery hint. Return values are already covered by the output schema, so nothing material 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 the baseline is 3; the schema already documents trackIds range and the token/hash/fingerprint guards. The description reinforces the 2-64 consecutive constraint 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?

States a specific verb and resource ('Create a native Group') plus a precise scope ('two to 64 consecutive ungrouped ordinary audio-producing tracks feeding Main'). This is far more specific than the sibling get_track_grouping_status or ungroup_tracks, though it never explicitly names those siblings to route 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 Guidelines4/5

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

Gives clear preconditions for use: a saved Set, stopped playback/recording, unarmed/unfrozen sources and no pending launches. That is strong when-to-use context, but it never names the alternative (ungroup_tracks) or states when NOT to group.

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

heartbeat_nks_generation_jobA
Destructive

Extend an unexpired NKS generation lease owned by this worker.

NameRequiredDescriptionDefault
presetIdYesNKS catalog preset ID.
workerIdYesLease owner identity.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare the mutation profile (readOnly=false, destructive=true, idempotent=false), lowering the burden. The description adds the precondition that the lease must be unexpired and owned by the caller, which is real behavioral context, but it doesn't disclose the extension duration, failure behavior on an expired lease, or why the operation carries destructiveHint.

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

Conciseness5/5

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

A single front-loaded sentence with no filler or redundancy. Every clause (verb, resource, two preconditions) 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?

An output schema exists, so return values need not be explained, and the precondition for a successful call is stated. The main remaining gap is that the semantics of 'extend' (duration, idempotency implications) are left unstated, but this is minor for a two-parameter lease operation.

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 presetId and workerId are already documented in the schema, and the baseline is 3. The description only marginally enriches workerId by tying it to 'this worker' (the caller's identity); it adds no format or constraint 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?

States a specific verb ('Extend') and resource ('NKS generation lease') with scoping qualifiers ('unexpired', 'owned by this worker'). This clearly separates it from sibling lifecycle tools like claim_nks_generation_job, complete_nks_generation_job, and fail_nks_generation_job, though those siblings are not named.

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 'unexpired' and 'owned by this worker' conditions suggest this is a keep-alive only the current lease holder should call, versus claim_/complete_/fail_ siblings. There is no explicit when-to-use or when-not-to-use guidance, so the agent must infer the lifecycle position.

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

hold_session_clipA
Destructive

Hold one existing Gate/Repeat Session clip for 0.25–8 wall-clock seconds, then request native release without this client. Requires global playback, recording off, an unarmed/unfrozen target and no pending launches or other playing Session clip on its track. Honors quantization; may override target Arrangement. Gate may stop on release; Repeat may continue. Concurrent controller input cannot be distinguished. Command receipts are not button-state or audible proof. All profile.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
trackIdYesID from list_tracks.
planHashNoPlan hash.
allowPlayingNoExplicitly allow the exact target to be already playing; defaults to false.
durationSecondsYesWall-clock hold duration checked on Live display ticks; not beat scheduling.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior5/5

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

Annotations mark it destructive and non-idempotent; the description goes well beyond by disclosing quantization honoring, possible Arrangement override, Gate-stops vs Repeat-continues semantics, inability to distinguish concurrent controller input, and that receipts are not audible proof. This is rich operational context rare in a description.

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 purpose and duration, then packs preconditions and caveats into tight sentences. No filler, though a few fragments ('All profile', 'Command receipts are not button-state') are terse to the point of opacity.

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?

An output schema exists, so return values need not be explained, and the description covers preconditions, side effects, and the Gate/Repeat divergence thoroughly. For a destructive, conditioned hold operation the agent has what it needs.

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 required and optional parameters (dryRun, planHash, allowPlaying, confirmationToken, expectedStateVersion) are already documented. The description adds little per-parameter meaning beyond the duration range, which is already in the schema (0.25–8 wall-clock).

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 (hold) and resource (existing Gate/Repeat Session clip) with a bounded duration, so the operation is unambiguous. It does not name its obvious siblings get_session_clip_hold / finish_session_clip_hold, so it stops short of full sibling differentiation.

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 preconditions for use: global playback on, recording off, unarmed/unfrozen target, no pending launches or competing clip on the track. That effectively tells the agent when the call is valid, but offers no explicit alternative tools or when-not-to-use guidance.

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

humanize_midi_notesB
Destructive

Plan or apply guarded deterministic MIDI timing and velocity humanization with exact clip, grid, and complete native note readback.

NameRequiredDescriptionDefault
seedYesDeterministic humanization seed.
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
noteIdsYesUnique stable note IDs to humanize.
trackIdYesID from list_tracks.
planHashNoPlan hash.
gridBeatsYesReference grid step in beats, including fractional triplet values.
confirmationTokenNoSingle-use plan token.
maxVelocityOffsetYesMaximum absolute velocity movement.
expectedStateVersionYesObserved stateVersion.
maxTimingOffsetBeatsYesMaximum absolute timing movement in beats; must not exceed half gridBeats.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare destructive=true, readOnly=false, idempotent=false, and openWorld=false, so the safety profile is covered. The description adds that the operation is deterministic, guarded, and includes readback, but it does not explain what 'guarded' entails (e.g., confirmation token, expectedStateVersion) or the consequences of applying changes.

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

Conciseness4/5

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

The description is a single front-loaded sentence with no filler. It is dense with relevant terms, though the phrase 'exact clip, grid, and complete native note readback' is somewhat cryptic and could be clearer.

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?

This is a complex, destructive, 11-parameter tool with an output schema and rich annotations. The description states purpose and plan/apply modes, but it omits workflow details such as confirmation token usage and how dryRun relates to execution. Given the schema and annotations cover parameters and safety, it is minimally adequate but leaves 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%, so the schema already documents all 11 parameters fully. The description mentions clip, grid, and note readback but adds no syntax, format, or constraint details beyond what the schema provides, which matches the baseline of 3 when the schema does the heavy lifting.

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: 'Plan or apply ... MIDI timing and velocity humanization' and adds scope ('exact clip, grid, and complete native note readback'). It is clear what the tool does, but it does not explicitly differentiate itself from sibling tools like plan_midi_humanization, 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 Guidelines2/5

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

The description offers no when-to-use or when-not-to-use guidance. It implies a plan-or-apply duality but does not explain how to choose between dryRun and execution, nor does it name any sibling alternative for planning versus applying.

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

import_midi_fileA
Destructive

Import a local MIDI file through macOS English Live into an entirely empty final Session MIDI staging track. Requires muted, unarmed, monitoring off, No Output and stopped recording/playback. Verifies exact file selection and observed clip/object structure; multitrack files may add tracks. No complete event or audible equivalence claim. All profile.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
trackIdYesID from list_tracks.
planHashNoPlan hash.
sourcePathYesExisting absolute regular .mid/.smf file, at most 8 MiB and 256 declared MIDI tracks.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.
expectedSetFingerprintYesCurrent Set fingerprint from get_live_state.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already flag destructive=true, idempotent=false, openWorld=true. The description adds substantial behavior beyond that: the required target state, that it verifies file selection and clip/object structure, that multitrack files may add tracks, and the explicit caveat that no complete event or audible equivalence is claimed.

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?

Front-loaded with the purpose, but the prose is dense and jargony, and the trailing fragment 'All profile.' carries no discernible meaning. The preconditions and caveats earn their place, but the phrasing could be tightened.

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?

An output schema exists, so return values need not be explained. The description covers preconditions, mutation behavior, and fidelity caveats, which is adequate for a destructive multi-param import tool. Only minor gaps remain, such as no explicit sibling routing.

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 all eight parameters are already documented in the schema (sourcePath limits, IDs, token, hashes). The description adds little parameter-level meaning beyond the staging-track context, 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 a specific verb and resource: importing a local MIDI file into an empty Session MIDI staging track. It is concrete about the destination and scope, but it never names or distinguishes itself from related siblings like create_midi_clip or the analyze/plan MIDI 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?

Gives clear preconditions for use: muted, unarmed, monitoring off, No Output, and stopped recording/playback. This tells the agent when the tool is safe to invoke. It stops short of naming an alternative tool or an explicit when-not-to-use case.

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

insert_midi_notesA

Add explicit notes to an existing Session/Arrangement MIDI clip without rewriting existing notes. Rejects same-pitch overlaps, stale sources, recording/count-in, frozen or pending targets. Preserves timing/playback. Reports partial native work without rollback or replay; all profile.

NameRequiredDescriptionDefault
notesYesExplicit additions in absolute clip beats; optional deviation 0, release velocity 64, probability 1 and mute false.
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
trackIdYesID from list_tracks.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

Goes well beyond the annotations (readOnly=false, destructive=false, idempotent=false): it discloses rejection conditions, that timing/playback are preserved, and the important caveat that partial native work is reported without rollback or replay. The phrase 'all profile' is cryptic and it doesn't connect to the dryRun/confirmation-token flow described in the schema, but the behavioral disclosure is substantially richer than 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.

Conciseness4/5

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

Front-loaded with the core action and additive guarantee, followed by rejection conditions and the partial-work caveat. Dense but every sentence carries information, marred only by the unclear trailing 'all profile' fragment.

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 an output schema present, return-value explanation is not needed, and the description covers mutation semantics, rejections, and partial-work behavior. It is nearly complete, with only minor ambiguity around the concurrency/dry-run workflow that the schema already documents.

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 including nested note fields are already documented. The description adds no syntax or format detail about expectedStateVersion, planHash, or confirmationToken beyond 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.

Purpose4/5

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

States a specific verb (add) and resource (explicit notes to an existing Session/Arrangement MIDI clip), and clarifies it is additive ('without rewriting existing notes'). It does not name a sibling tool it replaces (e.g. transform_midi_notes, set_midi_note_properties), so differentiation is by behavior rather than explicit routing.

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?

Implied usage is clear (add notes to an existing clip), and it enumerates rejection conditions (same-pitch overlaps, stale sources, recording/count-in, frozen/pending) that constrain when it can run. However, it never points to an alternative tool or states when-not-to-use in favor of another operation.

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

inspect_clip_groove_postconditionsA
Read-onlyIdempotent

Read current native context and inspect extraction, baking, or plain groove-removal postconditions against a supplied pre-action get_clip_groove_context snapshot. Does not execute the UI action, prove provenance, or validate audible equivalence. Extraction expects one appended groove and unchanged source/timing; baking expects removed assignment and unchanged unrelated timing/shared context; removal also requires unchanged source content.

NameRequiredDescriptionDefault
beforeYesComplete pre-action native clip groove context snapshot; supplied data is not authenticated history.
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
trackIdYesID from list_tracks.
operationYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.5/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 meaningful behavioral context beyond those annotations: it does not prove provenance or validate audible equivalence, and it describes expected postconditions per operation. It still leaves failure modes and mismatch reporting to the 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.

Conciseness5/5

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

The purpose is front-loaded in the first sentence, followed by concise non-goals and operation-specific expectations. Every sentence carries useful information, and no space is wasted on restating 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?

For a read-only inspection tool with annotations and an output schema, the description provides everything needed to invoke it correctly. It identifies the required pre-action snapshot, the operation-specific expectations, and the non-goals, so there are no major gaps.

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

Parameters4/5

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

Schema coverage is 75%, so the schema already documents most parameters. The description adds real semantic value by defining what each operation value expects to observe: extraction expects one appended groove and unchanged source/timing, baking expects removed assignment and unchanged unrelated timing/shared context, and removal also requires unchanged source content. The before parameter is also explained as a pre-action get_clip_groove_context snapshot.

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: it reads native context and inspects groove-removal postconditions against a pre-action snapshot. The three operation modes (extract, bake, remove) are named explicitly, which clearly distinguishes it from the sibling get_clip_groove_context tool that produces the snapshot.

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 clear this is a verification step performed after an extraction, baking, or removal action, using a supplied pre-action snapshot. It also states the tool does not execute the UI action, which is a useful usage boundary. However, it does not explicitly name alternatives or state when not to use it beyond that non-goal.

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

inspect_producer_busA
Read-onlyIdempotent

Read an existing Group or ordinary audio bus, ordered FX, child sources and routing against a layered blueprint. Audio uses two matching snapshot passes; checks No Input, monitor In, Main output and child Track In routes. Optional pluginId selects an explicitly chosen Serum 2, Omnisphere or VPS Avenger instead of the blueprint's factory instrument; this verifies loaded identity, not preset or sound.

NameRequiredDescriptionDefault
targetYes
busKindNogroup (default) or ordinary audio bus.
childrenYesOne track for each blueprint child role.
busTrackIdYesID from list_tracks.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/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 the description adds real behavioral context: two matching snapshot passes for audio, the specific routes validated, and that pluginId verifies loaded identity rather than preset or sound. That extra context is genuinely useful 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.

Conciseness4/5

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

Three front-loaded sentences that stay on task with little filler. The route-listing sentence is dense with domain jargon but earns its place by naming exactly what is validated.

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?

An output schema exists, so return values need not be explained, and annotations cover the safety profile. The description supplies the inspection logic and pluginId caveat, leaving only minor gaps around target blueprint semantics.

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% and the description adds meaning where the schema is thin, notably explaining the pluginId parameter's intent (explicit instrument choice vs blueprint factory instrument, verifying identity not preset). It also clarifies the group-vs-audio bus distinction, though it does not elaborate on target or child role 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 verb and resource: reads an existing Group or ordinary audio bus and inspects ordered FX, child sources and routing against a layered blueprint. This distinguishes it from siblings like inspect_producer_chain and inspect_producer_return_bus by scope, though it does not name them directly.

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 describing what gets checked (No Input, monitor In, Main output, child Track In routes), so an agent can infer it is a verification/inspection step. However, there is no explicit when-to-use guidance or routing away from the neighboring inspect_* tools.

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

inspect_producer_chainB
Read-onlyIdempotent

Read the devices on one exact track and compare their factory profiles and order with a named producer-chain blueprint. No devices are loaded or changed.

NameRequiredDescriptionDefault
targetYes
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.3/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 'No devices are loaded or changed' is largely redundant reinforcement rather than new disclosure. The description does clarify that the operation is a comparison (not a chain dump), which adds some context, but says nothing about what the comparison returns or how mismatches are surfaced.

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

Conciseness5/5

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

Two tight sentences: the action and scope come first, the non-mutation guarantee second. No filler, no restatement of the tool name.

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?

An output schema and rich annotations cover the return shape and safety profile, so little more is needed. However, the description says the comparison is against a 'named producer-chain blueprint' while the input schema exposes only target and trackId and no blueprint parameter, leaving an unexplained mismatch an agent must guess at.

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 only 50%: trackId is documented in the schema, while the 16-value target enum has no description anywhere. The description's 'one exact track' hints that trackId is a single track id, but it never explains what target selects or how it relates to the 'named producer-chain blueprint' it mentions, leaving the primary parameter 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 pair (read devices, compare profiles/order) and a specific resource scope (one exact track vs. a producer-chain blueprint). The phrase 'one exact track' differentiates it from broader siblings like inspect_producer_bus and list_devices, though no sibling is named explicitly.

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

Usage Guidelines3/5

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

The comparison framing implies when to use it (auditing a track's device chain against a blueprint), but there is no explicit guidance on when to prefer it over inspect_producer_bus, list_devices, or get_producer_chain_blueprint. Usage must be inferred.

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

inspect_producer_return_busA
Read-onlyIdempotent

Read an existing Return bus, ordered FX, child sources, sends and Sends Only routing against a layered blueprint. Optional pluginId selects an explicitly chosen Serum 2, Omnisphere or VPS Avenger instead of the blueprint's factory instrument; this verifies loaded identity, not preset or sound.

NameRequiredDescriptionDefault
targetYes
childrenYesOne track for each blueprint child role.
returnTrackIdYesExact Return Track ID.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/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, and the description adds useful scope: it inspects ordered FX, child sources, sends, and Sends Only routing. It also explicitly limits pluginId verification to loaded identity rather than preset or sound, which is valuable behavioral context.

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 compact and front-loads the core read operation before clarifying the optional pluginId behavior. Both sentences carry useful information, though the second is dense and could be slightly easier to scan.

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 the output schema and read-only annotations, the description supplies the essential inspection scope and the key plugin identity caveat. It is complete enough for invocation, with only minor gaps around prerequisite explanation and explicit sibling routing.

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 67%, with descriptions already supplied for returnTrackId, children, role, and trackId. The description adds meaningful semantics for pluginId by explaining its instrument-selection and identity-verification behavior, but it does not explain the target enum or clarify the required children structure beyond 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 a specific read operation on a Return bus and enumerates the inspected elements: ordered FX, child sources, sends, and Sends Only routing against a layered blueprint. It is clearly distinguishable from general producer inspection, though it does not explicitly contrast itself with inspect_producer_bus or inspect_producer_chain.

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 'Read an existing Return bus' and by the optional pluginId explanation, but there is no explicit when-to-use or when-not-to-use guidance relative to sibling inspection tools. An agent can infer this is for blueprint verification, but the routing between alternatives is not stated.

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

jump_to_arrangement_cue_pointA
Destructive

Plan or request one native locator jump with identity and recording guards. Stopped receipts verify position; playing jumps can be quantized and do not establish arrival or audible Arrangement playback.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
planHashNoPlan hash.
cuePointIdYesCurrent cue-point ID from list_arrangement_cue_points.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

Adds real behavior beyond the annotations: identity and recording guards, that stopped jumps produce receipts that verify position, and that playing jumps may be quantized without confirming arrival or audible playback. This is meaningful disclosure for a destructive-flagged, non-idempotent tool, though it never explains why the operation is marked destructive or what exactly is at risk.

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 tightly packed sentences with the core action front-loaded and caveats trailing. Every clause carries information, though the telegraphic style ('Stopped receipts verify position') costs some immediate readability.

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?

An output schema exists and the schema is fully documented, so the description only needs to carry behavioral nuance, which it largely does via the guards and quantized-jump caveats. The main gap is the unexplained destructive flag and the missing linkage to list_arrangement_cue_points as the source of valid IDs.

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 per-parameter descriptions (dryRun, planHash, confirmationToken, cuePointId, expectedStateVersion), so the baseline is 3. The description reinforces the plan/execute pattern but adds no syntax, format, or constraint detail beyond what the schema already documents.

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+resource ('native locator jump') and implies a plan/execute duality, which distinguishes it from the sibling cue-point tools that list/create/rename/delete points. The jargon 'native locator jump' is less accessible than 'jump the playhead to an arrangement cue point', but the operation is still identifiable.

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?

'Plan or request' implies a dry-run-then-execute flow without stating it explicitly, and nothing says when to use this versus other navigation tools or that a cue point must first be obtained. Usage is inferable but not spelled out; the schema's 'from list_arrangement_cue_points' hint does some of this work but the description does not.

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

launch_clipB
Destructive

Launch a Session slot. recordLengthBeats records an empty armed slot; updated bridge rechecks input, native identity and recording readiness. launchQuantization overrides once. Receipt does not prove take completion.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
trackIdYesID from list_tracks.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
recordLengthBeatsNoFixed recording length in beats for an empty armed slot.
launchQuantizationNoOne-shot native launch quantization choice from get_clip_timing or list_clips.launchQuantizationChoices.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior4/5

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

The description adds meaningful behavioral context beyond the destructive/non-idempotent annotations: it mentions bridge validation, native identity checks, recording readiness, and the important caveat that a receipt does not prove take completion. However, it does not explain what destructive side effects may occur or the dry-run/confirmation-token workflow.

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 compact and front-loads the core action in the first sentence. It is somewhat jargon-heavy, but every sentence carries some relevant information.

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

Completeness3/5

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

For a destructive 8-parameter launch tool, the description covers the main action and an important receipt caveat. It still omits practical context about the confirmation-token/dry-run path and how this differs from sibling launch or stop tools, although the schema and output schema carry much of the detail.

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 parameters are already documented. The description restates the purpose of recordLengthBeats and launchQuantization but adds little new syntax or format meaning beyond the schema 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?

The description states a specific verb and resource: launch a Session slot. This is clear enough to distinguish it from broad transport tools like transport_play, though it does not explicitly contrast it with the adjacent launch_scene or stop_clip tools.

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

Usage Guidelines2/5

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

The description does not say when to use this tool versus launch_scene, stop_clip, or hold_session_clip. It only gives limited parameter-specific hints about recordLengthBeats and launchQuantization, not general usage guidance or exclusions.

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

launch_sceneB
Destructive

Plan/fire a scene with full-row recheck. May stop, record or change tempo/meter. Request-only receipt. Requires updated bridge.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
sceneIdYesID from list_scenes.
planHashNoPlan hash.
forceLegatoNoForce immediate Legato launch for every clip in this scene; defaults to false.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior4/5

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

The description adds valuable context beyond the annotations: it may stop, record, or change tempo/meter, and it discloses a prerequisite ('Requires updated bridge'). The destructiveHint is consistent with these disclosed side effects, and 'Request-only receipt' adds some receipt semantics, though that phrase remains vague.

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 compact and front-loaded, with each fragment carrying potential operational information. However, the telegraphic style and unexplained terms like 'full-row recheck' and 'Request-only receipt' reduce crispness.

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 an output schema and full parameter coverage present, the description need not explain return values in depth. Still, for a destructive, non-idempotent scene launch with a plan/execute flow, the description leaves the dry-run versus execution workflow and confirmation-token behavior unclear.

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 six parameters. The description's 'Plan/fire' wording loosely signals the dryRun distinction but does not add meaningful parameter-level 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?

The description names a specific action and resource: 'Plan/fire a scene.' It is distinct from launch_clip because it operates on a scene, though jargon like 'full-row recheck' is not explained.

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?

It does not state when to use this tool versus launch_clip, stop_clip, stop_all_clips, or get_scene_launch_context. There are no explicit exclusions or alternative-selection guidance.

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

list_arrangement_clipsB
Read-onlyIdempotent

Read timeline clip IDs, types, and start/end positions in beats for one track.

NameRequiredDescriptionDefault
trackIdYesID from list_tracks.

Output Schema

NameRequiredDescription

No output 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=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered and the bar is low. The description adds real context beyond that – it enumerates the returned fields (IDs, types, start/end positions in beats) and the one-track scoping – but says nothing about ordering, pagination, or empty results.

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

Conciseness5/5

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

One sentence, zero filler, front-loaded with the verb and resource, then the scope constraint. Nothing wasted 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 single-parameter read tool with an output schema and full safety annotations, this is nearly complete – it tells the agent what it gets back and confines it to a track. Only the absence of any sibling routing guidance keeps it from a 5.

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 trackId is already documented as 'ID from list_tracks.' The description adds only that results are scoped to that one track, which is a modest clarification. Schema does the heavy lifting, so 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?

Specific verb (read/list) plus resource (timeline clip IDs, types, start/end positions) and scope (one track), which distinguishes it from the many mutating arrangement-clip siblings like move/duplicate/delete_arrangement_clip. It does not explicitly name a sibling it should be chosen over (e.g. list_clips for session clips), 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 Guidelines2/5

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

There is no explicit when-to-use, when-not-to-use, or alternative. The agent must infer from 'for one track' that this is the per-track read path versus list_clips, but nothing in the text states that routing rule.

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

list_arrangement_cue_pointsA
Read-onlyIdempotent

List Arrangement cue points with current inventory IDs and beat positions.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output 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 and destructiveHint=false, so the safety profile is covered. The description adds only that output carries inventory IDs and beat positions — useful, but with an output schema present it is largely redundant and no pagination or scoping behavior 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?

A single front-loaded sentence with no filler. Every word (list, cue points, inventory IDs, beat positions) earns its place, and there is 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?

With an output schema defining the return shape, zero parameters, and annotations covering the read-only/idempotent profile, the description supplies enough to call the tool correctly. The only shortfall is the absence of any scoping or sibling-routing context.

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 burden and the baseline is 4. Nothing in the description is required to explain arguments; there simply are none.

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 ('List') and resource ('Arrangement cue points') and even names what the listing contains (inventory IDs, beat positions). It is clear what the tool does, but it makes no attempt to distinguish itself from the sibling create/rename/delete/jump_to cue-point tools.

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

Usage Guidelines3/5

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

There is no explicit when-to-use or when-not-to-use guidance, and the four sibling cue-point tools (create, rename, delete, jump_to) are never referenced. That this is the read-only enumeration tool is strongly implied by 'List', but an agent gets no routing help.

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

list_browser_rootsA
Read-onlyIdempotent

List Live's general browser roots with observed availability and immediate child counts. Read-only; this is not Splice cloud search or a filesystem inventory.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/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 genuinely new information: results carry 'observed' availability and immediate (not recursive) child counts, telling the agent this is a shallow snapshot rather than a full tree. It stops short of saying how fresh that observation is or whether roots are ordered.

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 load-bearing: the first defines the resource and its payload, the second handles scope disambiguation. The scope caveat is placed after the core statement rather than burying it, 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 an output schema present, return values need no narration, and a zero-param read tool needs little else. What's missing is modest but real: nothing says whether roots can be absent/disabled or what 'observed availability' means when Live hasn't scanned yet, which matters for interpreting an empty 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?

Zero parameters, so the schema imposes nothing to explain and the baseline is 4. The description correctly spends no words on arguments and instead describes output shape, which is the only semantic surface available here.

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 ('List Live's general browser roots') and even characterizes the payload: availability plus immediate child counts. It rules out Splice cloud search and filesystem inventory, so the agent can distinguish it from list_local_splice_roots and filesystem-ish siblings, though it never explicitly contrasts with search_browser_roots.

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 negative conditions are explicit ('not Splice cloud search or a filesystem inventory'), which does real routing work against the local-Splice siblings. The positive trigger — call this to discover roots before descending with get_browser_items — is only implied, and no guidance is given on when to pick this over search_browser_roots.

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

list_clipsA
Read-onlyIdempotent

List clip slots and clips on one exact track, including arm/freeze recording readiness and native one-shot launch quantization choices.

NameRequiredDescriptionDefault
trackIdYesID from list_tracks.

Output Schema

NameRequiredDescription

No output 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, and non-open-world, so the safety profile is covered. The description adds useful content about what the listing surfaces (arm/freeze readiness, launch quantization choices), but does not go deeper on pagination or ordering 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?

One front-loaded sentence with no filler; the verb and scope lead, and the trailing clause about recording readiness and launch quantization earns its place as genuine content. Slightly dense, but efficient.

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-parameter, read-only listing tool with an output schema and full annotation coverage, the description supplies the needed scope and content hints. Nothing critical is missing; only pagination/ordering detail is absent, and that is minor given the output schema.

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

Parameters3/5

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

Schema description coverage is 100% and the single parameter (trackId, 'ID from list_tracks') is fully documented in the schema, so the baseline is 3. The description's 'one exact track' phrasing reinforces the single-track constraint but adds no new parameter semantics.

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 ('List') and resource ('clip slots and clips') and scopes it to 'one exact track,' which separates it from related listing tools such as list_arrangement_clips or list_scenes. It does not name a specific sibling as an alternative, 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?

Usage is only implied: the 'one exact track' scoping and the required trackId suggest when this tool applies, but there is no explicit when-to-use/when-not guidance or named alternative. Adequate but leaves the agent to infer the boundary against list_arrangement_clips and similar tools.

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

list_device_parametersB
Read-onlyIdempotent

List exact live parameter IDs, values, bounds, labels, and quantized choices.

NameRequiredDescriptionDefault
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.
deviceIdYesID from list_devices.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare the safety profile as read-only, idempotent, closed-world, and non-destructive, so the description does not need to restate those. It adds useful context by saying the parameters are 'live' and exact, and it lists the returned categories, but it does not describe error behavior, prerequisites like device activation, or ordering/pagination.

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 tightly written sentence with the core action and returned information front-loaded. There is no filler, repetition, or tangential detail.

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?

This is a simple two-parameter read tool with full schema descriptions, rich annotations, and an output schema, so the description does not need to explain return structure or safety. It adequately states what is listed, though it could mention when to use it relative to siblings for a fully complete 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 description coverage is 100%, and both required parameters are well documented in the schema. The description does not mention trackId or deviceId at all, so it adds no parameter semantics beyond what the schema already provides; 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?

The description uses a specific verb (list) and enumerates exactly what is returned: live parameter IDs, values, bounds, labels, and quantized choices. It is clearly a read operation on device parameters, but it does not explicitly name or distinguish itself from related siblings such as set_device_parameters or get_selected_parameter_context.

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 provides no explicit when-to-use, when-not-to-use, or alternative-tool guidance. An agent can infer it is for reading device parameters, but nothing tells it when this should be preferred over related context or snapshot tools.

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

list_devicesA
Read-onlyIdempotent

List loaded devices on one exact ordinary, Return, or Main track.

NameRequiredDescriptionDefault
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.

Output Schema

NameRequiredDescription

No output 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, closed-world, so the safety profile is fully covered. The description's only added behavioral detail is the word 'loaded' (existing devices only) and the single-track constraint; nothing about ordering, empty results, or nesting across racks is disclosed. With rich annotations, a 3 is appropriate.

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 front-loaded sentence with no waste. Minor awkwardness in 'one exact ordinary' but the intent lands immediately.

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

Completeness4/5

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

For a one-parameter read tool with an output schema and complete annotations, the description is sufficient to call it correctly. Only ordering/empty-set behavior is unaddressed, which is minor given the output schema exists.

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 trackId parameter is documented with concrete ID formats (track-N, return-N, master). The description only echoes the track types already implied by the schema, adding marginal value.

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 (List) and resource (loaded devices) and bounds the scope to a single exact track of type ordinary, Return, or Main. This clearly separates it from list_device_parameters or get_device_hierarchy, though it never names a sibling explicitly.

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

Usage Guidelines3/5

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

The phrase 'one exact ... track' implies single-track usage and 'loaded' implies only devices already on the track, but there is no explicit when-to-use, prerequisite, or alternative named among the many device-related siblings.

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

list_factory_device_profilesB
Read-onlyIdempotent

List producer-oriented knowledge profiles for foundational Ableton factory devices.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.3/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 the safety profile is fully covered. The description adds only the scope ('producer-oriented', 'foundational factory devices'), which tells the agent this is a curated static knowledge list rather than live device state — useful but modest, with no note on completeness, pagination, or whether third-party devices are excluded.

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 scope front-loaded and no filler. It could have used its few remaining words to define 'profile' or name a sibling instead of stopping at the resource noun phrase.

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?

An output schema exists and there are no parameters, so the description needn't explain return values or inputs. What is still missing is the one thing structure can't convey: what a 'producer-oriented knowledge profile' actually distinguishes (e.g., device character/use-case guidance vs. parameter data) and whether the list is exhaustive over factory devices.

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 explain and the baseline is 4. Nothing in the description misdescribes or implies hidden 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 clear verb ('List') and a specific resource ('producer-oriented knowledge profiles for foundational Ableton factory devices'), which separates it from siblings like get_factory_device_context (single-device context) and list_producer_chain_blueprints (chain blueprints). The word 'profiles' is somewhat undefined, so an agent still can't tell exactly what content each item holds without inspecting the output schema.

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

Usage Guidelines2/5

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

The description gives no explicit when-to-use guidance and names no alternatives. With many adjacent factory tools present (get_factory_device_context, get_factory_coverage, get_factory_browser_items, list_producer_chain_blueprints), the agent is left to infer the boundary between 'profiles' and those siblings.

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

list_live_scalesA
Read-onlyIdempotent

List Ableton Live 12 scale names with semitone intervals and musical families for exact scale selection. Read-only.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior2/5

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

The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description's 'Read-only' sentence repeats the annotation rather than adding behavioral context such as connection requirements, return behavior, or limitations.

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 and appropriately sized: one substantive sentence states the resource and returned fields, followed by a short safety note. There is no unnecessary elaboration.

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 zero-parameter list tool with rich annotations and an output schema, the description provides enough context: it states the Live version, scale-name scope, included interval/family data, and selection-oriented purpose.

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

Parameters4/5

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

The tool has zero parameters, so parameter semantics are inherently simple. The empty input schema and 100% schema description coverage mean the description does not need to explain 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 uses a specific verb and resource: list Ableton Live 12 scale names, including semitone intervals and musical families. It is clear what the tool returns, but it does not explicitly distinguish itself from the similar sibling get_live_scale_reference.

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 'for exact scale selection' implies when the tool is useful, but the description gives no explicit when-to-use versus when-not-to-use guidance and does not name an alternative such as get_live_scale_reference.

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

list_local_splice_rootsA
Read-onlyIdempotent

List existing local Splice folders and cache paths, including detected macOS defaults and explicitly configured roots. Does not search Splice cloud assets, verify licenses, or download files.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output 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 and closed-world, so safety is covered. The description adds meaningful context beyond that: it discloses that results include auto-detected macOS defaults as well as user-configured roots, and it rules out network or license activity.

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, front-loaded with what is returned and followed by the exclusion set. Every clause carries information; nothing is redundant with the name.

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 an output schema present, the description needn't describe return values, and annotations cover the safety profile. It could still mention behavior when no roots are configured (empty list vs. error), but the essentials for correct invocation are covered.

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

Parameters4/5

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

The tool takes no parameters, so there is nothing to document and the baseline of 4 applies. The description correctly implies the call is argument-free.

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 ("List existing local Splice folders and cache paths") and scopes it to detected macOS defaults plus explicitly configured roots. This clearly separates it from siblings like browse_local_splice_directory or search_local_splice_samples, which imply traversal or search rather than enumeration.

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 negative clause ("Does not search Splice cloud assets, verify licenses, or download files") gives clear when-not guidance. It stops short of naming the sibling to use instead (e.g. browse_local_splice_directory / search_local_splice_samples), so routing 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.

list_producer_chain_blueprintsB
Read-onlyIdempotent

List deterministic producer starting points for ordered track, bus, return, mastering, and layered-instrument chains.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output 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, openWorldHint=false and destructiveHint=false, so the safety profile is fully covered. The description adds only the semantic framing that the entries are "deterministic ... starting points" (i.e. canned templates rather than live objects), which is useful but thin; with an output schema present, return-shape disclosure is not required.

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

Conciseness5/5

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

A single sentence, front-loaded with the verb and resource, with the enumerated chain types placed after so the core purpose reads first. No filler or restatement of the title.

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 zero-param, read-only, output-schema-backed lister, the description covers what the tool is but omits how its output relates to get_producer_chain_blueprint and when to prefer one over the other. Adequate minimum-viable context, but a notable gap in a densely populated blueprint/chain family.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4. The description correctly implies no filtering or scoping inputs are accepted, consistent with an empty schema.

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

Purpose4/5

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

States a specific verb (List) and resource (producer chain blueprints) and enumerates the chain categories covered: track, bus, return, mastering, layered-instrument. That scope detail distinguishes it from generic list tools, but it never contrasts with the obvious sibling get_producer_chain_blueprint (singular), leaving the list-vs-fetch distinction to be inferred.

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 statement, no prerequisite, and no routing to alternatives, despite an obvious paired sibling (get_producer_chain_blueprint) and adjacent inspectors (inspect_producer_chain, inspect_producer_bus). An agent must guess whether this returns IDs to feed into the singular getter.

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

list_saved_snapshotsA
Read-onlyIdempotent

List names of regular local capture files in the private track, device-chain, group-system, or MIDI-feel library. Does not validate capture contents or change Live; load a name to inspect its format and contents.

NameRequiredDescriptionDefault
kindYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/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; the description adds the meaningful residual facts that results are names only and that no validation of capture contents happens. It does not say whether results are ordered or filtered beyond kind, leaving a small gap.

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 the action and scope, with the non-capability caveat in the second. No filler, though the phrasing 'regular local capture files' is slightly opaque.

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?

An output schema exists, so return structure needn't be explained; annotations cover the safety profile. What remains is adequately covered for a single-enum listing tool, with only minor ambiguity around what 'regular' excludes.

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

Parameters3/5

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

Only one parameter, an enum, and schema coverage is 0%, but enum values are self-describing. The description loosely glosses the kinds ('private track', 'MIDI-feel library') and adds the 'regular local capture' qualifier, though it doesn't explain what non-regular captures would be excluded.

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+resource: 'List names of regular local capture files', scoped to four library kinds that map to the enum. It distinguishes itself from the sibling load/recall snapshot tools by emphasizing names only, 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 Guidelines4/5

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

The second sentence sets a clear boundary: it does not validate contents or change Live, and instructs the agent to load a name to inspect format and contents — an implicit pointer to the load_*_snapshot siblings. No explicit named alternative, 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.

list_scenesA
Read-onlyIdempotent

List stable Session scene identities, names, and per-scene launch quantization.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/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 covered. The description adds that scene identities are 'stable' and that quantization is per-scene, but it does not disclose ordering, pagination, or other behavioral details beyond the annotated safety traits.

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 filler. Every phrase contributes to identifying the resource and returned data.

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 zero-parameter read-only list tool with rich annotations and an output schema, the description is complete enough. It identifies the resource and returned fields without needing to explain return structure, safety, or parameters already covered elsewhere.

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 the baseline is 4. The empty input schema is consistent with the description, and no additional parameter semantics are 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 uses a specific verb ('List') and names the resource ('Session scene identities, names, and per-scene launch quantization'). It is clearly distinct from scene-launching tools like launch_scene or get_scene_launch_context, though it does not explicitly differentiate itself 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?

The description states what the tool returns but gives no guidance on when to use it, when not to use it, or which sibling to choose instead. An agent must infer its role from the name and return fields alone.

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

list_tracksB
Read-onlyIdempotent

List stable Ableton track identities, mixer state, and existing group hierarchy.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output 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 closed-world scope, so safety is covered. The description adds the useful claim that identities are 'stable' and that mixer state and group hierarchy are included, but says nothing about ordering, completeness (return/master tracks?), or cost of the call.

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 scope front-loaded and no filler. It is efficient, though the terseness leaves a lot unstated rather than optimizing information density.

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 no-argument read-only list tool with an output schema documenting the return shape, the description covers what is returned. The remaining gap is scope (whether return tracks, master, or hidden tracks are included), which is minor given the output 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?

Zero parameters, so there is nothing to disambiguate; the baseline applies. No misleading parameter hints are present.

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 (List) and resource (Ableton track identities) and names the payload elements: stable identities, mixer state, and group hierarchy. It does not name the adjacent readers it overlaps with (get_track_mixer, get_track_grouping_status, list_devices), so an agent can't fully rule out siblings from this sentence 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?

There is no when-to-use language, no prerequisites, and no exclusions. With dozens of overlapping track-related siblings in this server, the absence of routing guidance forces the agent to infer that this is the enumeration entry point.

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

load_browser_itemA
Destructive

Plan/load an exact browser item on ordinary/Return/Main tracks. Binds native item and Set topology. Reports device, clip and track effects, rebased IDs and partial errors. MIDI may create tracks; observations are immediate.

NameRequiredDescriptionDefault
pathYesPath to the loadable item.
rootYesLive browser root.
dryRunNoFalse executes with token and hash.
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

Beyond the annotations (destructiveHint true, not idempotent), the description discloses genuine behavioral traits: MIDI items may create tracks, partial errors can occur, IDs are rebased, and observations are immediate. These add real context an agent needs before committing a destructive load, though return-format detail is partly redundant with the 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?

Four tight sentences, front-loaded with purpose and then behavior. Dense jargon ('Set topology', 'rebased IDs') is compact but slightly telegraphic; still no wasted sentences.

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 an output schema present and annotations covering the safety profile, the description only needs to add operational caveats, which it does via MIDI track creation, partial errors, and rebased IDs. It stops short of explaining the plan/execute token workflow explicitly, but is largely complete for a destructive mutation 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 description coverage is 100%, so all seven parameters are already documented in the schema, setting a baseline of 3. The description's 'Plan/load' wording loosely maps to the dryRun/planHash/confirmationToken flow 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?

The description states a specific verb (load) and resource (browser item) with scoping to ordinary/Return/Main tracks. It is clear about what the tool does, though it does not name the sibling it differs from (e.g. load_factory_browser_item), leaving the agent to infer the distinction.

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 'Plan/load' phrasing plus the schema's dryRun/planHash/confirmationToken implies a two-phase plan-then-execute flow, and 'MIDI may create tracks' hints at a side-effect caveat. However, there is no explicit when-to-use/when-not guidance and no direct routing to alternatives like load_factory_browser_item.

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

load_device_chain_snapshotA
Read-onlyIdempotent

Read a named local device-chain snapshot for review and guarded recall onto an already compatible track, Return, or Main device owner. Does not mutate Live.

NameRequiredDescriptionDefault
nameYesExact saved chain snapshot name.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/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. The description reinforces the non-mutating behavior and adds a meaningful precondition that the target must already be compatible, but it does not explain what 'guarded recall' means operationally or what happens if the target is incompatible.

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 two tightly written sentences with the operation and non-mutation constraint front-loaded. Every phrase contributes to scope or safety and there is no redundant 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 an output schema present and annotations covering safety, the description only needs to explain operation and preconditions. It does that adequately, but it still leaves sibling differentiation and the exact meaning of 'guarded recall' implicit.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already fully documents the single required 'name' parameter. The description's word 'named' adds no syntax, format, or selection guidance beyond what the schema provides, making the baseline 3 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: 'Read a named local device-chain snapshot.' It also scopes the operation to review and guarded recall onto compatible track, Return, or Main owners, though it does not explicitly name the sibling recall_device_chain_snapshot as the mutating alternative.

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 usage context: use this for review and guarded recall onto an already compatible target, and notes that it does not mutate Live. The main gap is that it does not explicitly compare itself with save/capture/recall siblings, so the agent must infer when to choose recall_device_chain_snapshot instead.

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

load_factory_browser_itemB
Destructive

Guarded factory-item load on ordinary/Return/Main tracks. Binds native item and Set topology. Reports device, clip and track effects, rebased IDs and partial errors; observations are immediate.

NameRequiredDescriptionDefault
pathYesPath to the loadable item.
rootYesFactory browser root.
dryRunNoFalse executes with token and hash.
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior4/5

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

Annotations declare destructive=true, non-idempotent, non-read-only, and the description adds real context beyond that: it qualifies the operation as 'guarded', notes it 'Binds native item and Set topology', and discloses that results include rebased IDs and partial errors with immediate observations. It still does not explain the token/plan-hash safety workflow, which is the key behavioral trait for a 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.

Conciseness4/5

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

Three terse sentences with the action front-loaded and no filler. The phrasing is dense jargon ('Binds native item and Set topology', 'rebased IDs'), which costs a little clarity but every clause carries information.

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

Completeness3/5

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

With annotations and an output schema present, the description need not restate safety flags or return values, and it correctly summarizes effects. It is still incomplete for a 7-parameter destructive tool because the guarded execution flow (dryRun -> planHash -> confirmationToken) is never explained, leaving the agent to infer the workflow entirely from the schema.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3 and the schema already documents path, root, trackId, dryRun, planHash, confirmationToken, and expectedStateVersion. The description adds only the track-type context ('ordinary/Return/Main') that maps to trackId, leaving the guarded parameter relationship 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 ('factory-item load') plus the applicable scope ('ordinary/Return/Main tracks'), so an agent knows what it does. However, it never differentiates itself from the sibling load_browser_item; the distinction is carried only by the tool name's 'factory' qualifier, not by the description text.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance, no statement of when not to use it, and no named alternative among the many browser siblings (load_browser_item, search_browser_items, get_factory_browser_items). The two-phase dryRun/planHash/confirmationToken prerequisite is implied only by the word 'Guarded' and is never spelled out.

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

load_group_system_snapshotA
Read-onlyIdempotent

Read one saved group-system JSON capture for review or guarded recall onto compatible existing topology. Loading the JSON does not mutate Live or recreate tracks.

NameRequiredDescriptionDefault
nameYesExact saved group-system snapshot name.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/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 covered. The description adds valuable behavioral context: it clarifies that loading does not mutate Live or recreate tracks, and imposes a compatibility constraint ('compatible existing topology'). That goes beyond annotations and helps set expectations.

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 are front-loaded with the core purpose and then the mutation constraint. There is no fluff, though 'guarded recall onto compatible existing topology' is slightly jargon-heavy; overall efficient and clear.

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 the simple read-only nature, one parameter, and an output schema, the description covers purpose, usage context, and behavioral constraints adequately. It doesn't explain failure modes, but those are likely covered by the output schema or unnecessary for this simple operation.

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 'name' is fully documented in the schema. The description adds no further detail about the parameter, 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?

The description states a specific verb ('Read') and resource ('one saved group-system JSON capture'), and scopes it to review or guarded recall. It doesn't explicitly name a sibling tool, but the phrase 'Loading the JSON does not mutate Live or recreate tracks' distinguishes it from destructive recall siblings like recall_group_system_snapshot.

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 a use context ('for review or guarded recall onto compatible existing topology') but doesn't name alternatives or when-not to use it. The agent can infer this is a read-only preview step before a recall, but explicit guidance on choosing between this and recall_group_system_snapshot is missing.

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

load_midi_feel_templateA
Read-onlyIdempotent

Load a named stored-MIDI feel template from the private local library for review or guarded transfer. Does not change Live or retrieve native Groove Pool patterns.

NameRequiredDescriptionDefault
nameYesExact saved MIDI feel template name.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description's add is the scoping context: the template comes from a private local library and the call does not mutate Live state. 'Guarded transfer' is left undefined and no error behavior (missing name) is mentioned, 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?

Two sentences, no filler. The positive scope and the negative constraints are both front-loaded and each sentence 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?

Output schema exists so return values needn't be described, annotations cover safety, and the schema covers the only parameter. Remaining gap is the undefined 'guarded transfer' phrase and no note on failure when the name is not found.

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 'name' parameter with 100% schema description coverage ('Exact saved MIDI feel template name'), so the schema fully carries parameter meaning. The description adds only that the name refers to a stored item in the private local library, which is marginal beyond structured data — baseline 3.

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') and resource ('named stored-MIDI feel template') with the source ('private local library'), and explicitly separates it from apply_midi_feel_template and Groove Pool retrieval in the sibling list. An agent can tell this is the fetch-only counterpart to save/apply 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?

Gives the use cases ('for review or guarded transfer') and two explicit exclusions ('does not change Live', 'does not retrieve native Groove Pool patterns'). It stops short of naming apply_midi_feel_template as the alternative for actually applying the loaded template, which keeps it out of 5 territory.

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

load_simpler_sampleA
Destructive

Load a local audio file into an existing single-sample Simpler. Requires stopped transport and an inactive unarmed target; loaded samples require allowReplace. Binds native context/file metadata and verifies exposed readback. Failure may leave partial state; no full sample rollback. All profile.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
trackIdYesID from list_tracks.
deviceIdYesID from list_devices.
planHashNoPlan hash.
sourcePathYesExisting absolute local audio-file path; Live validates format.
allowReplaceNoExplicitly permit replacing an already loaded sample. Defaults to false.
playbackModeNoOptional native playback mode after loading; omit to leave mode selection to Live.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

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

Beyond the destructive/non-idempotent annotations, the description discloses that failure may leave partial state and that there is no full sample rollback. It also states prerequisites, replacement rules, metadata binding, and readback verification, which are highly relevant for a mutating operation.

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

Conciseness4/5

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

The definition is dense and mostly front-loaded with purpose and prerequisites. The final phrase 'All profile.' is unclear and does not obviously earn its place, slightly reducing structural quality.

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 complex destructive mutation, the description covers key safety and state concerns: stopped transport, unarmed target, allowReplace, partial failure, and no rollback. Output schema and annotations carry additional detail, but the unexplained 'All profile' phrase and lack of plan/token workflow context leave a minor completeness 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%, so parameter meanings are already documented. The description reinforces allowReplace and sourcePath semantics, but it does not add meaningful detail beyond the schema for the other parameters such as dryRun, planHash, confirmationToken, expectedStateVersion, or playbackMode.

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: load a local audio file into an existing single-sample Simpler. This clearly distinguishes it from sibling tools like get_simpler_sample_state and set_simpler_sample_region, which inspect or modify regions rather than load a sample.

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 concrete preconditions: stopped transport, inactive unarmed target, and allowReplace required when replacing an already loaded sample. It does not explicitly name alternative tools or when not to use this one, but the operational context is clear.

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

load_track_state_snapshotA
Read-onlyIdempotent

Read a previously saved local track-state JSON capture for review and explicit guarded recall onto an already compatible track. Does not mutate Live.

NameRequiredDescriptionDefault
nameYesExact saved snapshot name.

Output Schema

NameRequiredDescription

No output 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 destructiveHint=false; 'Does not mutate Live' largely restates that. The genuinely additive context is that the source is a local JSON capture and that recall is guarded and requires a compatible track — useful but thin given the safety profile is already structured.

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 the core action and immediately followed by the non-mutation guarantee. Slightly dense phrasing ('explicit guarded recall onto an already compatible track') costs a little clarity 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?

With an output schema present, return values needn't be described, and the read-only/local-file/compatible-track prerequisites are stated. Only the relationship to the recall and save siblings 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?

There is a single parameter at 100% schema description coverage ('Exact saved snapshot name'), so the schema already carries the meaning. The description's 'previously saved' wording mildly reinforces that the name must refer to an existing capture, but adds no format or discovery guidance.

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 — read a previously saved local track-state JSON capture — and scopes it to review plus guarded recall. It stops short of naming the sibling that performs the actual recall (recall_track_state_snapshot), so the read-vs-recall boundary is inferable but not 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?

It implies the tool is for review/inspection and adds a prerequisite that recall requires an 'already compatible track', which is useful context. However, it never says when to prefer this over recall_track_state_snapshot or list_saved_snapshots, leaving the agent to infer the routing.

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

map_rack_macro_to_parameterA
Destructive

Plan or create one native macro mapping to an exact descendant device parameter. Rechecks rack and target-parameter snapshots at the native boundary, then reads back the observed mapping. Live chooses the default mapping range; inspect the result.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.
deviceIdYesID from list_devices.
planHashNoPlan hash.
macroIndexYesZero-based visible rack macro index.
parameterIdYesID from list_device_parameters.
targetDeviceIdYesID from list_devices.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare the operation as non-read-only, non-idempotent, and destructive, so the description does not need to repeat that. It does add useful context about rechecking snapshots at the native boundary, reading back the observed mapping, and Live choosing the default range, but it omits what existing mapping state may be overwritten.

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 three compact sentences and front-loads the core action before explaining validation and read-back behavior. The phrasing is efficient, though terms like 'native boundary' are somewhat opaque.

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 the full schema coverage and presence of an output schema, the description does not need to repeat parameter or return details. It supplies relevant behavioral context about validation and read-back, but a destructive mapping tool could be more complete by mentioning overwrite risk and the plan/confirmation 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 description coverage is 100%, so the schema already explains every parameter, including dryRun, planHash, confirmationToken, and expectedStateVersion. The description adds no parameter-specific meaning beyond that baseline.

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

Purpose4/5

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

The description clearly states a specific action and scope: plan or create one native macro mapping to an exact descendant device parameter. It is more precise than the name alone, though it does not explicitly differentiate itself from adjacent rack-macro tools such as set_rack_macro_mapping_edge.

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 'Plan or create' implies a dry-run versus execution split and 'inspect the result' suggests a read-back step, but the description never says when to choose this tool over alternatives or when not to use it. Usage is only implied.

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

move_arrangement_clipA
Destructive

Move one exact Arrangement MIDI or audio clip on its current track. Binds native identity, exposed source content and prior layout; verifies staging before source removal and destination before staging removal. Self-overlap is supported; other collisions refuse. Reports partial work without rollback or replay. Same position skips writes. Updated bridge required; hidden state and clip envelopes are not verified.

NameRequiredDescriptionDefault
clipIdYesExact timeline clip ID from list_arrangement_clips.
dryRunNoFalse executes with token and hash.
trackIdYesID from list_tracks.
planHashNoPlan hash.
startBeatsYesNew nonnegative timeline position in beats.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

Goes well beyond the annotations by disclosing the staging/verification sequence, collision policy (self-overlap allowed, others refused), partial-failure behavior with no rollback or replay, no-op on identical position, and explicit non-coverage of hidden state and clip envelopes. Only minor gap: 'same position skips writes' sits in mild tension with idempotentHint=false, though it describes a no-op guard rather than full idempotency, so it reads as clarification rather than contradiction.

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?

Five dense sentences, front-loaded with the verb and scope, then failure modes, then caveats. Nearly every clause carries information, though 'Binds native identity, exposed source content and prior layout' is jargon-heavy and opaque on first read.

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 destructive mutation with an output schema, the description does the right work: staging order, collision refusal, partial-success semantics, and stated non-verification. It stops short of explaining the confirmation-token workflow that the required parameters demand, which is the one thing an agent could still get wrong.

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 parameter documentation is already carried by the structured fields. The description adds only indirect hints ('prior layout' implying expectedStateVersion, 'verifies staging' implying the plan/token flow) and never explains the dryRun → planHash → confirmationToken sequencing an agent must follow.

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 a tightly scoped resource: 'one exact Arrangement MIDI or audio clip on its current track.' The 'on its current track' qualifier cleanly separates it from siblings like copy_arrangement_clip_to_track or duplicate_arrangement_clip 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?

Usage is implied by the constraints ('on its current track' means cross-track relocation is someone else's job; 'same position skips writes' means no-op calls are safe), but no sibling is named and no explicit when-not guidance is given. 'Updated bridge required' is the only stated prerequisite.

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

move_audio_warp_markerA
Destructive

Plan or apply movement of an exact audio warp marker to a target beat. Preserves sample position; rejects neighbor crossing and the hidden terminal marker.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
trackIdYesID from list_tracks.
beatTimeYesExact current marker beat time from audio state.
planHashNoPlan hash.
targetBeatTimeYesRequested target beat time.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare destructive=true and non-idempotent, so safety is covered. The description adds real behavioral facts beyond them: sample position is preserved, neighbor crossing is rejected, and the hidden terminal marker cannot be moved. It stays silent on permissions and on what a plan 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?

Two sentences, no filler, and the plan/apply distinction is front-loaded ahead of the constraint clauses. Every clause carries information an agent cannot get from annotations alone.

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?

An output schema exists, so return values need not be explained, and the schema documents the token/hash plan flow. What remains thin is explicit guidance on the plan-then-apply sequencing and the state-version precondition, which the description only implies.

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 every parameter including dryRun, planHash, confirmationToken, and expectedStateVersion is already documented in the schema. The description adds no parameter-level meaning, which is the baseline 3 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?

States a specific verb and resource ('movement of an exact audio warp marker to a target beat'), which naturally distinguishes it from add_audio_warp_marker and remove_audio_warp_marker. It does not name those siblings explicitly, so the differentiation is inferred from the verb 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?

'Plan or apply' implies a two-phase usage and the dryRun parameter reinforces it, but the description never says when to choose this over add_audio_warp_marker, remove_audio_warp_marker, or set_audio_clip_state. The rejection rules are constraints, not routing guidance.

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

move_deviceA
Destructive

Plan or reorder one exact device within its current ordinary, Return, Main, or rack chain. Live may choose the nearest valid position; read actualPosition and the new device ID from the result.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.
deviceIdYesID from list_devices.
planHashNoPlan hash.
targetPositionYesDevice-chain insertion index; zero is first.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

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 destructive, non-read-only, non-idempotent, and closed-world. The description adds useful behavioral context beyond those annotations: Live may choose the nearest valid position, so the result may not equal the requested target, and the caller should read actualPosition and the new device ID from the result. It does not discuss permissions or the plan/execute token workflow, but the schema carries much of that.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the core action and scope, and every clause contributes useful information. There is no redundant restatement of the title or 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?

Given that annotations cover the destructive safety profile and an output schema exists, the description provides enough context for scope and result interpretation. The main remaining gap is that it does not explain the two-step dryRun/planHash/confirmationToken execution model, though the input schema descriptions cover those details.

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

Parameters3/5

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

Schema description coverage is 100%, so all seven parameters are documented in the schema and the baseline is 3. The description mentions the result field actualPosition and implies targetPosition behavior through 'nearest valid position', but it adds little parameter meaning beyond what the schema already 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 states a specific verb and resource: plan or reorder one exact device within specific chain types. It also scopes the operation to the device's current chain, which helps distinguish it from cross-chain movement. It does not explicitly name the sibling move_device_to_chain or otherwise differentiate the two in prose, 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?

Usage is implied by 'Plan or reorder one exact device' and by the chain scope, but there is no explicit when-to-use guidance, no named alternative, and no stated exclusions. An agent can infer that this is for reordering within a current chain, but the definition does not actively route between this and move_device_to_chain.

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

move_device_to_chainA
Destructive

Plan or move an exact device into a rack chain across ordinary, Return, or Main tracks, including nested destinations. Live may choose the nearest valid position; use the returned device ID and actualPosition.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.
deviceIdYesID from list_devices.
planHashNoPlan hash.
targetChainIdYesExact chain ID from device hierarchy.
targetTrackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.
targetPositionYes
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

Beyond the destructive/non-idempotent annotations, the description discloses two non-obvious behaviors: Live may snap to the nearest valid position rather than honoring the requested index, and the caller should re-read the device ID and actualPosition afterward. It does not explain the planHash/confirmationToken two-phase flow or what state changes on the source chain, but the annotations already carry the destructive warning.

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, no filler, scope stated first followed by the operational caveat. Every clause 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 destructive 9-parameter tool with an output schema, the description covers scope, position-snapping behavior, and result verification. The main gap is the absent explanation of the dryRun → planHash → confirmationToken sequence, though those parameters are individually described in 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 89%, so the baseline is 3. The description earns an extra point by clarifying that `targetPosition` is advisory ('Live may choose the nearest valid position') and by pointing at the output fields (returned device ID, actualPosition) the caller must re-read.

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 ('Plan or move an exact device into a rack chain') and scopes it across ordinary, Return, and Main tracks plus nested destinations. It stops short of explicitly distinguishing itself from the sibling `move_device`, leaving the agent to infer the difference 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 Guidelines3/5

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

'Plan or move' implies a dry-run-then-execute workflow, and 'use the returned device ID and actualPosition' hints at a post-move verification step. However, there is no explicit guidance on when to choose this over `move_device`, when to use dryRun versus a confirmed execution, or what prerequisites (hierarchy lookup, state version) must precede it.

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

open_live_setA
Destructive

Plan/open a macOS Set; launch requires closed Live and configured app.

NameRequiredDescriptionDefault
modeNolaunch if closed.
pathYesExisting absolute .als path.
dryRunNoFalse executes with token and hash.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionNoObserved stateVersion.
expectedSetFingerprintNoCurrent setFingerprint, except launch.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, openWorldHint=true and non-idempotency, so the safety profile is covered. The description adds one non-obvious operational prerequisite (Live must be closed and the app configured for launch mode), but says nothing about what opening does to the currently loaded Set or that execution needs a plan hash plus single-use token.

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 with zero filler; the destructive-mode caveat appears right after the purpose. Slight penalty because the terseness borders on cryptic ('configured app' is undefined and the semicolon compresses two distinct ideas).

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?

Output schema exists and annotations cover the full safety profile, so the description does not need to explain return values. For a 7-parameter tool with 100% schema coverage, naming the purpose and the launch prerequisite covers what the structured fields do not.

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 enum'd mode parameter is documented inline ('launch if closed'), so the schema carries the parameter burden. The description only echoes the launch/mode relationship and adds no meaning about path, dryRun, planHash, or the expected-state/version guard fields.

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

Purpose4/5

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

States a specific verb+resource ('Plan/open a macOS Set') and implicitly distinguishes the two operating modes (plan vs. open/launch). It does not name or differentiate against siblings such as save_live_set or get_live_state, 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?

Provides one conditional guideline — 'launch requires closed Live and configured app' — which is genuinely useful for choosing the launch mode. But it gives no guidance on when to plan vs. open, when to use this instead of save_live_set/get_live_state, or when the tool should not be used.

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

override_parameter_automationB
Destructive

Explicitly take one exact active or overridden device/mixer automation control into manual control at one absolute native value or finite unit display. Keeps the envelope and playback. Active automation may advance before confirmation; manual values and native ancestry remain bound. Recording/count-in and unsafe targets refuse. One write with bounded readback; partial work remains without rollback/replay. All profile.

NameRequiredDescriptionDefault
valueNoAbsolute raw native target within observed bounds; quantized controls require an integer. No clamping.
dryRunNoFalse executes with token and hash.
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.
deviceIdNoID from list_devices.
planHashNoPlan hash.
parameterIdYesExact ID from get_parameter_automation_context; omit deviceId for mixer controls.
targetDisplayNoContinuous controls only: finite native display in Hz/kHz, ms/s, dB or %. Choose value for other native display formats.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.4/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, and the description adds substantial context beyond them: envelope/playback preservation, that active automation may advance before confirmation, refusal under recording/count-in, and that partial work remains with no rollback/replay. This is well above the annotation baseline, though the phrasing is cryptic in places.

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?

Information-dense to the point of being run-on and jargon-heavy ('manual values and native ancestry remain bound', 'All profile'), with the trailing fragment adding little clarity. Core action is front-loaded, but some sentences are opaque rather than efficient.

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 an output schema present, return values need not be explained, and annotations cover the safety profile. The description rounds this out with refusal conditions, partial-failure semantics, and envelope behavior, so an agent has what it needs to call a complex 9-param mutation 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 coverage is 100%, so the schema documents all nine parameters. The description hints at the value/targetDisplay distinction ('one absolute native value or finite unit display') but adds little syntax or format meaning beyond what the schema descriptions already provide. 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 a specific verb+resource: 'take one exact active or overridden device/mixer automation control into manual control at one absolute native value or finite unit display.' An agent can grasp the action, though the phrasing is dense and it never names its closest sibling, re_enable_parameter_automation, to disambiguate.

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

Usage Guidelines2/5

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

It supplies boundary conditions ('Recording/count-in and unsafe targets refuse') but gives no explicit when-to-use versus the automation siblings (re_enable_parameter_automation, set_selected_parameter). The agent must infer the selection logic from the parameter context tools.

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

panicC
Destructive

Plan or stop Live playback immediately using the guarded panic operation.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, so the agent knows this mutates. The description adds the notions of 'guarded' and 'immediately', but it never explains the two-phase plan-then-execute protocol or that execution requires a plan hash plus single-use token, which is the behaviorally important part of this tool.

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

Conciseness4/5

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

A single front-loaded sentence with no padding or filler. It is efficient, though the compressed phrasing 'Plan or stop' sacrifices clarity for brevity.

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?

An output schema and full annotation set reduce the burden, but for a destructive operation with a multi-step confirmation workflow the description should at least state that a plan must be generated before execution and what stopping playback affects. It is minimally adequate rather than complete.

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

Parameters3/5

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

Schema description coverage is 100%, so dryRun, planHash, confirmationToken, and expectedStateVersion are each documented in the schema. The description adds nothing about parameter semantics, which is acceptable at full coverage but earns only the baseline.

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 phrase 'Plan or stop Live playback immediately' identifies the resource (Live playback) and a stop action, but 'Plan or stop' conflates two distinct phases and is ambiguous on first read. It also fails to distinguish this from obvious siblings like transport_stop or stop_all_clips, which an agent would reasonably consider equivalent.

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 is given, and no alternative is named even though transport_stop, stop_all_clips, and set_transport_context all overlap with stopping playback. The word 'guarded' hints that this is not the ordinary stop path, but the agent is left to infer that.

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

perform_beat_repeat_fillA
Destructive

Set an existing native Beat Repeat's Repeat On for 0.25–8 requested wall-clock seconds, then release Off on Live display ticks without a client. Requires authorized playback, Repeat Off and no source recording/Repeat automation. Owns only Repeat; manual changes relinquish ownership. No beat timing, bypass or audible-result guarantee. Updated bridge; all profile.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.
deviceIdYesID from list_devices.
planHashNoPlan hash.
durationSecondsYesRequested wall-clock duration, not beat scheduling or a hard real-time bound.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

Adds meaningful context beyond the destructiveHint/readOnlyHint annotations: it is a timed mutation that owns only the Repeat parameter, relinquishes ownership if a user manually changes it, and makes no audible-result promise. It also notes the updated bridge/profile scope. No contradiction with annotations.

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 duration bounds, then preconditions and ownership in a compact run of sentences. Dense jargon like 'Updated bridge; all profile' is slightly cryptic but not wasted bulk.

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 destructive mutation with an output schema, it covers preconditions, scope of ownership, timing caveats, and the lack of audible guarantee. It is largely complete, with only the exact relationship to sibling Beat Repeat tools left implicit.

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 already documents duration, dryRun, planHash, confirmationToken, and expectedStateVersion. The description reinforces the wall-clock interpretation and 0.25–8 range, but adds little parameter detail beyond what the schema already provides, 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: setting a native Beat Repeat's Repeat On for a bounded wall-clock duration, then releasing Off. It implies differentiation from sibling on/off and grid/interval tools through 'Owns only Repeat' and the timed release semantics, though it never names the alternatives.

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 explicit preconditions: authorized playback, Repeat Off, and no source recording or Repeat automation. It also sets exclusions ('No beat timing, bypass or audible-result guarantee') but doesn't name which sibling to use for simple enable/disable or grid changes.

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

place_session_clip_in_arrangementA
Destructive

Copy a Session MIDI/warped-audio clip using its full loop plus lead-in or nonlooped marker span. Binds source identity/content; excludes file bytes and automation. Refuses overlap, frozen, recording and pending launches. Partial work remains with verification receipts. Limit: 4096 notes/clips. Updated bridge.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
trackIdYesID from list_tracks.
planHashNoPlan hash.
startBeatsYesNonnegative Arrangement start in beats.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/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, but the description goes further: it excludes file bytes and automation from the copy, enumerates refusal states, discloses non-atomic behavior ('partial work remains with verification receipts'), and imposes a 4096 note/clip limit. That is meaningful context above the annotation baseline, though the telegraphic phrasing leaves some of it ambiguous.

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?

Six short sentences, no filler, with the core action front-loaded and constraints following. The clipped, fragmentary style ('Refuses overlap, frozen, recording and pending launches') is efficient but occasionally costs readability.

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 destructive, state-versioned mutation with an output schema, the description covers source semantics, exclusions, failure modes, partial-failure behavior, and limits — enough for an agent to call it correctly. The main remaining gap is guidance on the dryRun/plan-hash confirmation flow, which is left entirely to the schema.

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

Parameters3/5

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

Schema coverage is 100%, so every parameter is already documented, and the description adds nothing about expectedStateVersion, dryRun, planHash, or confirmationToken beyond what the schema says. Baseline 3 applies when the schema does the heavy lifting.

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 ('Copy a Session MIDI/warped-audio clip') and pins down exactly which span is copied ('full loop plus lead-in or nonlooped marker span'). The 'Session' qualifier implicitly separates it from arrangement-to-arrangement siblings like copy_arrangement_clip_to_track and duplicate_clip, but that contrast is never made 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?

The description lists refusal conditions (overlap, frozen, recording, pending launches), which tells the agent some preconditions, but it never states when to choose this tool over duplicate_clip, duplicate_clip_loop, or copy_arrangement_clip_to_track. Usage is implied by the source-type phrasing rather than spelled out.

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

plan_arrangement_repeatA
Read-onlyIdempotent

Read an inventory map for repeating a whole Arrangement passage on explicit tracks into an empty destination window. Preserves relative clip offsets and gaps; reports boundary clips, destination content and planned overlaps. Up to 64 tracks, 512 source beats, 16 repeats and 256 placements. Non-atomic metadata preview, not a confirmation or content/automation verification. Each copy needs fresh guarded confirmation. All profile.

NameRequiredDescriptionDefault
trackIdsYesExact ordinary source tracks; copy stays on each source track.
repeatCountNoContiguous repeats of the full source window; defaults to one.
sourceEndBeatsYesExclusive source song beat; at most 512 beats after start.
sourceStartBeatsYesInclusive source song beat.
destinationStartBeatsYesStart of a disjoint destination window in song beats.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior5/5

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

Annotations already declare read-only/idempotent/non-destructive, and the description still adds real value: it discloses that relative clip offsets and gaps are preserved, that boundary clips, destination content and planned overlaps are reported, the hard limits (64 tracks, 512 beats, 16 repeats, 256 placements), that it is a non-atomic metadata preview lacking content/automation verification, and that each copy requires fresh confirmation.

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?

Front-loaded and dense with useful constraints, but phrasing is terse and jargon-heavy, and the trailing 'All profile.' is cryptic and unexplained, reducing readability.

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 an output schema present, return values need not be explained, yet the description still covers limits, safety workflow, and preview semantics. Full limits on repeat/placement counts are covered; only the odd closing phrase leaves ambiguity.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description mostly restates schema bounds (tracks, beats, repeats) and adds only the semantic notion of an 'empty destination window', which the schema's destinationStartBeats description already conveys.

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: reads an inventory map for repeating a whole Arrangement passage into an empty destination window. The scope (explicit tracks, empty destination, whole passage) distinguishes it from generic clip placement, though it does not name a specific sibling alternative.

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?

Implies when to use it via preconditions (empty destination window, explicit ordinary source tracks, bounded repeat counts) and clarifies it is a preview needing fresh guarded confirmation per copy. It never explicitly directs the agent to a sibling tool such as duplicate_arrangement_clip or audition_arrangement_passage for related tasks.

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

plan_audio_midi_sketchA
Read-onlyIdempotent

Propose approximate monophonic source-audio MIDI notes in native warped clip beats. Uses current loop/markers or an explicit region, 0.256–30 seconds, one selected channel and assigned uniform velocity. Does not render clip pitch, groove or effects, change audio, or create MIDI.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
trackIdYesID from list_tracks.
endBeatsNoExplicit clip-beat end; at most 256 quarter-note beats.
velocityNoUniform assigned velocity, default 100; not measured dynamics.
startBeatsNoOptional explicit clip-beat region start; requires endBeats.
channelIndexNoSelected source channel, zero-based; defaults to 0.

Output Schema

NameRequiredDescription

No output parameters

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 real value beyond them by enumerating exclusions: no pitch, groove or effects modeling, no audio mutation, no MIDI creation — which tells the agent the output is purely a plan to be consumed by another tool.

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

Conciseness4/5

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

Two packed sentences, zero filler, with the core action and the exclusion list front-loaded. The phrasing is telegraphic ('one selected channel and assigned uniform velocity'), which is efficient but slightly dense on first read.

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 rich annotation set, a 100%-documented schema, and an output schema, the description only needs to add scope, constraints and non-goals — which it does. The main remaining gap is that it doesn't say what the agent should do with the result (e.g., that a separate creation step is required).

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 a constraint absent from the schema: the 0.256–30 second region limit (schema only states clip-beat bounds). It also clarifies that channel selection is singular and velocity is an assigned uniform value rather than measured dynamics, reinforcing the schema text.

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

Purpose4/5

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

Uses a specific verb ('Propose') with a precise resource ('approximate monophonic source-audio MIDI notes') and a stated coordinate system ('native warped clip beats'). This separates it from sibling analysis tools (analyze_audio_clip) and tuning tools (apply_monophonic_audio_tuning), though it never names an alternative outright.

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 states the inputs it consumes ('current loop/markers or an explicit region') and hard limits (0.256–30 seconds, one channel, uniform velocity), so the calling conditions are inferable. But there is no explicit when-to-use statement or comparison against siblings like propose_audio_transient_warp or apply_monophonic_audio_tuning.

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

plan_drum_patternB
Read-onlyIdempotent

Plan explicit multi-lane drum notes against the current Live meter on a straight-sixteenth, eighth-triplet, or sixteenth-triplet grid. Supports per-lane accents without treating style examples as universal rules.

NameRequiredDescriptionDefault
barsYes
gridYes
lanesYesExplicit drum lanes and their per-bar steps.
startBeatNoAbsolute clip beat offset; defaults to zero.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare a read-only, idempotent, non-destructive operation, so the safety profile is covered. The description adds useful context that planning is anchored to the current Live meter and that per-lane accents are supported, but the trailing clause 'without treating style examples as universal rules' is murky and conveys little actionable 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?

Two sentences, front-loaded with the core purpose and scope, with no wasted filler. The second sentence is slightly vague but does not bloat the text.

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

Completeness3/5

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

An output schema exists and annotations cover the safety profile, so return values and side effects need not be spelled out. The gap is guidance: with many closely related drum-planning siblings, the description should indicate when this planner is the right choice.

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 50%, so the description must carry some weight. It enumerates the grid variants (matching the enum) and mentions per-lane accents (mapping to accentSteps/accentVelocity), but says nothing about 'bars' or 'startBeat', leaving those 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 ('Plan explicit multi-lane drum notes') plus the grid context, which lets an agent distinguish it from creation tools like create_drum_pattern_clip. It does not, however, differentiate itself against the closest siblings plan_drum_pattern_edit or plan_drum_variation, 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 Guidelines2/5

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

The description gives the operating context ('against the current Live meter') but never says when to choose this tool over plan_drum_variation, plan_drum_pattern_edit, or apply_drum_variation. There is no exclusion or alternative routing, leaving the agent to infer selection from the name alone.

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

plan_drum_pattern_editA
Read-onlyIdempotent

Plan replacement of explicitly selected drum lanes and bars in an existing MIDI clip while preserving unrelated notes. Empty activeSteps clears that lane in the range.

NameRequiredDescriptionDefault
barsYes
gridYes
lanesYesDrum lanes to replace inside the selected bars.
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
trackIdYesID from list_tracks.
startBarYes

Output Schema

NameRequiredDescription

No output 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=true, idempotentHint=true, and destructiveHint=false, so the description is not required to establish safety. It adds useful behavioral detail by noting that unrelated notes are preserved and that an empty activeSteps array clears the lane within the range, which goes beyond the structured 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 description is two tight sentences with no filler. The main operation is front-loaded, and the second sentence delivers the most important edge-case behavior about empty activeSteps.

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 planning tool with an output schema and safety annotations, the description provides enough context to understand the core operation and one critical edge case. It does not explicitly state that no mutation occurs, but readOnlyHint covers that safety profile.

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 schema description coverage at 50%, the description compensates for an important gap by explaining that empty activeSteps clears the selected lane in the range, a semantic not captured by the schema's brief description. It also ties lanes and bars to explicit selection, though it does not clarify grid/startBar 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 ('Plan replacement') and resource ('drum lanes and bars in an existing MIDI clip'), and it immediately clarifies the preservation behavior for unrelated notes. This is distinguishable from sibling tools like edit_drum_pattern_clip because it explicitly describes planning rather than applying changes.

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

Usage Guidelines3/5

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

The description implies when to use the tool by describing the replacement scope, but it does not explicitly name alternatives such as plan_drum_pattern or edit_drum_pattern_clip, nor does it state when not to use it. The context is clear enough for basic selection but lacks direct usage routing.

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

plan_drum_variationA
Read-onlyIdempotent

Plan deterministic bounded timing and velocity humanization plus an optional explicit final-bar fill. Preserves unrelated notes and rejects collisions.

NameRequiredDescriptionDefault
barsYes
fillNo
gridYes
seedYesDeterministic variation seed.
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
trackIdYesID from list_tracks.
startBarYes
laneNotesYesUnique drum pitches to humanize.
timingAmountYesMaximum timing movement as a fraction of the selected grid step.
velocityAmountYesMaximum velocity movement.
preserveAccentsAboveYesRequired threshold; do not alter velocity at or above it.

Output Schema

NameRequiredDescription

No output parameters

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, closed-world, but the description adds real behavioral context beyond them: 'deterministic' (reinforcing reproducibility), 'bounded' movement, that unrelated notes are preserved, and that collisions are rejected as a failure mode. That preservation/rejection contract is genuinely useful and not derivable from the 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?

Two tightly packed sentences with zero filler; the core action is front-loaded and the behavioral contract (preserve/reject) follows. Every clause carries information.

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 that an output schema exists (return values need no explanation) and annotations plus a nested schema carry the structural detail, the description supplies the remaining behavioral essentials: determinism, bounding, note preservation, and collision rejection. What remains (per-param detail, plan-vs-apply routing) is a minor gap against an already rich structured surface.

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 64%, so the description should add some param meaning, and it does conceptually map timingAmount/velocityAmount ('bounded timing and velocity'), seed ('deterministic'), and the nested fill object. However it leaves grid, laneNotes, startBar, bars, and preserveAccentsAbove unexplained, so it only partially compensates for the coverage gap.

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

Purpose4/5

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

The description states a specific verb ('Plan') and a precise resource (deterministic bounded timing and velocity humanization plus an optional final-bar fill), so an agent can tell what the tool produces. It does not explicitly contrast with close siblings such as apply_drum_variation or plan_midi_humanization, so it falls short of full sibling differentiation.

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 vs alternatives; the 'plan vs apply' relationship with the sibling apply_drum_variation is left to inference. The only usage hint is that the fill is optional, which is closer to schema framing than guidance.

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

plan_grid_envelope_patternA
Read-onlyIdempotent

Read current Live grid and return exact on/off Session clip envelope steps for a straight or triplet rhythm, including Beat Repeat Repeat. No Live edits. Supply the exact native on/off values; set_clip_parameter_envelope validates the destination clip and parameter before any write. Rejects grid/bar misalignment.

NameRequiredDescriptionDefault
barsYes
gridYes
onValueYesNative parameter value during active steps.
offValueYesNative parameter value during inactive steps.
startBeatNoAbsolute Session clip beat offset; default zero.
activeStepsYesUnique 1-based active step numbers within each bar.

Output Schema

NameRequiredDescription

No output 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 destructiveHint=false, so safety is covered. The description adds genuinely new behavior: that the tool performs no edits, that it rejects grid/bar misalignment, and that validation happens downstream in set_clip_parameter_envelope.

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 tight sentences, front-loaded with the core action and scoping before the workflow and validation notes. Each sentence carries distinct information with little waste.

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?

An output schema exists, so return-value details needn't be restated, and annotations carry the safety profile. The description covers purpose, scope, preconditions, and the downstream write path, leaving only minor gaps like exact error semantics for misalignment.

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 67%, so the schema documents onValue, offValue, startBeat, and activeSteps. The description echoes 'native on/off values' and the rhythm types (straight/triplet), which loosely maps to grid and the value params but adds no format or constraint detail beyond the schema. 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?

The description opens with a specific verb and resource ('Read current Live grid and return exact on/off Session clip envelope steps') and scopes it to straight or triplet rhythms including Beat Repeat Repeat. It also implicitly distinguishes itself from the write-path sibling set_clip_parameter_envelope, so an agent can tell planning from writing 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?

It clarifies this is a read/plan step ('No Live edits') and points to set_clip_parameter_envelope as the subsequent validating write, establishing a workflow. It also names a precondition ('Rejects grid/bar misalignment'), though it doesn't spell out a full when-not-to-use rule.

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

plan_group_system_recallA
Read-onlyIdempotent

Read a saved group-system capture and check a one-to-one mapping onto existing tracks in matching Live order and group hierarchy. Validates each exposed track state for individual guarded recall; does not mutate Live or perform a multi-track transaction.

NameRequiredDescriptionDefault
nameYesExact saved group-system snapshot name.
mappingYesOne explicit source-to-target entry for every saved track.
busTrackIdYesID from list_tracks.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/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. The description adds useful context by stating that it validates each exposed track state for individual guarded recall and explicitly clarifies that it does not perform a multi-track transaction.

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

Conciseness5/5

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

The description is two tight sentences, front-loads the core action, and contains no redundant or filler text. Every sentence contributes to understanding the tool's purpose and boundaries.

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?

The tool has an output schema and complete parameter descriptions, so return values do not need explanation here. The description covers validation behavior and non-mutation, though it could be slightly stronger with explicit usage prerequisites.

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 meaningful constraints for the mapping parameter: the mapping must be one-to-one onto existing tracks and match Live order and group hierarchy, which goes beyond the schema's per-item source/target 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?

The description states a specific verb and resource: reading a saved group-system capture and checking a one-to-one mapping onto existing tracks. It does not name sibling tools such as recall_group_system_recall directly, but the contrast with mutation is clear from 'does not mutate Live or perform a multi-track transaction.'

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 this is a planning/validation step before guarded recall, but it does not explicitly say when to use it versus alternatives like recall_group_system_recall. The only explicit exclusion is that it does not mutate Live or perform a multi-track transaction.

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

plan_midi_chord_arpeggiationB
Read-onlyIdempotent

Plan deterministic up, down, up-down, or seeded-random arpeggiation of complete chord onsets.

NameRequiredDescriptionDefault
gateYesNote duration as a fraction of stepBeats.
modeYesPitch traversal order for each complete chord onset.
seedYesDeterministic seed used by random mode.
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
noteIdsYesUnique stable note IDs at complete chord onsets.
trackIdYesID from list_tracks.
stepBeatsYesSpacing between arpeggiated notes in beats.

Output Schema

NameRequiredDescription

No output parameters

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, and destructiveHint=false, so the safe, non-mutating profile is covered. The description adds that output is deterministic and scoped to 'complete chord onsets', which is useful context, but it doesn't explain what planning produces or how it relates to the apply step.

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 efficient, though its terseness is arguably part of why usage context is thin.

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?

An output schema exists, so return values need no explanation, and the schema fully covers parameters. However, for a planning tool in a family with clear plan/apply pairs, the description omits how this fits the workflow or what it feeds into, leaving an agent to infer the planning-vs-application distinction.

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 all seven parameters are already documented, including mode values and the 'fraction of stepBeats' semantics of gate. The description adds the mode names and the 'complete chord onsets' constraint but no syntax 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.

Purpose4/5

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

The description states a specific verb (plan) and resource (arpeggiation of complete chord onsets) and enumerates the four modes. It could differentiate from the sibling apply_midi_chord_arpeggiation or other plan_midi_* tools, but the core purpose is 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 when-to-use, when-not, or prerequisite guidance. It never mentions the apply_midi_chord_arpeggiation counterpart or what conditions call for planning vs applying. Usage is only loosely implied by the name.

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

plan_midi_chord_doublingB
Read-onlyIdempotent

Plan exact bass, top, or outer octave chord doublings across complete selected onsets.

NameRequiredDescriptionDefault
modeYesAdd the lowest voice down an octave, highest voice up an octave, or both outer voices.
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
noteIdsYesUnique stable note IDs at complete chord onsets.
trackIdYesID from list_tracks.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/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 the safety profile is covered structurally. The description adds one real behavioral detail — that onsets must be complete chords — but says nothing about what a 'plan' is, whether it is persisted, or how it is later applied.

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

Conciseness5/5

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

A single front-loaded sentence with no filler; the voice options are enumerated inline rather than spread across a paragraph.

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 an output schema present and annotations covering safety, the description is adequate for invocation. The missing piece is the plan-to-apply lifecycle, which matters for an agent choosing between the two doubling tools.

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 mode enum is fully documented with per-value semantics, so the schema carries the load. The description's mention of bass/top/outer mirrors the enum rather than adding new meaning, 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 (Plan) and resource (octave chord doublings) and enumerates the voice options (bass, top, outer), which cleanly separates it from inversion/drop-voicing siblings. It does not, however, distinguish itself from the near-identical apply_midi_chord_doubling, leaving the plan-vs-apply split to inference.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance and no mention of the apply_midi_chord_doubling sibling that presumably consumes the plan. The only usage signal is the embedded constraint 'complete selected onsets', which hints at a precondition but is not framed as guidance.

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

plan_midi_chord_inversionA
Read-onlyIdempotent

Plan deterministic octave rotation of complete chord onsets while preserving all non-pitch note state.

NameRequiredDescriptionDefault
stepsYesNumber of chord tones to rotate at each selected onset.
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
noteIdsYesUnique stable note IDs at complete chord onsets.
trackIdYesID from list_tracks.
directionYesRotate the lowest notes upward or highest notes downward by one octave.

Output Schema

NameRequiredDescription

No output 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 and non-destructive behavior, so the safety profile is covered. The description adds genuinely useful behavioral context beyond them: the rotation is deterministic and all non-pitch note state is preserved. It does not, however, clarify what 'planning' produces or how it relates to a later apply step.

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 states the operation, its determinism, and its preservation guarantee with no 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?

An output schema exists so return values need not be described, annotations carry the safety profile, and parameters are fully documented in the schema. The only gap is the plan-then-apply relationship to apply_midi_chord_inversion, which an agent working a planning workflow would benefit from knowing.

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 five parameters including the up/down enum and the steps bounds. The description reinforces the chord-onset scope but adds no syntax or format detail beyond what the schema provides, 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 a specific verb (plan), resource (octave rotation of complete chord onsets) and a scope constraint (complete chord onsets only). It is distinguishable from the write-side apply_midi_chord_inversion by the 'plan' prefix, but it never names that sibling to make the planning-vs-applying 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?

There is no when-to-use guidance, no statement of prerequisites, and no routing to the sibling apply_midi_chord_inversion that presumably executes the plan. The 'plan' verb hints at a planning workflow, but nothing tells the agent when this tool is appropriate versus the apply variant.

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

plan_midi_chord_voice_leadingA
Read-onlyIdempotent

Plan deterministic octave-only voice leading across complete chord onsets, anchored to the first chord.

NameRequiredDescriptionDefault
modeYesLead every voice by octave or keep each chord's current bass fixed.
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
noteIdsYesUnique stable note IDs across complete ordered chord onsets.
trackIdYesID from list_tracks.
maxPitchYes
minPitchYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior4/5

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

The annotations already establish that this is a read-only, idempotent, non-destructive operation. The description adds meaningful behavioral detail beyond annotations by specifying deterministic octave-only motion, complete chord onsets, and anchoring to the first chord. It does not explain return shape, but an output schema exists.

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 tightly packed sentence with the core operation and key qualifiers front-loaded. Every phrase contributes to scope or behavior, with no filler.

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

Completeness3/5

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

For a complex planning tool with six required parameters, the description communicates the core algorithm and scope but omits usage guidance relative to sibling planners and the apply step. Annotations and the output schema cover safety and return values, so the remaining gap is mainly routing and parameter guidance.

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 67%, with descriptions for mode, clipId, noteIds, and trackId, while minPitch and maxPitch rely on schema constraints alone. The description adds conceptual constraints such as octave-only motion and complete chord onsets, but it does not directly explain parameter usage or compensate for the undocumented pitch-range parameters.

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

Purpose4/5

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

The description states a specific verb and resource: 'Plan ... voice leading' with precise qualifiers ('deterministic octave-only', 'complete chord onsets', 'anchored to the first chord'). It is clearly not a generic voice-leading tool, but it does not explicitly distinguish itself from nearby siblings such as plan_midi_chord_inversion or apply_midi_chord_voice_leading.

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 implies the tool is for planning octave-only voice leading, but it gives no explicit when-to-use guidance, no exclusions, and no alternatives. It does not say when an agent should choose this over apply_midi_chord_voice_leading or other chord-planning siblings.

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

plan_midi_diatonic_chord_qualityB
Read-onlyIdempotent

Plan complete selected onsets as scale-native, secondary-dominant, parallel-minor borrowed, suspended, added-tone, or altered-dominant voicings. Supports per-onset functions, recipes, inversions, voicing modes, and explicit scale-degree slash basses.

NameRequiredDescriptionDefault
modeYes
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
noteIdsYesUnique stable note IDs at complete chord onsets.
trackIdYesID from list_tracks.
chordSizeNoExact voicing recipe. Triad, seventh, and ninth stack thirds from Live's scale; suspended, added-tone, and dominant recipes use their named literal intervals, with tensions voiced above the chord.
chordSizesNoOne exact voicing recipe for each ordered onset.
inversionsNoOptional inversion steps for each ordered onset; zero keeps root position.
bassDegreesNoOptional Live scale degree for one added slash-bass voice below each ordered onset.
rootDegreesYesOne root degree from Live's current scale for each ordered onset.
voicingModesNoOptional deterministic voicing mode for each ordered onset.
harmonicFunctionsNoOptional harmonic function for each ordered onset; secondary-dominant root degrees name tonicized targets.

Output Schema

NameRequiredDescription

No output 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=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds some behavioral scope by specifying that it plans complete selected onsets and supports per-onset features, but it does not disclose anything about the returned plan or how it differs behaviorally from the apply sibling beyond the word 'Plan'.

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 two tightly written sentences with no filler. The core planning action and supported voicing categories are front-loaded, followed by a compact list of per-onset capabilities.

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 complex 11-parameter tool with an output schema and rich annotations, the description covers the key voicing categories and optional per-onset features. It is nearly complete, though it could explicitly frame the plan stage relative to the apply tool to remove any ambiguity about whether chords are actually modified.

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 high at 91%, so the schema already carries most parameter meaning. The description maps conceptually to several optional parameters (per-onset functions, recipes, inversions, voicing modes, slash basses), but it does not add syntax or format details beyond what the schema provides, so the baseline of 3 is appropriate.

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

Purpose4/5

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

The description uses a specific verb ('Plan') and resource ('complete selected onsets as ... voicings'), and enumerates the harmonic categories it covers. This makes the tool's purpose clear, though it does not explicitly name the contrasting apply_midi_diatonic_chord_quality sibling to clarify plan-vs-apply boundaries.

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 lists capabilities but gives no guidance on when to use this tool versus alternatives such as apply_midi_diatonic_chord_quality or other planning tools. It does not state preconditions, exclusions, or workflow context beyond the implied 'plan' verb.

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

plan_midi_diatonic_harmonyA
Read-onlyIdempotent

Plan literal harmony voices above or below exact in-scale MIDI notes using Live's current key and scale.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
noteIdsYesUnique stable in-scale source note IDs.
trackIdYesID from list_tracks.
degreeOffsetsYesUnique signed non-zero scale-degree offsets for added harmony voices.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/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 safety is covered. The description adds useful context about the key/scale source and the literal, in-scale requirement, but says nothing about what happens with out-of-scale or non-existent note IDs, and the return value is only covered by the separate 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.

Conciseness5/5

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

A single front-loaded sentence with no filler; the operative verb and the key constraint appear immediately.

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

Completeness4/5

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

With rich annotations, a full schema and an output schema, the remaining burden is modest and the description covers the core operation. It is slightly incomplete in not flagging the plan-vs-apply relationship that its sibling apply_midi_diatonic_harmony makes relevant.

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 including degreeOffsets is already documented in the schema; baseline is 3. The phrase 'above or below' loosely reinforces the sign semantics of degreeOffsets but adds no format or edge-case 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?

Specific verb (plan) plus object (harmony voices) and the concrete operation (literal harmony above/below in-scale MIDI notes using Live's current key and scale). It is clear what it produces, but it never distinguishes itself from the adjacent apply_midi_diatonic_harmony or plan_midi_diatonic_transposition siblings, which an agent must infer.

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

Usage Guidelines3/5

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

Usage is only implied through embedded constraints ('in-scale', 'using Live's current key and scale'). There is no statement of when to prefer this over apply_midi_diatonic_harmony, nor any prerequisites such as requiring source notes already in the scale.

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

plan_midi_diatonic_transpositionB
Read-onlyIdempotent

Plan scale-degree transposition of exact in-scale MIDI note IDs using Live's current key and scale.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
noteIdsYesUnique stable in-scale note IDs to transpose.
trackIdYesID from list_tracks.
scaleStepsYesSigned non-zero movement in degrees of Live's current scale.

Output Schema

NameRequiredDescription

No output parameters

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/non-destructive, so safety is covered. The description adds that the operation depends on Live's live key and scale state and operates only on in-scale note IDs, which is useful context, but it does not explain what happens to out-of-scale input or how the plan output is consumed.

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 brevity comes at the cost of the usage routing noted elsewhere.

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

Completeness3/5

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

Output schema and annotations carry much of the burden, so the short description is defensible. However, given the crowded sibling space of plan_*, plan_midi_transposition, and apply_midi_diatonic_transposition, the description omits the relationships and exclusions an agent needs to select it 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%, so all four parameters are already documented (including scaleSteps as signed non-zero degrees and noteIds as in-scale). The description reinforces the in-scale/key-context meaning but adds little 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?

States a specific verb (plan) and resource (diatonic/scale-degree transposition of in-scale MIDI note IDs). The qualifiers 'scale-degree', 'exact in-scale', and 'Live's current key and scale' distinguish it conceptually from the plain plan_midi_transposition sibling, 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?

The verb 'plan' implies a non-destructive preview step, but the description never says to use this before apply_midi_diatonic_transposition, nor when to prefer diatonic over chromatic transposition. An agent must infer the plan/apply pairing and the diatonic-vs-plain choice from the name alone.

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

plan_midi_drop_voicingB
Read-onlyIdempotent

Plan deterministic drop-2, drop-3, or drop-2-and-4 voicings for complete chord onsets.

NameRequiredDescriptionDefault
modeYesTraditional upper-voice octave drop applied independently at each onset.
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
noteIdsYesUnique stable note IDs at complete chord onsets.
trackIdYesID from list_tracks.

Output Schema

NameRequiredDescription

No output 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=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds useful behavioral context with 'deterministic' and 'complete chord onsets', but does not explain planning-vs-application behavior or failure constraints beyond what the schema and annotations provide.

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 front-loaded sentence with no redundant or filler content. Every phrase contributes to identifying the operation and its scope.

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 complete input schema, an output schema, and annotations covering safety and idempotency, the description is sufficient to identify the operation. It remains slightly incomplete because it does not explicitly route the agent between this planning tool and the closely named apply_midi_drop_voicing 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 description coverage is 100%, and the schema already defines all four parameters including the mode enum and noteIds constraints. The description names the voicing modes and chord-onset scope, but adds no parameter meaning beyond the schema's own 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?

The description states a specific verb (Plan) and resource (drop-2, drop-3, drop-2-and-4 voicings) with a scope constraint (complete chord onsets). It is clear on its own, but it does not explicitly differentiate itself from sibling apply_midi_drop_voicing or other plan_midi_* voicing tools.

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

Usage Guidelines2/5

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

The description gives no when-to-use guidance, no exclusions, and does not name alternatives such as apply_midi_drop_voicing or plan_midi_chord_voice_leading. An agent must infer the planning use case from the name alone.

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

plan_midi_gate_patternB
Read-onlyIdempotent

Plan explicit repeating gate ratios across complete ordered MIDI onsets on a straight or triplet beat grid.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
noteIdsYesUnique stable note IDs at complete selected onsets.
trackIdYesID from list_tracks.
gridBeatsYesReference grid step in beats, including fractional triplet values.
gateRatiosYesExplicit repeating gate ratios by ordered onset.

Output Schema

NameRequiredDescription

No output parameters

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 a closed world, so the safety profile is covered. The description adds the useful constraint that onsets must be 'complete' and ordered and that the grid may be triplet-based, but it says nothing about what the plan returns or how it is consumed — only the output schema covers that.

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 and scope front-loaded and no filler. Slight density cost: 'complete ordered MIDI onsets' is a compressed constraint that takes a moment to unpack.

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?

Read-only annotation coverage plus a full schema and an output schema mean the definition is close to sufficient for correctness of invocation. The missing piece is the relationship to apply_midi_gate_pattern and how the produced plan is handed off, which matters in a sibling set this large.

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 five parameters are documented in the schema itself; the baseline is 3. The description reinforces that gateRatios are explicit and repeating and that gridBeats supports fractional triplet values, but adds no syntax beyond what the schema already states.

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 (plan) and resource (MIDI gate pattern) with concrete scope: repeating gate ratios applied to ordered onsets on a straight or triplet grid. That distinguishes it from ratchet/probability siblings, though it never names a sibling explicitly.

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

Usage Guidelines2/5

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

No statement of when to use this versus apply_midi_gate_pattern, which exists in the sibling list and is presumably the mutation counterpart. There is also no mention of prerequisites such as needing a fetched notes list or selected onsets, so the agent must infer the planning-vs-applying split from the verb alone.

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

plan_midi_humanizationA
Read-onlyIdempotent

Plan deterministic bounded timing and velocity humanization for exact MIDI note IDs. Preserves expression metadata and rejects new same-pitch collisions.

NameRequiredDescriptionDefault
seedYesDeterministic humanization seed.
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
noteIdsYesUnique stable note IDs to humanize.
trackIdYesID from list_tracks.
gridBeatsYesReference grid step in beats, including fractional triplet values.
maxVelocityOffsetYesMaximum absolute velocity movement.
maxTimingOffsetBeatsYesMaximum absolute timing movement in beats; must not exceed half gridBeats.

Output Schema

NameRequiredDescription

No output 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 genuine context beyond that: results are deterministic via seed, offsets are bounded, existing expression metadata is preserved, and same-pitch collisions are rejected rather than silently created.

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 load-bearing: the first defines the operation and its bounds, the second states the preservation guarantee and the rejection condition. Front-loaded with the core action and 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 annotations and an output schema present, the description covers determinism, bounding, metadata preservation and the collision failure mode. The remaining gap is what a rejected collision actually returns and how this plan is subsequently applied or discarded, which the output schema partially covers.

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 seed, gridBeats, maxTimingOffsetBeats, maxVelocityOffset and noteIds with constraints. The description reinforces 'exact MIDI note IDs' and the bounded/deterministic nature but adds no format or interaction 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?

States a specific verb and resource: plan bounded timing and velocity humanization for exact MIDI note IDs. Scope (deterministic, bounded) is clear, but the description never contrasts this with the apply-side sibling humanize_midi_notes, so the plan-vs-apply distinction rests on the naming convention 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 word 'Plan' implies a dry-run/preview step ahead of applying, and the required seed/grid/max-offset parameters imply intent, but there is no explicit when-to-use, no prerequisite statement, and no named alternative such as humanize_midi_notes. Usage is inferable rather than stated.

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

plan_midi_probability_patternB
Read-onlyIdempotent

Plan explicit repeating playback probabilities across complete ordered MIDI onsets.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
noteIdsYesUnique stable note IDs at complete selected onsets.
trackIdYesID from list_tracks.
probabilitiesYesExplicit repeating probabilities from 0 to 1.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare the operation as read-only, idempotent, non-destructive, and closed-world. The description adds domain context about repeating probabilities and ordered onsets, but does not clarify what a 'plan' produces or how it differs behaviorally from applying a pattern, so it adds only moderate value 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.

Conciseness4/5

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

It is a single front-loaded sentence with no wasted wording. The phrase 'complete ordered MIDI onsets' is slightly dense, but the definition remains compact and focused.

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 a complete input schema, output schema, and rich annotations, the description does not need to explain return values or safety. However, it omits the important distinction between planning a probability pattern and applying one, leaving a meaningful contextual gap for an agent choosing among sibling tools.

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 four parameters are already documented, including the ordered mapping between noteIds and probabilities. The description reinforces the 'ordered onset' idea but adds no syntax, constraints, or pairing details 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 a specific verb and resource: planning MIDI probability patterns across note onsets. It is clear enough to distinguish a probability-pattern tool from velocity, gate, or ratchet planners, although it does not explicitly contrast itself with the closely related apply_midi_probability_pattern sibling.

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

Usage Guidelines2/5

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

It gives no guidance on when to use this planning tool instead of apply_midi_probability_pattern or other MIDI pattern planners. There are no prerequisites or exclusions, so the agent must infer usage from the name alone.

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

plan_midi_ratchet_patternB
Read-onlyIdempotent

Plan explicit straight or triplet MIDI repeats across complete ordered onsets.

NameRequiredDescriptionDefault
gateYesEach repeated note's duration as a fraction of its subdivision.
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
noteIdsYesUnique stable note IDs at complete selected onsets.
trackIdYesID from list_tracks.
spanBeatsYesTotal beat span occupied by every selected onset's repeats.
repeatCountsYesRepeating ratchet count by ordered onset; 3 creates an exact triplet inside spanBeats.

Output Schema

NameRequiredDescription

No output 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=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds the constraint that onsets must be complete and ordered and that repeats must fit within spanBeats, but it does not clarify what the planning output contains or how it differs from applying the pattern.

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

Conciseness5/5

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

A single front-loaded sentence with no wasted words. The core scope and qualifier are immediately visible.

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 an output schema, full parameter coverage, and annotations covering read-only/idempotent behavior, the description is nearly sufficient. The main gap is not routing the agent to apply_midi_ratchet_pattern after planning, which would complete the workflow context.

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 six parameters including the triplet implication for repeatCounts=3. The description only restates the high-level constraint ('complete ordered onsets') and does not add syntax or edge-case meaning 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 a specific verb ('Plan') and resource ('MIDI repeats'/'ratchet pattern') and qualifies the scope as straight or triplet repeats across complete ordered onsets. That is clear enough to distinguish it from generic MIDI-editing siblings, though it never names apply_midi_ratchet_pattern as the execution counterpart.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to call this versus apply_midi_ratchet_pattern or the other plan_midi_* tools. The 'plan' prefix implies pre-application drafting, but the description neither states prerequisites nor warns that this only returns a plan.

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

plan_midi_scale_chord_remappingA
Read-onlyIdempotent

Plan complete chord onsets onto explicit degrees of Live's current scale while preserving chord intervals and expression.

NameRequiredDescriptionDefault
modeYesAnchor each chord near its source register or each later chord near the previous remapped bass.
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
noteIdsYesUnique stable note IDs at complete chord onsets.
trackIdYesID from list_tracks.
targetDegreesYesOne target Live scale degree for each ordered chord onset.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world behavior. The description adds useful behavioral context by stating that chord intervals and expression are preserved, but it does not cover edge cases or explain how the plan output is structured beyond what the output schema provides.

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

Conciseness5/5

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

The description is a single front-loaded sentence with no filler. It efficiently states the action, target, and preservation guarantee.

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 rich annotations, 100% schema coverage, and an output schema, the description is largely complete for correct invocation. Its main gap is the lack of explicit routing between this planning tool and its apply counterpart.

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 five parameters are fully documented in the input schema. The description reinforces that target degrees are explicit and that chord onsets should be complete, but it adds little parameter-level meaning beyond the schema 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?

The description states a specific verb and resource: planning chord onsets onto explicit degrees of Live's current scale, with a preservation constraint. It is clear what the tool does, but it does not explicitly name or distinguish itself from the sibling apply_midi_scale_chord_remapping 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?

The use of 'Plan' implies this is the planning stage rather than the mutation stage, but the description does not explicitly state when to use it versus apply_midi_scale_chord_remapping or other related planning tools. Usage is implied rather than guided.

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

plan_midi_strum_patternB
Read-onlyIdempotent

Plan deterministic up, down, or alternating chord attacks while preserving every selected note end.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
noteIdsYesUnique stable note IDs at complete chord onsets.
trackIdYesID from list_tracks.
directionYesPitch order for each chord; alternating starts upward and reverses on each following onset.
spreadBeatsYesTotal beat distance from the first to last attack in each chord.

Output Schema

NameRequiredDescription

No output parameters

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 and destructiveHint=false, so the safety profile is covered. The description does add real context beyond that: 'deterministic' signals reproducible output, and 'preserving every selected note end' discloses that only attack onsets shift, not note durations. It stops short of saying the result must be applied via another 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?

One sentence with the verb front-loaded and zero filler; the direction modes and the note-end guarantee are packed in efficiently. The phrase 'chord attacks' is slightly jargony but contextually clear.

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?

An output schema exists, so return values need no explanation, and annotations cover the safety profile. What is missing is the plan/apply relationship — an agent cannot tell from this description whether the plan is persisted, what it should do with it, or that apply_midi_strum_pattern is the next step.

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%: direction's enum semantics, spreadBeats' meaning and bounds, and the noteIds/trackId/clipId sourcing are all documented in the schema. The description adds nothing parameter-specific, 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?

States a specific verb (plan) and resource (chord strum pattern) plus the three direction modes and the constraint that note ends are preserved. It is clearly distinguishable from generic note tools, but it never names apply_midi_strum_pattern, the obvious sibling, so the plan-vs-apply split must be inferred from naming convention 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?

There is no when-to-use statement, no mention of prerequisites, and no reference to the apply_midi_strum_pattern alternative that presumably consumes this plan. The agent is left to infer the entire workflow from the tool name.

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

plan_midi_transpositionA
Read-onlyIdempotent

Plan exact chromatic transposition of stable MIDI note IDs while preserving all non-pitch note state.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
noteIdsYesUnique stable note IDs to transpose.
trackIdYesID from list_tracks.
semitonesYesSigned non-zero chromatic transposition in semitones.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/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. The description adds genuinely useful behavioral context beyond that: only pitch changes while 'all non-pitch note state' (velocity, timing, etc.) is preserved. It does not explain the plan/apply handoff, but with annotations present the bar is lower.

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, front-loaded on the verb and resource, with no filler. It is arguably undersized for a four-parameter planning tool, but nothing in it 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?

An output schema exists, so return values need no explanation, and annotations cover the safety profile. The description is complete enough to call the tool correctly, though it omits the workflow relationship to apply_midi_transposition and plan_midi_diatonic_transposition.

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 every parameter is documented in-schema (including the non-zero semitone constraint and stable note ID semantics). The description adds only the notion of 'exact chromatic' transposition, 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 a specific verb (plan), a specific resource (chromatic transposition of MIDI note IDs), and a distinctive constraint (preserving all non-pitch note state). The word 'chromatic' implicitly contrasts with the diatonic sibling, but no sibling tool is named explicitly, so the differentiation is left to inference.

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 or when-not-to-use guidance. The agent must infer from the name alone that this 'plan' step precedes apply_midi_transposition and that plan_midi_diatonic_transposition is the in-scale alternative; the description says nothing about either.

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

plan_midi_velocity_curveB
Read-onlyIdempotent

Plan exact crescendo, decrescendo, fixed, or repeating accent velocities across complete ordered MIDI onsets.

NameRequiredDescriptionDefault
curveYesExact crescendo, decrescendo, fixed, or repeating accent target.
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
noteIdsYesUnique stable note IDs at complete selected onsets.
trackIdYesID from list_tracks.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/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 the safety profile is covered and the 'Plan' wording is consistent with them. The description adds one real behavioral detail beyond the annotations: velocities are assigned over 'complete ordered' onsets, i.e. ordering matters and partial selections are not valid. It says nothing about what the produced plan is, whether it is persisted, or how it later gets applied.

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

Conciseness5/5

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

A single front-loaded sentence with no filler; the curve-type enumeration and the onset constraint are both packed into it without redundancy. Nothing in it could be cut without losing information.

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

Completeness3/5

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

An output schema exists and annotations cover safety, so return-value explanation is not required. However, for a planning tool in a plan/apply family, the description never says how the resulting plan is consumed or whether planning alone changes the clip — the one piece of context an agent cannot recover from the schema or annotations.

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 trackId, clipId, noteIds and the four curve variants. The description's enumeration of curve types mirrors the oneOf branches and its 'complete ordered onsets' phrasing clarifies the noteIds constraint (stable IDs at complete selected onsets), adding marginal rather than substantial meaning. 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?

States a specific verb (Plan) plus the resource and the exact value types: crescendo, decrescendo, fixed, repeating accent velocities across ordered MIDI onsets. An agent can tell it is the velocity-curve planner rather than a drum/gate/strum planner. It does not, however, distinguish itself from the adjacent apply_midi_velocity_curve sibling, which is the one pairing an agent is most likely to confuse.

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

Usage Guidelines2/5

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

There is no explicit when-to-use or when-not guidance, and the natural alternative — apply_midi_velocity_curve — is never named. The only usage signal is implicit in the words 'across complete ordered MIDI onsets', which suggests velocity shaping over an already-selected onset set, but leaves the plan-then-apply workflow entirely to inference.

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

plan_scale_basslineA
Read-onlyIdempotent

Plan a deterministic scale-aware bassline from progression degrees in the current Live key. Places roots, root-octave motion, or roots with each chord's diatonic fifth on explicit straight or triplet grid steps.

NameRequiredDescriptionDefault
gateYesNote duration as a fraction of stepBeats.
degreesYesOrdered one-based scale degrees.
maxPitchYes
minPitchYes
velocityYes
stepBeatsYesGrid subdivision in beats; must divide chordBeats exactly.
chordBeatsYesDuration of each progression degree in beats.
startBeatsYesBassline start in beats.
activeStepsYesUnique zero-based grid steps played within every chord.
pitchPatternYes

Output Schema

NameRequiredDescription

No output parameters

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 real behavioral context the annotations don't: output is deterministic, degrees are resolved against the *current* Live key (a dependency on external state), and output sits on explicit straight or triplet grid steps rather than being free-floating. It does not state what happens if the current key is unset, which is the one remaining behavioral risk.

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, front-loaded with the verb and the domain, then a second sentence covering voicing options and grid placement. 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.

Completeness4/5

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

For a 10-required-parameter planning tool with a full output schema and complete annotations, the description covers purpose, key derivation, pitch pattern choices and grid semantics. The gaps are the plan→apply relationship with create_scale_bassline_clip and the implicit prerequisite that a Live scale exists.

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 60%, so several parameters (minPitch, maxPitch, velocity) rely on the schema alone. The description does add genuine meaning for pitchPattern by unpacking all three enum values — notably clarifying 'root_fifth' means each chord's *diatonic* fifth — and it ties degrees/stepBeats/activeSteps to the key-relative and grid model. That is solid partial compensation but not full.

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: 'Plan a deterministic scale-aware bassline' with the source material named ('from progression degrees in the current Live key'). The word 'bassline' implicitly separates it from plan_scale_melody and plan_scale_chord_progression, but it never names those siblings or their boundary conditions 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: the agent must infer this is a planning step that precedes create_scale_bassline_clip, and must infer it requires a scale to already be set. There is no statement of when to pick this over the melody/chord planners, nor any prerequisites or exclusions.

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

plan_scale_chord_progressionA
Read-onlyIdempotent

Plan exact MIDI notes for a scale-degree chord progression in the current Live key and scale. Supports functional harmony, block chords, grid-locked pulses, ascending or descending arpeggios, bounded register, and deterministic voice leading.

NameRequiredDescriptionDefault
degreesYesOrdered one-based scale degrees.
maxPitchYes
minPitchYes
velocityYes
chordBeatsYesDuration and spacing of each chord in beats.
startBeatsYesFirst chord start in beats.
bassDegreesNoOptional Live scale degree for an added bass voice below each ordered chord; null leaves that chord unchanged.
articulationNo
chordRecipesNoOptional exact recipe for each ordered degree.
voiceLeadingYes
notesPerChordYes
harmonicFunctionsNoOptional harmonic function for each ordered degree; secondary-dominant degrees name tonicized targets.

Output Schema

NameRequiredDescription

No output 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=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds useful behavior beyond annotations by noting deterministic voice leading, bounded register, exact MIDI planning, and articulation modes such as block chords and arpeggios.

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 concise and front-loaded, first stating the purpose and then listing supported capabilities in a tight sequence. Every clause adds useful scope or feature information with no wasted wording.

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 the tool's complexity, nested schema, and existing output schema, the description provides a sufficient high-level orientation: it identifies the planning purpose, the current Live key/scale context, and supported musical modes. Some parameter-level details remain to the schema, but nothing critical is missing for correct high-level selection.

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 50%, so the schema documents some parameters but not all. The description adds semantic coverage for articulation modes, harmonic functions, register bounds, and voice leading, but it does not explain core required parameters such as degrees, notesPerChord, startBeats, chordBeats, velocity, or bassDegrees.

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: "Plan exact MIDI notes for a scale-degree chord progression in the current Live key and scale." This clearly distinguishes it from a clip-creating tool such as create_scale_chord_progression_clip, though it does not explicitly name any sibling tool.

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

Usage Guidelines3/5

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

The description implies when to use it by focusing on planning exact MIDI notes in the current Live key and scale, rather than creating or applying notes to a clip. However, it does not explicitly state when to use this tool versus alternatives like plan_midi_diatonic_harmony, plan_scale_melody, or create_scale_chord_progression_clip.

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

plan_scale_melodyB
Read-onlyIdempotent

Plan an explicit scale-degree melody in the current Live key and meter on a straight or triplet grid. Omitted steps are rests; motifs can repeat deterministically.

NameRequiredDescriptionDefault
gateYesNote duration as a fraction of one selected grid step.
gridYes
eventsYesExplicit scale-degree events; omitted grid steps are rests.
repeatsYes
maxPitchYes
minPitchYes
velocityYesDefault note velocity.
basePitchYesMIDI pitch for scale degree one.
motifBarsYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3/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 covered. The description adds useful behavioral context with 'Omitted steps are rests' and 'motifs can repeat deterministically,' but does not disclose failure conditions, pitch-clamping behavior, or constraints around the Live key/meter context.

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

Conciseness5/5

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

The description is two tight sentences with the main purpose front-loaded and no wasted language. The secondary behavioral details are appropriately condensed.

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 complex 9-parameter planning tool with only 44% schema description coverage, and the description does not explain several important input semantics or constraints such as pitch bounds, gate behavior, or how motifBars interacts with repeats. Although annotations and an output schema reduce some burden, the definition remains incomplete for confident invocation.

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

Parameters2/5

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

Schema description coverage is 44%, below the 50% threshold, so the description must compensate for undocumented parameters. It only clarifies grid type and rest semantics; it does not explain gate, velocity, basePitch, minPitch, maxPitch, motifBars, or repeats, leaving several required parameters without added meaning 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 a specific verb and resource: 'Plan an explicit scale-degree melody' in the current Live key and meter, with straight or triplet grid support. It is clear, but it does not explicitly distinguish this planning tool from siblings such as create_scale_melody_clip or plan_scale_bassline.

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 phrase 'in the current Live key and meter' implies a prerequisite context, but there is no explicit guidance on when to use this tool versus alternatives like create_scale_melody_clip or other plan_* tools. No when-not conditions or alternative routing are provided.

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

prepare_instrument_comparisonA
Destructive

Plan or natively duplicate a MIDI instrument track for comparison. Binds exposed devices, routing, clips and notes; verifies source/copy and cleans up a failed copy. Requires stopped transport. Temporarily mutes source, restores it, leaves copy muted/unarmed with input monitoring off. IDs shift. Opaque state/audio unverified.

NameRequiredDescriptionDefault
nameYesName for the alternative track.
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
trackIdYesID from list_tracks.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior5/5

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

Despite existing destructive/readOnly annotations, the description adds substantial behavioral detail: it binds devices, routing, clips and notes; verifies source/copy; cleans up failed copies; temporarily mutes and restores the source; leaves the copy muted/unarmed; notes ID shifts; and warns that opaque state/audio is unverified. These are exactly the side effects and caveats an agent needs before invoking a 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.

Conciseness4/5

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

The description is dense and front-loaded, with no filler sentences. Some telegraphic phrasing such as 'Binds exposed devices, routing, clips and notes' is slightly compressed, but most sentences earn their place by conveying operational constraints.

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 complex, destructive tool with an output schema, the description covers preconditions, side effects, cleanup behavior, and verification limits well. The main gap is that it does not connect this preparation step to the downstream get/adopt/select comparison tools, which would help an agent place it in the broader 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 description coverage is 100%, so the parameter meanings are already documented in the input schema. The description adds some workflow semantics around planning/duplication and ID shifts, but it does not explain individual parameters such as dryRun, confirmationToken, planHash, or expectedStateVersion beyond 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 states a specific verb and resource: plan or natively duplicate a MIDI instrument track for comparison. This is clear, but it does not explicitly distinguish the tool from close siblings such as get_instrument_comparison, adopt_instrument_comparison, or generic duplicate_session_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?

The description provides an implied usage context and one explicit prerequisite: it is for comparison and requires stopped transport. However, it does not say when to choose this over the related comparison or duplication siblings, nor does it spell out 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.

propose_audio_transient_warpA
Read-onlyIdempotent

Analyze bounded source-audio onset candidates and propose review-only marker actions toward a beat grid using native Live source-to-beat conversion. Reports signed offsets and one-hop detector resolution in beats for every candidate; suppresses actions within that resolution or competing with a closer onset at the same slot. Optional musical roles label bars, downbeats, quarter pulses and half-beat upbeats from the clip meter. Optional feelBars aggregates one to eight bars of selected onset timing and strength by grid slot; this is not native Groove Pool extraction or baking. Heuristic, source-only, no edit or audible validation; individually dry-run actions against current state before applying.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
trackIdYesID from list_tracks.
feelBarsNoAggregate selected onset offsets and strengths over a repeating one-to-eight-bar clip-meter cycle; grid must divide a bar.
gridBeatsYesPositive beat-grid spacing, e.g. 0.5 for eighth notes.
channelIndexNoZero-based source channel; defaults to zero.
startSecondsNoSource window start.
durationSecondsNoSource window duration; defaults to 10 seconds.
includeMusicalRolesNoLabel each nearest grid slot by clip-meter bar and pulse role; requires a grid that divides one bar.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior5/5

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

Annotations already declare read-only, idempotent and non-destructive, but the description adds substantial behavioral context beyond them: signed offsets and one-hop detector resolution reporting, suppression of actions inside that resolution or competing with a closer onset, meter-derived role labeling, and the heuristic/no-audible-validation caveat. This is exactly the kind of disclosure that lets an agent predict output trustworthiness.

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?

Purpose is front-loaded in the first sentence and each subsequent clause carries distinct information (suppression rules, roles, feel aggregation, caveats). It is dense and semicolon-heavy, which slightly taxes parsing, but there is little 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?

With an output schema present, the description need not explain return shapes, and it still covers scope, suppression behavior, optional role/feel semantics and validation limits. The only meaningful gap is that it does not identify the companion tool that applies the proposed markers after dry-run review.

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 genuinely extends semantics: feelBars is described as aggregating one to eight bars of selected onset timing and strength by grid slot (and explicitly not Groove Pool baking), and includeMusicalRoles as labeling bars, downbeats, quarter pulses and half-beat upbeats from the clip meter. That adds meaning beyond the schema text.

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 definition opens with a specific verb and resource pair: analyze bounded source-audio onsets and propose review-only marker actions toward a beat grid. The 'review-only/propose' framing implicitly separates it from applying tools like add_audio_warp_marker or quantize_audio_clip. However, it never names those siblings, so the differentiation is inferential rather than explicit.

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 usable exclusions ('this is not native Groove Pool extraction or baking') and a workflow rule ('individually dry-run actions against current state before applying'). It stops short of naming which tool actually applies the proposed markers, leaving the hand-off implicit.

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

quantize_audio_clipA
Destructive

Plan or request Live native quantization for one warped audio clip at a selected grid, amount, and observed global swing. Dry runs warn that Live may insert many warp markers and shift existing source start/end anchors; duplicate the clip first if the original edit must be preserved. Returns native anchors and a measured before/after marker-change summary; an existing marker is not guaranteed to snap to the grid. Use move_audio_warp_marker for an exact anchor move. Requires unchanged audio state and swing. Does not quantize MIDI note ends.

NameRequiredDescriptionDefault
gridYes
amountYesQuantization amount, zero to one.
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
trackIdYesID from list_tracks.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Annotations declare destructiveHint=true, but the description supplies the concrete consequences the hint cannot: many warp markers may be inserted, existing source start/end anchors may shift, and an existing marker is not guaranteed to snap to the grid. It also discloses the plan/token confirmation flow and the state-version precondition, which are behavioral facts well beyond the annotation set.

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 scope, and each subsequent sentence carries a distinct warning, return-value note, or alternative. It is dense but not padded; a slightly tighter grouping of the dry-run and duplicate warnings would make it a 5.

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 destructive, token-gated mutation with a rich schema and an output schema, the description covers the risk profile, the confirmation workflow, the state precondition, and even summarizes the returned anchors and before/after marker summary. Nothing material is missing for a correct call.

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 88%, so grid, amount, dryRun, planHash, and confirmationToken are already documented in the schema; the description adds only contextual framing (planned vs executed, swing must be unchanged). It also references 'observed global swing' without a corresponding parameter, which is minor but not clarifying. Baseline 3 is appropriate when the schema does the heavy lifting.

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 (quantize) and resource (one warped audio clip) plus the exact governing inputs: grid, amount, and observed global swing. It explicitly excludes MIDI ('Does not quantize MIDI note ends') and names the sibling move_audio_warp_marker, so the agent can distinguish it from the other warp-marker and MIDI-quantize-adjacent tools.

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 an explicit plan/dry-run-first workflow, a preservation condition ('duplicate the clip first if the original edit must be preserved'), a prerequisite ('Requires unchanged audio state and swing'), and routes to move_audio_warp_marker when an exact anchor move is wanted instead. When-to-use and when-to-use-something-else are both covered.

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

randomize_rack_macrosA
Destructive

Plan or invoke Live's native randomization of eligible mapped rack macros. Binds exact rack and parameter state, then reports observed values. No seed or predictable outcome is available.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.
deviceIdYesID from list_devices.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare destructive/non-idempotent/not-read-only, and the description adds genuinely new behavioral context: that outcomes are non-deterministic with no seed, and that it 'binds exact rack and parameter state' (which explains the expectedStateVersion concurrency contract). It does not say which macros count as 'eligible' or what happens to unmapped ones.

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 tight sentences with the core action front-loaded, followed by the state-binding contract and then the non-determinism warning. Every sentence carries weight, though 'Plan or invoke' is compressed enough to require schema cross-referencing.

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?

Output schema exists so return values needn't be described, annotations cover the safety profile, and the description supplies the key missing context (non-determinism, plan/execute duality, state binding). Minor gaps remain around eligibility criteria and the exact token round-trip.

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 six parameters including the dryRun/planHash/confirmationToken flow. The description adds only indirect hints ('plan or invoke', 'binds exact state') rather than new parameter meaning, 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?

States a specific verb+resource ('Live's native randomization of eligible mapped rack macros') and clearly separates this from the deterministic macro-mapping/variation tools among its siblings. It does not name any sibling explicitly, so it lands at a clear-but-not-differentiating 4.

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?

'Plan or invoke' implies the two-phase dry-run-then-execute flow that the dryRun/planHash/confirmationToken params support, but it never says when to prefer one mode or when to use this tool at all versus store_rack_macro_variation or recall_rack_macro_variation. Usage is implied rather than stated.

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

read_production_artifactA
Read-onlyIdempotent

Read a bounded page of one private project artifact. Follow nextOffset for more detail; truncated pages are not complete evidence.

NameRequiredDescriptionDefault
limitNo
offsetNo
projectIdYesPrivate project namespace.
artifactIdYesArtifact ID returned by a producer tool.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/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. The description adds genuinely new behavior: results are paginated and a truncated page must not be treated as complete evidence, which is an important reasoning constraint for an agent. It stops short of describing return structure 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?

Two short sentences, zero filler, with the core read action front-loaded and the paging caveat immediately after. 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?

An output schema exists, so return values need no explanation, and annotations cover the safety profile. The remaining gap is that 'nextOffset' is referenced without stating it comes from the response, and no guidance on choosing a limit is given.

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 50%: projectId and artifactId are documented, while limit and offset are not. The description hints that pages continue via 'nextOffset', which clarifies the paging parameter's role, but it introduces a name that does not exist in the input schema and does not explain limit bounds or offset units. Baseline 3 for partial coverage with marginal added 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 ('Read') and resource ('one private project artifact') with the scope qualifier 'bounded page', so an agent can tell this is a paginated artifact reader. It does not name a sibling alternative to sharpen the distinction, but none of the nearby tools obviously overlap.

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 sentence 'truncated pages are not complete evidence' implies usage (keep paging until complete) but never states when this tool should be chosen over another or what preconditions apply beyond 'Artifact ID returned by a producer tool' in the schema. Usage is implied rather than prescribed.

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

recall_device_chain_snapshotA
Destructive

Plan or recall Return or master mixer, available master output channel, exposed device parameters, rack-chain mixer, Drum Rack note routing and populated pad mute/solo onto exactly compatible topology in one guarded Live undo step. Legacy v1-v5 captures remain supported. Does not create, delete, or load devices or restore hidden plugin state.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.
planHashNoPlan hash.
snapshotYes
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/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 mutation profile is known. The description adds real value beyond that: "in one guarded Live undo step" discloses single-step reversibility, "exactly compatible topology" discloses a guard/validation precondition, and "Does not create, delete, or load devices or restore hidden plugin state" carefully bounds the blast radius. Legacy format support is also noted.

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?

Front-loads the verb but the first sentence is a 40+ word run-on enumerating every restored surface, which is hard to parse. The two trailing sentences are tight and earn their place. Overall reasonably sized but the opening is dense and undifferentiated.

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?

An output schema exists, so return values need not be explained. For a complex, destructive 6-param tool the description supplies the key missing context: undo scope, topology guard, and explicit non-actions. The plan-vs-execute flow is only implied, but nothing critical to invoking it correctly is absent.

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 83%, so the schema already documents dryRun, trackId, planHash, snapshot and confirmationToken semantics. The description maps loosely to the snapshot and ownerMixer content but adds no format or syntax detail beyond the schema. 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?

States the resource (device chain snapshot) and verb (plan or recall) and enumerates the captured surface it restores: mixer, output channel, device parameters, rack-chain mixer, note routing, pad mute/solo. An agent can distinguish it from sibling recalls like recall_device_parameter_snapshot or recall_group_system_snapshot. The long dense list weakens crispness slightly but the intent is clear.

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?

"Plan or recall" hints at a two-phase workflow that matches the dryRun/planHash/confirmationToken params, but the description never states when to choose this over load_device_chain_snapshot or the other recall_* siblings. Usage context is implied rather than explicit, and no exclusions are named.

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

recall_device_parameter_snapshotA
Destructive

Guarded recall of parameter JSON onto a matching native device class and exact ordered parameter layout. Supports ordinary, Return, and Main tracks; rejects incompatible bounds/choices and disabled changed controls. Does not restore hidden state.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.
deviceIdYesID from list_devices.
planHashNoPlan hash.
snapshotYes
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare destructive=true and non-read-only behavior, so the safety profile is partially established. The description adds meaningful guard conditions: matching native device class, exact ordered parameter layout, rejection of incompatible bounds/choices and disabled changed controls, plus the limitation that hidden state is not restored. It still omits the dryRun/planHash/confirmationToken execution flow.

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

Conciseness5/5

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

The description is three tight sentences, front-loaded with the core recall action and followed by constraints. Every sentence adds relevant information with no filler.

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

Completeness3/5

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

For a destructive operation with a nested snapshot object, the description covers purpose and key validation limits but omits the two-step planning/token workflow and when to prefer sibling snapshot tools. Since an output schema exists, return values do not need explanation, but the missing usage and confirmation flow leave 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 high at 86%, so the schema already documents most parameters. The description adds some semantic context about snapshot matching and validation constraints, but it does not explain expectedStateVersion, dryRun, planHash, or confirmationToken beyond 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 states a specific verb and resource: 'recall of parameter JSON' onto a matching native device class and exact ordered parameter layout. It also mentions supported track types and validation behavior. It implicitly distinguishes itself from broader chain/track snapshot tools, but does not explicitly name or contrast 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?

The description does not state when to use this tool versus alternatives such as recall_device_chain_snapshot, recall_track_state_snapshot, or load_device_chain_snapshot. Usage is only implied by 'recall' and the snapshot-oriented name, with no explicit exclusions or selection criteria.

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

recall_group_system_snapshotA
Destructive

Plan or apply a saved group-system capture onto one-to-one mapped compatible existing Group Track and descendants. One guarded native callback and Live undo step restore exposed track mixer, routing, device and rack state; on failure the bridge attempts rollback across every changed track. Does not recreate tracks/devices/clips or hidden plugin state.

NameRequiredDescriptionDefault
nameYesExact saved group-system snapshot name.
dryRunNoFalse executes with token and hash.
mappingYesOne explicit source-to-target entry for every saved track.
planHashNoPlan hash.
busTrackIdYesID from list_tracks.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already mark this as destructive and not idempotent, but the description adds meaningful behavioral detail: a guarded native callback, a Live undo step, and an attempted rollback across every changed track on failure. It also states what will not be restored, which is important for an agent assessing risk. It stops short of explaining rollback failure behavior or confirmation-token lifecycle, so a 4 rather than 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?

The description is three dense sentences. The core action and mapping constraint are front-loaded, followed by rollback/undo behavior and exclusions. There is little waste, though the phrasing is somewhat compressed and could be easier to scan.

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 destructive recall operation with an output schema and full parameter schema coverage, the description covers the key behavioral risks: undo, rollback, guarded execution, and what is not recreated. It does not detail preconditions around expectedStateVersion or the confirmation-token flow, but those are documented in the schema, so the description is largely complete.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already explains expectedStateVersion, name, busTrackId, mapping, dryRun, planHash, and confirmationToken. The description adds the key mapping constraint that every saved track must have one explicit source-to-target entry, but it does not add syntax or additional semantics beyond what the schema already provides. 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 gives a specific verb and resource: recall a saved group-system capture onto one-to-one mapped compatible existing Group Track and descendants. It also clarifies scope by saying it does not recreate tracks, devices, clips, or hidden plugin state, which helps separate it from mutating creation tools. The phrase 'Plan or apply' slightly overlaps the plan_group_system_recall sibling, keeping it from 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 implied: use this to apply a saved capture when tracks already exist and a one-to-one mapping is required. The description gives a key exclusion ('Does not recreate tracks/devices/clips or hidden plugin state'), but it does not explicitly tell the agent when to use this versus plan_group_system_recall, load_group_system_snapshot, or recall_track_state_snapshot.

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

recall_rack_macro_variationA
Destructive

Plan or recall one existing rack macro variation by zero-based index. Binds exact rack and current parameter state; Live exposes observed values after recall, not the saved variation contents beforehand.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.
deviceIdYesID from list_devices.
planHashNoPlan hash.
variationIndexYes
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and readOnlyHint=false, so safety is covered. The description adds real value beyond that: it explicitly states the tool 'Binds exact rack and current parameter state' (the state-version guard) and warns that 'Live exposes observed values after recall, not the saved variation contents beforehand', which tells the agent there is no preview of what will be restored.

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, with the primary action front-loaded ahead of the behavioral caveat. No filler, though the second sentence is dense and packs both the state-binding and the no-preview caveat into one 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?

An output schema exists, so return values need not be described, and annotations carry the safety profile. The description still supplies the one piece an agent would otherwise miss — that the saved variation contents are not visible before recall — making it complete for correct invocation.

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 86%, so the baseline is 3. The description's only semantic addition is 'zero-based index' for variationIndex, which is largely already implied by the schema's 'minimum: 0'. It adds little beyond what the structured fields already 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 — plan or recall a rack macro variation — with the qualifying scope 'by zero-based index' and 'one existing'. This distinguishes it from store_rack_macro_variation and delete_rack_macro_variation without naming them, but the verb+resource pair 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 description implies two modes ('Plan or recall') that map to the dryRun parameter but never states the condition for choosing plan vs execute, nor when to prefer this tool over the store/delete siblings. Usage is inferable but not spelled out.

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

recall_track_state_snapshotA
Destructive

Plan or recall captured track-state JSON onto exactly compatible topology and group membership (when captured). Restores track and rack-chain mixer, sends, routing, Drum Rack note routing, populated pad mute/solo and exposed nested parameters in one guarded native undo step; older snapshots without group context remain supported. Does not load devices, clips, samples, hidden state, automation or mappings.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
trackIdYesID from list_tracks.
planHashNoPlan hash.
snapshotYes
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/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 partly covered. The description adds real value beyond them: it discloses that the operation is a single guarded native undo step, that topology/group membership must be 'exactly compatible', and that older snapshots without group context are still supported. It does not mention permission or token-expiry 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?

Two dense sentences, front-loaded with the action and compatibility constraint, followed by the restore scope and the exclusion list. Every clause carries information, though the enumeration is long enough that a reader must parse carefully.

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 destructive mutation with an output schema and strong annotations, the description covers scope, compatibility requirements, undo semantics, and explicit exclusions. It is close to complete; only the plan/execute handshake and error conditions are left to the schema and annotations.

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 83%, so the schema already documents most parameters (dryRun, trackId, planHash, confirmationToken, snapshot format variants). The description adds the compatibility constraint on trackId/topology but no syntax or format 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.

Purpose4/5

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

States a specific verb pair (plan/recall) and resource (captured track-state JSON), then enumerates exactly what is restored: mixer, sends, routing, Drum Rack note routing, pad mute/solo, nested parameters. The scope enumeration plus the negative clause ('does not load devices, clips, samples') implicitly separates it from sibling snapshot tools, 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?

'Plan or recall' plus the dryRun/planHash/confirmationToken parameters imply a plan-then-execute workflow, and the closing sentence gives scope exclusions. However, it never says when to choose this over load_track_state_snapshot, recall_group_system_snapshot, or recall_device_chain_snapshot, leaving the routing to inference.

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

record_arrangement_takeA
Destructive

Record one armed unfrozen ordinary track into an empty Arrangement beat range. Requires stopped playback/recording, no other arms, Session playback/overrides or pending launches. Uses native punch-in/out, disables loop/overdub/Automation Arm, changes loop bounds/playhead, and stops owned record/playback at the end without a client. Leaves target armed and setup controls in place. Partial material retained; all profile.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
trackIdYesID from list_tracks.
endBeatsYesExclusive song beat; at most 512 beats and 300 seconds from start.
planHashNoPlan hash.
startBeatsYesInclusive quarter-note song beat.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

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, but the description goes further by disclosing concrete side effects: disabling loop/overdub/Automation Arm, altering loop bounds and playhead, using native punch-in/out, and stopping owned record/playback at the end. It also states the post-state (target left armed, setup controls in place) and partial retention, though fragments like 'all profile' and 'without a client' are opaque.

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 scope, then preconditions, then side effects. Dense but mostly economical; the trailing 'Partial material retained; all profile.' is compressed to the point of ambiguity and slightly undercuts an otherwise tight structure.

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 destructive mutation with full schema coverage, an output schema, and annotations, the description covers preconditions, side effects, and post-state well enough to invoke safely. Remaining gaps are the unclear trailing fragment and no guidance on what to do when preconditions are unmet.

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 every parameter is already documented in the schema. The description only loosely maps to startBeats/endBeats ('empty Arrangement beat range') and trackId ('armed unfrozen ordinary track'), and says nothing about dryRun, planHash, confirmationToken, or expectedStateVersion. 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 (record) and resource (an armed unfrozen ordinary track) with explicit scope (one track, empty Arrangement beat range). This clearly separates it from siblings like record_session_arrangement, capture_live_audio, and finish_arrangement_take without needing to open 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?

Lays out concrete preconditions: stopped playback/recording, no other arms, no Session playback/overrides or pending launches. That tells the agent when the tool is callable, but it never names the alternative tool to use when those conditions fail or when the take already exists.

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

record_production_noteA
Idempotent

Store explicit user intent or feedback as a private immutable artifact. Supply its noteRef in later task contextRefs to reuse it.

NameRequiredDescriptionDefault
kindYes
textYesUser intent or feedback; do not label preferences as observed Live facts.
projectIdYesPrivate project namespace.
contextRefsNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare it as a non-read-only, idempotent, non-destructive, closed-world write. The description adds behavior beyond the annotations by calling the stored artifact "private" and "immutable" and by explaining the noteRef/contextRefs reuse mechanism. It stops short of permission or project-existence requirements, but is well above the annotation baseline.

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, front-loaded with the purpose and followed immediately by the reuse instruction. Every sentence carries information and nothing is 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?

For a modest four-parameter mutation tool with an output schema, the description covers purpose, artifact privacy/immutability, and how the returned reference is reused. It omits only minor operational details such as projectId preconditions and the meaning of the kind enum, which are partly inferable from the schema.

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

Parameters3/5

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

Schema coverage is 50%, so the description must compensate for some undocumented parameters. It does add valuable semantic linkage by explaining that the returned noteRef should be supplied in later contextRefs, but it does not clarify projectId, the intent/feedback enum choice, or the text constraints 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 ("Store") and resource ("explicit user intent or feedback") with the key qualifier that it is a "private immutable artifact". This is clear and distinguishable from read/session siblings, but it does not name any sibling alternative or contrast case 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 "Supply its noteRef in later task contextRefs to reuse it" gives useful follow-on usage guidance. However, there is no explicit when-to-use/when-not-to-use contrast against nearby tools such as read_production_artifact or run_production_task, so the usage boundary is only implied.

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

record_session_arrangementA
Destructive

Record Session clip/scene choices into an empty Arrangement tail after all existing clips. Requires stopped playback, playhead already at a native bar start aligned with the global launch grid, all explicit/implicit arms off, loop/punch/automation arm/Session recording off and supported count-in. Sets and verifies the insert marker at startBeats, then starts global Arrangement record/playback; leaves that marker at the start. Native display ticks request both stopped at endBeats or 300 seconds while scope remains owned, even after client disconnect. Tempo/meter and Session choices may change; track/arm/insert-marker/recording control changes relinquish cleanup. Retains partial clips and endpoint overhang; no exact timing, rendered audio, input or gesture-automation proof. Updated bridge; all profile.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
endBeatsYesRequested stop beat; increasing span at most 512 beats and 300 seconds at current tempo.
planHashNoPlan hash.
startBeatsYesPrepared playhead in quarter-note song beats, at or after every existing Arrangement clip end.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior5/5

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

Beyond annotations, it discloses major behavioral traits: setting and verifying an insert marker, starting global Arrangement record/playback, leaving the marker at the start, the 300-second/stopped-at-endBeats cleanup condition, ownership surviving client disconnect, tempo/meter and Session changes, cleanup relinquishment on certain control changes, retained partial clips/overhang, and explicit lack of exact timing/audio/input proof. This is unusually rich side-effect and failure-mode disclosure for a destructive recording operation.

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 purpose is front-loaded, and much of the length is justified by the operation's complexity. However, the prose is dense and hard to parse, with opaque clauses such as 'Native display ticks request both stopped at endBeats or 300 seconds while scope remains owned' and a trailing fragment, 'Updated bridge; all profile,' that does not earn 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?

Given a destructive six-parameter tool with annotations and an output schema, the description covers the critical preconditions, side effects, cleanup ownership, and limitations. It is nearly complete, though it would be stronger if it routed the agent to sibling polling/finish tools and clarified the dryRun/planHash/confirmationToken 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 description coverage is 100%, so all six parameters are already documented in the schema. The description mentions startBeats, endBeats, and the marker semantics, but adds little beyond the schema for expectedStateVersion, dryRun, planHash, or confirmationToken. 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 first sentence states a specific verb and resource: recording Session clip/scene choices into an empty Arrangement tail after existing clips. It is clear what the tool does, but it does not distinguish itself from adjacent siblings such as record_arrangement_take, capture_session_scene, or place_session_clip_in_arrangement.

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 gives extensive preconditions for use: stopped playback, playhead at a native bar start aligned to the global launch grid, arms off, loop/punch/automation arm/Session recording off, and supported count-in. It does not name alternatives or explain when to use get_session_arrangement_recording or finish_session_arrangement_recording instead, 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.

redoB
Destructive

Plan or apply one guarded Ableton redo operation.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

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, readOnlyHint=false, and idempotentHint=false, so the safety profile is covered. The description adds the useful detail that this is a 'guarded' operation with a plan-or-apply workflow, but it does not explain what gets changed, why expectedStateVersion is required, or how the guard token works beyond what the schema states.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no wasted words. It immediately conveys both the operation and the guarded plan/apply nature.

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?

An output schema exists and annotations cover the destructive safety profile, so return values need not be described. However, for a guarded destructive redo operation, the description is thin on the plan/apply workflow and state-version preconditions, leaving important operational context to the terse schema descriptions.

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 defines all four parameters. The description adds no additional meaning about dryRun, planHash, confirmationToken, or expectedStateVersion beyond the parameter names and schema 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?

The description states a specific verb and resource: 'redo operation' on Ableton. It is clear about what the tool does, but it does not explicitly distinguish itself from the sibling 'undo' tool or explain the plan/apply guard beyond a passing mention.

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?

It mentions 'plan or apply' but does not say when an agent should choose redo over undo, when to use dry-run versus apply, or what preconditions must be met. No alternatives or exclusions are named.

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

re_enable_parameter_automationA
Destructive

Hand one exact overridden device or mixer control back to native automation. Binds native owner/device/control identities and current manual value. Requires supported enabled control, unfrozen target and recording/count-in off; preserves playback. Values may jump. Reports active automation separately from requested handoff. Partial work remains; no rollback or replay. All profile.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.
deviceIdNoID from list_devices.
planHashNoPlan hash.
parameterIdYesExact control ID returned by get_parameter_automation_context; omit deviceId for mixer controls.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

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

The description adds substantial behavioral context beyond the annotations: values may jump, playback is preserved, active automation is reported separately from the requested handoff, partial work remains, and there is no rollback or replay. These details materially help an agent understand side effects and failure semantics.

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 purpose and key warnings are front-loaded and the text is compact. Some clauses are telegraphic, and the phrase 'All profile.' is unclear, but overall it is efficiently structured.

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 the tool's destructive annotations, output schema, and seven parameters, the description covers prerequisites, side effects, partial completion, lack of rollback, and reporting behavior. An agent has enough information to invoke it correctly and understand the risks.

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 seven parameters. The description adds only marginal parameter meaning through phrases like 'one exact overridden device or mixer control' and identity binding; 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?

The description states a specific verb and resource: handing one exact overridden device or mixer control back to native automation. It distinguishes itself from sibling operations such as override_parameter_automation by emphasizing the reverse direction back to native automation.

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 clearly gives prerequisites: supported enabled control, unfrozen target, and recording/count-in off. It does not explicitly name sibling alternatives or when not to use the tool beyond those preconditions, so it falls short of full when/when-not/alternative guidance.

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

remove_audio_warp_markerA
Destructive

Plan or apply deletion of an exact visible audio warp marker. Rejects the hidden terminal marker and stale clip state.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
trackIdYesID from list_tracks.
beatTimeYesExact marker beat time from audio state.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4/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 real value beyond that by disclosing two rejection paths: the hidden terminal marker is off-limits, and stale clip state causes refusal. These are failure modes an agent must anticipate, which 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.

Conciseness5/5

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

Two sentences, zero waste. The action and scope lead, and the rejection conditions follow. Nothing is repeated from 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?

An output schema exists and annotations cover the destructive read/write profile, so the description need only explain intent and failure conditions — both present. It does not describe what happens to neighboring markers or the warp grid after removal, a minor gap for a destructive audio-editing operation.

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 every parameter including expectedStateVersion, beatTime, planHash, and confirmationToken is already documented in the schema. The description reinforces 'exact' for beatTime and 'stale state' for expectedStateVersion but adds no syntax or format detail beyond that. 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: 'Plan or apply deletion of an exact visible audio warp marker.' The verb-plus-resource is unambiguous against siblings like add_audio_warp_marker and move_audio_warp_marker, though it never names those alternatives explicitly. The scope qualifier 'exact visible' sharpens what kind of marker is targeted.

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?

'Plan or apply' signals the two-phase dryRun-then-execute flow, and the second sentence names two conditions under which the call is refused (hidden terminal marker, stale clip state). That is clear operating context. It stops short of explicit when-versus-alternatives routing (e.g., when to move a marker instead of removing it).

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

remove_midi_notesA
Destructive

Delete exact note IDs and their expression from one Session/Arrangement MIDI clip. Keeps other notes and timing; playback can continue. Rejects stale or unsafe sources. Reports actual partial work without rollback or reconstruction. Explicit deletion intent required; all profile.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
noteIdsYesExact observed note IDs to delete; empty never means all.
trackIdYesID from list_tracks.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior5/5

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

Beyond the destructiveHint annotation, the description explains that other notes and timing are preserved, playback can continue, stale or unsafe sources are rejected, and partial work is reported without rollback or reconstruction. These are meaningful behavioral details for a destructive mutation tool.

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

Conciseness4/5

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

The description is front-loaded with the deletion action and remains compact. It is slightly dense and the phrase 'all profile' is unclear jargon, but most sentences carry useful behavioral information.

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 destructive tool with full annotation coverage, complete parameter descriptions, and an output schema, the description provides the necessary safety and partial-work context. An agent has enough information to understand the mutation and its constraints.

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 all seven parameters. The description adds some context around exact note IDs and stale-state rejection, but it does not clarify the dryRun, planHash, or confirmationToken workflow beyond what is already in 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 a specific verb and resource: deleting exact note IDs and their expression from one Session/Arrangement MIDI clip. It is clearly a note-removal tool, but it does not explicitly differentiate itself from related siblings such as insert_midi_notes, transform_midi_notes, or get_midi_note_removal_context.

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 usage through 'Explicit deletion intent required' and 'Rejects stale or unsafe sources', but it does not explicitly say when to choose this tool over get_midi_note_removal_context, transform_midi_notes, or clip-level deletion. Guidance is present but remains indirect.

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

rename_arrangement_clipB
Destructive

Rename one exact Arrangement MIDI or audio clip without changing selection, playback or musical controls. Binds native ownership, clip layout, interval and prior name, then rechecks at undo entry. Reports actual name and retained identity; no-op writes are skipped. Partial work remains without rollback or replay. All profile; updated bridge.

NameRequiredDescriptionDefault
nameYesExplicit new clip label; no control characters.
clipIdYesExact track-N:arrangement-clip-M ID from list_arrangement_clips.
dryRunNoFalse executes with token and hash.
trackIdYesID from list_tracks.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior4/5

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

Adds substantial behavior beyond the annotations: it preconditions on native ownership, clip layout, interval and prior name, rechecks at undo entry, reports the actual name and retained identity, skips no-op writes, and warns that partial work remains with no rollback or replay. That partial-failure warning is genuinely useful for a destructiveHint=true tool, though 'All profile; updated bridge' is opaque filler.

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?

Front-loaded with the action and resource, which is good, but the middle sentences are jargon-dense ('binds native ownership, clip layout, interval and prior name') and the closing 'All profile; updated bridge' adds no actionable meaning.

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?

An output schema exists, so return values need not be explained, and the description covers verification and partial-failure behavior. However, for a mutation gated by a confirmation token and plan hash it still leaves the two-phase execute workflow and state-version conflict handling to the schema.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all seven parameters, and the description only gestures at 'prior name' verification and 'no-op writes' logic. It never explains the meaning or sequencing of dryRun, planHash and confirmationToken beyond what the schema says, 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?

Names a precise verb and resource: rename one exact Arrangement MIDI or audio clip. The scope word 'one exact' plus 'Arrangement' separates it from rename_session_object and rename_arrangement_cue_point implicitly, but no sibling is named outright.

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 never states when to pick this over rename_session_object or rename_arrangement_cue_point, and gives no guidance on the dryRun/planHash/confirmationToken flow the schema exposes. 'Without changing selection, playback or musical controls' is a side-effect constraint, not a usage rule.

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

rename_arrangement_cue_pointC
Destructive

Plan or rename one exact Arrangement cue point.

NameRequiredDescriptionDefault
nameYesNew cue-point name.
dryRunNoFalse executes with token and hash.
planHashNoPlan hash.
cuePointIdYesCurrent cue-point ID from list_arrangement_cue_points.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, and non-idempotence, so the safety profile is covered. The description adds essentially nothing beyond that — it does not explain what the destructive action affects, nor that the operation is gated behind a plan hash and single-use confirmation token.

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

Conciseness4/5

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

A single short sentence with the key operation front-loaded and no waste. It is arguably over-terse, but it is structurally sound.

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

Completeness2/5

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

For a destructive, confirmation-gated mutation with six parameters, the description omits the critical call sequence (dry run to obtain plan hash and token, then execute). Even with an output schema present, the agent lacks the workflow context needed to invoke it 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%, so all six parameters (including dryRun, planHash, confirmationToken) are documented in the schema. The description contributes no additional meaning about how these parameters interact, so the baseline of 3 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 description gives a verb (rename) and a resource (Arrangement cue point), so the operation is identifiable. However, 'Plan or rename' is ambiguous and it makes no attempt to differentiate from siblings such as create_arrangement_cue_point, delete_arrangement_cue_point, or jump_to_arrangement_cue_point, which share the same resource.

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 indication of when to use this versus the other cue-point siblings, nor any prerequisite guidance. The two-phase plan-then-execute intent hinted by 'Plan or' is never explained, leaving the agent to infer the workflow from the schema alone.

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

rename_rack_chainA
Destructive

Plan or rename an exact rack chain with a guarded hierarchy snapshot. For return chains, name is a raw label; Live adds the return letter prefix. Use observed name for display, not verbatim restoration.

NameRequiredDescriptionDefault
nameYesNew layer name; raw unprefixed label for returns.
dryRunNoFalse executes with token and hash.
chainIdYesExact chain ID.
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.
deviceIdYesID from list_devices.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

The annotations already declare this is destructive, non-idempotent, and not read-only. The description adds some useful context about guarded hierarchy snapshots and return-chain naming, but it does not explain what destructive changes occur, whether they are reversible, or the required plan/token workflow in any 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?

The definition is three short sentences, front-loaded with the main action and followed by the two non-obvious naming caveats. There is no redundant or filler 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?

The tool has eight parameters but full schema coverage and an output schema, so the description need not restate everything. It is complete enough for an agent to call correctly, though it could more explicitly explain the dry-run/planHash/confirmationToken execution sequence for a destructive 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 description coverage is already 100%, so the baseline is 3. The description adds non-obvious semantics for the central `name` parameter: returns use a raw unprefixed label while Live adds the return-letter prefix, and the observed name is for display rather than verbatim restoration.

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 ('rename') and resource ('rack chain') plus a planning mode, so the agent can tell this is the chain-renaming tool rather than a macro or session-object rename. It does not explicitly contrast with siblings such as create_rack_chain or rename_rack_macro, 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 Guidelines2/5

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

The description says 'Plan or rename' but does not state when to use dry-run planning versus execution, nor does it name any alternative tool or exclusion. The guidance about return-chain names is about parameter interpretation, not about when this tool should be chosen over other rename or chain operations.

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

rename_rack_macroA
Destructive

Plan or rename one exact rack macro when Live exposes an unambiguous macro parameter layout and name readback. Rechecks the full rack snapshot and confirms the observed name after the native write.

NameRequiredDescriptionDefault
nameYesNew macro name.
dryRunNoFalse executes with token and hash.
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.
deviceIdYesID from list_devices.
planHashNoPlan hash.
macroIndexYesZero-based visible rack macro index.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare this as a destructive, non-idempotent write, so the description does not need to repeat that. It adds valuable behavior beyond annotations: it rechecks the full rack snapshot and confirms the observed name after the native write, signalling a verification step. It could say more about dry-run versus execution behavior, but the core post-write verification 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?

Two tightly packed sentences with no wasted language. The precondition is front-loaded before the post-write verification detail, making the description easy to scan.

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?

The tool has annotations, full schema coverage, and an output schema, so the description does not need to explain return values or every parameter. It adequately covers the precondition and the post-write confirmation behavior. It could be slightly more complete about safe planning versus execution, but the key context is present.

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 eight parameters including expectedStateVersion, planHash, confirmationToken, and dryRun. The description only implies the macro index and name are relevant; it does not add syntax or format guidance beyond the schema. 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: 'Plan or rename one exact rack macro.' It also adds a meaningful precondition about Live exposing an unambiguous macro layout and name readback, which helps scope the operation. It does not explicitly contrast with sibling tools like rename_rack_chain or map_rack_macro_to_parameter, so it stops short of full sibling differentiation.

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 clear when-to-use condition: only when Live exposes an unambiguous macro parameter layout and name readback. That is useful context an agent can check before invoking. However, it does not state when not to use it or name alternative tools for ambiguous cases.

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

rename_session_objectA
Destructive

Rename an exact track, Group, Return, scene or Session clip. Binds native identity/layout and prior label; rechecks at undo entry. Reports partial outcomes. Return labels omit the bus letter. Updated bridge required.

NameRequiredDescriptionDefault
nameYesNew name; Session clip labels allow up to 255 characters without controls. For Return Tracks omit the automatic bus-letter prefix.
dryRunNoFalse executes with token and hash.
trackIdNoID from list_tracks.
planHashNoPlan hash.
targetIdYesStable target ID.
targetTypeYes
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

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, idempotent=false, so the bar is lower, and the description still adds substantive behavior: it binds native identity/layout plus the prior label, rechecks at undo entry, and reports partial outcomes, warning the agent that success may be incomplete. 'Binds native identity/layout' is opaque jargon, keeping it from 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.

Conciseness4/5

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

Front-loaded with the action and target list, and no sentence is padded. The trade-off is telegraphic fragments ('Binds native identity/layout and prior label') that compress meaning at the cost of readability.

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?

An output schema exists, so return-value detail is not required, and the description covers target scope and one precondition. However, for a destructive 8-parameter mutation, the multi-step plan/confirm-token flow and the role of expectedStateVersion 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.

Parameters3/5

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

Schema coverage is 88%, so the baseline is 3. The 'Return labels omit the bus letter' note merely restates the schema's own text for the name parameter, and the description says nothing about the dryRun/planHash/confirmationToken workflow or expectedStateVersion semantics that the 8-parameter schema implies.

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 (Rename) and enumerates the target resources (track, Group, Return, scene, Session clip), which lets an agent distinguish it from the cue-point/clip/rack renames in the sibling list. It does not name any sibling or clarify the 'Group' target, which is not in the targetType enum (track/return/scene/clip), leaving a small ambiguity.

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

Usage Guidelines3/5

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

Usage is only implied: 'exact track' suggests precise targeting, and 'Updated bridge required' is a real prerequisite. There is no statement of when to prefer this over rename_arrangement_clip, rename_arrangement_cue_point, or rename_rack_chain, and no when-not guidance.

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

return_tracks_to_arrangementA
Destructive

Return explicit ordinary tracks from Session override while preserving global playback and loop settings, without seeking. May stop their Session clips and reveal Arrangement material or silence. Refuses Groups, recording, armed/frozen targets, pending target launches and unresolved holds. Native identity guards; partial results retained. Immediate, not beat-scheduled or audible proof. Updated bridge; all profile.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
planHashNoPlan hash.
trackIdsYesExact ordinary tracks to return; other overrides remain.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior5/5

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

Substantially exceeds annotations: it discloses that Session clips may stop and Arrangement material or silence may result, that partial results are retained, and that native identity guards apply. These are exactly the destructive side effects and failure semantics an agent needs given destructiveHint=true.

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 action is front-loaded, which is good, but the telegraphic fragment style ('Immediate, not beat-scheduled or audible proof. Updated bridge; all profile.') sacrifices clarity, and 'all profile' in particular reads as filler rather than useful 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 annotations and an output schema present, the description covers the critical gaps: refusal conditions, partial-result behavior, and timing semantics. Only the multi-parameter confirmation/dryRun workflow is left implicitly to the schema.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all five parameters including dryRun, planHash, and confirmationToken. The description adds context for trackIds ('explicit ordinary tracks') but does not elaborate on the two-step plan/token workflow, so 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?

States a specific verb (return) and resource (tracks to Arrangement) and scopes it to 'explicit ordinary tracks' originating from a Session override. It is distinguishable from siblings like hold_session_clip or launch_clip, though jargon such as 'Session override' assumes domain familiarity.

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 clear when-not conditions: 'Refuses Groups, recording, armed/frozen targets, pending target launches and unresolved holds.' It also clarifies the action is immediate rather than beat-scheduled, setting expectations without naming a specific sibling alternative.

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

reverse_audio_clipA
Destructive

Reverse one exact Session or Arrangement audio clip through macOS English Live's Clip View. Requires a saved Set, unique clip name, stopped/unarmed/unfrozen state, PCM/FLAC source up to 60 seconds/64 MiB and ffmpeg. Selects the clip, changes its source and native timing/warp placement. Verifies decoded reverse frames and unchanged original source bytes; does not verify envelope contents or audible outcome. Partial work retained; never replay automatically. All profile; updated bridge.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
trackIdYesID from list_tracks.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare destructive and non-idempotent behavior, while the description adds substantive detail: source and native timing/warp placement are changed, verification covers decoded frames and original source bytes but not envelopes or audible outcome, and partial work is retained with no automatic replay. This is consistent with the annotations and materially useful.

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 dense and front-loaded with purpose, prerequisites, behavior, and verification caveats. The trailing phrase 'All profile; updated bridge' is cryptic and does not clearly earn its place, keeping it below a 5.

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 complex destructive operation, it covers prerequisites, state constraints, source limitations, mutation scope, verification limits, and partial-failure behavior. Output schema exists, so return value detail need not be repeated in the description.

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 parameter meanings are already documented in the schema. The description adds prerequisite context but does not explain dryRun, planHash, confirmationToken, or expectedStateVersion 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 and resource: reverse one exact Session or Arrangement audio clip via Clip View. The scope and single-clip restriction distinguish it from broader clip mutation tools 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?

Provides detailed prerequisites: saved Set, unique clip name, stopped/unarmed/unfrozen state, PCM/FLAC source limits, and ffmpeg availability. It does not explicitly name sibling alternatives or task-level when-not guidance, but the operational constraints are clear.

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

route_tracks_to_busC
Destructive

Plan or route existing tracks to one exact existing group bus using Live's available routing choices.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
planHashNoPlan hash.
trackIdsYesSource track IDs.
busTrackIdYesID from list_tracks.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, so the description does not need to restate that. But for a destructive routing mutation, it should disclose what existing routing is destroyed or overwritten, that execution requires a confirmationToken and planHash, and whether state changes are reversible. None of that is provided.

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

Conciseness5/5

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

The description is a single front-loaded sentence with no filler or repetition. Every phrase contributes to the purpose.

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 six-parameter mutation with a required token/hash workflow and an output schema. A one-sentence description is not complete enough to tell an agent how planning differs from execution, what happens to existing routing, or how state-version conflicts are handled.

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 explains dryRun, planHash, confirmationToken, trackIds, busTrackId, and expectedStateVersion; baseline is 3. The description adds only the constraint that the bus must be an 'exact existing group bus' and does not clarify the plan/execute token flow beyond what the schema names already imply.

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 (route) and resource (existing tracks to a group bus), and 'group bus' implicitly distinguishes it from the sibling route_tracks_to_return_bus. However, it does not explicitly name or rule out the alternative, so an agent must infer the difference.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use this tool versus set_track_routing, route_tracks_to_return_bus, or group_tracks, nor any prerequisites such as needing list_tracks IDs or a valid state version. 'Plan or route' hints at a two-step workflow but leaves the conditions for each mode unstated.

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

route_tracks_to_return_busA
Destructive

Plan or route existing tracks to one exact Return bus using matching sends and Sends Only outputs. Prevalidates all sources; Live applies one undo step but runtime failures can interrupt it.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
planHashNoPlan hash.
trackIdsYesSource track IDs.
sendValueYesNormalized send level (0 to 1).
returnTrackIdYesStable return-track ID.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

Beyond the destructive and non-idempotent annotations, the description discloses that all sources are prevalidated, that Live execution consumes one undo step, and that runtime failures can interrupt the operation. This is useful mutation context, though it does not explain cleanup or partial-failure recovery.

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

Conciseness5/5

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

The description is two compact clauses, front-loads the core routing action, and then immediately adds the important behavioral caveats. 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?

For a destructive routing mutation with an output schema and full parameter descriptions, this is largely complete: it conveys prevalidation, undo behavior, and runtime risk. A small gap remains around partial-failure behavior and how the return bus matching is verified.

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 parameters are already documented in the schema. The description conceptually references source tracks and the Return bus, but it adds no specific meaning about expectedStateVersion, sendValue, planHash, confirmationToken, or dryRun 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: plan or route existing tracks to one exact Return bus. It also distinguishes this from the sibling route_tracks_to_bus by emphasizing Return-bus-specific routing through matching sends and Sends Only outputs.

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 'Plan or route' implies a dry-run versus live execution flow, and the Return-bus scope gives some usage context. However, it does not explicitly name alternatives such as route_tracks_to_bus, set_track_send_db, or set_track_routing, nor does it state when not to use this tool.

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

run_production_taskB

Run configured creative and/or functional specialists with bounded private context. Returns an immutable proposal reference, never executes Live changes. Optional caller postconditions define required final field checks. Provider use follows explicit server configuration.

NameRequiredDescriptionDefault
goalYesRequested musical or operational outcome.
rolesNo
scopeNo
intentNochange (default) requires operations or fresh caller criteria proving no change is needed. inspect permits observations without operation proposals.
workflowNo
projectIdYesPrivate project namespace.
constraintsNo
contextRefsNo
postconditionsNoOptional caller-owned required final field checks. Specialist checks remain suggestions when supplied.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior4/5

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

This is the strongest part: with readOnlyHint=false, an agent could otherwise assume mutation, and the description corrects that by stating it never executes Live changes and returns an immutable proposal reference. It also flags that postconditions are caller-owned required checks and that provider usage depends on explicit server configuration. It stops short of describing runtime cost, latency, or failure 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?

Four tight sentences, front-loaded with the core action and the non-execution guarantee. No filler, though the provider-configuration sentence is abstract and low-value for tool selection.

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 output contract and non-mutation guarantee are covered and an output schema exists, so return values need no explanation. But for a 9-parameter, nested-object, open-world tool the description leaves most of the input surface and the specialist/proposal lifecycle unexplained, which is a meaningful gap.

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 only 44% across 9 parameters, so the description needs to compensate and does not. It clarifies only postconditions; goal, scope (clip/track/device targeting), roles, intent, workflow.name, constraints and contextRefs get no explanation beyond the schema, and the crucial change-vs-inspect default behavior is left to the schema text 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?

Names a specific verb+resource ('Run configured creative and/or functional specialists') and states the output contract ('Returns an immutable proposal reference'). It implicitly distinguishes itself from the apply/operation siblings by saying it never executes Live changes, though it never names an alternative tool outright.

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 reader deduces this is the propose step that precedes apply_production_operation. Nothing states when to prefer it over apply_production_operation or start_production_session, and there are no exclusions or prerequisites for the caller.

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

save_device_chain_snapshotA

Capture a device chain including Return or master mixer, available master output channel, exposed rack-chain controls and populated Drum Rack pad mute/solo into the private named local chain library. Never overwrites. Does not save hidden plugin state, samples, automation, or mappings.

NameRequiredDescriptionDefault
nameYesNew local chain snapshot name; letters, numbers, dot, underscore and hyphen only.
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare non-read-only, non-destructive, non-idempotent and closed-world, and the description adds genuine value on top: 'Never overwrites' and an explicit exclusion list (hidden plugin state, samples, automation, mappings). That exclusion list is exactly the kind of scope boundary an agent needs before committing a snapshot. It stops short of saying what happens when the supplied name already exists, which matters given the non-destructive/non-idempotent combination.

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, both load-bearing: the first enumerates captured content, the second bounds it. The first sentence is long and list-heavy but not padded, and the most important constraint (named local library, never overwrites) arrives early. Minor cost: the dense enumeration slows scanning slightly.

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?

An output schema exists, so return values need no explanation, and annotations cover the safety profile; the description fills in scope and exclusions. The remaining gaps are the name-collision/failure behavior and the distinction from capture_device_chain_snapshot, neither of which is inferable from the structured fields.

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 spells out the naming character set and the accepted trackId forms (track-N, return-N, master). The description adds no parameter-level detail beyond that, 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?

States a specific verb (capture/save) and a precisely scoped resource: a device chain's return/master mixer, master output channel, exposed rack-chain controls and populated Drum Rack pad mute/solo, persisted to a named local library. The scope is far more specific than the name alone. However, it never distinguishes itself from the sibling capture_device_chain_snapshot, which reads as the same operation, so an agent cannot tell the two apart from the description.

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

Usage Guidelines2/5

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

There is no explicit when-to-use or when-not-to-use guidance, and no alternatives are named. Given that capture_device_chain_snapshot, save_native_device_preset, save_track_state_snapshot and save_group_system_snapshot all sit in the sibling list, the absence of any routing sentence is a real omission. Only the phrase 'into the private named local chain library' implicitly signals persistence versus an in-memory capture.

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

save_group_system_snapshotA

Capture an existing Group Track and descendants into a private named local JSON file. Never overwrites; preserves exposed mixer, routing, device and rack state but not clips, samples, hidden plug-in state, automation or mappings.

NameRequiredDescriptionDefault
nameYesNew local group-system snapshot name; letters, numbers, dot, underscore and hyphen only.
busTrackIdYesID from list_tracks.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior5/5

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

Beyond the annotations, the description discloses two high-value behaviors: 'Never overwrites' (important since idempotentHint is false) and a precise preservation boundary listing what is stored (mixer, routing, device, rack state) versus what is dropped (clips, samples, hidden plug-in state, automation, mappings). This is exactly the extra context the structured fields do 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?

Two tight sentences. The capture scope leads, followed by the non-overwrite guarantee and the preservation boundary, all of which carry actionable information with no 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?

An output schema exists, so return values need no explanation here, and the description covers scope, safety (no overwrite), and the exact fidelity limits of the snapshot. Nothing needed to invoke this 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 description coverage is 100%, so both parameters are already documented in the schema. The description adds no syntax or format detail beyond restating that the snapshot is named, 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?

The description states a specific verb and resource ('Capture an existing Group Track and descendants') plus the persistence target ('private named local JSON file'), which separates it from the in-memory capture siblings. It stops short of explicitly naming or contrasting with capture_group_system_snapshot, so the agent must infer the save-vs-capture distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use, when-not-to-use, or alternative named. The phrase 'private named local JSON file' hints at persistence, but the agent gets no guidance on when to choose this over capture_group_system_snapshot, plan_group_system_recall, or the track-state snapshot family.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

save_live_setC
Destructive

Save macOS Set; verify write or clean state. Path: Save As without overwrite.

NameRequiredDescriptionDefault
pathNoNew absolute .als; parent must exist.
dryRunNoFalse executes with token and hash.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.
expectedSetFingerprintYesCurrent setFingerprint.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.5/5.0
Behavior2/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 partly covered. The description adds "Path: Save As without overwrite," which is useful behavioral nuance, but "verify write or clean state" is unclear and the two-phase planHash/confirmationToken workflow is not explained.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very short and front-loads the save action, but it is so terse that key workflow details are omitted and phrases like "verify write or clean state" are cryptic. It is concise without being sufficiently clear.

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-idempotent save tool with required version/fingerprint parameters and optional dryRun, planHash, and confirmationToken fields. The schema and output schema are rich, but the description does not explain the safe execution workflow or how the token fields should be used, leaving a significant gap for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds a small semantic detail about the path parameter (Save As without overwriting), but it does not clarify dryRun, planHash, confirmationToken, or the required expectedStateVersion/fingerprint semantics beyond the schema.

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 identifies a save operation on a Live Set ("Save macOS Set") and adds a path-specific behavior ("Save As without overwrite"). However, the phrase "verify write or clean state" is opaque, and the description does not clearly distinguish this save workflow from siblings such as open_live_set or export operations.

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 explicit guidance is given for when to use this tool versus alternatives, nor when not to use it. It mentions only a path behavior, leaving the plan/dry-run/token workflow and its relationship to normal saving unaddressed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

save_midi_feel_templateA

Analyze exact MIDI notes with an optional cycle origin and save a private named timing/velocity template. Never overwrites. Rejects assigned native grooves; does not capture their playback effects.

NameRequiredDescriptionDefault
barsNo
gridYes
nameYesNew local template name; letters, numbers, dot, underscore and hyphen only.
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
noteIdsNoExact source note IDs; omitted means all stored notes.
trackIdYesID from list_tracks.
originBeatsNoClip-beat cycle origin; defaults to zero. Use an observed loop start when intended.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish this as a non-read-only, non-idempotent, non-destructive write. The description adds useful behavioral context beyond that: templates are private, never overwritten, and native groove playback effects are not captured. It does not detail duplicate-name behavior or failure modes, but the key mutation semantics 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences with the primary action front-loaded. The subsequent constraints are short and each adds material information, with 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?

An output schema exists, so return-value explanation is not required. For a 7-parameter mutation tool with annotations and mostly covered schema, the description supplies the critical constraints and caveats, though it could mention duplicate-name handling or what happens when no notes match.

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 71%, so the baseline is 3. The description reinforces the roles of noteIds and originBeats ('exact MIDI notes with an optional cycle origin') and notes the private named template, but adds little about grid, bars, or the distinction between clipId and trackId beyond what the schema already states.

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 verb and resource: analyze MIDI notes and save a named timing/velocity template. It distinguishes itself functionally from siblings like analyze_midi_feel and load_midi_feel_template by focusing on persistence, but does not explicitly name 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?

The description implies the tool is used to persist a template and states an exclusion: assigned native grooves are rejected. It does not explicitly direct the agent to analyze_midi_feel for inspection-only work or explain when to choose this over other groove-related tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

save_native_device_presetA
Destructive

Save an exact device or rack as a new native User Library preset through macOS English Live. Sets intended preset naming and changes focus; may rename the source. Requires saved Set and stopped transport. Refuses existing names; verifies Live XML/VST3 artifacts and exposed source state. Audio Unit artifact verification is unavailable. No recall, audible-equivalence or sample-portability claim.

NameRequiredDescriptionDefault
nameYesNew visible filename stem, without extension; at most 80 characters. Existing native User Library preset names refuse.
dryRunNoFalse executes with token and hash.
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.
deviceIdYesID from list_devices.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations by disclosing side effects not implied by destructiveHint alone: it 'changes focus', 'may rename the source', refuses existing names, and verifies Live XML/VST3 artifacts. It also honestly flags a limitation ('Audio Unit artifact verification is unavailable') and bounds expectations ('No recall, audible-equivalence or sample-portability claim').

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, then layers preconditions and limits efficiently. Mostly terse, though the clipped multi-clause phrasing ('verifies Live XML/VST3 artifacts and exposed source state') is dense and could be tighter.

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?

An output schema exists so return values need no explanation, and annotations cover the safety profile. The description fills the remaining gaps: preconditions, refusals, side effects, and verification limitations for a destructive multi-parameter write.

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 name length limits, ID formats, and the token/hash fields; the description adds no syntax beyond that. Baseline 3 applies when the schema does the heavy lifting.

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+resource ('Save an exact device or rack as a new native User Library preset') and adds the execution context ('through macOS English Live'). This clearly distinguishes it from snapshot-saving siblings like save_device_chain_snapshot and save_track_state_snapshot.

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 preconditions ('Requires saved Set and stopped transport') and refusal behavior ('Refuses existing names'), which tell the agent when this will succeed. However it never names a sibling alternative or states when to prefer a snapshot tool instead, so sibling routing 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.

save_track_state_snapshotA

Capture one exact track state and save its JSON to the private named local snapshot library. Never overwrites; excludes clips, hidden plugin state, samples, automation and mappings.

NameRequiredDescriptionDefault
nameYesNew local snapshot name; letters, numbers, dot, underscore and hyphen only.
trackIdYesID from list_tracks.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: 'Never overwrites' is useful and consistent with destructiveHint=false and idempotentHint=false, and the explicit exclusion list (clips, hidden plugin state, samples, automation, mappings) tells the agent exactly what will NOT be in the snapshot. It stops short of saying what happens on a name collision (error vs. suffix) or whether the snapshot is readable by other sessions.

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, front-loaded with the action and scope, followed by the safety/exclusion caveats. 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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need no explanation, and the annotations cover the safety profile. The exclusion list closes the biggest ambiguity for a snapshot tool; the only remaining gap is collision/error behavior when the name already exists.

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 name character set and that trackId comes from list_tracks. The description adds only the framing that the library is 'private' and 'named local', which slightly enriches the meaning of name but does not add new constraints.

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+resource: capture a track state and save its JSON to a named local snapshot library. However, siblings include capture_track_state_snapshot, load_track_state_snapshot and recall_track_state_snapshot, and the description never names them or explains how this differs from a plain capture, so the agent must infer the capture-vs-save split.

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 'save its JSON to the private named local snapshot library' and the fact it never overwrites, but there is no explicit when-to-use, no when-not, and no routing to the sibling capture/load/recall tools that an agent would otherwise have to disambiguate itself.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_browser_item_metadataA
Read-onlyIdempotent

Search saved private tags and favorites for Live browser items or local_splice samples. Results are not reverified against Live or the local filesystem and do not represent native collections.

NameRequiredDescriptionDefault
rootNoOptional browser root or local_splice filter.
tagsNoRequire all tags.
limitNo
favoriteNoOptional private favorite filter.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/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, idempotent, closed-world operation. The description adds meaningful behavioral context: results are not reverified against Live or the filesystem and do not represent native collections, which prevents over-trusting the output.

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, no filler, and the key scope plus the important caveat are front-loaded. Every sentence 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?

An output schema exists and the annotations cover the safety profile, so the description does not need to explain return values. It adequately covers scope and the unverified/non-native caveat, though it could more clearly relate to the sibling browser search tools.

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 75%, so most parameters are documented. The description's 'private tags and favorites' reinforces the tags and favorite parameters but adds no detail about root filtering or the limit parameter, leaving the schema to do the heavy lifting.

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 verb and resource: searching saved private tags and favorites for Live browser items or local_splice samples. It also distinguishes this from native collections, though it does not explicitly name the sibling search_browser_items tool as the alternative.

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 'saved private tags and favorites' — the agent can infer this is for querying private metadata rather than the native browser. However, there is no explicit when-to-use versus search_browser_items, search_presets, or get_browser_item_metadata, and no exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_browser_itemsA
Read-onlyIdempotent

Search a bounded subtree of Live's browser and return exact paths usable by load_browser_item. Optionally join private MCP tags and favorites by exact root, path, and URI; not native Live collections.

NameRequiredDescriptionDefault
pathNoOptional subtree path.
rootYesLive browser root.
limitNoMaximum matching items to return.
queryYesCase-insensitive item-name query.
maxDepthNoMaximum subtree depth to scan.
includeMetadataNoJoin private MCP tags and favorites for results with an exact URI.

Output Schema

NameRequiredDescription

No output 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, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds real behavioral context beyond that: results are exact paths consumed by load_browser_item, and the metadata join applies only where root/path/URI match exactly and never to native Live collections. It does not, however, describe result ordering or paging 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?

Two sentences, front-loaded with the core action and output, with no filler. The second sentence is dense and slightly awkward in its clause stacking, but each clause 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?

With a full input schema, an output schema, and complete annotations, the definition covers purpose, output usability, and the metadata-join caveat, which is most of what an agent needs. The remaining gap is disambiguation from the several other browser-search/list tools in the sibling set, which is left to inference.

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 description is not required to restate path/root/query/limit/maxDepth/includeMetadata semantics. Its only parameter-adjacent content is the join condition 'by exact root, path, and URI,' which slightly clarifies includeMetadata but is narrower than the schema already conveys. 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?

The description names a specific verb and resource (search a bounded subtree of Live's browser) plus the output contract (exact paths usable by load_browser_item), which is concrete enough to pick this tool without opening its schema. It also draws a boundary against a nearby sibling concept by stating the metadata join is 'not native Live collections.'

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 is for locating browser items, and the mention that paths feed load_browser_item hints at a downstream workflow. There is no explicit when-to-use guidance against close siblings such as get_browser_items, search_browser_roots, or get_factory_browser_items, nor any statement of 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.

search_browser_rootsA
Read-onlyIdempotent

Search selected/all available Live roots in order. Returns exact root/path, unavailable roots and result/scan truncation. Optional private MCP tags/favorites match root/path/URI; not native collections or Splice cloud.

NameRequiredDescriptionDefault
limitNoMaximum matching items across all roots.
queryYesCase-insensitive item-name query.
rootsNoOptional roots to search in order; omit for all general roots.
maxDepthNoMaximum depth below each root.
maxVisitedNoMaximum child items to inspect across selected roots; defaults to 10000.
includeMetadataNoInclude private MCP tags and favorites for results with an exact URI.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only safety and idempotency, and the description adds useful behavior beyond that: it reports exact root/path, unavailable roots, and result/scan truncation. It also clarifies private MCP tag/favorite matching scope, though it does not discuss permissions or failure modes in depth.

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 compact and front-loaded, with three short sentences that each contribute scope, return behavior, or matching caveats. There is no redundant or wasted language.

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 the rich annotations, complete input schema, and presence of an output schema, the description supplies enough context about scope, truncation, and matching caveats to call the tool safely. The main remaining gap is the lack of explicit routing guidance versus sibling browser-search tools.

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 parameter meanings are already well documented. The description adds only limited semantic detail, mainly around ordered root selection and private tag/favorite matching, which does not materially exceed the schema's 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 states a specific verb and resource: searching selected or all available Live roots. It also narrows scope by excluding native collections and Splice cloud, but it does not explicitly name sibling tools such as list_browser_roots or search_browser_items to differentiate the search surface.

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 usage by saying to search selected/all Live roots and by excluding native collections and Splice cloud. However, it gives no explicit guidance on when to use this tool instead of list_browser_roots, search_browser_items, or other browser-search siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_local_splice_samplesA
Read-onlyIdempotent

Search existing local Splice audio files by filename/folder, private favorite state and/or private tags. Query is optional when a metadata filter is supplied. Filtering happens before pagination; visited and truncated report an incomplete bounded scan. Private metadata is not a native Splice collection; no cloud search, license verification, download, or sync.

NameRequiredDescriptionDefault
tagsNoRequire every supplied tag.
limitNo
queryNoOptional case-insensitive audio filename or relative-path query; required without metadata filters.
offsetNoZero-based match offset for deterministic pagination; defaults to zero.
favoriteNoOptional private favorite state filter.
maxDepthNo
rootPathYesAbsolute local Splice asset directory.
maxVisitedNoMaximum directory entries to inspect; defaults to 50000. A truncated result is incomplete.
includeMetadataNoInclude private MCP tags and favorites for matching local files.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/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 behavioral context beyond that: filtering happens before pagination, visited/truncated signal an incomplete bounded scan, and private metadata is not a native Splice collection. It does not cover error conditions or permission requirements, keeping it at 4 rather than 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?

Four tightly packed sentences with the core purpose front-loaded and zero filler. The clause 'visited and truncated report an incomplete bounded scan' is dense to the point of being slightly telegraphic, but every sentence carries information an agent needs.

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 an output schema present, the description needn't explain return shape, and it correctly focuses on scope limits, pagination ordering, and truncation semantics for a 9-parameter tool with a required rootPath. Adequate; only the lack of sibling routing and error behavior keeps it below 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 description coverage is 78%, so the schema carries most parameter meaning. The description still adds value by mapping its stated filter dimensions (filename/folder, favorite, tags) onto query/favorite/tags and by explaining the conditional requirement that query is optional only when a metadata filter is present — a rule the schema only partially states on the query param.

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 (local Splice audio files) plus the exact filter dimensions: filename/folder, favorite state, tags. This is clearly distinct from siblings like browse_local_splice_directory (directory listing) or search_browser_items (Live browser), so an agent can select it 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?

Gives a concrete precondition ('Query is optional when a metadata filter is supplied') and explicit exclusions ('no cloud search, license verification, download, or sync'), which tells the agent when this tool is the wrong choice. It stops short of naming the sibling tool to use instead for directory browsing or cloud-side search.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_presetsA
Read-onlyIdempotent

Search optional local NKS presets by name, across products unless productSlug is given. Missing inventory records are excluded. Result catalog.configured distinguishes unavailable configuration from no matches.

NameRequiredDescriptionDefault
tagsNoRequire every supplied tag.
limitNoMaximum returned presets; defaults to 50 and is capped at 200.
queryNoName query.
favoriteNoReturn only favorites or non-favorites.
productSlugNoProduct slug.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive, closed-world behavior, so the safety burden is lifted. The description still adds genuine behavioral context: exclusion of missing inventory records, and the fact that catalog.configured disambiguates 'unavailable configuration' from 'no matches' — an important distinction an agent would otherwise misread as an empty result.

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 sentences, the scoping rule front-loaded ahead of the filtering and result caveats, with no filler. The word 'optional' in the opening clause is the only unclear element and keeps it from a 5.

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 five-parameter, no-required-parameter search tool with a full output schema, the description covers scope, filtering exclusions, and the one result field that needs interpretation. Return-value shape is rightly left to the output schema; only minor details like pagination semantics via limit are omitted, which the schema handles.

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: productSlug's presence vs absence changes search scope from one product to all, and 'by name' ties the query parameter to name matching. That is useful semantics beyond the one-line schema 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?

The description gives a specific verb and resource ('Search ... NKS presets') and bounds the domain to 'local NKS presets', which separates it from siblings like search_browser_items, search_local_splice_samples, and get_preset. The qualifier 'optional' is ambiguous and slightly muddies the scope, and it never names a sibling outright, 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?

It states the scoping rule clearly: search runs 'across products unless productSlug is given', which tells the agent when to supply that parameter. It also notes that missing inventory records are excluded. However, it names no alternative tool or when-not-to-use condition, so it is clear context without explicit routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

select_device_ab_slotA
Destructive

Load exact native device A/B slot A or B while preserving transport. Binds current device identity/parameters and refuses recording, frozen owner or active/unknown automation. Switching can disable automation without re-enabling it on return. Reports observed slot/controls; no hidden preset, automation-preservation, phase or audible proof.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.
deviceIdYesID from list_devices.
planHashNoPlan hash.
targetSlotYesExact native comparison slot.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare destructive=true, readOnly=false, idempotent=false. The description goes well beyond that by disclosing the refusal conditions, warning that 'Switching can disable automation without re-enabling it on return,' and disclaiming hidden preset, automation-preservation, phase or audible proof. This is exactly the side-effect context an agent needs for a destructive mutation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and scope, then layered with refusals and caveats. Four dense sentences with little waste, though the disclaimer sentence is packed enough to be slightly hard to parse.

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?

An output schema exists, so return values need not be explained, and the description still notes it 'Reports observed slot/controls.' Combined with the refusal conditions and automation side-effect warning, an agent has enough to call it correctly; only the routing to a context/prerequisite tool 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 the schema already documents all seven parameters, and the baseline is 3. The description only loosely touches identity/parameter binding ('Binds current device identity/parameters') without adding syntax or format meaning 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 and resource: 'Load exact native device A/B slot A or B while preserving transport.' An agent can distinguish it from read-only siblings like get_device_ab_context and the copy-oriented copy_device_ab_slot. It does not name a sibling explicitly, 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 Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear when-not conditions: it 'refuses recording, frozen owner or active/unknown automation,' which tells the agent the preconditions that must hold. However it never routes the agent to a prerequisite sibling (e.g. get_device_ab_context) or names an alternative, so it is context without explicit alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

select_instrument_comparisonA
Destructive

Plan or switch only the original/alternative pair's mutes in one native step. Restore uses the reported preparation/adoption mute baseline. Refuses recording, frozen, solo and live-input conflicts. No playback, routing or note edits. Optional finish ends the handle and preserves both tracks.

NameRequiredDescriptionDefault
choiceYes
dryRunNoFalse executes with token and hash.
finishNoEnd the comparison handle after applying the choice; keep both tracks.
planHashNoPlan hash.
comparisonIdYesActive comparison ID.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

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 readOnlyHint=false, and the description adds concrete behavioral context: it changes only mutes, restores from a reported baseline, refuses in specific conflicting states, and offers an optional finish that preserves both tracks. These details go 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?

Five sentences, each earning its place, with the core purpose front-loaded before constraints and optional behaviors. No redundant or filler 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 an output schema present and annotations covering the safety profile, the description is nearly complete for a destructive mute-selection tool. It covers refusals, mute scope, and finish behavior; only the token/dry-run execution workflow is left to the schema, which is acceptable.

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 86% and the schema documents choice, finish, dryRun, etc., so baseline is 3. The description adds a bit on 'Restore' baseline and 'finish' preservation, but mostly mirrors what the schema already states and does not explain the token/hash/dry-run workflow.

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 ('Plan or switch') and resource ('original/alternative pair's mutes') with a clear scope ('in one native step'). It distinguishes mute-only edits from broader routing or note tools, though it does not name the sibling comparison tools (prepare/adopt/get) it works alongside.

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 states what the tool refuses (recording, frozen, solo, live-input conflicts) and scopes out playback/routing/note edits, giving narrow usage context. However, it never mentions the sibling tools prepare_instrument_comparison, adopt_instrument_comparison, or get_instrument_comparison, so an agent must infer which comparison operation to call first or instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

select_take_lane_auditionA
Destructive

Select audition for one entire visible take lane, or return its track to the comp with laneId null. Rechecks native and UI identities/flags. Does not start playback, edit the comp or change mutes/solos/routing. Requires a saved Set with native document identity and one Live instance; macOS English Live, all profile.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
laneIdYesExact lane ID from inventory, or explicit null for the comp.
trackIdYesID from list_tracks.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructive=true / idempotent=false, and the description adds meaningful context beyond that: it rechecks native and UI identities/flags, and it explicitly scopes the non-effects (no playback start, no comp edit, no mute/solo/routing changes). The environment constraints (macOS English Live, single Live instance, saved Set) are real operational information not present in annotations. It does not explain the two-step confirm/token flow's failure modes, 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 sentences, front-loaded with the core action and its inverse, followed by behavior guarantees and then prerequisites. No filler and no repetition of annotation data.

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?

Output schema, annotations, and a fully described schema are all present, so the description only needs to carry purpose, non-effects, and environment prerequisites — all of which it does. A minor gap is that the plan/token confirmation workflow (dryRun → planHash → confirmationToken) is not hinted at in the description, which matters 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 description coverage is 100%, so parameters are already documented. The description reinforces the laneId null semantics (already in the schema) and the 'visible' qualifier on the lane, but adds nothing about dryRun, planHash, confirmationToken, or expectedStateVersion. Baseline 3 is correct.

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 ('Select audition for one entire visible take lane') and explicitly covers the inverse mode ('return its track to the comp with laneId null'). This distinguishes it from read-oriented siblings like get_take_lane_audition_context and get_take_lane_context without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete usage: pass a lane ID from inventory to audition, or explicit null to return the track to the comp. It also lists prerequisites (saved Set with native document identity, one Live instance, macOS English Live), which sets the call context. It stops short of naming the sibling to call first (e.g., get_take_lane_audition_context to obtain the lane ID), so a 4 rather than a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_audio_clip_stateC
Destructive

Guard audio settings and bounds: warped beats or unwarped seconds. Change warp separately. Verify independent readback.

NameRequiredDescriptionDefault
gainNoClip gain.
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
trackIdYesID from list_tracks.
warpingNoWarp enabled.
planHashNoPlan hash.
warpModeNoWarp mode value or name.
pitchFineNoFine pitch offset in cents.
pitchCoarseNoCoarse pitch offset in semitones.
endMarkerBeatsNoWarped end marker in beats.
endMarkerSecondsNoUnwarped end marker in seconds.
startMarkerBeatsNoWarped start marker in beats.
confirmationTokenNoSingle-use plan token.
startMarkerSecondsNoUnwarped start marker in seconds.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is partly covered. The description adds meaningful behavioral context with the separate-warp-change constraint and readback verification, but it does not explain concurrency implications of expectedStateVersion, the dryRun/planHash/confirmationToken workflow, or what state can be overwritten.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very short and front-loaded, and every sentence carries some information. However, it reads as compressed fragments rather than a structured explanation, leaving key details implicit.

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 15-parameter destructive mutation with a plan/confirmation workflow and concurrency token, the description is far too terse. Output schema and annotations reduce the burden somewhat, but the description does not prepare an agent for the dryRun, planHash, confirmationToken, or expectedStateVersion requirements.

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 15 parameters. The description reinforces the distinction between warped beats and unwarped seconds but adds little parameter semantics beyond what the schema descriptions already say.

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 hints at setting bounded audio properties and distinguishes warped-beat vs. unwarped-second values, but it never plainly states that this is the mutation tool for an audio clip's state. 'Guard audio settings and bounds' is vague enough that an agent must infer the core operation from the tool name and schema.

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 phrases 'Change warp separately' and 'Verify independent readback' give useful procedural guidance, implying warp edits should be isolated and followed by a readback check. However, it names no alternatives such as get_audio_clip_state or move_audio_warp_marker and gives no broader when-to-use context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_beat_repeat_enabledA
Destructive

Plan or request one exact native Beat Repeat Repeat choice, Off or On. Native execution rechecks the complete device, routing, and transport snapshot before writing Repeat and reports its immediately observed value. Does not promise beat-scheduled execution, a captured buffer, or an audible effect.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
enabledYesTarget native Repeat On or Off.
trackIdYesID from list_tracks.
deviceIdYesID from list_devices.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds genuine context beyond the annotations: native execution rechecks the full device, routing, and transport snapshot before writing and reports the immediately observed value, which tells the agent to expect a verified post-write read. It also scopes expectations by denying beat-scheduled execution, buffer capture, and audible effect. It does not explain the token/hash confirmation gate or what a failed recheck yields, and the destructiveHint=true annotation is not reinforced or qualified.

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 sentences, front-loaded with the action and capped by explicit non-promises; every sentence carries information. Minor waste in the doubled "Beat Repeat Repeat" and the abstract "Plan or request" framing.

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?

An output schema covers return values and annotations cover the safety profile, leaving the description responsible for the semantic envelope — what is written, how it is verified, and what it does not guarantee — which it delivers. An agent has enough to call it correctly even without sibling cross-references.

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 explains enabled, dryRun, planHash, confirmationToken, and expectedStateVersion — baseline 3 applies. The description reinforces that the toggle is strictly Off/On and that writes are gated on a state snapshot, but adds no syntax or sequencing detail for the plan/confirm parameters beyond what the schema states.

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 resource and mutation: the Beat Repeat device's Repeat toggle, Off or On. That distinguishes it implicitly from set_beat_repeat_grid and set_beat_repeat_interval, though no sibling is named. The phrase "one exact native Beat Repeat Repeat choice" is awkward and repetitive, costing a point on crispness.

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?

"Plan or request" implies the dryRun-then-execute workflow, and the closing sentence implies usage boundaries by disclaiming beat-scheduled execution and audible output. However, it never names an alternative tool (e.g. get_beat_repeat_performance_context for reading state, perform_beat_repeat_fill for a timed fill) nor states when not to call it. Usage is inferable, not stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_beat_repeat_gridA
Destructive

Plan or request one exact native Beat Repeat Grid display division from get_beat_repeat_performance_context.gridChoices. Ambiguous or unavailable display labels fail closed. Native execution rechecks the complete device, routing, and transport snapshot before writing; observed parameter equality is reported, not an audible or beat-scheduled result.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
trackIdYesID from list_tracks.
deviceIdYesID from list_devices.
planHashNoPlan hash.
gridDisplayValueYesExact native Grid display value, for example 1/12.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/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; the description adds real value on top: fail-closed handling of bad labels, a full device/routing/transport snapshot recheck before writing, and the important caveat that a successful call reports parameter equality rather than an audible or beat-scheduled result. It does not spell out the dry-run/token/confirmation sequence, 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences that front-load the resource and the valid-value source before moving to fail-closed behavior and the write-time caveat. Dense but every clause carries information; minor jargon ('fail closed', 'observed parameter equality') adds mild parsing cost.

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 rich 7-parameter schema, full coverage, and an output schema, the description need not explain return values. It covers the planning vs native-execution duality, validation strictness, and the pre-write recheck, which is enough for a mutation tool; only the multi-step token/hash workflow remains implicit.

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 baseline is 3. The description corroborates gridDisplayValue as an exact native display division but adds no format or constraint detail beyond what the schema already documents, and says nothing extra about expectedStateVersion, planHash, or confirmationToken.

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 resource (the native Beat Repeat Grid display division) and the exact source of valid values (get_beat_repeat_performance_context.gridChoices), which separates it from the sibling set_beat_repeat_interval. The verb is muddied by 'Plan or request' for a tool literally named set_, leaving some ambiguity about whether it stages or commits.

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 tells the agent where to obtain the value (gridChoices) and that ambiguous or unavailable labels fail closed, which implies usage. However, it never states when to choose this over set_beat_repeat_interval or set_beat_repeat_enabled, so routing among the Beat Repeat siblings 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.

set_beat_repeat_intervalA
Destructive

Plan or request one exact native Beat Repeat Interval display from get_beat_repeat_performance_context.intervalChoices. Native integer-position labels are mapped without assuming a quantized parameter or scheduled trigger. Ambiguous or unavailable labels fail closed; execution rechecks the complete device, routing, and transport snapshot and reports immediately observed parameter equality, not an audible result.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
trackIdYesID from list_tracks.
deviceIdYesID from list_devices.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.
intervalDisplayValueYesExact native Interval display value, for example 1/2.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructiveHint=true, idempotentHint=false and no read-only, and the description adds real context beyond that: a plan-vs-execute split, fail-closed behavior on ambiguity, a mandatory recheck of device/routing/transport snapshot, and the caveat that it reports parameter equality rather than an audible outcome. It stops short of stating permissions or what state is mutated on failure.

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?

Three dense sentences, with the core action and value source front-loaded. However, phrasing like 'mapped without assuming a quantized parameter or scheduled trigger' is jargon-heavy and buries the plan-vs-execute distinction mid-paragraph.

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, token-gated tool with an output schema, the description covers the key concerns: where values come from, what happens on ambiguity, snapshot revalidation, and that the reported result is parameter equality only. The plan/execute handshake is implied but not fully spelled out.

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 for intervalDisplayValue (must be an exact native label from intervalChoices, not an assumed quantized value) and implicitly for expectedStateVersion (stale-snapshot rejection). The dryRun/planHash/confirmationToken trio is left 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 (set/plan) and a specific resource (native Beat Repeat Interval display value), and names the authoritative source of valid values (get_beat_repeat_performance_context.intervalChoices). An agent can tell what it does, though it never names the adjacent set_beat_repeat_grid / set_beat_repeat_enabled siblings to sharpen 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?

It gives a prerequisite (values must come from intervalChoices) and a failure policy (ambiguous or unavailable labels fail closed), which is useful when-to-use context. But it never says when to prefer this over set_beat_repeat_grid or how the dryRun plan/execute cycle should be sequenced, so selection guidance is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_browser_item_metadataA
Destructive

Plan or edit private MCP-managed tags and favorite state with observed Live browser identity or local audio-file version, exact revision, and single-use confirmation. A Live user-folder sample shares the local Splice record only when its URI unambiguously matches a configured local Splice file; reserved URI delimiters and existing separate Live metadata preserve exact Live identity. For a local sample, use root local_splice and path [absolute directory, relative audio path]. Does not modify native collections.

NameRequiredDescriptionDefault
pathYesNon-empty path to one item.
rootYesLive browser root or local_splice.
tagsNoComplete replacement tag set, up to 32 entries.
dryRunNoFalse executes with token and hash.
favoriteNoPrivate favorite state.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedMetadataRevisionYesExact preset metadata revision observed immediately before planning.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructive/non-idempotent/non-read-only, and the description adds meaningful context beyond them: a plan-then-edit flow requiring 'exact revision' and 'single-use confirmation', and the guarantee that reserved URI delimiters and existing separate Live metadata preserve Live identity. It stops short of describing what a stale revision triggers or the auth/permission surface.

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?

Purpose is front-loaded, which is good, but the middle sentence ('reserved URI delimiters and existing separate Live metadata preserve exact Live identity') is dense jargon that resists parsing. The three sentences are information-rich but not cleanly structured for an agent.

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 an output schema present, return values need not be explained, and the annotations carry the safety profile. The description covers the dual plan/edit mode, the confirmation flow, the Live-vs-local branch, and the native-collection exclusion, leaving mostly edge-case failure behavior unaddressed.

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 parameter set is already documented and baseline 3 applies. The description adds real meaning by explaining the root/path relationship ('use root local_splice and path [absolute directory, relative audio path]'), which goes beyond the schema's per-field 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 specific verb ('Plan or edit') and resource ('private MCP-managed tags and favorite state'), and scopes it with 'Does not modify native collections'. It is distinguishable from the read-only siblings get_browser_item_metadata and search_browser_item_metadata, though it never names them 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?

It gives a conditional usage rule ('A Live user-folder sample shares the local Splice record only when its URI unambiguously matches a configured local Splice file') and prescribes root=local_splice with a two-element path for local samples. However, it never states when to prefer this over get/set_preset_metadata or get_browser_item_metadata, so routing is left partly to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_browser_previewA
Destructive

Request start for an exact native browser item, or global stop. Can replace or stop a user preview. Guarded single native call; no loading, transport edits, ownership, active-state or audible verification. Start requires recording/count-in off. No automatic cleanup or replay. Updated bridge; all profile.

NameRequiredDescriptionDefault
pathNo
rootNoExact browser root for start only.
actionYes
dryRunNoFalse executes with token and hash.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/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, but the description adds real value beyond that: it discloses that this is a guarded single native call, that it does not load, edit transport, take ownership, verify active state, or verify audibility, and that there is no automatic cleanup or replay. The remaining gap is the dryRun/planHash/confirmationToken execution flow, which is only partially hinted at.

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 constraints are front-loaded and dense in the first three sentences, which is good. But 'Updated bridge; all profile.' is cryptic filler that consumes space without conveying a usable constraint, and the telegraphic style makes several exclusions ambiguous in scope.

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?

This is a destructive, guarded mutation with an output schema, so the description's job is largely preconditions and negative scope, both of which it covers well ('no loading', 'no audible verification', 'no automatic cleanup or replay', recording/count-in requirement). Only the transactional confirmation flow and the state-version conflict behavior are left implicit for an agent to assemble.

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 71%, so the baseline is 3. The description reinforces that root/path must be an 'exact' browser item for start, but it says nothing about expectedStateVersion as a concurrency guard or about the plan-hash/confirmation-token confirmation sequence, leaving the two required non-action parameters 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 concrete verb and resource: request start for an exact native browser item, or global stop, which is more specific than the tool name alone. The phrase 'no loading' implicitly separates it from load_browser_item, but the obvious read companion get_browser_preview_context is never named, so differentiation is inferred 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?

'Can replace or stop a user preview' and 'Start requires recording/count-in off' give a precondition and a behavioral consequence, which implies when the call will succeed. However there is no explicit guidance on when to use this versus get_browser_preview_context, nor any statement of what to do when the precondition is unmet.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_bulk_track_mixerA
Destructive

Plan or apply guarded volume, pan, mute, and solo changes to multiple existing ordinary tracks in one confirmed step. Per-track values clamp to each observed native range; sends are unchanged.

NameRequiredDescriptionDefault
panNoPan applied to every listed track.
muteNoMute state applied to every listed track.
soloNoSolo state applied to every listed track; a solo write mutes everything else at Live level.
dryRunNoFalse executes with token and hash.
volumeNoVolume applied to every listed track.
planHashNoPlan hash.
trackIdsYesUnique ordinary track IDs to change.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructiveHint=true, readOnlyHint=false, idempotentHint=false, and the description adds real substance on top: values clamp to each observed native range, sends are left untouched, only ordinary tracks are eligible, and the write is guarded/confirmed. It stops short of saying whether a partially invalid trackIds list aborts the whole batch.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly packed sentences with the scope and safety constraints front-loaded and zero filler. Every clause (guarded, clamped, sends unchanged) carries decision-relevant 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 nine parameters, an output schema, and destructive annotations, the description covers scope, safety, and value semantics well enough to call the tool correctly. It omits batch atomicity and the track-limit, though the latter is documented in 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%, so the baseline is 3, but the description adds genuinely new semantics: clamping behavior for volume/pan per observed native range and the guarantee that sends are not affected. It still leaves the planHash/confirmationToken/expectedStateVersion workflow 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 ('plan or apply'), a specific resource (volume, pan, mute, solo on multiple tracks), and scope boundaries: 'multiple existing ordinary tracks' and 'sends are unchanged'. That implicitly separates it from the single-track set_track_mixer and from send-level tools like set_track_send_db.

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 phrase 'in one confirmed step' plus 'plan or apply' gives clear context that this is a two-phase plan/confirm operation, matching the dryRun/planHash/confirmationToken parameters. It does not explicitly name when to prefer set_track_mixer over this bulk tool, so an exclusion statement is missing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_clip_parameter_envelopeA
Destructive

Plan/set 1–512 ordered Session envelope steps with native context checks and explicit clamping. Existing lanes require replaceExisting:true, which discards the whole curve, including unsampled edits. No full-curve backup or restoration. Playback must be stopped; recording off. Verifies sampled interiors.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
pointsYesOrdered nonoverlapping envelope steps.
trackIdYesID from list_tracks.
deviceIdYesID from list_devices.
planHashNoPlan hash.
parameterIdYesID from list_device_parameters.
replaceExistingNoExplicit authority to discard the entire existing lane, including unsampled points; default false. No complete curve backup.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds meaningful behavior beyond the destructive annotation: replacement discards the whole curve including unsampled edits, there is no full-curve backup or restoration, values are clamped, and sampled interiors are verified. These are exactly the operational details an agent needs before executing a destructive write.

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 text is dense, front-loaded, and each sentence carries weight. 'Verifies sampled interiors' is slightly cryptic and could be clearer, but there is 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?

Given the output schema exists, the description need not explain returns. It covers destructive scope, preconditions, clamping, and verification adequately, though it does not describe the dryRun/planHash/confirmationToken workflow, which the schema handles.

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%, but the description adds value by explaining that existing lanes require replaceExisting:true and that this discards the entire curve. It also reinforces clamping semantics and the 1–512 step limit, though most parameter-level detail remains in 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: 'Plan/set 1–512 ordered Session envelope steps', with scope boundaries and the replaceExisting requirement for existing lanes. It implicitly distinguishes creation from replacement but does not name sibling tools like create_clip_parameter_envelope or get_clip_parameter_envelope.

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 clear preconditions: playback must be stopped and recording off, and existing lanes require replaceExisting:true. It does not explicitly say when to use this tool versus related envelope tools, but the context is strong enough for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_clip_slot_stop_buttonA
Destructive

Plan or change the stop button of one empty ordinary Session slot. Binds native full-row context, verifies readback and attempts owned rollback. Does not launch, stop playback or guarantee armed-empty recording behavior. Requires updated bridge; all profile.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
trackIdYesID from list_tracks.
planHashNoPlan hash.
hasStopButtonYesTrue stops this track on scene launch; false leaves an unarmed empty slot without a stop button.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructiveHint=true and idempotent=false, so the safety profile is covered. The description adds genuine behavioral detail beyond that: it 'verifies readback and attempts owned rollback' (i.e., partial, best-effort rollback) and warns that armed-empty recording behavior is not guaranteed, plus a bridge prerequisite.

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 tight sentences with the purpose front-loaded and no repetition. The trailing 'Requires updated bridge; all profile.' is terse to the point of being cryptic, which slightly dents structure but does not waste space.

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?

An output schema exists, so return values need not be explained, and annotations cover the destructive profile. Still, for a destructive plan/apply mutation the description never explains the planHash/confirmationToken two-step flow or what 'owned rollback' actually reverts, leaving the agent to infer the workflow from parameter names.

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 seven parameters carry their own descriptions (dryRun, planHash, confirmationToken, etc.). The description adds no parameter-level meaning 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a concrete verb+resource pair — setting the 'stop button' of an empty Session slot — which is more specific than the bare name. However, qualifiers like 'ordinary Session slot' and 'full-row context' are undefined jargon, and it does not explicitly contrast itself with nearby siblings such as set_session_clip_entry or stop_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 gives clear when-not guidance ('Does not launch, stop playback or guarantee armed-empty recording behavior') and a prerequisite ('Requires updated bridge; all profile'). No alternative tool is named for the excluded cases, which keeps it short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_clip_timingC
Destructive

Loop, meter, launch, Legato, mute, groove and grid edits. Loops bind native identity/material; partial readback, no rollback.

NameRequiredDescriptionDefault
loopNoEnable looping and set bounds: beats for MIDI/warped audio; seconds for unwarped.
muteNoGuarded Clip Activator mute; updated bridge.
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
trackIdYesID from list_tracks.
grooveIdNoID assigns. Null removes in macOS Clip View: saved Set, unique clip name, sole edit. Selects clip; updated bridge.
planHashNoPlan hash.
editorGridNoNative clip-editor quantization and triplet display.
launchModeNoSession launch choice.
launchLegatoNoSession Legato launch.
timeSignatureNoNative numerator and denominator.
confirmationTokenNoSingle-use plan token.
launchQuantizationNoLaunch quantization value or name.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructive=true, idempotent=false, and openWorld=false, so the safety baseline is covered. The description adds 'partial readback, no rollback' and 'Loops bind native identity/material,' which is useful mutation context, but it is cryptic and omits the dryRun/planHash/confirmationToken workflow entirely.

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 sentences, but the second is dense jargon ('Loops bind native identity/material') whose meaning is not clarified, and the first is a bare list. It is concise but not structured in a way an agent can easily act on.

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 14-parameter, destructive, non-idempotent mutation with a preview/confirm token flow, the description omits the critical workflow: dryRun, planHash, confirmationToken, and expectedStateVersion concurrency semantics. The output schema covers return values, but the call protocol is not explained.

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 explains each of the 14 parameters, including the nested loop, editorGrid, and timeSignature objects. The description's category list (loop, meter, launch, legato, mute, groove, grid) loosely maps to parameter groups but adds no meaning beyond the schema.

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 noun-phrase list of editable facets ('Loop, meter, launch, Legato, mute, groove and grid edits') rather than a verb+resource statement; it never says it sets timing properties on a track/clip. The sibling get_clip_timing is the obvious counterpart, but the description never explicitly distinguishes the setter from the getter.

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 or when-not-to-use guidance, no prerequisites such as obtaining expectedStateVersion or running a dry run first. The only directive is the caveat 'no rollback,' which is a warning rather than routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_crossfader_stateA
Destructive

Change either 1-64 exact track/Group/Return A/B assignments or the Main crossfader position in separate confirmations. Binds all native mixer identities and bus membership; requires recording/count-in off and known inactive Main automation. Position affects all assigned members. Immediate requests, not a timed fade or atomic audio transition. Partial work retained; no rollback/replay. Updated bridge; all profile.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
planHashNoPlan hash.
positionNoNative Main crossfader position; -1 left, 0 center, +1 right. No clamping.
assignmentsNo
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (destructive, non-idempotent, write), it discloses that partial work is retained with no rollback/replay, that the position affects all assigned members, and that separate confirmations are required. These are meaningful side-effect details, though cryptic phrases like 'Updated bridge; all profile' add little clarity.

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 reasonably front-loaded, leading with the core action, but the prose is dense and telegraphic, with fragments such as 'Binds all native mixer identities and bus membership' and 'Updated bridge; all profile' that are not self-explanatory. Every sentence is trying to carry weight, but clarity suffers for it.

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 destructive mutation with an output schema and full annotations, the description covers the critical gaps: prerequisites, non-atomicity, partial-failure retention, and scope of effect. An agent has enough to call it safely without opening further docs.

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 83% schema coverage the baseline is 3, and the description adds value by clarifying the either/or semantics of assignments versus position (the oneOf) and the 1-64 bound, plus the separate-confirmation flow implied by the token/hash params. It does not explain expectedStateVersion or the dryRun/planHash handshake in detail.

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 (Change) and resource (track/Group/Return A/B assignments or Main crossfader position), and clearly explains the two mutually exclusive modes, which maps well to the oneOf schema. It does not name the sibling get_crossfader_context or otherwise differentiate itself explicitly from it, 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 Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives concrete preconditions for use (recording/count-in off, known inactive Main automation) and rules out misuse by noting it is an immediate request rather than a timed fade. It offers no explicit alternative tool or when-not-to-use routing, 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.

set_device_activeB
Destructive

Set local Device On with native identity and power-automation guards; preserves focus/playback.

NameRequiredDescriptionDefault
activeYesLocal Device On; parents unchanged.
dryRunNoFalse executes with token and hash.
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.
deviceIdYesID from list_devices.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and non-idempotent, so the safety profile is covered. The description adds some value by claiming 'power-automation guards' and that it 'preserves focus/playback', but these are vague and it never explains the plan/dry-run/confirmation-token workflow implied by the schema's planHash and confirmationToken parameters.

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 core action front-loaded and the side-effect claim trailing. It is efficient, though the dense jargon slightly reduces readability rather than 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?

An output schema exists, so return values need not be described, and annotations cover the safety profile. However, the tool clearly operates inside a plan-then-confirm workflow (dryRun, planHash, confirmationToken, expectedStateVersion) that the description never mentions, leaving a meaningful behavioral 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%, so the schema already documents all seven parameters including dryRun, planHash, confirmationToken and expectedStateVersion. The description adds no syntax, format, or dependency detail beyond what the schema provides, 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 a specific verb and resource: 'Set local Device On', which an agent can map to toggling a device's active state. The qualifiers 'native identity and power-automation guards' are jargon-heavy but do convey scoping. It does not name a sibling (e.g., get_device_activation_context or set_device_parameters) to differentiate itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no statement of prerequisites, and no reference to alternatives such as get_device_activation_context or set_device_parameters. The agent is left to infer that this is the activation toggle from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_device_parameter_displayA
Destructive

Set one continuous device parameter to a finite native unit display (Hz/kHz, ms/s, dB, %). Resolves through Live's formatter without guessing raw values; refuses automation, recording and unrepresentable targets. Requires all profile.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.
deviceIdYesID from list_devices.
planHashNoPlan hash.
parameterIdYesID from list_device_parameters.
targetDisplayYesNumeric target and unit, such as 2 kHz, 200 ms, -12 dB or 25 %. Decimal point only; no clamping or approximation.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds meaningful behavior beyond the annotations: it resolves through Live's formatter, avoids raw-value guessing, and refuses automation, recording, and unrepresentable targets. Given the destructive annotation, this helps the agent understand constraints, though it does not elaborate on confirmation-token or dry-run workflow details.

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 and compact: it states the operation, the formatter behavior, and refusal conditions in three dense sentences. No sentence is redundant with the tool name alone.

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 destructive mutation tool with rich schema coverage and an output schema, the description captures the key behavioral constraints and target-display semantics. The phrase 'Requires all profile' is terse, and dry-run/token sequencing is left to the schema, so it is strong but not 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 baseline is 3. The description reinforces the meaning of targetDisplay and the continuous-parameter scope, but the schema already documents the parameters and their examples in detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: setting one continuous device parameter to a native unit display. It distinguishes itself from bulk or selection-oriented siblings by emphasizing 'one continuous device parameter' and the formatter-based target display semantics.

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 usage context: use this when the target is a finite native display value, and it explicitly refuses automation, recording, and unrepresentable targets. It does not name the best sibling alternative for bulk writes or selected-parameter writes, so it stops short of full when/when-not/alternative guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_device_parametersA
Destructive

Plan/set bounded device parameters on ordinary/Return/Main tracks. Strings select exact unambiguous quantized labels; numbers retain native clamping. Looper State Record/Overdub writes mutate recorded content: restoring a parameter does not restore captured audio.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
changesYesParameter changes.
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.
deviceIdYesID from list_devices.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructive=true and non-idempotent, so the safety bar is partly met. The description adds real behavioral value beyond them: strings select exact quantized labels while numbers are natively clamped, and critically that Looper State Record/Overdub writes mutate recorded audio that restoring a parameter will not recover. That irreversible-effect warning is exactly the kind of context 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?

Three dense sentences with no filler, front-loaded with the action and scope before the value-typing rule and the destructive caveat. Every clause 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?

Output schema and annotations are present, so return values and the safety profile need not be restated here. For a 7-param destructive mutation tool the description covers scope, value typing and the irreversibility caveat well; the main remaining gap is the plan/execute token workflow, which the schema only hints at.

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 beyond the schema by explaining the string-vs-number value contract ('exact unambiguous quantized labels' vs 'native clamping') rather than merely repeating the property descriptions. It does not, however, explain the planHash/confirmationToken/expectedStateVersion sequencing.

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 ('set bounded device parameters') and constrains scope to 'ordinary/Return/Main tracks,' which distinguishes it from session-object and mixer siblings. It stops short of naming the closest alternatives such as set_device_parameter_display or override_parameter_automation, so an agent still has to 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?

The dual 'Plan/set' phrasing implies a dry-run-then-commit flow, and the string/number clause implies how to supply values, but neither is stated as an explicit when-to-use rule. No sibling is named as an alternative and no precondition (like 'call list_device_parameters first') is spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_device_sidechain_routingA
Destructive

Plan or apply one guarded native device-sidechain source type or channel change. Read refreshed channels after changing source type. Rejects unsupported devices and ambiguous choices; does not enable external sidechain automatically.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.
deviceIdYesID from list_devices.
planHashNoPlan hash.
sourceTypeIdNoExact available sidechain source type ID.
sourceChannelIdNoExact available sidechain channel ID.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/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 substance beyond them: a plan/apply guard with token and hash, rejection of unsupported devices and ambiguous choices, and the fact that external sidechain is not auto-enabled. It does not say what a rejected attempt returns or how state version conflicts surface, 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the action and followed by the sequencing rule and the exclusions; nothing is padded. 'Ambiguous choices' is the one loosely worded phrase, but it still steers the agent toward exact IDs.

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?

An output schema exists and annotations carry the safety profile, so the description only needs the operating model, which it supplies: guarded plan/apply, rejection conditions, and the no-auto-enable caveat. It stops short of saying which devices actually support native sidechain, but that is arguably discoverable via inspection tools.

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 eight parameters including dryRun, planHash, and confirmationToken are already documented. The description adds the conceptual plan/apply distinction but no format, ordering, or dependency rules beyond the schema; baseline 3 is 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?

States a specific verb pair and resource: 'Plan or apply one guarded native device-sidechain source type or channel change.' An agent can tell this mutates sidechain routing rather than general device state. It never names the obvious read sibling get_device_sidechain_routing, so sibling differentiation is only implied.

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?

'Plan or apply' establishes the two-phase usage and 'does not enable external sidechain automatically' is an explicit exclusion that prevents a wrong expectation. 'Read refreshed channels after changing source type' is a post-change instruction that implicitly points to the read tool, but the sibling is not named, leaving the alternative to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_drum_pad_stateB
Destructive

Plan or mute/solo an exact populated Drum Rack pad by MIDI note with a guarded rack snapshot. Does not assign sounds to pads.

NameRequiredDescriptionDefault
muteNoMute pad.
noteYes
soloNoSolo pad.
dryRunNoFalse executes with token and hash.
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.
deviceIdYesID from list_devices.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=false and readOnlyHint=false, so the mutation risk is covered. The description adds that the change is made against a 'guarded rack snapshot' and offers a plan mode, but never explains the plan/token/hash confirmation workflow or what state the guard protects, which is the operationally important part.

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 the action and target, with the negative scope constraint second. Dense but no filler; 'Plan or mute/solo ... by MIDI note' packs three modes and an addressing scheme economically.

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?

An output schema exists so return values need not be explained, and the 4 required params are schema-documented. However, for a destructive, non-idempotent, concurrency-guarded (expectedStateVersion) mutation with a single-use token flow, the description leaves the safe-call sequence unstated.

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 89%, so the schema already documents mute, solo, dryRun, trackId, deviceId, planHash, confirmationToken and expectedStateVersion. The description contributes only the MIDI-note addressing concept, which is straightforward; 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?

States a specific verb (plan / mute / solo) and resource (a populated Drum Rack pad addressed by MIDI note), plus an explicit scope exclusion ('Does not assign sounds to pads'). No sibling is named, but the drum-pad target makes it distinguishable from pattern-level tools like apply_drum_variation.

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 supplies a when-not ('Does not assign sounds to pads'), which helps rule out sample-assignment use, but never states when to use it versus the drum-pattern/variation siblings, nor that planning must precede execution. 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.

set_grooveA
Destructive

Plan or apply guarded Groove Pool base-grid, name and percentage edits. Timing, random, pre-quantization use 0–100; velocity uses -100–100. Affects every clip using this shared groove; does not bake or extract a groove.

NameRequiredDescriptionDefault
nameNoGroove name.
dryRunNoFalse executes with token and hash.
baseGridNoExact native baseGrid choice name or value from musical context, including triplets.
grooveIdYesExact groove ID from musical context.
planHashNoPlan hash.
randomAmountNoRandom timing percentage.
timingAmountNoTiming percentage.
velocityAmountNoVelocity percentage; negative reverses the groove's velocity influence.
confirmationTokenNoSingle-use plan token.
quantizationAmountNoStraight pre-quantization percentage.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag this as destructive and non-idempotent, so the lower bar applies. The description adds genuinely useful behavioral context by warning that the change affects every clip using the shared groove and by clarifying that it neither bakes nor extracts a groove.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three tight sentences with no filler. The core operation is front-loaded, followed by useful range and blast-radius context.

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 11-parameter destructive mutation tool, the description covers the key conceptual behavior: plan/apply, shared-groove scope, and non-baking semantics. With annotations, full schema descriptions, and an output schema present, it is mostly complete, though it could better route the agent against related groove tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description's range note for timing, random, pre-quantization, and velocity largely repeats min/max constraints already present in the schema, and it does not add further meaning for parameters like baseGrid, expectedStateVersion, planHash, or confirmationToken.

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/resource combination: plan or apply guarded Groove Pool edits for base-grid, name, and percentage amounts. It is clear what the tool operates on, but it does not explicitly distinguish itself from nearby siblings such as create_groove or the various MIDI-feel/groove-context tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Plan or apply' implies the dryRun/confirmation workflow, and 'does not bake or extract a groove' clarifies a boundary. However, it does not say when to use this versus create_groove, apply_midi_feel_template, or other groove-related siblings, so the 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.

set_group_fold_stateA
Destructive

Plan or apply the folded state of one exact existing group track.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
foldedYesWhether the group is folded.
trackIdYesID from list_tracks.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, readOnlyHint=false, and non-idempotency, so the safety profile is covered. The description adds valuable context that this is a plan/apply tool, but it doesn't explain the confirmation-token/planHash flow, what state gets destroyed, or version-conflict behavior that a destructive mutation would warrant.

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 zero filler. It's tight and readable, though it is arguably very terse for a destructive two-phase tool, leaving some explanatory work undone.

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 full output schema, complete parameter coverage, and annotations carrying the safety profile, the description covers the essential purpose. The remaining gap is the plan/apply workflow mechanics, which is a minor omission given the rich structured data.

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 six parameters are documented in the schema. The description only gestures at the plan-vs-apply distinction via 'Plan or apply' and adds no parameter-level meaning 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?

States a specific verb (set folded state) and an exact resource ('one exact existing group track'), and the 'plan or apply' phrasing signals a two-phase workflow. It doesn't explicitly differentiate from any sibling, but the operation is distinct enough that an agent can identify it.

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 'Plan or apply' implies there are two modes and hints at the dry-run pattern, but the description never states when to choose planning vs applying, nor does it point to a related context tool. Usage is only implied, not spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_live_object_colorsA
Destructive

Set colors for one to 64 exact tracks, Returns, Main, scenes or existing Session/Arrangement clips in one undo step. Binds native identity and current color/name/selection. Live may choose a nearby palette color; reports actual RGB and exactMatch. Track color inheritance can affect Rack-chain appearance. No automatic clip recoloring or musical writes. Partial changes remain. All profile.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
changesYesExplicit unique object/color pairs.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.
expectedSetFingerprintYesCurrent Set fingerprint from get_live_state.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial behavior beyond the annotations: one undo step, native identity/state binding, palette substitution with actual RGB and exactMatch reporting, Rack-chain appearance effects from track color inheritance, no automatic clip recoloring or musical writes, and partial changes remaining. These are meaningful caveats for a destructive mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded and dense with useful facts, with no filler. However, the telegraphic fragments such as 'Partial changes remain.' and 'All profile.' slightly reduce readability and structure.

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 an output schema and 100% schema description coverage, the description does not need to explain return values or every parameter. It covers the key mutation risks, undo behavior, supported object types, and palette caveats, though it omits the explicit dry-run/token execution model that the schema documents.

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 parameters such as dryRun, expectedStateVersion, expectedSetFingerprint, planHash, and confirmationToken are already documented in the schema. The description adds object count and color-palette behavior, but does not add meaning for the state-version or plan-token parameters 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?

States a precise verb and resource: sets colors for one to 64 exact tracks, Returns, Main, scenes, or existing Session/Arrangement clips. The object scope is unusually specific and clearly distinguishes this write operation from the sibling read tool get_live_object_colors.

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?

Implied usage is clear from the supported object types and the need for exact IDs from get_live_object_colors, but the description does not explicitly say when to use this versus alternatives or when not to use it. It lacks an explicit prerequisite flow for obtaining expectedStateVersion, fingerprint, or token.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_looper_stateA
Destructive

Plan or request one exact native Looper State choice: Stop, Record, Play, or Overdub. Native execution rechecks the complete Looper, routing, and transport snapshot before writing State; result reports the immediately observed State parameter and whether it matches the target, not an audible or quantized-boundary outcome. Record/Overdub can mutate captured audio and cannot be rolled back by restoring a parameter value. This does not promise beat-scheduled execution; verify native quantization behavior separately.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
trackIdYesID from list_tracks.
deviceIdYesID from list_devices.
planHashNoPlan hash.
targetStateYes
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: it discloses that native execution rechecks the full Looper/routing/transport snapshot before writing, that the result reports the immediately observed State and a match flag rather than an audible or quantized outcome, and that Record/Overdub mutate captured audio and cannot be rolled back by restoring a parameter value. That last point directly qualifies the destructiveHint=true annotation with the specific irreversibility mechanism.

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 dense sentences, front-loaded with the action and target values, then risk and outcome semantics. Every sentence carries information, though the 'not an audible or quantized-boundary outcome' clause is wordy and could be tightened.

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 rich annotations and an output schema present, the description covers the risks and result semantics well. The main remaining gap is the two-phase plan/execute contract linking dryRun, planHash and confirmationToken, which an agent must infer from the schema 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 86%, so the schema already documents all seven parameters including dryRun, planHash and confirmationToken. The description adds context for expectedStateVersion (the snapshot recheck/version precondition) but never explains the plan/token/hash relationship or that dryRun gates execution, so it adds only marginal meaning over 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 the native Looper State) and enumerates the exact allowed values Stop/Record/Play/Overdub. It also distinguishes itself from the read-only sibling context tools by framing the action as plan-or-request-a-write, so an agent can tell it apart from get_looper_performance_context 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 Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: 'Plan or request' hints at a dry-run-then-commit workflow, and 'verify native quantization behavior separately' gives one caveat. However, no alternative tool is named (e.g. get_looper_performance_context to inspect state first), and there is no explicit when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_master_mixerA
Destructive

Guard Main volume, Stereo pan, cue, crossfader and exact hardware-channel edits with native identities, recording/automation checks and deferred readback. Binds Main controls, routes and crossfader membership. Partial writes remain without rollback or replay; inspect verified and writes. Mix-wide scope required.

NameRequiredDescriptionDefault
panNoMain pan.
dryRunNoFalse executes with token and hash.
volumeNoMain volume.
planHashNoPlan hash.
cueVolumeNoCue volume.
crossfaderNoCrossfader position.
outputChannelIdNoExact available Main output channel ID from get_set_mixer.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds meaningful behavioral context beyond the annotations: it discloses that writes may be partial, that there is no rollback or replay, and that the caller should inspect verified writes. This is valuable for a destructive mutation tool, though terms like 'verified and writes' remain somewhat cryptic.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loads the affected controls, but it packs several dense concepts into short phrases such as 'native identities', 'recording/automation checks', and 'deferred readback'. It is not bloated, but the structure is less readable than it could be.

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 destructive, multi-parameter master mixer mutation with an output schema, the description covers the critical behavioral caveats: partial writes, no rollback/replay, and the need to inspect verified writes. It could be stronger by explicitly naming the prerequisite readback tool, but the schema already points to get_set_mixer.

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 every parameter already has a schema description, including Main volume, pan, cue volume, crossfader, output channel ID, token, hash, dryRun, and expected state version. The description reinforces the affected mixer areas but adds little parameter-specific meaning beyond what the schema already 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 identifies the resource (Main/master mixer) and the controls affected: volume, stereo pan, cue, crossfader, and hardware-channel edits. It is more specific than the name alone, though the verb 'guard' and phrases like 'native identities' make the operation slightly less crisp than a direct 'set/update' statement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage through 'Mix-wide scope required' and the focus on Main controls, which helps distinguish it from track- or return-scoped mixer tools. However, it does not explicitly say when to use this instead of siblings such as set_mixer_panning, set_crossfader_state, set_return_mixer, or set_track_mixer.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_midi_clip_markersA
Destructive

Set start/end markers of one loop-enabled Session or Arrangement MIDI clip in absolute source beats. Omitted bound stays unchanged. Preserves stored notes and loop settings; same values make no write. Native guards and partial readback; no automatic rollback.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
trackIdYesID from list_tracks.
endBeatsNoNative end marker above start.
planHashNoPlan hash.
startBeatsNoNative start marker; at least one marker required.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the write/destructive profile, and the description still adds real value: notes and loop settings are preserved, identical values produce no write, and failures are not rolled back automatically. The 'native guards and partial readback' phrase is opaque and no permission/auth requirements are given, 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short clauses with the purpose front-loaded and no filler. The final clause ('Native guards and partial readback; no automatic rollback') is compressed to the point of being cryptic, which slightly undercuts the efficiency gain.

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 destructive mutation with an output schema, the description covers preservation scope, partial-update behavior, and rollback expectations — the things an agent most needs before writing. It stops short of the token/hash plan-confirm sequence and the failure modes behind the 'native guards', leaving those to the schema and output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description does add semantic detail the schema lacks — markers are in absolute source beats and an omitted bound is left untouched, which clarifies the startBeats/endBeats pairing — but it says nothing about the expectedStateVersion / confirmationToken / dryRun workflow params.

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 start/end markers of one loop-enabled Session or Arrangement MIDI clip') plus the unit of measure ('absolute source beats'), so the scope and the kind of clip affected are unambiguous. It does not name a sibling to contrast with (e.g. set_clip_timing, crop_midi_clip), so an agent must infer the boundary itself.

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 constraints are implied rather than stated: the clip must be loop-enabled and must be a single Session or Arrangement MIDI clip, and 'Omitted bound stays unchanged' tells how to do a partial update. There is no explicit when-not guidance and no pointer to the alternative tool (set_clip_timing) for non-loop or timing-based edits.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_midi_note_propertiesB
Destructive

Edit exact MIDI notes with native guards and partial readback; optional selection token.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
changesYesExact note changes.
trackIdYesID from list_tracks.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.
expectedNoteSelectionTokenNoToken from get_midi_note_selection.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=false, and openWorldHint=false. The description adds useful context with 'native guards' (implying state-version checks, dry-run, and confirmation tokens) and 'partial readback' (indicating the response does not return full clip state). However, it does not explain what 'native guards' actually require or what 'partial readback' omits, so transparency is only 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?

The description is a single, front-loaded sentence with zero redundancy, though it is somewhat dense and jargony ('native guards and partial readback'). It is appropriately sized but could be more immediately parseable.

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?

Output schema exists, so return values needn't be explained, and schema coverage is 100%. However, this is a destructive, non-idempotent batch mutation with a multi-step confirmation protocol (dryRun → planHash → confirmationToken), and the description does not walk through that workflow or its safety implications. Adequate but leaves significant context for the agent to infer from parameter descriptions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds little beyond the schema, though 'optional selection token' clarifies the optional expectedNoteSelectionToken and 'exact MIDI notes' reinforces the per-noteId changes array. No additional syntax or format guidance is provided.

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 ('Edit') and resource ('exact MIDI notes'), clearly identifying a primitive note-mutation tool. It does not explicitly differentiate itself from siblings like transform_midi_notes or humanize_midi_notes, which are specialized transforms, but the 'exact' qualifier hints at note-ID-level precision.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to use this tool versus alternatives such as transform_midi_notes, insert_midi_notes, or remove_midi_notes. The phrase 'optional selection token' hints that it can operate on a current selection, but no when/when-not conditions or alternatives are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_mixer_panningA
Destructive

Change one mixer panning mode or its active Stereo balance / Split Stereo channel positions in separate confirmations. Recording/count-in off, unfrozen target, known inactive affected automation and native identities required. Immediate edits; partial work retained without rollback/replay. No timed sweep or audible image claim. Updated bridge; all profile.

NameRequiredDescriptionDefault
panNoNative Stereo balance; -1 left, 0 center, +1 right. No clamping.
leftNoSplit Stereo left input channel position.
modeNo
rightNoSplit Stereo right input channel position.
dryRunNoFalse executes with token and hash.
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructiveHint=true, idempotentHint=false and readOnlyHint=false, so the safety profile is covered. The description goes beyond them with 'Immediate edits; partial work retained without rollback/replay,' which is genuinely useful for an agent weighing a destructive mutation, plus the separate-confirmation hint for the mode vs. balance paths. It loses a point for the opaque 'Updated bridge; all profile' tail, which discloses nothing.

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 purpose is front-loaded, which is good, but the middle and tail are dense with undefined jargon ('native identities', 'separate confirmations', 'Updated bridge; all profile') that pads rather than informs. 'No timed sweep or audible image claim' is a useful exclusion, but the final fragment earns nothing and the whole is harder to parse than its length warrants.

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?

An output schema exists, so return values need not be explained, and 89% parameter coverage means the schema carries argument detail. For a destructive, non-idempotent 9-parameter mutation the description supplies prerequisites and the no-rollback failure mode, which is the key missing context. The vague 'separate confirmations' phrasing keeps it from a 5.

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 89%, so the schema already documents trackId, pan, left, right, dryRun, planHash, confirmationToken and expectedStateVersion. The description's mention of mode/balance/split-channel targets loosely maps to the oneOf structure but adds no format or constraint detail beyond the schema. 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 opening clause gives a specific verb and resource: 'Change one mixer panning mode or its active Stereo balance / Split Stereo channel positions.' It clearly distinguishes the three pannable targets (mode, balance, split channels) and is distinguishable from the read-side sibling get_mixer_panning_context. It stops short of a 5 because the sentence is entangled with prerequisite jargon rather than cleanly separating what-it-does from what-it-requires.

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?

Prerequisites are stated ('Recording/count-in off, unfrozen target, known inactive affected automation and native identities required'), which implies when the tool is invocable. There is one exclusion ('No timed sweep or audible image claim') but no named alternative such as get_mixer_panning_context for reading, and no explicit when-not guidance. 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.

set_preset_metadataA
Destructive

Plan or update user tags and favorite state for one preset with an exact revision guard.

NameRequiredDescriptionDefault
tagsNoComplete replacement tag set.
dryRunNoFalse executes with token and hash.
favoriteNoFavorite state.
planHashNoPlan hash.
presetIdYesNKS catalog preset ID.
confirmationTokenNoSingle-use plan token.
expectedMetadataRevisionYesExact preset metadata revision observed immediately before planning.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructive=true, idempotent=false, and readOnly=false, so the safety profile is covered. The description adds the important exact-revision guard, but does not explain the dry-run/token workflow, replacement semantics, or consequences beyond what annotations and schema provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler. Every element—plan/update, user tags, favorite state, one preset, exact revision guard—earns its place.

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 description covers the core action and revision guard, and the output schema removes the need to explain return values. However, for a destructive seven-parameter tool with dryRun, planHash, and confirmationToken fields, it does not surface the likely plan-then-execute workflow that an agent must understand to invoke it 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%, so all seven parameters are already documented in the schema. The description reinforces tags, favorite, and revision-guard semantics but adds no syntax or format detail beyond the structured fields, making 3 the appropriate baseline.

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: plan/update user tags and favorite state for one preset. It is clearly a metadata mutation for a single preset, though it does not explicitly differentiate itself from get_preset_metadata or browser-item metadata siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase "Plan or update" implies the tool is used to change preset metadata, but it does not state when to choose this over retrieving metadata or setting browser item metadata. The exact-revision requirement is mentioned, but alternatives and exclusions are absent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_rack_chain_mixerA
Destructive

Plan or apply exact rack-chain volume, pan, mute, solo, and send levels using native ranges and guarded hierarchy state.

NameRequiredDescriptionDefault
panNoNative chain pan value.
muteNoMute chain.
soloNoSolo chain.
sendsNoExact native rack send indices and levels.
dryRunNoFalse executes with token and hash.
volumeNoNative chain volume value, not decibels.
chainIdYesExact chain ID from device hierarchy.
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.
deviceIdYesID from list_devices.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so the safety profile is covered. The description adds real value beyond them: the 'plan or apply' dry-run/execute duality and 'guarded hierarchy state' (state-version guard), which are not evident from the hints alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler, leading with the verb and scope. Dense but appropriate; nothing extraneous, though it packs plan/apply and field enumeration somewhat tightly.

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 an output schema, 100% param coverage, and annotations carrying the destructive profile, the description supplies the remaining key context (plan/apply modes, native ranges, state guard). It is complete enough for an agent to call it correctly, missing only explicit sibling routing.

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 12 parameters are already documented in the schema (including 'native ranges', dryRun, token/hash). The description restates the affected fields but adds no syntax or format detail beyond the schema, making the baseline 3 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 specific verb(s) 'Plan or apply' plus the exact resource 'rack-chain volume, pan, mute, solo, and send levels' and enumerates the fields touched. The 'rack-chain' scope cleanly distinguishes it from siblings like set_track_mixer, set_return_mixer, and set_master_mixer 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 Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage (plan vs apply modes, guarded hierarchy state) but never states when to choose this over set_track_mixer/set_return_mixer, nor when-not to use it. The two-phase plan→apply workflow is only hinted at; no explicit routing or prerequisites are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_rack_chain_note_routingB
Destructive

Plan or reassign a Drum Rack chain to a MIDI pad note and optionally change its instrument output note. Occupied destinations layer chains rather than replace sounds.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
chainIdYesExact rack chain ID.
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.
deviceIdYesID from list_devices.
planHashNoPlan hash.
inputNoteNo
outputNoteNo
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this is a destructive, non-idempotent mutation, and the description adds useful behavior: occupied destinations layer chains rather than replace sounds. However, it omits important consequences of reassigning a chain, the plan/confirmation-token workflow, and the role of expectedStateVersion for concurrency safety.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two tight sentences with no wasted words, and the core purpose is front-loaded before the layering caveat. It is appropriately sized for a tool whose schema and annotations carry much of the detail.

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 presence of an output schema and destructive annotations reduces the description's burden, and the layering behavior is important context. Still, for a 9-parameter destructive mutation with a plan/execute workflow, the description does not fully explain the operational mechanics an agent needs to invoke it safely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 78%, so the schema documents most parameters, and the description adds meaning by clarifying the MIDI pad note and optional instrument output note. It does not explain the dryRun, planHash, confirmationToken, or expectedStateVersion semantics beyond the terse schema 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?

The description names a specific verb and resource: plan or reassign a Drum Rack chain to a MIDI pad note, with an optional instrument output note. It is clear what the tool does, though it does not explicitly distinguish itself from related siblings such as set_drum_pad_state or move_device_to_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?

The phrase 'Plan or reassign' hints at planning versus execution, but the description gives no explicit when-to-use guidance, no alternatives, and no conditions for using dryRun versus a confirmed execution. It also does not clarify when this tool should be chosen over related routing or pad-state tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_rack_macro_mapping_edgeA
Destructive

Plan or change one native min or max endpoint of a rack macro with exactly one observed nonquantized mapping. Value is in the target parameter's native range. Rechecks the full rack snapshot and reads back the result; reversed ranges are possible.

NameRequiredDescriptionDefault
edgeYes
valueYesNew endpoint value in the mapped parameter's native units.
dryRunNoFalse executes with token and hash.
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.
deviceIdYesID from list_devices.
planHashNoPlan hash.
macroIndexYesZero-based visible rack macro index.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag the operation as destructive and non-idempotent. The description adds meaningful context beyond that: it rechecks the full rack snapshot, reads back the result, and warns that reversed ranges are possible. That is useful mutation-specific behavior, though permissions and reversibility are still unstated.

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 compact sentences with the precondition and value scope front-loaded, then behavior. No filler or repetition, though the 'reversed ranges' warning could be read as slightly cryptic without further explanation.

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?

The tool has an output schema and rich annotations, so the description does not need to explain return values. It supplies the key precondition, value semantics, and mutation behavior. A minor gap is the absence of explicit routing guidance among the many rack-macro 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?

With 89% schema description coverage, the schema already documents parameters including value units and track/device identifiers. The description only clarifies that the value is in the target parameter's native range, which is largely redundant with the schema wording for 'value'. 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: 'Plan or change one native min or max endpoint of a rack macro.' This is clear enough that an agent can tell it sets a range endpoint rather than creating a mapping, though it never names the closest sibling (map_rack_macro_to_parameter) to distinguish itself 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?

'Plan or change' and the precondition 'with exactly one observed nonquantized mapping' imply when the tool applies. However, there is no explicit guidance on when to use this versus map_rack_macro_to_parameter or move_device_to_chain, and no mention of when to prefer dryRun versus execution.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_return_mixerA
Destructive

Guard Return volume, Stereo pan, mute and solo edits with native owner/control identity, recording/automation checks and deferred readback. Existing solos and selected routes remain. Partial writes remain without rollback or replay; inspect verified and writes. A Return affects every routed source.

NameRequiredDescriptionDefault
panNoReturn pan.
muteNoMute return.
soloNoSolo return.
dryRunNoFalse executes with token and hash.
volumeNoReturn volume.
planHashNoPlan hash.
returnTrackIdYesExact current Return ID.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses important behavioral context: native owner/control identity, recording/automation checks, deferred readback, preservation of existing solos and selected routes, partial writes without rollback or replay, and the fact that a Return affects every routed source. This is rich transparency for a destructive operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loads the core action and properties. Some phrasing is dense or awkward ('inspect verified and writes'), but it does not waste space on redundant restatement.

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 complex, destructive return-mixer tool with full schema coverage and an output schema, the description covers key safety and side-effect context well. It still omits when to choose this tool over sibling mixer tools, leaving a gap in routing guidance.

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 nine parameters. The description mentions the main mixer properties (volume, pan, mute, solo) but adds no parameter-level details beyond that baseline.

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 ('Return') and the edited properties (volume, pan, mute, solo), which distinguishes it from sibling tools like set_track_mixer or set_master_mixer. However, the verb 'Guard' is less direct than 'set,' and the description does not explicitly contrast itself with the nearest alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit guidance about when to use this tool versus alternatives such as set_track_mixer, set_master_mixer, or set_mixer_panning. It describes behavioral constraints, but not selection criteria for the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_scene_launch_quantizationA
Destructive

Plan or apply a guarded per-scene clip-launch quantization override from list_scenes. The global setting stays in song musical context; only the selected scene changes.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
sceneIdYesID from list_scenes.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
launchQuantizationYesLaunch quantization value or name from list_scenes.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this a destructive, non-idempotent write, so the bar is lower. The description adds genuine context beyond them: 'guarded' implies a plan/token/hash confirmation workflow, and 'only the selected scene changes' bounds the blast radius of the destructive hint, which is exactly the kind of detail 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly written sentences with no waste; the scope of the override is front-loaded and the contrast with the global setting follows immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the guarded plan/apply flow is conveyed. Coverage is strong for a six-parameter mutation tool, though it could have stated the precondition that executing requires the plan token and hash (left entirely to the schema).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all six parameters including the token/hash guard fields and the 'value or name from list_scenes' semantics of launchQuantization. The description adds no syntax, format, or constraint detail beyond what the schema states, 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 pair ('Plan or apply') and a precise resource ('per-scene clip-launch quantization override'), and explicitly distinguishes it from the global equivalent by noting the global setting lives in song musical context. An agent can separate this from set_song_musical_context or get_scene_launch_context 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?

The plan/apply duality maps directly onto the dryRun parameter and the description signals the scope of impact ('only the selected scene changes'). It also names list_scenes as the source of the scene identifier. It stops short of explicit when-not-to-use guidance or naming the alternative tool for the global setting.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_scene_musical_contextA
Destructive

Plan or set an exact Session scene tempo and/or time-signature override. Disabled overrides inherit the song context; enabled overrides take effect when the scene is launched.

NameRequiredDescriptionDefault
tempoNoScene tempo in BPM when enabled.
dryRunNoFalse executes with token and hash.
sceneIdYesID from list_scenes.
planHashNoPlan hash.
numeratorNo
denominatorNo
tempoEnabledNoEnable or disable the scene tempo override.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.
timeSignatureEnabledNoEnable or disable the scene meter override.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=false, so the mutation risk is known. The description adds real value by explaining inheritance semantics (disabled overrides inherit the song context) and timing (enabled overrides take effect at scene launch), but it never mentions the required confirmation-token/hash handshake that a destructive tool with dryRun implies.

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 packed sentences with no filler; the scope is front-loaded and the second sentence adds the one behavioral fact an agent needs before launching.

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?

An output schema exists and annotations carry the safety profile, so the description only needs to convey scope and semantics — which it largely does, including inheritance and launch timing. The remaining gap is the plan-then-confirm protocol implied by 'Plan or set' but never spelled out.

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 80%, so the baseline is 3. The description does clarify the meaning of the tempoEnabled/timeSignatureEnabled flags, which the schema only labels minimally, but it says nothing about dryRun, planHash, or confirmationToken, leaving the most consequential parameters to the schema 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?

States a specific verb pair and resource: 'Plan or set an exact Session scene tempo and/or time-signature override.' The 'Session scene' scoping and the mention that overrides apply 'when the scene is launched' distinguishes it from set_tempo and set_song_musical_context, though no sibling is named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Plan or set' implies the two-phase workflow that the dryRun/planHash/confirmationToken parameters encode, but the description never says when to plan versus when to apply, nor when to prefer this over set_song_musical_context or set_tempo. Usage is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_selected_parameterA
Destructive

Edit the exact currently selected native control at one absolute value or finite unit display. Requires fresh selection token and unchanged identity/value/context; rejects active/unknown automation, recording/count-in and unsafe owners. Preserves focus/playback; partial work retained without rollback/replay. All profile.

NameRequiredDescriptionDefault
valueNoExact native absolute value within observed bounds; quantized controls require an integer.
dryRunNoFalse executes with token and hash.
planHashNoPlan hash.
targetDisplayNoContinuous control target in finite Hz/kHz, ms/s, dB or %; decimal point only.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.
expectedSelectionTokenYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (destructiveHint=true, non-idempotent), the description discloses exactly what happens on failure: partial work is retained with no rollback/replay, focus and playback are preserved, and writes are gated on freshness and identity checks. These concurrency/atomicity and side-effect details are precisely what the structured fields 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense, front-loaded sentences covering purpose, preconditions, and side effects, with the core action stated first. The trailing fragment 'All profile' is cryptic and marginally wasteful, but overall the text is efficient with 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 7-parameter, token-gated mutation with a oneOf branch and an output schema, the description covers preconditions, rejection cases, and non-rollback semantics well. The one gap is that it names no alternative tool for the rejected automation/recording cases, leaving recovery routing implicit.

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 86%, so the schema already documents value, targetDisplay, dryRun, and both required tokens in detail. The description reinforces why expectedSelectionToken/expectedStateVersion are required and clarifies the value-vs-targetDisplay branch, but adds little syntax beyond what the schema provides. 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 (Edit) and resource (the exact currently selected native control), and specifies the two accepted modes matching the schema's oneOf: an absolute value or a finite-unit display. This distinguishes it from siblings like set_device_parameters (by-id bulk set) and set_device_parameter_display, though it never names those alternatives explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context and explicit exclusions: it requires a fresh selection token and unchanged identity/value/context, and it rejects active/unknown automation, recording/count-in, and unsafe owners. This is strong when-not guidance, but no sibling alternative (e.g. override_parameter_automation for automated params) is named, so it falls short of a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_session_clip_entryB
Destructive

Set one inactive Session launch entry in explicit units: separate MIDI/warped marker, or unwarped nonlooped range start. Retains the end, repeating loop and exposed material. Binds native identity/content/controls; refuses recording, arms, frozen targets and pending launches. Reports partial work without rollback or replay. Does not launch or rewrite notes/files. Updated bridge; all profile.

NameRequiredDescriptionDefault
unitYesActive entry unit from the native plan: MIDI/warped audio beats, unwarped audio seconds.
startYesFinite absolute clip position strictly before the retained end marker; seconds must be nonnegative.
clipIdYesExact populated Session clip ID.
dryRunNoFalse executes with token and hash.
trackIdYesID from list_tracks.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (destructiveHint=true, idempotentHint=false), the description adds real behavioral context: it retains the end/loop/exposed material, reports partial work without rollback or replay, and refuses certain target states. That goes meaningfully past what the structured fields convey, though the phrase "Binds native identity/content/controls" is opaque.

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 purpose is front-loaded and most sentences carry information (retention, refusal conditions, partial-work behavior). But the closing "Updated bridge; all profile." is meaningless filler, and the dense shorthand ("Binds native identity/content/controls") costs more clarity than it saves in length.

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 destructive mutation with an output schema and annotations present, the description covers the key behavioral facts: what is preserved, what states are rejected, and that partial work is not rolled back. It does not need to explain return values, and remaining gaps are minor.

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 unit, start, dryRun, planHash, and confirmationToken well. The description reinforces the unit semantics and the constraint that the start precedes a retained end, but adds little beyond the schema's own parameter descriptions.

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+resource is present ("Set one inactive Session launch entry in explicit units") and it distinguishes two entry modes (MIDI/warped marker vs unwarped nonlooped range start). However, "launch entry" is non-standard jargon that an agent may not map to the clip start marker, and no sibling (e.g. set_clip_timing, move_audio_warp_marker) is named to disambiguate scope.

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 does specify exclusions — refuses recording, arms, frozen targets, and pending launches — which is genuine when-not guidance. But there is no explicit when-to-use statement and no named alternative for the excluded cases, so an agent must infer context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_session_midi_overdubA
Destructive

Start or stop open-ended native Session MIDI overdub on the exact already playing loop. Toggles only global session_record with other explicit/implicit arms off and fresh guarded context. Keeps playback, routing and arms. Recording survives client disconnect; no fixed duration or automatic cleanup. May change same-pitch notes; copy the original first. Partial native work retained without rollback/replay. Control and clip-state observations do not prove a performance. Updated bridge; all profile.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
enabledYesTrue starts now; false explicitly stops Session recording while playback continues.
trackIdYesID from list_tracks.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds substantial behavior beyond annotations: recording survives client disconnect, has no fixed duration or automatic cleanup, may alter same-pitch notes, and partial native work is retained without rollback/replay. These details directly support safe use of a destructive, 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?

The purpose is front-loaded and most clauses carry important behavioral warnings. The description is dense and contains some opaque phrasing such as 'Updated bridge; all profile,' which slightly reduces clarity.

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?

It covers the main operational and safety characteristics of a complex destructive mutation, and an output schema exists for return values. However, it does not explain the guarded plan/token workflow for dryRun, planHash, and confirmationToken, which would help an agent invoke it 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 coverage is 100%, so the schema already documents all seven parameters. The description clarifies start/stop semantics for the enabled toggle but does not add meaningful detail about expectedStateVersion, dryRun, planHash, or confirmationToken.

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: start or stop native Session MIDI overdub on the already playing loop. It distinguishes this from broader recording tools by emphasizing open-ended overdub, playback preservation, and exact-loop targeting.

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 clearly describes the operating context: toggling global session_record while other arms are off, with playback/routing/arms preserved. It also warns that control and clip-state observations do not prove a performance, but it does not explicitly name a sibling alternative such as get_session_midi_overdub_context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_simpler_manual_slicesA
Destructive

Set an exact manual slice layout on a loaded single-sample Simpler, including nested racks. Selects Slicing/Manual mode, disables Pad Slicing and clears prior manual cuts, including outside the active region. Requires stopped transport and an inactive unarmed target; verifies native slices and retained sample. No file crop/reload or automatic rollback. All profile.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
trackIdYesID from list_tracks.
deviceIdYesID from list_devices.
planHashNoPlan hash.
slicesFramesYesComplete playable layout in increasing sample frames, beginning at observed startMarkerFrames and strictly below endMarkerFrames.
confirmationTokenNoSingle-use plan token.
slicingPlaybackModeNoOptional slice playback: one slice, overlapping slices, or play from a slice through the region. Omit to retain observed setting.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the destructiveHint/non-idempotent annotations by disclosing that it clears prior manual cuts including outside the active region, selects Slicing/Manual mode, disables Pad Slicing, performs no file crop/reload or automatic rollback, and verifies native slices and retained sample. This is exactly the extra mutation context 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-loaded with the action, then prerequisites and side effects; nearly every clause carries operational meaning. The telegraphic fragments ('All profile.') are terse but not wasteful.

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 annotations, a full schema, and an output schema present, the description supplies the behavior and preconditions that structured fields cannot convey. Only the absence of explicit alternative-tool routing keeps it from being fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter is already documented in the schema; the description adds no syntax or format detail beyond reinforcing the layout concept. Baseline 3 is appropriate when the schema does the heavy lifting.

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) and resource (manual slice layout on a loaded single-sample Simpler) with scope qualifiers (exact layout, including nested racks). It is clearly distinguishable from siblings like set_simpler_sample_region and load_simpler_sample.

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 explicit preconditions (stopped transport, inactive unarmed target) and describes mode transitions, which tells the agent when the call is valid. It does not, however, name an alternative tool or contrast cases with set_simpler_sample_region.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_simpler_sample_regionA
Destructive

Set a loaded Simpler playback region in native sample frames, including nested racks. At least one marker; omitted bound stays unchanged. Requires stopped transport and an inactive unarmed single-sample target. Binds native context and verifies exact markers; does not crop the source file. Partial failure requires inspection; no automatic rollback. All profile.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
trackIdYesID from list_tracks.
deviceIdYesID from list_devices.
planHashNoPlan hash.
endMarkerFramesNoNative end frame, above start and below observed lengthFrames. Omit to retain observed end.
confirmationTokenNoSingle-use plan token.
startMarkerFramesNoNative start frame, below end. Omit to retain observed start.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds behavior beyond the annotations: it does not crop the source file, it binds native context and verifies exact markers, and failures are partial with no automatic rollback. The non-atomic, no-rollback failure mode is exactly the kind of trait annotations (destructiveHint=true) 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?

Dense and front-loaded: purpose first, then constraints, then behavioral caveats, with no filler sentences. The telegraphic style ('All profile.') is efficient, though slightly terse in places.

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 destructive, 8-parameter mutation with an output schema, the description covers preconditions, marker constraints, non-cropping behavior, and failure handling. Return values are covered by the output schema, so nothing critical 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 the schema already documents all 8 parameters, including the omit-to-retain semantics. The description's 'omitted bound stays unchanged' merely restates what startMarkerFrames/endMarkerFrames already say, adding no new syntax or format detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Set) and resource (Simpler playback region) plus scope (native sample frames, nested racks). An agent can tell what it does, but it never references the adjacent sibling set_simpler_manual_slices, so sibling differentiation is left implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides concrete preconditions for use — stopped transport, inactive unarmed single-sample target — and a validity rule (at least one marker). It does not name an alternative tool or an explicit 'do not use when', 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.

set_song_musical_contextB
Destructive

Plan or apply guarded song key, scale, timing, quantization, groove, swing, or loop changes.

NameRequiredDescriptionDefault
keyNoLive song root, scale name, and scale mode.
loopNoArrangement loop enablement and boundaries in beats.
dryRunNoFalse executes with token and hash.
grooveNoGlobal groove intensity and swing.
planHashNoPlan hash.
quantizationNoNative launch and MIDI-recording quantization choices.
timeSignatureNoRequested native numerator and denominator.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

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 readOnlyHint=false, and the word 'guarded' hints at the plan/token safety mechanism that the schema (dryRun, planHash, confirmationToken, expectedStateVersion) supports. However, the description does not spell out what state gets overwritten, why expectedStateVersion matters, or that confirmationToken is single-use—so it adds only partial context beyond annotations.

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 that wastes no words and puts the verb and scope first. It is dense to the point of being terse, but every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, nine-parameter mutation tool with nested objects and a multi-step plan/token/state-version workflow, one sentence is thin. An agent still can't tell from the description how to sequence dryRun, planHash, confirmationToken, and expectedStateVersion—the core operational flow is unexplained.

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 per-parameter meaning is already fully documented. The description's domain list (key, scale, timing, etc.) loosely corresponds to parameter groups but adds no format, unit, or constraint detail 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?

States a specific verb pair (plan or apply) and enumerates the concrete domains affected (key, scale, timing, quantization, groove, swing, loop), which maps clearly onto song-level musical context. It is distinguishable from get_song_musical_context as the mutating counterpart, though it doesn't explicitly name that sibling or other potentially confusable tools like set_groove or set_scene_musical_context.

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?

'Plan or apply' implies a two-phase workflow, but the description never states when to use the dry-run path versus the executing path, nor when to prefer this over set_groove or set_clip_timing. Usage is implied rather than specified.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_tempoA
Destructive

Plan or apply a guarded tempo change from 20 to 999 BPM; returns the plan or observed tempo.

NameRequiredDescriptionDefault
tempoYesTempo in BPM.
dryRunNoFalse executes with token and hash.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so the safety profile is covered. The description adds useful context that the change is guarded and that it returns a plan or observed tempo, but does not explain what 'guarded' entails or what the destructive effect means in practice.

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 efficient sentence with no wasted words, and the key action and return behavior 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?

With an output schema and full parameter descriptions present, the description only needs to orient the agent to the tool's purpose and guarded plan/apply behavior. It does that adequately, though it could be slightly clearer about when the apply phase requires the token and hash.

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 five parameters including the dryRun and confirmationToken workflow. The description only repeats the tempo range and does not add meaning beyond the structured parameter definitions, making the baseline score 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 (plan or apply) and resource (tempo), including the valid BPM range. It does not explicitly distinguish this tool from siblings such as set_transport_context, but the purpose is otherwise clear.

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 'Plan or apply a guarded tempo change' implies a two-step dry-run/apply workflow, but it does not explicitly say when to use the plan versus apply mode or name alternatives. Usage is suggested rather than fully guided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_track_freeze_stateA
Destructive

Plan/apply native track freeze or unfreeze. Requires a saved Set, stopped playback/recording, an unarmed visible ordinary track and macOS English Live. Changes focus and selection; verify freezeVerified and inspect uncertain outcomes before continuing.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
frozenYesRequested freeze state.
trackIdYesID from list_tracks.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructive=true and non-idempotent, so the description correctly doesn't need to restate danger. It adds real behavioral context beyond annotations: the plan/apply token flow, that focus and selection change as a side effect, and that the caller should check freezeVerified and inspect uncertain outcomes.

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 the purpose and then the prerequisites. Dense but every clause carries information (saved Set, stopped transport, unarmed track, focus/selection change); only 'macOS English Live' is terse to the point of being cryptic.

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 the preconditions, the side effects that a caller must plan around, and the verification step, which together are what an agent needs before invoking a destructive, non-idempotent operation. With an output schema present, return values needn't be explained in the description.

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 dryRun, planHash, confirmationToken, expectedStateVersion, and trackId are already explained in the schema. The description's plan/apply language reinforces the dryRun and token relationship but adds no syntax or constraint detail beyond that, so this lands at the baseline for fully covered params.

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 (plan/apply) and resource (native track freeze or unfreeze), which clearly separates it from read-only siblings like get_track_freeze_state. It does not explicitly name the sibling or the planning alternative, 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 Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete preconditions: a saved Set, stopped playback/recording, an unarmed visible ordinary track, and macOS English Live. It doesn't say when to prefer this over get_track_freeze_state or bulk operations, but the precondition list is unusually actionable for selecting the tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_track_midi_routingA
Destructive

Plan or apply guarded changes to one track's native MIDI input/output note and scale transposition. Affects every clip launched on the track; does not change device-level or rack-chain note routing.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
inNoteNoMIDI note that triggers the track.
inScaleNoTranspose incoming notes according to Live's scale.
outNoteNoMIDI note the track outputs.
trackIdYesID from list_tracks.
outScaleNoTranspose outgoing notes according to Live's scale.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructive=true, idempotent=false, readOnly=false, but the description adds value beyond them: it discloses blast radius ('affects every clip launched on the track') and the boundary that device/rack-chain routing is untouched. The 'guarded' wording plus expectedStateVersion/planHash/confirmationToken in the schema conveys the safe-mutation protocol, though the description itself doesn't spell out the plan→token→apply step.

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 positive scope comes first and the exclusion follows, making it front-loaded and easy to scan.

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?

Output schema exists and the schema is fully described, so return values needn't be explained. The description covers scope, blast radius, and boundaries, which is enough for a 9-param destructive tool, though it could be slightly more explicit about when dryRun must precede the token-bearing apply call.

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 every parameter including dryRun, inScale/outScale and the guard tokens is already documented. The description only loosely maps its wording ('note and scale transposition') onto the parameters, adding no format or interaction detail beyond the schema; 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 pair (plan or apply), the exact resource (one track's native MIDI input/output note and scale transposition), and scope ('one track'). The second sentence rules out device-level and rack-chain routing, so an agent can distinguish it from set_rack_chain_note_routing and get_track_midi_routing without opening schemas.

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?

'Plan or apply guarded changes' signals the dry-run-then-execute workflow, and the explicit exclusion of device-level/rack-chain note routing tells the agent which sibling handles the other case. It does not name get_track_midi_routing as the read counterpart by name, so routing is implicit rather than fully spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_track_mixerA
Destructive

Plan or apply guarded track volume, pan, mute, solo, and return-send changes.

NameRequiredDescriptionDefault
panNoTrack pan.
muteNoMute track.
soloNoSolo track.
sendsNoNamed return-send changes.
dryRunNoFalse executes with token and hash.
volumeNoTrack volume.
trackIdYesID from list_tracks.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=false, and openWorldHint=false, so the safety profile is largely covered. The description adds the useful notion of an opt-in guarded/plan-then-apply flow, which goes beyond the annotations, but it stops short of saying what the guard protects against or what a failed precondition means.

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 that leads with the action mode and then the affected surface. Every word carries information and there is no filler or trailing boilerplate.

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 an output schema present and full parameter documentation, the description does not need to cover return values or parameter meaning. The only meaningful omission is the plan/apply sequencing narrative, which is largely recoverable from the schema, so the definition is nearly complete for how complex this tool is.

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 each parameter, including the dryRun/planHash/confirmationToken/expectedStateVersion mechanics. The description's field list (volume, pan, mute, solo, sends) merely restates the same surface, 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 verb pair ('plan or apply') and resource ('track mixer'), and enumerates exactly which mixer fields are affected (volume, pan, mute, solo, return sends). It is clear on its own, but it never distinguishes itself from close siblings such as set_track_volume_db, set_track_send_db, set_mixer_panning, or set_bulk_track_mixer, leaving the agent to guess which mixer setter 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 Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Plan or apply' and 'guarded' imply that this tool has a two-phase usage pattern, and the schema params (dryRun, planHash, confirmationToken, expectedStateVersion) are consistent with that reading. However, the description never states when to use this tool versus the narrower single-field siblings, nor what the guard actually requires before an apply is accepted.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_track_routingA
Destructive

Plan or apply guarded track routing and monitoring changes by exact choice ID.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
trackIdYesID from list_tracks.
planHashNoPlan hash.
monitoringNoMonitoring mode value or name.
inputTypeIdNoInput routing type ID.
outputTypeIdNoOutput routing type ID.
inputChannelIdNoInput routing channel ID.
outputChannelIdNoOutput routing channel ID.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

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 non-idempotent, but the description adds the genuinely non-obvious 'guarded' plan/apply workflow that maps to the dryRun/planHash/confirmationToken mechanics. It still doesn't say what routing is overwritten or which permissions/state checks are required.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with the plan/apply distinction and the ID requirement stated up front; no filler. It is efficient though quite terse for a 10-parameter destructive tool.

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 an output schema and full annotation coverage the return/safety story is covered, but for a destructive, state-guarded 10-param tool the description omits the workflow prerequisites (obtain IDs and observed stateVersion first, then plan, then apply) that an agent needs to call it 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%, so every parameter is already documented in the schema, including the dryRun/token/hash semantics. The description adds only the 'exact choice ID' framing and no additional syntax or format detail, 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 a specific verb+resource: setting 'track routing and monitoring' changes, which distinguishes it from the sibling set_track_midi_routing and the read-only get_track_routing. The 'by exact choice ID' phrase hints at the ID-based parameters but is jargon-heavy and not fully self-explanatory.

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?

'Plan or apply' implies a two-phase workflow (dry-run then execute), which is real usage guidance, but the description never states when to use this over route_tracks_to_bus or set_track_midi_routing, nor what prerequisites (e.g. fetching IDs/state) are needed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_track_send_dbA
Destructive

Set one track-to-Return send in native dB or to its verified silent minimum. Rechecks track, send and Return identity, current value and automation. Refuses recording, frozen or disabled sends and unsupported levels.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
sendDbYesAbsolute finite dB target, or -inf for the native verified silent minimum; no clamping.
sendIdYesCanonical send-N ID from get_track_mixer.
trackIdYesID from list_tracks.
planHashNoPlan hash.
returnTrackIdYesMatching return-N ID from the selected send record.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the destructive annotation, the description discloses important preconditions and failure modes: it rechecks track, send, and Return identity plus current value and automation, and refuses invalid send states. It does not describe the confirmation-token or dry-run execution flow, but the annotations already establish the destructive mutation profile.

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, each carrying useful information, with the core purpose front-loaded. No sentence is 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?

For a destructive mixer mutation, the description covers purpose, identity checks, safety refusals, and supported level semantics. With a rich schema and an output schema present, the remaining details such as token and dry-run workflow are adequately handled by structured fields, though mentioning them would improve completeness.

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 parameters. The description reinforces the meaning of the dB target and silent minimum, but adds little parameter-level detail beyond the schema, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: setting one track-to-Return send level in dB or to its verified silent minimum. The phrase 'track-to-Return send' clearly distinguishes this operation from track volume, return mixer level, and other mixer-related siblings.

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 usage context and explicit exclusions, noting that recording, frozen, disabled, and unsupported sends are refused. It does not name adjacent alternatives such as set_track_mixer or set_return_mixer, so it falls short of full when-to-use/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_track_volume_dbA
Destructive

Set a track, Group, Return or Main fader in dB using Live's native display, with native owner/mixer/fader identity, value and automation rechecks. Refuses recording/count-in, frozen, disabled or automated faders and unrepresentable levels. Return/Main edits affect all routed audio. Updated bridge; all profile.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.
planHashNoPlan hash.
volumeDbYesFinite absolute fader level in dB; native range, no clamping.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds meaningful behavior beyond the destructive annotation: refusal conditions, native identity/automation rechecks, and the blast radius of Return/Main edits. The confirmation/plan workflow is left to the schema, but the description discloses the risky state constraints well.

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 operation and packs refusal scope into a compact paragraph. The trailing 'Updated bridge; all profile.' is opaque and does not clearly earn its place, slightly reducing 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?

Covers purpose, refusal states, and routing side effects for a destructive mutation, and an output schema exists so return values need not be explained. However, it omits the two-phase dry-run/plan-hash/confirmation-token workflow and expectedStateVersion role, which are important for correctly invoking this 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?

With 100% schema coverage the baseline is 3, but the description adds meaning: volumeDb uses Live's native dB display and the target may be a track, Group, Return, or Main fader. It does not explain dryRun, planHash, or confirmationToken, which remain schema-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?

States a precise verb and resource: set a fader level in dB for track, Group, Return, or Main. The narrow fader-only scope and target list distinguish it from broader mixer tools such as set_track_mixer and set_bulk_track_mixer.

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 explicit refusal conditions (recording/count-in, frozen, disabled, automated faders, unrepresentable levels) and notes that Return/Main edits affect all routed audio. It does not explicitly point to alternatives such as automation-specific tools, so it stops short of full when-to-use routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_transport_contextA
Destructive

Plan/apply metronome or count-in settings. Count-in requires stopped playback/recording, a saved Set and macOS English Live UI; changes focus.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
planHashNoPlan hash.
metronomeNoMetronome enabled.
countInDurationNoCount-in duration value or name.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

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, readOnlyHint=false and non-idempotency; the description goes beyond them by disclosing hard preconditions (stopped transport, saved Set, macOS English UI) and the side effect that focus changes. It does not detail reversibility beyond what annotations imply.

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: purpose first, then constraints. No filler words, and the precondition list is front-loaded where an agent needs it before invoking.

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 an output schema present, return values need not be described, and the annotations plus the stated preconditions cover the safety and eligibility picture. 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?

Schema description coverage is 100% and every parameter (dryRun, planHash, metronome, countInDuration, confirmationToken, expectedStateVersion) is self-documented. The description's 'plan/apply' framing hints at the dryRun/token flow but adds no syntax or format detail 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?

States a specific action (plan/apply) on a specific resource (metronome or count-in settings), mapping cleanly to the transport settings it mutates. It does not name a sibling alternative to distinguish itself from, but the verb+resource pairing 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?

Explicit preconditions are given for the count-in path: stopped playback/recording, a saved Set, macOS English Live UI, and that it changes focus. This tells the agent when the operation is allowed, though it does not explicitly route to or away from sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_transport_recording_contextA
Destructive

Plan or apply guarded playhead and recording-mode changes. Absolute seeks use native Set identity, allow playing clock progress and require recording/count-in off. Playing position is unverified; partial seek writes are not rolled back. Stop active recording separately before seeking.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
sessionNo
planHashNoPlan hash.
arrangementNo
automationArmNoAutomation arm.
currentSongTimeNoPlayhead position in beats.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=false, readOnlyHint=false, so the safety profile is partly covered. The description adds genuinely new context beyond them: partial seek writes "are not rolled back" and playing position "is unverified," plus the guarded plan/apply token flow. That partial-failure disclosure is exactly what an agent needs before a destructive write.

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 dense sentences, front-loaded with purpose before the constraints. Some phrasing is jargon-heavy ("native Set identity," "allow playing clock progress") and costs a little readability, but little 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?

With an output schema present, return values need no explanation, and the description still covers the guarded plan/apply workflow, preconditions, and partial-write risk. For a destructive non-idempotent 8-parameter tool this is close to complete, though it omits the expectedStateVersion concurrency rationale.

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 75% with 8 parameters, several documented only tersely ("Plan hash.", "Plan hash."). The description connects the parameter groups conceptually (seek position, recording-mode toggles, count-in) but never explains expectedStateVersion, planHash, confirmationToken, or dryRun semantics directly. Baseline 3 is appropriate given the schema does most of the work.

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: "Plan or apply guarded playhead and recording-mode changes." The plan/apply duality maps to the dryRun flow, and "recording-mode changes" distinguishes it from the read-side sibling get_transport_recording_context. It does not explicitly name set_transport_context as the non-recording alternative, 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?

Provides real preconditions: "Absolute seeks ... require recording/count-in off" and "Stop active recording separately before seeking." However, it never names an alternative tool or states when to choose this over set_transport_context, leaving the plan-vs-apply threshold to inference. Implicit rather than explicit guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

show_live_objectA
Destructive

Select and show an exact track, Session slot/clip, Arrangement clip or device in native Live views. Omit clipId/deviceId for the track. Plans preserve focus; confirmation changes selection and control-surface focus and may unfold Group ancestors, expand devices and reveal Rack chains. No playback or musical writes requested. Recording must be off. Native view readback does not prove desktop activation, timeline scrolling or plug-in editor visibility. All profile.

NameRequiredDescriptionDefault
viewYesRequested main view; Session slots require Session and Arrangement clips require Arranger.
clipIdNolist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.
deviceIdNoID from list_devices.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.
expectedSetFingerprintYesCurrent Set fingerprint from get_live_state.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the destructive/non-idempotent annotations, the description discloses concrete side effects: confirmation changes selection and control-surface focus, may unfold Group ancestors, expands devices, and reveals Rack chains. It also states that recording must be off and that native view readback does not prove desktop activation, timeline scrolling, or plug-in editor visibility, which is unusually rich behavioral context.

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 dense but front-loaded: purpose comes first, followed by side effects and limitations. Most sentences earn their place, though the closing phrase 'All profile.' is cryptic and some behavioral clauses are packed together rather than structured for easy scanning.

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?

This is a complex mutation/selection tool with nine parameters, an output schema, and annotations, and the description covers the key behavioral context: what is selected, plan-versus-confirmation effects, recording prerequisites, and readback limitations. Because an output schema exists, it does not need to explain return values, and the schema handles most parameter-level details.

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 schema already carries most parameter meaning. The description adds useful semantics by explaining that clipId/deviceId should be omitted for a track and by naming the object types those IDs target, though it does not add detail for expectedStateVersion, expectedSetFingerprint, planHash, confirmationToken, or dryRun 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 uses a specific verb and resource set: it selects and shows an exact track, Session slot/clip, Arrangement clip, or device in native Live views. It also clarifies the exact-object behavior by saying to omit clipId/deviceId for a track, letting an agent distinguish the target types 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 Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides relevant preconditions and behavior: recording must be off, plans preserve focus, and confirmation changes selection and focus. However, it does not explicitly compare this tool with alternatives such as get_selection_context, list_tracks, launch_clip, or the many other selection-related tools, so usage is mostly implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

show_take_lanesA
Destructive

Show Arrangement and one track take lanes through the macOS English Live UI. Requires an unarmed unfrozen track, recording off and unfolded ancestor groups. Requires a saved Set with native document identity and one Live instance. Changes visible UI/focus; no playback or comp edit.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
trackIdYesID from list_tracks.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare the safety profile (readOnly=false, destructive=true, idempotent=false), and the description adds scope beyond that: the change is limited to visible UI/focus with explicitly 'no playback or comp edit', plus auth/environment requirements. There is mild tension between 'show' wording and destructiveHint=true, but the description clarifies the limited nature of the mutation rather than contradicting the annotation.

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 tightly packed sentences, front-loaded with the action and resource, followed by prerequisites and the effect boundary. Every clause carries information; 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 an output schema present, return values need not be explained, and the description covers the action, prerequisites, and mutation scope. It is nearly complete; the only minor gap is not relating the tool to its take-lane sibling getters.

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 trackId, expectedStateVersion, dryRun, planHash, and confirmationToken are already documented in the schema. The description adds no parameter-level meaning (e.g., token/hash workflow semantics), 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?

States a specific verb ('Show') and resource ('Arrangement and one track take lanes') with the platform constraint ('macOS English Live UI'). It implicitly distinguishes itself from read-only siblings like get_take_lane_context by noting it changes UI/focus, 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 Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear preconditions for use: an unarmed unfrozen track, recording off, unfolded ancestor groups, a saved Set with native document identity, and one Live instance. It provides actionable context but does not name alternatives or state when NOT to use it versus the take-lane context getters.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

start_production_sessionA

Capture a durable production brief and current Set identity. Starts at inspect; does not call a model or change Live. Keep the returned sessionId for later conversations.

NameRequiredDescriptionDefault
goalYesRequested musical or operational outcome.
rolesNoboth (default) chooses a creative alternative before functional work; functional proposes the operational task directly.
scopeNo
workflowNo
projectIdYesPrivate project namespace.
completionNolistening (default) requires actual user feedback and a decision. postconditions requires nonempty caller criteria and can finish from their fresh field checks without claiming user approval or audible quality.
constraintsNo
postconditionsNoOptional caller-owned required final field checks. Specialist checks remain suggestions when supplied.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false and destructiveHint=false, so safety is partly covered, but the description adds important context beyond them: it explicitly says it does not call a model or change Live, and notes the sessionId must be retained for future calls. This clarifies a persistence side effect that the annotations alone would mislead an agent about (readOnlyHint=false suggests more than a capture).

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, front-loaded sentences with zero waste; the key lifecycle and safety constraints come first, and the sessionId retention note closes it cleanly.

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?

An output schema exists, so return values need not be explained, and annotations carry the safety profile. But for an 8-parameter tool with nested objects, the description omits any explanation of the workflow/completion/postconditions machinery that likely distinguishes its behavior; an agent would need the schema to understand much of the call.

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 63%, so most parameters are documented in the schema itself. The description hints at 'production brief' and 'Set identity' (mapping loosely to goal/scope) but adds no meaning for workflow, completion, postconditions, or constraints beyond what the schema already provides. 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?

States a specific verb ('capture') and resources ('durable production brief and current Set identity'), which is clear. However, it doesn't distinguish itself from siblings like advance_production_session or get_production_session, leaving an agent to infer the lifecycle relationship.

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?

'Starts at inspect; does not call a model or change Live. Keep the returned sessionId for later conversations' implies this is the entry point of a session lifecycle, but never explicitly names the alternative (e.g., advance_production_session) or the condition that selects it. Usage is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

stop_all_clipsA
Destructive

Plan or stop every playing Session clip in one guarded step using Live's native stop-all action. Playback-only; does not delete or mute clips.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

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, readOnlyHint=false and idempotentHint=false. The description usefully disambiguates that destructiveness is playback-only ('does not delete or mute clips') and flags the guarded/batched nature, which is real added 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?

Two tight sentences, purpose front-loaded, followed immediately by the scope-limiting clarification. No filler or restatement of the name.

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?

An output schema exists so return values need not be described, and parameters are fully documented in the schema. The main omission is the precondition for the guarded two-step (dry-run first, then matching token/hash), which an agent must 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 description coverage is 100%, so dryRun, planHash, confirmationToken and expectedStateVersion are already documented in the schema. The description adds no syntax or workflow detail about them, 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 a specific verb (stop) and a precisely scoped resource (every playing Session clip), plus the mode ('Plan or stop') and mechanism (Live's native stop-all action). It implicitly separates itself from the singular stop_clip sibling via the 'every playing' scope, but never names an alternative 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 'Plan or stop' hints at the two-phase dry-run/execute workflow, and 'in one guarded step' implies the token-gated flow, but there is no explicit when-to-use vs stop_clip, panic, or transport_stop, nor any stated precondition (e.g. needing a fresh stateVersion).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

stop_clipC
Destructive

Plan or stop one exact Session clip slot.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
trackIdYesID from list_tracks.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=false, and readOnlyHint=false, so the safety profile is covered. The description contributes the notion of a two-phase plan/execute model, but it never says what is destroyed, that execution consumes planHash/confirmationToken, or how concurrency via expectedStateVersion behaves.

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 nine-word sentence with the verb front-loaded and zero filler. It is efficient, though the extreme brevity is arguably under-specification rather than tightness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive 6-parameter tool with a plan/execute protocol, one sentence leaves out the workflow (dryRun=false plus token/hash), the required-versus-optional split, and the relationship to stop_all_clips. An output schema exists so return values need not be explained, but the 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%, so all six parameters are already documented in the schema. The description adds no parameter-level meaning at all, so the baseline 3 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?

"Stop one exact Session clip slot" gives a verb and a resource, and the word "exact"/"one" implicitly contrasts with the sibling stop_all_clips. However, "Plan or stop" conflates two different actions in one phrase, and the sibling is never named, so the agent must infer the distinction rather than read 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 statement of when to use this versus stop_all_clips, launch_clip, or hold_session_clip, and no explanation of the plan-then-execute flow. The only clue is the bare "Plan or stop" phrase; the agent gets no conditions, prerequisites, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

store_rack_macro_variationA

Plan or store a new native variation of mapped rack macros. Binds exact rack and parameter state, reports the observed count and appended storedVariationIndex independently of selection; variation contents are not exposed by Live's API.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
trackIdYestrack-N from list_tracks, return-N from get_set_mixer, or master.
deviceIdYesID from list_devices.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=false. The description adds meaningful behavioral detail: it binds exact rack and parameter state, reports the observed count and appended storedVariationIndex independently of selection, and notes that Live's API does not expose variation contents.

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 packed sentences: the first states purpose, the second covers behavioral behavior and a key API limitation. The description is front-loaded and every sentence 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?

An output schema exists and the input schema is fully documented, so return values and parameter details need not be repeated. The description covers purpose, binding behavior, and the API limitation, though it could have briefly explained the plan/confirm token workflow that is only present in schema descriptions.

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 six parameters are documented in the schema itself. The description does not add syntax, format, or constraint details beyond what the schema provides, making the baseline 3 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: 'Plan or store a new native variation of mapped rack macros.' The word 'new' implicitly distinguishes it from recall/delete variations, but no sibling tool is named explicitly, so it falls short of the top score.

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 what the tool does but gives no explicit guidance on when to use it versus recall_rack_macro_variation, delete_rack_macro_variation, or randomize_rack_macros. The plan-or-store distinction is implied, but there are no exclusions or alternative routing statements.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

transform_midi_notesA
Destructive

Plan/apply exact-ID quantize, legato, duplicate, scaleTime or reverseTime MIDI transforms. reverseTime reflects whole selected note spans in an explicit clip-beat window, retaining duration and other exposed properties; hidden expression/envelopes are not reversed.

NameRequiredDescriptionDefault
clipIdYeslist_clips Session ID or supported list_arrangement_clips ID.
dryRunNoFalse executes with token and hash.
noteIdsYesStable note IDs.
trackIdYesID from list_tracks.
planHashNoPlan hash.
operationYes
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructiveHint=true and non-idempotent, so the safety profile is covered. The description adds real behavioral context beyond that: reverseTime reflects whole selected note spans within an explicit clip-beat window, preserves duration and exposed properties, and notably leaves hidden expression/envelopes un-reversed. This is meaningful disclosure for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the purpose and operations before the reverseTime caveat. The second sentence is dense but every clause (span reflection, duration retention, envelope exclusion) carries distinct information, so little 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 tool with five operations, a nested operation object, 8 parameters and an output schema, the description covers purpose, the plan/apply workflow and reverseTime specifics adequately. It falls short on routing guidance against the many sibling MIDI tools and on concurrency handling (expectedStateVersion), but nothing critical for a correct call is missing given the rich schema and output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 88%, so the schema already documents nearly every parameter, establishing a baseline of 3. The description adds a little value by clarifying that reverseTime needs an explicit clip-beat window (relating to startBeats/endBeats), but does not explain the dryRun/confirmationToken/expectedStateVersion interplay beyond the implicit 'plan/apply' framing.

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 (transform) and resource (MIDI notes) and enumerates the five operations (quantize, legato, duplicate, scaleTime, reverseTime) plus the 'exact-ID' scope. This lets an agent distinguish it from the pattern-based siblings like apply_midi_velocity_curve or humanize_midi_notes, though no sibling is named outright.

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 'Plan/apply' phrasing implies a dry-run-then-apply workflow that maps to the dryRun/planHash/confirmationToken parameters, giving implied usage context. However, it never states when to choose this tool over alternatives such as set_midi_note_properties or the apply_midi_* family, and offers no exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

transport_playB
Destructive

Plan or start Ableton transport playback.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this as non-read-only, non-idempotent, and destructive, so the safety profile is mostly covered. The phrase 'plan or start' hints at a two-phase operation, but the description does not explain token semantics, what state changes on execution, or why the operation is marked destructive—leaving meaningful behavioral context undisclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler. It is efficient, but its terseness contributes to the under-specification captured in other dimensions rather than being a structural flaw.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, state-mutating transport tool with a required state-version parameter and a plan/confirmation-token workflow, the description is far too thin. It does not explain the two-step planning process, prerequisites, or consequences, though the output schema reduces the need to describe return values.

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 four parameters are already documented in the schema. The description adds only the vague 'plan or start' wording and does not clarify how expectedStateVersion, dryRun, planHash, or confirmationToken interact, so it does not meaningfully exceed the schema baseline.

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 ('plan or start') and resource ('Ableton transport playback'), so the basic action is clear. However, it does not distinguish this tool from siblings like transport_stop, get_transport_context, or set_transport_context, leaving the agent to infer boundaries.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no when-to-use guidance, no mention of the dry-run/execute workflow implied by the parameters, and no comparison to alternatives such as transport_stop. It provides only a bare statement of purpose with no routing information.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

transport_stopC
Destructive

Plan or stop Ableton transport playback.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare destructiveHint=true and idempotentHint=false, so the description should explain what stopping destroys (playback position? pending launches?) and that re-invocation is not safe. Instead it adds nothing beyond the safety flags, and does not mention the confirmation-token or state-version preconditions for the destructive path.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence with no filler and the resource front-loaded. It is efficient, though the brevity comes at the cost of the two-phase workflow explanation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a destructive, non-idempotent, two-phase (plan/execute) transport tool with four parameters and a required state version. The description omits the plan-then-confirm workflow, the meaning of a stale expectedStateVersion, and how it differs from stop_all_clips or panic, leaving key operational context missing despite the available output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents dryRun, planHash, confirmationToken, and expectedStateVersion. The description adds no additional semantics about how these combine (e.g., plan first, then confirm), so baseline 3 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?

It names the resource (Ableton transport playback) and a verb (stop), plus a planning mode, but 'Plan or stop' blurs two distinct operations into one phrase and never distinguishes it from siblings like transport_play, stop_all_clips, or panic.

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 versus transport_play, stop_all_clips, or panic, and no explanation of the plan-then-execute workflow implied by dryRun/planHash/confirmationToken. The agent must infer everything from the schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

undoB
Destructive

Plan or apply one guarded Ableton undo operation.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
planHashNoPlan hash.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.

Output Schema

NameRequiredDescription

No output parameters

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, readOnlyHint=false, and idempotentHint=false, so the safety profile is covered. The description adds that the operation is 'guarded' and supports planning before applying, but it does not explain what state is undone or the role of the expectedStateVersion guard beyond what the schema already states.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no wasted words. It is appropriately concise, even if the brevity leaves gaps addressed elsewhere.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has rich annotations, an output schema, and 100% parameter description coverage, so much of the context is carried by structured fields. However, for a destructive undo with a plan/apply guard workflow, the description does not explain the two-phase process or what undo affects, leaving a notable gap in operational understanding.

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 dryRun, planHash, confirmationToken, and expectedStateVersion. The description's 'Plan or apply' vaguely maps to dryRun but adds no further meaning, which is the baseline expectation when schema coverage is complete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Plan or apply') and resource ('one guarded Ableton undo operation'), making the tool's basic purpose clear. It does not explicitly distinguish itself from the sibling `redo` or `get_history_state`, so it falls short of full sibling differentiation.

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 phrase 'Plan or apply' hints at two operating modes but gives no conditions for choosing between them. It also does not mention when to use undo versus the sibling `redo` or `get_history_state`, leaving the agent without explicit routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ungroup_tracksA
Destructive

Remove one native Group through macOS English Live UI, promoting its children to the enclosing Group or root. Removes its processing/mixer stage, shifts IDs and numbered labels, and can change sound/routing. Saved Set, stopped transport/recording, unarmed/unfrozen descendants and visible Group required. Refuses exposed external dependencies. Group devices require allowContent. Verifies retained descendants and exposed controls. No automatic undo/regrouping. Retain ungroupingId before execution. All profile.

NameRequiredDescriptionDefault
dryRunNoFalse executes with token and hash.
planHashNoPlan hash.
allowContentNoAllow discarding the Group device chain; does not preserve hidden plug-in state.
groupTrackIdYesID from list_tracks.
confirmationTokenNoSingle-use plan token.
expectedStateVersionYesObserved stateVersion.
expectedSetFingerprintYesCurrent Set fingerprint.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/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 substantial context beyond them: the processing/mixer stage is discarded, IDs and numbered labels shift, sound/routing can change, retained descendants are verified, and there is 'No automatic undo/regrouping'. That is a complete risk picture for a destructive mutation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The action and its scope are front-loaded, followed by preconditions and hazards; nearly every clause carries information. It reads as a dense run-on paragraph rather than structured sentences, which costs a point on scanability.

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 destructive, non-idempotent mutation with an output schema, the description covers preconditions, side effects, verification, and the absence of undo. The one dangling item is 'Retain ungroupingId before execution' — ungroupingId is not a parameter and the description never says which sibling (get_track_ungrouping_status) produces 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%, so the baseline is 3. The description adds one genuinely new semantic — that allowContent is required when the Group carries devices — but says nothing about how expectedStateVersion, expectedSetFingerprint, planHash, or confirmationToken relate to the dry-run/execute flow.

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 ('Remove one native Group'), names the execution channel ('macOS English Live UI'), and describes the outcome ('promoting its children to the enclosing Group or root'). This clearly separates it from the sibling group_tracks, which does the inverse.

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?

Preconditions are explicit and actionable: 'Saved Set, stopped transport/recording, unarmed/unfrozen descendants and visible Group required', plus 'Refuses exposed external dependencies' and 'Group devices require allowContent'. It falls short of a 5 because it never names the alternatives an agent should consider first (get_track_ungrouping_status to obtain the plan, or group_tracks to reverse the operation).

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. 328 tool updatesv0.3.1
    • Changedadd_audio_warp_marker3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedadjust_rack_macro_count2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedadopt_instrument_comparison4 fields changed
      • changedInput schema / properties / original / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • changedInput schema / properties / variation / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedadvance_production_session5 fields changed
      • changedInput schema / properties / action / enum
        Previous value: -[
        -  "resume",
        -  "propose",
        -  "choose",
        -  "apply",
        -  "feedback",
        -  "evaluate"
        -]New value: +[
        +  "resume",
        +  "replan",
        +  "propose",
        +  "choose",
        +  "apply",
        +  "feedback",
        +  "evaluate"
        +]
      • addedInput schema / properties / constraints
        Added value: +{
        +  "items": {
        +    "description": "Explicit user constraint.",
        +    "maxLength": 2000,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 12,
        +  "type": "array"
        +}
      • changedInput schema / properties / text / description
        Previous value: -"Explicit user listening feedback; not an observed Live fact."New value: +"Listening feedback for feedback, or an explicit remaining goal for replan; not an observed Live fact."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "audibleQualityVerified": {
        +        "const": false
        +      },
        +      "execution": {
        +        "properties": {
        +          "counts": {
        +            "additionalProperties": {
        +              "maximum": 16,
        +              "minimum": 0,
        +              "type": "integer"
        +            },
        +            "type": "object"
        +          },
        +          "operations": {
        +            "items": {
        +              "properties": {
        +                "attemptRef": {
        +                  "pattern": "^[a-f0-9]{64}$",
        +                  "type": "string"
        +                },
        +                "error": {
        +                  "maxLength": 300,
        +                  "type": "string"
        +                },
        +                "index": {
        +                  "maximum": 15,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "nativeStatus": {
        +                  "enum": [
        +                    "applied",
        +                    "outcome_unknown",
        +                    "postconditions_failed",
        +                    "pending_postconditions",
        +                    "pending_user_action"
        +                  ]
        +                },
        +                "receiptId": {
        +                  "pattern": "^[a-f0-9]{64}$",
        +                  "type": "string"
        +                },
        +                "resultRef": {
        +                  "pattern": "^[a-f0-9]{64}$",
        +                  "type": "string"
        +                },
        +                "status": {
        +                  "enum": [
        +                    "not_attempted",
        +                    "execution_pending",
        +                    "applied",
        +                    "rejected",
        +                    "outcome_unknown",
        +                    "postconditions_failed",
        +                    "pending_postconditions",
        +                    "pending_user_action",
        +                    "unrecorded"
        +                  ]
        +                },
        +                "tool": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "index",
        +                "tool",
        +                "status"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 16,
        +            "type": "array"
        +          },
        +          "taskId": {
        +            "pattern": "^[a-f0-9]{64}$",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "taskId",
        +          "operations",
        +          "counts"
        +        ],
        +        "type": "object"
        +      },
        +      "phase": {
        +        "enum": [
        +          "inspect",
        +          "choose",
        +          "propose",
        +          "proposing",
        +          "apply",
        +          "execution_pending",
        +          "needs_inspection",
        +          "audition",
        +          "evaluate",
        +          "complete"
        +        ]
        +      },
        +      "recoveryRef": {
        +        "pattern": "^[a-f0-9]{64}$",
        +        "type": "string"
        +      },
        +      "recoveryRequired": {
        +        "type": "boolean"
        +      },
        +      "revision": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "sessionId": {
        +        "type": "string"
        +      },
        +      "sessionRef": {
        +        "pattern": "^[a-f0-9]{64}$",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "sessionId",
        +      "sessionRef",
        +      "revision",
        +      "phase",
        +      "audibleQualityVerified"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedanalyze_arrangement_section2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "coverage": {
        +        "type": "object"
        +      },
        +      "parts": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "parts",
        +      "coverage"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedanalyze_audio_clip3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "clipId": {
        +        "type": "string"
        +      },
        +      "measurement": {
        +        "properties": {
        +          "channels": {
        +            "type": "integer"
        +          },
        +          "durationSeconds": {
        +            "type": "number"
        +          },
        +          "integratedLufs": {
        +            "anyOf": [
        +              {
        +                "type": "number"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "loudnessRangeLu": {
        +            "anyOf": [
        +              {
        +                "type": "number"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "sampleRate": {
        +            "type": "number"
        +          },
        +          "scope": {
        +            "const": "source_audio"
        +          },
        +          "sourcePath": {
        +            "type": "string"
        +          },
        +          "truePeakDbtp": {
        +            "anyOf": [
        +              {
        +                "type": "number"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "window": {
        +            "properties": {
        +              "durationSeconds": {
        +                "type": "number"
        +              },
        +              "startSeconds": {
        +                "type": "number"
        +              }
        +            },
        +            "required": [
        +              "startSeconds",
        +              "durationSeconds"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "sourcePath",
        +          "scope",
        +          "durationSeconds",
        +          "sampleRate",
        +          "channels",
        +          "window",
        +          "integratedLufs",
        +          "truePeakDbtp",
        +          "loudnessRangeLu"
        +        ],
        +        "type": "object"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "trackId",
        +      "clipId",
        +      "measurement"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedanalyze_audio_file2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "channels": {
        +        "type": "integer"
        +      },
        +      "durationSeconds": {
        +        "type": "number"
        +      },
        +      "integratedLufs": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "loudnessRangeLu": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "sampleRate": {
        +        "type": "number"
        +      },
        +      "scope": {
        +        "const": "source_audio"
        +      },
        +      "sourcePath": {
        +        "type": "string"
        +      },
        +      "truePeakDbtp": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "window": {
        +        "properties": {
        +          "durationSeconds": {
        +            "type": "number"
        +          },
        +          "startSeconds": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "startSeconds",
        +          "durationSeconds"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "sourcePath",
        +      "scope",
        +      "durationSeconds",
        +      "sampleRate",
        +      "channels",
        +      "window",
        +      "integratedLufs",
        +      "truePeakDbtp",
        +      "loudnessRangeLu"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedanalyze_midi_clip_chords3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "analysis": {
        +        "type": "object"
        +      },
        +      "clipId": {
        +        "type": "string"
        +      },
        +      "lengthBeats": {
        +        "type": "number"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "trackId",
        +      "clipId",
        +      "lengthBeats",
        +      "analysis"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedanalyze_midi_clip_scale3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "analysis": {
        +        "type": "object"
        +      },
        +      "clipId": {
        +        "type": "string"
        +      },
        +      "lengthBeats": {
        +        "type": "number"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "trackId",
        +      "clipId",
        +      "lengthBeats",
        +      "analysis"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedanalyze_midi_feel3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "bars": {
        +        "type": "integer"
        +      },
        +      "clipId": {
        +        "type": "string"
        +      },
        +      "grid": {
        +        "type": "string"
        +      },
        +      "notes": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "originBeats": {
        +        "type": "number"
        +      },
        +      "slots": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "sourceNoteCount": {
        +        "type": "integer"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "template": {
        +        "type": "object"
        +      },
        +      "totalSourceNoteCount": {
        +        "type": "integer"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "trackId",
        +      "clipId",
        +      "grid",
        +      "bars",
        +      "originBeats",
        +      "sourceNoteCount",
        +      "totalSourceNoteCount",
        +      "notes",
        +      "slots",
        +      "template"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedanalyze_midi_parts3 fields changed
      • changedInput schema / properties / parts / items / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "parts": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "parts"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedapply_drum_variation3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedapply_midi_chord_arpeggiation3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedapply_midi_chord_doubling3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedapply_midi_chord_inversion3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedapply_midi_chord_voice_leading3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedapply_midi_diatonic_chord_quality3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedapply_midi_diatonic_harmony3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedapply_midi_diatonic_transposition3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedapply_midi_drop_voicing3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedapply_midi_feel_template4 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • changedInput schema / properties / template / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "barBeats": {
        -        "description": "Quarter-note beats per source bar.",
        -        "exclusiveMinimum": 0,
        -        "type": "number"
        -      },
        -      "bars": {
        -        "maximum": 8,
        -        "minimum": 1,
        -        "type": "integer"
        -      },
        -      "format": {
        -        "const": "cavi-midi-feel-v1"
        -      },
        -      "grid": {
        -        "enum": [
        -          "straight16",
        -          "eighthTriplet",
        -          "sixteenthTriplet"
        -        ],
        -        "type": "string"
        -      },
        -      "nativeGrooveId": {
        -        "description": "Only stored-note templates without an assigned native groove are transferable.",
        -        "type": "null"
        -      },
        -      "slots": {
        -        "description": "Nonempty measured slots from analyze_midi_feel.",
        -        "items": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "hitCount": {
        -              "minimum": 1,
        -              "type": "integer"
        -            },
        -            "meanOffsetBeats": {
        -              "description": "Mean stored-note deviation from this grid slot.",
        -              "type": "number"
        -            },
        -            "meanVelocity": {
        -              "description": "Mean stored-note velocity.",
        -              "maximum": 127,
        -              "minimum": 1,
        -              "type": "number"
        -            },
        -            "slot": {
        -              "minimum": 0,
        -              "type": "integer"
        -            }
        -          },
        -          "required": [
        -            "slot",
        -            "hitCount",
        -            "meanOffsetBeats",
        -            "meanVelocity"
        -          ],
        -          "type": "object"
        -        },
        -        "maxItems": 4096,
        -        "minItems": 1,
        -        "type": "array"
        -      },
        -      "source": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "clipId": {
        -            "description": "Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported.",
        -            "type": "string"
        -          },
        -          "noteIds": {
        -            "description": "Exact source note IDs; omitted means all stored notes.",
        -            "items": {
        -              "type": "integer"
        -            },
        -            "maxItems": 4096,
        -            "minItems": 1,
        -            "type": "array",
        -            "uniqueItems": true
        -          },
        -          "originBeats": {
        -            "description": "Clip-beat cycle origin; defaults to zero. Use an observed loop start when intended.",
        -            "minimum": 0,
        -            "type": "number"
        -          },
        -          "stateVersion": {
        -            "minimum": 1,
        -            "type": "integer"
        -          },
        -          "trackId": {
        -            "description": "ID from list_tracks.",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "trackId",
        -          "clipId",
        -          "stateVersion"
        -        ],
        -        "type": "object"
        -      }
        -    },
        -    "required": [
        -      "format",
        -      "grid",
        -      "bars",
        -      "barBeats",
        -      "nativeGrooveId",
        -      "source",
        -      "slots"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "barBeats": {
        -        "description": "Quarter-note beats per source bar.",
        -        "exclusiveMinimum": 0,
        -        "type": "number"
        -      },
        -      "bars": {
        -        "maximum": 8,
        -        "minimum": 1,
        -        "type": "integer"
        -      },
        -      "cycleBeats": {
        -        "description": "Measured cycle length in quarter-note beats.",
        -        "exclusiveMinimum": 0,
        -        "type": "number"
        -      },
        -      "format": {
        -        "const": "cavi-audio-feel-v1"
        -      },
        -      "gridBeats": {
        -        "description": "Measured source-audio grid spacing in quarter-note beats.",
        -        "exclusiveMinimum": 0,
        -        "maximum": 16,
        -        "type": "number"
        -      },
        -      "limitation": {
        -        "description": "Measurement boundary and source-audio limitations.",
        -        "type": "string"
        -      },
        -      "nativeGrooveId": {
        -        "type": "null"
        -      },
        -      "slotCount": {
        -        "maximum": 4096,
        -        "minimum": 1,
        -        "type": "integer"
        -      },
        -      "slots": {
        -        "description": "Nonempty measured source-audio feel slots.",
        -        "items": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "hitCount": {
        -              "minimum": 1,
        -              "type": "integer"
        -            },
        -            "meanOffsetBeats": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "meanStrength": {
        -              "description": "Measured source onset strength; not MIDI velocity.",
        -              "maximum": 1,
        -              "minimum": 0,
        -              "type": "number"
        -            },
        -            "reliableTimingHits": {
        -              "minimum": 0,
        -              "type": "integer"
        -            },
        -            "slot": {
        -              "minimum": 0,
        -              "type": "integer"
        -            }
        -          },
        -          "required": [
        -            "slot",
        -            "hitCount",
        -            "reliableTimingHits",
        -            "meanOffsetBeats",
        -            "meanStrength"
        -          ],
        -          "type": "object"
        -        },
        -        "maxItems": 4096,
        -        "minItems": 1,
        -        "type": "array"
        -      },
        -      "source": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "clipId": {
        -            "description": "Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported.",
        -            "type": "string"
        -          },
        -          "sourcePath": {
        -            "description": "Measured local audio source path.",
        -            "type": "string"
        -          },
        -          "stateVersion": {
        -            "minimum": 1,
        -            "type": "integer"
        -          },
        -          "trackId": {
        -            "description": "ID from list_tracks.",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "trackId",
        -          "clipId",
        -          "stateVersion",
        -          "sourcePath"
        -        ],
        -        "type": "object"
        -      }
        -    },
        -    "required": [
        -      "format",
        -      "gridBeats",
        -      "bars",
        -      "barBeats",
        -      "nativeGrooveId",
        -      "source",
        -      "slots"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "barBeats": {
        +        "description": "Quarter-note beats per source bar.",
        +        "exclusiveMinimum": 0,
        +        "type": "number"
        +      },
        +      "bars": {
        +        "maximum": 8,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "format": {
        +        "const": "cavi-midi-feel-v1"
        +      },
        +      "grid": {
        +        "enum": [
        +          "straight16",
        +          "eighthTriplet",
        +          "sixteenthTriplet"
        +        ],
        +        "type": "string"
        +      },
        +      "nativeGrooveId": {
        +        "description": "Only stored-note templates without an assigned native groove are transferable.",
        +        "type": "null"
        +      },
        +      "slots": {
        +        "description": "Nonempty measured slots from analyze_midi_feel.",
        +        "items": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "hitCount": {
        +              "minimum": 1,
        +              "type": "integer"
        +            },
        +            "meanOffsetBeats": {
        +              "description": "Mean stored-note deviation from this grid slot.",
        +              "type": "number"
        +            },
        +            "meanVelocity": {
        +              "description": "Mean stored-note velocity.",
        +              "maximum": 127,
        +              "minimum": 1,
        +              "type": "number"
        +            },
        +            "slot": {
        +              "minimum": 0,
        +              "type": "integer"
        +            }
        +          },
        +          "required": [
        +            "slot",
        +            "hitCount",
        +            "meanOffsetBeats",
        +            "meanVelocity"
        +          ],
        +          "type": "object"
        +        },
        +        "maxItems": 4096,
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "source": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "clipId": {
        +            "description": "list_clips Session ID or supported list_arrangement_clips ID.",
        +            "type": "string"
        +          },
        +          "noteIds": {
        +            "description": "Exact source note IDs; omitted means all stored notes.",
        +            "items": {
        +              "type": "integer"
        +            },
        +            "maxItems": 4096,
        +            "minItems": 1,
        +            "type": "array",
        +            "uniqueItems": true
        +          },
        +          "originBeats": {
        +            "description": "Clip-beat cycle origin; defaults to zero. Use an observed loop start when intended.",
        +            "minimum": 0,
        +            "type": "number"
        +          },
        +          "stateVersion": {
        +            "minimum": 1,
        +            "type": "integer"
        +          },
        +          "trackId": {
        +            "description": "ID from list_tracks.",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "trackId",
        +          "clipId",
        +          "stateVersion"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "format",
        +      "grid",
        +      "bars",
        +      "barBeats",
        +      "nativeGrooveId",
        +      "source",
        +      "slots"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "barBeats": {
        +        "description": "Quarter-note beats per source bar.",
        +        "exclusiveMinimum": 0,
        +        "type": "number"
        +      },
        +      "bars": {
        +        "maximum": 8,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "cycleBeats": {
        +        "description": "Measured cycle length in quarter-note beats.",
        +        "exclusiveMinimum": 0,
        +        "type": "number"
        +      },
        +      "format": {
        +        "const": "cavi-audio-feel-v1"
        +      },
        +      "gridBeats": {
        +        "description": "Measured source-audio grid spacing in quarter-note beats.",
        +        "exclusiveMinimum": 0,
        +        "maximum": 16,
        +        "type": "number"
        +      },
        +      "limitation": {
        +        "description": "Measurement boundary and source-audio limitations.",
        +        "type": "string"
        +      },
        +      "nativeGrooveId": {
        +        "type": "null"
        +      },
        +      "slotCount": {
        +        "maximum": 4096,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "slots": {
        +        "description": "Nonempty measured source-audio feel slots.",
        +        "items": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "hitCount": {
        +              "minimum": 1,
        +              "type": "integer"
        +            },
        +            "meanOffsetBeats": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "meanStrength": {
        +              "description": "Measured source onset strength; not MIDI velocity.",
        +              "maximum": 1,
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "reliableTimingHits": {
        +              "minimum": 0,
        +              "type": "integer"
        +            },
        +            "slot": {
        +              "minimum": 0,
        +              "type": "integer"
        +            }
        +          },
        +          "required": [
        +            "slot",
        +            "hitCount",
        +            "reliableTimingHits",
        +            "meanOffsetBeats",
        +            "meanStrength"
        +          ],
        +          "type": "object"
        +        },
        +        "maxItems": 4096,
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "source": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "clipId": {
        +            "description": "list_clips Session ID or supported list_arrangement_clips ID.",
        +            "type": "string"
        +          },
        +          "sourcePath": {
        +            "description": "Measured local audio source path.",
        +            "type": "string"
        +          },
        +          "stateVersion": {
        +            "minimum": 1,
        +            "type": "integer"
        +          },
        +          "trackId": {
        +            "description": "ID from list_tracks.",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "trackId",
        +          "clipId",
        +          "stateVersion",
        +          "sourcePath"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "format",
        +      "gridBeats",
        +      "bars",
        +      "barBeats",
        +      "nativeGrooveId",
        +      "source",
        +      "slots"
        +    ],
        +    "type": "object"
        +  }
        +]
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedapply_midi_gate_pattern3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedapply_midi_probability_pattern3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedapply_midi_ratchet_pattern3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedapply_midi_scale_chord_remapping3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedapply_midi_strum_pattern3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedapply_midi_transposition3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedapply_midi_velocity_curve3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedapply_monophonic_audio_tuning3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedapply_production_operation2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "checkSource": {
        +        "enum": [
        +          "caller",
        +          "specialist"
        +        ]
        +      },
        +      "operationIndex": {
        +        "minimum": 0,
        +        "type": "integer"
        +      },
        +      "status": {
        +        "enum": [
        +          "planned",
        +          "applied",
        +          "rejected",
        +          "outcome_unknown",
        +          "postconditions_failed",
        +          "pending_postconditions",
        +          "pending_user_action"
        +        ]
        +      },
        +      "taskId": {
        +        "pattern": "^[a-f0-9]{64}$",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "taskId",
        +      "operationIndex",
        +      "status",
        +      "checkSource"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedarm_track2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedaudition_arrangement_passage2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedbounce_track_in_place2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedbrowse_local_splice_directory2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "entries": {
        +        "items": {
        +          "properties": {
        +            "name": {
        +              "type": "string"
        +            },
        +            "sourcePath": {
        +              "type": "string"
        +            },
        +            "type": {
        +              "enum": [
        +                "directory",
        +                "audio_file"
        +              ]
        +            }
        +          },
        +          "required": [
        +            "name",
        +            "type",
        +            "sourcePath"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "nextOffset": {
        +        "anyOf": [
        +          {
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "offset": {
        +        "type": "integer"
        +      },
        +      "rootPath": {
        +        "type": "string"
        +      },
        +      "scope": {
        +        "const": "local_files_only"
        +      },
        +      "total": {
        +        "type": "integer"
        +      }
        +    },
        +    "required": [
        +      "rootPath",
        +      "scope",
        +      "offset",
        +      "total",
        +      "nextOffset",
        +      "entries"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcapture_device_chain_snapshot2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "limitation": {
        +        "type": "string"
        +      },
        +      "snapshot": {
        +        "type": "object"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "trackId",
        +      "snapshot",
        +      "limitation"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcapture_device_parameter_snapshot2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "deviceId": {
        +        "type": "string"
        +      },
        +      "limitation": {
        +        "type": "string"
        +      },
        +      "snapshot": {
        +        "type": "object"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "trackId",
        +      "deviceId",
        +      "snapshot",
        +      "limitation"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcapture_group_system_snapshot2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "busTrackId": {
        +        "type": "string"
        +      },
        +      "limitation": {
        +        "type": "string"
        +      },
        +      "snapshot": {
        +        "type": "object"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "busTrackId",
        +      "snapshot",
        +      "limitation"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcapture_live_audio2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcapture_midi_session2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcapture_session_scene2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcapture_track_state_snapshot2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "limitation": {
        +        "type": "string"
        +      },
        +      "snapshot": {
        +        "type": "object"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "trackId",
        +      "snapshot",
        +      "limitation"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedclaim_nks_generation_job2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "job": {
        +        "anyOf": [
        +          {
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "preset": {
        +        "anyOf": [
        +          {
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      }
        +    },
        +    "required": [
        +      "job",
        +      "preset"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcollect_project_media2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcompare_audio_reference2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "levelMatch": {
        +        "properties": {
        +          "applied": {
        +            "const": false
        +          },
        +          "available": {
        +            "type": "boolean"
        +          }
        +        },
        +        "required": [
        +          "available",
        +          "applied"
        +        ],
        +        "type": "object"
        +      },
        +      "limitation": {
        +        "type": "string"
        +      },
        +      "mix": {
        +        "type": "object"
        +      },
        +      "mixMinusReference": {
        +        "properties": {
        +          "integratedLufs": {
        +            "anyOf": [
        +              {
        +                "type": "number"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "loudnessRangeLu": {
        +            "anyOf": [
        +              {
        +                "type": "number"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "truePeakDbtp": {
        +            "anyOf": [
        +              {
        +                "type": "number"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "integratedLufs",
        +          "truePeakDbtp",
        +          "loudnessRangeLu"
        +        ],
        +        "type": "object"
        +      },
        +      "reference": {
        +        "type": "object"
        +      },
        +      "scope": {
        +        "const": "source_audio_windows"
        +      }
        +    },
        +    "required": [
        +      "scope",
        +      "mix",
        +      "reference",
        +      "mixMinusReference",
        +      "levelMatch",
        +      "limitation"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcomplete_nks_generation_job2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "job": {
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "job"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcopy_arrangement_clip_to_track2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcopy_device_ab_slot2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcorrect_midi_clip_to_scale3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcreate_arrangement_audio_clip2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcreate_arrangement_cue_point2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcreate_arrangement_midi_clip2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcreate_audio_clip3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcreate_clip_mixer_envelope3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcreate_clip_parameter_envelope3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcreate_drum_pattern_clip3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcreate_groove2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcreate_midi_clip3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcreate_rack_chain2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcreate_return_track2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcreate_scale_bassline_clip3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcreate_scale_chord_progression_clip3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcreate_scale_melody_clip3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcreate_scene2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcreate_track2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcrop_audio_clip3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedcrop_midi_clip3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changeddelete_arrangement_clip2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changeddelete_arrangement_cue_point2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changeddelete_clip3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changeddelete_device2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changeddelete_rack_macro_variation2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changeddelete_session_object2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedduplicate_arrangement_clip2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedduplicate_clip4 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • changedInput schema / properties / destinationClipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedduplicate_clip_loop3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedduplicate_midi_clip_variations2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedduplicate_session_object2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changededit_drum_pattern_clip3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedenqueue_nks_generation_jobs2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "enqueued": {
        +            "type": "integer"
        +          },
        +          "jobs": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "enqueued",
        +          "jobs"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedexport_audio_mix2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedexport_audio_track2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedexport_looper_clip3 fields changed
      • changedInput schema / properties / destinationClipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedexport_midi_clip3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedfail_nks_generation_job2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "job": {
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "job"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedfinish_arrangement_take2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedfinish_beat_repeat_fill2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedfinish_live_audio_capture2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedfinish_session_arrangement_recording2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedfinish_session_clip_hold2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_arrangement_take2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "cleanupErrors": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "clipId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "clips": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "deviceId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "endBeats": {
        +        "type": "number"
        +      },
        +      "identityToken": {
        +        "type": "string"
        +      },
        +      "performanceVerified": {
        +        "type": "boolean"
        +      },
        +      "reason": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "recordingRequested": {
        +        "type": "boolean"
        +      },
        +      "recordingVerified": {
        +        "type": "boolean"
        +      },
        +      "setFingerprint": {
        +        "type": "string"
        +      },
        +      "startBeats": {
        +        "type": "number"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "status": {
        +        "type": "string"
        +      },
        +      "supported": {
        +        "type": "boolean"
        +      },
        +      "takeId": {
        +        "type": "string"
        +      },
        +      "takes": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_audio_clip_state3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "clipId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "deviceId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "gain": {
        +        "type": "object"
        +      },
        +      "loop": {
        +        "type": "object"
        +      },
        +      "markers": {
        +        "type": "object"
        +      },
        +      "pitch": {
        +        "type": "object"
        +      },
        +      "setFingerprint": {
        +        "type": "string"
        +      },
        +      "source": {
        +        "type": "object"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      },
        +      "warpMarkers": {
        +        "type": "object"
        +      },
        +      "warping": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "trackId",
        +      "clipId"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_audio_source_beat_times3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "clipId": {
        +        "type": "string"
        +      },
        +      "conversion": {
        +        "const": "native"
        +      },
        +      "points": {
        +        "items": {
        +          "properties": {
        +            "beatTime": {
        +              "type": "number"
        +            },
        +            "sourceSeconds": {
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "sourceSeconds",
        +            "beatTime"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "sourcePath": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "trackId",
        +      "clipId",
        +      "sourcePath",
        +      "conversion",
        +      "points"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_automation_capabilities2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "arrangementParameterAutomation": {
        +        "type": "object"
        +      },
        +      "handoffs": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "perNoteExpressionCurves": {
        +        "type": "object"
        +      },
        +      "perNoteProperties": {
        +        "type": "object"
        +      },
        +      "productionBoundaries": {
        +        "type": "object"
        +      },
        +      "sessionClipMixerEnvelopes": {
        +        "type": "object"
        +      },
        +      "sessionClipParameterEnvelopes": {
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "sessionClipParameterEnvelopes",
        +      "sessionClipMixerEnvelopes",
        +      "arrangementParameterAutomation",
        +      "perNoteProperties",
        +      "perNoteExpressionCurves",
        +      "productionBoundaries",
        +      "handoffs"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_beat_repeat_fill2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "cleanupErrors": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "clipId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "deviceId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "fillId": {
        +        "type": "string"
        +      },
        +      "fills": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "finished": {
        +        "type": "boolean"
        +      },
        +      "identityToken": {
        +        "type": "string"
        +      },
        +      "reason": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "setFingerprint": {
        +        "type": "string"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "status": {
        +        "type": "string"
        +      },
        +      "supported": {
        +        "type": "boolean"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_beat_repeat_performance_context2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "clipId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "controls": {
        +        "type": "object"
        +      },
        +      "device": {
        +        "type": "object"
        +      },
        +      "deviceId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "identityToken": {
        +        "type": "string"
        +      },
        +      "parameters": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "reason": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "setFingerprint": {
        +        "type": "string"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "status": {
        +        "type": "string"
        +      },
        +      "supported": {
        +        "type": "boolean"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_browser_item_metadata2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "item": {
        +        "type": "object"
        +      },
        +      "metadata": {
        +        "properties": {
        +          "favorite": {
        +            "type": "boolean"
        +          },
        +          "revision": {
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "tags": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "favorite",
        +          "tags",
        +          "revision"
        +        ],
        +        "type": "object"
        +      },
        +      "nativeLiveCollectionsModified": {
        +        "const": false
        +      }
        +    },
        +    "required": [
        +      "item",
        +      "metadata",
        +      "nativeLiveCollectionsModified"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_browser_items2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "children": {
        +        "items": {
        +          "properties": {
        +            "loadable": {
        +              "type": "boolean"
        +            },
        +            "name": {
        +              "type": "string"
        +            },
        +            "path": {
        +              "items": {
        +                "type": "string"
        +              },
        +              "type": "array"
        +            },
        +            "uri": {
        +              "anyOf": [
        +                {
        +                  "type": "string"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            }
        +          },
        +          "required": [
        +            "name"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "item": {
        +        "anyOf": [
        +          {
        +            "properties": {
        +              "loadable": {
        +                "type": "boolean"
        +              },
        +              "name": {
        +                "type": "string"
        +              },
        +              "path": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "uri": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ]
        +              }
        +            },
        +            "required": [
        +              "name"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "nextOffset": {
        +        "anyOf": [
        +          {
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "offset": {
        +        "type": "integer"
        +      },
        +      "path": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "root": {
        +        "type": "string"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "totalChildren": {
        +        "type": "integer"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "root",
        +      "path",
        +      "children"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_browser_preview_context2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "clipId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "deviceId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "identityToken": {
        +        "type": "string"
        +      },
        +      "item": {
        +        "anyOf": [
        +          {
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "path": {
        +        "anyOf": [
        +          {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "previewSupported": {
        +        "type": "boolean"
        +      },
        +      "reason": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "root": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "setFingerprint": {
        +        "type": "string"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "status": {
        +        "type": "string"
        +      },
        +      "stopSupported": {
        +        "type": "boolean"
        +      },
        +      "supported": {
        +        "type": "boolean"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      },
        +      "transport": {
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "stateVersion"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_clip_groove_context3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "clipId": {
        +        "type": "string"
        +      },
        +      "musicalContext": {
        +        "type": "object"
        +      },
        +      "source": {
        +        "type": "object"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "timing": {
        +        "type": "object"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "trackId",
        +      "clipId",
        +      "source",
        +      "timing",
        +      "musicalContext"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_clip_mixer_envelope3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "clipId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "deviceId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "exists": {
        +        "type": "boolean"
        +      },
        +      "identityToken": {
        +        "type": "string"
        +      },
        +      "reason": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "samples": {
        +        "items": {
        +          "properties": {
        +            "time": {
        +              "type": "number"
        +            },
        +            "value": {
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "time",
        +            "value"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "setFingerprint": {
        +        "type": "string"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "status": {
        +        "type": "string"
        +      },
        +      "supported": {
        +        "type": "boolean"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_clip_parameter_envelope3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "clipId": {
        +        "type": "string"
        +      },
        +      "exists": {
        +        "type": "boolean"
        +      },
        +      "parameter": {
        +        "type": "object"
        +      },
        +      "parameterId": {
        +        "type": "string"
        +      },
        +      "samples": {
        +        "items": {
        +          "properties": {
        +            "time": {
        +              "type": "number"
        +            },
        +            "value": {
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "time",
        +            "value"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "trackId",
        +      "clipId",
        +      "parameterId",
        +      "parameter",
        +      "exists",
        +      "samples"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_clip_timing3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "clipId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "deviceId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "editorGrid": {
        +        "type": "object"
        +      },
        +      "launchMode": {
        +        "type": "object"
        +      },
        +      "launchQuantization": {
        +        "type": "object"
        +      },
        +      "location": {
        +        "type": "string"
        +      },
        +      "loop": {
        +        "properties": {
        +          "enabled": {
        +            "type": "boolean"
        +          },
        +          "endBeats": {
        +            "type": "number"
        +          },
        +          "endSeconds": {
        +            "type": "number"
        +          },
        +          "startBeats": {
        +            "type": "number"
        +          },
        +          "startSeconds": {
        +            "type": "number"
        +          },
        +          "unit": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "enabled"
        +        ],
        +        "type": "object"
        +      },
        +      "markers": {
        +        "properties": {
        +          "endBeats": {
        +            "type": "number"
        +          },
        +          "endSeconds": {
        +            "type": "number"
        +          },
        +          "startBeats": {
        +            "type": "number"
        +          },
        +          "startSeconds": {
        +            "type": "number"
        +          },
        +          "supported": {
        +            "type": "boolean"
        +          },
        +          "unit": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "supported"
        +        ],
        +        "type": "object"
        +      },
        +      "mute": {
        +        "type": "object"
        +      },
        +      "setFingerprint": {
        +        "type": "string"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "timeSignature": {
        +        "properties": {
        +          "denominator": {
        +            "minimum": 1,
        +            "type": "integer"
        +          },
        +          "numerator": {
        +            "minimum": 1,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "numerator",
        +          "denominator"
        +        ],
        +        "type": "object"
        +      },
        +      "timeline": {
        +        "anyOf": [
        +          {
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_crossfader_context2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "assignmentChoices": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "identityToken": {
        +        "type": "string"
        +      },
        +      "position": {
        +        "type": "object"
        +      },
        +      "setFingerprint": {
        +        "type": "string"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "tracks": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "transport": {
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "setFingerprint",
        +      "position",
        +      "tracks",
        +      "assignmentChoices",
        +      "transport",
        +      "identityToken"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_device_ab_context2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "activeSlot": {
        +        "type": "integer"
        +      },
        +      "canCopy": {
        +        "type": "boolean"
        +      },
        +      "clipId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "deviceId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "identityToken": {
        +        "type": "string"
        +      },
        +      "isFrozen": {
        +        "type": "boolean"
        +      },
        +      "isPlaying": {
        +        "type": "boolean"
        +      },
        +      "otherSlotContentsAvailable": {
        +        "type": "boolean"
        +      },
        +      "parameters": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "parametersDigest": {
        +        "type": "string"
        +      },
        +      "reason": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "recording": {
        +        "type": "object"
        +      },
        +      "setFingerprint": {
        +        "type": "string"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "status": {
        +        "type": "string"
        +      },
        +      "supported": {
        +        "type": "boolean"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_device_activation_context2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "clipId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "device": {
        +        "type": "object"
        +      },
        +      "deviceId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "editContext": {
        +        "type": "object"
        +      },
        +      "identityToken": {
        +        "type": "string"
        +      },
        +      "reason": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "setFingerprint": {
        +        "type": "string"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "status": {
        +        "type": "string"
        +      },
        +      "supported": {
        +        "type": "boolean"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_device_hierarchy2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "device": {
        +        "type": "object"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "trackId",
        +      "device"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_device_sidechain_routing2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "device": {
        +        "type": "object"
        +      },
        +      "deviceId": {
        +        "type": "string"
        +      },
        +      "sidechain": {
        +        "type": "object"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "trackId",
        +      "deviceId",
        +      "device",
        +      "sidechain"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_factory_browser_items2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "children": {
        +        "items": {
        +          "properties": {
        +            "loadable": {
        +              "type": "boolean"
        +            },
        +            "name": {
        +              "type": "string"
        +            },
        +            "path": {
        +              "items": {
        +                "type": "string"
        +              },
        +              "type": "array"
        +            },
        +            "uri": {
        +              "anyOf": [
        +                {
        +                  "type": "string"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            }
        +          },
        +          "required": [
        +            "name"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "item": {
        +        "anyOf": [
        +          {
        +            "properties": {
        +              "loadable": {
        +                "type": "boolean"
        +              },
        +              "name": {
        +                "type": "string"
        +              },
        +              "path": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "uri": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ]
        +              }
        +            },
        +            "required": [
        +              "name"
        +            ],
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "nextOffset": {
        +        "anyOf": [
        +          {
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "offset": {
        +        "type": "integer"
        +      },
        +      "path": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "root": {
        +        "type": "string"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "totalChildren": {
        +        "type": "integer"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "root",
        +      "path",
        +      "children"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_factory_coverage2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "deepIntegrationVerified": {
        +        "const": false
        +      },
        +      "limitation": {
        +        "type": "string"
        +      },
        +      "roots": {
        +        "additionalProperties": {
        +          "properties": {
        +            "loadableCount": {
        +              "type": "integer"
        +            },
        +            "missingProfiles": {
        +              "items": {
        +                "type": "object"
        +              },
        +              "type": "array"
        +            },
        +            "profiledByName": {
        +              "items": {
        +                "type": "object"
        +              },
        +              "type": "array"
        +            },
        +            "stateVersion": {
        +              "type": "integer"
        +            }
        +          },
        +          "required": [
        +            "stateVersion",
        +            "loadableCount",
        +            "profiledByName",
        +            "missingProfiles"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "roots",
        +      "deepIntegrationVerified",
        +      "limitation"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_factory_device_context2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "device": {
        +        "type": "object"
        +      },
        +      "parameters": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "profile": {
        +        "anyOf": [
        +          {
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "trackId",
        +      "device"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_history_state2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "canRedo": {
        +        "type": "boolean"
        +      },
        +      "canUndo": {
        +        "type": "boolean"
        +      },
        +      "clipId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "deviceId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "identityToken": {
        +        "type": "string"
        +      },
        +      "reason": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "setFingerprint": {
        +        "type": "string"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "status": {
        +        "type": "string"
        +      },
        +      "supported": {
        +        "type": "boolean"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_instrument_comparison2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "alternatives": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "cleanupErrors": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "clipId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "comparisonId": {
        +        "type": "string"
        +      },
        +      "comparisons": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "deviceId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "identityToken": {
        +        "type": "string"
        +      },
        +      "reason": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "setFingerprint": {
        +        "type": "string"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "status": {
        +        "type": "string"
        +      },
        +      "supported": {
        +        "type": "boolean"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_live_audio_capture2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "beats": {
        +        "type": "number"
        +      },
        +      "captureId": {
        +        "type": "string"
        +      },
        +      "captures": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "cleanupErrors": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "clipId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "deviceId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "file": {
        +        "anyOf": [
        +          {
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "fileUnchanged": {
        +        "anyOf": [
        +          {
        +            "type": "boolean"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "identityToken": {
        +        "type": "string"
        +      },
        +      "partialSourcePath": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "reason": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "scope": {
        +        "type": "string"
        +      },
        +      "setFingerprint": {
        +        "type": "string"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "status": {
        +        "type": "string"
        +      },
        +      "supported": {
        +        "type": "boolean"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_live_object_colors2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "clipId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "deviceId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "identityToken": {
        +        "type": "string"
        +      },
        +      "objects": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "reason": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "selection": {
        +        "type": "object"
        +      },
        +      "setFingerprint": {
        +        "type": "string"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "status": {
        +        "type": "string"
        +      },
        +      "supported": {
        +        "type": "boolean"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_live_scale_reference4 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "scale": {
        +        "properties": {
        +          "degrees": {
        +            "items": {
        +              "type": "integer"
        +            },
        +            "type": "array"
        +          },
        +          "family": {
        +            "type": "string"
        +          },
        +          "intervals": {
        +            "items": {
        +              "maximum": 11,
        +              "minimum": 0,
        +              "type": "integer"
        +            },
        +            "minItems": 1,
        +            "type": "array"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "noteNames": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "pitchClasses": {
        +            "items": {
        +              "type": "integer"
        +            },
        +            "type": "array"
        +          },
        +          "rootName": {
        +            "type": "string"
        +          },
        +          "rootNote": {
        +            "maximum": 11,
        +            "minimum": 0,
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "family",
        +          "intervals",
        +          "rootNote",
        +          "rootName",
        +          "pitchClasses",
        +          "noteNames",
        +          "degrees"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "scale"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
      • removedOutput schema / properties
        Removed value: -{
        -  "scale": {
        -    "additionalProperties": true,
        -    "properties": {
        -      "degrees": {
        -        "items": {
        -          "type": "integer"
        -        },
        -        "type": "array"
        -      },
        -      "family": {
        -        "type": "string"
        -      },
        -      "intervals": {
        -        "items": {
        -          "maximum": 11,
        -          "minimum": 0,
        -          "type": "integer"
        -        },
        -        "minItems": 1,
        -        "type": "array"
        -      },
        -      "name": {
        -        "type": "string"
        -      },
        -      "noteNames": {
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "pitchClasses": {
        -        "items": {
        -          "type": "integer"
        -        },
        -        "type": "array"
        -      },
        -      "rootName": {
        -        "type": "string"
        -      },
        -      "rootNote": {
        -        "maximum": 11,
        -        "minimum": 0,
        -        "type": "integer"
        -      }
        -    },
        -    "required": [
        -      "name",
        -      "family",
        -      "intervals",
        -      "rootNote",
        -      "rootName",
        -      "pitchClasses",
        -      "noteNames",
        -      "degrees"
        -    ],
        -    "type": "object"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "scale"
        -]
    • Changedget_live_state2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "bridgeVersion": {
        +        "type": "string"
        +      },
        +      "capabilities": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "filePath": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "isPlaying": {
        +        "type": "boolean"
        +      },
        +      "serverIdentity": {
        +        "properties": {
        +          "fileCount": {
        +            "minimum": 1,
        +            "type": "integer"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "schemaVersion": {
        +            "const": 1
        +          },
        +          "sourceSha256": {
        +            "pattern": "^[a-f0-9]{64}$",
        +            "type": "string"
        +          },
        +          "version": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "schemaVersion",
        +          "name",
        +          "version",
        +          "sourceSha256",
        +          "fileCount"
        +        ],
        +        "type": "object"
        +      },
        +      "setFingerprint": {
        +        "type": "string"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "tempo": {
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "setFingerprint"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_looper_export_context3 fields changed
      • changedInput schema / properties / destinationClipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "canExport": {
        +        "type": "boolean"
        +      },
        +      "clipId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "destination": {
        +        "type": "object"
        +      },
        +      "deviceId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "identityToken": {
        +        "type": "string"
        +      },
        +      "loopLength": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "parameters": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "reason": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "setFingerprint": {
        +        "type": "string"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "status": {
        +        "type": "string"
        +      },
        +      "supported": {
        +        "type": "boolean"
        +      },
        +      "tempo": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_looper_performance_context2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "clipId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "controls": {
        +        "type": "object"
        +      },
        +      "device": {
        +        "type": "object"
        +      },
        +      "deviceId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "identityToken": {
        +        "type": "string"
        +      },
        +      "parameters": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "reason": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "setFingerprint": {
        +        "type": "string"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "status": {
        +        "type": "string"
        +      },
        +      "supported": {
        +        "type": "boolean"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_midi_capture_context2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "canCapture": {
        +        "type": "boolean"
        +      },
        +      "captureSupported": {
        +        "type": "boolean"
        +      },
        +      "clipId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "deviceId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "identityToken": {
        +        "type": "string"
        +      },
        +      "reason": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "setFingerprint": {
        +        "type": "string"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "status": {
        +        "type": "string"
        +      },
        +      "supported": {
        +        "type": "boolean"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      },
        +      "tracks": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "transport": {
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "stateVersion"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_midi_clip_notes3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "clipId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "deviceId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "lengthBeats": {
        +        "type": "number"
        +      },
        +      "notes": {
        +        "type": "array"
        +      },
        +      "setFingerprint": {
        +        "type": "string"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "notes"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_midi_clip_notes_extended3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "clipId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "deviceId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "lengthBeats": {
        +        "type": "number"
        +      },
        +      "location": {
        +        "type": "string"
        +      },
        +      "notes": {
        +        "items": {
        +          "properties": {
        +            "duration": {
        +              "type": "number"
        +            },
        +            "mute": {
        +              "type": "boolean"
        +            },
        +            "noteId": {
        +              "type": "integer"
        +            },
        +            "pitch": {
        +              "maximum": 127,
        +              "minimum": 0,
        +              "type": "integer"
        +            },
        +            "probability": {
        +              "maximum": 1,
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "releaseVelocity": {
        +              "maximum": 127,
        +              "minimum": 0,
        +              "type": "integer"
        +            },
        +            "start": {
        +              "type": "number"
        +            },
        +            "velocity": {
        +              "maximum": 127,
        +              "minimum": 0,
        +              "type": "integer"
        +            },
        +            "velocityDeviation": {
        +              "type": "integer"
        +            }
        +          },
        +          "required": [
        +            "noteId",
        +            "pitch",
        +            "start",
        +            "duration",
        +            "velocity",
        +            "mute"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "setFingerprint": {
        +        "type": "string"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "timeline": {
        +        "anyOf": [
        +          {
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "notes"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_midi_note_insertion_context3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "clipId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "clipTiming": {
        +        "type": "object"
        +      },
        +      "deviceId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "editContext": {
        +        "type": "object"
        +      },
        +      "identityToken": {
        +        "type": "string"
        +      },
        +      "insertSupported": {
        +        "type": "boolean"
        +      },
        +      "notes": {
        +        "items": {
        +          "properties": {
        +            "duration": {
        +              "type": "number"
        +            },
        +            "mute": {
        +              "type": "boolean"
        +            },
        +            "noteId": {
        +              "type": "integer"
        +            },
        +            "pitch": {
        +              "maximum": 127,
        +              "minimum": 0,
        +              "type": "integer"
        +            },
        +            "probability": {
        +              "maximum": 1,
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "releaseVelocity": {
        +              "maximum": 127,
        +              "minimum": 0,
        +              "type": "integer"
        +            },
        +            "start": {
        +              "type": "number"
        +            },
        +            "velocity": {
        +              "maximum": 127,
        +              "minimum": 0,
        +              "type": "integer"
        +            },
        +            "velocityDeviation": {
        +              "type": "integer"
        +            }
        +          },
        +          "required": [
        +            "noteId",
        +            "pitch",
        +            "start",
        +            "duration",
        +            "velocity",
        +            "mute"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "reason": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "setFingerprint": {
        +        "type": "string"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "status": {
        +        "type": "string"
        +      },
        +      "supported": {
        +        "type": "boolean"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_midi_note_removal_context3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "clipId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "clipTiming": {
        +        "type": "object"
        +      },
        +      "deviceId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "editContext": {
        +        "type": "object"
        +      },
        +      "identityToken": {
        +        "type": "string"
        +      },
        +      "notes": {
        +        "items": {
        +          "properties": {
        +            "duration": {
        +              "type": "number"
        +            },
        +            "mute": {
        +              "type": "boolean"
        +            },
        +            "noteId": {
        +              "type": "integer"
        +            },
        +            "pitch": {
        +              "maximum": 127,
        +              "minimum": 0,
        +              "type": "integer"
        +            },
        +            "probability": {
        +              "maximum": 1,
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "releaseVelocity": {
        +              "maximum": 127,
        +              "minimum": 0,
        +              "type": "integer"
        +            },
        +            "start": {
        +              "type": "number"
        +            },
        +            "velocity": {
        +              "maximum": 127,
        +              "minimum": 0,
        +              "type": "integer"
        +            },
        +            "velocityDeviation": {
        +              "type": "integer"
        +            }
        +          },
        +          "required": [
        +            "noteId",
        +            "pitch",
        +            "start",
        +            "duration",
        +            "velocity",
        +            "mute"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "reason": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "removeSupported": {
        +        "type": "boolean"
        +      },
        +      "setFingerprint": {
        +        "type": "string"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "status": {
        +        "type": "string"
        +      },
        +      "supported": {
        +        "type": "boolean"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_midi_note_selection3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "clipId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "deviceId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "editContext": {
        +        "type": "object"
        +      },
        +      "identityToken": {
        +        "type": "string"
        +      },
        +      "noteIds": {
        +        "items": {
        +          "type": "integer"
        +        },
        +        "type": "array"
        +      },
        +      "notes": {
        +        "items": {
        +          "properties": {
        +            "duration": {
        +              "type": "number"
        +            },
        +            "mute": {
        +              "type": "boolean"
        +            },
        +            "noteId": {
        +              "type": "integer"
        +            },
        +            "pitch": {
        +              "maximum": 127,
        +              "minimum": 0,
        +              "type": "integer"
        +            },
        +            "probability": {
        +              "maximum": 1,
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "releaseVelocity": {
        +              "maximum": 127,
        +              "minimum": 0,
        +              "type": "integer"
        +            },
        +            "start": {
        +              "type": "number"
        +            },
        +            "velocity": {
        +              "maximum": 127,
        +              "minimum": 0,
        +              "type": "integer"
        +            },
        +            "velocityDeviation": {
        +              "type": "integer"
        +            }
        +          },
        +          "required": [
        +            "noteId",
        +            "pitch",
        +            "start",
        +            "duration",
        +            "velocity",
        +            "mute"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "reason": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "selectionToken": {
        +        "type": "string"
        +      },
        +      "setFingerprint": {
        +        "type": "string"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "status": {
        +        "type": "string"
        +      },
        +      "supported": {
        +        "type": "boolean"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_mixer_panning_context2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "clipId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "deviceId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "identityToken": {
        +        "type": "string"
        +      },
        +      "mode": {
        +        "type": "object"
        +      },
        +      "owner": {
        +        "type": "object"
        +      },
        +      "reason": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "setFingerprint": {
        +        "type": "string"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "status": {
        +        "type": "string"
        +      },
        +      "supported": {
        +        "type": "boolean"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      },
        +      "transport": {
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "stateVersion"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_nks_generation_job2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "events": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "job": {
        +        "anyOf": [
        +          {
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      }
        +    },
        +    "required": [
        +      "job",
        +      "events"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_nks_generation_status2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "eligible": {
        +        "type": "integer"
        +      },
        +      "fingerprint": {
        +        "type": "string"
        +      },
        +      "initialized": {
        +        "type": "boolean"
        +      },
        +      "jobs": {
        +        "type": "object"
        +      },
        +      "productSlug": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "productSlug",
        +      "eligible",
        +      "fingerprint",
        +      "initialized",
        +      "jobs"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_parameter_automation_context2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "clipId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "controls": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "deviceId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "deviceName": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "frozen": {
        +        "anyOf": [
        +          {
        +            "type": "boolean"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "identityToken": {
        +        "type": "string"
        +      },
        +      "parameterId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "reason": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "setFingerprint": {
        +        "type": "string"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "status": {
        +        "type": "string"
        +      },
        +      "supported": {
        +        "type": "boolean"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      },
        +      "transport": {
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "stateVersion"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_plugin_integration_context2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "device": {
        +        "type": "object"
        +      },
        +      "installedVariants": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "parameterExposure": {
        +        "type": "object"
        +      },
        +      "profile": {
        +        "type": "object"
        +      },
        +      "recommendedVariant": {
        +        "anyOf": [
        +          {
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "trackId",
        +      "device",
        +      "profile",
        +      "installedVariants",
        +      "recommendedVariant",
        +      "parameterExposure"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_preset2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "preset": {
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "preset"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_preset_metadata2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "metadata": {
        +        "properties": {
        +          "favorite": {
        +            "type": "boolean"
        +          },
        +          "revision": {
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "tags": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "favorite",
        +          "tags",
        +          "revision"
        +        ],
        +        "type": "object"
        +      },
        +      "presetId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "presetId",
        +      "metadata"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_producer_chain_blueprint4 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "blueprint": {
        +        "properties": {
        +          "id": {
        +            "type": "string"
        +          },
        +          "summary": {
        +            "type": "string"
        +          },
        +          "topology": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "topology",
        +          "summary"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "blueprint"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
      • removedOutput schema / properties
        Removed value: -{
        -  "blueprint": {
        -    "additionalProperties": true,
        -    "properties": {
        -      "id": {
        -        "type": "string"
        -      },
        -      "summary": {
        -        "type": "string"
        -      },
        -      "topology": {
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "id",
        -      "topology",
        -      "summary"
        -    ],
        -    "type": "object"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "blueprint"
        -]
    • Changedget_producer_workflow2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "properties": {
        +          "workflows": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "workflows"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "description": {
        +            "type": "string"
        +          },
        +          "messages": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "workflow": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "workflow",
        +          "description",
        +          "messages"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_production_context2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "contextRef": {
        +        "pattern": "^[a-f0-9]{64}$",
        +        "type": "string"
        +      },
        +      "setFingerprint": {
        +        "type": "string"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "summary": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "setFingerprint",
        +      "contextRef",
        +      "summary"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_production_session2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "audibleQualityVerified": {
        +            "const": false
        +          },
        +          "execution": {
        +            "properties": {
        +              "counts": {
        +                "additionalProperties": {
        +                  "maximum": 16,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "type": "object"
        +              },
        +              "operations": {
        +                "items": {
        +                  "properties": {
        +                    "attemptRef": {
        +                      "pattern": "^[a-f0-9]{64}$",
        +                      "type": "string"
        +                    },
        +                    "error": {
        +                      "maxLength": 300,
        +                      "type": "string"
        +                    },
        +                    "index": {
        +                      "maximum": 15,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    },
        +                    "nativeStatus": {
        +                      "enum": [
        +                        "applied",
        +                        "outcome_unknown",
        +                        "postconditions_failed",
        +                        "pending_postconditions",
        +                        "pending_user_action"
        +                      ]
        +                    },
        +                    "receiptId": {
        +                      "pattern": "^[a-f0-9]{64}$",
        +                      "type": "string"
        +                    },
        +                    "resultRef": {
        +                      "pattern": "^[a-f0-9]{64}$",
        +                      "type": "string"
        +                    },
        +                    "status": {
        +                      "enum": [
        +                        "not_attempted",
        +                        "execution_pending",
        +                        "applied",
        +                        "rejected",
        +                        "outcome_unknown",
        +                        "postconditions_failed",
        +                        "pending_postconditions",
        +                        "pending_user_action",
        +                        "unrecorded"
        +                      ]
        +                    },
        +                    "tool": {
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "index",
        +                    "tool",
        +                    "status"
        +                  ],
        +                  "type": "object"
        +                },
        +                "maxItems": 16,
        +                "type": "array"
        +              },
        +              "taskId": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "taskId",
        +              "operations",
        +              "counts"
        +            ],
        +            "type": "object"
        +          },
        +          "phase": {
        +            "enum": [
        +              "inspect",
        +              "choose",
        +              "propose",
        +              "proposing",
        +              "apply",
        +              "execution_pending",
        +              "needs_inspection",
        +              "audition",
        +              "evaluate",
        +              "complete"
        +            ]
        +          },
        +          "recoveryRef": {
        +            "pattern": "^[a-f0-9]{64}$",
        +            "type": "string"
        +          },
        +          "recoveryRequired": {
        +            "type": "boolean"
        +          },
        +          "revision": {
        +            "minimum": 1,
        +            "type": "integer"
        +          },
        +          "sessionId": {
        +            "type": "string"
        +          },
        +          "sessionRef": {
        +            "pattern": "^[a-f0-9]{64}$",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "sessionId",
        +          "sessionRef",
        +          "revision",
        +          "phase",
        +          "audibleQualityVerified"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "nextOffset": {
        +            "anyOf": [
        +              {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "sessions": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "sessions",
        +          "nextOffset"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_project_media2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "completePortabilityVerified": {
        +        "const": false
        +      },
        +      "deviceDependencies": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "file": {
        +        "type": "object"
        +      },
        +      "native": {
        +        "type": "object"
        +      },
        +      "project": {
        +        "type": "object"
        +      },
        +      "samples": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "savedSnapshotMatchesLive": {
        +        "type": "boolean"
        +      },
        +      "setFingerprint": {
        +        "type": "string"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "setFingerprint",
        +      "file",
        +      "project",
        +      "samples",
        +      "deviceDependencies",
        +      "savedSnapshotMatchesLive",
        +      "completePortabilityVerified",
        +      "native"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_rack_performance_context2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "chains": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "clipId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "device": {
        +        "type": "object"
        +      },
        +      "deviceId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "identityToken": {
        +        "type": "string"
        +      },
        +      "macros": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "reason": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "setFingerprint": {
        +        "type": "string"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "status": {
        +        "type": "string"
        +      },
        +      "supported": {
        +        "type": "boolean"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      },
        +      "variations": {
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "stateVersion"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_return_routing2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "clipId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "deviceId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "identityToken": {
        +        "type": "string"
        +      },
        +      "input": {
        +        "properties": {
        +          "availableChannels": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "availableTypes": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "channel": {
        +            "anyOf": [
        +              {
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "type": {
        +            "anyOf": [
        +              {
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [],
        +        "type": "object"
        +      },
        +      "output": {
        +        "properties": {
        +          "availableChannels": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "availableTypes": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "channel": {
        +            "anyOf": [
        +              {
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "type": {
        +            "anyOf": [
        +              {
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [],
        +        "type": "object"
        +      },
        +      "reason": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "returnTrackId": {
        +        "type": "string"
        +      },
        +      "setFingerprint": {
        +        "type": "string"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "status": {
        +        "type": "string"
        +      },
        +      "supported": {
        +        "type": "boolean"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_scene_launch_context2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "clipId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "deviceId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "identityToken": {
        +        "type": "string"
        +      },
        +      "reason": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "sceneId": {
        +        "type": "string"
        +      },
        +      "scenes": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "setFingerprint": {
        +        "type": "string"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "status": {
        +        "type": "string"
        +      },
        +      "supported": {
        +        "type": "boolean"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      },
        +      "tracks": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "transport": {
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "stateVersion"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_selected_parameter_context2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "automationContext": {
        +        "anyOf": [
        +          {
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "clipId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "control": {
        +        "anyOf": [
        +          {
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "deviceId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "editContext": {
        +        "anyOf": [
        +          {
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "identityToken": {
        +        "type": "string"
        +      },
        +      "reason": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "selectionToken": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "setFingerprint": {
        +        "type": "string"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "status": {
        +        "type": "string"
        +      },
        +      "supported": {
        +        "type": "boolean"
        +      },
        +      "target": {
        +        "anyOf": [
        +          {
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_selection_context2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "clipId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "detailClip": {
        +        "anyOf": [
        +          {
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "device": {
        +        "anyOf": [
        +          {
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "deviceId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "highlightedClipSlot": {
        +        "anyOf": [
        +          {
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "identityToken": {
        +        "type": "string"
        +      },
        +      "reason": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "scene": {
        +        "anyOf": [
        +          {
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "setFingerprint": {
        +        "type": "string"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "status": {
        +        "type": "string"
        +      },
        +      "supported": {
        +        "type": "boolean"
        +      },
        +      "track": {
        +        "anyOf": [
        +          {
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_session_arrangement_recording2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "cleanupErrors": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "clipId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "clips": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "deviceId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "identityToken": {
        +        "type": "string"
        +      },
        +      "reason": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "recordingId": {
        +        "type": "string"
        +      },
        +      "recordings": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "setFingerprint": {
        +        "type": "string"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "status": {
        +        "type": "string"
        +      },
        +      "supported": {
        +        "type": "boolean"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_session_clip_hold2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "cleanupErrors": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "clipId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "deviceId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "durationSeconds": {
        +        "type": "number"
        +      },
        +      "elapsedSeconds": {
        +        "type": "number"
        +      },
        +      "holdId": {
        +        "type": "string"
        +      },
        +      "holds": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "identityToken": {
        +        "type": "string"
        +      },
        +      "isPlaying": {
        +        "type": "boolean"
        +      },
        +      "isTriggered": {
        +        "type": "boolean"
        +      },
        +      "mode": {
        +        "type": "string"
        +      },
        +      "pressCallReturned": {
        +        "type": "boolean"
        +      },
        +      "reason": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "releaseCallReturned": {
        +        "type": "boolean"
        +      },
        +      "releaseRequested": {
        +        "type": "boolean"
        +      },
        +      "setFingerprint": {
        +        "type": "string"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "status": {
        +        "type": "string"
        +      },
        +      "supported": {
        +        "type": "boolean"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_session_midi_overdub_context3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "arrangementOverdub": {
        +        "type": "boolean"
        +      },
        +      "baseline": {
        +        "anyOf": [
        +          {
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "clipId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "deviceId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "identityToken": {
        +        "type": "string"
        +      },
        +      "isOverdubbing": {
        +        "type": "boolean"
        +      },
        +      "isPlaying": {
        +        "type": "boolean"
        +      },
        +      "isRecording": {
        +        "type": "boolean"
        +      },
        +      "legacyOverdub": {
        +        "type": "boolean"
        +      },
        +      "midiRouting": {
        +        "type": "object"
        +      },
        +      "reason": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "routing": {
        +        "type": "object"
        +      },
        +      "sessionRecord": {
        +        "type": "boolean"
        +      },
        +      "setFingerprint": {
        +        "type": "string"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "status": {
        +        "type": "string"
        +      },
        +      "supported": {
        +        "type": "boolean"
        +      },
        +      "tempo": {
        +        "type": "number"
        +      },
        +      "timing": {
        +        "type": "object"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      },
        +      "tracks": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "stateVersion"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_session_orientation2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "focus": {
        +        "type": "object"
        +      },
        +      "live": {
        +        "type": "object"
        +      },
        +      "musicalContext": {
        +        "type": "object"
        +      },
        +      "recording": {
        +        "type": "object"
        +      },
        +      "selection": {
        +        "type": "object"
        +      },
        +      "setFingerprint": {
        +        "type": "string"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "tracks": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "setFingerprint",
        +      "live",
        +      "tracks"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_set_mixer2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "master": {
        +        "properties": {
        +          "mute": {
        +            "type": "boolean"
        +          },
        +          "pan": {
        +            "properties": {
        +              "automationState": {
        +                "type": "object"
        +              },
        +              "decibels": {
        +                "anyOf": [
        +                  {
        +                    "type": "number"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ]
        +              },
        +              "displayValue": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ]
        +              },
        +              "enabled": {
        +                "type": "boolean"
        +              },
        +              "max": {
        +                "type": "number"
        +              },
        +              "min": {
        +                "type": "number"
        +              },
        +              "silent": {
        +                "type": "boolean"
        +              },
        +              "value": {
        +                "type": "number"
        +              }
        +            },
        +            "required": [
        +              "value"
        +            ],
        +            "type": "object"
        +          },
        +          "sends": {
        +            "items": {
        +              "properties": {
        +                "decibels": {
        +                  "anyOf": [
        +                    {
        +                      "type": "number"
        +                    },
        +                    {
        +                      "type": "null"
        +                    }
        +                  ]
        +                },
        +                "id": {
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "type": "string"
        +                },
        +                "returnTrackId": {
        +                  "type": "string"
        +                },
        +                "silent": {
        +                  "type": "boolean"
        +                },
        +                "value": {
        +                  "type": "number"
        +                }
        +              },
        +              "required": [
        +                "id",
        +                "value"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "solo": {
        +            "type": "boolean"
        +          },
        +          "trackId": {
        +            "type": "string"
        +          },
        +          "volume": {
        +            "properties": {
        +              "automationState": {
        +                "type": "object"
        +              },
        +              "decibels": {
        +                "anyOf": [
        +                  {
        +                    "type": "number"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ]
        +              },
        +              "displayValue": {
        +                "anyOf": [
        +                  {
        +                    "type": "string"
        +                  },
        +                  {
        +                    "type": "null"
        +                  }
        +                ]
        +              },
        +              "enabled": {
        +                "type": "boolean"
        +              },
        +              "max": {
        +                "type": "number"
        +              },
        +              "min": {
        +                "type": "number"
        +              },
        +              "silent": {
        +                "type": "boolean"
        +              },
        +              "value": {
        +                "type": "number"
        +              }
        +            },
        +            "required": [
        +              "value"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [],
        +        "type": "object"
        +      },
        +      "returns": {
        +        "items": {
        +          "properties": {
        +            "id": {
        +              "type": "string"
        +            },
        +            "mute": {
        +              "type": "boolean"
        +            },
        +            "pan": {
        +              "properties": {
        +                "automationState": {
        +                  "type": "object"
        +                },
        +                "decibels": {
        +                  "anyOf": [
        +                    {
        +                      "type": "number"
        +                    },
        +                    {
        +                      "type": "null"
        +                    }
        +                  ]
        +                },
        +                "displayValue": {
        +                  "anyOf": [
        +                    {
        +                      "type": "string"
        +                    },
        +                    {
        +                      "type": "null"
        +                    }
        +                  ]
        +                },
        +                "enabled": {
        +                  "type": "boolean"
        +                },
        +                "max": {
        +                  "type": "number"
        +                },
        +                "min": {
        +                  "type": "number"
        +                },
        +                "silent": {
        +                  "type": "boolean"
        +                },
        +                "value": {
        +                  "type": "number"
        +                }
        +              },
        +              "required": [
        +                "value"
        +              ],
        +              "type": "object"
        +            },
        +            "sends": {
        +              "items": {
        +                "properties": {
        +                  "decibels": {
        +                    "anyOf": [
        +                      {
        +                        "type": "number"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "id": {
        +                    "type": "string"
        +                  },
        +                  "name": {
        +                    "type": "string"
        +                  },
        +                  "returnTrackId": {
        +                    "type": "string"
        +                  },
        +                  "silent": {
        +                    "type": "boolean"
        +                  },
        +                  "value": {
        +                    "type": "number"
        +                  }
        +                },
        +                "required": [
        +                  "id",
        +                  "value"
        +                ],
        +                "type": "object"
        +              },
        +              "type": "array"
        +            },
        +            "solo": {
        +              "type": "boolean"
        +            },
        +            "trackId": {
        +              "type": "string"
        +            },
        +            "volume": {
        +              "properties": {
        +                "automationState": {
        +                  "type": "object"
        +                },
        +                "decibels": {
        +                  "anyOf": [
        +                    {
        +                      "type": "number"
        +                    },
        +                    {
        +                      "type": "null"
        +                    }
        +                  ]
        +                },
        +                "displayValue": {
        +                  "anyOf": [
        +                    {
        +                      "type": "string"
        +                    },
        +                    {
        +                      "type": "null"
        +                    }
        +                  ]
        +                },
        +                "enabled": {
        +                  "type": "boolean"
        +                },
        +                "max": {
        +                  "type": "number"
        +                },
        +                "min": {
        +                  "type": "number"
        +                },
        +                "silent": {
        +                  "type": "boolean"
        +                },
        +                "value": {
        +                  "type": "number"
        +                }
        +              },
        +              "required": [
        +                "value"
        +              ],
        +              "type": "object"
        +            }
        +          },
        +          "required": [],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "master",
        +      "returns"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_simpler_sample_state2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "clipId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "deviceId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "identityToken": {
        +        "type": "string"
        +      },
        +      "parameters": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "reason": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "recording": {
        +        "type": "object"
        +      },
        +      "sample": {
        +        "anyOf": [
        +          {
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "setFingerprint": {
        +        "type": "string"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "status": {
        +        "type": "string"
        +      },
        +      "supported": {
        +        "type": "boolean"
        +      },
        +      "track": {
        +        "type": "object"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_song_grid_reference2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "barLengthBeats": {
        +        "type": "number"
        +      },
        +      "conventions": {
        +        "anyOf": [
        +          {
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "grids": {
        +        "type": "object"
        +      },
        +      "setFingerprint": {
        +        "type": "string"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "tempoBpm": {
        +        "type": "number"
        +      },
        +      "tempoInterpretation": {
        +        "type": "object"
        +      },
        +      "timeSignature": {
        +        "type": "object"
        +      },
        +      "toolReferences": {
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "setFingerprint",
        +      "timeSignature",
        +      "tempoBpm",
        +      "barLengthBeats",
        +      "grids",
        +      "conventions",
        +      "tempoInterpretation",
        +      "toolReferences"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_song_musical_context2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "groove": {
        +        "type": "object"
        +      },
        +      "key": {
        +        "type": "object"
        +      },
        +      "loop": {
        +        "type": "object"
        +      },
        +      "quantization": {
        +        "type": "object"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "timeSignature": {
        +        "properties": {
        +          "denominator": {
        +            "type": "integer"
        +          },
        +          "numerator": {
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "numerator",
        +          "denominator"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "timeSignature"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_take_lane_audition_context2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "clipId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "deviceId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "identityToken": {
        +        "type": "string"
        +      },
        +      "lanes": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "reason": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "setFingerprint": {
        +        "type": "string"
        +      },
        +      "source": {
        +        "type": "object"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "status": {
        +        "type": "string"
        +      },
        +      "supported": {
        +        "type": "boolean"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      },
        +      "ui": {
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "stateVersion"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_take_lane_context2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "clipId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "deviceId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "identityToken": {
        +        "type": "string"
        +      },
        +      "lanes": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "reason": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "setFingerprint": {
        +        "type": "string"
        +      },
        +      "source": {
        +        "type": "object"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "status": {
        +        "type": "string"
        +      },
        +      "supported": {
        +        "type": "boolean"
        +      },
        +      "takeLanes": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_track_arm_context2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "armStates": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "clipId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "deviceId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "identityToken": {
        +        "type": "string"
        +      },
        +      "inputStates": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "readyToChange": {
        +        "type": "boolean"
        +      },
        +      "reason": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "reasons": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "setFingerprint": {
        +        "type": "string"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "status": {
        +        "type": "string"
        +      },
        +      "supported": {
        +        "type": "boolean"
        +      },
        +      "target": {
        +        "type": "object"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      },
        +      "transport": {
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "stateVersion"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_track_freeze_state2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "freeze": {
        +        "properties": {
        +          "frozen": {
        +            "anyOf": [
        +              {
        +                "type": "boolean"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "supported": {
        +            "type": "boolean"
        +          }
        +        },
        +        "required": [
        +          "supported"
        +        ],
        +        "type": "object"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "trackId",
        +      "freeze"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_track_grouping_status2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "groupVerified": {
        +        "type": "boolean"
        +      },
        +      "groupingId": {
        +        "type": "string"
        +      },
        +      "inspectionRequired": {
        +        "type": "boolean"
        +      },
        +      "members": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "status": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "groupingId",
        +      "status",
        +      "members",
        +      "groupVerified",
        +      "inspectionRequired"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_track_midi_routing2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "clipId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "deviceId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "identityToken": {
        +        "type": "string"
        +      },
        +      "input": {
        +        "properties": {
        +          "availableChannels": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "availableTypes": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "channel": {
        +            "anyOf": [
        +              {
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "type": {
        +            "anyOf": [
        +              {
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [],
        +        "type": "object"
        +      },
        +      "monitoring": {
        +        "anyOf": [
        +          {
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "output": {
        +        "properties": {
        +          "availableChannels": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "availableTypes": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "channel": {
        +            "anyOf": [
        +              {
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "type": {
        +            "anyOf": [
        +              {
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [],
        +        "type": "object"
        +      },
        +      "reason": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "setFingerprint": {
        +        "type": "string"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "status": {
        +        "type": "string"
        +      },
        +      "supported": {
        +        "type": "boolean"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_track_mixer2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "mute": {
        +        "type": "boolean"
        +      },
        +      "pan": {
        +        "properties": {
        +          "automationState": {
        +            "type": "object"
        +          },
        +          "decibels": {
        +            "anyOf": [
        +              {
        +                "type": "number"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "displayValue": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "enabled": {
        +            "type": "boolean"
        +          },
        +          "max": {
        +            "type": "number"
        +          },
        +          "min": {
        +            "type": "number"
        +          },
        +          "silent": {
        +            "type": "boolean"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "value"
        +        ],
        +        "type": "object"
        +      },
        +      "sends": {
        +        "items": {
        +          "properties": {
        +            "decibels": {
        +              "anyOf": [
        +                {
        +                  "type": "number"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "id": {
        +              "type": "string"
        +            },
        +            "name": {
        +              "type": "string"
        +            },
        +            "returnTrackId": {
        +              "type": "string"
        +            },
        +            "silent": {
        +              "type": "boolean"
        +            },
        +            "value": {
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "value"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "solo": {
        +        "type": "boolean"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      },
        +      "volume": {
        +        "properties": {
        +          "automationState": {
        +            "type": "object"
        +          },
        +          "decibels": {
        +            "anyOf": [
        +              {
        +                "type": "number"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "displayValue": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "enabled": {
        +            "type": "boolean"
        +          },
        +          "max": {
        +            "type": "number"
        +          },
        +          "min": {
        +            "type": "number"
        +          },
        +          "silent": {
        +            "type": "boolean"
        +          },
        +          "value": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "value"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "trackId",
        +      "volume"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_track_routing2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "input": {
        +        "properties": {
        +          "availableChannels": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "availableTypes": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "channel": {
        +            "anyOf": [
        +              {
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "type": {
        +            "anyOf": [
        +              {
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [],
        +        "type": "object"
        +      },
        +      "monitoring": {
        +        "anyOf": [
        +          {
        +            "type": "object"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "output": {
        +        "properties": {
        +          "availableChannels": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "availableTypes": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "channel": {
        +            "anyOf": [
        +              {
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "type": {
        +            "anyOf": [
        +              {
        +                "type": "object"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [],
        +        "type": "object"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_track_signal_activity2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "clipId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "controls": {
        +        "type": "object"
        +      },
        +      "deviceId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "identityToken": {
        +        "type": "string"
        +      },
        +      "meters": {
        +        "type": "object"
        +      },
        +      "reason": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "setFingerprint": {
        +        "type": "string"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "status": {
        +        "type": "string"
        +      },
        +      "supported": {
        +        "type": "boolean"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      },
        +      "tracks": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "stateVersion"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_track_ungrouping_status2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "inspectionRequired": {
        +        "type": "boolean"
        +      },
        +      "members": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "status": {
        +        "type": "string"
        +      },
        +      "ungroupVerified": {
        +        "type": "boolean"
        +      },
        +      "ungroupingId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "ungroupingId",
        +      "status",
        +      "members",
        +      "ungroupVerified",
        +      "inspectionRequired"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_transport_context2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "clipId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "currentSongTime": {
        +        "type": "number"
        +      },
        +      "deviceId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "identityToken": {
        +        "type": "string"
        +      },
        +      "isPlaying": {
        +        "type": "boolean"
        +      },
        +      "isRecording": {
        +        "type": "boolean"
        +      },
        +      "loop": {
        +        "type": "object"
        +      },
        +      "reason": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "setFingerprint": {
        +        "type": "string"
        +      },
        +      "signature": {
        +        "type": "object"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "status": {
        +        "type": "string"
        +      },
        +      "supported": {
        +        "type": "boolean"
        +      },
        +      "tempo": {
        +        "type": "number"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedget_transport_recording_context2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "arrangement": {
        +        "type": "object"
        +      },
        +      "clipId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "countingIn": {
        +        "type": "boolean"
        +      },
        +      "deviceId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "identityToken": {
        +        "type": "string"
        +      },
        +      "reason": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "session": {
        +        "type": "object"
        +      },
        +      "setFingerprint": {
        +        "type": "string"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "status": {
        +        "type": "string"
        +      },
        +      "supported": {
        +        "type": "boolean"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedgroup_tracks2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedheartbeat_nks_generation_job2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "job": {
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "job"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedhold_session_clip3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedhumanize_midi_notes3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedimport_midi_file3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedinsert_midi_notes3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedinspect_clip_groove_postconditions3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "actionProvenanceVerified": {
        +        "const": false
        +      },
        +      "observed": {
        +        "type": "object"
        +      },
        +      "operation": {
        +        "type": "string"
        +      },
        +      "postconditionsObserved": {
        +        "const": true
        +      },
        +      "sourceContentChanged": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "operation",
        +      "postconditionsObserved",
        +      "actionProvenanceVerified",
        +      "sourceContentChanged",
        +      "observed"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedinspect_producer_bus2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "busChain": {
        +        "type": "object"
        +      },
        +      "busTrackId": {
        +        "type": "string"
        +      },
        +      "children": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "limitation": {
        +        "type": "string"
        +      },
        +      "matchesBlueprint": {
        +        "type": "boolean"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "busTrackId",
        +      "busChain",
        +      "children",
        +      "matchesBlueprint",
        +      "limitation"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedinspect_producer_chain2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      },
        +      "verification": {
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "trackId",
        +      "verification"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedinspect_producer_return_bus2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "busChain": {
        +        "type": "object"
        +      },
        +      "children": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "limitation": {
        +        "type": "string"
        +      },
        +      "matchesBlueprint": {
        +        "type": "boolean"
        +      },
        +      "returnTrackId": {
        +        "type": "string"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "returnTrackId",
        +      "busChain",
        +      "children",
        +      "matchesBlueprint",
        +      "limitation"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedjump_to_arrangement_cue_point2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedlaunch_clip3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedlaunch_scene2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedlist_arrangement_clips2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "clips": {
        +        "items": {
        +          "properties": {
        +            "endBeats": {
        +              "type": "number"
        +            },
        +            "id": {
        +              "type": "string"
        +            },
        +            "lengthBeats": {
        +              "type": "number"
        +            },
        +            "name": {
        +              "type": "string"
        +            },
        +            "startBeats": {
        +              "type": "number"
        +            },
        +            "type": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "name"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "clips"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedlist_arrangement_cue_points2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "cuePoints": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "cuePoints"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedlist_browser_roots2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "roots": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "roots"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedlist_clips2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "clips": {
        +        "items": {
        +          "properties": {
        +            "durationUnit": {
        +              "anyOf": [
        +                {
        +                  "type": "string"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "hasClip": {
        +              "type": "boolean"
        +            },
        +            "id": {
        +              "type": "string"
        +            },
        +            "isPlaying": {
        +              "type": "boolean"
        +            },
        +            "isRecording": {
        +              "type": "boolean"
        +            },
        +            "isTriggered": {
        +              "type": "boolean"
        +            },
        +            "lengthBeats": {
        +              "anyOf": [
        +                {
        +                  "type": "number"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "lengthSeconds": {
        +              "anyOf": [
        +                {
        +                  "type": "number"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "name": {
        +              "anyOf": [
        +                {
        +                  "type": "string"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "name"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "clips"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedlist_device_parameters2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "clipId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "deviceId": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "parameters": {
        +        "items": {
        +          "properties": {
        +            "displayValue": {
        +              "anyOf": [
        +                {
        +                  "type": "string"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "enabled": {
        +              "type": "boolean"
        +            },
        +            "id": {
        +              "type": "string"
        +            },
        +            "max": {
        +              "type": "number"
        +            },
        +            "min": {
        +              "type": "number"
        +            },
        +            "name": {
        +              "type": "string"
        +            },
        +            "quantized": {
        +              "type": "boolean"
        +            },
        +            "value": {
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "name",
        +            "value"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "setFingerprint": {
        +        "type": "string"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "parameters"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedlist_devices2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "devices": {
        +        "items": {
        +          "properties": {
        +            "className": {
        +              "type": "string"
        +            },
        +            "id": {
        +              "type": "string"
        +            },
        +            "name": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "name"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "devices"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedlist_factory_device_profiles4 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "profiles": {
        +        "items": {
        +          "properties": {
        +            "family": {
        +              "type": "string"
        +            },
        +            "id": {
        +              "type": "string"
        +            },
        +            "name": {
        +              "type": "string"
        +            },
        +            "notes": {
        +              "items": {
        +                "type": "string"
        +              },
        +              "type": "array"
        +            },
        +            "parameterRoles": {
        +              "items": {
        +                "type": "string"
        +              },
        +              "type": "array"
        +            },
        +            "type": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "name",
        +            "type",
        +            "family",
        +            "parameterRoles"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "profiles"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
      • removedOutput schema / properties
        Removed value: -{
        -  "profiles": {
        -    "items": {
        -      "additionalProperties": true,
        -      "properties": {
        -        "family": {
        -          "type": "string"
        -        },
        -        "id": {
        -          "type": "string"
        -        },
        -        "name": {
        -          "type": "string"
        -        },
        -        "notes": {
        -          "items": {
        -            "type": "string"
        -          },
        -          "type": "array"
        -        },
        -        "parameterRoles": {
        -          "items": {
        -            "type": "string"
        -          },
        -          "type": "array"
        -        },
        -        "type": {
        -          "type": "string"
        -        }
        -      },
        -      "required": [
        -        "id",
        -        "name",
        -        "type",
        -        "family",
        -        "parameterRoles"
        -      ],
        -      "type": "object"
        -    },
        -    "type": "array"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "profiles"
        -]
    • Changedlist_live_scales4 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "scales": {
        +        "items": {
        +          "properties": {
        +            "family": {
        +              "type": "string"
        +            },
        +            "intervals": {
        +              "items": {
        +                "maximum": 11,
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              "minItems": 1,
        +              "type": "array"
        +            },
        +            "name": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "name",
        +            "family",
        +            "intervals"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "scales"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
      • removedOutput schema / properties
        Removed value: -{
        -  "scales": {
        -    "items": {
        -      "additionalProperties": true,
        -      "properties": {
        -        "family": {
        -          "type": "string"
        -        },
        -        "intervals": {
        -          "items": {
        -            "maximum": 11,
        -            "minimum": 0,
        -            "type": "integer"
        -          },
        -          "minItems": 1,
        -          "type": "array"
        -        },
        -        "name": {
        -          "type": "string"
        -        }
        -      },
        -      "required": [
        -        "name",
        -        "family",
        -        "intervals"
        -      ],
        -      "type": "object"
        -    },
        -    "type": "array"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "scales"
        -]
    • Changedlist_local_splice_roots2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "limitation": {
        +        "type": "string"
        +      },
        +      "roots": {
        +        "items": {
        +          "properties": {
        +            "available": {
        +              "type": "boolean"
        +            },
        +            "configuredPath": {
        +              "type": "string"
        +            },
        +            "rootPath": {
        +              "anyOf": [
        +                {
        +                  "type": "string"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            }
        +          },
        +          "required": [
        +            "configuredPath",
        +            "rootPath",
        +            "available"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "scope": {
        +        "const": "configured_local_directories"
        +      }
        +    },
        +    "required": [
        +      "roots",
        +      "scope",
        +      "limitation"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedlist_producer_chain_blueprints4 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "blueprints": {
        +        "items": {
        +          "properties": {
        +            "id": {
        +              "type": "string"
        +            },
        +            "summary": {
        +              "type": "string"
        +            },
        +            "topology": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "topology",
        +            "summary"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "blueprints"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
      • removedOutput schema / properties
        Removed value: -{
        -  "blueprints": {
        -    "items": {
        -      "additionalProperties": true,
        -      "properties": {
        -        "id": {
        -          "type": "string"
        -        },
        -        "summary": {
        -          "type": "string"
        -        },
        -        "topology": {
        -          "type": "string"
        -        }
        -      },
        -      "required": [
        -        "id",
        -        "topology",
        -        "summary"
        -      ],
        -      "type": "object"
        -    },
        -    "type": "array"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "blueprints"
        -]
    • Changedlist_saved_snapshots2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "kind": {
        +        "type": "string"
        +      },
        +      "names": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "names"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedlist_scenes2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "scenes": {
        +        "items": {
        +          "properties": {
        +            "id": {
        +              "type": "string"
        +            },
        +            "name": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "name"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "scenes"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedlist_tracks2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "tracks": {
        +        "items": {
        +          "properties": {
        +            "armed": {
        +              "type": "boolean"
        +            },
        +            "groupTrackId": {
        +              "anyOf": [
        +                {
        +                  "type": "string"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "id": {
        +              "type": "string"
        +            },
        +            "isGroup": {
        +              "type": "boolean"
        +            },
        +            "isGrouped": {
        +              "type": "boolean"
        +            },
        +            "mute": {
        +              "type": "boolean"
        +            },
        +            "name": {
        +              "type": "string"
        +            },
        +            "pan": {
        +              "type": "number"
        +            },
        +            "solo": {
        +              "type": "boolean"
        +            },
        +            "type": {
        +              "type": "string"
        +            },
        +            "volume": {
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "name",
        +            "type"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "tracks"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedload_browser_item2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedload_device_chain_snapshot2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "name": {
        +        "type": "string"
        +      },
        +      "path": {
        +        "type": "string"
        +      },
        +      "snapshot": {
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "name",
        +      "path",
        +      "snapshot"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedload_factory_browser_item2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedload_group_system_snapshot2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "name": {
        +        "type": "string"
        +      },
        +      "path": {
        +        "type": "string"
        +      },
        +      "snapshot": {
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "name",
        +      "path",
        +      "snapshot"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedload_midi_feel_template2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "name": {
        +        "type": "string"
        +      },
        +      "path": {
        +        "type": "string"
        +      },
        +      "template": {
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "name",
        +      "path",
        +      "template"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedload_simpler_sample2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedload_track_state_snapshot2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "name": {
        +        "type": "string"
        +      },
        +      "path": {
        +        "type": "string"
        +      },
        +      "snapshot": {
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "name",
        +      "path",
        +      "snapshot"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedmap_rack_macro_to_parameter2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedmove_arrangement_clip2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedmove_audio_warp_marker3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedmove_device2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedmove_device_to_chain2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedopen_live_set2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedoverride_parameter_automation2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedpanic2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedperform_beat_repeat_fill2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedplace_session_clip_in_arrangement3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedplan_arrangement_repeat2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "atomic": {
        +        "const": false
        +      },
        +      "automationVerified": {
        +        "const": false
        +      },
        +      "boundaryClips": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "canCopy": {
        +        "type": "boolean"
        +      },
        +      "contentVerified": {
        +        "const": false
        +      },
        +      "destinationClips": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "destinationRange": {
        +        "type": "object"
        +      },
        +      "emptySource": {
        +        "type": "boolean"
        +      },
        +      "emptyTrackIds": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "periodBeats": {
        +        "type": "number"
        +      },
        +      "placements": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "plannedOverlaps": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "repeatCount": {
        +        "type": "integer"
        +      },
        +      "requiresFreshConfirmation": {
        +        "const": true
        +      },
        +      "setFingerprint": {
        +        "type": "string"
        +      },
        +      "sourceRange": {
        +        "type": "object"
        +      },
        +      "sources": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "tracks": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "setFingerprint",
        +      "atomic",
        +      "requiresFreshConfirmation",
        +      "contentVerified",
        +      "automationVerified",
        +      "canCopy",
        +      "emptySource",
        +      "sourceRange",
        +      "destinationRange",
        +      "repeatCount",
        +      "periodBeats",
        +      "tracks",
        +      "sources",
        +      "placements",
        +      "emptyTrackIds",
        +      "boundaryClips",
        +      "destinationClips",
        +      "plannedOverlaps"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedplan_audio_midi_sketch3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "audioCorrectionApplied": {
        +        "const": false
        +      },
        +      "clipId": {
        +        "type": "string"
        +      },
        +      "eligible": {
        +        "type": "boolean"
        +      },
        +      "lengthBeats": {
        +        "type": "number"
        +      },
        +      "notes": {
        +        "items": {
        +          "properties": {
        +            "duration": {
        +              "type": "number"
        +            },
        +            "pitch": {
        +              "maximum": 127,
        +              "minimum": 0,
        +              "type": "integer"
        +            },
        +            "start": {
        +              "type": "number"
        +            },
        +            "velocity": {
        +              "maximum": 127,
        +              "minimum": 0,
        +              "type": "integer"
        +            }
        +          },
        +          "required": [
        +            "pitch",
        +            "start",
        +            "duration",
        +            "velocity"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "reason": {
        +        "type": "string"
        +      },
        +      "sourceFile": {
        +        "type": "object"
        +      },
        +      "sourceWindow": {
        +        "type": "object"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "trackId",
        +      "clipId",
        +      "eligible",
        +      "reason",
        +      "lengthBeats",
        +      "notes",
        +      "sourceFile",
        +      "sourceWindow",
        +      "audioCorrectionApplied"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedplan_drum_pattern2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "gridReference": {
        +        "type": "object"
        +      },
        +      "plan": {
        +        "properties": {
        +          "changes": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "newNotes": {
        +            "items": {
        +              "properties": {
        +                "duration": {
        +                  "type": "number"
        +                },
        +                "pitch": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "start": {
        +                  "type": "number"
        +                },
        +                "velocity": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "pitch",
        +                "start",
        +                "duration",
        +                "velocity"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "noteIds": {
        +            "items": {
        +              "type": "integer"
        +            },
        +            "type": "array"
        +          },
        +          "notes": {
        +            "items": {
        +              "properties": {
        +                "duration": {
        +                  "type": "number"
        +                },
        +                "pitch": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "start": {
        +                  "type": "number"
        +                },
        +                "velocity": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "pitch",
        +                "start",
        +                "duration",
        +                "velocity"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "preservedNotes": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "required": [],
        +        "type": "object"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "gridReference",
        +      "plan"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedplan_drum_pattern_edit3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "before": {
        +        "type": "object"
        +      },
        +      "clipTiming": {
        +        "type": "object"
        +      },
        +      "edit": {
        +        "type": "object"
        +      },
        +      "gridReference": {
        +        "type": "object"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "gridReference",
        +      "clipTiming",
        +      "before",
        +      "edit"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedplan_drum_variation3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "before": {
        +        "type": "object"
        +      },
        +      "clipTiming": {
        +        "type": "object"
        +      },
        +      "gridReference": {
        +        "type": "object"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "variation": {
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "gridReference",
        +      "clipTiming",
        +      "before",
        +      "variation"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedplan_grid_envelope_pattern2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "bars": {
        +        "type": "number"
        +      },
        +      "destinationTool": {
        +        "type": "string"
        +      },
        +      "grid": {
        +        "type": "string"
        +      },
        +      "nativeParameterValidation": {
        +        "type": "string"
        +      },
        +      "points": {
        +        "items": {
        +          "properties": {
        +            "time": {
        +              "type": "number"
        +            },
        +            "value": {
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "time",
        +            "value"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "startBeat": {
        +        "type": "number"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "grid",
        +      "bars",
        +      "startBeat",
        +      "points",
        +      "destinationTool",
        +      "nativeParameterValidation"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedplan_group_system_recall2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "busTrackId": {
        +        "type": "string"
        +      },
        +      "dryRun": {
        +        "const": true
        +      },
        +      "limitation": {
        +        "type": "string"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "tracks": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "dryRun",
        +      "busTrackId",
        +      "tracks",
        +      "limitation"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedplan_midi_chord_arpeggiation3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "clipId": {
        +        "type": "string"
        +      },
        +      "context": {
        +        "type": "object"
        +      },
        +      "plan": {
        +        "properties": {
        +          "changes": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "newNotes": {
        +            "items": {
        +              "properties": {
        +                "duration": {
        +                  "type": "number"
        +                },
        +                "pitch": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "start": {
        +                  "type": "number"
        +                },
        +                "velocity": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "pitch",
        +                "start",
        +                "duration",
        +                "velocity"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "noteIds": {
        +            "items": {
        +              "type": "integer"
        +            },
        +            "type": "array"
        +          },
        +          "notes": {
        +            "items": {
        +              "properties": {
        +                "duration": {
        +                  "type": "number"
        +                },
        +                "pitch": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "start": {
        +                  "type": "number"
        +                },
        +                "velocity": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "pitch",
        +                "start",
        +                "duration",
        +                "velocity"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "preservedNotes": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "required": [],
        +        "type": "object"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "trackId",
        +      "clipId",
        +      "context",
        +      "plan"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedplan_midi_chord_doubling3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "clipId": {
        +        "type": "string"
        +      },
        +      "context": {
        +        "type": "object"
        +      },
        +      "plan": {
        +        "properties": {
        +          "changes": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "newNotes": {
        +            "items": {
        +              "properties": {
        +                "duration": {
        +                  "type": "number"
        +                },
        +                "pitch": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "start": {
        +                  "type": "number"
        +                },
        +                "velocity": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "pitch",
        +                "start",
        +                "duration",
        +                "velocity"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "noteIds": {
        +            "items": {
        +              "type": "integer"
        +            },
        +            "type": "array"
        +          },
        +          "notes": {
        +            "items": {
        +              "properties": {
        +                "duration": {
        +                  "type": "number"
        +                },
        +                "pitch": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "start": {
        +                  "type": "number"
        +                },
        +                "velocity": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "pitch",
        +                "start",
        +                "duration",
        +                "velocity"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "preservedNotes": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "required": [],
        +        "type": "object"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "trackId",
        +      "clipId",
        +      "context",
        +      "plan"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedplan_midi_chord_inversion3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "clipId": {
        +        "type": "string"
        +      },
        +      "context": {
        +        "type": "object"
        +      },
        +      "plan": {
        +        "properties": {
        +          "changes": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "newNotes": {
        +            "items": {
        +              "properties": {
        +                "duration": {
        +                  "type": "number"
        +                },
        +                "pitch": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "start": {
        +                  "type": "number"
        +                },
        +                "velocity": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "pitch",
        +                "start",
        +                "duration",
        +                "velocity"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "noteIds": {
        +            "items": {
        +              "type": "integer"
        +            },
        +            "type": "array"
        +          },
        +          "notes": {
        +            "items": {
        +              "properties": {
        +                "duration": {
        +                  "type": "number"
        +                },
        +                "pitch": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "start": {
        +                  "type": "number"
        +                },
        +                "velocity": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "pitch",
        +                "start",
        +                "duration",
        +                "velocity"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "preservedNotes": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "required": [],
        +        "type": "object"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "trackId",
        +      "clipId",
        +      "context",
        +      "plan"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedplan_midi_chord_voice_leading3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "clipId": {
        +        "type": "string"
        +      },
        +      "context": {
        +        "type": "object"
        +      },
        +      "plan": {
        +        "properties": {
        +          "changes": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "newNotes": {
        +            "items": {
        +              "properties": {
        +                "duration": {
        +                  "type": "number"
        +                },
        +                "pitch": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "start": {
        +                  "type": "number"
        +                },
        +                "velocity": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "pitch",
        +                "start",
        +                "duration",
        +                "velocity"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "noteIds": {
        +            "items": {
        +              "type": "integer"
        +            },
        +            "type": "array"
        +          },
        +          "notes": {
        +            "items": {
        +              "properties": {
        +                "duration": {
        +                  "type": "number"
        +                },
        +                "pitch": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "start": {
        +                  "type": "number"
        +                },
        +                "velocity": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "pitch",
        +                "start",
        +                "duration",
        +                "velocity"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "preservedNotes": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "required": [],
        +        "type": "object"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "trackId",
        +      "clipId",
        +      "context",
        +      "plan"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedplan_midi_diatonic_chord_quality3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "clipId": {
        +        "type": "string"
        +      },
        +      "context": {
        +        "type": "object"
        +      },
        +      "plan": {
        +        "properties": {
        +          "changes": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "newNotes": {
        +            "items": {
        +              "properties": {
        +                "duration": {
        +                  "type": "number"
        +                },
        +                "pitch": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "start": {
        +                  "type": "number"
        +                },
        +                "velocity": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "pitch",
        +                "start",
        +                "duration",
        +                "velocity"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "noteIds": {
        +            "items": {
        +              "type": "integer"
        +            },
        +            "type": "array"
        +          },
        +          "notes": {
        +            "items": {
        +              "properties": {
        +                "duration": {
        +                  "type": "number"
        +                },
        +                "pitch": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "start": {
        +                  "type": "number"
        +                },
        +                "velocity": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "pitch",
        +                "start",
        +                "duration",
        +                "velocity"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "preservedNotes": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "required": [],
        +        "type": "object"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "trackId",
        +      "clipId",
        +      "context",
        +      "plan"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedplan_midi_diatonic_harmony3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "clipId": {
        +        "type": "string"
        +      },
        +      "context": {
        +        "type": "object"
        +      },
        +      "plan": {
        +        "properties": {
        +          "changes": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "newNotes": {
        +            "items": {
        +              "properties": {
        +                "duration": {
        +                  "type": "number"
        +                },
        +                "pitch": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "start": {
        +                  "type": "number"
        +                },
        +                "velocity": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "pitch",
        +                "start",
        +                "duration",
        +                "velocity"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "noteIds": {
        +            "items": {
        +              "type": "integer"
        +            },
        +            "type": "array"
        +          },
        +          "notes": {
        +            "items": {
        +              "properties": {
        +                "duration": {
        +                  "type": "number"
        +                },
        +                "pitch": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "start": {
        +                  "type": "number"
        +                },
        +                "velocity": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "pitch",
        +                "start",
        +                "duration",
        +                "velocity"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "preservedNotes": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "required": [],
        +        "type": "object"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "trackId",
        +      "clipId",
        +      "context",
        +      "plan"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedplan_midi_diatonic_transposition3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "clipId": {
        +        "type": "string"
        +      },
        +      "context": {
        +        "type": "object"
        +      },
        +      "plan": {
        +        "properties": {
        +          "changes": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "newNotes": {
        +            "items": {
        +              "properties": {
        +                "duration": {
        +                  "type": "number"
        +                },
        +                "pitch": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "start": {
        +                  "type": "number"
        +                },
        +                "velocity": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "pitch",
        +                "start",
        +                "duration",
        +                "velocity"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "noteIds": {
        +            "items": {
        +              "type": "integer"
        +            },
        +            "type": "array"
        +          },
        +          "notes": {
        +            "items": {
        +              "properties": {
        +                "duration": {
        +                  "type": "number"
        +                },
        +                "pitch": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "start": {
        +                  "type": "number"
        +                },
        +                "velocity": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "pitch",
        +                "start",
        +                "duration",
        +                "velocity"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "preservedNotes": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "required": [],
        +        "type": "object"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "trackId",
        +      "clipId",
        +      "context",
        +      "plan"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedplan_midi_drop_voicing3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "clipId": {
        +        "type": "string"
        +      },
        +      "context": {
        +        "type": "object"
        +      },
        +      "plan": {
        +        "properties": {
        +          "changes": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "newNotes": {
        +            "items": {
        +              "properties": {
        +                "duration": {
        +                  "type": "number"
        +                },
        +                "pitch": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "start": {
        +                  "type": "number"
        +                },
        +                "velocity": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "pitch",
        +                "start",
        +                "duration",
        +                "velocity"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "noteIds": {
        +            "items": {
        +              "type": "integer"
        +            },
        +            "type": "array"
        +          },
        +          "notes": {
        +            "items": {
        +              "properties": {
        +                "duration": {
        +                  "type": "number"
        +                },
        +                "pitch": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "start": {
        +                  "type": "number"
        +                },
        +                "velocity": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "pitch",
        +                "start",
        +                "duration",
        +                "velocity"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "preservedNotes": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "required": [],
        +        "type": "object"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "trackId",
        +      "clipId",
        +      "context",
        +      "plan"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedplan_midi_gate_pattern3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "clipId": {
        +        "type": "string"
        +      },
        +      "context": {
        +        "type": "object"
        +      },
        +      "plan": {
        +        "properties": {
        +          "changes": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "newNotes": {
        +            "items": {
        +              "properties": {
        +                "duration": {
        +                  "type": "number"
        +                },
        +                "pitch": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "start": {
        +                  "type": "number"
        +                },
        +                "velocity": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "pitch",
        +                "start",
        +                "duration",
        +                "velocity"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "noteIds": {
        +            "items": {
        +              "type": "integer"
        +            },
        +            "type": "array"
        +          },
        +          "notes": {
        +            "items": {
        +              "properties": {
        +                "duration": {
        +                  "type": "number"
        +                },
        +                "pitch": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "start": {
        +                  "type": "number"
        +                },
        +                "velocity": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "pitch",
        +                "start",
        +                "duration",
        +                "velocity"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "preservedNotes": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "required": [],
        +        "type": "object"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "trackId",
        +      "clipId",
        +      "context",
        +      "plan"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedplan_midi_humanization3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "clipId": {
        +        "type": "string"
        +      },
        +      "context": {
        +        "type": "object"
        +      },
        +      "plan": {
        +        "properties": {
        +          "changes": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "newNotes": {
        +            "items": {
        +              "properties": {
        +                "duration": {
        +                  "type": "number"
        +                },
        +                "pitch": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "start": {
        +                  "type": "number"
        +                },
        +                "velocity": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "pitch",
        +                "start",
        +                "duration",
        +                "velocity"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "noteIds": {
        +            "items": {
        +              "type": "integer"
        +            },
        +            "type": "array"
        +          },
        +          "notes": {
        +            "items": {
        +              "properties": {
        +                "duration": {
        +                  "type": "number"
        +                },
        +                "pitch": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "start": {
        +                  "type": "number"
        +                },
        +                "velocity": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "pitch",
        +                "start",
        +                "duration",
        +                "velocity"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "preservedNotes": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "required": [],
        +        "type": "object"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "trackId",
        +      "clipId",
        +      "context",
        +      "plan"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedplan_midi_probability_pattern3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "clipId": {
        +        "type": "string"
        +      },
        +      "context": {
        +        "type": "object"
        +      },
        +      "plan": {
        +        "properties": {
        +          "changes": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "newNotes": {
        +            "items": {
        +              "properties": {
        +                "duration": {
        +                  "type": "number"
        +                },
        +                "pitch": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "start": {
        +                  "type": "number"
        +                },
        +                "velocity": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "pitch",
        +                "start",
        +                "duration",
        +                "velocity"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "noteIds": {
        +            "items": {
        +              "type": "integer"
        +            },
        +            "type": "array"
        +          },
        +          "notes": {
        +            "items": {
        +              "properties": {
        +                "duration": {
        +                  "type": "number"
        +                },
        +                "pitch": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "start": {
        +                  "type": "number"
        +                },
        +                "velocity": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "pitch",
        +                "start",
        +                "duration",
        +                "velocity"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "preservedNotes": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "required": [],
        +        "type": "object"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "trackId",
        +      "clipId",
        +      "context",
        +      "plan"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedplan_midi_ratchet_pattern3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "clipId": {
        +        "type": "string"
        +      },
        +      "context": {
        +        "type": "object"
        +      },
        +      "plan": {
        +        "properties": {
        +          "changes": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "newNotes": {
        +            "items": {
        +              "properties": {
        +                "duration": {
        +                  "type": "number"
        +                },
        +                "pitch": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "start": {
        +                  "type": "number"
        +                },
        +                "velocity": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "pitch",
        +                "start",
        +                "duration",
        +                "velocity"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "noteIds": {
        +            "items": {
        +              "type": "integer"
        +            },
        +            "type": "array"
        +          },
        +          "notes": {
        +            "items": {
        +              "properties": {
        +                "duration": {
        +                  "type": "number"
        +                },
        +                "pitch": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "start": {
        +                  "type": "number"
        +                },
        +                "velocity": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "pitch",
        +                "start",
        +                "duration",
        +                "velocity"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "preservedNotes": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "required": [],
        +        "type": "object"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "trackId",
        +      "clipId",
        +      "context",
        +      "plan"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedplan_midi_scale_chord_remapping3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "clipId": {
        +        "type": "string"
        +      },
        +      "context": {
        +        "type": "object"
        +      },
        +      "plan": {
        +        "properties": {
        +          "changes": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "newNotes": {
        +            "items": {
        +              "properties": {
        +                "duration": {
        +                  "type": "number"
        +                },
        +                "pitch": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "start": {
        +                  "type": "number"
        +                },
        +                "velocity": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "pitch",
        +                "start",
        +                "duration",
        +                "velocity"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "noteIds": {
        +            "items": {
        +              "type": "integer"
        +            },
        +            "type": "array"
        +          },
        +          "notes": {
        +            "items": {
        +              "properties": {
        +                "duration": {
        +                  "type": "number"
        +                },
        +                "pitch": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "start": {
        +                  "type": "number"
        +                },
        +                "velocity": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "pitch",
        +                "start",
        +                "duration",
        +                "velocity"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "preservedNotes": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "required": [],
        +        "type": "object"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "trackId",
        +      "clipId",
        +      "context",
        +      "plan"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedplan_midi_strum_pattern3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "clipId": {
        +        "type": "string"
        +      },
        +      "context": {
        +        "type": "object"
        +      },
        +      "plan": {
        +        "properties": {
        +          "changes": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "newNotes": {
        +            "items": {
        +              "properties": {
        +                "duration": {
        +                  "type": "number"
        +                },
        +                "pitch": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "start": {
        +                  "type": "number"
        +                },
        +                "velocity": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "pitch",
        +                "start",
        +                "duration",
        +                "velocity"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "noteIds": {
        +            "items": {
        +              "type": "integer"
        +            },
        +            "type": "array"
        +          },
        +          "notes": {
        +            "items": {
        +              "properties": {
        +                "duration": {
        +                  "type": "number"
        +                },
        +                "pitch": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "start": {
        +                  "type": "number"
        +                },
        +                "velocity": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "pitch",
        +                "start",
        +                "duration",
        +                "velocity"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "preservedNotes": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "required": [],
        +        "type": "object"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "trackId",
        +      "clipId",
        +      "context",
        +      "plan"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedplan_midi_transposition3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "clipId": {
        +        "type": "string"
        +      },
        +      "context": {
        +        "type": "object"
        +      },
        +      "plan": {
        +        "properties": {
        +          "changes": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "newNotes": {
        +            "items": {
        +              "properties": {
        +                "duration": {
        +                  "type": "number"
        +                },
        +                "pitch": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "start": {
        +                  "type": "number"
        +                },
        +                "velocity": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "pitch",
        +                "start",
        +                "duration",
        +                "velocity"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "noteIds": {
        +            "items": {
        +              "type": "integer"
        +            },
        +            "type": "array"
        +          },
        +          "notes": {
        +            "items": {
        +              "properties": {
        +                "duration": {
        +                  "type": "number"
        +                },
        +                "pitch": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "start": {
        +                  "type": "number"
        +                },
        +                "velocity": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "pitch",
        +                "start",
        +                "duration",
        +                "velocity"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "preservedNotes": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "required": [],
        +        "type": "object"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "trackId",
        +      "clipId",
        +      "context",
        +      "plan"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedplan_midi_velocity_curve3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "clipId": {
        +        "type": "string"
        +      },
        +      "context": {
        +        "type": "object"
        +      },
        +      "plan": {
        +        "properties": {
        +          "changes": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "newNotes": {
        +            "items": {
        +              "properties": {
        +                "duration": {
        +                  "type": "number"
        +                },
        +                "pitch": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "start": {
        +                  "type": "number"
        +                },
        +                "velocity": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "pitch",
        +                "start",
        +                "duration",
        +                "velocity"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "noteIds": {
        +            "items": {
        +              "type": "integer"
        +            },
        +            "type": "array"
        +          },
        +          "notes": {
        +            "items": {
        +              "properties": {
        +                "duration": {
        +                  "type": "number"
        +                },
        +                "pitch": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "start": {
        +                  "type": "number"
        +                },
        +                "velocity": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "pitch",
        +                "start",
        +                "duration",
        +                "velocity"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "preservedNotes": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "required": [],
        +        "type": "object"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "trackId",
        +      "clipId",
        +      "context",
        +      "plan"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedplan_scale_bassline2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "musicalContext": {
        +        "type": "object"
        +      },
        +      "plan": {
        +        "properties": {
        +          "changes": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "newNotes": {
        +            "items": {
        +              "properties": {
        +                "duration": {
        +                  "type": "number"
        +                },
        +                "pitch": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "start": {
        +                  "type": "number"
        +                },
        +                "velocity": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "pitch",
        +                "start",
        +                "duration",
        +                "velocity"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "noteIds": {
        +            "items": {
        +              "type": "integer"
        +            },
        +            "type": "array"
        +          },
        +          "notes": {
        +            "items": {
        +              "properties": {
        +                "duration": {
        +                  "type": "number"
        +                },
        +                "pitch": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "start": {
        +                  "type": "number"
        +                },
        +                "velocity": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "pitch",
        +                "start",
        +                "duration",
        +                "velocity"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "preservedNotes": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "required": [],
        +        "type": "object"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "musicalContext",
        +      "plan"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedplan_scale_chord_progression2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "musicalContext": {
        +        "type": "object"
        +      },
        +      "plan": {
        +        "properties": {
        +          "changes": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "newNotes": {
        +            "items": {
        +              "properties": {
        +                "duration": {
        +                  "type": "number"
        +                },
        +                "pitch": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "start": {
        +                  "type": "number"
        +                },
        +                "velocity": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "pitch",
        +                "start",
        +                "duration",
        +                "velocity"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "noteIds": {
        +            "items": {
        +              "type": "integer"
        +            },
        +            "type": "array"
        +          },
        +          "notes": {
        +            "items": {
        +              "properties": {
        +                "duration": {
        +                  "type": "number"
        +                },
        +                "pitch": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "start": {
        +                  "type": "number"
        +                },
        +                "velocity": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "pitch",
        +                "start",
        +                "duration",
        +                "velocity"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "preservedNotes": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "required": [],
        +        "type": "object"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "musicalContext",
        +      "plan"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedplan_scale_melody2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "gridReference": {
        +        "type": "object"
        +      },
        +      "musicalContext": {
        +        "type": "object"
        +      },
        +      "plan": {
        +        "properties": {
        +          "changes": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "newNotes": {
        +            "items": {
        +              "properties": {
        +                "duration": {
        +                  "type": "number"
        +                },
        +                "pitch": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "start": {
        +                  "type": "number"
        +                },
        +                "velocity": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "pitch",
        +                "start",
        +                "duration",
        +                "velocity"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "noteIds": {
        +            "items": {
        +              "type": "integer"
        +            },
        +            "type": "array"
        +          },
        +          "notes": {
        +            "items": {
        +              "properties": {
        +                "duration": {
        +                  "type": "number"
        +                },
        +                "pitch": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "start": {
        +                  "type": "number"
        +                },
        +                "velocity": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "pitch",
        +                "start",
        +                "duration",
        +                "velocity"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "preservedNotes": {
        +            "items": {
        +              "type": "object"
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "required": [],
        +        "type": "object"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "musicalContext",
        +      "gridReference",
        +      "plan"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedprepare_instrument_comparison3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedpropose_audio_transient_warp3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "actions": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "candidateCount": {
        +        "type": "integer"
        +      },
        +      "clipId": {
        +        "type": "string"
        +      },
        +      "gridAlignment": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "gridBeats": {
        +        "type": "number"
        +      },
        +      "nativeConversion": {
        +        "const": true
        +      },
        +      "sourcePath": {
        +        "type": "string"
        +      },
        +      "sourceWindow": {
        +        "type": "object"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "trackId",
        +      "clipId",
        +      "gridBeats",
        +      "nativeConversion",
        +      "sourcePath",
        +      "sourceWindow",
        +      "candidateCount",
        +      "gridAlignment",
        +      "actions"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedquantize_audio_clip3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedrandomize_rack_macros2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedre_enable_parameter_automation2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedread_production_artifact2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "artifactId": {
        +        "pattern": "^[a-f0-9]{64}$",
        +        "type": "string"
        +      },
        +      "nextOffset": {
        +        "anyOf": [
        +          {
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "offset": {
        +        "minimum": 0,
        +        "type": "integer"
        +      },
        +      "text": {
        +        "type": "string"
        +      },
        +      "totalCharacters": {
        +        "minimum": 0,
        +        "type": "integer"
        +      },
        +      "truncated": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "artifactId",
        +      "text",
        +      "offset",
        +      "totalCharacters",
        +      "truncated",
        +      "nextOffset"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedrecall_device_chain_snapshot2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedrecall_device_parameter_snapshot2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedrecall_group_system_snapshot2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedrecall_rack_macro_variation2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedrecall_track_state_snapshot2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedrecord_arrangement_take2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedrecord_production_note2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "noteRef": {
        +        "pattern": "^[a-f0-9]{64}$",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "noteRef"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedrecord_session_arrangement2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedredo2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedremove_audio_warp_marker3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedremove_midi_notes3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedrename_arrangement_clip2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedrename_arrangement_cue_point2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedrename_rack_chain2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedrename_rack_macro2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedrename_session_object2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedreturn_tracks_to_arrangement2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedreverse_audio_clip3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedroute_tracks_to_bus2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedroute_tracks_to_return_bus2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedrun_production_task3 fields changed
      • addedInput schema / properties / intent
        Added value: +{
        +  "description": "change (default) requires operations or fresh caller criteria proving no change is needed. inspect permits observations without operation proposals.",
        +  "enum": [
        +    "change",
        +    "inspect"
        +  ],
        +  "type": "string"
        +}
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "checkSource": {
        +        "enum": [
        +          "caller",
        +          "specialist"
        +        ]
        +      },
        +      "contextRef": {
        +        "pattern": "^[a-f0-9]{64}$",
        +        "type": "string"
        +      },
        +      "intent": {
        +        "enum": [
        +          "inspect",
        +          "change"
        +        ]
        +      },
        +      "operationCount": {
        +        "maximum": 16,
        +        "minimum": 0,
        +        "type": "integer"
        +      },
        +      "questions": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "readsUsed": {
        +        "minimum": 0,
        +        "type": "integer"
        +      },
        +      "resultRefs": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "setFingerprint": {
        +        "type": "string"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "status": {
        +        "enum": [
        +          "proposed",
        +          "observed",
        +          "no_change_needed",
        +          "incomplete",
        +          "budget_exhausted",
        +          "stale_context",
        +          "needs_input"
        +        ]
        +      },
        +      "summary": {
        +        "type": "string"
        +      },
        +      "taskId": {
        +        "pattern": "^[a-f0-9]{64}$",
        +        "type": "string"
        +      },
        +      "turnRefs": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "taskId",
        +      "intent",
        +      "status",
        +      "checkSource",
        +      "operationCount",
        +      "summary",
        +      "stateVersion",
        +      "setFingerprint",
        +      "questions",
        +      "contextRef",
        +      "resultRefs",
        +      "turnRefs",
        +      "readsUsed"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedsave_device_chain_snapshot2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "limitation": {
        +        "type": "string"
        +      },
        +      "name": {
        +        "type": "string"
        +      },
        +      "path": {
        +        "type": "string"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "name",
        +      "path",
        +      "trackId",
        +      "limitation"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedsave_group_system_snapshot2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "busTrackId": {
        +        "type": "string"
        +      },
        +      "limitation": {
        +        "type": "string"
        +      },
        +      "name": {
        +        "type": "string"
        +      },
        +      "path": {
        +        "type": "string"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "name",
        +      "path",
        +      "busTrackId",
        +      "limitation"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedsave_live_set2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedsave_midi_feel_template3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "name": {
        +        "type": "string"
        +      },
        +      "path": {
        +        "type": "string"
        +      },
        +      "template": {
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "name",
        +      "path",
        +      "template"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedsave_native_device_preset2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedsave_track_state_snapshot2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "limitation": {
        +        "type": "string"
        +      },
        +      "name": {
        +        "type": "string"
        +      },
        +      "path": {
        +        "type": "string"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "trackId": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "name",
        +      "path",
        +      "trackId",
        +      "limitation"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedsearch_browser_item_metadata2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "items": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "limitation": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "items",
        +      "limitation"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedsearch_browser_items2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "path": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "query": {
        +        "type": "string"
        +      },
        +      "results": {
        +        "items": {
        +          "properties": {
        +            "loadable": {
        +              "type": "boolean"
        +            },
        +            "name": {
        +              "type": "string"
        +            },
        +            "path": {
        +              "items": {
        +                "type": "string"
        +              },
        +              "type": "array"
        +            },
        +            "uri": {
        +              "anyOf": [
        +                {
        +                  "type": "string"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            }
        +          },
        +          "required": [
        +            "name"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "root": {
        +        "type": "string"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "root",
        +      "path",
        +      "query",
        +      "results"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedsearch_browser_roots2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "query": {
        +        "type": "string"
        +      },
        +      "results": {
        +        "items": {
        +          "properties": {
        +            "loadable": {
        +              "type": "boolean"
        +            },
        +            "name": {
        +              "type": "string"
        +            },
        +            "path": {
        +              "items": {
        +                "type": "string"
        +              },
        +              "type": "array"
        +            },
        +            "uri": {
        +              "anyOf": [
        +                {
        +                  "type": "string"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            }
        +          },
        +          "required": [
        +            "name"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "searchedRoots": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "stateVersion": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "truncated": {
        +        "type": "boolean"
        +      },
        +      "truncationReason": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "unavailableRoots": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "visitedItems": {
        +        "type": "integer"
        +      }
        +    },
        +    "required": [
        +      "stateVersion",
        +      "query",
        +      "searchedRoots",
        +      "unavailableRoots",
        +      "results",
        +      "visitedItems",
        +      "truncated",
        +      "truncationReason"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedsearch_local_splice_samples2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "limitation": {
        +        "type": "string"
        +      },
        +      "maxVisited": {
        +        "type": "integer"
        +      },
        +      "nextOffset": {
        +        "anyOf": [
        +          {
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "offset": {
        +        "type": "integer"
        +      },
        +      "query": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "rootPath": {
        +        "type": "string"
        +      },
        +      "samples": {
        +        "items": {
        +          "properties": {
        +            "relativePath": {
        +              "type": "string"
        +            },
        +            "sourcePath": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "relativePath",
        +            "sourcePath"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "scope": {
        +        "const": "local_files_only"
        +      },
        +      "truncated": {
        +        "type": "boolean"
        +      },
        +      "visited": {
        +        "type": "integer"
        +      }
        +    },
        +    "required": [
        +      "rootPath",
        +      "query",
        +      "scope",
        +      "offset",
        +      "visited",
        +      "maxVisited",
        +      "truncated",
        +      "nextOffset",
        +      "samples",
        +      "limitation"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedsearch_presets2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "catalog": {
        +        "properties": {
        +          "configured": {
        +            "type": "boolean"
        +          }
        +        },
        +        "required": [
        +          "configured"
        +        ],
        +        "type": "object"
        +      },
        +      "presets": {
        +        "items": {
        +          "type": "object"
        +        },
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "presets",
        +      "catalog"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedselect_device_ab_slot2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedselect_instrument_comparison2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedselect_take_lane_audition2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedset_audio_clip_state3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedset_beat_repeat_enabled2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedset_beat_repeat_grid2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedset_beat_repeat_interval2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedset_browser_item_metadata2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "nativeLiveCollectionsModified": {
        +            "const": false
        +          },
        +          "observed": {
        +            "properties": {
        +              "favorite": {
        +                "type": "boolean"
        +              },
        +              "revision": {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              "tags": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "favorite",
        +              "tags",
        +              "revision"
        +            ],
        +            "type": "object"
        +          },
        +          "requested": {
        +            "type": "object"
        +          },
        +          "timestamp": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "requested",
        +          "observed",
        +          "nativeLiveCollectionsModified",
        +          "timestamp"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedset_browser_preview2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedset_bulk_track_mixer2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedset_clip_parameter_envelope3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedset_clip_slot_stop_button3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedset_clip_timing11 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedInput schema / properties / editorGrid / properties / isTriplet / description
        Removed value: -"Display clip-editor triplets."
      • changedInput schema / properties / loop / description
        Previous value: -"Clip loop enablement and boundaries; beats for warped clips, seconds for unwarped audio."New value: +"Enable looping and set bounds: beats for MIDI/warped audio; seconds for unwarped."
      • removedInput schema / properties / loop / properties / enabled / description
        Removed value: -"Clip loop enabled."
      • removedInput schema / properties / loop / properties / endBeats / description
        Removed value: -"Beat end; MIDI/warped audio."
      • removedInput schema / properties / loop / properties / endSeconds / description
        Removed value: -"Second end; unwarped audio."
      • removedInput schema / properties / loop / properties / startBeats / description
        Removed value: -"Beat start; MIDI/warped audio."
      • removedInput schema / properties / loop / properties / startSeconds / description
        Removed value: -"Second start; unwarped audio."
      • changedInput schema / properties / timeSignature / description
        Previous value: -"Requested native numerator and denominator."New value: +"Native numerator and denominator."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedset_crossfader_state2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedset_device_active2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedset_device_parameter_display2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedset_device_parameters2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedset_device_sidechain_routing2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedset_drum_pad_state2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedset_groove2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedset_group_fold_state2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedset_live_object_colors2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedset_looper_state2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedset_master_mixer2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedset_midi_clip_markers3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedset_midi_note_properties3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedset_mixer_panning2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedset_preset_metadata2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "observed": {
        +            "properties": {
        +              "favorite": {
        +                "type": "boolean"
        +              },
        +              "revision": {
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              "tags": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              }
        +            },
        +            "required": [
        +              "favorite",
        +              "tags",
        +              "revision"
        +            ],
        +            "type": "object"
        +          },
        +          "requested": {
        +            "type": "object"
        +          },
        +          "timestamp": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "requested",
        +          "observed",
        +          "timestamp"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedset_rack_chain_mixer2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedset_rack_chain_note_routing2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedset_rack_macro_mapping_edge2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedset_return_mixer2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedset_scene_launch_quantization2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedset_scene_musical_context2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedset_selected_parameter2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedset_session_clip_entry2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedset_session_midi_overdub3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedset_simpler_manual_slices2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedset_simpler_sample_region2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedset_song_musical_context2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedset_tempo2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedset_track_freeze_state2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedset_track_midi_routing2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedset_track_mixer2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedset_track_routing2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedset_track_send_db2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedset_track_volume_db2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedset_transport_context2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedset_transport_recording_context2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedshow_live_object3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedshow_take_lanes2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedstart_production_session2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "audibleQualityVerified": {
        +        "const": false
        +      },
        +      "execution": {
        +        "properties": {
        +          "counts": {
        +            "additionalProperties": {
        +              "maximum": 16,
        +              "minimum": 0,
        +              "type": "integer"
        +            },
        +            "type": "object"
        +          },
        +          "operations": {
        +            "items": {
        +              "properties": {
        +                "attemptRef": {
        +                  "pattern": "^[a-f0-9]{64}$",
        +                  "type": "string"
        +                },
        +                "error": {
        +                  "maxLength": 300,
        +                  "type": "string"
        +                },
        +                "index": {
        +                  "maximum": 15,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "nativeStatus": {
        +                  "enum": [
        +                    "applied",
        +                    "outcome_unknown",
        +                    "postconditions_failed",
        +                    "pending_postconditions",
        +                    "pending_user_action"
        +                  ]
        +                },
        +                "receiptId": {
        +                  "pattern": "^[a-f0-9]{64}$",
        +                  "type": "string"
        +                },
        +                "resultRef": {
        +                  "pattern": "^[a-f0-9]{64}$",
        +                  "type": "string"
        +                },
        +                "status": {
        +                  "enum": [
        +                    "not_attempted",
        +                    "execution_pending",
        +                    "applied",
        +                    "rejected",
        +                    "outcome_unknown",
        +                    "postconditions_failed",
        +                    "pending_postconditions",
        +                    "pending_user_action",
        +                    "unrecorded"
        +                  ]
        +                },
        +                "tool": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "index",
        +                "tool",
        +                "status"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 16,
        +            "type": "array"
        +          },
        +          "taskId": {
        +            "pattern": "^[a-f0-9]{64}$",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "taskId",
        +          "operations",
        +          "counts"
        +        ],
        +        "type": "object"
        +      },
        +      "phase": {
        +        "enum": [
        +          "inspect",
        +          "choose",
        +          "propose",
        +          "proposing",
        +          "apply",
        +          "execution_pending",
        +          "needs_inspection",
        +          "audition",
        +          "evaluate",
        +          "complete"
        +        ]
        +      },
        +      "recoveryRef": {
        +        "pattern": "^[a-f0-9]{64}$",
        +        "type": "string"
        +      },
        +      "recoveryRequired": {
        +        "type": "boolean"
        +      },
        +      "revision": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "sessionId": {
        +        "type": "string"
        +      },
        +      "sessionRef": {
        +        "pattern": "^[a-f0-9]{64}$",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "sessionId",
        +      "sessionRef",
        +      "revision",
        +      "phase",
        +      "audibleQualityVerified"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedstop_all_clips2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedstop_clip3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedstore_rack_macro_variation2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedtransform_midi_notes3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."New value: +"list_clips Session ID or supported list_arrangement_clips ID."
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedtransport_play2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedtransport_stop2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedundo2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedungroup_tracks2 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -true
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "oneOf": [
        +      {
        +        "properties": {
        +          "confirmation": {
        +            "properties": {
        +              "expiresAt": {
        +                "type": "number"
        +              },
        +              "planHash": {
        +                "pattern": "^[a-f0-9]{64}$",
        +                "type": "string"
        +              },
        +              "token": {
        +                "minLength": 1,
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "token",
        +              "planHash",
        +              "expiresAt"
        +            ],
        +            "type": "object"
        +          },
        +          "dryRun": {
        +            "const": true
        +          },
        +          "plan": {
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "plan",
        +          "confirmation"
        +        ],
        +        "type": "object"
        +      },
        +      {
        +        "properties": {
        +          "dryRun": {
        +            "const": false
        +          },
        +          "operationOutcome": {
        +            "properties": {
        +              "evidence": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "reason": {
        +                "type": "string"
        +              },
        +              "schemaVersion": {
        +                "const": 1
        +              },
        +              "status": {
        +                "enum": [
        +                  "applied",
        +                  "outcome_unknown",
        +                  "postconditions_failed",
        +                  "pending_postconditions",
        +                  "pending_user_action"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "schemaVersion",
        +              "status",
        +              "reason",
        +              "evidence"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "dryRun",
        +          "operationOutcome"
        +        ],
        +        "type": "object"
        +      }
        +    ],
        +    "properties": {
        +      "dryRun": {
        +        "type": "boolean"
        +      }
        +    },
        +    "required": [
        +      "dryRun"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "properties": {
        +      "error": {
        +        "properties": {
        +          "message": {
        +            "type": "string"
        +          },
        +          "outcome": {
        +            "enum": [
        +              "unknown",
        +              "not_executed"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "message",
        +          "outcome"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "error"
        +    ],
        +    "type": "object"
        +  }
        +]
  2. 328 tool updatesv0.3.0
    • Changedadd_audio_warp_marker7 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedadjust_rack_macro_count7 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / deviceId / description
        Previous value: -"Stable device ID returned by list_devices."New value: +"ID from list_devices."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable device-owner ID: track-N from list_tracks, return-N from get_set_mixer, or master."New value: +"track-N from list_tracks, return-N from get_set_mixer, or master."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedadopt_instrument_comparison
    • Addedadvance_production_session
    • Addedanalyze_arrangement_section
    • Changedanalyze_audio_clip12 fields changed
      • changedInput schema / properties / channelIndex / description
        Previous value: -"Zero-based source channel for waveform, spectrum, spectrogram and pitch; defaults to zero."New value: +"Source channel for optional analyses; zero-based, default 0."
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / includePitch / description
        Previous value: -"Estimate selected-channel monophonic pitch with overlapping 256-ms frames across the window; not pitch correction."New value: +"Monophonic channel pitch in overlapping 256-ms frames; no correction."
      • changedInput schema / properties / includePitchEvents / description
        Previous value: -"Group selected-channel monophonic pitch frames into approximate note events for review; no correction."New value: +"Approximate monophonic channel note events for review; no correction."
      • changedInput schema / properties / includeResonanceCandidates / description
        Previous value: -"Report heuristic persistent narrow spectral features across at least four sampled frames; not confirmed resonances or automatic EQ advice."New value: +"Narrow spectral features persisting across 4+ frames; heuristic, not confirmed resonances or EQ advice."
      • changedInput schema / properties / includeSpectrogram / description
        Previous value: -"Include up to 64 selected-channel spectral frames at 48 kHz."New value: +"Up to 64 channel spectral frames at 48 kHz."
      • changedInput schema / properties / includeSpectrum / description
        Previous value: -"Include one selected-channel 4096-sample spectral frame."New value: +"One channel spectral frame of 4096 samples."
      • changedInput schema / properties / includeTransients / description
        Previous value: -"Find selected-channel source-audio onset candidates at 10-ms resolution; not Live warp/slice markers."New value: +"Channel onset candidates at 10-ms resolution; not Live warp/slice markers."
      • changedInput schema / properties / includeWaveform / description
        Previous value: -"Include up to 1024 contiguous selected-channel min/max/RMS waveform buckets at 48 kHz."New value: +"Up to 1024 contiguous channel min/max/RMS buckets at 48 kHz."
      • changedInput schema / properties / targetMidiNote / description
        Previous value: -"Measure monophonic cents deviation against this explicit MIDI note at A4=440 Hz; enables pitch analysis, not pitch correction."New value: +"MIDI reference at A4=440 Hz; enables monophonic pitch analysis, not correction."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedanalyze_audio_file10 fields changed
      • changedInput schema / properties / channelIndex / description
        Previous value: -"Zero-based source channel for waveform, spectrum, spectrogram and pitch; defaults to zero."New value: +"Source channel for optional analyses; zero-based, default 0."
      • changedInput schema / properties / includePitch / description
        Previous value: -"Estimate selected-channel monophonic pitch with overlapping 256-ms frames across the window; requires at least 256 ms."New value: +"Monophonic channel pitch in overlapping 256-ms frames; requires 256+ ms."
      • changedInput schema / properties / includePitchEvents / description
        Previous value: -"Group selected-channel monophonic pitch frames into approximate note events for review; no correction."New value: +"Approximate monophonic channel note events for review; no correction."
      • changedInput schema / properties / includeResonanceCandidates / description
        Previous value: -"Report heuristic persistent narrow spectral features across at least four sampled frames; not confirmed resonances or automatic EQ advice."New value: +"Narrow spectral features persisting across 4+ frames; heuristic, not confirmed resonances or EQ advice."
      • changedInput schema / properties / includeSpectrogram / description
        Previous value: -"Include up to 64 time-resolved spectral frames, resampled to 48 kHz."New value: +"Up to 64 spectral frames at 48 kHz."
      • changedInput schema / properties / includeSpectrum / description
        Previous value: -"Include one 4096-sample spectral frame at the window start."New value: +"One 4096-sample spectral frame at window start."
      • changedInput schema / properties / includeTransients / description
        Previous value: -"Find selected-channel source-audio onset candidates at 10-ms resolution; not Live warp/slice markers."New value: +"Channel onset candidates at 10-ms resolution; not Live warp/slice markers."
      • changedInput schema / properties / includeWaveform / description
        Previous value: -"Include up to 1024 contiguous selected-channel min/max/RMS waveform buckets at 48 kHz."New value: +"Up to 1024 contiguous channel min/max/RMS buckets at 48 kHz."
      • changedInput schema / properties / targetMidiNote / description
        Previous value: -"Measure monophonic cents deviation against this explicit MIDI note at A4=440 Hz; enables pitch analysis, not pitch correction."New value: +"MIDI reference at A4=440 Hz; enables monophonic pitch analysis, not correction."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedanalyze_midi_clip_chords3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedanalyze_midi_clip_scale3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedanalyze_midi_feel5 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • addedInput schema / properties / noteIds
        Added value: +{
        +  "description": "Exact source note IDs; omitted means all stored notes.",
        +  "items": {
        +    "type": "integer"
        +  },
        +  "maxItems": 4096,
        +  "minItems": 1,
        +  "type": "array",
        +  "uniqueItems": true
        +}
      • addedInput schema / properties / originBeats
        Added value: +{
        +  "description": "Clip-beat cycle origin; defaults to zero. Use an observed loop start when intended.",
        +  "minimum": 0,
        +  "type": "number"
        +}
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedanalyze_midi_parts
    • Changedapply_drum_variation7 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedapply_midi_chord_arpeggiation7 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedapply_midi_chord_doubling7 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedapply_midi_chord_inversion7 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedapply_midi_chord_voice_leading7 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedapply_midi_diatonic_chord_quality7 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedapply_midi_diatonic_harmony7 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedapply_midi_diatonic_transposition7 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedapply_midi_drop_voicing7 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedapply_midi_feel_template9 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • addedInput schema / properties / originBeats
        Added value: +{
        +  "description": "Clip-beat cycle origin; defaults to zero. Use an observed loop start when intended.",
        +  "minimum": 0,
        +  "type": "number"
        +}
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / template / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "barBeats": {
        -        "description": "Quarter-note beats per source bar.",
        -        "exclusiveMinimum": 0,
        -        "type": "number"
        -      },
        -      "bars": {
        -        "maximum": 8,
        -        "minimum": 1,
        -        "type": "integer"
        -      },
        -      "format": {
        -        "const": "cavi-midi-feel-v1"
        -      },
        -      "grid": {
        -        "enum": [
        -          "straight16",
        -          "eighthTriplet",
        -          "sixteenthTriplet"
        -        ],
        -        "type": "string"
        -      },
        -      "nativeGrooveId": {
        -        "description": "Only stored-note templates without an assigned native groove are transferable.",
        -        "type": "null"
        -      },
        -      "slots": {
        -        "description": "Nonempty measured slots from analyze_midi_feel.",
        -        "items": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "hitCount": {
        -              "minimum": 1,
        -              "type": "integer"
        -            },
        -            "meanOffsetBeats": {
        -              "description": "Mean stored-note deviation from this grid slot.",
        -              "type": "number"
        -            },
        -            "meanVelocity": {
        -              "description": "Mean stored-note velocity.",
        -              "maximum": 127,
        -              "minimum": 1,
        -              "type": "number"
        -            },
        -            "slot": {
        -              "minimum": 0,
        -              "type": "integer"
        -            }
        -          },
        -          "required": [
        -            "slot",
        -            "hitCount",
        -            "meanOffsetBeats",
        -            "meanVelocity"
        -          ],
        -          "type": "object"
        -        },
        -        "maxItems": 4096,
        -        "minItems": 1,
        -        "type": "array"
        -      },
        -      "source": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "clipId": {
        -            "description": "Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips.",
        -            "type": "string"
        -          },
        -          "stateVersion": {
        -            "minimum": 1,
        -            "type": "integer"
        -          },
        -          "trackId": {
        -            "description": "Stable track ID returned by list_tracks.",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "trackId",
        -          "clipId",
        -          "stateVersion"
        -        ],
        -        "type": "object"
        -      }
        -    },
        -    "required": [
        -      "format",
        -      "grid",
        -      "bars",
        -      "barBeats",
        -      "nativeGrooveId",
        -      "source",
        -      "slots"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "barBeats": {
        -        "description": "Quarter-note beats per source bar.",
        -        "exclusiveMinimum": 0,
        -        "type": "number"
        -      },
        -      "bars": {
        -        "maximum": 8,
        -        "minimum": 1,
        -        "type": "integer"
        -      },
        -      "cycleBeats": {
        -        "description": "Measured cycle length in quarter-note beats.",
        -        "exclusiveMinimum": 0,
        -        "type": "number"
        -      },
        -      "format": {
        -        "const": "cavi-audio-feel-v1"
        -      },
        -      "gridBeats": {
        -        "description": "Measured source-audio grid spacing in quarter-note beats.",
        -        "exclusiveMinimum": 0,
        -        "maximum": 16,
        -        "type": "number"
        -      },
        -      "limitation": {
        -        "description": "Measurement boundary and source-audio limitations.",
        -        "type": "string"
        -      },
        -      "nativeGrooveId": {
        -        "type": "null"
        -      },
        -      "slotCount": {
        -        "maximum": 4096,
        -        "minimum": 1,
        -        "type": "integer"
        -      },
        -      "slots": {
        -        "description": "Nonempty measured source-audio feel slots.",
        -        "items": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "hitCount": {
        -              "minimum": 1,
        -              "type": "integer"
        -            },
        -            "meanOffsetBeats": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "meanStrength": {
        -              "description": "Measured source onset strength; not MIDI velocity.",
        -              "maximum": 1,
        -              "minimum": 0,
        -              "type": "number"
        -            },
        -            "reliableTimingHits": {
        -              "minimum": 0,
        -              "type": "integer"
        -            },
        -            "slot": {
        -              "minimum": 0,
        -              "type": "integer"
        -            }
        -          },
        -          "required": [
        -            "slot",
        -            "hitCount",
        -            "reliableTimingHits",
        -            "meanOffsetBeats",
        -            "meanStrength"
        -          ],
        -          "type": "object"
        -        },
        -        "maxItems": 4096,
        -        "minItems": 1,
        -        "type": "array"
        -      },
        -      "source": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "clipId": {
        -            "description": "Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips.",
        -            "type": "string"
        -          },
        -          "sourcePath": {
        -            "description": "Measured local audio source path.",
        -            "type": "string"
        -          },
        -          "stateVersion": {
        -            "minimum": 1,
        -            "type": "integer"
        -          },
        -          "trackId": {
        -            "description": "Stable track ID returned by list_tracks.",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "trackId",
        -          "clipId",
        -          "stateVersion",
        -          "sourcePath"
        -        ],
        -        "type": "object"
        -      }
        -    },
        -    "required": [
        -      "format",
        -      "gridBeats",
        -      "bars",
        -      "barBeats",
        -      "nativeGrooveId",
        -      "source",
        -      "slots"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "barBeats": {
        +        "description": "Quarter-note beats per source bar.",
        +        "exclusiveMinimum": 0,
        +        "type": "number"
        +      },
        +      "bars": {
        +        "maximum": 8,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "format": {
        +        "const": "cavi-midi-feel-v1"
        +      },
        +      "grid": {
        +        "enum": [
        +          "straight16",
        +          "eighthTriplet",
        +          "sixteenthTriplet"
        +        ],
        +        "type": "string"
        +      },
        +      "nativeGrooveId": {
        +        "description": "Only stored-note templates without an assigned native groove are transferable.",
        +        "type": "null"
        +      },
        +      "slots": {
        +        "description": "Nonempty measured slots from analyze_midi_feel.",
        +        "items": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "hitCount": {
        +              "minimum": 1,
        +              "type": "integer"
        +            },
        +            "meanOffsetBeats": {
        +              "description": "Mean stored-note deviation from this grid slot.",
        +              "type": "number"
        +            },
        +            "meanVelocity": {
        +              "description": "Mean stored-note velocity.",
        +              "maximum": 127,
        +              "minimum": 1,
        +              "type": "number"
        +            },
        +            "slot": {
        +              "minimum": 0,
        +              "type": "integer"
        +            }
        +          },
        +          "required": [
        +            "slot",
        +            "hitCount",
        +            "meanOffsetBeats",
        +            "meanVelocity"
        +          ],
        +          "type": "object"
        +        },
        +        "maxItems": 4096,
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "source": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "clipId": {
        +            "description": "Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported.",
        +            "type": "string"
        +          },
        +          "noteIds": {
        +            "description": "Exact source note IDs; omitted means all stored notes.",
        +            "items": {
        +              "type": "integer"
        +            },
        +            "maxItems": 4096,
        +            "minItems": 1,
        +            "type": "array",
        +            "uniqueItems": true
        +          },
        +          "originBeats": {
        +            "description": "Clip-beat cycle origin; defaults to zero. Use an observed loop start when intended.",
        +            "minimum": 0,
        +            "type": "number"
        +          },
        +          "stateVersion": {
        +            "minimum": 1,
        +            "type": "integer"
        +          },
        +          "trackId": {
        +            "description": "ID from list_tracks.",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "trackId",
        +          "clipId",
        +          "stateVersion"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "format",
        +      "grid",
        +      "bars",
        +      "barBeats",
        +      "nativeGrooveId",
        +      "source",
        +      "slots"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "barBeats": {
        +        "description": "Quarter-note beats per source bar.",
        +        "exclusiveMinimum": 0,
        +        "type": "number"
        +      },
        +      "bars": {
        +        "maximum": 8,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "cycleBeats": {
        +        "description": "Measured cycle length in quarter-note beats.",
        +        "exclusiveMinimum": 0,
        +        "type": "number"
        +      },
        +      "format": {
        +        "const": "cavi-audio-feel-v1"
        +      },
        +      "gridBeats": {
        +        "description": "Measured source-audio grid spacing in quarter-note beats.",
        +        "exclusiveMinimum": 0,
        +        "maximum": 16,
        +        "type": "number"
        +      },
        +      "limitation": {
        +        "description": "Measurement boundary and source-audio limitations.",
        +        "type": "string"
        +      },
        +      "nativeGrooveId": {
        +        "type": "null"
        +      },
        +      "slotCount": {
        +        "maximum": 4096,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "slots": {
        +        "description": "Nonempty measured source-audio feel slots.",
        +        "items": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "hitCount": {
        +              "minimum": 1,
        +              "type": "integer"
        +            },
        +            "meanOffsetBeats": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "meanStrength": {
        +              "description": "Measured source onset strength; not MIDI velocity.",
        +              "maximum": 1,
        +              "minimum": 0,
        +              "type": "number"
        +            },
        +            "reliableTimingHits": {
        +              "minimum": 0,
        +              "type": "integer"
        +            },
        +            "slot": {
        +              "minimum": 0,
        +              "type": "integer"
        +            }
        +          },
        +          "required": [
        +            "slot",
        +            "hitCount",
        +            "reliableTimingHits",
        +            "meanOffsetBeats",
        +            "meanStrength"
        +          ],
        +          "type": "object"
        +        },
        +        "maxItems": 4096,
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "source": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "clipId": {
        +            "description": "Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported.",
        +            "type": "string"
        +          },
        +          "sourcePath": {
        +            "description": "Measured local audio source path.",
        +            "type": "string"
        +          },
        +          "stateVersion": {
        +            "minimum": 1,
        +            "type": "integer"
        +          },
        +          "trackId": {
        +            "description": "ID from list_tracks.",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "trackId",
        +          "clipId",
        +          "stateVersion",
        +          "sourcePath"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "format",
        +      "gridBeats",
        +      "bars",
        +      "barBeats",
        +      "nativeGrooveId",
        +      "source",
        +      "slots"
        +    ],
        +    "type": "object"
        +  }
        +]
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedapply_midi_gate_pattern7 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedapply_midi_probability_pattern7 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedapply_midi_ratchet_pattern7 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedapply_midi_scale_chord_remapping7 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedapply_midi_strum_pattern7 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedapply_midi_transposition7 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedapply_midi_velocity_curve7 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedapply_monophonic_audio_tuning7 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedapply_production_operation
    • Changedarm_track6 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedaudition_arrangement_passage
    • Addedbounce_track_in_place
    • Changedbrowse_local_splice_directory1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedcapture_device_chain_snapshot2 fields changed
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable device-owner ID: track-N from list_tracks, return-N from get_set_mixer, or master."New value: +"track-N from list_tracks, return-N from get_set_mixer, or master."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedcapture_device_parameter_snapshot3 fields changed
      • changedInput schema / properties / deviceId / description
        Previous value: -"Stable device ID returned by list_devices."New value: +"ID from list_devices."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable device-owner ID: track-N from list_tracks, return-N from get_set_mixer, or master."New value: +"track-N from list_tracks, return-N from get_set_mixer, or master."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedcapture_group_system_snapshot2 fields changed
      • changedInput schema / properties / busTrackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedcapture_live_audio
    • Changedcapture_midi_session6 fields changed
      • addedInput schema / properties / allowExistingClipChanges
        Added value: +{
        +  "description": "Explicit authority for known playing Session clip changes; default false.",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedcapture_session_scene
    • Changedcapture_track_state_snapshot2 fields changed
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedclaim_nks_generation_job1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedcollect_project_media
    • Addedcompare_audio_reference
    • Changedcomplete_nks_generation_job2 fields changed
      • changedInput schema / properties / presetId / description
        Previous value: -"Stable NKS preset catalog ID."New value: +"NKS catalog preset ID."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedcopy_arrangement_clip_to_track
    • Addedcopy_device_ab_slot
    • Changedcorrect_midi_clip_to_scale7 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedcreate_arrangement_audio_clip
    • Changedcreate_arrangement_cue_point5 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedcreate_arrangement_midi_clip
    • Changedcreate_audio_clip7 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedcreate_clip_mixer_envelope
    • Addedcreate_clip_parameter_envelope
    • Changedcreate_drum_pattern_clip7 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedcreate_groove5 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedcreate_midi_clip7 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedcreate_rack_chain7 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / deviceId / description
        Previous value: -"Stable device ID returned by list_devices."New value: +"ID from list_devices."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable device-owner ID: track-N from list_tracks, return-N from get_set_mixer, or master."New value: +"track-N from list_tracks, return-N from get_set_mixer, or master."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedcreate_return_track5 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedcreate_scale_bassline_clip7 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedcreate_scale_chord_progression_clip7 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedcreate_scale_melody_clip7 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedcreate_scene6 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • addedInput schema / properties / index / description
        Added value: +"Zero-based insertion index; omit to append."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedcreate_track7 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • addedInput schema / properties / index / description
        Added value: +"Zero-based insertion index; omit to append."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • addedInput schema / properties / type / description
        Added value: +"Native track type to create."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedcrop_audio_clip7 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedcrop_midi_clip
    • Changeddelete_arrangement_clip6 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changeddelete_arrangement_cue_point6 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / cuePointId / description
        Previous value: -"Stable cue-point ID."New value: +"Current cue-point ID from list_arrangement_cue_points."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changeddelete_clip7 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changeddelete_device7 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / deviceId / description
        Previous value: -"Stable device ID returned by list_devices."New value: +"ID from list_devices."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable device-owner ID: track-N from list_tracks, return-N from get_set_mixer, or master."New value: +"track-N from list_tracks, return-N from get_set_mixer, or master."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changeddelete_rack_macro_variation7 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / deviceId / description
        Previous value: -"Stable device ID returned by list_devices."New value: +"ID from list_devices."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable device-owner ID: track-N from list_tracks, return-N from get_set_mixer, or master."New value: +"track-N from list_tracks, return-N from get_set_mixer, or master."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changeddelete_session_object6 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedduplicate_arrangement_clip6 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedduplicate_clip10 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / destinationClipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • addedInput schema / properties / destinationTrackId
        Added value: +{
        +  "description": "Destination ordinary track ID; defaults to trackId. Must accept the source clip kind.",
        +  "type": "string"
        +}
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • addedInput schema / properties / name
        Added value: +{
        +  "description": "Optional copy name.",
        +  "type": "string"
        +}
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedduplicate_clip_loop7 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedduplicate_midi_clip_variations
    • Changedduplicate_session_object6 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changededit_drum_pattern_clip7 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedenqueue_nks_generation_jobs5 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / presetIds / items / description
        Previous value: -"Stable NKS preset catalog ID."New value: +"NKS catalog preset ID."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedexport_audio_mix
    • Addedexport_audio_track
    • Addedexport_looper_clip
    • Addedexport_midi_clip
    • Changedfail_nks_generation_job2 fields changed
      • changedInput schema / properties / presetId / description
        Previous value: -"Stable NKS preset catalog ID."New value: +"NKS catalog preset ID."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedfinish_arrangement_take
    • Addedfinish_beat_repeat_fill
    • Addedfinish_live_audio_capture
    • Addedfinish_session_arrangement_recording
    • Addedfinish_session_clip_hold
    • Addedget_arrangement_take
    • Changedget_audio_clip_state3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedget_audio_source_beat_times3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedget_automation_capabilities2 fields changed
      • removedInput schema / required
        Removed value: -[]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedget_beat_repeat_fill
    • Changedget_beat_repeat_performance_context3 fields changed
      • changedInput schema / properties / deviceId / description
        Previous value: -"Stable device ID returned by list_devices."New value: +"ID from list_devices."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable device-owner ID: track-N from list_tracks, return-N from get_set_mixer, or master."New value: +"track-N from list_tracks, return-N from get_set_mixer, or master."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedget_browser_item_metadata1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedget_browser_items4 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Maximum children per page; supply with offset."
      • addedInput schema / properties / offset / description
        Added value: +"Zero-based child offset; supply with limit."
      • addedInput schema / properties / root / enum
        Added value: +[
        +  "audio_effects",
        +  "clips",
        +  "current_project",
        +  "drums",
        +  "hotswap_target",
        +  "instruments",
        +  "legacy_libraries",
        +  "max_for_live",
        +  "midi_effects",
        +  "packs",
        +  "plugins",
        +  "samples",
        +  "sounds",
        +  "user_folders",
        +  "user_library"
        +]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedget_browser_preview_context
    • Changedget_clip_groove_context3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedget_clip_mixer_envelope
    • Changedget_clip_parameter_envelope5 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / deviceId / description
        Previous value: -"Stable device ID returned by list_devices."New value: +"ID from list_devices."
      • changedInput schema / properties / parameterId / description
        Previous value: -"Stable parameter ID returned by list_device_parameters."New value: +"ID from list_device_parameters."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedget_clip_timing3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedget_crossfader_context
    • Addedget_device_ab_context
    • Addedget_device_activation_context
    • Changedget_device_hierarchy3 fields changed
      • changedInput schema / properties / deviceId / description
        Previous value: -"Stable device ID returned by list_devices."New value: +"ID from list_devices."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable device-owner ID: track-N from list_tracks, return-N from get_set_mixer, or master."New value: +"track-N from list_tracks, return-N from get_set_mixer, or master."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedget_device_sidechain_routing3 fields changed
      • changedInput schema / properties / deviceId / description
        Previous value: -"Stable device ID returned by list_devices."New value: +"ID from list_devices."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable device-owner ID: track-N from list_tracks, return-N from get_set_mixer, or master."New value: +"track-N from list_tracks, return-N from get_set_mixer, or master."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedget_factory_browser_items1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedget_factory_coverage2 fields changed
      • removedInput schema / required
        Removed value: -[]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedget_factory_device_context3 fields changed
      • changedInput schema / properties / deviceId / description
        Previous value: -"Stable device ID returned by list_devices."New value: +"ID from list_devices."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable device-owner ID: track-N from list_tracks, return-N from get_set_mixer, or master."New value: +"track-N from list_tracks, return-N from get_set_mixer, or master."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedget_history_state2 fields changed
      • removedInput schema / required
        Removed value: -[]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedget_instrument_comparison
    • Addedget_live_audio_capture
    • Addedget_live_object_colors
    • Changedget_live_scale_reference2 fields changed
      • addedInput schema / properties / scaleName / enum
        Added value: +[
        +  "Major",
        +  "Minor",
        +  "Dorian",
        +  "Mixolydian",
        +  "Lydian",
        +  "Phrygian",
        +  "Locrian",
        +  "Whole Tone",
        +  "Half-whole Dim.",
        +  "Whole-half Dim.",
        +  "Minor Blues",
        +  "Minor Pentatonic",
        +  "Major Pentatonic",
        +  "Harmonic Minor",
        +  "Harmonic Major",
        +  "Dorian #4",
        +  "Phrygian Dominant",
        +  "Melodic Minor",
        +  "Lydian Augmented",
        +  "Lydian Dominant",
        +  "Super Locrian",
        +  "8-Tone Spanish",
        +  "Bhairav",
        +  "Hungarian Minor",
        +  "Hirajoshi",
        +  "In-Sen",
        +  "Iwato",
        +  "Kumoi",
        +  "Pelog Selisir",
        +  "Pelog Tembung",
        +  "Messiaen 3",
        +  "Messiaen 4",
        +  "Messiaen 5",
        +  "Messiaen 6",
        +  "Messiaen 7"
        +]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "scale": {
        +      "additionalProperties": true,
        +      "properties": {
        +        "degrees": {
        +          "items": {
        +            "type": "integer"
        +          },
        +          "type": "array"
        +        },
        +        "family": {
        +          "type": "string"
        +        },
        +        "intervals": {
        +          "items": {
        +            "maximum": 11,
        +            "minimum": 0,
        +            "type": "integer"
        +          },
        +          "minItems": 1,
        +          "type": "array"
        +        },
        +        "name": {
        +          "type": "string"
        +        },
        +        "noteNames": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "pitchClasses": {
        +          "items": {
        +            "type": "integer"
        +          },
        +          "type": "array"
        +        },
        +        "rootName": {
        +          "type": "string"
        +        },
        +        "rootNote": {
        +          "maximum": 11,
        +          "minimum": 0,
        +          "type": "integer"
        +        }
        +      },
        +      "required": [
        +        "name",
        +        "family",
        +        "intervals",
        +        "rootNote",
        +        "rootName",
        +        "pitchClasses",
        +        "noteNames",
        +        "degrees"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "scale"
        +  ],
        +  "type": "object"
        +}
    • Changedget_live_state2 fields changed
      • removedInput schema / required
        Removed value: -[]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedget_looper_export_context
    • Changedget_looper_performance_context3 fields changed
      • changedInput schema / properties / deviceId / description
        Previous value: -"Stable device ID returned by list_devices."New value: +"ID from list_devices."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable device-owner ID: track-N from list_tracks, return-N from get_set_mixer, or master."New value: +"track-N from list_tracks, return-N from get_set_mixer, or master."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedget_midi_capture_context
    • Changedget_midi_clip_notes3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedget_midi_clip_notes_extended3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedget_midi_note_insertion_context
    • Addedget_midi_note_removal_context
    • Addedget_midi_note_selection
    • Addedget_mixer_panning_context
    • Changedget_nks_generation_job2 fields changed
      • changedInput schema / properties / presetId / description
        Previous value: -"Stable NKS preset catalog ID."New value: +"NKS catalog preset ID."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedget_nks_generation_status1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedget_parameter_automation_context
    • Changedget_plugin_integration_context3 fields changed
      • changedInput schema / properties / deviceId / description
        Previous value: -"Stable device ID returned by list_devices."New value: +"ID from list_devices."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable device-owner ID: track-N from list_tracks, return-N from get_set_mixer, or master."New value: +"track-N from list_tracks, return-N from get_set_mixer, or master."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedget_preset2 fields changed
      • changedInput schema / properties / presetId / description
        Previous value: -"Stable NKS preset catalog ID."New value: +"NKS catalog preset ID."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedget_preset_metadata2 fields changed
      • changedInput schema / properties / presetId / description
        Previous value: -"Stable NKS preset catalog ID."New value: +"NKS catalog preset ID."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedget_producer_chain_blueprint2 fields changed
      • addedInput schema / properties / target / description
        Added value: +"Exact blueprint ID returned by list_producer_chain_blueprints."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "blueprint": {
        +      "additionalProperties": true,
        +      "properties": {
        +        "id": {
        +          "type": "string"
        +        },
        +        "summary": {
        +          "type": "string"
        +        },
        +        "topology": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "id",
        +        "topology",
        +        "summary"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "blueprint"
        +  ],
        +  "type": "object"
        +}
    • Addedget_producer_workflow
    • Addedget_production_context
    • Addedget_production_session
    • Addedget_project_media
    • Addedget_rack_performance_context
    • Addedget_return_routing
    • Addedget_scene_launch_context
    • Addedget_selected_parameter_context
    • Addedget_selection_context
    • Addedget_session_arrangement_recording
    • Addedget_session_clip_hold
    • Addedget_session_midi_overdub_context
    • Addedget_session_orientation
    • Changedget_set_mixer2 fields changed
      • removedInput schema / required
        Removed value: -[]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedget_simpler_sample_state
    • Changedget_song_grid_reference2 fields changed
      • removedInput schema / required
        Removed value: -[]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedget_song_musical_context2 fields changed
      • removedInput schema / required
        Removed value: -[]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedget_take_lane_audition_context
    • Addedget_take_lane_context
    • Addedget_track_arm_context
    • Changedget_track_freeze_state2 fields changed
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedget_track_grouping_status
    • Changedget_track_midi_routing2 fields changed
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedget_track_mixer2 fields changed
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedget_track_routing2 fields changed
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedget_track_signal_activity
    • Addedget_track_ungrouping_status
    • Changedget_transport_context2 fields changed
      • removedInput schema / required
        Removed value: -[]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedget_transport_recording_context2 fields changed
      • removedInput schema / required
        Removed value: -[]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedgroup_tracks
    • Changedheartbeat_nks_generation_job2 fields changed
      • changedInput schema / properties / presetId / description
        Previous value: -"Stable NKS preset catalog ID."New value: +"NKS catalog preset ID."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedhold_session_clip
    • Changedhumanize_midi_notes7 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedimport_midi_file
    • Addedinsert_midi_notes
    • Changedinspect_clip_groove_postconditions3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedinspect_producer_bus4 fields changed
      • addedInput schema / properties / busKind
        Added value: +{
        +  "description": "group (default) or ordinary audio bus.",
        +  "enum": [
        +    "group",
        +    "audio"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / busTrackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedInput schema / properties / children / items / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedinspect_producer_chain2 fields changed
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable device-owner ID: track-N from list_tracks, return-N from get_set_mixer, or master."New value: +"track-N from list_tracks, return-N from get_set_mixer, or master."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedinspect_producer_return_bus2 fields changed
      • changedInput schema / properties / children / items / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedjump_to_arrangement_cue_point6 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / cuePointId / description
        Previous value: -"Stable cue-point ID."New value: +"Current cue-point ID from list_arrangement_cue_points."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedlaunch_clip7 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedlaunch_scene6 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / sceneId / description
        Previous value: -"Stable scene ID returned by list_scenes."New value: +"ID from list_scenes."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedlist_arrangement_clips2 fields changed
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedlist_arrangement_cue_points2 fields changed
      • removedInput schema / required
        Removed value: -[]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedlist_browser_roots2 fields changed
      • removedInput schema / required
        Removed value: -[]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedlist_clips2 fields changed
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedlist_device_parameters3 fields changed
      • changedInput schema / properties / deviceId / description
        Previous value: -"Stable device ID returned by list_devices."New value: +"ID from list_devices."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable device-owner ID: track-N from list_tracks, return-N from get_set_mixer, or master."New value: +"track-N from list_tracks, return-N from get_set_mixer, or master."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedlist_devices2 fields changed
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable device-owner ID: track-N from list_tracks, return-N from get_set_mixer, or master."New value: +"track-N from list_tracks, return-N from get_set_mixer, or master."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedlist_factory_device_profiles2 fields changed
      • removedInput schema / required
        Removed value: -[]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "profiles": {
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "family": {
        +            "type": "string"
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "notes": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "parameterRoles": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "type": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "name",
        +          "type",
        +          "family",
        +          "parameterRoles"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "profiles"
        +  ],
        +  "type": "object"
        +}
    • Changedlist_live_scales2 fields changed
      • removedInput schema / required
        Removed value: -[]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "scales": {
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "family": {
        +            "type": "string"
        +          },
        +          "intervals": {
        +            "items": {
        +              "maximum": 11,
        +              "minimum": 0,
        +              "type": "integer"
        +            },
        +            "minItems": 1,
        +            "type": "array"
        +          },
        +          "name": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "family",
        +          "intervals"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "scales"
        +  ],
        +  "type": "object"
        +}
    • Changedlist_local_splice_roots2 fields changed
      • removedInput schema / required
        Removed value: -[]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedlist_producer_chain_blueprints2 fields changed
      • removedInput schema / required
        Removed value: -[]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "blueprints": {
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "id": {
        +            "type": "string"
        +          },
        +          "summary": {
        +            "type": "string"
        +          },
        +          "topology": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "topology",
        +          "summary"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "blueprints"
        +  ],
        +  "type": "object"
        +}
    • Changedlist_saved_snapshots1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedlist_scenes2 fields changed
      • removedInput schema / required
        Removed value: -[]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedlist_tracks2 fields changed
      • removedInput schema / required
        Removed value: -[]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedload_browser_item7 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • addedInput schema / properties / root / enum
        Added value: +[
        +  "audio_effects",
        +  "clips",
        +  "current_project",
        +  "drums",
        +  "hotswap_target",
        +  "instruments",
        +  "legacy_libraries",
        +  "max_for_live",
        +  "midi_effects",
        +  "packs",
        +  "plugins",
        +  "samples",
        +  "sounds",
        +  "user_folders",
        +  "user_library"
        +]
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable device-owner ID: track-N from list_tracks, return-N from get_set_mixer, or master."New value: +"track-N from list_tracks, return-N from get_set_mixer, or master."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedload_device_chain_snapshot1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedload_factory_browser_item6 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable device-owner ID: track-N from list_tracks, return-N from get_set_mixer, or master."New value: +"track-N from list_tracks, return-N from get_set_mixer, or master."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedload_group_system_snapshot1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedload_midi_feel_template1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedload_simpler_sample
    • Changedload_track_state_snapshot1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedmap_rack_macro_to_parameter9 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / deviceId / description
        Previous value: -"Stable device ID returned by list_devices."New value: +"ID from list_devices."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / parameterId / description
        Previous value: -"Stable parameter ID returned by list_device_parameters."New value: +"ID from list_device_parameters."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / targetDeviceId / description
        Previous value: -"Stable device ID returned by list_devices."New value: +"ID from list_devices."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable device-owner ID: track-N from list_tracks, return-N from get_set_mixer, or master."New value: +"track-N from list_tracks, return-N from get_set_mixer, or master."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedmove_arrangement_clip6 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedmove_audio_warp_marker7 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedmove_device7 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / deviceId / description
        Previous value: -"Stable device ID returned by list_devices."New value: +"ID from list_devices."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable device-owner ID: track-N from list_tracks, return-N from get_set_mixer, or master."New value: +"track-N from list_tracks, return-N from get_set_mixer, or master."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedmove_device_to_chain8 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / deviceId / description
        Previous value: -"Stable device ID returned by list_devices."New value: +"ID from list_devices."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / targetTrackId / description
        Previous value: -"Stable device-owner ID: track-N from list_tracks, return-N from get_set_mixer, or master."New value: +"track-N from list_tracks, return-N from get_set_mixer, or master."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable device-owner ID: track-N from list_tracks, return-N from get_set_mixer, or master."New value: +"track-N from list_tracks, return-N from get_set_mixer, or master."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedopen_live_set10 fields changed
      • addedInput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "expectedSetFingerprint": {},
        +      "expectedStateVersion": {}
        +    },
        +    "required": [
        +      "expectedStateVersion",
        +      "expectedSetFingerprint"
        +    ]
        +  },
        +  {
        +    "properties": {
        +      "mode": {
        +        "const": "launch"
        +      }
        +    },
        +    "required": [
        +      "mode"
        +    ]
        +  }
        +]
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedSetFingerprint / description
        Previous value: -"Exact setFingerprint from get_live_state for the currently loaded Set."New value: +"Current setFingerprint, except launch."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • addedInput schema / properties / mode
        Added value: +{
        +  "description": "launch if closed.",
        +  "enum": [
        +    "open",
        +    "launch"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / path / description
        Previous value: -"Absolute path to an existing .als Live Set."New value: +"Existing absolute .als path."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / required
        Previous value: -[
        -  "expectedStateVersion",
        -  "path",
        -  "expectedSetFingerprint"
        -]New value: +[
        +  "path"
        +]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedoverride_parameter_automation
    • Changedpanic5 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedperform_beat_repeat_fill
    • Changedplace_session_clip_in_arrangement7 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedplan_arrangement_repeat
    • Addedplan_audio_midi_sketch
    • Changedplan_drum_pattern1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedplan_drum_pattern_edit3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedplan_drum_variation3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedplan_grid_envelope_pattern1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedplan_group_system_recall4 fields changed
      • changedInput schema / properties / busTrackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedInput schema / properties / mapping / items / properties / sourceTrackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedInput schema / properties / mapping / items / properties / targetTrackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedplan_midi_chord_arpeggiation3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedplan_midi_chord_doubling3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedplan_midi_chord_inversion3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedplan_midi_chord_voice_leading3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedplan_midi_diatonic_chord_quality3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedplan_midi_diatonic_harmony3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedplan_midi_diatonic_transposition3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedplan_midi_drop_voicing3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedplan_midi_gate_pattern3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedplan_midi_humanization3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedplan_midi_probability_pattern3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedplan_midi_ratchet_pattern3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedplan_midi_scale_chord_remapping3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedplan_midi_strum_pattern3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedplan_midi_transposition3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedplan_midi_velocity_curve3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedplan_scale_bassline1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedplan_scale_chord_progression1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedplan_scale_melody1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedprepare_instrument_comparison
    • Changedpropose_audio_transient_warp3 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedquantize_audio_clip7 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedrandomize_rack_macros7 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / deviceId / description
        Previous value: -"Stable device ID returned by list_devices."New value: +"ID from list_devices."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable device-owner ID: track-N from list_tracks, return-N from get_set_mixer, or master."New value: +"track-N from list_tracks, return-N from get_set_mixer, or master."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedre_enable_parameter_automation
    • Addedread_production_artifact
    • Changedrecall_device_chain_snapshot6 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable device-owner ID: track-N from list_tracks, return-N from get_set_mixer, or master."New value: +"track-N from list_tracks, return-N from get_set_mixer, or master."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedrecall_device_parameter_snapshot7 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / deviceId / description
        Previous value: -"Stable device ID returned by list_devices."New value: +"ID from list_devices."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable device-owner ID: track-N from list_tracks, return-N from get_set_mixer, or master."New value: +"track-N from list_tracks, return-N from get_set_mixer, or master."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedrecall_group_system_snapshot8 fields changed
      • changedInput schema / properties / busTrackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / mapping / items / properties / sourceTrackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedInput schema / properties / mapping / items / properties / targetTrackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedrecall_rack_macro_variation7 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / deviceId / description
        Previous value: -"Stable device ID returned by list_devices."New value: +"ID from list_devices."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable device-owner ID: track-N from list_tracks, return-N from get_set_mixer, or master."New value: +"track-N from list_tracks, return-N from get_set_mixer, or master."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedrecall_track_state_snapshot6 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedrecord_arrangement_take
    • Addedrecord_production_note
    • Addedrecord_session_arrangement
    • Changedredo5 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedremove_audio_warp_marker7 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedremove_midi_notes
    • Addedrename_arrangement_clip
    • Changedrename_arrangement_cue_point6 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / cuePointId / description
        Previous value: -"Stable cue-point ID."New value: +"Current cue-point ID from list_arrangement_cue_points."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedrename_rack_chain7 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / deviceId / description
        Previous value: -"Stable device ID returned by list_devices."New value: +"ID from list_devices."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable device-owner ID: track-N from list_tracks, return-N from get_set_mixer, or master."New value: +"track-N from list_tracks, return-N from get_set_mixer, or master."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedrename_rack_macro7 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / deviceId / description
        Previous value: -"Stable device ID returned by list_devices."New value: +"ID from list_devices."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable device-owner ID: track-N from list_tracks, return-N from get_set_mixer, or master."New value: +"track-N from list_tracks, return-N from get_set_mixer, or master."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedrename_session_object7 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / name / description
        Previous value: -"New name; for Return Tracks omit the automatic bus-letter prefix."New value: +"New name; Session clip labels allow up to 255 characters without controls. For Return Tracks omit the automatic bus-letter prefix."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedreturn_tracks_to_arrangement
    • Addedreverse_audio_clip
    • Changedroute_tracks_to_bus7 fields changed
      • changedInput schema / properties / busTrackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackIds / items / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedroute_tracks_to_return_bus6 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackIds / items / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedrun_production_task
    • Changedsave_device_chain_snapshot2 fields changed
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable device-owner ID: track-N from list_tracks, return-N from get_set_mixer, or master."New value: +"track-N from list_tracks, return-N from get_set_mixer, or master."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedsave_group_system_snapshot2 fields changed
      • changedInput schema / properties / busTrackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedsave_live_set7 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedSetFingerprint / description
        Previous value: -"Exact setFingerprint from get_live_state for the currently loaded Set."New value: +"Current setFingerprint."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • addedInput schema / properties / path
        Added value: +{
        +  "description": "New absolute .als; parent must exist.",
        +  "type": "string"
        +}
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedsave_midi_feel_template5 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • addedInput schema / properties / noteIds
        Added value: +{
        +  "description": "Exact source note IDs; omitted means all stored notes.",
        +  "items": {
        +    "type": "integer"
        +  },
        +  "maxItems": 4096,
        +  "minItems": 1,
        +  "type": "array",
        +  "uniqueItems": true
        +}
      • addedInput schema / properties / originBeats
        Added value: +{
        +  "description": "Clip-beat cycle origin; defaults to zero. Use an observed loop start when intended.",
        +  "minimum": 0,
        +  "type": "number"
        +}
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedsave_native_device_preset
    • Changedsave_track_state_snapshot2 fields changed
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedsearch_browser_item_metadata2 fields changed
      • removedInput schema / required
        Removed value: -[]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedsearch_browser_items4 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Maximum matching items to return."
      • addedInput schema / properties / maxDepth / description
        Added value: +"Maximum subtree depth to scan."
      • addedInput schema / properties / root / enum
        Added value: +[
        +  "audio_effects",
        +  "clips",
        +  "current_project",
        +  "drums",
        +  "hotswap_target",
        +  "instruments",
        +  "legacy_libraries",
        +  "max_for_live",
        +  "midi_effects",
        +  "packs",
        +  "plugins",
        +  "samples",
        +  "sounds",
        +  "user_folders",
        +  "user_library"
        +]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedsearch_browser_roots3 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Maximum matching items across all roots."
      • addedInput schema / properties / maxDepth / description
        Added value: +"Maximum depth below each root."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedsearch_local_splice_samples1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedsearch_presets3 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Maximum returned presets; defaults to 50 and is capped at 200."
      • removedInput schema / required
        Removed value: -[]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedselect_device_ab_slot
    • Addedselect_instrument_comparison
    • Addedselect_take_lane_audition
    • Changedset_audio_clip_state9 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • addedInput schema / properties / pitchCoarse / description
        Added value: +"Coarse pitch offset in semitones."
      • addedInput schema / properties / pitchFine / description
        Added value: +"Fine pitch offset in cents."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedset_beat_repeat_enabled7 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / deviceId / description
        Previous value: -"Stable device ID returned by list_devices."New value: +"ID from list_devices."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedset_beat_repeat_grid7 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / deviceId / description
        Previous value: -"Stable device ID returned by list_devices."New value: +"ID from list_devices."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedset_beat_repeat_interval7 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / deviceId / description
        Previous value: -"Stable device ID returned by list_devices."New value: +"ID from list_devices."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedset_browser_item_metadata4 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedset_browser_preview
    • Changedset_bulk_track_mixer6 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackIds / items / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedset_clip_parameter_envelope13 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / deviceId / description
        Previous value: -"Stable device ID returned by list_devices."New value: +"ID from list_devices."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / parameterId / description
        Previous value: -"Stable parameter ID returned by list_device_parameters."New value: +"ID from list_device_parameters."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / points / description
        Previous value: -"Replacement envelope steps."New value: +"Ordered nonoverlapping envelope steps."
      • addedInput schema / properties / points / maxItems
        Added value: +512
      • addedInput schema / properties / points / minItems
        Added value: +1
      • addedInput schema / properties / replaceExisting
        Added value: +{
        +  "description": "Explicit authority to discard the entire existing lane, including unsampled points; default false. No complete curve backup.",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedset_clip_slot_stop_button
    • Changedset_clip_timing24 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • addedInput schema / properties / editorGrid / description
        Added value: +"Native clip-editor quantization and triplet display."
      • changedInput schema / properties / editorGrid / properties / isTriplet / description
        Previous value: -"Display the clip editor on a triplet grid."New value: +"Display clip-editor triplets."
      • changedInput schema / properties / editorGrid / properties / quantization / description
        Previous value: -"Exact native editor-grid choice returned by get_clip_timing."New value: +"Editor-grid choice from get_clip_timing."
      • removedInput schema / properties / editorGrid / required
        Removed value: -[]
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / grooveId / description
        Previous value: -"Groove ID returned by get_clip_timing."New value: +"ID assigns. Null removes in macOS Clip View: saved Set, unique clip name, sole edit. Selects clip; updated bridge."
      • changedInput schema / properties / grooveId / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedInput schema / properties / launchLegato / description
        Previous value: -"Enable Legato launch for a Session clip."New value: +"Session Legato launch."
      • addedInput schema / properties / launchMode
        Added value: +{
        +  "description": "Session launch choice.",
        +  "oneOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "string"
        +    }
        +  ]
        +}
      • addedInput schema / properties / loop / description
        Added value: +"Clip loop enablement and boundaries; beats for warped clips, seconds for unwarped audio."
      • changedInput schema / properties / loop / properties / endBeats / description
        Previous value: -"MIDI or warped audio loop end in beats."New value: +"Beat end; MIDI/warped audio."
      • changedInput schema / properties / loop / properties / endSeconds / description
        Previous value: -"Unwarped audio loop end in seconds."New value: +"Second end; unwarped audio."
      • changedInput schema / properties / loop / properties / startBeats / description
        Previous value: -"MIDI or warped audio loop start in beats."New value: +"Beat start; MIDI/warped audio."
      • changedInput schema / properties / loop / properties / startSeconds / description
        Previous value: -"Unwarped audio loop start in seconds."New value: +"Second start; unwarped audio."
      • removedInput schema / properties / loop / required
        Removed value: -[]
      • changedInput schema / properties / mute / description
        Previous value: -"Mute this clip when supported by Live's native clip API."New value: +"Guarded Clip Activator mute; updated bridge."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • addedInput schema / properties / timeSignature / description
        Added value: +"Requested native numerator and denominator."
      • removedInput schema / properties / timeSignature / required
        Removed value: -[]
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedset_crossfader_state
    • Changedset_device_active8 fields changed
      • changedInput schema / properties / active / description
        Previous value: -"Requested active state."New value: +"Local Device On; parents unchanged."
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / deviceId / description
        Previous value: -"Stable device ID returned by list_devices."New value: +"ID from list_devices."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable device-owner ID: track-N from list_tracks, return-N from get_set_mixer, or master."New value: +"track-N from list_tracks, return-N from get_set_mixer, or master."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedset_device_parameter_display
    • Changedset_device_parameters8 fields changed
      • changedInput schema / properties / changes / items / properties / id / description
        Previous value: -"Stable parameter ID returned by list_device_parameters."New value: +"ID from list_device_parameters."
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / deviceId / description
        Previous value: -"Stable device ID returned by list_devices."New value: +"ID from list_devices."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable device-owner ID: track-N from list_tracks, return-N from get_set_mixer, or master."New value: +"track-N from list_tracks, return-N from get_set_mixer, or master."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedset_device_sidechain_routing7 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / deviceId / description
        Previous value: -"Stable device ID returned by list_devices."New value: +"ID from list_devices."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable device-owner ID: track-N from list_tracks, return-N from get_set_mixer, or master."New value: +"track-N from list_tracks, return-N from get_set_mixer, or master."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedset_drum_pad_state7 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / deviceId / description
        Previous value: -"Stable device ID returned by list_devices."New value: +"ID from list_devices."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable device-owner ID: track-N from list_tracks, return-N from get_set_mixer, or master."New value: +"track-N from list_tracks, return-N from get_set_mixer, or master."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedset_groove5 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedset_group_fold_state6 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedset_live_object_colors
    • Changedset_looper_state7 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / deviceId / description
        Previous value: -"Stable device ID returned by list_devices."New value: +"ID from list_devices."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedset_master_mixer8 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / outputChannelId / description
        Previous value: -"Exact available master output channel ID from get_set_mixer."New value: +"Exact available Main output channel ID from get_set_mixer."
      • changedInput schema / properties / pan / description
        Previous value: -"Master pan."New value: +"Main pan."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / volume / description
        Previous value: -"Master volume."New value: +"Main volume."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedset_midi_clip_markers
    • Changedset_midi_note_properties8 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • addedInput schema / properties / expectedNoteSelectionToken
        Added value: +{
        +  "description": "Token from get_midi_note_selection.",
        +  "maxLength": 128,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedset_mixer_panning
    • Changedset_preset_metadata5 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / presetId / description
        Previous value: -"Stable NKS preset catalog ID."New value: +"NKS catalog preset ID."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedset_rack_chain_mixer7 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / deviceId / description
        Previous value: -"Stable device ID returned by list_devices."New value: +"ID from list_devices."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable device-owner ID: track-N from list_tracks, return-N from get_set_mixer, or master."New value: +"track-N from list_tracks, return-N from get_set_mixer, or master."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedset_rack_chain_note_routing7 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / deviceId / description
        Previous value: -"Stable device ID returned by list_devices."New value: +"ID from list_devices."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable device-owner ID: track-N from list_tracks, return-N from get_set_mixer, or master."New value: +"track-N from list_tracks, return-N from get_set_mixer, or master."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedset_rack_macro_mapping_edge7 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / deviceId / description
        Previous value: -"Stable device ID returned by list_devices."New value: +"ID from list_devices."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable device-owner ID: track-N from list_tracks, return-N from get_set_mixer, or master."New value: +"track-N from list_tracks, return-N from get_set_mixer, or master."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedset_return_mixer6 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / returnTrackId / description
        Previous value: -"Stable return-track ID."New value: +"Exact current Return ID."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedset_scene_launch_quantization6 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / sceneId / description
        Previous value: -"Stable scene ID returned by list_scenes."New value: +"ID from list_scenes."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedset_scene_musical_context6 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / sceneId / description
        Previous value: -"Stable scene ID returned by list_scenes."New value: +"ID from list_scenes."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedset_selected_parameter
    • Addedset_session_clip_entry
    • Addedset_session_midi_overdub
    • Addedset_simpler_manual_slices
    • Addedset_simpler_sample_region
    • Changedset_song_musical_context15 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • addedInput schema / properties / groove / description
        Added value: +"Global groove intensity and swing."
      • removedInput schema / properties / groove / required
        Removed value: -[]
      • addedInput schema / properties / key / description
        Added value: +"Live song root, scale name, and scale mode."
      • removedInput schema / properties / key / required
        Removed value: -[]
      • addedInput schema / properties / loop / description
        Added value: +"Arrangement loop enablement and boundaries in beats."
      • removedInput schema / properties / loop / required
        Removed value: -[]
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • addedInput schema / properties / quantization / description
        Added value: +"Native launch and MIDI-recording quantization choices."
      • removedInput schema / properties / quantization / required
        Removed value: -[]
      • addedInput schema / properties / timeSignature / description
        Added value: +"Requested native numerator and denominator."
      • removedInput schema / properties / timeSignature / required
        Removed value: -[]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedset_tempo5 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedset_track_freeze_state6 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedset_track_midi_routing6 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedset_track_mixer6 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedset_track_routing6 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedset_track_send_db
    • Addedset_track_volume_db
    • Changedset_transport_context5 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedset_transport_recording_context7 fields changed
      • removedInput schema / properties / arrangement / required
        Removed value: -[]
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • removedInput schema / properties / session / required
        Removed value: -[]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedshow_live_object
    • Addedshow_take_lanes
    • Addedstart_production_session
    • Changedstop_all_clips5 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedstop_clip7 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedstore_rack_macro_variation7 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / deviceId / description
        Previous value: -"Stable device ID returned by list_devices."New value: +"ID from list_devices."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable device-owner ID: track-N from list_tracks, return-N from get_set_mixer, or master."New value: +"track-N from list_tracks, return-N from get_set_mixer, or master."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedtransform_midi_notes13 fields changed
      • changedInput schema / properties / clipId / description
        Previous value: -"Stable clip ID: track-N:clip-M from list_clips, or track-N:arrangement-clip-M from list_arrangement_clips for tools that support Arrangement clips."New value: +"Session ID from list_clips; Arrangement ID from list_arrangement_clips where supported."
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • addedInput schema / properties / operation / allOf
        Added value: +[
        +  {
        +    "else": {
        +      "properties": {
        +        "endBeats": false,
        +        "startBeats": false
        +      }
        +    },
        +    "if": {
        +      "properties": {
        +        "type": {
        +          "const": "reverseTime"
        +        }
        +      }
        +    },
        +    "then": {
        +      "properties": {
        +        "endBeats": {},
        +        "factor": false,
        +        "gapBeats": false,
        +        "gridBeats": false,
        +        "offsetBeats": false,
        +        "originBeats": false,
        +        "quantizeDuration": false,
        +        "repeats": false,
        +        "startBeats": {},
        +        "strength": false,
        +        "target": false
        +      },
        +      "required": [
        +        "startBeats",
        +        "endBeats"
        +      ]
        +    }
        +  }
        +]
      • addedInput schema / properties / operation / properties / endBeats
        Added value: +{
        +  "description": "Increasing clip-beat window end; at most 1024 beats wide.",
        +  "exclusiveMinimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / properties / operation / properties / factor
        Added value: +{
        +  "description": "scaleTime multiplies note starts around originBeats and durations. Range 0.25–4 excluding 1; retains bounds and tempo.",
        +  "maximum": 4,
        +  "minimum": 0.25,
        +  "type": "number"
        +}
      • addedInput schema / properties / operation / properties / originBeats
        Added value: +{
        +  "description": "Required scaleTime anchor in clip beats within current playback bounds.",
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / properties / operation / properties / startBeats
        Added value: +{
        +  "description": "Absolute clip-beat window start.",
        +  "minimum": 0,
        +  "type": "number"
        +}
      • changedInput schema / properties / operation / properties / type / enum
        Previous value: -[
        -  "quantize",
        -  "legato",
        -  "duplicate"
        -]New value: +[
        +  "quantize",
        +  "legato",
        +  "duplicate",
        +  "scaleTime",
        +  "reverseTime"
        +]
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedInput schema / properties / trackId / description
        Previous value: -"Stable track ID returned by list_tracks."New value: +"ID from list_tracks."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedtransport_play5 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedtransport_stop5 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Changedundo5 fields changed
      • changedInput schema / properties / confirmationToken / description
        Previous value: -"Short-lived, single-use token returned by the matching dry run."New value: +"Single-use plan token."
      • changedInput schema / properties / dryRun / description
        Previous value: -"Omit or true to return a plan; false requires a valid confirmationToken."New value: +"False executes with token and hash."
      • changedInput schema / properties / expectedStateVersion / description
        Previous value: -"Exact stateVersion observed immediately before planning."New value: +"Observed stateVersion."
      • changedInput schema / properties / planHash / description
        Previous value: -"Hash returned by the matching dry run."New value: +"Plan hash."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "type": "object"
        +}
    • Addedungroup_tracks
  3. 58 tool updatesv0.2.0
    • Addedadjust_rack_macro_count
    • Changedanalyze_audio_clip1 field changed
      • addedInput schema / properties / includePitchEvents
        Added value: +{
        +  "description": "Group selected-channel monophonic pitch frames into approximate note events for review; no correction.",
        +  "type": "boolean"
        +}
    • Changedanalyze_audio_file1 field changed
      • addedInput schema / properties / includePitchEvents
        Added value: +{
        +  "description": "Group selected-channel monophonic pitch frames into approximate note events for review; no correction.",
        +  "type": "boolean"
        +}
    • Addedanalyze_midi_feel
    • Addedapply_midi_feel_template
    • Addedapply_monophonic_audio_tuning
    • Addedbrowse_local_splice_directory
    • Addedcapture_group_system_snapshot
    • Addedcapture_midi_session
    • Addedclaim_nks_generation_job
    • Addedcomplete_nks_generation_job
    • Addeddelete_rack_macro_variation
    • Addedenqueue_nks_generation_jobs
    • Addedfail_nks_generation_job
    • Changedget_browser_item_metadata2 fields changed
      • changedInput schema / properties / path / items / description
        Previous value: -"Exact browser path segment."New value: +"Exact browser segment, or [absolute directory, relative audio path] for local_splice."
      • changedInput schema / properties / root / description
        Previous value: -"Live browser root."New value: +"Live browser root or local_splice."
    • Changedget_browser_items1 field changed
      • addedInput schema / properties / includeMetadata
        Added value: +{
        +  "description": "Join private MCP tags and favorites for children with exact URIs.",
        +  "type": "boolean"
        +}
    • Changedget_factory_browser_items1 field changed
      • addedInput schema / properties / includeMetadata
        Added value: +{
        +  "description": "Join private MCP tags and favorites for children with exact URIs.",
        +  "type": "boolean"
        +}
    • Addedget_nks_generation_job
    • Addedget_nks_generation_status
    • Changedget_producer_chain_blueprint1 field changed
      • changedInput schema / properties / target / enum
        Previous value: -[
        -  "bass",
        -  "drums",
        -  "vocals",
        -  "guitar",
        -  "keys",
        -  "synth",
        -  "mix-bus",
        -  "mastering",
        -  "reverb-return",
        -  "delay-return",
        -  "layered-bass-system",
        -  "layered-synth-system"
        -]New value: +[
        +  "bass",
        +  "drums",
        +  "vocals",
        +  "guitar",
        +  "keys",
        +  "synth",
        +  "mix-bus",
        +  "mastering",
        +  "reverb-return",
        +  "delay-return",
        +  "layered-bass-system",
        +  "layered-synth-system",
        +  "layered-drums-system",
        +  "layered-keys-system",
        +  "layered-vocals-system",
        +  "layered-guitar-system"
        +]
    • Addedheartbeat_nks_generation_job
    • Changedinspect_clip_groove_postconditions1 field changed
      • changedInput schema / properties / operation / enum
        Previous value: -[
        -  "bake",
        -  "extract"
        -]New value: +[
        +  "bake",
        +  "extract",
        +  "remove"
        +]
    • Changedinspect_producer_bus2 fields changed
      • addedInput schema / properties / children / items / properties / pluginId
        Added value: +{
        +  "enum": [
        +    "serum-2",
        +    "omnisphere",
        +    "vps-avenger"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / target / enum
        Previous value: -[
        -  "layered-bass-system",
        -  "layered-synth-system"
        -]New value: +[
        +  "layered-bass-system",
        +  "layered-synth-system",
        +  "layered-drums-system",
        +  "layered-keys-system",
        +  "layered-vocals-system",
        +  "layered-guitar-system"
        +]
    • Changedinspect_producer_chain1 field changed
      • changedInput schema / properties / target / enum
        Previous value: -[
        -  "bass",
        -  "drums",
        -  "vocals",
        -  "guitar",
        -  "keys",
        -  "synth",
        -  "mix-bus",
        -  "mastering",
        -  "reverb-return",
        -  "delay-return",
        -  "layered-bass-system",
        -  "layered-synth-system"
        -]New value: +[
        +  "bass",
        +  "drums",
        +  "vocals",
        +  "guitar",
        +  "keys",
        +  "synth",
        +  "mix-bus",
        +  "mastering",
        +  "reverb-return",
        +  "delay-return",
        +  "layered-bass-system",
        +  "layered-synth-system",
        +  "layered-drums-system",
        +  "layered-keys-system",
        +  "layered-vocals-system",
        +  "layered-guitar-system"
        +]
    • Addedinspect_producer_return_bus
    • Changedlaunch_clip2 fields changed
      • addedInput schema / properties / launchQuantization
        Added value: +{
        +  "description": "One-shot native launch quantization choice from get_clip_timing or list_clips.launchQuantizationChoices.",
        +  "oneOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "string"
        +    }
        +  ]
        +}
      • addedInput schema / properties / recordLengthBeats
        Added value: +{
        +  "description": "Fixed recording length in beats for an empty armed slot.",
        +  "exclusiveMinimum": 0,
        +  "type": "number"
        +}
    • Changedlaunch_scene1 field changed
      • addedInput schema / properties / forceLegato
        Added value: +{
        +  "description": "Force immediate Legato launch for every clip in this scene; defaults to false.",
        +  "type": "boolean"
        +}
    • Addedlist_browser_roots
    • Addedlist_local_splice_roots
    • Addedlist_saved_snapshots
    • Addedload_device_chain_snapshot
    • Addedload_group_system_snapshot
    • Addedload_midi_feel_template
    • Addedmap_rack_macro_to_parameter
    • Addedopen_live_set
    • Addedplan_group_system_recall
    • Changedpropose_audio_transient_warp2 fields changed
      • addedInput schema / properties / feelBars
        Added value: +{
        +  "description": "Aggregate selected onset offsets and strengths over a repeating one-to-eight-bar clip-meter cycle; grid must divide a bar.",
        +  "maximum": 8,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / includeMusicalRoles
        Added value: +{
        +  "description": "Label each nearest grid slot by clip-meter bar and pulse role; requires a grid that divides one bar.",
        +  "type": "boolean"
        +}
    • Addedrandomize_rack_macros
    • Changedrecall_device_chain_snapshot5 fields changed
      • removedInput schema / properties / snapshot / additionalProperties
        Removed value: -false
      • addedInput schema / properties / snapshot / oneOf
        Added value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "devices": {
        +        "description": "Ordered top-level device topology.",
        +        "items": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "className": {
        +              "description": "Exact native device class.",
        +              "type": "string"
        +            },
        +            "name": {
        +              "description": "Captured device name.",
        +              "type": "string"
        +            },
        +            "parameters": {
        +              "description": "Complete ordered exposed parameter layout and values.",
        +              "items": {
        +                "additionalProperties": false,
        +                "properties": {
        +                  "max": {
        +                    "description": "Native maximum.",
        +                    "type": "number"
        +                  },
        +                  "min": {
        +                    "description": "Native minimum.",
        +                    "type": "number"
        +                  },
        +                  "originalName": {
        +                    "description": "Native parameter identity in index order.",
        +                    "type": "string"
        +                  },
        +                  "quantized": {
        +                    "description": "Native quantization.",
        +                    "type": "boolean"
        +                  },
        +                  "value": {
        +                    "description": "Captured native value.",
        +                    "type": "number"
        +                  },
        +                  "valueItems": {
        +                    "description": "Exact ordered choice labels.",
        +                    "items": {
        +                      "description": "Native value label.",
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "originalName",
        +                  "min",
        +                  "max",
        +                  "quantized",
        +                  "valueItems",
        +                  "value"
        +                ],
        +                "type": "object"
        +              },
        +              "type": "array"
        +            },
        +            "type": {
        +              "description": "Native device type.",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "name",
        +            "className",
        +            "type",
        +            "parameters"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "format": {
        +        "const": "cavi-device-chain-v1"
        +      }
        +    },
        +    "required": [
        +      "format",
        +      "devices"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "$defs": {
        +      "chain": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "devices": {
        +            "description": "Nested devices in native order.",
        +            "items": {
        +              "$ref": "#/properties/snapshot/oneOf/1/$defs/device"
        +            },
        +            "type": "array"
        +          },
        +          "name": {
        +            "description": "Captured chain name.",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "devices"
        +        ],
        +        "type": "object"
        +      },
        +      "device": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "chains": {
        +            "description": "Rack chains in native order.",
        +            "items": {
        +              "$ref": "#/properties/snapshot/oneOf/1/$defs/chain"
        +            },
        +            "type": "array"
        +          },
        +          "className": {
        +            "description": "Exact native device class.",
        +            "type": "string"
        +          },
        +          "name": {
        +            "description": "Captured device name.",
        +            "type": "string"
        +          },
        +          "parameters": {
        +            "description": "Complete exposed parameter layout and values.",
        +            "items": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "max": {
        +                  "description": "Native maximum.",
        +                  "type": "number"
        +                },
        +                "min": {
        +                  "description": "Native minimum.",
        +                  "type": "number"
        +                },
        +                "originalName": {
        +                  "description": "Native parameter identity in index order.",
        +                  "type": "string"
        +                },
        +                "quantized": {
        +                  "description": "Native quantization.",
        +                  "type": "boolean"
        +                },
        +                "value": {
        +                  "description": "Captured native value.",
        +                  "type": "number"
        +                },
        +                "valueItems": {
        +                  "description": "Exact ordered choice labels.",
        +                  "items": {
        +                    "description": "Native value label.",
        +                    "type": "string"
        +                  },
        +                  "type": "array"
        +                }
        +              },
        +              "required": [
        +                "originalName",
        +                "min",
        +                "max",
        +                "quantized",
        +                "valueItems",
        +                "value"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "returnChains": {
        +            "description": "Rack return chains in native order.",
        +            "items": {
        +              "$ref": "#/properties/snapshot/oneOf/1/$defs/chain"
        +            },
        +            "type": "array"
        +          },
        +          "type": {
        +            "description": "Native device type.",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "className",
        +          "type",
        +          "parameters"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "additionalProperties": false,
        +    "properties": {
        +      "devices": {
        +        "description": "Ordered devices including nested rack chains.",
        +        "items": {
        +          "$ref": "#/properties/snapshot/oneOf/1/$defs/device"
        +        },
        +        "type": "array"
        +      },
        +      "format": {
        +        "const": "cavi-device-chain-v2"
        +      }
        +    },
        +    "required": [
        +      "format",
        +      "devices"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "$defs": {
        +      "chain": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "devices": {
        +            "description": "Nested devices in native order.",
        +            "items": {
        +              "$ref": "#/properties/snapshot/oneOf/2/$defs/device"
        +            },
        +            "type": "array"
        +          },
        +          "mixer": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "mute": {
        +                "type": [
        +                  "boolean",
        +                  "null"
        +                ]
        +              },
        +              "pan": {
        +                "type": [
        +                  "number",
        +                  "null"
        +                ]
        +              },
        +              "sends": {
        +                "description": "Ordered rack-chain sends.",
        +                "items": {
        +                  "description": "Ordered native send level.",
        +                  "type": "number"
        +                },
        +                "type": "array"
        +              },
        +              "solo": {
        +                "type": [
        +                  "boolean",
        +                  "null"
        +                ]
        +              },
        +              "volume": {
        +                "type": [
        +                  "number",
        +                  "null"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "volume",
        +              "pan",
        +              "sends",
        +              "mute",
        +              "solo"
        +            ],
        +            "type": "object"
        +          },
        +          "name": {
        +            "description": "Captured chain name.",
        +            "type": "string"
        +          },
        +          "noteRouting": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "inputNote": {
        +                "maximum": 127,
        +                "minimum": 0,
        +                "type": [
        +                  "integer",
        +                  "null"
        +                ]
        +              },
        +              "outputNote": {
        +                "maximum": 127,
        +                "minimum": 0,
        +                "type": [
        +                  "integer",
        +                  "null"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "inputNote",
        +              "outputNote"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "mixer",
        +          "noteRouting",
        +          "devices"
        +        ],
        +        "type": "object"
        +      },
        +      "device": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "chains": {
        +            "description": "Rack chains in native order.",
        +            "items": {
        +              "$ref": "#/properties/snapshot/oneOf/2/$defs/chain"
        +            },
        +            "type": "array"
        +          },
        +          "className": {
        +            "description": "Exact native device class.",
        +            "type": "string"
        +          },
        +          "name": {
        +            "description": "Captured device name.",
        +            "type": "string"
        +          },
        +          "parameters": {
        +            "description": "Complete exposed parameter layout and values.",
        +            "items": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "max": {
        +                  "description": "Native maximum.",
        +                  "type": "number"
        +                },
        +                "min": {
        +                  "description": "Native minimum.",
        +                  "type": "number"
        +                },
        +                "originalName": {
        +                  "description": "Native parameter identity in index order.",
        +                  "type": "string"
        +                },
        +                "quantized": {
        +                  "description": "Native quantization.",
        +                  "type": "boolean"
        +                },
        +                "value": {
        +                  "description": "Captured native value.",
        +                  "type": "number"
        +                },
        +                "valueItems": {
        +                  "description": "Exact ordered choice labels.",
        +                  "items": {
        +                    "description": "Native value label.",
        +                    "type": "string"
        +                  },
        +                  "type": "array"
        +                }
        +              },
        +              "required": [
        +                "originalName",
        +                "min",
        +                "max",
        +                "quantized",
        +                "valueItems",
        +                "value"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "returnChains": {
        +            "description": "Rack return chains in native order.",
        +            "items": {
        +              "$ref": "#/properties/snapshot/oneOf/2/$defs/chain"
        +            },
        +            "type": "array"
        +          },
        +          "type": {
        +            "description": "Native device type.",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "className",
        +          "type",
        +          "parameters"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "additionalProperties": false,
        +    "properties": {
        +      "devices": {
        +        "description": "Ordered devices including rack controls.",
        +        "items": {
        +          "$ref": "#/properties/snapshot/oneOf/2/$defs/device"
        +        },
        +        "type": "array"
        +      },
        +      "format": {
        +        "const": "cavi-device-chain-v3"
        +      }
        +    },
        +    "required": [
        +      "format",
        +      "devices"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "$defs": {
        +      "chain": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "devices": {
        +            "description": "Nested devices in native order.",
        +            "items": {
        +              "$ref": "#/properties/snapshot/oneOf/3/$defs/device"
        +            },
        +            "type": "array"
        +          },
        +          "mixer": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "mute": {
        +                "type": [
        +                  "boolean",
        +                  "null"
        +                ]
        +              },
        +              "pan": {
        +                "type": [
        +                  "number",
        +                  "null"
        +                ]
        +              },
        +              "sends": {
        +                "description": "Ordered rack-chain sends.",
        +                "items": {
        +                  "description": "Ordered native send level.",
        +                  "type": "number"
        +                },
        +                "type": "array"
        +              },
        +              "solo": {
        +                "type": [
        +                  "boolean",
        +                  "null"
        +                ]
        +              },
        +              "volume": {
        +                "type": [
        +                  "number",
        +                  "null"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "volume",
        +              "pan",
        +              "sends",
        +              "mute",
        +              "solo"
        +            ],
        +            "type": "object"
        +          },
        +          "name": {
        +            "description": "Captured chain name.",
        +            "type": "string"
        +          },
        +          "noteRouting": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "inputNote": {
        +                "maximum": 127,
        +                "minimum": 0,
        +                "type": [
        +                  "integer",
        +                  "null"
        +                ]
        +              },
        +              "outputNote": {
        +                "maximum": 127,
        +                "minimum": 0,
        +                "type": [
        +                  "integer",
        +                  "null"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "inputNote",
        +              "outputNote"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "mixer",
        +          "noteRouting",
        +          "devices"
        +        ],
        +        "type": "object"
        +      },
        +      "device": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "chains": {
        +            "description": "Rack chains in native order.",
        +            "items": {
        +              "$ref": "#/properties/snapshot/oneOf/3/$defs/chain"
        +            },
        +            "type": "array"
        +          },
        +          "className": {
        +            "description": "Exact native device class.",
        +            "type": "string"
        +          },
        +          "drumPads": {
        +            "description": "Populated Drum Rack pads in native order.",
        +            "items": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "mute": {
        +                  "description": "Captured pad mute.",
        +                  "type": "boolean"
        +                },
        +                "note": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "solo": {
        +                  "description": "Captured pad solo.",
        +                  "type": "boolean"
        +                }
        +              },
        +              "required": [
        +                "note",
        +                "mute",
        +                "solo"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "name": {
        +            "description": "Captured device name.",
        +            "type": "string"
        +          },
        +          "parameters": {
        +            "description": "Complete exposed parameter layout and values.",
        +            "items": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "max": {
        +                  "description": "Native maximum.",
        +                  "type": "number"
        +                },
        +                "min": {
        +                  "description": "Native minimum.",
        +                  "type": "number"
        +                },
        +                "originalName": {
        +                  "description": "Native parameter identity in index order.",
        +                  "type": "string"
        +                },
        +                "quantized": {
        +                  "description": "Native quantization.",
        +                  "type": "boolean"
        +                },
        +                "value": {
        +                  "description": "Captured native value.",
        +                  "type": "number"
        +                },
        +                "valueItems": {
        +                  "description": "Exact ordered choice labels.",
        +                  "items": {
        +                    "description": "Native value label.",
        +                    "type": "string"
        +                  },
        +                  "type": "array"
        +                }
        +              },
        +              "required": [
        +                "originalName",
        +                "min",
        +                "max",
        +                "quantized",
        +                "valueItems",
        +                "value"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "returnChains": {
        +            "description": "Rack return chains in native order.",
        +            "items": {
        +              "$ref": "#/properties/snapshot/oneOf/3/$defs/chain"
        +            },
        +            "type": "array"
        +          },
        +          "type": {
        +            "description": "Native device type.",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "className",
        +          "type",
        +          "parameters"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "additionalProperties": false,
        +    "properties": {
        +      "devices": {
        +        "description": "Ordered devices including rack controls.",
        +        "items": {
        +          "$ref": "#/properties/snapshot/oneOf/3/$defs/device"
        +        },
        +        "type": "array"
        +      },
        +      "format": {
        +        "const": "cavi-device-chain-v4"
        +      }
        +    },
        +    "required": [
        +      "format",
        +      "devices"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "$defs": {
        +      "chain": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "devices": {
        +            "description": "Nested devices in native order.",
        +            "items": {
        +              "$ref": "#/properties/snapshot/oneOf/4/$defs/device"
        +            },
        +            "type": "array"
        +          },
        +          "mixer": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "mute": {
        +                "type": [
        +                  "boolean",
        +                  "null"
        +                ]
        +              },
        +              "pan": {
        +                "type": [
        +                  "number",
        +                  "null"
        +                ]
        +              },
        +              "sends": {
        +                "description": "Ordered rack-chain sends.",
        +                "items": {
        +                  "description": "Ordered native send level.",
        +                  "type": "number"
        +                },
        +                "type": "array"
        +              },
        +              "solo": {
        +                "type": [
        +                  "boolean",
        +                  "null"
        +                ]
        +              },
        +              "volume": {
        +                "type": [
        +                  "number",
        +                  "null"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "volume",
        +              "pan",
        +              "sends",
        +              "mute",
        +              "solo"
        +            ],
        +            "type": "object"
        +          },
        +          "name": {
        +            "description": "Captured chain name.",
        +            "type": "string"
        +          },
        +          "noteRouting": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "inputNote": {
        +                "maximum": 127,
        +                "minimum": 0,
        +                "type": [
        +                  "integer",
        +                  "null"
        +                ]
        +              },
        +              "outputNote": {
        +                "maximum": 127,
        +                "minimum": 0,
        +                "type": [
        +                  "integer",
        +                  "null"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "inputNote",
        +              "outputNote"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "mixer",
        +          "noteRouting",
        +          "devices"
        +        ],
        +        "type": "object"
        +      },
        +      "device": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "chains": {
        +            "description": "Rack chains in native order.",
        +            "items": {
        +              "$ref": "#/properties/snapshot/oneOf/4/$defs/chain"
        +            },
        +            "type": "array"
        +          },
        +          "className": {
        +            "description": "Exact native device class.",
        +            "type": "string"
        +          },
        +          "drumPads": {
        +            "description": "Populated Drum Rack pads in native order.",
        +            "items": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "mute": {
        +                  "description": "Captured pad mute.",
        +                  "type": "boolean"
        +                },
        +                "note": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "solo": {
        +                  "description": "Captured pad solo.",
        +                  "type": "boolean"
        +                }
        +              },
        +              "required": [
        +                "note",
        +                "mute",
        +                "solo"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "name": {
        +            "description": "Captured device name.",
        +            "type": "string"
        +          },
        +          "parameters": {
        +            "description": "Complete exposed parameter layout and values.",
        +            "items": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "max": {
        +                  "description": "Native maximum.",
        +                  "type": "number"
        +                },
        +                "min": {
        +                  "description": "Native minimum.",
        +                  "type": "number"
        +                },
        +                "originalName": {
        +                  "description": "Native parameter identity in index order.",
        +                  "type": "string"
        +                },
        +                "quantized": {
        +                  "description": "Native quantization.",
        +                  "type": "boolean"
        +                },
        +                "value": {
        +                  "description": "Captured native value.",
        +                  "type": "number"
        +                },
        +                "valueItems": {
        +                  "description": "Exact ordered choice labels.",
        +                  "items": {
        +                    "description": "Native value label.",
        +                    "type": "string"
        +                  },
        +                  "type": "array"
        +                }
        +              },
        +              "required": [
        +                "originalName",
        +                "min",
        +                "max",
        +                "quantized",
        +                "valueItems",
        +                "value"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "returnChains": {
        +            "description": "Rack return chains in native order.",
        +            "items": {
        +              "$ref": "#/properties/snapshot/oneOf/4/$defs/chain"
        +            },
        +            "type": "array"
        +          },
        +          "type": {
        +            "description": "Native device type.",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "className",
        +          "type",
        +          "parameters"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "additionalProperties": false,
        +    "properties": {
        +      "devices": {
        +        "description": "Ordered devices including rack controls.",
        +        "items": {
        +          "$ref": "#/properties/snapshot/oneOf/4/$defs/device"
        +        },
        +        "type": "array"
        +      },
        +      "format": {
        +        "const": "cavi-device-chain-v5"
        +      },
        +      "ownerMixer": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "mute": {
        +            "description": "Return bus mute.",
        +            "type": "boolean"
        +          },
        +          "pan": {
        +            "description": "Return bus pan.",
        +            "type": "number"
        +          },
        +          "solo": {
        +            "description": "Return bus solo.",
        +            "type": "boolean"
        +          },
        +          "volume": {
        +            "description": "Return bus volume.",
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "volume",
        +          "pan",
        +          "mute",
        +          "solo"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "format",
        +      "devices",
        +      "ownerMixer"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "$defs": {
        +      "chain": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "devices": {
        +            "description": "Nested devices in native order.",
        +            "items": {
        +              "$ref": "#/properties/snapshot/oneOf/5/$defs/device"
        +            },
        +            "type": "array"
        +          },
        +          "mixer": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "mute": {
        +                "type": [
        +                  "boolean",
        +                  "null"
        +                ]
        +              },
        +              "pan": {
        +                "type": [
        +                  "number",
        +                  "null"
        +                ]
        +              },
        +              "sends": {
        +                "description": "Ordered rack-chain sends.",
        +                "items": {
        +                  "description": "Ordered native send level.",
        +                  "type": "number"
        +                },
        +                "type": "array"
        +              },
        +              "solo": {
        +                "type": [
        +                  "boolean",
        +                  "null"
        +                ]
        +              },
        +              "volume": {
        +                "type": [
        +                  "number",
        +                  "null"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "volume",
        +              "pan",
        +              "sends",
        +              "mute",
        +              "solo"
        +            ],
        +            "type": "object"
        +          },
        +          "name": {
        +            "description": "Captured chain name.",
        +            "type": "string"
        +          },
        +          "noteRouting": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "inputNote": {
        +                "maximum": 127,
        +                "minimum": 0,
        +                "type": [
        +                  "integer",
        +                  "null"
        +                ]
        +              },
        +              "outputNote": {
        +                "maximum": 127,
        +                "minimum": 0,
        +                "type": [
        +                  "integer",
        +                  "null"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "inputNote",
        +              "outputNote"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "mixer",
        +          "noteRouting",
        +          "devices"
        +        ],
        +        "type": "object"
        +      },
        +      "device": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "chains": {
        +            "description": "Rack chains in native order.",
        +            "items": {
        +              "$ref": "#/properties/snapshot/oneOf/5/$defs/chain"
        +            },
        +            "type": "array"
        +          },
        +          "className": {
        +            "description": "Exact native device class.",
        +            "type": "string"
        +          },
        +          "drumPads": {
        +            "description": "Populated Drum Rack pads in native order.",
        +            "items": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "mute": {
        +                  "description": "Captured pad mute.",
        +                  "type": "boolean"
        +                },
        +                "note": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "solo": {
        +                  "description": "Captured pad solo.",
        +                  "type": "boolean"
        +                }
        +              },
        +              "required": [
        +                "note",
        +                "mute",
        +                "solo"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "name": {
        +            "description": "Captured device name.",
        +            "type": "string"
        +          },
        +          "parameters": {
        +            "description": "Complete exposed parameter layout and values.",
        +            "items": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "max": {
        +                  "description": "Native maximum.",
        +                  "type": "number"
        +                },
        +                "min": {
        +                  "description": "Native minimum.",
        +                  "type": "number"
        +                },
        +                "originalName": {
        +                  "description": "Native parameter identity in index order.",
        +                  "type": "string"
        +                },
        +                "quantized": {
        +                  "description": "Native quantization.",
        +                  "type": "boolean"
        +                },
        +                "value": {
        +                  "description": "Captured native value.",
        +                  "type": "number"
        +                },
        +                "valueItems": {
        +                  "description": "Exact ordered choice labels.",
        +                  "items": {
        +                    "description": "Native value label.",
        +                    "type": "string"
        +                  },
        +                  "type": "array"
        +                }
        +              },
        +              "required": [
        +                "originalName",
        +                "min",
        +                "max",
        +                "quantized",
        +                "valueItems",
        +                "value"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "returnChains": {
        +            "description": "Rack return chains in native order.",
        +            "items": {
        +              "$ref": "#/properties/snapshot/oneOf/5/$defs/chain"
        +            },
        +            "type": "array"
        +          },
        +          "type": {
        +            "description": "Native device type.",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "className",
        +          "type",
        +          "parameters"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "additionalProperties": false,
        +    "properties": {
        +      "devices": {
        +        "description": "Ordered devices including rack controls.",
        +        "items": {
        +          "$ref": "#/properties/snapshot/oneOf/5/$defs/device"
        +        },
        +        "type": "array"
        +      },
        +      "format": {
        +        "const": "cavi-device-chain-v6"
        +      },
        +      "ownerMixer": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "crossfader": {
        +            "description": "Crossfader.",
        +            "type": "number"
        +          },
        +          "cueVolume": {
        +            "description": "Cue volume.",
        +            "type": "number"
        +          },
        +          "outputChannelId": {
        +            "description": "Exact available master hardware output channel ID, or null if unsupported.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "pan": {
        +            "description": "Master pan.",
        +            "type": "number"
        +          },
        +          "volume": {
        +            "description": "Master volume.",
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "volume",
        +          "pan",
        +          "cueVolume",
        +          "crossfader",
        +          "outputChannelId"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "format",
        +      "devices",
        +      "ownerMixer"
        +    ],
        +    "type": "object"
        +  }
        +]
      • removedInput schema / properties / snapshot / properties
        Removed value: -{
        -  "devices": {
        -    "description": "Ordered top-level device topology.",
        -    "items": {
        -      "additionalProperties": false,
        -      "properties": {
        -        "className": {
        -          "description": "Exact native device class.",
        -          "type": "string"
        -        },
        -        "name": {
        -          "description": "Captured device name.",
        -          "type": "string"
        -        },
        -        "parameters": {
        -          "description": "Complete ordered exposed parameter layout and values.",
        -          "items": {
        -            "additionalProperties": false,
        -            "properties": {
        -              "max": {
        -                "description": "Native maximum.",
        -                "type": "number"
        -              },
        -              "min": {
        -                "description": "Native minimum.",
        -                "type": "number"
        -              },
        -              "originalName": {
        -                "description": "Native parameter identity in index order.",
        -                "type": "string"
        -              },
        -              "quantized": {
        -                "description": "Native quantization.",
        -                "type": "boolean"
        -              },
        -              "value": {
        -                "description": "Captured native value.",
        -                "type": "number"
        -              },
        -              "valueItems": {
        -                "description": "Exact ordered choice labels.",
        -                "items": {
        -                  "description": "Native value label.",
        -                  "type": "string"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "originalName",
        -              "min",
        -              "max",
        -              "quantized",
        -              "valueItems",
        -              "value"
        -            ],
        -            "type": "object"
        -          },
        -          "type": "array"
        -        },
        -        "type": {
        -          "description": "Native device type.",
        -          "type": "string"
        -        }
        -      },
        -      "required": [
        -        "name",
        -        "className",
        -        "type",
        -        "parameters"
        -      ],
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  "format": {
        -    "const": "cavi-device-chain-v1"
        -  }
        -}
      • removedInput schema / properties / snapshot / required
        Removed value: -[
        -  "format",
        -  "devices"
        -]
      • removedInput schema / properties / snapshot / type
        Removed value: -"object"
    • Addedrecall_group_system_snapshot
    • Addedrecall_rack_macro_variation
    • Changedrecall_track_state_snapshot5 fields changed
      • removedInput schema / properties / snapshot / additionalProperties
        Removed value: -false
      • addedInput schema / properties / snapshot / oneOf
        Added value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "devices": {
        +        "description": "Ordered top-level device topology.",
        +        "items": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "className": {
        +              "description": "Exact native device class.",
        +              "type": "string"
        +            },
        +            "name": {
        +              "description": "Captured device name.",
        +              "type": "string"
        +            },
        +            "parameters": {
        +              "description": "Complete ordered exposed parameter layout and values.",
        +              "items": {
        +                "additionalProperties": false,
        +                "properties": {
        +                  "max": {
        +                    "description": "Native maximum.",
        +                    "type": "number"
        +                  },
        +                  "min": {
        +                    "description": "Native minimum.",
        +                    "type": "number"
        +                  },
        +                  "originalName": {
        +                    "description": "Native parameter identity in index order.",
        +                    "type": "string"
        +                  },
        +                  "quantized": {
        +                    "description": "Native quantization.",
        +                    "type": "boolean"
        +                  },
        +                  "value": {
        +                    "description": "Captured native value.",
        +                    "type": "number"
        +                  },
        +                  "valueItems": {
        +                    "description": "Exact ordered choice labels.",
        +                    "items": {
        +                      "description": "Native value label.",
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  }
        +                },
        +                "required": [
        +                  "originalName",
        +                  "min",
        +                  "max",
        +                  "quantized",
        +                  "valueItems",
        +                  "value"
        +                ],
        +                "type": "object"
        +              },
        +              "type": "array"
        +            },
        +            "type": {
        +              "description": "Native device type.",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "name",
        +            "className",
        +            "type",
        +            "parameters"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "format": {
        +        "const": "cavi-track-state-v1"
        +      },
        +      "mixer": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "mute": {
        +            "description": "Captured mute.",
        +            "type": "boolean"
        +          },
        +          "pan": {
        +            "description": "Captured pan.",
        +            "type": "number"
        +          },
        +          "sends": {
        +            "description": "Ordered named sends.",
        +            "items": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "id": {
        +                  "description": "Stable return ID.",
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "description": "Captured return name.",
        +                  "type": "string"
        +                },
        +                "value": {
        +                  "description": "Captured send value.",
        +                  "type": "number"
        +                }
        +              },
        +              "required": [
        +                "id",
        +                "name",
        +                "value"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "solo": {
        +            "description": "Captured solo.",
        +            "type": "boolean"
        +          },
        +          "volume": {
        +            "description": "Captured volume.",
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "volume",
        +          "pan",
        +          "mute",
        +          "solo",
        +          "sends"
        +        ],
        +        "type": "object"
        +      },
        +      "routing": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "inputChannelId": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "inputTypeId": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "monitoring": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "outputChannelId": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "outputTypeId": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "inputTypeId",
        +          "inputChannelId",
        +          "outputTypeId",
        +          "outputChannelId",
        +          "monitoring"
        +        ],
        +        "type": "object"
        +      },
        +      "track": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "groupTrackId": {
        +            "description": "Captured parent Group Track ID; absent in older snapshots.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "isGroup": {
        +            "description": "Captured Group Track state.",
        +            "type": "boolean"
        +          },
        +          "isGrouped": {
        +            "description": "Captured child-group membership; absent in older snapshots.",
        +            "type": "boolean"
        +          },
        +          "name": {
        +            "description": "Captured track name.",
        +            "type": "string"
        +          },
        +          "type": {
        +            "enum": [
        +              "midi",
        +              "audio",
        +              "group",
        +              "unknown"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "type",
        +          "isGroup"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "format",
        +      "track",
        +      "mixer",
        +      "routing",
        +      "devices"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "$defs": {
        +      "chain": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "devices": {
        +            "description": "Nested devices in native order.",
        +            "items": {
        +              "$ref": "#/properties/snapshot/oneOf/1/$defs/device"
        +            },
        +            "type": "array"
        +          },
        +          "name": {
        +            "description": "Captured chain name.",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "devices"
        +        ],
        +        "type": "object"
        +      },
        +      "device": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "chains": {
        +            "description": "Rack chains in native order.",
        +            "items": {
        +              "$ref": "#/properties/snapshot/oneOf/1/$defs/chain"
        +            },
        +            "type": "array"
        +          },
        +          "className": {
        +            "description": "Exact native device class.",
        +            "type": "string"
        +          },
        +          "name": {
        +            "description": "Captured device name.",
        +            "type": "string"
        +          },
        +          "parameters": {
        +            "description": "Complete exposed parameter layout and values.",
        +            "items": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "max": {
        +                  "description": "Native maximum.",
        +                  "type": "number"
        +                },
        +                "min": {
        +                  "description": "Native minimum.",
        +                  "type": "number"
        +                },
        +                "originalName": {
        +                  "description": "Native parameter identity in index order.",
        +                  "type": "string"
        +                },
        +                "quantized": {
        +                  "description": "Native quantization.",
        +                  "type": "boolean"
        +                },
        +                "value": {
        +                  "description": "Captured native value.",
        +                  "type": "number"
        +                },
        +                "valueItems": {
        +                  "description": "Exact ordered choice labels.",
        +                  "items": {
        +                    "description": "Native value label.",
        +                    "type": "string"
        +                  },
        +                  "type": "array"
        +                }
        +              },
        +              "required": [
        +                "originalName",
        +                "min",
        +                "max",
        +                "quantized",
        +                "valueItems",
        +                "value"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "returnChains": {
        +            "description": "Rack return chains in native order.",
        +            "items": {
        +              "$ref": "#/properties/snapshot/oneOf/1/$defs/chain"
        +            },
        +            "type": "array"
        +          },
        +          "type": {
        +            "description": "Native device type.",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "className",
        +          "type",
        +          "parameters"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "additionalProperties": false,
        +    "properties": {
        +      "devices": {
        +        "description": "Ordered devices including nested rack chains.",
        +        "items": {
        +          "$ref": "#/properties/snapshot/oneOf/1/$defs/device"
        +        },
        +        "type": "array"
        +      },
        +      "format": {
        +        "const": "cavi-track-state-v2"
        +      },
        +      "mixer": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "mute": {
        +            "description": "Captured mute.",
        +            "type": "boolean"
        +          },
        +          "pan": {
        +            "description": "Captured pan.",
        +            "type": "number"
        +          },
        +          "sends": {
        +            "description": "Ordered named sends.",
        +            "items": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "id": {
        +                  "description": "Stable return ID.",
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "description": "Captured return name.",
        +                  "type": "string"
        +                },
        +                "value": {
        +                  "description": "Captured send value.",
        +                  "type": "number"
        +                }
        +              },
        +              "required": [
        +                "id",
        +                "name",
        +                "value"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "solo": {
        +            "description": "Captured solo.",
        +            "type": "boolean"
        +          },
        +          "volume": {
        +            "description": "Captured volume.",
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "volume",
        +          "pan",
        +          "mute",
        +          "solo",
        +          "sends"
        +        ],
        +        "type": "object"
        +      },
        +      "routing": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "inputChannelId": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "inputTypeId": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "monitoring": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "outputChannelId": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "outputTypeId": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "inputTypeId",
        +          "inputChannelId",
        +          "outputTypeId",
        +          "outputChannelId",
        +          "monitoring"
        +        ],
        +        "type": "object"
        +      },
        +      "track": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "groupTrackId": {
        +            "description": "Captured parent Group Track ID; absent in older snapshots.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "isGroup": {
        +            "description": "Captured Group Track state.",
        +            "type": "boolean"
        +          },
        +          "isGrouped": {
        +            "description": "Captured child-group membership; absent in older snapshots.",
        +            "type": "boolean"
        +          },
        +          "name": {
        +            "description": "Captured track name.",
        +            "type": "string"
        +          },
        +          "type": {
        +            "enum": [
        +              "midi",
        +              "audio",
        +              "group",
        +              "unknown"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "type",
        +          "isGroup"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "format",
        +      "track",
        +      "mixer",
        +      "routing",
        +      "devices"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "$defs": {
        +      "chain": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "devices": {
        +            "description": "Nested devices in native order.",
        +            "items": {
        +              "$ref": "#/properties/snapshot/oneOf/2/$defs/device"
        +            },
        +            "type": "array"
        +          },
        +          "mixer": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "mute": {
        +                "type": [
        +                  "boolean",
        +                  "null"
        +                ]
        +              },
        +              "pan": {
        +                "type": [
        +                  "number",
        +                  "null"
        +                ]
        +              },
        +              "sends": {
        +                "description": "Ordered rack-chain sends.",
        +                "items": {
        +                  "description": "Ordered native send level.",
        +                  "type": "number"
        +                },
        +                "type": "array"
        +              },
        +              "solo": {
        +                "type": [
        +                  "boolean",
        +                  "null"
        +                ]
        +              },
        +              "volume": {
        +                "type": [
        +                  "number",
        +                  "null"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "volume",
        +              "pan",
        +              "sends",
        +              "mute",
        +              "solo"
        +            ],
        +            "type": "object"
        +          },
        +          "name": {
        +            "description": "Captured chain name.",
        +            "type": "string"
        +          },
        +          "noteRouting": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "inputNote": {
        +                "maximum": 127,
        +                "minimum": 0,
        +                "type": [
        +                  "integer",
        +                  "null"
        +                ]
        +              },
        +              "outputNote": {
        +                "maximum": 127,
        +                "minimum": 0,
        +                "type": [
        +                  "integer",
        +                  "null"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "inputNote",
        +              "outputNote"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "mixer",
        +          "noteRouting",
        +          "devices"
        +        ],
        +        "type": "object"
        +      },
        +      "device": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "chains": {
        +            "description": "Rack chains in native order.",
        +            "items": {
        +              "$ref": "#/properties/snapshot/oneOf/2/$defs/chain"
        +            },
        +            "type": "array"
        +          },
        +          "className": {
        +            "description": "Exact native device class.",
        +            "type": "string"
        +          },
        +          "name": {
        +            "description": "Captured device name.",
        +            "type": "string"
        +          },
        +          "parameters": {
        +            "description": "Complete exposed parameter layout and values.",
        +            "items": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "max": {
        +                  "description": "Native maximum.",
        +                  "type": "number"
        +                },
        +                "min": {
        +                  "description": "Native minimum.",
        +                  "type": "number"
        +                },
        +                "originalName": {
        +                  "description": "Native parameter identity in index order.",
        +                  "type": "string"
        +                },
        +                "quantized": {
        +                  "description": "Native quantization.",
        +                  "type": "boolean"
        +                },
        +                "value": {
        +                  "description": "Captured native value.",
        +                  "type": "number"
        +                },
        +                "valueItems": {
        +                  "description": "Exact ordered choice labels.",
        +                  "items": {
        +                    "description": "Native value label.",
        +                    "type": "string"
        +                  },
        +                  "type": "array"
        +                }
        +              },
        +              "required": [
        +                "originalName",
        +                "min",
        +                "max",
        +                "quantized",
        +                "valueItems",
        +                "value"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "returnChains": {
        +            "description": "Rack return chains in native order.",
        +            "items": {
        +              "$ref": "#/properties/snapshot/oneOf/2/$defs/chain"
        +            },
        +            "type": "array"
        +          },
        +          "type": {
        +            "description": "Native device type.",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "className",
        +          "type",
        +          "parameters"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "additionalProperties": false,
        +    "properties": {
        +      "devices": {
        +        "description": "Ordered devices including rack controls.",
        +        "items": {
        +          "$ref": "#/properties/snapshot/oneOf/2/$defs/device"
        +        },
        +        "type": "array"
        +      },
        +      "format": {
        +        "const": "cavi-track-state-v3"
        +      },
        +      "mixer": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "mute": {
        +            "description": "Captured mute.",
        +            "type": "boolean"
        +          },
        +          "pan": {
        +            "description": "Captured pan.",
        +            "type": "number"
        +          },
        +          "sends": {
        +            "description": "Ordered named sends.",
        +            "items": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "id": {
        +                  "description": "Stable return ID.",
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "description": "Captured return name.",
        +                  "type": "string"
        +                },
        +                "value": {
        +                  "description": "Captured send value.",
        +                  "type": "number"
        +                }
        +              },
        +              "required": [
        +                "id",
        +                "name",
        +                "value"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "solo": {
        +            "description": "Captured solo.",
        +            "type": "boolean"
        +          },
        +          "volume": {
        +            "description": "Captured volume.",
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "volume",
        +          "pan",
        +          "mute",
        +          "solo",
        +          "sends"
        +        ],
        +        "type": "object"
        +      },
        +      "routing": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "inputChannelId": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "inputTypeId": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "monitoring": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "outputChannelId": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "outputTypeId": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "inputTypeId",
        +          "inputChannelId",
        +          "outputTypeId",
        +          "outputChannelId",
        +          "monitoring"
        +        ],
        +        "type": "object"
        +      },
        +      "track": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "groupTrackId": {
        +            "description": "Captured parent Group Track ID; absent in older snapshots.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "isGroup": {
        +            "description": "Captured Group Track state.",
        +            "type": "boolean"
        +          },
        +          "isGrouped": {
        +            "description": "Captured child-group membership; absent in older snapshots.",
        +            "type": "boolean"
        +          },
        +          "name": {
        +            "description": "Captured track name.",
        +            "type": "string"
        +          },
        +          "type": {
        +            "enum": [
        +              "midi",
        +              "audio",
        +              "group",
        +              "unknown"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "type",
        +          "isGroup"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "format",
        +      "track",
        +      "mixer",
        +      "routing",
        +      "devices"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "$defs": {
        +      "chain": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "devices": {
        +            "description": "Nested devices in native order.",
        +            "items": {
        +              "$ref": "#/properties/snapshot/oneOf/3/$defs/device"
        +            },
        +            "type": "array"
        +          },
        +          "mixer": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "mute": {
        +                "type": [
        +                  "boolean",
        +                  "null"
        +                ]
        +              },
        +              "pan": {
        +                "type": [
        +                  "number",
        +                  "null"
        +                ]
        +              },
        +              "sends": {
        +                "description": "Ordered rack-chain sends.",
        +                "items": {
        +                  "description": "Ordered native send level.",
        +                  "type": "number"
        +                },
        +                "type": "array"
        +              },
        +              "solo": {
        +                "type": [
        +                  "boolean",
        +                  "null"
        +                ]
        +              },
        +              "volume": {
        +                "type": [
        +                  "number",
        +                  "null"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "volume",
        +              "pan",
        +              "sends",
        +              "mute",
        +              "solo"
        +            ],
        +            "type": "object"
        +          },
        +          "name": {
        +            "description": "Captured chain name.",
        +            "type": "string"
        +          },
        +          "noteRouting": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "inputNote": {
        +                "maximum": 127,
        +                "minimum": 0,
        +                "type": [
        +                  "integer",
        +                  "null"
        +                ]
        +              },
        +              "outputNote": {
        +                "maximum": 127,
        +                "minimum": 0,
        +                "type": [
        +                  "integer",
        +                  "null"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "inputNote",
        +              "outputNote"
        +            ],
        +            "type": "object"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "mixer",
        +          "noteRouting",
        +          "devices"
        +        ],
        +        "type": "object"
        +      },
        +      "device": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "chains": {
        +            "description": "Rack chains in native order.",
        +            "items": {
        +              "$ref": "#/properties/snapshot/oneOf/3/$defs/chain"
        +            },
        +            "type": "array"
        +          },
        +          "className": {
        +            "description": "Exact native device class.",
        +            "type": "string"
        +          },
        +          "drumPads": {
        +            "description": "Populated Drum Rack pads in native order.",
        +            "items": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "mute": {
        +                  "description": "Captured pad mute.",
        +                  "type": "boolean"
        +                },
        +                "note": {
        +                  "maximum": 127,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "solo": {
        +                  "description": "Captured pad solo.",
        +                  "type": "boolean"
        +                }
        +              },
        +              "required": [
        +                "note",
        +                "mute",
        +                "solo"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "name": {
        +            "description": "Captured device name.",
        +            "type": "string"
        +          },
        +          "parameters": {
        +            "description": "Complete exposed parameter layout and values.",
        +            "items": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "max": {
        +                  "description": "Native maximum.",
        +                  "type": "number"
        +                },
        +                "min": {
        +                  "description": "Native minimum.",
        +                  "type": "number"
        +                },
        +                "originalName": {
        +                  "description": "Native parameter identity in index order.",
        +                  "type": "string"
        +                },
        +                "quantized": {
        +                  "description": "Native quantization.",
        +                  "type": "boolean"
        +                },
        +                "value": {
        +                  "description": "Captured native value.",
        +                  "type": "number"
        +                },
        +                "valueItems": {
        +                  "description": "Exact ordered choice labels.",
        +                  "items": {
        +                    "description": "Native value label.",
        +                    "type": "string"
        +                  },
        +                  "type": "array"
        +                }
        +              },
        +              "required": [
        +                "originalName",
        +                "min",
        +                "max",
        +                "quantized",
        +                "valueItems",
        +                "value"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "returnChains": {
        +            "description": "Rack return chains in native order.",
        +            "items": {
        +              "$ref": "#/properties/snapshot/oneOf/3/$defs/chain"
        +            },
        +            "type": "array"
        +          },
        +          "type": {
        +            "description": "Native device type.",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "className",
        +          "type",
        +          "parameters"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "additionalProperties": false,
        +    "properties": {
        +      "devices": {
        +        "description": "Ordered devices including Drum Rack pad state.",
        +        "items": {
        +          "$ref": "#/properties/snapshot/oneOf/3/$defs/device"
        +        },
        +        "type": "array"
        +      },
        +      "format": {
        +        "const": "cavi-track-state-v4"
        +      },
        +      "mixer": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "mute": {
        +            "description": "Captured mute.",
        +            "type": "boolean"
        +          },
        +          "pan": {
        +            "description": "Captured pan.",
        +            "type": "number"
        +          },
        +          "sends": {
        +            "description": "Ordered named sends.",
        +            "items": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "id": {
        +                  "description": "Stable return ID.",
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "description": "Captured return name.",
        +                  "type": "string"
        +                },
        +                "value": {
        +                  "description": "Captured send value.",
        +                  "type": "number"
        +                }
        +              },
        +              "required": [
        +                "id",
        +                "name",
        +                "value"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "solo": {
        +            "description": "Captured solo.",
        +            "type": "boolean"
        +          },
        +          "volume": {
        +            "description": "Captured volume.",
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "volume",
        +          "pan",
        +          "mute",
        +          "solo",
        +          "sends"
        +        ],
        +        "type": "object"
        +      },
        +      "routing": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "inputChannelId": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "inputTypeId": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "monitoring": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "outputChannelId": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "outputTypeId": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "inputTypeId",
        +          "inputChannelId",
        +          "outputTypeId",
        +          "outputChannelId",
        +          "monitoring"
        +        ],
        +        "type": "object"
        +      },
        +      "track": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "groupTrackId": {
        +            "description": "Captured parent Group Track ID; absent in older snapshots.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "isGroup": {
        +            "description": "Captured Group Track state.",
        +            "type": "boolean"
        +          },
        +          "isGrouped": {
        +            "description": "Captured child-group membership; absent in older snapshots.",
        +            "type": "boolean"
        +          },
        +          "name": {
        +            "description": "Captured track name.",
        +            "type": "string"
        +          },
        +          "type": {
        +            "enum": [
        +              "midi",
        +              "audio",
        +              "group",
        +              "unknown"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "type",
        +          "isGroup"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "format",
        +      "track",
        +      "mixer",
        +      "routing",
        +      "devices"
        +    ],
        +    "type": "object"
        +  }
        +]
      • removedInput schema / properties / snapshot / properties
        Removed value: -{
        -  "devices": {
        -    "description": "Ordered top-level device topology.",
        -    "items": {
        -      "additionalProperties": false,
        -      "properties": {
        -        "className": {
        -          "description": "Exact native device class.",
        -          "type": "string"
        -        },
        -        "name": {
        -          "description": "Captured device name.",
        -          "type": "string"
        -        },
        -        "parameters": {
        -          "description": "Complete ordered exposed parameter layout and values.",
        -          "items": {
        -            "additionalProperties": false,
        -            "properties": {
        -              "max": {
        -                "description": "Native maximum.",
        -                "type": "number"
        -              },
        -              "min": {
        -                "description": "Native minimum.",
        -                "type": "number"
        -              },
        -              "originalName": {
        -                "description": "Native parameter identity in index order.",
        -                "type": "string"
        -              },
        -              "quantized": {
        -                "description": "Native quantization.",
        -                "type": "boolean"
        -              },
        -              "value": {
        -                "description": "Captured native value.",
        -                "type": "number"
        -              },
        -              "valueItems": {
        -                "description": "Exact ordered choice labels.",
        -                "items": {
        -                  "description": "Native value label.",
        -                  "type": "string"
        -                },
        -                "type": "array"
        -              }
        -            },
        -            "required": [
        -              "originalName",
        -              "min",
        -              "max",
        -              "quantized",
        -              "valueItems",
        -              "value"
        -            ],
        -            "type": "object"
        -          },
        -          "type": "array"
        -        },
        -        "type": {
        -          "description": "Native device type.",
        -          "type": "string"
        -        }
        -      },
        -      "required": [
        -        "name",
        -        "className",
        -        "type",
        -        "parameters"
        -      ],
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  "format": {
        -    "const": "cavi-track-state-v1"
        -  },
        -  "mixer": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "mute": {
        -        "description": "Captured mute.",
        -        "type": "boolean"
        -      },
        -      "pan": {
        -        "description": "Captured pan.",
        -        "type": "number"
        -      },
        -      "sends": {
        -        "description": "Ordered named sends.",
        -        "items": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "id": {
        -              "description": "Stable return ID.",
        -              "type": "string"
        -            },
        -            "name": {
        -              "description": "Captured return name.",
        -              "type": "string"
        -            },
        -            "value": {
        -              "description": "Captured send value.",
        -              "type": "number"
        -            }
        -          },
        -          "required": [
        -            "id",
        -            "name",
        -            "value"
        -          ],
        -          "type": "object"
        -        },
        -        "type": "array"
        -      },
        -      "solo": {
        -        "description": "Captured solo.",
        -        "type": "boolean"
        -      },
        -      "volume": {
        -        "description": "Captured volume.",
        -        "type": "number"
        -      }
        -    },
        -    "required": [
        -      "volume",
        -      "pan",
        -      "mute",
        -      "solo",
        -      "sends"
        -    ],
        -    "type": "object"
        -  },
        -  "routing": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "inputChannelId": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "inputTypeId": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "monitoring": {
        -        "type": [
        -          "integer",
        -          "null"
        -        ]
        -      },
        -      "outputChannelId": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "outputTypeId": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      }
        -    },
        -    "required": [
        -      "inputTypeId",
        -      "inputChannelId",
        -      "outputTypeId",
        -      "outputChannelId",
        -      "monitoring"
        -    ],
        -    "type": "object"
        -  },
        -  "track": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "isGroup": {
        -        "description": "Captured Group Track state.",
        -        "type": "boolean"
        -      },
        -      "name": {
        -        "description": "Captured track name.",
        -        "type": "string"
        -      },
        -      "type": {
        -        "enum": [
        -          "midi",
        -          "audio",
        -          "group",
        -          "unknown"
        -        ],
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "name",
        -      "type",
        -      "isGroup"
        -    ],
        -    "type": "object"
        -  }
        -}
      • removedInput schema / properties / snapshot / required
        Removed value: -[
        -  "format",
        -  "track",
        -  "mixer",
        -  "routing",
        -  "devices"
        -]
      • removedInput schema / properties / snapshot / type
        Removed value: -"object"
    • Addedrename_rack_macro
    • Addedroute_tracks_to_return_bus
    • Addedsave_device_chain_snapshot
    • Addedsave_group_system_snapshot
    • Addedsave_live_set
    • Addedsave_midi_feel_template
    • Changedsearch_browser_item_metadata1 field changed
      • changedInput schema / properties / root / description
        Previous value: -"Optional browser root filter."New value: +"Optional browser root or local_splice filter."
    • Changedsearch_browser_items1 field changed
      • addedInput schema / properties / includeMetadata
        Added value: +{
        +  "description": "Join private MCP tags and favorites for results with an exact URI.",
        +  "type": "boolean"
        +}
    • Addedsearch_browser_roots
    • Changedsearch_local_splice_samples7 fields changed
      • addedInput schema / properties / favorite
        Added value: +{
        +  "description": "Optional private favorite state filter.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / includeMetadata
        Added value: +{
        +  "description": "Include private MCP tags and favorites for matching local files.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / maxVisited
        Added value: +{
        +  "description": "Maximum directory entries to inspect; defaults to 50000. A truncated result is incomplete.",
        +  "maximum": 50000,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "description": "Zero-based match offset for deterministic pagination; defaults to zero.",
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • changedInput schema / properties / query / description
        Previous value: -"Case-insensitive audio filename query."New value: +"Optional case-insensitive audio filename or relative-path query; required without metadata filters."
      • addedInput schema / properties / tags
        Added value: +{
        +  "description": "Require every supplied tag.",
        +  "items": {
        +    "description": "Required private user tag.",
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "rootPath",
        -  "query"
        -]New value: +[
        +  "rootPath"
        +]
    • Changedset_browser_item_metadata2 fields changed
      • changedInput schema / properties / path / items / description
        Previous value: -"Exact browser path segment."New value: +"Exact browser segment, or [absolute directory, relative audio path] for local_splice."
      • changedInput schema / properties / root / description
        Previous value: -"Live browser root."New value: +"Live browser root or local_splice."
    • Changedset_clip_timing3 fields changed
      • addedInput schema / properties / editorGrid
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "isTriplet": {
        +      "description": "Display the clip editor on a triplet grid.",
        +      "type": "boolean"
        +    },
        +    "quantization": {
        +      "description": "Exact native editor-grid choice returned by get_clip_timing.",
        +      "oneOf": [
        +        {
        +          "type": "integer"
        +        },
        +        {
        +          "type": "string"
        +        }
        +      ]
        +    }
        +  },
        +  "required": [],
        +  "type": "object"
        +}
      • addedInput schema / properties / launchLegato
        Added value: +{
        +  "description": "Enable Legato launch for a Session clip.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / mute
        Added value: +{
        +  "description": "Mute this clip when supported by Live's native clip API.",
        +  "type": "boolean"
        +}
    • Changedset_device_parameters3 fields changed
      • changedInput schema / properties / changes / items / properties / value / description
        Previous value: -"Requested value; clamped to live bounds."New value: +"Native numeric value or exact observed quantized choice label from list_device_parameters."
      • addedInput schema / properties / changes / items / properties / value / oneOf
        Added value: +[
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / changes / items / properties / value / type
        Removed value: -"number"
    • Addedset_rack_macro_mapping_edge
    • Addedset_scene_musical_context
    • Addedstore_rack_macro_variation
  4. 183 tool updatesv0.1.0
    • First observedadd_audio_warp_marker
    • First observedanalyze_audio_clip
    • First observedanalyze_audio_file
    • First observedanalyze_midi_clip_chords
    • First observedanalyze_midi_clip_scale
    • First observedapply_drum_variation
    • First observedapply_midi_chord_arpeggiation
    • First observedapply_midi_chord_doubling
    • First observedapply_midi_chord_inversion
    • First observedapply_midi_chord_voice_leading
    • First observedapply_midi_diatonic_chord_quality
    • First observedapply_midi_diatonic_harmony
    • First observedapply_midi_diatonic_transposition
    • First observedapply_midi_drop_voicing
    • First observedapply_midi_gate_pattern
    • First observedapply_midi_probability_pattern
    • First observedapply_midi_ratchet_pattern
    • First observedapply_midi_scale_chord_remapping
    • First observedapply_midi_strum_pattern
    • First observedapply_midi_transposition
    • First observedapply_midi_velocity_curve
    • First observedarm_track
    • First observedcapture_device_chain_snapshot
    • First observedcapture_device_parameter_snapshot
    • First observedcapture_track_state_snapshot
    • First observedcorrect_midi_clip_to_scale
    • First observedcreate_arrangement_cue_point
    • First observedcreate_audio_clip
    • First observedcreate_drum_pattern_clip
    • First observedcreate_groove
    • First observedcreate_midi_clip
    • First observedcreate_rack_chain
    • First observedcreate_return_track
    • First observedcreate_scale_bassline_clip
    • First observedcreate_scale_chord_progression_clip
    • First observedcreate_scale_melody_clip
    • First observedcreate_scene
    • First observedcreate_track
    • First observedcrop_audio_clip
    • First observeddelete_arrangement_clip
    • First observeddelete_arrangement_cue_point
    • First observeddelete_clip
    • First observeddelete_device
    • First observeddelete_session_object
    • First observedduplicate_arrangement_clip
    • First observedduplicate_clip
    • First observedduplicate_clip_loop
    • First observedduplicate_session_object
    • First observededit_drum_pattern_clip
    • First observedget_audio_clip_state
    • First observedget_audio_source_beat_times
    • First observedget_automation_capabilities
    • First observedget_beat_repeat_performance_context
    • First observedget_browser_item_metadata
    • First observedget_browser_items
    • First observedget_clip_groove_context
    • First observedget_clip_parameter_envelope
    • First observedget_clip_timing
    • First observedget_device_hierarchy
    • First observedget_device_sidechain_routing
    • First observedget_factory_browser_items
    • First observedget_factory_coverage
    • First observedget_factory_device_context
    • First observedget_history_state
    • First observedget_live_scale_reference
    • First observedget_live_state
    • First observedget_looper_performance_context
    • First observedget_midi_clip_notes
    • First observedget_midi_clip_notes_extended
    • First observedget_plugin_integration_context
    • First observedget_preset
    • First observedget_preset_metadata
    • First observedget_producer_chain_blueprint
    • First observedget_set_mixer
    • First observedget_song_grid_reference
    • First observedget_song_musical_context
    • First observedget_track_freeze_state
    • First observedget_track_midi_routing
    • First observedget_track_mixer
    • First observedget_track_routing
    • First observedget_transport_context
    • First observedget_transport_recording_context
    • First observedhumanize_midi_notes
    • First observedinspect_clip_groove_postconditions
    • First observedinspect_producer_bus
    • First observedinspect_producer_chain
    • First observedjump_to_arrangement_cue_point
    • First observedlaunch_clip
    • First observedlaunch_scene
    • First observedlist_arrangement_clips
    • First observedlist_arrangement_cue_points
    • First observedlist_clips
    • First observedlist_device_parameters
    • First observedlist_devices
    • First observedlist_factory_device_profiles
    • First observedlist_live_scales
    • First observedlist_producer_chain_blueprints
    • First observedlist_scenes
    • First observedlist_tracks
    • First observedload_browser_item
    • First observedload_factory_browser_item
    • First observedload_track_state_snapshot
    • First observedmove_arrangement_clip
    • First observedmove_audio_warp_marker
    • First observedmove_device
    • First observedmove_device_to_chain
    • First observedpanic
    • First observedplace_session_clip_in_arrangement
    • First observedplan_drum_pattern
    • First observedplan_drum_pattern_edit
    • First observedplan_drum_variation
    • First observedplan_grid_envelope_pattern
    • First observedplan_midi_chord_arpeggiation
    • First observedplan_midi_chord_doubling
    • First observedplan_midi_chord_inversion
    • First observedplan_midi_chord_voice_leading
    • First observedplan_midi_diatonic_chord_quality
    • First observedplan_midi_diatonic_harmony
    • First observedplan_midi_diatonic_transposition
    • First observedplan_midi_drop_voicing
    • First observedplan_midi_gate_pattern
    • First observedplan_midi_humanization
    • First observedplan_midi_probability_pattern
    • First observedplan_midi_ratchet_pattern
    • First observedplan_midi_scale_chord_remapping
    • First observedplan_midi_strum_pattern
    • First observedplan_midi_transposition
    • First observedplan_midi_velocity_curve
    • First observedplan_scale_bassline
    • First observedplan_scale_chord_progression
    • First observedplan_scale_melody
    • First observedpropose_audio_transient_warp
    • First observedquantize_audio_clip
    • First observedrecall_device_chain_snapshot
    • First observedrecall_device_parameter_snapshot
    • First observedrecall_track_state_snapshot
    • First observedredo
    • First observedremove_audio_warp_marker
    • First observedrename_arrangement_cue_point
    • First observedrename_rack_chain
    • First observedrename_session_object
    • First observedroute_tracks_to_bus
    • First observedsave_track_state_snapshot
    • First observedsearch_browser_item_metadata
    • First observedsearch_browser_items
    • First observedsearch_local_splice_samples
    • First observedsearch_presets
    • First observedset_audio_clip_state
    • First observedset_beat_repeat_enabled
    • First observedset_beat_repeat_grid
    • First observedset_beat_repeat_interval
    • First observedset_browser_item_metadata
    • First observedset_bulk_track_mixer
    • First observedset_clip_parameter_envelope
    • First observedset_clip_timing
    • First observedset_device_active
    • First observedset_device_parameters
    • First observedset_device_sidechain_routing
    • First observedset_drum_pad_state
    • First observedset_groove
    • First observedset_group_fold_state
    • First observedset_looper_state
    • First observedset_master_mixer
    • First observedset_midi_note_properties
    • First observedset_preset_metadata
    • First observedset_rack_chain_mixer
    • First observedset_rack_chain_note_routing
    • First observedset_return_mixer
    • First observedset_scene_launch_quantization
    • First observedset_song_musical_context
    • First observedset_tempo
    • First observedset_track_freeze_state
    • First observedset_track_midi_routing
    • First observedset_track_mixer
    • First observedset_track_routing
    • First observedset_transport_context
    • First observedset_transport_recording_context
    • First observedstop_all_clips
    • First observedstop_clip
    • First observedtransform_midi_notes
    • First observedtransport_play
    • First observedtransport_stop
    • First observedundo

TDQS

B3.1/5.0

Scored across 328 tools

Disambiguation2/5

With 328 tools, many near-duplicate or overlapping operations exist, such as get_midi_clip_notes vs get_midi_clip_notes_extended, multiple get_*_context readers, and large plan/apply/context triplets for the same domain. Descriptions are unusually detailed and often distinguish safe read-only vs guarded write behavior, but the sheer number of similarly named context, plan, apply, and status tools makes tool selection error-prone.

Naming Consistency4/5

The tool set overwhelmingly uses consistent snake_case with predictable verb_noun patterns like get_*, set_*, list_*, create_*, plan_*, apply_*, and delete_*. There are minor deviations such as panic, undo, redo, transport_play, and transport_stop, but the convention remains readable throughout.

Tool Count1/5

328 tools is an extreme mismatch for practical agent use and far exceeds any reasonable scoped tool surface. Even for a complex DAW, this many narrowly separated tools creates enormous selection overhead and makes the set unwieldy despite each tool potentially earning its place in some workflow.

Completeness4/5

The surface covers an enormous range of Ableton Live operations: tracks, clips, devices, racks, mixer, transport, browser, presets, recording, automation, export, and snapshots. Some gaps remain, such as native groove deletion and hidden plug-in state, but these are largely explicit API limitations with documented workarounds.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that exposes Ableton Live control (session state, transport, tracks, devices, clips, MIDI note editing) as tools for LLM agents, enabling natural language manipulation of a Live session.
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables MCP clients to programmatically control an Ableton Live 12 session, including tracks, clips, MIDI notes, devices, parameters, mixer, scenes, warping, and rendering, over streamable HTTP.
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables exposing any REST or GraphQL API as MCP tools from a single JSON spec, with writes requiring explicit confirmation before being sent.
    MIT