Frequently asked questions#

Straight answers about authenticating agents and people with Grantor: MCP server auth, anonymous agent identity, OAuth with no authorization server, and how a caller onboards itself. Grantor is live on Base mainnet (chain 8453) as an unaudited developer preview; a free test path runs on Base Sepolia (84532).

How do I add authentication to an MCP server?#

Install a Grantor deed guard and publish a discovery document — there is no authorization server, no OAuth redirect, and no service to run. Agents authenticate with a deed, a self-certifying credential your server verifies in-process against a public on-chain registry (one eth_call), then treats as identity. Two modes cover the common cases: user-sig gates any wallet-holding caller, and agent-zk gates a fleet you enrolled on-chain. Install with npm i @grantor/verify (also on PyPI and crates.io); the full recipe is in MCP server auth.

How can an AI agent authenticate to an API without revealing its identity?#

Use an agent-zk deed. The agent proves in zero-knowledge that it is an enrolled member of the API owner's on-chain registry without revealing which member — the verifier learns "an authorized agent" plus a stable pseudonym, and a per-use nullifier prevents replay. Because the pseudonym is scoped and the proof discloses only membership, there is no correlation between which agent authenticated and which server it called. Minting and verifying an agent-zk deed both ship in TypeScript, Python, Go and Rust; see Agent tokens.

Can an AI agent pay for and access a gated API on its own, with no human?#

Yes. Becoming a paying tenant is four ordinary contract calls — createTenant, topUp, drawPeriod, then enroll a key — paid in USDC on Base, with no signup, no form, and no server on the other end. An agent that earns USDC (for example through x402 settlements on the same chain) funds its own access with the same asset in the same place, no facilitator or bridge in between. The npx grantor-onboard kit automates every step; the only human moment is funding the wallet once. See self-onboarding and getting started.

What is "OAuth without an authorization server"?#

It is Grantor's model: instead of an issuer that mints and holds tokens, the credential — a deed — self-certifies. The relying app verifies it in-process against the public on-chain GrantorRegistry (the trust anchor and billing ledger) and mints its own standard OIDC JWT that any JOSE library validates. There is nothing to run, trust, or subpoena: Grantor operates no hosted service and holds no keys, so a relying party depends on the chain, not on a company. The full model is in the sovereign tier.

How do I let on-chain members sign in without revealing which member they are?#

Use zero-knowledge membership deeds against a tenant-curated on-chain allowlist: agent-zk for machine callers, user-zk for humans. The holder proves membership in your registry tree in zero-knowledge, so the relying app receives a stable pseudonym and "is a member" — never the specific identity — and revocation works by rotating the tree's root. Both modes use the same Semaphore-based proof over different trees, verified in four languages against a shared conformance suite. See user gating and agent tokens.

Is there an anonymous OAuth — sign in with no email, no account, no password?#

Yes, for both people and agents. A human signs in with a wallet and the relying app receives a pairwise pseudonym scoped to (tenant, origin) — never an email, password, or wallet address — unlinkable across sites. Grantor stores no user secret and runs no server: the key never touches it, so there is no credential database to breach and nothing to leak. See wallet login.

How does an agent discover it needs auth and onboard itself?#

Every rejection is a machine-followable funnel, not a dead end. A 401 carries WWW-Authenticate: Grantor-Deed plus a learn URL — /.well-known/grantor-onboard.json, identical everywhere — pointing at a schema-versioned onboarding manifest and its narrative twin. An agent parses it, becomes a tenant, and gates its own resources with no human, browser, or consent screen. The protocol surface is the documentation; the walkthrough is self-onboarding: 401 to paying tenant.

This page is also served as Markdown — agents should read that. The whole tree is indexed for machines in llms.txt.