Skip to main content
Glama

plan_midi_diatonic_transposition

Read-onlyIdempotent

Plans diatonic transposition of exact in-scale MIDI note IDs by signed scale steps using Live's current key and scale.

Instructions

Plan scale-degree transposition of exact in-scale MIDI note IDs using Live's current key and scale.

Input Schema

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

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changedv0.3.1
    • 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"
      +  }
      +]
  2. Changed3 schema fields changedv0.3.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 / 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"
      +}
  3. First observedv0.1.0

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.

Deploy Server

Other Tools