# PAM command reference v1

The installed `pam manifest --json` is authoritative.
Model availability also requires `model list --json` runtimeReady.

## model list

List models with download and runtime status.

Tier: free. Effect: read. Availability: inspect installed contract.

```sh
pam model list --json
```

Input schema:

```json
{
  "type": "object",
  "properties": {},
  "required": [],
  "additionalProperties": false
}
```

## model status

Show the model cache and runtime status.

Tier: free. Effect: read. Availability: inspect installed contract.

```sh
pam model status --json
```

Input schema:

```json
{
  "type": "object",
  "properties": {},
  "required": [],
  "additionalProperties": false
}
```

## model pull

Download a model into the cache shared with PAM.

Tier: free. Effect: download. Availability: inspect installed contract.

```sh
pam model pull stable-audio-3-small-sfx --json
```

Input schema:

```json
{
  "type": "object",
  "properties": {
    "model": {
      "type": "string",
      "description": "Model ID from model list."
    },
    "request-key": {
      "type": "string",
      "description": "Stable caller key for a retained daemon job; reuse to recover its result."
    },
    "detach": {
      "type": "boolean",
      "description": "Return the retained job identity without waiting."
    }
  },
  "required": [],
  "additionalProperties": false
}
```

## model rm

Delete a model's manifest files from the shared cache.

Tier: free. Effect: remove. Availability: inspect installed contract.

```sh
pam model rm mrt2-small --yes --json
```

Input schema:

```json
{
  "type": "object",
  "properties": {
    "model": {
      "type": "string",
      "description": "Model ID from model list."
    },
    "yes": {
      "type": "boolean",
      "description": "Confirm the destructive action without prompting."
    },
    "request-key": {
      "type": "string",
      "description": "Stable caller key for a retained daemon job; reuse to recover its result."
    },
    "detach": {
      "type": "boolean",
      "description": "Return the retained job identity without waiting."
    }
  },
  "required": [],
  "additionalProperties": false
}
```

## audio analyze

Measure audio loudness and peaks (BS.1770).

Tier: free. Effect: read. Availability: inspect installed contract.

```sh
pam audio analyze kick.wav --json
```

Input schema:

```json
{
  "type": "object",
  "properties": {
    "peaks": {
      "type": "boolean",
      "description": "Include the existing 48-bin RMS envelope."
    },
    "pitch": {
      "type": "boolean",
      "description": "Estimate mono pitch and confidence."
    },
    "class": {
      "type": "boolean",
      "description": "Classify the mono sample and report measured features."
    },
    "request-key": {
      "type": "string",
      "description": "Stable caller key for a retained daemon job; reuse to recover its result."
    },
    "detach": {
      "type": "boolean",
      "description": "Return the retained job identity without waiting."
    },
    "offset": {
      "type": "integer",
      "description": "First batch analysis file to return.",
      "minimum": 0,
      "maximum": 1024,
      "default": 0
    },
    "page-size": {
      "type": "integer",
      "description": "Maximum batch analysis results per response.",
      "minimum": 1,
      "maximum": 32,
      "default": 32
    },
    "files": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "minItems": 1,
      "maxItems": 1024
    }
  },
  "required": [
    "files"
  ],
  "additionalProperties": false
}
```

## audio generate

Generate a one-shot WAV from a text prompt.

Tier: free. Effect: write. Availability: inspect installed contract.

```sh
pam audio generate -p "deep sub kick, tight transient" -d 1.2 --category kick -o kick.wav --json
```

Input schema:

```json
{
  "type": "object",
  "properties": {
    "prompt": {
      "type": "string",
      "description": "Sound or starting style description."
    },
    "duration": {
      "type": "number",
      "description": "Duration in seconds, up to the model's limit (120 s for the small models, 380 s for Medium).",
      "minimum": 0.05,
      "maximum": 380,
      "default": 1
    },
    "seed": {
      "type": "integer",
      "description": "Reproducible seed; zero draws a random seed.",
      "minimum": 0,
      "maximum": 4294967295,
      "default": 0
    },
    "category": {
      "type": "string",
      "description": "Sound category.",
      "enum": [
        "kick",
        "snare",
        "hat",
        "perc",
        "bass",
        "synth",
        "pad",
        "fx",
        "loop"
      ]
    },
    "out": {
      "type": "string",
      "description": "Output WAV or MIDI path; absent uses an exclusive derived filename (patterns default to JSON only)."
    },
    "model": {
      "type": "string",
      "description": "Model ID from model list."
    },
    "request-key": {
      "type": "string",
      "description": "Stable caller key for a retained daemon job; reuse to recover its result."
    },
    "detach": {
      "type": "boolean",
      "description": "Return the retained job identity without waiting."
    }
  },
  "required": [
    "prompt"
  ],
  "additionalProperties": false
}
```

## audio normalize

Normalize loudness and verify a true-peak ceiling.

Tier: free. Effect: write. Availability: inspect installed contract.

```sh
pam audio normalize input.wav --lufs -14 --tp -1 -o normalized.wav --json
```

Input schema:

```json
{
  "type": "object",
  "properties": {
    "lufs": {
      "type": "number",
      "description": "Target integrated LUFS; achieved loudness is reported if the peak ceiling prevents the target.",
      "minimum": -60,
      "maximum": 0,
      "default": -14
    },
    "tp": {
      "type": "number",
      "description": "Maximum measured true peak in dBTP.",
      "minimum": -24,
      "maximum": 0,
      "default": -1
    },
    "out": {
      "type": "string",
      "description": "Output WAV or MIDI path; absent uses an exclusive derived filename (patterns default to JSON only)."
    },
    "request-key": {
      "type": "string",
      "description": "Stable caller key for a retained daemon job; reuse to recover its result."
    },
    "detach": {
      "type": "boolean",
      "description": "Return the retained job identity without waiting."
    },
    "file": {
      "type": "string"
    }
  },
  "required": [
    "file"
  ],
  "additionalProperties": false
}
```

