> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vibrai.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Devices

> Load, browse, and manage devices on tracks.

Load, browse, and manage devices on tracks.

## Command line

### `device list`

List devices loaded on a track

```bash theme={null}
vibrai device list <track>
```

<ParamField path="track" required>
  Track number (1-based: 1, 2, … or first, second, …)
</ParamField>

### `device drum-pads`

List a Drum Rack's pads (index, name, trigger note) on a track

```bash theme={null}
vibrai device drum-pads <track> --device <INDEX>
```

<ParamField path="track" required>
  Track number (1-based: 1, 2, … or first, second, …)
</ParamField>

<ParamField path="--device" default="0">
  Index of the Drum Rack device in the track's chain (default 0)
</ParamField>

### `device load`

Load a stock device, User Library preset, or plug-in (VST3/AU) onto a track

```bash theme={null}
vibrai device load <track> --path <PATH> --part-type <TYPE> --position <N>
```

<ParamField path="track" required>
  Track number (1-based: 1, 2, … or first, second, …)
</ParamField>

<ParamField path="--path">
  Browser path or URI. Accepts (a) classic stock-device paths like 'Instruments/Operator', (b) preset '.adg' browser paths like 'Drums/F9 TK Menu\_ Hat Closed V2.adg' (auto-resolved to their query: URI), or (c) query: URIs from find\_instruments\_by\_tag/show\_instrument, including plug-in URIs from the Plug-Ins browser section.
</ParamField>

<ParamField path="--part-type">
  PartType shorthand (Bass, Pad, Lead, …); resolves through defaults.instruments
</ParamField>

<ParamField path="--position">
  Insert position in device chain (1-based: 1 = first slot; omit to append)
</ParamField>

### `device browse`

List immediate children of a Live browser path

```bash theme={null}
vibrai device browse [path]
```

<ParamField path="path">
  Browser path; empty for the snapshot's top-level folders. Examples: "Drums", "Instruments/Operator", "Packs/F9 GALAXY", "User Library".
</ParamField>

### `device default`

Show the resolved default device for a part-type

```bash theme={null}
vibrai device default <partType> --project <PATH> --stock-only
```

<ParamField path="partType" required>
  PartType to resolve
</ParamField>

<ParamField path="--project">
  Resolve genre-aware defaults against this .vibrai file (defaults to Untitled.vibrai in CWD)
</ParamField>

<ParamField path="--stock-only">
  Report the stock-only view: skips explicit defaults.instruments overrides AND tagged instruments.
</ParamField>

### `device delete`

Remove a device from a track's top-level device chain by index

```bash theme={null}
vibrai device delete <track> <device-index>
```

<ParamField path="track" required>
  Track number (1-based: 1, 2, … or first, second, …)
</ParamField>

<ParamField path="device-index" required>
  Device chain position (1-based: 1 = first device in the chain)
</ParamField>

### `device load-defaults`

Load each part's default instrument from a .vibrai project onto its track

```bash theme={null}
vibrai device load-defaults --project <PATH> --stock-only
```

<ParamField path="--project">
  Path to the .vibrai file whose parts get their default instruments
</ParamField>

<ParamField path="--stock-only">
  Resolve instruments from stock content only: skips explicit defaults.instruments overrides AND tagged instruments. For demos/testing without third-party packs.
</ParamField>

## MCP tools

### `load_device`

Load a stock device, User Library preset, or plug-in (VST3/AU) onto a track. Specify either path OR part\_type, not both. The `path` argument accepts (a) classic browser paths like "Instruments/Operator" for stock devices, (b) `query:` URIs from find\_instruments\_by\_tag for user-tagged presets, or (c) plug-in URIs from the Plug-Ins browser section. part\_type=Bd/Snare/HiHat/Perc/Crash/Fill/Roll/Drums loads the deterministic default kit (the stock 909 Core Kit), falling back to an empty "Instruments/Drum Rack" + warning when it is unavailable (use browse\_devices "Drums" and load\_device on a specific kit preset to override). Tonal part\_types (Bass/Pad/Chord/etc.) load synths that sound by default.

```json theme={null}
{
  "tool": "load_device",
  "arguments": {
    "track_id": "<String>",
    "path": "<String>",
    "part_type": "<Nullable`1>",
    "position": "<String>"
  }
}
```

<ParamField path="track_id" type="String" required>
  Track number (1-based: 1, 2, … or 'first', 'second', …)
</ParamField>

<ParamField path="path" type="String">
  Browser path or URI. Accepts (a) classic stock-device paths like 'Instruments/Operator', (b) preset '.adg' browser paths like 'Drums/F9 TK Menu\_ Hat Closed V2.adg' (auto-resolved to their query: URI), or (c) query: URIs from find\_instruments\_by\_tag/show\_instrument, including plug-in URIs from the Plug-Ins browser section.
</ParamField>

<ParamField path="part_type" type="Nullable`1">
  PartType shorthand; resolves through defaults.instruments
