Skip to main content
Glama
ajemba

codasms-mcp

Wait for the OTP code

wait_for_otp
Read-only

Poll an SMS order until the one-time verification code arrives or the timeout expires. Returns the delivered OTP; on timeout, the number stays active for another attempt or refund.

Instructions

Poll an order until its verification code arrives, it expires, or the timeout is hit. Returns the code when delivered. On timeout the number is still active — call again, or release() to refund now.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
order_idYesThe order_id returned by get_number.
timeout_secondsNoHow long to wait before giving up (default 180, max 1200).
poll_interval_secondsNoSeconds between polls (default 10, min 5 to respect the 60/min limit).

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.1

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already mark this as read-only, and the description adds meaningful behavior beyond that: polling semantics, code expiry, timeout behavior, and the note that the number remains active on timeout. This gives the agent a realistic model of what happens during the wait without contradicting the readOnlyHint.

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?

Three short sentences, no filler. The core polling behavior is front-loaded, the return condition is stated, and the timeout fallback guidance is included. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description explains what the tool returns ('the code when delivered') and what to do on timeout, which is critical since there is no output schema. It also covers the major outcome paths: delivered, expired, and timed out. Minor gaps like exact behavior on expiry are not explained, but the core calling scenario is complete.

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?

Schema coverage is 100%, with both timeout_seconds and poll_interval_seconds already documented with defaults and bounds. The description adds context about timeout behavior but does not add parameter-level detail beyond the schema. This matches the baseline of 3 for fully documented schema parameters.

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 ('Poll an order'), a clear resource (the order), and a precise termination condition ('code arrives, expires, or timeout'). It also states the key return value ('Returns the code when delivered'), making the tool's purpose unambiguous and distinct from siblings like check_order and release.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context on when to call: poll until a code arrives or times out. It also provides post-timeout guidance, explicitly saying to call again or use release() to refund. It doesn't explicitly contrast with check_order or explain when not to use this tool, but the polling semantics and timeout behavior are well covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.