1. Free identity-scoped routes
search/*, orgs/{jobId}, and report. Free forever, code-controlled.
guardIdentity verifies the signature + requires a registered agent, makes no
allowance call, and attaches no zc-usage (free means free — nothing to
settle). These never touch a buyer’s allowance.
2. Included free units on the paid meters
Theorgs_index and events_pull meters carry ZeroClick-owned includedUnits,
and reach the backend through the normal guard path exactly like paid
traffic:
- The buyer opts into free per call with
zc-mode: freeat the pay URL. ZeroClick consumes that header and never forwards it — the backend cannot tell a free-mode call from a paid one. The allowance check simply answersallowed, drawing down the buyer’s included units instead of charging. - Included units are per buyer (
zc-buyer-id), aggregated across every agent that human has claimed (including deleted agents). For pay-as-you-go they do not reset on a schedule — effectively a one-time lifetime free allowance per buyer (“free once, then never again”). - Free units require a claimed agent with a verified email; ZeroClick enforces that gate at the pay URL, not the backend.
Because free-vs-paid is invisible to the backend, an app-side “count only the
free ones” cap is not possible and intentionally not attempted. The
lifetime-per-buyer free allowance is owned entirely by ZeroClick via
includedUnits.Credit parity with the MCP surface
Momentra’s MCP path uses prepaid credits; the ZeroClick path uses ZC units. The two are aligned at a fixed rate so the free tiers are comparable.
So a new ZeroClick buyer’s
includedUnits should total ≈ 10 ZC — the same
free envelope as an MCP user’s 100 signup credits (≈ two fresh indexes plus a few
pulls). orgs_index is at exact 40-credit parity; only events_pull diverges
(whole-unit metering). These ZC↔M constants live in
functions/zeroclick/pricing.ts.
