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_verification (POST /verifications/:id/verify) for a domain over dns/http/auto; a phone completes when the code reaches us FROM that number; social completes through its OAuth callback; a telegram_bot is already verified at creation.
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>",
"code": "<code>"
},
"name": "submit_verification_code"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Verification ID | |
| code | Yes | The OTP or challenge code to submit |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | MongoDB ObjectId | |
| proof | No | Present when the code was right | |
| status | Yes | Current status of the verification | |
| message | No | Present when the code was wrong (`pending`) or the attempts are used up (`failed`) | |
| attempts | Yes | Codes submitted so far, this one included | |
| verified_at | No | Present when the code was right | |
| max_attempts | Yes | ||
| attempts_remaining | No | Present while `pending` |