Skip to main content
Glama

get_session_midi_overdub_context

Read-onlyIdempotent

Read the readiness and identity of a playing Session MIDI loop to prepare interactive overdub, verifying an armed unfrozen target and clear recording conditions.

Instructions

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.

Input Schema

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

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": {
      +      "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"
      +  }
      +]
  2. Addedv0.3.0

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.

Deploy Server

Other Tools