</ParamField>

<ParamField path="position" type="String">
  Insert position in device chain (1-based: 1 = first slot; omit to append at the end)
</ParamField>

### `browse_devices`

List immediate children of a Live browser path. Reads the Vibrai instrument-browser snapshot (written by the Vibrai Live remote script via SP9) in-process — no live Ableton connection required. Empty path returns the snapshot's top-level folders. Examples: 'Drums' (drum kit presets), 'Instruments/Operator' (Operator presets), 'Packs/\<PackName>' (pack contents), 'User Library' (user-saved presets). Returns an empty list when the snapshot is missing — run install\_vibrai\_remote\_script and refresh in Live.

```json theme={null}
{
  "tool": "browse_devices",
  "arguments": {
    "path": "<String>"
  }
}
```

<ParamField path="path" type="String">
  Browser path string; empty = top-level snapshot folders.
</ParamField>

### `delete_device`

Remove a device from a track's top-level device chain by index. v1 scope: top-level chain only — nested racks (Drum Rack pads, Instrument Rack chains) are not addressable through this call. The device is gone immediately; there is no undo. Use list\_devices to discover indices.

```json theme={null}
{
  "tool": "delete_device",
  "arguments": {
    "track_id": "<String>",
    "device_index": "<String>"
  }
}
```

<ParamField path="track_id" type="String" required>
  Track number (1-based: 1, 2, … or 'first', 'second', …)
</ParamField>

<ParamField path="device_index" type="String" required>
  Device chain position (1-based: 1 = first device in the chain)
</ParamField>

### `list_devices`

List devices currently loaded on a track in chain order. Returns each device's index, id, name, and class info — pass device\_id to list\_automation\_params / get\_automation / write\_automation.

```json theme={null}
{
  "tool": "list_devices",
  "arguments": {
    "track_id": "<String>"
  }
}
```

<ParamField path="track_id" type="String" required>
  Track number (1-based: 1, 2, … or 'first', 'second', …)
</ParamField>

### `list_drum_pads`

List the pads of a Drum Rack on a track: each pad's index, name, and the MIDI note that triggers it. Use this to see which sounds a loaded kit maps to (e.g. which note is the snare). Returns an empty list when the device at device\_index is not a Drum Rack.

```json theme={null}
{
  "tool": "list_drum_pads",
  "arguments": {
    "track_id": "<String>",
    "device_index": "<Nullable`1>"
  }
}
```

<ParamField path="track_id" type="String" required>
  Track number (1-based: 1, 2, … or 'first', 'second', …)
</ParamField>

<ParamField path="device_index" type="Nullable`1">
  Index of the Drum Rack device in the track's chain (default 0 = first device)
</ParamField>

### `get_default_instrument`

Report the resolved instrument for a part-type without loading it: precedence is explicit defaults.instruments → tagged → genre stock default → built-in generic. Pass project\_path to resolve against a project's genre; stock\_only reports the stock-only view (skips explicit + tagged).

```json theme={null}
{
  "tool": "get_default_instrument",
  "arguments": {
    "part_type": "<PartType>",
    "project_path": "<String>",
    "stock_only": "<Boolean>"
  }
}
```

<ParamField path="part_type" type="PartType" required>
  PartType to resolve
</ParamField>

<ParamField path="project_path" type="String">
  Path to a .vibrai file to resolve genre-aware defaults against (defaults to Untitled.vibrai in CWD)
</ParamField>

<ParamField path="stock_only" type="Boolean">
  Report the stock-only view: skips explicit defaults.instruments overrides AND tagged instruments.
</ParamField>

### `load_default_instruments`

Load each MIDI part's default instrument from a .vibrai project onto its track, so the rendered song is audible. Tonal parts get their resolved synth (defaults.instruments override or built-in); drum parts get the deterministic default kit (the stock 909 Core Kit), falling back to an empty Drum Rack + warning when it is unavailable. Idempotent: a track that already has a device is skipped. Run this after `generate` (or pass with\_instruments=true to generate). live\_track\_id in the result is 1-based, matching list\_tracks and load\_device.

```json theme={null}
{
  "tool": "load_default_instruments",
  "arguments": {
    "project_path": "<String>",
    "stock_only": "<Boolean>"
  }
}
```

<ParamField path="project_path" type="String">
  Path to the .vibrai file (defaults to Untitled.vibrai in CWD when omitted)
</ParamField>

<ParamField path="stock_only" type="Boolean">
  Resolve instruments from stock content only: skips explicit defaults.instruments overrides AND tagged instruments. For demos/testing without third-party packs.
</ParamField>
