Skip to main content
Glama

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", 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.

The user does not see tool results — most clients fold them away, render_auth_link's output included. Before you wait or poll, put what the user must act on into your own reply text: the link itself (not a sentence announcing it), the SMS text and number, or a note to check their inbox.

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), 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.

  1. First observed

TDQS

A4.3/5.0
Behavior5/5

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

Annotations only declare readOnlyHint=false/destructiveHint=false; the description goes well beyond that, disclosing the key-dependent branch where a telegram_bot call with a LIVE key returns status 'verified' with a proof token and no challenge while a pk_test_ key stays pending, that deep_link is returned on messenger channels, that no qr_text is returned, and the auth prerequisite for the Proof account. This is rich behavioral context an agent cannot get from structured fields.

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?

Well front-loaded: purpose first, then agent usage, then the channel-specific behavior, then the critical note that users don't see tool results. It is long and carries some detail that could be trimmed (e.g. the parenthetical enumeration of asset types), but nearly every sentence conveys actionable behavior.

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 9-parameter, nested-object, no-output-schema creation tool, the description covers the required inputs, the channel-dependent response shape, the follow-up polling/link path, and the auth requirement, which is everything an agent needs to call it correctly. The absence of an output schema is compensated by the explicit description of the challenge/status/proof-token responses.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3, and the description adds concrete value by pairing parameter values in examples (type 'phone', channel 'sms', identifier '+37060000000'; type 'email', channel 'email'), clarifying how the three required fields combine. It does not explain the optional fields (bot_token, dns_provider, email_prefix, proof_expiry_days), but the schema already documents those.

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

Purpose4/5

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

States a specific verb and resource ('Create a new identity verification') and enumerates the asset types it covers (phone, email, domain, social, wallet, account, Telegram bot), which is far more than a restatement of the name. It does not, however, differentiate itself from near-identical siblings like create_verification_request, create_multi_channel_verification, or trigger_verification, leaving an agent to guess which creation entrypoint applies.

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

Usage Guidelines4/5

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

Provides concrete invocation guidance ('pass the asset type, the delivery channel, and the identifier') with worked examples, and explains the downstream flow (poll get_verification or use wait_for_verification for OTP; deep link for Telegram/WhatsApp). It stops short of stating when to prefer this tool over the sibling creation tools, so the guidance is clear but not exclusionary.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.