What it does
usagejoin.dev maps usage records from multiple AI providers onto one canonical
shape and joins cost observations into a deterministic, versioned evidence
report. Missing price or usage is reported as unknown —
never silently coerced to 0 — so pass,
unknown, and fail stay distinct and honest.
Supported providers
Each adapter has documented limits and valid plus adversarial fixtures.
anthropicazure-openaibedrockgenericgooglegroqopenai
Canonical contract version: 1.0.0.
Run it locally
Free local CLI and fixtures — no account, no upload of your secrets.
node src/cli.mjs INPUT.json --json
# exit 0 = pass, 2 = unknown, 1 = fail
Or call the stateless HTTP API: POST /v1/normalize with a usage
document (optionally { document, priceTable } to resolve absent cost
from token counts). See the source and contract.