## audio repitch

Render varispeed pitch shifting using the browser repitch core.

Tier: free. Effect: write. Availability: inspect installed contract.

```sh
pam audio repitch input.wav --semitones 3 -o pitched.wav --json
```

Input schema:

```json
{
  "type": "object",
  "properties": {
    "semitones": {
      "type": "number",
      "description": "Varispeed pitch shift; duration changes.",
      "minimum": -24,
      "maximum": 24,
      "default": 0
    },
    "cents": {
      "type": "number",
      "description": "Additional pitch shift in cents.",
      "minimum": -100,
      "maximum": 100,
      "default": 0
    },
    "out": {
      "type": "string",
      "description": "Output WAV or MIDI path; absent uses an exclusive derived filename (patterns default to JSON only)."
    },
    "request-key": {
      "type": "string",
      "description": "Stable caller key for a retained daemon job; reuse to recover its result."
    },
    "detach": {
      "type": "boolean",
      "description": "Return the retained job identity without waiting."
    },
    "file": {
      "type": "string"
    }
  },
  "required": [
    "file"
  ],
  "additionalProperties": false
}
```

## audio trim

Trim a sample by time using the shared sample-edit core.

Tier: free. Effect: write. Availability: inspect installed contract.

```sh
pam audio trim input.wav --start 0.1 --end 1 -o trimmed.wav --json
```

Input schema:

```json
{
  "type": "object",
  "properties": {
    "start": {
      "type": "number",
      "description": "Trim start in seconds.",
      "minimum": 0,
      "maximum": 86400,
      "default": 0
    },
    "end": {
      "type": "number",
      "description": "Trim end in seconds; absent uses file end.",
      "minimum": 0,
      "maximum": 86400
    },
    "out": {
      "type": "string",
      "description": "Output WAV or MIDI path; absent uses an exclusive derived filename (patterns default to JSON only)."
    },
    "request-key": {
      "type": "string",
      "description": "Stable caller key for a retained daemon job; reuse to recover its result."
    },
    "detach": {
      "type": "boolean",
      "description": "Return the retained job identity without waiting."
    },
    "file": {
      "type": "string"
    }
  },
  "required": [
    "file"
  ],
  "additionalProperties": false
}
```

## audio gain

Apply sample gain using the shared sample-edit core.

Tier: free. Effect: write. Availability: inspect installed contract.

```sh
pam audio gain input.wav --db -3 -o quieter.wav --json
```

Input schema:

```json
{
  "type": "object",
  "properties": {
    "db": {
      "type": "number",
      "description": "Gain in decibels; samples exceeding full scale clip in the output WAV.",
      "minimum": -96,
      "maximum": 48
    },
    "out": {
      "type": "string",
      "description": "Output WAV or MIDI path; absent uses an exclusive derived filename (patterns default to JSON only)."
    },
    "request-key": {
      "type": "string",
      "description": "Stable caller key for a retained daemon job; reuse to recover its result."
    },
    "detach": {
      "type": "boolean",
      "description": "Return the retained job identity without waiting."
    },
    "file": {
      "type": "string"
    }
  },
  "required": [
    "db",
    "file"
  ],
  "additionalProperties": false
}
```

## audio reverse

Reverse a sample using the shared sample-edit core.

Tier: free. Effect: write. Availability: inspect installed contract.

```sh
pam audio reverse input.wav -o reversed.wav --json
```

Input schema:

```json
{
  "type": "object",
  "properties": {
    "out": {
      "type": "string",
      "description": "Output WAV or MIDI path; absent uses an exclusive derived filename (patterns default to JSON only)."
    },
    "request-key": {
      "type": "string",
      "description": "Stable caller key for a retained daemon job; reuse to recover its result."
    },
    "detach": {
      "type": "boolean",
      "description": "Return the retained job identity without waiting."
    },
    "file": {
      "type": "string"
    }
  },
  "required": [
    "file"
  ],
  "additionalProperties": false
}
```

## preset render

Render a PAM preset to WAV without opening PAM.

Tier: paid. Effect: write. Availability: inspect installed contract.

```sh
pam preset render groove.preset --bars 4 --seed 42 --stems --out groove.wav --json
```

Input schema:

