Skip to main content
There are two kinds of free work on the ZeroClick surface. They are enforced in different places — don’t conflate them.

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

The orgs_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: free at 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 answers allowed, 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.
Dashboard action: set includedUnits on the pay-as-you-go meter prices so each buyer’s free total is ~10 ZC (e.g. cover 2× orgs_index + a couple events_pull). This is the “free once per buyer, never resets” trial.