Proof Holdings

by proof.holdings · holdings.proof/mcp-server

One API, all things verified — control, delegation, human approval, anti-impersonation.

OnlineRemote + local
Category
Cloud and DevOps
Connection
Remote (HTTP)
Tools
60 reported
Status
Online

Connect it to your AI

Claude Code

claude mcp add --transport http mcp-server https://api.proof.holdings/mcp

Claude, ChatGPT, Cursor and other apps

Add it as a custom connector with this URL (Streamable HTTP):

https://api.proof.holdings/mcp

Or run it locally (npm)

claude mcp add mcp-server -- npx -y @proof-holdings/mcp-server@1.7.1

Cursor, VS Code and other apps (mcp.json)

{
  "mcpServers": {
    "mcp-server": {
      "url": "https://api.proof.holdings/mcp"
    }
  }
}

Tools it offers

60 tools, as the server itself reported during our check on Oct 31, 2026.

  • create_verificationCreate a new identity verification. Initiates a verification flow for an asset identifier (phone number, email, domain, social handle, wallet address, account, or Telegram bot). Agent usage: pass the asset `type`, the de
  • get_verificationGet a verification by ID. Returns the full verification object including status, channel, and proof token if verified. Before calling this for a challenge you created, make sure your reply text already shows the user wha
  • list_verificationsList verifications with optional filters. Returns paginated results. ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this t
  • trigger_verificationTrigger a DNS/HTTP verification check for a pending domain verification. ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open th
  • submit_verification_codeSubmit an OTP/challenge code for a pending verification. Accepted ONLY where we delivered the code out-of-band to the party being verified: type "email", and type "domain" with channel "email". Any other pair answers 400
  • resend_verificationResend a verification message (email channel only). Generates and sends a new code. ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does
  • test_verifyAuto-complete a verification in test mode (pk_test_* API keys only). Useful for testing flows without real OTP delivery. ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then ca
  • list_verified_usersList verified users grouped by external_user_id. Shows all verifications per user. ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does N
  • get_verified_userGet a single verified user and their verifications by external user ID. ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open thi
  • start_domain_verificationStart a B2B domain verification. Creates a verification record and returns DNS/HTTP instructions for the customer to complete. ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), t
  • check_domain_verificationCheck the status of a pending domain verification. Triggers a DNS/HTTP check and returns the updated status. ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool
  • delete_domain_verificationDelete a domain verification attempt that is not verified (pending, verifying or failed) — nothing is revoked. A verified domain, or one that needs re-verification, is refused with domain_verified: removing it revokes it
  • wait_for_verificationPoll a verification until it reaches a terminal state (verified, failed, expired, revoked, or cancelled). Uses exponential backoff (2s initial, 1.5x, 30s max) with jitter. A multi-channel verification that lost the race
  • create_multi_channel_verificationCreate a multi-channel phone verification: one phone number challenged over several channels at once (OR / first-wins). The first channel the user completes wins, yields a single proof token, and cancels the losing sibli
  • get_multi_channel_verification_statusGet the status of a multi-channel verification group by its group_id. Returns the aggregate status (pending/verified/expired), the winning_channel once one completes, per-channel statuses, and the proof token (with expir
  • create_verification_requestCreate a multi-asset verification request. Allows verifying multiple assets (phone, email, domain, social, wallet, account, telegram_bot) in a single flow. ACCESS: needs a Proof account. Authenticate this client (Claude
  • get_verification_requestGet a verification request by ID. Returns the request with all its asset verification statuses. ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start
  • get_request_proofsGet proof tokens for verified assets in a verification request. Returns proof tokens that can be used for offline verification. ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate),
  • list_verification_requestsList verification requests with optional filters. Returns paginated results. ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT ope
  • get_request_by_referenceGet a verification request by its reference ID (your unique identifier). ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open th
  • cancel_verification_requestCancel a pending verification request. Only pending requests can be cancelled. ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT o
  • wait_for_requestPoll a verification request until it reaches a terminal state (completed, expired, or cancelled). Uses exponential backoff (2s initial, 1.5x, 30s max) with jitter. ACCESS: needs a Proof account. Authenticate this client
  • validate_proofValidate a proof token online. Checks the token signature, expiry, and revocation status against the server, and optionally that the proof is about the identifier you expect. Public endpoint — no API key required.
  • get_proof_statusGet the status of a proof by its public handle (ph_ctl_* / ph_dlg_*) or a verification ID. Returns whether the proof is active, suspended, expired, or revoked — a live proof reads "active". ACCESS: needs a Proof account.
  • revoke_proofRevoke a proof by its public handle (ph_ctl_* / ph_dlg_*) or a verification ID — the same addresses get_proof_status takes. The proof token will no longer validate anywhere: the status endpoint, the public validator, the
  • list_revoked_proofsGet the revocation list for offline proof validation. Returns a signed list of all revoked proof IDs. Reuse a fetched list for up to 5 minutes (its cache lifetime), then fetch it again to see new revocations; if you cann
  • create_sessionCreate a new phone verification session. Returns deep_link, qr_code (base64 PNG), and qr_text (UTF-8 text QR for terminal display). Sessions provide a hosted verification flow with callbacks. Agent usage: After creating
  • get_sessionGet a session by ID. Returns the session status, verification details, and proof token if verified. ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. s
  • wait_for_sessionPoll a session until it reaches a terminal state (verified, failed, or expired). Uses exponential backoff (2s initial, 1.5x, 30s max) with jitter. Before calling this for a challenge you created, make sure your reply tex
  • list_assetsList all verified assets for the authenticated user. Assets are verified identities (phones, emails, domains). ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this to
  • get_assetGet a single verified asset by ID. Returns details including type, value, status, and verification timestamps. ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this to
  • revoke_assetRevoke the proofs of one of your assets (a phone, email or domain) — the asset stays on the account. Owner only: sign in with start_login (a connection with only an API key is refused user_session_required — a key revoke
  • get_current_userGet the signed-in user's account details, plan and settings. Needs a login session: call start_login, then wait_for_login until it reports success. An API key alone cannot read this — for the key's own account use get_se
  • list_auth_sessionsList the current user's signed-in devices: every session that can still renew, idle ones included. Each shows its channel, user agent and expires_at, which is when the session stops being able to renew (not when its curr
  • revoke_auth_sessionSign out one device (session) by ID. Over a signed-in session it cannot end the current one (that is logout). Over an API key it can end any of the account's sessions. ACCESS: needs a Proof account. Authenticate this cli
  • get_usageGet usage metrics for the authenticated account. Shows verification counts, API calls, and quota usage. ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool agai
  • get_platform_summaryGet a one-call account snapshot: quota with end-of-month projection, request health (pending/completed/expired counts + success rate), per-channel completion rates, HITL counts, and active API key count. The same data th
  • get_settingsGet account settings: the outbound webhook endpoint with its event subscriptions, and the default proof lifetime. Branding (name, logo, colour, email theme, support email) belongs to each sub-account (project): read it w
  • update_settingsUpdate account settings: the outbound webhook endpoint with its event subscriptions, and the default proof lifetime. Branding belongs to each sub-account (project): change it with update_profile. Setting the first webhoo
  • export_dataExport a complete copy of your account's data (GDPR Articles 15 and 20), or check on one. Owner only: sign in with start_login first (a connection with only an API key is refused user_session_required). The first call st

Questions

What is the Proof Holdings MCP server?

One API, all things verified — control, delegation, human approval, anti-impersonation. It is made by proof.holdings and listed in the official MCP Registry as holdings.proof/mcp-server. MCP (Model Context Protocol) is the open standard that lets AI apps like Claude, ChatGPT and Cursor use outside tools.

How do I add Proof Holdings to Claude?

In the Claude app or claude.ai, open Settings, then Connectors, choose "Add custom connector" and paste https://api.proof.holdings/mcp. In Claude Code, run: claude mcp add --transport http mcp-server https://api.proof.holdings/mcp

How do I add Proof Holdings to ChatGPT?

ChatGPT can use remote MCP servers as connectors. In ChatGPT settings, under Apps and Connectors, turn on developer mode if asked, create a new connector and paste https://api.proof.holdings/mcp.

How do I add Proof Holdings to Cursor?

Open Cursor settings, go to MCP, choose "Add new MCP server" (or edit ~/.cursor/mcp.json) and add: { "mcpServers": { "mcp-server": { "url": "https://api.proof.holdings/mcp" } } }

Does Proof Holdings work right now?

Yes. It responded when we last checked on 31 Oct 2026. We check remote MCP servers every day.

What can Proof Holdings do?

It gives your AI 60 tools, including create_verification, get_verification, list_verifications, trigger_verification, submit_verification_code. The full list is on this page.

Is this your server? Get the badge for your README
chen.media/mcp badge

Markdown (GitHub README)

[![Listed on chen.media/mcp](https://chen.media/mcp/badge/holdings-proof-mcp-server.svg)](https://chen.media/mcp/holdings-proof-mcp-server)

HTML (switches to dark mode on its own)

<a href="https://chen.media/mcp/holdings-proof-mcp-server"><picture><source media="(prefers-color-scheme: dark)" srcset="https://chen.media/mcp/badge/holdings-proof-mcp-server.svg?theme=dark"><img src="https://chen.media/mcp/badge/holdings-proof-mcp-server.svg" alt="Listed on chen.media/mcp" height="40"></picture></a>

More in Cloud and DevOps

See all