Skip to main content
Glama

set_midi_clip_markers

Destructive

Define start and end markers for a loop-enabled MIDI clip in absolute source beats. Leaving a bound out keeps it unchanged, preserving notes and loop settings.

Instructions

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.

Input Schema

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

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: +[
      +  {
      +    "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. Addedv0.3.0

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.

Deploy Server

Other Tools