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
It fetches public rate documents. It does not open the store. It presents no credential. Exits 2 when published rates moved since last seen. Other network verbs: assay reconcile anthropic, assay attest (digest only). This one still never opens the store. 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.