Skip to main content
Glama

load_device

Destructive

Search Ableton Live's browser for devices, then load a chosen device onto the currently selected track. Use confirm=False first to review candidates and track selection, then confirm=True with the item path to execute.

Instructions

Search Live's browser and load a device onto the currently selected track.

Two steps, and the first one is not optional in practice: call with confirm=False
to search and to see which track is selected, then call again with confirm=True
and the uri or item_path of the item you chose.

Returns:
    Dictionary of search candidates and the selected track on the search step, or
    the load result and the resulting device chain on the load step.

Note:
    Loading an instrument is destructive. ``Browser.load_item`` takes no track
    argument: it loads onto whatever ``song.view.selected_track`` points at.
    It cannot be aimed inside a rack from here. Measured 2026-09-07 against
    Live 12.4.5: writing ``rack.view.selected_chain`` reads back as the chain
    that was asked for, and a device loaded afterwards still lands on the
    track. The chain kept its six devices and the track went from one device
    to two. Live's browser follows the selection in its own interface, which
    no write over this channel drives. An effect is appended to the end of the
    chain, but an instrument replaces the instrument already on the track and
    discards it silently, together with every parameter configured on it and
    every clip envelope pointing at it. Check the selection and the existing
    chain with get_devices before confirming.

    Loading plug-ins in rapid succession can crash Live (measured: a batch load
    during a background plug-in rescan, with a licence dialog open, took the
    whole application down). Load one at a time, check the connection between
    loads, and save the set first.

    A successful return proves the call ran, not that the track makes a sound: a
    measured Drum Rack load reported success on a silent track. Read the chain
    back with get_devices, and for a rack check that ``chains`` is not empty.

    An instrument load renames the track while the track still carries Live's default
    name, so a track name cached from an earlier get_session is stale afterwards. An
    effect never renames. To reorder what is already loaded, call ``song.move_device``
    through lom_call rather than loading again.

    Three things about the search step are worth knowing before trusting it.

    An empty ``candidates`` with ``truncated: true`` is not proof that the item is
    absent. The walk ran out of budget before it reached the item, and a search
    narrowed with ``root`` can find on the first try what an unrooted search missed
    entirely. Narrow before concluding something is not installed.

    A ``uri`` from the search step can fail to resolve on the load step for the same
    reason, with ``stopped by node_budget``: resolving one walks the browser again,
    and a uri carries no hint about where to look. The ``item_path`` in that same
    candidate addresses the item directly and cannot run out of budget, so prefer
    it. Where the uri is what you have, pass ``root`` with it and the second walk
    is narrowed to that one category the same way the search was.

    Loading onto the main track works and is reached the same way as any other
    target, by pointing the selection at it first: write ``song.view.selected_track``
    with ``{"__path__": "song.master_track"}`` through lom_set, then load. There is no
    track index for the main track, which is why the usual index does not apply.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
uriNoThe uri of one candidate from a previous search step, copied back verbatim to say which item to load. Resolving it walks the browser a second time, so pass root as well when the item sits deep; item_path avoids the walk altogether and is preferred.
rootNoBrowser category to search inside. Empty searches every category, which is slower and returns more near misses.
limitNoHow many search candidates to return.
queryNoWhat to look for in the browser, matched against item names, e.g. 'Operator' or 'reverb'. Required for the search step; on the load step it can be dropped once uri or item_path is known.
confirmNoFalse searches and loads nothing, reporting the candidates and which track is selected. True loads the item named by uri or item_path.
item_pathNoThe browser item as a LOM path rooted at app, e.g. 'app.browser.instruments.children[3]'. The reliable handle, and the one to prefer: unlike a uri it is not walked for again, so it cannot fail on the walk budget. Every search candidate carries one.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed2 schema fields changedv0.1.4
    • changedInput schema / properties / item_path / description
      Previous value: -"The browser item as a LOM path rooted at app, e.g. 'app.browser.instruments.children[3]'. Use this instead of uri when the search could not reach the item within its walk budget."New value: +"The browser item as a LOM path rooted at app, e.g. 'app.browser.instruments.children[3]'. The reliable handle, and the one to prefer: unlike a uri it is not walked for again, so it cannot fail on the walk budget. Every search candidate carries one."
    • changedInput schema / properties / uri / description
      Previous value: -"The uri of one candidate from a previous search step, copied back verbatim to say which item to load."New value: +"The uri of one candidate from a previous search step, copied back verbatim to say which item to load. Resolving it walks the browser a second time, so pass root as well when the item sits deep; item_path avoids the walk altogether and is preferred."
  2. Changed7 schema fields changedv0.1.1
    • addedInput schema / properties / confirm / description
      Added value: +"False searches and loads nothing, reporting the candidates and which track is selected. True loads the item named by uri or item_path."
    • addedInput schema / properties / item_path / description
      Added value: +"The browser item as a LOM path rooted at app, e.g. 'app.browser.instruments.children[3]'. Use this instead of uri when the search could not reach the item within its walk budget."
    • addedInput schema / properties / limit / description
      Added value: +"How many search candidates to return."
    • addedInput schema / properties / query / description
      Added value: +"What to look for in the browser, matched against item names, e.g. 'Operator' or 'reverb'. Required for the search step; on the load step it can be dropped once uri or item_path is known."
    • addedInput schema / properties / root / description
      Added value: +"Browser category to search inside. Empty searches every category, which is slower and returns more near misses."
    • addedInput schema / properties / root / enum
      Added value: +[
      +  "",
      +  "audio_effects",
      +  "clips",
      +  "current_project",
      +  "drums",
      +  "instruments",
      +  "legacy_libraries",
      +  "max_for_live",
      +  "midi_effects",
      +  "packs",
      +  "plugins",
      +  "samples",
      +  "sounds",
      +  "user_folders",
      +  "user_library"
      +]
    • addedInput schema / properties / uri / description
      Added value: +"The uri of one candidate from a previous search step, copied back verbatim to say which item to load."
  3. First observedv0.1.0

TDQS

A4.9/5.0
Behavior5/5

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

The description goes far beyond the annotations by detailing exactly what is destructive: instrument loads replace and silently discard the previous instrument, track names go stale after instrument loads, and rapid plug-in loads can crash Live. It also discloses measured failure modes and the need to verify results with get_devices, adding rich behavioral context.

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 lengthy but well-structured and front-loaded: the core two-step usage appears immediately, followed by warnings and edge cases in clear sections. Some details could be trimmed or moved to a separate troubleshooting note, but for a destructive tool with this many failure modes the length is largely justified.

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?

For a complex destructive tool with six parameters, multiple failure modes, and a two-step protocol, the description is near-exhaustive. It covers prerequisites, selection behavior, return semantics, alternatives, and verification steps, leaving an agent with everything needed to call the tool safely and interpret its results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Even though the input schema already covers all parameters, the description adds critical operational semantics: item_path is preferred over uri because uri resolution can run out of walk budget, root narrows the second walk after a failed uri, and query is required for the search step but can be dropped for the load step. This meaningfully extends what the schema alone provides.

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 and resource: 'Search Live's browser and load a device onto the currently selected track.' It also clearly distinguishes the tool's two-step behavior from the read-only get_devices and destructive delete_device siblings by stating its precise job.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit procedural guidance: call with confirm=False first, inspect the selection, then call with confirm=True. It names get_devices as the tool to use before confirming and for reading the chain back, and recommends song.move_device via lom_call instead of reloading for reordering. This is strong when-to-use and when-not-to-use guidance.

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

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/romanstark/live-maestro'

If you have feedback or need assistance with the MCP directory API, please join our Discord server