Skip to main content
Glama

apply_midi_feel_template

Destructive

Transfer a stored MIDI feel template or measured audio feel summary onto target Ableton notes, blending timing and velocity while preserving note IDs and durations.

Instructions

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.

Input Schema

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

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 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."
    • 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"
      +  }
      +]
  2. Changed9 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 / 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"
      +}
  3. Addedv0.2.0

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.

Deploy Server

Other Tools