> ## 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.

# Tracks

> Create, rename, list, and delete tracks.

Create, rename, list, and delete tracks.

## Command line

### `track list`

List all tracks

```bash theme={null}
vibrai track list
```

### `track get`

Get a track by its 1-based number

```bash theme={null}
vibrai track get <track>
```

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

### `track create`

Create a new track

```bash theme={null}
vibrai track create <name> --type <PARTTYPE>
```

<ParamField path="name" required>
  Track name
</ParamField>

<ParamField path="--type" default="Other">
  Part type (Bass, Lead, Melody, etc.)
</ParamField>

### `track delete`

Delete a track by its 1-based number

```bash theme={null}
vibrai track delete [track] --liveset-id <ID>
```

<ParamField path="track">
  Positional track number (1-based: 1, 2, … or first, second, …). Omit if using --liveset-id.
</ParamField>

<ParamField path="--liveset-id">
  Stable liveset\_id from 'vibrai track list --json'; preferred over the positional track number when available (survives reorders).
</ParamField>

### `track rename`

Rename a track by its 1-based number

```bash theme={null}
vibrai track rename [track] [name] --liveset-id <ID>
```

<ParamField path="track">
  Positional track number (1-based: 1, 2, … or first, second, …). Omit if using --liveset-id (in that case pass \<name> alone after the flag).
</ParamField>

<ParamField path="name">
  New track name. Required (validated at runtime; declared optional only so Spectre permits the --liveset-id \<name> shape).
</ParamField>

<ParamField path="--liveset-id">
  Stable liveset\_id from 'vibrai track list --json'; preferred over the positional track number when available (survives reorders).
</ParamField>

## MCP tools

### `list_tracks`

List all tracks in the current Live set. Track `id` is 1-based. `midi_index` is the ordinal among MIDI tracks only (also 1-based), or null for audio tracks.

```json theme={null}
{
  "tool": "list_tracks",
  "arguments": {}
}
```

### `get_track`

Get a single track. Pass either track\_id (positional, 1-based) or liveset\_id (stable across reorders within one Live session — get it from list\_tracks). liveset\_id wins if both are supplied. Returns the track in the same shape as list\_tracks (1-based `id` and `midi_index`). Errors TRACK\_NOT\_FOUND if no such track exists.

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

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

<ParamField path="liveset_id" type="String">
  Stable liveset\_id from list\_tracks; preferred over track\_id when available.
</ParamField>

### `create_track`

Create a new MIDI track of the given part type. Returns the created track with a 1-based `id` (matching list\_tracks).

```json theme={null}
{
  "tool": "create_track",
  "arguments": {
    "name": "<String>",
    "type": "<PartType>"
  }
}
```

<ParamField path="name" type="String" required>
  Track display name
</ParamField>

<ParamField path="type" type="PartType" required>
  Part type (drums, bass, chords, lead, pad, fx, etc.)
</ParamField>

### `delete_track`

Delete a track. Pass either track\_id (positional, 1-based) or liveset\_id (stable across reorders — get it from list\_tracks). liveset\_id wins if both are supplied. Subsequent tracks shift down so positional IDs stay dense; existing liveset\_ids on the remaining tracks are unaffected. Destructive — no undo. Errors: TRACK\_NOT\_FOUND, CANNOT\_DELETE\_LAST\_TRACK.

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

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

<ParamField path="liveset_id" type="String">
  Stable liveset\_id from list\_tracks; preferred over track\_id when available.
</ParamField>

### `set_track_name`

Rename a track. Pass either track\_id (positional, 1-based, may shift on reorder) or liveset\_id (stable across reorders within one Live session — get it from list\_tracks). liveset\_id wins if both are supplied. Use liveset\_id when you plan to issue multiple ops on the same track over time, especially across track insertions.

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

<ParamField path="name" type="String" required>
  New track name
</ParamField>

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

<ParamField path="liveset_id" type="String">
  Stable liveset\_id from list\_tracks; preferred over track\_id when available.
</ParamField>
