Skip to main content
Scopes declare what a authorises. Each scope is an -format capability string carried in the signed PurchaseIntent.scopes array and surfaced to partner integrations as the scopes claim on the exchanged . A Stamped Mandate is delivered over the API as a PINT (header x-sumvin-pint-token); the scope catalog below carries the same identifiers whether you read it as a Stamped Mandate or as its underlying PINT. The scope grammar is a specialisation of the broader Sumvin Resource Identifier family — same sr:{region}:… scheme, different shape. Scopes support per-scope parameters (amount caps, asset, provider, time windows) as URL query strings, giving partners fine-grained capability envelopes without expanding the scope vocabulary.
Every scope in this catalog maps one-to-one to an existing authenticated user-facing capability in the Sumvin API. When a Stamped Mandate carrying a scope is exchanged for a JWT, the scopes claim is exactly what the partner sees.

Grammar

Exactly five fixed segments — scheme, region, pint, domain, action. Query params are optional and delimited by ? with & between pairs.

Parameter Conventions

Values containing &, =, or whitespace must be percent-encoded. The scope string is always signed verbatim as part of the Stamped Mandate payload, so any encoding applied at sign time is preserved end-to-end.

Verification Tier Mapping

Scopes drive the verification tier of the exchanged JWT.
  • Standard (Tier 1) — JWT alone is sufficient. Partner validates JWT signature, audience, expiry.
  • Enhanced (Tier 2) — JWT + the original Stamped Mandate signature and payload headers (X-Pint-Signature, X-Pint-Payload).
Enhanced tier is reserved for the spend scopes that move value: sr:us:pint:spend:execute, sr:us:pint:spend:visa_checkout, and sr:us:pint:spend:card. Every other scope in the catalog is Standard. If a Stamped Mandate carries any Enhanced-tier scope, the entire JWT is issued at Enhanced tier. Read the Tier column of the catalog below as authoritative rather than memorising the list — it is generated from the same registry the API enforces.

Scope catalog

Every scope below is live in the registry. Requesting one that is not listed here is rejected at token exchange with PINT-400-004.

Scope Details

This section expands the scopes with parameter enforcement or a documented endpoint surface. Scopes not expanded here take no parameters — the catalog row above is the whole contract.

Sigil

Sigil is the identity domain. The older sr:us:pint:identity:* names for these four scopes are deprecated aliases.

sr:us:pint:sigil:kyc_status

Attests the user’s current KYC verification status. The JWT’s kyc_status claim carries the canonical value (pending, verified, rejected, …) for partners to read directly.

sr:us:pint:sigil:kyc_read

  • Endpoint gated: SIS /v0/users/{id}/kyc + /document
  • Optional params: doc_type (e.g. passport, id_card), reason (choices: onramp), requestor (choices: mercuryo)
  • Tier: Standard · KYC required:
Grants SIS partners dual-authenticated read access to the user’s KYC applicant PII and document images. See Getting User KYC Data for the full SIS flow.

sr:us:pint:sigil:proof_of_personhood

  • Surface: JWT attestation claim
  • Params: none
  • Tier: Standard · KYC required:
Attests the user is a unique, KYC-verified human. Partners can consume this as a binary gate without needing the underlying KYC details.

sr:us:pint:sigil:age_over_18

  • Surface: JWT attestation claim
  • Params: none
  • Tier: Standard · KYC required:
Attests the user is 18 or older. Commonly used for age-gated content and services that need a boolean signal without the user’s date of birth.

Spend

sr:us:pint:spend:execute

  • Endpoints gated: POST /v0/safe/rpc, IPA auto-execute, strategy run PINT linking
  • Optional params: max (base units), asset (SYMBOL@context), chain_id, recipient (comma-separated allowed addresses)
  • Tier: Enhanced · KYC required:
  • Example: sr:us:pint:spend:execute?max=10000000&asset=USDC@sei&chain_id=1329
Authorises on-chain spend on behalf of the user. Enhanced tier — partners must verify the original Stamped Mandate signature, not just the JWT. When max + asset are set, the API enforces them against the actual transaction amount and asset at execution time.

sr:us:pint:spend:ramp

  • Endpoint gated: POST /v0/ramp/sessions (hosted on-ramp widget)
  • Optional params: max, asset, currency
  • Tier: Standard · KYC required:
  • Example: sr:us:pint:spend:ramp?max=50000&currency=USD
Authorises a fiat-to-crypto ramp session via the hosted on-ramp widget. max and currency are enforced against the ramp session request when present.

sr:us:pint:spend:visa_checkout

  • Required params: max (fiat minor units), currency (ISO-4217)
  • Tier: Enhanced · KYC required:
  • Example: sr:us:pint:spend:visa_checkout?max=25000&currency=USD ($250.00 ceiling)
Authorises a card checkout on the Visa Intelligent Commerce rail. Both params are required — an approval carrying this scope always names its fiat ceiling and currency.

sr:us:pint:spend:card

  • Required params: id (external id of the enrolled card)
  • Tier: Enhanced · KYC required:
Pins a card checkout approval to one specific enrolled card. An approval without this scope leaves the card to be chosen when the purchase is made.

Errand

sr:us:pint:errand:search

  • Endpoints gated: POST /v0/user/ipa/, IPA strategy enrolment
  • Required params: time (window length in unix seconds)
  • Optional params: max (base-unit purchase ceiling)
  • Tier: Standard · KYC required:
  • Example: sr:us:pint:errand:search?time=2592000&max=5000000 (30-day window, $5 USDC cap)
