Proof Holdings
by proof.holdings · holdings.proof/mcp-server
One API, all things verified — control, delegation, human approval, anti-impersonation.
- 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/mcpClaude, ChatGPT, Cursor and other apps
Add it as a custom connector with this URL (Streamable HTTP):
https://api.proof.holdings/mcpOr run it locally (npm)
claude mcp add mcp-server -- npx -y @proof-holdings/mcp-server@1.7.1Cursor, 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 deget_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 whalist_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 ttrigger_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 thsubmit_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 400resend_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 doestest_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 calist_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 Nget_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 thistart_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), tcheck_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 tooldelete_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 itwait_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 racecreate_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 sibliget_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 expircreate_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 (Claudeget_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. startget_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 opeget_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 thcancel_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 owait_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 clientvalidate_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, thelist_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 canncreate_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 creatingget_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. swait_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 texlist_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 toget_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 torevoke_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 revokeget_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_selist_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 currrevoke_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 cliget_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 agaiget_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 thget_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 wupdate_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 webhooexport_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
Markdown (GitHub README)
[](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 allPostman MCP ServerVerified maker
postman.comGive your AI agents trusted access to the full Postman platform.
Atlassian Rovo MCP ServerVerified maker
atlassian.comConnect to Atlassian Jira, Confluence, Loom, and more to search, create, and manage your work.
ZapierVerified maker
zapier.comHosted MCP server connecting AI assistants to 9,000+ apps and 40,000+ actions via Zapier.
Vercel MCPVerified maker
vercel.comAn MCP server for Vercel
WixVerified maker
wix.comA Model Context Protocol server for Wix AI tools
Microsoft MCP Server for EnterpriseVerified maker
@microsoftOfficial Microsoft MCP Server to query Microsoft Entra data using natural language