# CLI

enruta 0.3.0 and enruta-verify 0.3.0 from the terminal, including identity attestation, the merchant check, the money split, platform accounts, storefronts and recurrences.

Status: Live · Updated: 2026-09-14
Source: https://enruta.ai/docs/cli

Two commands. `enruta-verify` is standalone and dependency-free; `enruta` talks to the API and runs the merchant conformance suite locally.

## enruta-verify

```bash
npx enruta-verify <record.json | export-dir/> [--json] [--bundle path]
```

Exit `0` on PASS, `1` on FAIL, `2` when it cannot verify. Linked records print their `kind` and `chain`. Details in [Verification](https://enruta.ai/docs/verification).

## enruta

```bash
npm i -g @enruta/cli

enruta login                                          # paste a developer key; macOS keychain, else ~/.config/enruta/credentials.json (0600)
enruta requests get preq_01M2511Z7H3K9Q2W5T8N4B6RXD    # one payment request with its decision, settlement, reversals
enruta mandates list --agent agt_procurement_02        # mandates, their state and ledger
enruta records list --kind reversal                   # records by kind
enruta records get rec_01M2G8Z0Q4W7T2K9N5B3D6H1XC --with-bundle
enruta records export --from 2026-09-01 --to 2026-09-30 --out ./export-2026-09
enruta verify ./export-2026-09                        # same as enruta-verify; handles linked records
```

## Added in 0.2.0

```bash
enruta reversals list
enruta reversals get rev_01M2G8YV5R3T7W2Q9K4N8B6DXP
enruta reversals create --record rec_01M25129GZMJXTNQ47TMZRDGHN --kind refund --amount 9.99 --reason customer_request

enruta disputes list
enruta disputes packet rec_01M25129GZMJXTNQ47TMZRDGHN --pdf ./representment.pdf --export stripe   # stripe | shopify | chargeflow | justt | mastercard

enruta reconciliation lines --period 2026-W37
enruta reconciliation report 2026-W37 --build --sign

enruta settlements get rec_01M25129GZMJXTNQ47TMZRDGHN
enruta consents list
enruta consents revoke cns_01M2F0Q3W7T1K5N9B4D8H2XR
enruta agents pause agt_procurement_02 --reason "laptop lost"
enruta agents resume agt_procurement_02

enruta validate https://reamandrule.com --domain reamandrule.com --json   # merchant conformance, exit 0/1
enruta sandbox keys                                   # a self-serve sandbox organization
```

## Added in 0.3.0

```bash
enruta attest workload --agent agt_procurement_02           # in GitHub Actions; from another CI, set ENRUTA_WORKLOAD_TOKEN
enruta attest key --agent agt_procurement_02 --generate     # or --jwk <private.jwk.json>

enruta merchant verify reamandrule.com                      # exit 0 when verified, 1 when unverified or a mismatch
enruta economics preq_01M3C4…                               # who pays, receives and earns, each line with its basis
enruta pay-resource preq_01M3E6… https://data.example/v1/prices --header "Accept: application/json"   # pay an x402 or MPP resource with the request's mandate (agent key)

enruta platform accounts ls --kind agents
enruta platform accounts create --kind agents --name "Northwind Clinics" --external-ref cust_48121

enruta storefront ls
enruta storefront create --name "Shop Example" --slug shop-example --catalog-url https://shop.example/feeds/products.json

enruta recurrence ls --agent agt_procurement_02
enruta recurrence create --agent agt_procurement_02 --payee reamandrule.com --max 120.00 --cumulative-max 1200.00 --interval monthly
enruta recurrence pause rcu_01M3…                           # or resume, end
```

Every command accepts `--json`, and `--schema` prints the JSON Schema of the command’s output (from `@enruta/sdk`). `ENRUTA_API_URL` overrides the API, and `ENRUTA_API_KEY` overrides the stored key. Tokens are stored in the system keychain, never in a dotfile.

## enruta validate

Runs the [conformance suite](https://enruta.ai/docs/conformance) against a merchant’s UCP endpoint over REST from your machine: discovery, checkout lifecycle, protocol, idempotency, mandate enforcement, merchant signature, receipt. Prints the table and exits `1` on any failed applicable test. The hosted run (`POST /v0/sellers/conformance`) uses the same runner and issues the badge.
