Overview
Operator credentials (opc_...) let agents identify their human operator without a wallet. After the operator completes KYC, they (or their agent) can create credentials via the API or MCP tools.
Credentials expire after a configurable TTL (default 24 hours). Agents can self-serve new credentials via the API.
Create credential
Response
The credential value is shown only once. Store it securely.
The agent_memory block is a cross-merchant pattern hint; LLM-hosted agents should persist the pattern (never secrets) to long-term memory so future AgentScore-gated endpoints become returning-customer encounters. Same block is emitted on POST /v1/sessions, on missing_identity bootstrap denials (when no auto-session is created), and inline on the first-mint 402 Payment Required from merchants that echo the hint.
409: KYC required
If the account has not completed identity verification, credential creation returns 409 Conflict:
List credentials
Returns active (non-expired, non-revoked) credentials for your account, along with the account’s verification status.
The sanctions gate is exposed as a paired field rather than a raw status:
credentials[].refreshable is true when a live refresh token can still mint a
replacement for that credential. The list includes an expired credential while
this holds: revoking it is what stops the renewal, and a credential that stops
listing can never be revoked.
When the account has no KYC, account_verification contains only the status:
Revoke credential
{id} is either the credential’s id from GET /v1/credentials or the opc_...
value itself, so an agent holding only the credential can revoke it.
Revoking also revokes the refresh token minted with the credential, and every
later rotation of that token along with the credentials those rotations minted,
in the same transaction. An agent in that chain cannot mint a replacement; it
has to run a fresh Passport login.
Usage
Pass the credential as the X-Operator-Token header when calling /v1/assess or merchant endpoints:
Or via AgentScore Gate middleware; agents send X-Operator-Token alongside requests to gated services.
Report a captured wallet
Merchants call this after a successful payment to report the signer wallet back to AgentScore. Builds a cross-merchant credential↔wallet profile that powers unified reputation, cross-merchant sanctions, and already-verified detection on future credentials from known wallets.
Response
first_seen is true the first time this (credential, wallet, network) tuple is reported, and false on subsequent observations (internal transaction_count is incremented).
When an idempotency_key matches the most recent capture’s key, the response is:
and no state change happens (no transaction_count bump, no last_seen update).
Auth & tier
Any authenticated tier (free or paid). Rate limits still apply. Call this fire-and-forget; a failed capture must never block a payment response.
Errors
SDK helpers
- node-sdk:
client.associateWallet({ operatorToken, walletAddress, network })
- python-sdk:
client.associate_wallet(operator_token, wallet_address, network) (plus async aassociate_wallet)
- node-commerce identity adapters expose
captureWallet(ctx, { walletAddress, network }) which reads the operator_token from the gate state; no need to re-pass it.