Authorises the creation of an Intelligent Purchase Authorisation (IPA) and enrolment into Errand strategies. The time param is required on the scope string. API-side enforcement of time against the IPA’s lifecycle window is deferred pending the IPA schema gaining an explicit window field — today the scope’s presence is validated but the window is not yet bound. The older name sr:us:pint:perpetual:search is a deprecated alias for this scope.

Opening an Errand from an existing signal

Three scopes cover the other entry points into an Errand. None takes parameters; all are Standard tier and require KYC.

Reading and steering an Errand

sr:us:pint:errand:read grants read access to the Errand list, detail, and event history. sr:us:pint:errand:manage grants the clarify, decide, and cancel operations on an existing Errand. Both are Standard tier and neither requires KYC — an agent can follow and steer an Errand without the verification needed to open one.

Accounts

sr:us:pint:accounts:read

Read the user’s linked bank accounts and current balances. Used by delegated agent flows that need account context without the ability to initiate movement. Link a new bank account via the hosted bank-linking provider.

sr:us:pint:accounts:transfer

  • Endpoint gated: (reserved — route TBD)
  • Optional params: max, asset, currency
  • Tier: Standard · KYC required:
Reserved. The registry entry and parser support are in place so partner clients can begin requesting this scope, but there is no enforcement site in the current release — the transfer route is not yet live.

Transactions

sr:us:pint:transactions:read

Read transaction history and receipts. When from_date / to_date are set, the API enforces them by rejecting any listing or detail request for a transaction outside the declared window.

Personalisation

sr:us:pint:personalization:read

Covers AI-generated insights, user-defined rules, and budgets. The scope is registered and parses successfully, but no route enforces it today. The finer-grained sr:us:pint:rules:* and sr:us:pint:budgets:* scopes cover the same surface.

Personal finance data

These scopes cover the user’s own money surface. None takes parameters, all are Standard tier, and none requires KYC.
sr:us:pint:strategies:manage enrols the user and acts on run tasks. It does not authorise value movement — a strategy run that spends still needs sr:us:pint:spend:execute, which is Enhanced tier.

Approvals

These scopes let a holder inspect and withdraw the user’s own approvals. Both are Standard tier, take no parameters, and require no KYC.
  • sr:us:pint:pints:read — read the approvals the user has granted, including what each one permits.
  • sr:us:pint:pints:revoke — revoke an approval the user has granted. Revoking is permanent and withdraws every credential issued from that approval.
Revoking is permanent and withdraws every credential issued from that approval. See Revocation for what a verifier observes after a revoke.

CLI

Two provenance markers used by the Sumvin CLI. Both are Standard tier, take no parameters, and require no KYC. Each records who signed the mandate, and PINT exchange rejects any mandate whose marker disagrees with its signer.
  • sr:us:pint:cli:delegate_sign — marks a mandate signed by the developer’s local key via the CLI (caller-supplied signature). Exchange rejects the marker when the mandate was server-agent-signed.
  • sr:us:pint:cli:add_signer — marks a mandate that adds a signing key to the user’s Safe. Exchange rejects the marker unless the mandate was server-agent-signed.
A signer change alters who can authorise on the Safe from then on, so add_signer is never accepted on a locally-signed mandate. A mandate carrying it without a server agent signature is refused at token exchange with PINT-422-003.

Cards

sr:us:pint:cards:read

Read card details (last4, brand, status, funding wallet). Does not expose the card PAN or CVV — those are only surfaced via a separate, short-lived session.

sr:us:pint:cards:manage

State-change operations on an existing card. Excludes card creation and excludes any spend flow — sr:us:pint:cards:manage is strictly about card lifecycle, not value transfer.

Scope Validation

Scopes are validated at two points:
  1. Creation time (schema). When a Stamped Mandate is created at token exchange, every scope string is parsed and validated. Malformed grammar, unknown scope names, and malformed params are rejected before the Stamped Mandate is persisted.
  2. Enforcement time (semantic). When a request carries a PINT token, the gated endpoint enforces per-param limits (amount caps, asset match, provider match, date range, …) against the actual request.
Validation at both layers prevents malformed scopes from entering the system and prevents legitimate scopes from being used outside their declared envelope.

Error Codes

All error responses follow RFC 7807 Problem Details. See Errors for the full error catalog.

Scope Combinations

A single Stamped Mandate can request multiple scopes:
The resulting JWT will carry both scopes in its scopes claim, and the verification tier is the highest tier present — if any scope is Enhanced, the entire JWT is issued at Enhanced tier. Two scopes with the same name but different params (e.g. sr:us:pint:spend:execute?max=100000000 and sr:us:pint:spend:execute?max=200000000) are treated as distinct capability envelopes — both are retained in the signed array. Exact duplicates are collapsed.

Deprecated aliases

Five scope names remain in the registry only so that already-issued Stamped Mandates keep working. They parse and enforce exactly like their canonical counterpart, but new integrations should request the canonical name.
A verifier reading the scopes claim may still receive a deprecated alias from an in-flight credential. Treat an alias and its canonical scope as the same capability.

Post-MVP Scopes

The following scopes are not yet generally available. They fall into two categories.

Reserved for future releases

These scopes are not in the registry today. Requesting any of them during token exchange is rejected with PINT-400-004.
Wildcard scopes such as sr:us:pint:sigil:* are not part of the grammar. Every scope is requested by its exact name.

Registered but no enforcement site yet

These scopes are in the registry — requesting them parses successfully and they appear in the issued JWT — but no API endpoint consumes them yet.
Holding one of these scopes is not evidence that anything checked it. Do not treat the presence of an attestation scope in a token as an attestation — the claim it names is not verified at any endpoint today.
Scope definitions are versioned alongside the EIP-712 specification. See EIP-712 & Purchase Intents for the canonical type definitions and SRI for the underlying URI family.