Assay vendors a versioned price table. Each priced span is stamped with the version used. Historical spend stays reproducible.

Unknown is not zero

A model the table cannot vouch for records tokens and no cost. Totals keep that share visible. See Honesty.

Check

assay pricing check
Read-only scan. Exits 1 when:
  • a metered model is unpriced, or
  • unpriced history is now correctable, or
  • a scheduled rate change is due
JSON on --json is the monitoring form. The dashboard pricing panel (/pricing) judges against the same overlay this command reads.

Watch

assay pricing watch
The only CLI verb that reaches the network. It fetches public rate documents. It does not open the store. It presents no credential. Exits 2 when published rates moved since last seen. No other verb calls it. It is never ambient.

Correct

When a figure is knowably wrong (a model missing at capture, then added):
assay reprice run --dry-run
assay reprice run
Corrections are append-only overlay rows. The span is never edited. --dry-run prints the whole delta first. reprice ttl re-reads session logs for the 5-minute vs 1-hour cache-write split. It is harness-specific. Dry-run first. A host that records marked-up revenue rather than provider cost must not run a stock reprice. The pass would “fix” the ledger to a number the wallet did not charge.

Local overlay

A machine-local pricing.local.json may add a model the table lacks. That provenance is recorded separately. It may never override a vendored rate. Changing a shipped rate is a table version bump plus a correction pass.

Invoice

assay reconcile anthropic
Compares Assay’s computed + corrected cost to the Anthropic admin cost report, per day (and per model), over the last complete week. API-key traffic only. Subscription usage has no invoice on that API. Exits 1 when a day drifts past --tolerance, 3 when the API could not be read.