Seat-based billing can't price a robot.
Your product does work on a user's behalf — a generation, a run, a tool call. Per-seat plans don't map to that, and rolling your own credit system means reconciling balances, races on concurrent spend, and a metering pipeline you'll babysit forever.
Four primitives. Everything you'd otherwise build by hand.
credits.grant() Credits
An append-only balance per user. Grant, spend, top up — every change is an immutable ledger entry you can audit.
reservations.create() Reservations
Hold credits before a job runs, then commit the real cost or release the rest. No races, no negative balances.
meter.record() Metering
Record usage events and roll them into credits with rules you change in config — not in a deploy.
can() Entitlements
Sub-millisecond 'is this allowed?' checks at the edge of every request, driven by plan and balance.
Your docs are written for the thing that writes your code.
Every page has a .md twin and we publish
llms.txt. Point Cursor or Claude Code at a URL and it
pulls the exact, current integration straight into your repo — no copy-paste, no stale snippets.
- ✓Append
.mdto any docs URL for raw markdown - ✓One-click "Copy for AI" on every page
- ✓Versioned, so the agent never sees a deprecated call
Free until you're running real volume.
No credit card to start. No seat minimums. Pay only for the metered events you send — every primitive included on every plan, sandbox always free.