Skip to main content
Glama

get_clip

Read-onlyIdempotent

Retrieve a Session clip's properties—length, loop, warp, pitch, markers, flags—with has_clip status. Handles empty slots by reporting them instead of failing.

Instructions

Read one Session clip's properties: length, loop, warp, pitch, markers, flags.

Returns:
    Dictionary with ``has_clip``, and where that is true the clip path, whether
    it is MIDI, and the property fields. An empty slot answers ``has_clip:
    false`` and says so rather than failing.

Note:
    Notes and automation are not properties: use ``read_clip_notes`` and
    ``read_automation``.

    ``warping``, ``warp_mode`` and ``pitch_coarse`` are reachable only through a
    generic path. Each was read, written, read back and restored on 2026-08-29
    against Live 12.4.5, and all three rows are ``verified``. ``pitch_fine`` is
    read-verified only, and the integer mapping behind ``warp_mode`` is still a
    hypothesis: confirm it against ``clip.available_warp_modes``.

    **An audio clip's times are in seconds while warping is off, and in beats while
    it is on.** ``times_in`` says which, and the per-field ``unit`` follows it. A MIDI
    clip is always in beats. Measured 2026-09-19 against Live 12.4.6 on three
    unwarped clips of one 228.792167 s file: ``loop_end`` read 228.79216666666667 on
    all three, and a write of a larger ``end_marker`` clamped to that same number.

    **Toggling ``warping`` rescales the stored markers and does not undo it.** On the
    same clip, turning warping on took ``end_marker`` from 240.918 to 253.682, a
    factor of 1.05298, and turning it back off left it at 253.682 while ``loop_end``
    returned to the file length. The factor is the clip's own warp tempo over 60
    (1.05298 is 63.18 BPM; another clip moved 0.5704 to 1.1408 at 120 BPM and not at
    all at 60). Every toggle multiplies again, so a clip toggled twice carries markers
    well past the end of its own file and nothing reports it. Read the markers after
    any write to ``warping`` and set them back deliberately.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pathNoLOM path to a Session clip, song.tracks[N].clip_slots[M] with or without a trailing .clip, as an alternative to track and slot. A song.tracks[N].arrangement_clips[i] path is refused with code region_not_addressable.
slotNoClip slot index in track.clip_slots, counted from 0, which is the scene the clip sits in. Give track and slot, or give path instead. These are Session coordinates; an Arrangement clip has none.
trackNoSession track index in song.tracks, counted from 0. Give track and slot, or give path instead. These are Session coordinates; an Arrangement clip has none.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed10 schema fields changed
    • addedInput schema / properties / path
      Added value: +{
      +  "default": "",
      +  "description": "LOM path to a Session clip, song.tracks[N].clip_slots[M] with or without a trailing .clip, as an alternative to track and slot. A song.tracks[N].arrangement_clips[i] path is refused with code region_not_addressable.",
      +  "title": "Path",
      +  "type": "string"
      +}
    • addedInput schema / properties / slot / anyOf
      Added value: +[
      +  {
      +    "minimum": 0,
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / slot / default
      Added value: +null
    • changedInput schema / properties / slot / description
      Previous value: -"Clip slot index in track.clip_slots, counted from 0. A slot index is the scene the clip sits in, so slot 2 is the third scene down."New value: +"Clip slot index in track.clip_slots, counted from 0, which is the scene the clip sits in. Give track and slot, or give path instead. These are Session coordinates; an Arrangement clip has none."
    • removedInput schema / properties / slot / type
      Removed value: -"integer"
    • addedInput schema / properties / track / anyOf
      Added value: +[
      +  {
      +    "minimum": 0,
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / track / default
      Added value: +null
    • changedInput schema / properties / track / description
      Previous value: -"Track index in song.tracks, counted from 0."New value: +"Session track index in song.tracks, counted from 0. Give track and slot, or give path instead. These are Session coordinates; an Arrangement clip has none."
    • removedInput schema / properties / track / type
      Removed value: -"integer"
    • removedInput schema / required
      Removed value: -[
      -  "track",
      -  "slot"
      -]
  2. Changed2 schema fields changedv0.1.1
    • addedInput schema / properties / slot / description
      Added value: +"Clip slot index in track.clip_slots, counted from 0. A slot index is the scene the clip sits in, so slot 2 is the third scene down."
    • addedInput schema / properties / track / description
      Added value: +"Track index in song.tracks, counted from 0."
  3. First observedv0.1.0

TDQS

A4.4/5.0
Behavior5/5

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

Even with strong annotations (readOnlyHint, idempotentHint, destructiveHint), the description adds substantial behavioral context: the return contract with has_clip for empty slots, the unit system (seconds vs beats) with measured examples, and the critical warning that toggling warping rescales markers and does not undo. These are non-obvious, empirically verified traits that no annotation could convey. There is no contradiction 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?

The description is front-loaded with the purpose and then organizes key behavioral warnings under bold headings and clear paragraphs. It is long, containing measured values and dates (e.g., 'Measured 2026-09-19', exact numeric factors), which are useful but arguably more detailed than necessary for tool selection and correct invocation. Every sentence does contribute to the behavioral picture, so it earns a '4' rather than a '3', but it is not as lean as it could be.

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 this tool has an output schema, annotations, and 100% parameter schema coverage, the description still goes beyond the minimum: it covers the has_clip return contract, unit semantics, the marker-rescaling data hazard, and verification status. An agent has everything needed to call the tool correctly and anticipate unusual behavior, even before examining the output schema. 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?

Schema coverage is 100%, so the baseline is 3. The description does not add meaningful parameter-level detail beyond what the schema already provides; it references the 'generic path' but does not explain path/slot/track relationships beyond the schema's own descriptions. The description focuses on return behavior, not parameter semantics, so it neither compensates nor detracts from the schema. This meets the minimum viable standard.

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-resource pair: 'Read one Session clip's properties' and enumerates the exact fields (length, loop, warp, pitch, markers, flags). It also explicitly distinguishes itself from read_clip_notes and read_automation, which directly addresses sibling differentiation. An agent can confidently select this tool for reading clip properties without confusing it with the read-note or automation 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?

The description gives explicit guidance on when not to use it: 'Notes and automation are not properties: use read_clip_notes and read_automation.' It also makes clear via 'Session clip' that this is for Session clips, and the schema reinforces that Arrangement paths are refused. It does not survey all possible sibling alternatives (e.g., get_track, get_session), but the primary exclusions are covered, leaving little ambiguity for the common use case.

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