NestDaddy

Proof Holdings

holdings.proof/mcp-server · v1.10.0

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

Connect Remote server

Terminal
claude mcp add --transport http mcp-server https://api.proof.holdings/mcp
~/.cursor/mcp.json
{
  "mcpServers": {
    "mcp-server": {
      "url": "https://api.proof.holdings/mcp"
    }
  }
}
.vscode/mcp.json
{
  "servers": {
    "mcp-server": {
      "type": "http",
      "url": "https://api.proof.holdings/mcp"
    }
  }
}
Claude Desktop
Settings > Connectors > Add custom connector
URL: https://api.proof.holdings/mcp

Tools 80 found in our last check

  • create_verification

    Create 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 delivery `channel`, and the `identifier` (e.g. type "phone",…

  • get_verification

    Get 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 what to act on — the link itself, the SMS text and number, or…

  • list_verifications

    List 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 tool.

  • trigger_verification

    Trigger 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 this tool.

  • submit_verification_code

    Submit 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 unsupported_for_type and completes elsewhere — use trigger…

  • resend_verification

    Resend 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 NOT open this tool.

  • test_verify

    Auto-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 call this tool again. start_login does NOT open this tool.

  • list_verified_users

    List 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 NOT open this tool.

  • get_verified_user

    Get 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 this tool.

  • start_domain_verification

    Start 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), then call this tool again. start_login does NOT open this to…

  • check_domain_verification

    Check 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 again. start_login does NOT open this tool.

  • delete_domain_verification

    Delete 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 its proofs and every delegation issued from it, which is dele…

  • wait_for_verification

    Poll 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 is "cancelled" and one whose proof was withdrawn is "revoke…

  • create_multi_channel_verification

    Create 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 siblings. Exactly one proof is billed, at the winning channel's…

  • get_multi_channel_verification_status

    Get 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 expires_at) when the group is verified. Before calling this for…

  • create_verification_request

    Create a multi-asset verification request. Allows verifying multiple assets (phone, email, domain, social, wallet, account, telegram_bot) in a single flow. Give the recipient the returned verification_url; wait_for_request or get_verification_request then reads its progress unti…

  • get_verification_request

    Get 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_login does NOT open this tool.

  • get_request_proofs

    Get 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), then call this tool again. start_login does NOT open this t…

  • list_verification_requests

    List 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 open this tool.

  • get_request_by_reference

    Get 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 this tool.

  • cancel_verification_request

    Cancel 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 open this tool.

  • wait_for_request

    Poll 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 (Claude Code: /mcp → Authenticate), then call this tool aga…

  • validate_proof

    Validate 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_status

    Get 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. Authenticate this client (Claude Code: /mcp → Authenticate…

  • revoke_proof

    Revoke 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 revocation list and the Token Status List all report it re…

  • pause_proof

    Pause a proof by its public handle (ph_ctl_* / ph_dlg_*) or a verification ID — a reversible stop, undone with resume_proof. While paused the proof is invalid: the status endpoint, the public validator and the Token Status List report it suspended; it is deliberately NOT put on…

  • resume_proof

    Resume a proof paused with pause_proof, by the same handle (ph_ctl_* / ph_dlg_*) or verification ID: it validates again everywhere, and a resumed delegation is honoured again by gated publishers on their next status check. Only the paused row flips back — a proof revoked while p…

  • list_revoked_proofs

    Get 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 cannot, its signature stays verifiable offline for 1 hour.

  • get_proof_token

    Get the current token of a proof you own, by its public ph_ctl_* handle. After a signing-key rotation this is the re-signed token, which replaces any older copy you hold. Each read is audited. A revoked or expired proof answers proof_not_live; a suspended one is still served. Th…

  • list_reissued_proofs

    List your proofs whose token was re-signed at or after an instant, oldest first — what to re-fetch after a signing-key rotation, for example when a webhook was missed. Items are references {proof_id, reissued_at, token_url}, never tokens: pull a ph_ctl_* item with get_proof_toke…

  • get_delegation_token

    Get the current token of an active delegation by its public ph_dlg_* handle — after a signing-key rotation, the re-signed token to publish in place of the old one. Public endpoint — no API key required, since the token is already published with the delegation. Any handle that is…

  • create_session

    Create 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 a session, pass the response's `deep_link` to render_auth_l…

  • get_session

    Get 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. start_login does NOT open this tool.

  • wait_for_session

    Poll 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 text already shows the user what to act on — the link itself,…

  • list_my_proofs

    List 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 tool again. start_login does NOT open this tool.

  • list_assets

    Deprecated: use list_my_proofs

  • get_my_proof

    Get 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 tool again. start_login does NOT open this tool.

  • get_asset

    Deprecated: use get_my_proof

  • revoke_my_proof

    Revoke EVERY proof of one of your assets (a phone, email or domain), by its asset id from list_my_proofs — the asset stays on the account. A ph_ctl_* / ph_dlg_* handle is one proof, not an asset: revoke that with revoke_proof. Owner only: sign in with start_login (a connection w…

  • revoke_asset

    Deprecated: use revoke_my_proof

  • get_current_user

    Get 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_self_api_key or get_settings. ACCESS: needs a Proof account,…

  • list_auth_sessions

    List 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 current access token expires). When called via API key, no sess…

  • revoke_auth_session

    Sign 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. NOT AVAILABLE HERE: This tool is not available on the hosted Proof MCP server: it needs the auth:read or auth:w…

  • get_usage

    Get 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 again. start_login does NOT open this tool.

  • get_platform_summary

    Get a one-call account snapshot: quota with end-of-month projection, request health (pending/completed/expired counts + success rate), per-channel completion rates, approval channel counts, and active API key count. The same data the dashboard home renders. The hitl_channels sub…

  • get_settings

    Get 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: read it with get_sub_account. The webhook signing secret is NOT returned to an…

  • update_settings

    Update account settings: the outbound webhook endpoint with its event subscriptions, and the default proof lifetime. Branding belongs to each sub-account: change it with update_sub_account. Setting the first webhook endpoint creates the signing secret and returns it in this resp…

  • export_data

    Export 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 starts the export; it is prepared in the background, and the…

  • search

    Prefix-anchored global account search across six resource buckets (verification_requests, verifications, hitl, confirmations, authorizations, api_keys). Case-sensitive prefix match over indexed plaintext fields only; recipient identifiers are masked. Results are scoped to the au…

  • get_self_api_key

    Get the calling API key's own redacted metadata (id, name, key_prefix, environment, scopes, last_used_at, revoked_at, created_at) for agent self-inspection. Never returns the key hash or full secret. Requires API-key auth — a JWT session has no single-key context (returns 400 ap…

  • get_api_key_usage

    Get per-API-key usage for a given key id: verification counts by type/channel/status, plus verification-request/confirmation/authorization totals, and attribution context (attribution_cutoff_at, attributed_fraction). The counts cover the key and every key it replaced (api_key.re…

  • get_company

    Get the account company profile: legal name, registration code, country, EU VAT number, billing address and billing email, with the state of the VAT number VIES check. company is null before one is saved. Needs settings:read on an account-wide key; a key bound to one sub-account…

  • list_templates

    List the custom message templates of one sub-account, organized by channel and message type. Templates belong to a sub-account, not to the account: profile_id picks it — omitted, a sub-account key lists its own sub-account and an account-wide key the primary sub-account. ACCESS:…

  • get_default_templates

    Get the default message templates — one for each channel and message type a message is actually sent for. These are the built-in templates a sub-account sends when it has no custom template of its own. ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp →…

  • get_template

    Get the template a sub-account sends for a channel and message type: its custom template if set (scope "project"), otherwise the default (scope "default"). The response names the sub-account in profile_id. ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mc…

  • update_template

    Create or update a sub-account's custom template for a channel and message type, replacing the default for that sub-account only. Name the brand with {{business_name}}: a template spelling out a sub-account's own name is refused (template_hardcoded_name). A template for a channe…

  • delete_template

    Delete a sub-account's custom template, reverting that sub-account to the default template for the channel and message type. ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

  • preview_template

    Preview a template with sample data before saving, as a sub-account would send it. Shows how the message will look with placeholder variables filled in. ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_l…

  • render_template

    Render the template a sub-account sends — its custom template, otherwise the default — with provided variables. Returns the fully rendered message content. ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. star…

  • get_webhook_stats

    Get webhook delivery statistics including total deliveries, success/failure counts, and recent activity. ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

  • list_webhook_deliveries

    List webhook delivery attempts with pagination and filtering. Shows delivery status, response codes, and timestamps. ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

  • get_webhook_delivery

    Get details of a single webhook delivery attempt including request/response payloads and retry history. ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

  • retry_webhook_delivery

    Retry a failed webhook delivery. Creates a new delivery attempt with the same payload to the configured endpoint. ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

  • list_webhook_endpoints

    List the account's webhook endpoints (URL, events, scope, sub-accounts, status). Secrets are never listed. A sub-account key sees only the endpoints scoped to exactly its own sub-account. ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate),…

  • get_webhook_endpoint

    Get one webhook endpoint by ID. The signing secret is not returned (only create_webhook_endpoint and rotate_webhook_endpoint_secret return it). ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does…

  • create_webhook_endpoint

    Add a webhook endpoint. An event reaches every active endpoint whose scope includes the event's sub-account and whose events match; an account-level event reaches "all"-scope endpoints only. An account still delivering to the single webhook URL in its settings is moved onto endp…

  • update_webhook_endpoint

    Update a webhook endpoint: its URL, events, scope, sub-accounts, status or description. Every field is optional, but send at least one. Changing the scope to "selected" without profile_ids keeps the stored list. The signing secret is unchanged (rotate it with rotate_webhook_endp…

  • delete_webhook_endpoint

    Delete a webhook endpoint. It receives no new events; deliveries already queued to it are still attempted, signed with the secret they were queued with. Cannot be undone. ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this t…

  • rotate_webhook_endpoint_secret

    Replace a webhook endpoint's signing secret and return the new one — this and create_webhook_endpoint are the only times a secret is returned, so store it now. New deliveries are signed with the new secret; deliveries already queued keep the secret they were queued with. ACCESS:…

  • get_subscription

    Get the current subscription details including plan, status, billing period, and usage limits. ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

  • get_balance

    Get the prepaid balance (in euro cents and mills), the low-balance threshold, the top-up amounts on offer and the auto top-up setting. Proofs past the plan's included amount are drawn from this balance; once billing is live, an account whose balance is at or below zero is refuse…

  • list_balance_ledger

    List the prepaid balance history, newest first: every top-up, refund and adjustment, and one usage row per month for that month's deductions. Amounts are signed euro cents (credits positive). ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authentica…

  • list_sub_accounts

    List every sub-account of the authenticated account, the primary one included. ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

  • list_profiles

    Deprecated: use list_sub_accounts

  • create_sub_account

    Create a new sub-account with optional display name, bio, avatar, business info, email branding (theme, support email), and theme settings. ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT…

  • create_profile

    Deprecated: use create_sub_account

  • get_sub_account

    Get one sub-account by ID, with its full details including theme, custom links, and verification display settings. ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

  • get_profile

    Deprecated: use get_sub_account

  • update_sub_account

    Update a sub-account by ID. Supports changing display info, email branding (theme, support email), theme, custom links, and verification display settings. ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start…

  • update_profile

    Deprecated: use update_sub_account

Details

Endpointhttps://api.proof.holdings/mcp (Streamable HTTP)
Package@proof-holdings/[email protected] (NPM, stdio)
First published12 Nov 2026
Last updated12 Nov 2026
Registry nameholdings.proof/mcp-server

More developer tools servers See all

Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.