```json
{
  "type": "object",
  "properties": {
    "seconds": {
      "type": "number",
      "description": "Render length in seconds; mutually exclusive with --bars. Defaults to the input duration for fx and audio master.",
      "minimum": 0.001,
      "maximum": 86400
    },
    "bars": {
      "type": "integer",
      "description": "Length in bars (1..64): pattern generation uses four beats and defaults to 1; preset rendering uses the preset time signature and defaults to 4.",
      "minimum": 1,
      "maximum": 64
    },
    "sample-rate": {
      "type": "integer",
      "description": "Output sample rate.",
      "minimum": 8000,
      "maximum": 192000,
      "default": 48000
    },
    "tail": {
      "type": "number",
      "description": "Additional effect tail in seconds after transport stops.",
      "minimum": 0,
      "maximum": 600,
      "default": 0
    },
    "seed": {
      "type": "integer",
      "description": "Reproducible seed; zero draws a random seed.",
      "minimum": 0,
      "maximum": 4294967295,
      "default": 0
    },
    "out": {
      "type": "string",
      "description": "Output WAV or MIDI path; absent uses an exclusive derived filename (patterns default to JSON only)."
    },
    "request-key": {
      "type": "string",
      "description": "Stable caller key for a retained daemon job; reuse to recover its result."
    },
    "detach": {
      "type": "boolean",
      "description": "Return the retained job identity without waiting."
    },
    "variation": {
      "type": "integer",
      "description": "Preset variation, numbered from 1; mutually exclusive with --song.",
      "minimum": 1,
      "maximum": 16
    },
    "song": {
      "type": "boolean",
      "description": "Render the preset song arrangement using its saved variation transitions."
    },
    "stems": {
      "type": "boolean",
      "description": "Write each cell stem alongside the master in one render pass."
    },
    "allow-missing": {
      "type": "boolean",
      "description": "Render missing samples as silence; otherwise report all missing paths and refuse."
    },
    "library": {
      "type": "string",
      "description": "PAM library base directory for samples, presets and saved locations; defaults to the PAM application support folder."
    },
    "linked-locations": {
      "type": "string",
      "description": "JSON file containing PAM linked sample locations; defaults to the PAM saved locations."
    },
    "preset": {
      "type": "string"
    }
  },
  "required": [
    "preset"
  ],
  "additionalProperties": false
}
```

## fx

Render a PAM cell effect chain over an audio file.

Tier: paid. Effect: write. Availability: inspect installed contract.

```sh
pam fx input.wav --chain effects.json --out processed.wav --json
```

Input schema:

```json
{
  "type": "object",
  "properties": {
    "seconds": {
      "type": "number",
      "description": "Render length in seconds; mutually exclusive with --bars. Defaults to the input duration for fx and audio master.",
      "minimum": 0.001,
      "maximum": 86400
    },
    "bars": {
      "type": "integer",
      "description": "Length in bars (1..64): pattern generation uses four beats and defaults to 1; preset rendering uses the preset time signature and defaults to 4.",
      "minimum": 1,
      "maximum": 64
    },
    "sample-rate": {
      "type": "integer",
      "description": "Output sample rate.",
      "minimum": 8000,
      "maximum": 192000,
      "default": 48000
    },
    "tail": {
      "type": "number",
      "description": "Additional effect tail in seconds after transport stops.",
      "minimum": 0,
      "maximum": 600,
      "default": 0
    },
    "seed": {
      "type": "integer",
      "description": "Reproducible seed; zero draws a random seed.",
      "minimum": 0,
      "maximum": 4294967295,
      "default": 0
    },
    "out": {
      "type": "string",
      "description": "Output WAV or MIDI path; absent uses an exclusive derived filename (patterns default to JSON only)."
    },
    "request-key": {
      "type": "string",
      "description": "Stable caller key for a retained daemon job; reuse to recover its result."
    },
    "detach": {
      "type": "boolean",
      "description": "Return the retained job identity without waiting."
    },
    "chain": {
      "type": "string",
      "description": "PAM state fragment as JSON or a JSON file: cell1_* settings, cell1_effectOrder and cells.1.effectConfig for fx; master* settings for audio master."
    },
    "file": {
      "type": "string"
    }
  },
  "required": [
    "chain",
    "file"
  ],
  "additionalProperties": false
}
```

## audio master

Render the PAM master effect chain over an audio file.

Tier: paid. Effect: write. Availability: inspect installed contract.

```sh
pam audio master mix.wav --chain mastering.json --out master.wav --json
```

Input schema:

```json
{
  "type": "object",
  "properties": {
    "seconds": {
      "type": "number",
      "description": "Render length in seconds; mutually exclusive with --bars. Defaults to the input duration for fx and audio master.",
      "minimum": 0.001,
      "maximum": 86400
    },
    "bars": {
      "type": "integer",
      "description": "Length in bars (1..64): pattern generation uses four beats and defaults to 1; preset rendering uses the preset time signature and defaults to 4.",
      "minimum": 1,
      "maximum": 64
    },
    "sample-rate": {
      "type": "integer",
      "description": "Output sample rate.",
      "minimum": 8000,
      "maximum": 192000,
      "default": 48000
    },
    "tail": {
      "type": "number",
      "description": "Additional effect tail in seconds after transport stops.",
      "minimum": 0,
      "maximum": 600,
      "default": 0
    },
    "seed": {
      "type": "integer",
      "description": "Reproducible seed; zero draws a random seed.",
      "minimum": 0,
      "maximum": 4294967295,
      "default": 0
    },
    "out": {
      "type": "string",
      "description": "Output WAV or MIDI path; absent uses an exclusive derived filename (patterns default to JSON only)."
    },
    "request-key": {
      "type": "string",
      "description": "Stable caller key for a retained daemon job; reuse to recover its result."
    },
    "detach": {
      "type": "boolean",
      "description": "Return the retained job identity without waiting."
    },
    "chain": {
      "type": "string",
      "description": "PAM state fragment as JSON or a JSON file: cell1_* settings, cell1_effectOrder and cells.1.effectConfig for fx; master* settings for audio master."
    },
    "file": {
      "type": "string"
    }
  },
  "required": [
    "chain",
    "file"
  ],
  "additionalProperties": false
}
```

## state

Apply state envelopes to Init or a preset in the headless PAM engine, read the resulting state and optionally render it.

Tier: free; paid with --render. Effect: write. Availability: inspect installed contract.

