> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sumvin.com/llms.txt
> Use this file to discover all available pages before exploring further.

# What is Sigil?

> Sigil is Sumvin's portable, verifiable identity — Proof of Personhood a user (and their agent) carries across services.

<Tooltip tip="Sumvin's portable, KYC-verified identity — Proof of Personhood a user carries across products." headline="Sigil" cta="Glossary →" href="/glossary">Sigil</Tooltip> is Sumvin's portable, verifiable digital identity, anchored to <Tooltip tip="Know Your Customer — identity verification that feeds attestation claims onto credentials." headline="KYC" cta="Glossary →" href="/glossary">KYC</Tooltip>-verified users. It lets users — and their AI agents — prove who they are across third-party services without repeatedly sharing personal data. **Sigil is not a record you look up. It's a credential the user carries, cryptographically.**

<Snippet file="product-term-disambiguation.mdx" />

## The three pillars of Sigil

1. **Non-custodial smart account wallets** — each user gets a Safe multisig wallet that serves as their on-chain identity anchor.
2. <Tooltip tip="A signed authorisation a user grants for specific scoped actions — delivered on the wire as a PINT." headline="Stamped Mandate" cta="Glossary →" href="/glossary">Stamped Mandates</Tooltip> — EIP-712 signed messages that authorise specific actions and scopes. A Stamped Mandate is delivered over the API as a `PINT` (header `x-sumvin-pint-token`).
3. **The Sumvin Identity Service (SIS)** — exchanges signed Stamped Mandates for verifiable JWTs that third parties can independently validate.

## How it works

A typical Sigil flow looks like this:

```mermaid theme={null}
flowchart LR
    subgraph YourApp["Your App"]
        A["User / Agent signs PINT (EIP-712)"]
    end
    subgraph SIS["Sumvin Identity Service"]
        B["POST /v0/sis/token/pint Validates signature + KYC Returns JWT"]
    end
    subgraph Verifier["Third-Party Verifier"]
        C["Checks Authorization header against JWKS + revocation"]
    end
    A -->|signed PINT| B -->|JWT| C
```

1. The user (or their agent) **signs a Stamped Mandate** — a structured EIP-712 message declaring what they want to do, which scopes they authorise, and how long the authorisation is valid. On the wire this is a `PINT`.
2. Your app **exchanges the signed mandate** with the SIS token service, which validates the signature, checks KYC status, and returns a SIS-signed JWT.
3. The JWT travels with requests to **third-party services**, which verify it against the SIS public keys (JWKS) and optionally check revocation status.

## Key concepts

| Concept                    | Description                                                                                                                      |
| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| **Sigil**                  | Sumvin's portable, KYC-verified identity — "Proof of Personhood" a user carries across services                                  |
| **SRI**                    | Sumvin Resource Identifier — a URI-style identifier for users and resources (`sr:us:person:safe:0x...`)                          |
| **Stamped Mandate (PINT)** | A signed authorisation a user grants for specific scoped actions — an EIP-712 signed message, delivered over the API as a `PINT` |
| **SIS**                    | Sumvin Identity Service — the API that validates Stamped Mandates and issues JWTs                                                |
| **Safe Wallet**            | The user's on-chain identity anchor (Gnosis Safe multisig)                                                                       |
| **Scopes**                 | Permission grants included in a Stamped Mandate (e.g., `sr:us:pint:identity:proof_of_personhood`)                                |
| **Verification Tier**      | Standard (JWT only) or Enhanced (JWT + PINT signature) — determined by scopes requested                                          |

## Who uses what

| You are...                                                      | You need...                                                                                                                              |
| --------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| An **app developer** building on Sumvin                         | The [Platform API](/introduction) to create users and wallets, then this Sigil tab to create Stamped Mandates and exchange them for JWTs |
| A **merchant or service provider** receiving Sumvin credentials | The [Verifier Guide](/merchant/overview) to validate incoming JWTs and PINT signatures                                                   |

## Next steps

<ol className="counter-style">
  <li>**[SRI format](/identity/sri)** — the URI family that identifies users, resources, and scopes.</li>
  <li>**[EIP-712 and PINTs](/identity/pint)** — the signed message spec you'll mint against.</li>
  <li>**[Token exchange](/identity/token-exchange)** — trade a signed PINT for a SIS-issued JWT.</li>
  <li>**[Scopes reference](/identity/scopes)** — the capability envelope each PINT carries.</li>
</ol>

<ol className="counter-style">
  <li>**[SRI format](/identity/sri)** — the URI family that identifies users, resources, and scopes.</li>
  <li>**[EIP-712 and PINTs](/identity/pint)** — the signed message spec your Stamped Mandates are built on.</li>
  <li>**[Token exchange](/identity/token-exchange)** — trade a signed Stamped Mandate for a SIS-issued JWT.</li>
  <li>**[Scopes reference](/identity/scopes)** — the capability envelope each Stamped Mandate carries.</li>
</ol>
