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

# Verify anything

> Confirm who or what you are dealing with.

Confirm the subject first. Save the result as a proof. The next access decision reads that proof instead of collecting the same evidence again.

## Start with the check you need

| If you need | Start here |
| - | - |
| A real person | [Proof of human](/verification/proof-of-human) |
| A social or work account | [Linked social accounts](/verification/ownership-social) or [team and organization](/verification/ownership-org-oauth) |
| A domain or handle | [Domain ownership](/verification/ownership-dns-txt) or [username](/verification/ownership-pseudonym) |
| A wallet or on-chain asset | [Linked wallets](/verification/wallet-link), [NFT holder](/verification/nft-ownership), or [token balance](/verification/token-holding) |
| An agent | [Agent identity](/agents/agent-identity) |

The full catalog, including risk and content checks, is on [Verify](/verification).

**Interactive** checks run on Proofable: passkey, OAuth, or a personhood step. **Instant** checks finish when the account signs. **Lookup** checks read live state.

## Start a check

<Tabs>
  <Tab title="Hosted">
    Send people to Proofable. They complete the check there and return with a proof ID.

    ```text theme={"system"}
    https://proofable.me/verify?verifiers=ownership-org-oauth&returnUrl=https://app.example.com/verified
    ```

    Read the proof ID from the `qHash` field on your return URL.
  </Tab>

  <Tab title="SDK">
    ```js theme={"system"}
    import { getHostedCheckoutUrl } from '@proofable/sdk';

    window.location.assign(
      getHostedCheckoutUrl({
        verifiers: ['ownership-social'],
        returnUrl: 'https://app.example.com/verified',
      }),
    );
    ```
  </Tab>

  <Tab title="MCP">
    ```text theme={"system"}
    Verify my GitHub account with Proofable. Reuse a current proof if I already have one.
    ```

    The assistant reuses a current proof first, or returns the one hosted step you need to finish.
  </Tab>
</Tabs>

## Require it before access

Define the required checks in your app, use `gateCheck` on your server, and show `VerifyGate` only when something is missing. [Gate access](/use-cases/gate-access)

## Next

<CardGroup cols={2}>
  <Card title="Verify" icon="badge-check" href="/verification">
    Every supported check and how it runs.
  </Card>

  <Card title="Hosted verification" icon="key" href="/verification/hosted">
    Sign-in and checks without building UI.
  </Card>

  <Card title="Account ownership" icon="at" href="/verification/accounts">
    Verified handles and linked accounts.
  </Card>

  <Card title="Domain ownership" icon="globe" href="/verification/domain">
    Prove control of a domain with DNS.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.