Skip to main content
A is a user’s signed authorisation for a set of scoped actions. A Stamped Mandate is delivered over the API as a PINT (header x-sumvin-pint-token). Once you’ve constructed a PINT payload, it needs to be signed before it can be exchanged for a JWT. The Sumvin ecosystem supports two signer types, each using different cryptographic curves and verification methods.

Signer Types

The SIS automatically determines the signer type based on whether the signing wallet has a registered agent key.

User Signing (secp256k1)

When the user signs directly, use standard Ethereum EIP-712 signing via their wallet. This is the most common path for user-initiated flows.

TypeScript (viem)

Python (eth-account)

Agent Signing (P-256)

When an AI agent signs a Stamped Mandate on the user’s behalf, it uses a P-256 key that has been registered as an authorised signer on the user’s Safe smart account. Verification happens on-chain via EIP-1271 — the SIS calls isValidSignature on the Safe contract to confirm the agent key is authorised.
When exchanging an agent-signed PINT, the SIS detects the agent key automatically — no need to specify signer_type in the request:
Agent signing requires the P-256 key to be registered on the user’s Safe contract. If the key is not an authorised signer, the EIP-1271 verification will fail with error code PINT-401-002.

After Signing

Once you have the signed Stamped Mandate — the PINT payload and its signature — pass both to the token exchange endpoint to receive a SIS-signed JWT.