# Deciders CLI Commands

> The soat CLI commands for the Deciders module, with usage and every option, generated from the OpenAPI spec.

# Deciders Commands

See [Deciders module docs](../../modules/deciders) for permissions and data model.

### `soat list-deciders`

List deciders

- Method: `GET`
- Path: `/api/v1/deciders`

#### Usage

```bash
soat list-deciders
```

#### Options

##### `--project-id`

Project ID (required if not using project key auth)

- Source: `query`
- Required: no
- Type: `string`
- Example: `proj_V1StGXR8Z5jdHi6B`

### `soat create-decider`

Create a decider

- Method: `POST`
- Path: `/api/v1/deciders`

#### Usage

```bash
soat create-decider --name <string> --questions <array<object>>
```

#### Options

##### `--project-id`

Project ID (required if not using project key auth)

- Source: `body`
- Required: no
- Type: `string`
- Example: `proj_V1StGXR8Z5jdHi6B`

##### `--name`

Human-readable name, unique per project

- Source: `body`
- Required: yes
- Type: `string`
- Example: `support-triage`

##### `--description`

—

- Source: `body`
- Required: no
- Type: `string \| null`

##### `--agent-id`

A tool-less agent that answers

- Source: `body`
- Required: no
- Type: `string`
- Example: `agent_V1StGXR8Z5jdHi6B`

##### `--tool-id`

An http or pipeline tool that answers

- Source: `body`
- Required: no
- Type: `string`
- Example: `tool_V1StGXR8Z5jdHi6B`

##### `--questions`

The questions, in the order the model is shown them.

- Source: `body`
- Required: yes
- Type: `array<object>`
- Example: `[\{"type":"choice","name":"department","instructions":"Which department should handle this complaint?","choices":[\{"value":"billing","description":"Payments, invoices and refunds."\},\{"value":"technical","description":"Problems using the product."\}]\},\{"type":"predicate","name":"needs_human","instructions":"Must a person read this before any automated reply?"\}]`

##### `--version-label`

Optional tag for version 1, e.g. `initial`

- Source: `body`
- Required: no
- Type: `string`
- Example: `initial`

### `soat get-decider`

Get a decider

- Method: `GET`
- Path: `/api/v1/deciders/{decider_id}`

#### Usage

```bash
soat get-decider
```

#### Options

This command has no options.

### `soat update-decider`

Update a decider

- Method: `PATCH`
- Path: `/api/v1/deciders/{decider_id}`

#### Usage

```bash
soat update-decider
```

#### Options

##### `--name`

—

- Source: `body`
- Required: no
- Type: `string`

##### `--description`

—

- Source: `body`
- Required: no
- Type: `string \| null`

##### `--agent-id`

Replaces the backend with this agent

- Source: `body`
- Required: no
- Type: `string`

##### `--tool-id`

Replaces the backend with this tool

- Source: `body`
- Required: no
- Type: `string`

##### `--questions`

The questions, in the order the model is shown them.

- Source: `body`
- Required: no
- Type: `array<object>`
- Example: `[\{"type":"choice","name":"department","instructions":"Which department should handle this complaint?","choices":[\{"value":"billing","description":"Payments, invoices and refunds."\},\{"value":"technical","description":"Problems using the product."\}]\},\{"type":"predicate","name":"needs_human","instructions":"Must a person read this before any automated reply?"\}]`

##### `--version-label`

Optional tag for the version this write archives. Ignored when the write changes no question, since no version is archived.

- Source: `body`
- Required: no
- Type: `string`
- Example: `add-account-option`

##### `--expected-version`

Refuses the write unless the decider is at this version.

- Source: `body`
- Required: no
- Type: `unknown`

### `soat delete-decider`

Delete a decider

- Method: `DELETE`
- Path: `/api/v1/deciders/{decider_id}`

#### Usage

```bash
soat delete-decider
```

#### Options

This command has no options.

### `soat list-decider-versions`

List a decider's versions

- Method: `GET`
- Path: `/api/v1/deciders/{decider_id}/versions`

#### Usage

```bash
soat list-decider-versions
```

#### Options

This command has no options.

### `soat get-decider-version`

Fetch an archived decider version

- Method: `GET`
- Path: `/api/v1/deciders/{decider_id}/versions/{version}`

#### Usage

```bash
soat get-decider-version
```

#### Options

This command has no options.

### `soat restore-decider-version`

Restore an archived decider version

- Method: `POST`
- Path: `/api/v1/deciders/{decider_id}/versions/{version}/restore`

#### Usage

```bash
soat restore-decider-version
```

