Skip to main content
Glama
ProofHoldings

@proof-holdings/mcp-server

Official

create_verification

Initiate identity verification for any asset identifier—phone, email, domain, social handle, wallet, account, or Telegram bot—by providing type, channel, and identifier to generate a challenge or proof.

Instructions

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", channel "sms", identifier "+37060000000"; or type "email", channel "email", identifier "user@example.com"). The response carries a challenge object with the instruction for the chosen channel — except a telegram_bot verification made with a LIVE key, which the server completes on the spot and answers with status: verified plus a proof token and no challenge at all; with a pk_test_ key that same call stays pending and does carry a challenge. On the messenger channels it also carries challenge.deep_link — pass THAT to render_auth_link to give the user a clickable link and a QR code. This endpoint returns no qr_text at all. For OTP-based flows (sms/email), the user receives a code — poll get_verification or use wait_for_verification to track completion. For Telegram/WhatsApp, the user clicks the deep link to verify.

ACCESS: needs a Proof account. Set PROOF_API_KEY and restart this server, then call this tool again. start_login does NOT open this tool.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
typeYesAsset type being verified
channelYesVerification channel (must match the asset type, e.g. sms/whatsapp/telegram for phone)
bot_tokenNoTelegram bot token (required for channel "telegram_bot_token")
identifierYesThe asset identifier to verify (E.164 phone, email address, domain, handle, wallet address, ...)
dns_providerNoDNS provider credentials (required for channel "auto")
email_prefixNoMailbox prefix for domain email verification
client_metadataNoCustom key-value metadata
external_user_idNoYour application user ID for grouping verifications
proof_expiry_daysNoPer-request proof expiry override in days (1-365)

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. First observedv1.1.0

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries full behavioral burden. It thoroughly discloses branch behavior: LIVE vs pk_test_ telegram_bot behavior, challenge presence, no qr_text, deep_link on messenger channels, OTP code flow, and the Proof API key prerequisite. This goes well beyond a simple 'create' statement.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but information-rich, with the core purpose front-loaded and all major behavioral branches covered. It is somewhat long and would benefit from bullet structure, but every sentence contributes meaningful usage or behavior context rather than padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex tool with 9 parameters, no output schema, and no annotations, the description is unusually complete: it explains response shape, channel-specific flows, tracking next steps, rendering links, and the API key access prerequisite. An agent has enough context to call it correctly and follow up appropriately.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds substantial meaning beyond the schema: concrete type/channel/identifier examples, the interaction between telegram_bot and test keys, what challenge objects convey, and which response fields are absent. This materially improves parameter selection and interpretation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Create a new identity verification' and immediately clarifies it initiates a verification flow for an asset identifier. It provides concrete example inputs and explicitly routes deep-link handling to render_auth_link, distinguishing its role from that sibling and from start_login.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit agent-facing usage guidance: pass type, channel, and identifier, with concrete examples. It also states when to use alternatives — pass deep_link to render_auth_link, poll get_verification or use wait_for_verification for OTP flows — and warns that start_login does NOT open this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ProofHoldings/mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server