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, the SMS text and number, or a note to check their inbox; a link that appeared only in a tool result is one they never saw.
ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"id": "<id>"
},
"name": "wait_for_session"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Session ID to poll | |
| timeout_seconds | No | Maximum wait time in seconds (default: 50, max: 300). Keep it under your MCP client's request timeout (the SDK default is 60 s) — a longer wait is cut off by the client while the server is still polling. On timeout the tool answers status "pending"; call it again with the same identifier. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Session id | |
| proof | No | Proof token after successful verification | |
| status | No | "pending" when the wait ran out before a terminal state; otherwise the resource's own status | |
| channel | No | How the person proves the number: `telegram` or `whatsapp` (the bot reads the number from their account), or `sms` (they text a short code from the number to one of ours). | |
| message | No | On timeout: what to do next (call the tool again with the same identifier) | |
| created_at | No | ||
| last_status | No | On timeout: the last non-terminal status observed, or null when none was | |
| verified_at | No | Once `verified` | |
| phone_number | No | The proven number (once `verified`) | |
| waited_seconds | No | On timeout: seconds actually waited | |
| timeout_seconds | No | On timeout: the wait budget this call was given | |
| verification_id | No | The verification record created on completion (once `verified`) |