Skip to main content
AgentScore Passport is a portable identity credential for buyer-side agents. Verify your identity once (KYC + age + jurisdiction + sanctions) and your Passport works on every AgentScore-gated merchant (wine, regulated commerce, age-restricted services) without re-verifying per site. The Passport is held by your agent’s wallet on your behalf. Merchants see only the derived facts (verified, 21+, US-Based, Sanctions Clear); never your raw PII (name, address, ID images, DOB).

Two ways to provision a Passport

The fastest path. One command opens a verify URL, polls until you complete KYC in the browser, and saves the credential to your agent’s wallet:
After that, every agentscore-pay <url> call against an AgentScore-gated merchant attaches your credential automatically; no per-call prompting, no “log in first” walls. Tokens are short-lived but agentscore-pay refreshes them silently in the background, so the user-visible UX is “verify once, never think about it again.”

From the dashboard (browser)

Go to agentscore.com/dashboard/verify. Sign in (free account). Optionally link a wallet by signing a challenge message. Complete identity verification with Stripe Identity (~2 minutes, government ID + selfie). Generate operator credentials manually for agents that don’t auto-provision.

What gets shared

Merchants you transact with see only these derived facts: Raw PII (name, address, ID document images, date of birth) is never shared. Identity verification is handled by Stripe Identity; sanctions screening by OpenSanctions against OFAC, UN, EU, UK, and other public watchlists. Both process PII transiently; AgentScore stores only the derived results.
KYC is optional during the wallet-link flow if you’re only using AgentScore for unregulated services. Merchants that gate on KYC will surface a verify prompt when you attempt to transact.

Cold-start bootstrap (no Passport yet)

If you skip passport login and run agentscore-pay <url> against an AgentScore-gated merchant, the merchant returns a 403 with a verify URL. Pay drives the verification inline; prints the URL, waits for you to complete KYC in the browser, then retries the original request automatically. That single shell command becomes: agent → bootstrap 403 → user clicks → verify → settle. Zero per-merchant configuration. The trade-off vs passport login first: bootstrap-minted Passports come from a merchant-initiated session, which doesn’t issue a refresh_token, so they re-verify every 24h when the access token expires. passport login mints a 24h access + 90d refresh pair; agentscore-pay rotates silently for ~90 days before any user-visible re-verify. Doing passport login once up front gets the better long-term UX.

Multiple wallets, one Passport

Your Passport applies to every wallet you link. Add wallets from the dashboard with the “EVM wallet” or “Solana wallet” button; KYC carries over; you don’t re-verify per wallet. One EVM signature covers all EVM chains (Base, Tempo, etc.); Solana uses its own signature. When you pay from any linked wallet, merchants resolve it to your Passport via POST /v1/assess. Captured wallets (wallets that paid under one of your operator credentials but were never explicitly claimed) also inherit your account’s KYC. The first time you pay from a fresh wallet under a verified Passport, AgentScore captures the wallet → operator mapping; from then on, the wallet resolves like any claimed wallet.

Revoking access

  • Wallet: unlink from the dashboard verify page.
  • Operator credential: agentscore-pay passport logout, DELETE /v1/credentials/:id, or revoke from the dashboard. Revoking a credential also revokes the refresh token minted with it and every later rotation in that chain, so the agent cannot renew itself; it has to log in again.
An agent that has been idle past its 24h access expiry still holds a live refresh token. Its credential keeps listing in the dashboard and in GET /v1/credentials (marked refreshable) even though the access token has expired, because revoking it is the only thing that stops the renewal.
  • Verification itself: contact support to delete your verification record.

Operator credentials in detail

Each Passport login mints an operator_token (opc_..., 24h) plus a refresh_token (prt_..., 90d); the access credential is what your agent presents as X-Operator-Token; the refresh credential stays on disk and is single-use rotating. A credential is identity, not verification: it identifies who the operator is, and the underlying account’s KYC determines whether merchants accept it. Access credentials are short-lived and rotated automatically when held by agentscore-pay (the wallet exchanges the refresh_token for a fresh pair the next time it’s used after access expiry); merchants check the live KYC state on each request via POST /v1/assess.
A credential token alone is not verification. If your account hasn’t completed KYC, POST /v1/credentials returns 409 kyc_required. Complete KYC first; every subsequent credential inherits the verified status automatically.

Privacy posture

  • No PII at rest in AgentScore beyond derived facts (verified / age_bracket / jurisdiction / sanctions_status).
  • No merchant-by-merchant disclosure of PII. Merchants see only the derived facts above.
  • Revocable. You can revoke any credential or unlink any wallet at any time. A revoke stops renewal, not just the current token.
  • Auditable. Every credential issuance + every merchant assessment is logged on your account.