#### Options

##### `--label`

Optional tag for the new version. Defaults to `restored from vN`.

- Source: `body`
- Required: no
- Type: `string`
- Example: `rollback`

### `soat create-decision`

Request a decision

- Method: `POST`
- Path: `/api/v1/deciders/{decider_id}/decisions`

#### Usage

```bash
soat create-decision --input <unknown>
```

#### Options

##### `--input`

What is judged, not stored: a string; a list of `user` messages whose `content` is a string or `input_text` and `input_image` parts (an image as a base64 data URL); or any other JSON value, which an agent is shown as indented JSON. An array of objects carrying `role` is read as messages.

- Source: `body`
- Required: yes
- Type: `unknown`
- Example: `I was charged twice for the same order.`

##### `--metadata`

Caller-owned annotations stored on the decision and returned on every read — typically the id of what was judged, since the input itself is not stored. Written once, with the decision. A non-object is rejected with `400 VALIDATION_FAILED` and no decision is written.

- Source: `body`
- Required: no
- Type: `unknown`
- Example: `\{"ticket_id":"ZD-48213"\}`

##### `--wait`

True evaluates before answering and returns the settled decision. False — the default — returns the `queued` decision at once. A tool call, `builtin` or MCP, always waits.

- Source: `body`
- Required: no
- Type: `boolean`
- Default: `false`
- Example: `true`

### `soat create-inline-decision`

Request a decision with inline questions

- Method: `POST`
- Path: `/api/v1/decisions`

#### Usage

```bash
soat create-inline-decision --questions <array<object>> --input <unknown>
```

#### Options

##### `--project-id`

Project ID (required if not using project key auth)

- Source: `body`
- Required: no
- Type: `string`
- Example: `proj_V1StGXR8Z5jdHi6B`

##### `--agent-id`

A tool-less agent that answers

- Source: `body`
- Required: no
- Type: `string`
- Example: `agent_V1StGXR8Z5jdHi6B`

##### `--tool-id`

An http or pipeline tool that answers

- Source: `body`
- Required: no
- Type: `string`
- Example: `tool_V1StGXR8Z5jdHi6B`

##### `--questions`

The questions, in the order the model is shown them.

- Source: `body`
- Required: yes
- Type: `array<object>`
- Example: `[\{"type":"choice","name":"department","instructions":"Which department should handle this complaint?","choices":[\{"value":"billing","description":"Payments, invoices and refunds."\},\{"value":"technical","description":"Problems using the product."\}]\},\{"type":"predicate","name":"needs_human","instructions":"Must a person read this before any automated reply?"\}]`

##### `--input`

What is judged, not stored: a string; a list of `user` messages whose `content` is a string or `input_text` and `input_image` parts (an image as a base64 data URL); or any other JSON value, which an agent is shown as indented JSON. An array of objects carrying `role` is read as messages.

- Source: `body`
- Required: yes
- Type: `unknown`
- Example: `I was charged twice for the same order.`

##### `--metadata`

Caller-owned annotations stored on the decision. A non-object is rejected with `400 VALIDATION_FAILED`.

- Source: `body`
- Required: no
- Type: `unknown`
- Example: `\{"ticket_id":"ZD-48213"\}`

##### `--wait`

True evaluates before answering and returns the settled decision. False — the default — returns the `queued` decision at once. A tool call, `builtin` or MCP, always waits.

- Source: `body`
- Required: no
- Type: `boolean`
- Default: `false`
- Example: `true`

### `soat list-decisions`

List decisions

- Method: `GET`
- Path: `/api/v1/decisions`

#### Usage

```bash
soat list-decisions
```

#### Options

##### `--project-id`

Project ID (required if not using project key auth)

- Source: `query`
- Required: no
- Type: `string`
- Example: `proj_V1StGXR8Z5jdHi6B`

##### `--decider-id`

Only decisions requested from this decider

- Source: `query`
- Required: no
- Type: `string`
- Example: `dcd_V1StGXR8Z5jdHi6B`

##### `--status`

Only decisions in these statuses. Repeat the parameter to OR values. A value outside the enum, empty string included, is a `400`.

- Source: `query`
- Required: no
- Type: `array<enum("queued", "running", "completed", "failed")>`

### `soat get-decision`

Get a decision

- Method: `GET`
- Path: `/api/v1/decisions/{decision_id}`

#### Usage

```bash
soat get-decision --decision-id <string>
```

#### Options

##### `--decision-id`

The decision ID

- Source: `path`
- Required: yes
- Type: `string`
- Example: `dec_V1StGXR8Z5jdHi6B`