```sh
pam state --envelopes '[{"delta":{"cell1_mute":1}}]' --keys cell1_mute --json
pam state groove.preset --variation 2 --keys cell1_volume --json
pam state groove.preset --envelopes envelopes.json --render --bars 4 --seed 42 --out groove.wav --json
pam state --batch rows.jsonl
pam state --batch rows.jsonl --out results.jsonl --request-key corpus-1 --workers 8 --json
```

Input schema:

```json
{
  "type": "object",
  "properties": {
    "envelopes": {
      "type": "string",
      "description": "State envelopes ({delta, options?}, or {directNodeOps, options?} without a delta) applied in order: a JSON array or object, a JSON file, or - for stdin."
    },
    "keys": {
      "type": "string",
      "description": "Top-level state keys to return, as a comma list or a JSON array; absent keys are listed in missingKeys."
    },
    "batch": {
      "type": "string",
      "description": "JSON-lines script (protocol v1: reset, load_preset, apply, read and transport operations, or rows) from a file, or - for stdin. Replies go to stdout, or with --out to a JSON-lines results file; daemon and MCP runs always write the file."
    },
    "workers": {
      "type": "integer",
      "description": "Engine processes a pamd batch job splits its lines across (default 2, at most the core count); results merge in input order. A local batch runs one.",
      "minimum": 1,
      "maximum": 16
    },
    "tempo": {
      "type": "number",
      "description": "Transport tempo in beats per minute before the envelopes apply.",
      "minimum": 20,
      "maximum": 999
    },
    "playing": {
      "type": "boolean",
      "description": "Start the transport before the envelopes apply."
    },
    "variation": {
      "type": "integer",
      "description": "Preset variation, numbered from 1; mutually exclusive with --song.",
      "minimum": 1,
      "maximum": 16
    },
    "library": {
      "type": "string",
      "description": "PAM library base directory for samples, presets and saved locations; defaults to the PAM application support folder."
    },
    "linked-locations": {
      "type": "string",
      "description": "JSON file containing PAM linked sample locations; defaults to the PAM saved locations."
    },
    "render": {
      "type": "boolean",
      "description": "Render the session the envelopes leave to WAV, as preset render renders a preset; needs a PAM licence or active trial."
    },
    "seconds": {
      "type": "number",
      "description": "Render length in seconds; mutually exclusive with --bars. Defaults to the input duration for fx and audio master.",
      "minimum": 0.001,
      "maximum": 86400
    },
    "bars": {
      "type": "integer",
      "description": "Length in bars (1..64): pattern generation uses four beats and defaults to 1; preset rendering uses the preset time signature and defaults to 4.",
      "minimum": 1,
      "maximum": 64
    },
    "sample-rate": {
      "type": "integer",
      "description": "Output sample rate.",
      "minimum": 8000,
      "maximum": 192000,
      "default": 48000
    },
    "tail": {
      "type": "number",
      "description": "Additional effect tail in seconds after transport stops.",
      "minimum": 0,
      "maximum": 600,
      "default": 0
    },
    "seed": {
      "type": "integer",
      "description": "Reproducible seed; zero draws a random seed.",
      "minimum": 0,
      "maximum": 4294967295,
      "default": 0
    },
    "out": {
      "type": "string",
      "description": "Output WAV or MIDI path; absent uses an exclusive derived filename (patterns default to JSON only)."
    },
    "stems": {
      "type": "boolean",
      "description": "Write each cell stem alongside the master in one render pass."
    },
    "allow-missing": {
      "type": "boolean",
      "description": "Render missing samples as silence; otherwise report all missing paths and refuse."
    },
    "request-key": {
      "type": "string",
      "description": "Stable caller key for a retained daemon job; reuse to recover its result."
    },
    "detach": {
      "type": "boolean",
      "description": "Return the retained job identity without waiting."
    },
    "preset": {
      "type": "string"
    }
  },
  "required": [],
  "additionalProperties": false
}
```

## dj set

Render a DJ set of PAM presets to WAV, each boundary on its DJ view transition, without opening PAM.

Tier: paid. Effect: write. Availability: inspect installed contract.

```sh
pam dj set intro.preset groove.preset outro.preset --seed 42 --out set.wav --json
pam dj set set.json --stems --json
```

Input schema:

```json
{
  "type": "object",
  "properties": {
    "set": {
      "type": "object",
      "description": "A DJ set as JSON or a JSON file (shared/dj/set.schema.json): queue[0] is NOW and each later item names its preset, variation, length and the transition into it. Instead of the presets positional."
    },
    "sample-rate": {
      "type": "integer",
      "description": "Output sample rate.",
      "minimum": 8000,
      "maximum": 192000,
      "default": 48000
    },
    "tail": {
      "type": "number",
      "description": "Additional effect tail in seconds after transport stops.",
      "minimum": 0,
      "maximum": 600,
      "default": 0
    },
    "seed": {
      "type": "integer",
      "description": "Reproducible seed; zero draws a random seed.",
      "minimum": 0,
      "maximum": 4294967295,
      "default": 0
    },
    "out": {
      "type": "string",
      "description": "Output WAV or MIDI path; absent uses an exclusive derived filename (patterns default to JSON only)."
    },
    "request-key": {
      "type": "string",
      "description": "Stable caller key for a retained daemon job; reuse to recover its result."
    },
    "detach": {
      "type": "boolean",
      "description": "Return the retained job identity without waiting."
    },
    "stems": {
      "type": "boolean",
      "description": "Write each cell stem alongside the master in one render pass."
    },
    "allow-missing": {
      "type": "boolean",
      "description": "Render missing samples as silence; otherwise report all missing paths and refuse."
    },
    "library": {
      "type": "string",
      "description": "PAM library base directory for samples, presets and saved locations; defaults to the PAM application support folder."
    },
    "linked-locations": {
      "type": "string",
      "description": "JSON file containing PAM linked sample locations; defaults to the PAM saved locations."
    },
    "presets": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "minItems": 0,
      "maxItems": 65
    }
  },
  "required": [],
  "additionalProperties": false
}
```

