Skip to main content
Glama

load_instrument

Place an instrument on a MIDI track, replacing its current device; optionally load a named preset. Undo restores the previous instrument.

Instructions

Put an instrument on a MIDI track, replacing its current instrument; undo_last restores it. Without preset you get the bare device. preset is a preset name from the kind's browser folders, e.g. drift "Deep Bass" or drum_rack "808 Core Kit" (a kit); case and the .adv/.adg ending are ignored. Live Lite has drift, simpler, impulse, drum_rack, drum_sampler and instrument_rack only; other kinds are refused there. Returns the added devices, device_index (for read_device) and the browser root and path that were loaded.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "track": "<track>",
      "kind": "<kind>"
    },
    "name": "load_instrument"
  }
}

Input Schema

NameRequiredDescriptionDefault
kindYes
trackYes
presetNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.5.0

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false, so the description's real contribution is disclosing that the existing instrument is replaced and that undo_last restores it — valuable context that softens the destructive implication. It also discloses platform-level refusal behavior and the shape of the return payload, which annotations do not cover. The tension between 'replacing its current instrument' and destructiveHint=false is explained rather than contradicted, since the undo path is stated, but it is not called out as reversible-only-via-undo.

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 action and its side effect are front-loaded in the first clause, with preset mechanics, platform limits, and return values following in descending importance. Wording is dense but every sentence carries information. The stray line break in the middle of the drift example slightly hurts readability.

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?

With no output schema, the description correctly compensates by naming the returns (added devices, device_index for read_device, browser root and path). Platform refusal and undo recovery round out the operational picture. Only the per-kind semantics and the 'track' parameter remain thin for a tool with an 11-value enum.

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 0%, so the description must carry the parameters, and it does a good job on 'preset': optionality, that it is a browser preset name scoped to the kind, worked examples for drift and drum_rack, and that case and .adv/.adg suffixes are ignored. 'kind' is only partially served — the enum is in the schema and Live Lite limits are stated, but there is no explanation of what each kind implies. 'track' gets no treatment at all beyond being required.

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?

Opens with a specific verb and resource: 'Put an instrument on a MIDI track, replacing its current instrument'. That is unambiguous and tells the agent this is a mutation, not a query. It never names its closest siblings (load_from_library, browse_library, read_device), so the agent must infer the boundary from the schemas rather than the prose.

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?

Gives clear operating context: omit preset to get the bare device, and Live Lite only accepts drift/simpler/impulse/drum_rack/drum_sampler/instrument_rack with other kinds 'refused there' — a genuine when-not condition. It also points at undo_last as the rollback path. What is missing is explicit routing against load_from_library and browse_library, which load presets by a different mechanism.

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