wait_for_account_creation
Polls an account-bootstrap session until the user completes verification, using exponential backoff. Call after create_account with the session ID and retry if the status is pending.
Instructions
Poll an account-bootstrap session until the user completes verification. Uses exponential backoff (2s initial, 1.5x, 30s max) with jitter.
Agent usage: Call this after create_account with the returned session id. Terminal states: "verified" (this server keeps the session for this connection; the user_id field in the terminal body identifies the authenticated user), "expired", "completed_elsewhere" (email only: the user pressed "Sign in here" on the email link's page, so the browser they clicked from is signed in and this connection never will be — tell them so, and start a new login if this connection still needs one). A result with status "pending" means the wait ran out before the user finished — call this tool again with the same id. Works identically whether the underlying flow created a new User or logged in an existing one.
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.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Account session id from create_account | |
| timeout_seconds | No | Maximum wait time in seconds (default: 50, max: 600). 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 | ||
| type | No | Outcome of an account-session creation. `account_creation` means a new User will be written on verification. `login` indicates the submitted identity matched an existing User and the session will log them in. | |
| No | |||
| status | No | "pending" when the wait ran out before a terminal state; otherwise the resource's own status | |
| channel | No | Authentication channel | |
| message | No | On timeout: what to do next (call the tool again with the same identifier) | |
| qr_code | No | Base64-encoded PNG QR code for the deep link | |
| qr_text | No | UTF-8 text QR for terminal/agent rendering | |
| user_id | No | ||
| sms_code | No | Short code for SMS-channel reverse-OTP | |
| deep_link | No | ||
| created_at | No | ||
| email_sent | No | ||
| expires_at | No | ||
| email_error | No | ||
| last_status | No | On timeout: the last non-terminal status observed, or null when none was | |
| sms_message | No | ||
| verified_at | No | ||
| instructions | No | ||
| waited_seconds | No | On timeout: seconds actually waited | |
| timeout_seconds | No | On timeout: the wait budget this call was given |