## pattern generate

Generate seeded genre patterns with the shared MIDI corpus; optionally write MIDI.

Tier: free. Effect: generate. Availability: inspect installed contract.

```sh
pam pattern generate --genre house --seed 42 --bars 4 -o groove.mid --json
```

Input schema:

```json
{
  "type": "object",
  "properties": {
    "genre": {
      "type": "string",
      "description": "Pattern genre.",
      "enum": [
        "trap",
        "drill",
        "boombap",
        "dnb",
        "house",
        "techno",
        "idm"
      ],
      "default": "trap"
    },
    "seed": {
      "type": "integer",
      "description": "Reproducible seed; zero draws a random seed.",
      "minimum": 0,
      "maximum": 4294967295,
      "default": 0
    },
    "bpm": {
      "type": "number",
      "description": "MIDI tempo in beats per minute.",
      "minimum": 20,
      "maximum": 400,
      "default": 120
    },
    "bars": {
      "type": "integer",
      "description": "Length in bars (1..64): pattern generation uses four beats and defaults to 1; preset rendering uses the preset time signature and defaults to 4.",
      "minimum": 1,
      "maximum": 64
    },
    "cells": {
      "type": "string",
      "description": "Comma-separated PAM cell IDs (1..12); factory roles are used.",
      "default": "1,2,3,6"
    },
    "density": {
      "type": "number",
      "description": "Pattern density; absent uses genre default.",
      "minimum": 0,
      "maximum": 1
    },
    "syncopation": {
      "type": "number",
      "description": "Pattern syncopation; absent uses genre default.",
      "minimum": 0,
      "maximum": 1
    },
    "coherence": {
      "type": "number",
      "description": "Cross-cell pattern coherence.",
      "minimum": 0,
      "maximum": 1,
      "default": 0.5
    },
    "out": {
      "type": "string",
      "description": "Output WAV or MIDI path; absent uses an exclusive derived filename (patterns default to JSON only)."
    },
    "request-key": {
      "type": "string",
      "description": "Stable caller key for a retained daemon job; reuse to recover its result."
    },
    "detach": {
      "type": "boolean",
      "description": "Return the retained job identity without waiting."
    }
  },
  "required": [],
  "additionalProperties": false
}
```

## synth drum

Render procedural drum engines with named controls and timed triggers.

Tier: free. Effect: write. Availability: inspect installed contract.

```sh
pam synth drum --engine 808 --param Tune=55,Decay=1.5 -d 2 -o bass.wav --json
```

Input schema:

