Skip to main content
Glama

verify_email_code

Use this after create_invoice returns verification_required. Arguments: { challenge_id, code }. On success returns a verification_token. Retry create_invoice with the same arguments plus that verification_token passed in its verification_token field. The token is reusable for ~30 min, so thread the same one into every subsequent create_invoice for the same sender email until it expires. Only ever call this with a code the user gave you: attempts are capped and the fifth wrong code revokes the challenge, after which (or once it expires after 15 minutes) no code works. verification_revoked means exactly that, so call create_invoice again to send the user a new code, never retry this one; on the hosted endpoint such a challenge reports verification_invalid instead, so after five failed codes do the same. A rate_limited error means stop and tell them to wait, not retry.

Input Schema

NameRequiredDescriptionDefault
codeYesThe 6-character code copied from the verification email body. Drawn from the confusable-free alphabet {2,3,4,5,6,7,8,9}. Check the user's paste against that alphabet before calling — a malformed code costs one of the few attempts the challenge allows.
challenge_idYesThe opaque challenge id surfaced by the previous `create_invoice` `verification_required` error.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / code / description
      Previous value: -"The 6-character code copied from the verification email body. Drawn from the confusable-free alphabet {2,3,4,5,6,7,8,9}."New value: +"The 6-character code copied from the verification email body. Drawn from the confusable-free alphabet {2,3,4,5,6,7,8,9}. Check the user's paste against that alphabet before calling — a malformed code costs one of the few attempts the challenge allows."
  2. First observed

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description carries the full behavioral burden and does so thoroughly. It discloses success returns a reusable token for ~30 minutes, failed attempts are capped, the fifth wrong code revokes the challenge, revoked/expired challenges require restarting via `create_invoice`, and `rate_limited` means stop rather than retry.

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 triggering condition and arguments, then moves through success behavior, token reuse, attempt limits, and error branching. It is dense but every sentence appears to earn its place given the stateful verification flow.

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 tool with no annotations and no output schema, the description is complete enough to invoke and recover correctly. It explains the return token, retry protocol, token lifespan, attempt limits, expiry behavior, and the distinction between `verification_revoked`, `verification_invalid`, and `rate_limited`.

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 schema has 100% description coverage for both parameters, including the code alphabet and challenge-id semantics. The description names the arguments but does not add substantial parameter-level meaning beyond the schema, so the baseline of 3 is appropriate.

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 exactly when this tool is used: after `create_invoice` returns `verification_required`. It also identifies the operation implicitly through its arguments, success result, and follow-up flow, making its role distinct from sibling tools like `get_invoice` and `list_supported_jurisdictions`.

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 after `create_invoice` reports `verification_required`, and only with a user-provided code. It also covers when not to retry this tool and directs the agent back to `create_invoice` for a new code.

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.