Skip to main content
Glama

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

NameRequiredDescriptionDefault
idYesVerification ID
codeYesThe OTP or challenge code to submit

Output Schema

NameRequiredDescriptionDefault
idYesMongoDB ObjectId
proofNoPresent when the code was right
statusYesCurrent status of the verification
messageNoPresent when the code was wrong (`pending`) or the attempts are used up (`failed`)
attemptsYesCodes submitted so far, this one included
verified_atNoPresent when the code was right
max_attemptsYes
attempts_remainingNoPresent while `pending`

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": {},
      +  "description": "Result of submitting the code we emailed",
      +  "properties": {
      +    "attempts": {
      +      "description": "Codes submitted so far, this one included",
      +      "maximum": 9007199254740991,
      +      "minimum": -9007199254740991,
      +      "type": "integer"
      +    },
      +    "attempts_remaining": {
      +      "description": "Present while `pending`",
      +      "maximum": 9007199254740991,
      +      "minimum": -9007199254740991,
      +      "type": "integer"
      +    },
      +    "id": {
      +      "description": "MongoDB ObjectId",
      +      "type": "string"
      +    },
      +    "max_attempts": {
      +      "maximum": 9007199254740991,
      +      "minimum": -9007199254740991,
      +      "type": "integer"
      +    },
      +    "message": {
      +      "description": "Present when the code was wrong (`pending`) or the attempts are used up (`failed`)",
      +      "type": "string"
      +    },
      +    "proof": {
      +      "additionalProperties": {},
      +      "description": "Present when the code was right",
      +      "properties": {
      +        "expires_at": {
      +          "type": "string"
      +        },
      +        "token": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "token",
      +        "expires_at"
      +      ],
      +      "type": "object"
      +    },
      +    "status": {
      +      "description": "Current status of the verification",
      +      "type": "string"
      +    },
      +    "verified_at": {
      +      "description": "Present when the code was right",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "id",
      +    "status",
      +    "attempts",
      +    "max_attempts"
      +  ],
      +  "type": "object"
      +}
  2. Changed1 schema field changed
    • removedInput schema / additionalProperties
      Removed value: -false
  3. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations, it discloses the 400 unsupported_for_type failure for unsupported type/channel pairs, explains alternate completion routes, and notes the required Proof authentication flow. These are substantial behavioral details an agent needs before calling it.

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

Conciseness5/5

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

The description is front-loaded with the purpose and acceptance constraint, then provides routing alternatives and access requirements. Despite the dense verification-routing details, every sentence supports correct tool selection or invocation.

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?

The description covers the acceptance matrix, error behavior, alternative tools, and authentication prerequisite. With a complete input schema and an output schema, no additional return-value explanation is needed.

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

Parameters3/5

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

The input schema already documents both required parameters at 100% coverage: id as the verification ID and code as the OTP/challenge code. The description reinforces the verification context but does not add parameter-level syntax or format details beyond the schema.

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 states a specific verb and resource: submit an OTP/challenge code for a pending verification. It also distinguishes this tool from neighboring completion paths by naming exactly which verification types accept a submitted code and which do not.

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?

It gives explicit when-to-use guidance: only email and domain+email verifications accept this tool. It also names alternatives for other cases, including trigger_verification for domain DNS/HTTP/auto, phone, social OAuth, and telegram_bot.

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.