```json
{
  "type": "object",
  "properties": {
    "engine": {
      "type": "string",
      "description": "Drum engine name or ID from drumSynthEngines registry.",
      "enum": [
        "1",
        "kick",
        "2",
        "snare",
        "3",
        "hihat",
        "4",
        "clap",
        "5",
        "tom",
        "6",
        "fm",
        "7",
        "cymbal",
        "8",
        "cowbell",
        "9",
        "808",
        "10",
        "shaker",
        "11",
        "rim",
        "12",
        "conga",
        "13",
        "bell",
        "14",
        "pluck",
        "15",
        "zap",
        "16",
        "wave",
        "17",
        "chaos",
        "18",
        "stab",
        "19",
        "acoustic-kick",
        "20",
        "acoustic-snare",
        "21",
        "acoustic-cymbal",
        "22",
        "acoustic-hi-hat"
      ],
      "default": "kick"
    },
    "param": {
      "type": "string",
      "description": "Comma-separated name=value controls in registry units (Hz, seconds, ratios; pct controls use 0..100). Kick: Tune=30..160 note, P.Depth=1..5 ratio, P.Decay=0.005..0.2 time, Decay=0.03..3 time, Click=0..100 percent, Drive=0..100 percent, Tone=150..16000 freq, Wave=0..100 percent; Snare: Tune=120..400 freq, Noise=0..100 percent, Decay=0.03..0.5 time, N.Decay=0.03..0.6 time, N.Tone=800..8000 freq, P.Depth=1..3 ratio, P.Decay=0.005..0.3 time, Drive=0..100 percent; HiHat: Tune=160..640 freq, Decay=0.02..1 time, Tone=2000..12000 freq, Metal=0..100 percent, Noise=0..100 percent; Clap: Freq=400..3500 freq, Spread=0.004..0.02 time, Decay=0.05..2 time, Reso=1..12 num, Drive=0..100 percent; Tom: Tune=80..400 note, P.Depth=1..3 ratio, Decay=0.05..2.5 time, Tone=120..12000 freq, Noise=0..100 percent, Drive=0..100 percent, P.Decay=0.01..0.8 time; FM: Tune=50..1000 note, Ratio=0.5..8 ratio, FM Amt=0..24 num, Decay=0.03..3 time, FM Decay=0..100 percent, F.Back=0..100 percent, Drive=0..100 percent; Cymbal: Tune=140..560 freq, Decay=0.2..4 time, Tone=3000..14000 freq, Metal=0..100 percent, Sizzle=0..100 percent; Cowbell: Tune=300..900 note, Decay=0.08..0.8 time, Ratio=1.2..1.8 ratio, Tone=700..9000 freq, Drive=0..100 percent; 808: Tune=27.5..220 note, P.Depth=0..36 st, P.Time=0.005..0.12 time, Decay=0.1..8 time, Saturate=0..100 percent, Click=0..100 percent, Tone=80..6000 freq; Shaker: Tune=2000..12000 freq, Color=0..100 percent, Onset=0.0005..0.05 time, Decay=0.02..0.6 time, Rattle=0..0.012 time, Tone=0..100 percent; Rim: Tune=200..2500 note, Ring=0..100 percent, Decay=0.015..0.15 time, Partial=1..2.7 ratio, Snap=0..100 percent, Drive=0..100 percent; Conga: Tune=75..700 note, Slap=1..2.5 ratio, Decay=0.08..0.7 time, Partial=1.4..2 ratio, Tone=300..9000 freq, Skin=0..100 percent, Drive=0..100 percent; Bell: Tune=200..1800 note, Ratio=1.4..7 ratio, FM Amt=0..10 num, Decay=0.2..4 time, Inharm=0..100 percent, Strike=0..100 percent, Tone=800..18000 freq; Pluck: Tune=60..1200 note, Sustain=0..100 percent, Damp=0..100 percent, Excite=0..100 percent, Bright=300..12000 freq, Drive=0..100 percent, Decay=0.3..6 time; Zap: Tune=40..2000 note, Sweep=-6..6 num, S.Time=0.02..1 time, Decay=0.03..1.5 time, Timbre=0..100 percent, Noise=0..100 percent, Drive=0..100 percent, Tone=200..14000 freq; Wave: Tune=40..2000 note, Position=0..100 percent, P.Env=1..4 ratio, Decay=0.03..1.5 time, Bright=300..14000 freq, Fold=0..100 percent, Drive=0..100 percent, Draw=0..100 percent; Chaos: Tune=40..6000 note, Chaos=0..100 percent, Decay=0.03..1.2 time, Tone=300..12000 freq, Drive=0..100 percent, Noise=0..100 percent; Stab: Tune=35..1000 note, Shape=0..100 percent, Width=0..100 percent, Chord=0..6 num, Detune=0..100 percent, Decay=0.05..3 time, Tone=200..16000 freq, Drive=0..100 percent; Acoustic Kick: Tune=35..120 note, Punch=1..4 ratio, Decay=0.12..1.8 time, Beater=0..100 percent, Shell=0..100 percent, Damp=0..100 percent, Tone=200..9000 freq, Drive=0..100 percent; Acoustic Snare: Tune=110..440 note, Depth=0..100 percent, Decay=0.08..1.2 time, Snap=0..100 percent, Wires=0..100 percent, Buzz=0.03..0.9 time, Tone=400..12000 freq, Drive=0..100 percent; Acoustic Cymbal: Size=180..900 freq, Strike=0..100 percent, Decay=0.4..8 time, Bell=0..100 percent, Sizzle=0..100 percent, Tone=200..6000 freq, Spread=0..100 percent, Drive=0..100 percent; Acoustic Hi-Hat: Size=260..1100 freq, Open=0..100 percent, Decay=0.08..4.5 time, Strike=0..100 percent, Chatter=0..100 percent, Sizzle=0..100 percent, Tone=1200..16000 freq, Drive=0..100 percent"
    },
    "duration": {
      "type": "number",
      "description": "Duration in seconds, up to the model's limit (120 s for the small models, 380 s for Medium).",
      "minimum": 0.05,
      "maximum": 380,
      "default": 1
    },
    "velocity": {
      "type": "number",
      "description": "Drum trigger velocity.",
      "minimum": 0,
      "maximum": 1,
      "default": 1
    },
    "triggers": {
      "type": "string",
      "description": "Comma-separated trigger times in seconds.",
      "default": "0"
    },
    "sample-rate": {
      "type": "integer",
      "description": "Output sample rate.",
      "minimum": 8000,
      "maximum": 192000,
      "default": 48000
    },
    "out": {
      "type": "string",
      "description": "Output WAV or MIDI path; absent uses an exclusive derived filename (patterns default to JSON only)."
    },
    "request-key": {
      "type": "string",
      "description": "Stable caller key for a retained daemon job; reuse to recover its result."
    },
    "detach": {
      "type": "boolean",
      "description": "Return the retained job identity without waiting."
    }
  },
  "required": [],
  "additionalProperties": false
}
```

## stream start

Stream a realtime model from pamd to an audio device

Tier: free. Effect: stream. Availability: inspect installed contract.

```sh
pam stream start mrt2-small -p "warm analog pad"
```

Input schema:

