Faces and voices are cheap to forge, and every check on the market checks a single moment. Pupul carries the one thing a moment cannot fake: a person-owned record of being a real human over time. The person grants you a scoped, signed block of it at sign-in, you verify it without ever calling us, and they can pull it back at any time.
Sign in and watch an AI meet you for the first time and already know you. Need a record first? Take the reading.
Sign in with Google told your app the user had a Google account. Sign in with Pupul hands your app a block of the person's own record of being human, granted by them, in a form you can verify without ever calling us.
Every AI product now needs this and has no clean way to get it. Bots and agents are indistinguishable from people in a single moment. Consent is becoming a legal requirement, not a nicety. What no competitor can shortcut is elapsed time: a record that started the day the person took their reading and has been accruing since, on an append-only ledger that even we cannot rewrite.
Their word, their rhythm, the force that moves them, and a greeting already adapted to them. Personalize from the first second, not the tenth session.
The token names how the person authenticated at the door and what they granted. An authentication fact you can check, not a checkbox a bot ticks.
Scoped, revocable, offline-verifiable consent, with a revocation list you can read. The record regulators and enterprises are about to demand.
Self-serve, no sales call. Mint credentials in one request, then it is ordinary OAuth with one extra call. First 1,000 reads a month are free, then the Developer plan is $49 a month for 25,000. We put the number here because a developer should not have to find the pricing on a different page to know what this costs at scale.
The access token is ES256. Fetch /.well-known/jwks.json once and verify every grant offline from then on, with no call back to us and no way for us to learn who checked. Revocation rides a public status list, so a grant the person pulled fails your check without a lookup that identifies you. An assistant that speaks MCP can verify a granted block directly against mcp.noctaracorp.com, tool noctara, mode packet.
One request answers whether a real human is there, whether it is the same human as before, and whether the pattern has broken, and it hands back the evidence for every answer. It never returns the reading, the answers, or anything the person wrote.
The thresholds ride in every response because a number nobody can inspect is a black box wearing an API. You are entitled to judge our definition of continuous rather than take it.
The registry answers whether a real person is there. Delegation answers the next question every agent standard leaves open: does this agent have that person's permission to act, and in what scope. AP2, Visa TAP, Mastercard Agent Pay and OAuth for MCP all anchor the human once and then ride tokens; none carries a signed root that a real, continuous person stands behind the agent. A delegation token is that root. The person mints it from their own grant, it names the agent and the exact scope, it expires within ninety days, and it is revocable to a public status list the same instant they change their mind.
Verify it the same way you verify anything we issue: check the ES256 signature against /.well-known/jwks.json and the jti against the public status list, offline, no call to us. The batteries-included path is GET /api/delegation-token?token=..., which returns active:true until the person revokes and active:false, reason:"revoked" the moment they do. We mint a delegation only for a human we can resolve to a real, continuous identity; an unauthenticated caller gets nothing.
A claim we cannot evidence comes back null, never false. false asserts we looked and the thing is not so; null says we do not know. Collapsing those two would mean telling you a real person is not one on the strength of a query that failed. If the ledger is unreadable we return 503 and withhold all four claims rather than guess. If the person has not granted your org, you get no claims at all, because a registry that answers questions about people who did not agree to be asked about is a surveillance product, and this one is not.
Be clear-eyed before you integrate: only a few dozen people across our base carry the two or more beats that is_human requires, and most consented records still answer all-nulls. The endpoint is correct; the records underneath it are thin. The useful version of this product is one where your own users have accrued something worth grading, and that takes weeks of them showing up, not an afternoon of you wiring it. We would rather tell you that now than after.
Free through 1,000 active records a month. After that, five cents per active record per month, with no minimum and no contract. An active record is one distinct person your key asked about at least once that month, counted once no matter how many times you ask, so re-checking on every session costs nothing extra.
If you would rather build on it before it costs anything at all, we are taking ten design partners: free and uncapped, a direct line to the founder, and the same honest account of how thin the records are today.
We bill only for answers. A call refused because the person had not granted you, or that could not complete because the ledger was unreadable, is logged for diagnostics and never billed.
The person mints their identity once, inside our own products, and owns it forever. Every app that reads a Pupul makes holding one worth more; every person who holds one makes adding the button worth more. The control register, how a person can be moved, is never grantable to anyone. This is a standard, not a feature.
is_human is a presence signal over an accruing record, not a calibrated biometric, and we say so to every buyer and in every response.