```json
{
  "type": "object",
  "properties": {
    "model": {
      "type": "string",
      "description": "Model ID from model list."
    },
    "prompt": {
      "type": "string",
      "description": "Sound or starting style description."
    },
    "device": {
      "type": "string",
      "description": "Audio output device; absent uses the system default."
    },
    "temperature": {
      "type": "number",
      "description": "Realtime Magenta temperature control. Session default: 1.1.",
      "minimum": 0,
      "maximum": 1000
    },
    "cfg-style": {
      "type": "number",
      "description": "Realtime Magenta cfgStyle control. Session default: 3.",
      "minimum": -1,
      "maximum": 7
    },
    "cfg-notes": {
      "type": "number",
      "description": "Realtime Magenta cfgNotes control. Session default: 5.",
      "minimum": -1,
      "maximum": 7
    },
    "cfg-drums": {
      "type": "number",
      "description": "Realtime Magenta cfgDrums control. Session default: 1.",
      "minimum": -1,
      "maximum": 7
    },
    "creativity": {
      "type": "integer",
      "description": "Realtime Magenta creativity control. Session default: 0.",
      "minimum": 0,
      "maximum": 127
    },
    "top-k": {
      "type": "integer",
      "description": "Realtime Magenta topK control. Session default: 100.",
      "minimum": 1,
      "maximum": 1024
    },
    "blend-weights": {
      "type": "string",
      "description": "Six comma-separated blend weights, each 0..1."
    },
    "seed-rotation": {
      "type": "integer",
      "description": "Realtime Magenta seed-rotation control.",
      "minimum": -2147483648,
      "maximum": 2147483647
    },
    "drumless": {
      "type": "boolean",
      "description": "Enable drumless generation."
    },
    "onset-mode": {
      "type": "integer",
      "description": "Realtime Magenta onset-mode control.",
      "minimum": 0,
      "maximum": 1
    },
    "reference": {
      "type": "string",
      "description": "Reference WAV path; an empty string clears the reference."
    },
    "strength": {
      "type": "number",
      "description": "Realtime Magenta strength control.",
      "minimum": 0,
      "maximum": 1
    }
  },
  "required": [],
  "additionalProperties": false
}
```

## account status

Show the licence verdict and next step.

Tier: free. Effect: read. Availability: inspect installed contract.

```sh
pam account status --json
```

Input schema:

```json
{
  "type": "object",
  "properties": {
    "online": {
      "type": "boolean",
      "description": "Confirm this machine's licence with the server."
    }
  },
  "required": [],
  "additionalProperties": false
}
```

## account login

Activate this machine with a map.audio account.

Tier: free. Effect: account. Availability: inspect installed contract.

```sh
pam account login you@example.com
```

Input schema:

```json
{
  "type": "object",
  "properties": {
    "code-stdin": {
      "type": "boolean",
      "description": "Read the sign-in code from stdin."
    },
    "email": {
      "type": "string"
    }
  },
  "required": [],
  "additionalProperties": false
}
```

## account trial

Start the free PAM trial on this machine.

Tier: free. Effect: account. Availability: inspect installed contract.

```sh
pam account trial you@example.com
```

Input schema:

```json
{
  "type": "object",
  "properties": {
    "code-stdin": {
      "type": "boolean",
      "description": "Read the sign-in code from stdin."
    },
    "email": {
      "type": "string"
    }
  },
  "required": [],
  "additionalProperties": false
}
```

## account activate

Activate with a licence key.

Tier: free. Effect: account. Availability: inspect installed contract.

```sh
pam account activate --key-stdin
```

Input schema:

```json
{
  "type": "object",
  "properties": {
    "key": {
      "type": "string",
      "description": "Licence key; prefer --key-stdin for secrets."
    },
    "key-stdin": {
      "type": "boolean",
      "description": "Read the licence key from stdin."
    }
  },
  "required": [],
  "additionalProperties": false
}
```

## account deactivate

Release the shared PAM seat on this machine.

Tier: free. Effect: account. Availability: inspect installed contract.

```sh
pam account deactivate --yes
```

Input schema:

```json
{
  "type": "object",
  "properties": {
    "yes": {
      "type": "boolean",
      "description": "Confirm the destructive action without prompting."
    }
  },
  "required": [],
  "additionalProperties": false
}
```

## model load

Keep an admitted model loaded in the daemon.

Tier: free. Effect: load. Availability: inspect installed contract.

```sh
pam model load stable-audio-3-small-sfx --json
```

Input schema:

```json
{
  "type": "object",
  "properties": {
    "model": {
      "type": "string",
      "description": "Model ID from model list."
    },
    "request-key": {
      "type": "string",
      "description": "Stable caller key for a retained daemon job; reuse to recover its result."
    },
    "detach": {
      "type": "boolean",
      "description": "Return the retained job identity without waiting."
    }
  },
  "required": [
    "model"
  ],
  "additionalProperties": false
}
```

## model unload

Unload the persistent daemon model.

Tier: free. Effect: unload. Availability: inspect installed contract.

```sh
pam model unload stable-audio-3-small-sfx --json
```

Input schema:

```json
{
  "type": "object",
  "properties": {
    "model": {
      "type": "string",
      "description": "Model ID from model list."
    },
    "request-key": {
      "type": "string",
      "description": "Stable caller key for a retained daemon job; reuse to recover its result."
    },
    "detach": {
      "type": "boolean",
      "description": "Return the retained job identity without waiting."
    }
  },
  "required": [
    "model"
  ],
  "additionalProperties": false
}
```

## model ps

List persistent daemon models and worker states.

Tier: free. Effect: read. Availability: inspect installed contract.

```sh
pam model ps --json
```

Input schema:

```json
{
  "type": "object",
  "properties": {},
  "required": [],
  "additionalProperties": false
}
```

## pack list

List preset packs: catalog version, installed version, update, ownership and size.

Tier: free. Effect: read. Availability: inspect installed contract.

```sh
pam pack list --json
```

Input schema:

```json
{
  "type": "object",
  "properties": {},
  "required": [],
  "additionalProperties": false
}
```

## pack install

Download and install owned preset packs into PAM's library.

Tier: free. Effect: download. Availability: inspect installed contract.

```sh
pam pack install eko --json
pam pack install --all-owned --detach --json
```

Input schema:

```json
{
  "type": "object",
  "properties": {
    "all-owned": {
      "type": "boolean",
      "description": "Install every pack this licence owns that is missing or out of date."
    },
    "request-key": {
      "type": "string",
      "description": "Stable caller key for a retained daemon job; reuse to recover its result."
    },
    "detach": {
      "type": "boolean",
      "description": "Return the retained job identity without waiting."
    },
    "packIds": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "minItems": 0,
      "maxItems": 64
    }
  },
  "required": [],
  "additionalProperties": false
}
```

## pack status

Read a pack install job's state, progress and result.

Tier: free. Effect: read. Availability: inspect installed contract.

```sh
pam pack status <job-id> --json
```

Input schema:

```json
{
  "type": "object",
  "properties": {
    "jobId": {
      "type": "string"
    }
  },
  "required": [
    "jobId"
  ],
  "additionalProperties": false
}
```

## pack uninstall

Remove an installed preset pack's presets, samples and media.

Tier: free. Effect: remove. Availability: inspect installed contract.

```sh
pam pack uninstall eko --json
```

Input schema:

```json
{
  "type": "object",
  "properties": {
    "packId": {
      "type": "string"
    }
  },
  "required": [
    "packId"
  ],
  "additionalProperties": false
}
```

## job cancel

Request cancellation of a daemon job.

Tier: free. Effect: cancel. Availability: inspect installed contract.

```sh
pam job cancel <job-id> --json
```

Input schema:

```json
{
  "type": "object",
  "properties": {
    "job": {
      "type": "string"
    }
  },
  "required": [
    "job"
  ],
  "additionalProperties": false
}
```

## manifest

Print the complete command contract as JSON.

Tier: free. Effect: read. Availability: inspect installed contract.

```sh
pam manifest --json
```

Input schema:

```json
{
  "type": "object",
  "properties": {},
  "required": [],
  "additionalProperties": false
}
```

## schema

Print one command's contract.

Tier: free. Effect: read. Availability: inspect installed contract.

```sh
pam schema audio generate
```

Input schema:

```json
{
  "type": "object",
  "properties": {
    "command": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "minItems": 1,
      "maxItems": 2
    }
  },
  "required": [
    "command"
  ],
  "additionalProperties": false
}
```

## search

Find up to five commands by intent.

Tier: free. Effect: read. Availability: inspect installed contract.

```sh
pam search "measure loudness"
```

Input schema:

```json
{
  "type": "object",
  "properties": {
    "intent": {
      "type": "string"
    }
  },
  "required": [
    "intent"
  ],
  "additionalProperties": false
}
```

## mcp

Run the model-facing MCP server on stdio.

Tier: free. Effect: server. Availability: inspect installed contract.

```sh
pam mcp
```

Input schema:

```json
{
  "type": "object",
  "properties": {
    "out-dir": {
      "type": "string",
      "description": "Confined MCP output directory; default ~/Music/MAP Audio/PAM."
    }
  },
  "required": [],
  "additionalProperties": false
}
```

## version

Print the version and paid-tier availability.

Tier: free. Effect: read. Availability: inspect installed contract.

```sh
pam version --json
```

Input schema:

```json
{
  "type": "object",
  "properties": {},
  "required": [],
  "additionalProperties": false
}
```

## help

Show help for the tree, a noun or a command.

Tier: free. Effect: read. Availability: inspect installed contract.

```sh
pam help audio generate
```

Input schema:

```json
{
  "type": "object",
  "properties": {
    "command": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "minItems": 0,
      "maxItems": 2
    }
  },
  "required": [],
  "additionalProperties": false
}
```

## daemon up

Start or connect to the local PAM daemon.

Tier: free. Effect: start. Availability: inspect installed contract.

```sh
pam daemon up --json
```

Input schema:

```json
{
  "type": "object",
  "properties": {},
  "required": [],
  "additionalProperties": false
}
```

## daemon down

Stop the authenticated PAM daemon.

Tier: free. Effect: stop. Availability: inspect installed contract.

```sh
pam daemon down --json
```

Input schema:

```json
{
  "type": "object",
  "properties": {},
  "required": [],
  "additionalProperties": false
}
```

## daemon status

Show whether the PAM daemon is running.

Tier: free. Effect: read. Availability: inspect installed contract.

```sh
pam daemon status --json
```

Input schema:

```json
{
  "type": "object",
  "properties": {},
  "required": [],
  "additionalProperties": false
}
```

## job status

Read a retained daemon job status.

Tier: free. Effect: read. Availability: inspect installed contract.

```sh
pam job status <job-id> --json
```

Input schema:

```json
{
  "type": "object",
  "properties": {
    "request-key": {
      "type": "string",
      "description": "Stable caller key for a retained daemon job; reuse to recover its result."
    },
    "epoch": {
      "type": "string",
      "description": "Expected daemon epoch; a restart fails explicitly."
    },
    "job": {
      "type": "string"
    }
  },
  "required": [],
  "additionalProperties": false
}
```

## job result

Read a retained daemon job result.

Tier: free. Effect: read. Availability: inspect installed contract.

```sh
pam job result <job-id> --json
```

Input schema:

```json
{
  "type": "object",
  "properties": {
    "request-key": {
      "type": "string",
      "description": "Stable caller key for a retained daemon job; reuse to recover its result."
    },
    "epoch": {
      "type": "string",
      "description": "Expected daemon epoch; a restart fails explicitly."
    },
    "job": {
      "type": "string"
    }
  },
  "required": [],
  "additionalProperties": false
}
```
