Skip to main content
Glama
narcisbodea

SMSTunnel

Send a sign-in code

send_sign_in_code

Sends a sign-in or verification code by SMS from your own Android phone and number, with the code as standalone digits. Use it to deliver one-time login codes and get the message ID for delivery checks.

Instructions

Send a sign-in or verification code by text (SMS) to one phone number, from the user's own Android phone and own number. Use it only for sign-in codes: it counts against the separate sign-in code allowance. For any other text, use send_sms.

  • The message must contain the code as digits standing on their own: 4 to 10 digits (e.g. "Your code is 482913") or two groups of three digits joined by a dash (123-456). Words, letter or mixed codes (A1B2C3), 11 or more digits, digits right after + and dates or decimals do not count, and such a text is refused.

  • Up to 320 characters.

  • One text per person, number in international format (+ and the country code).

  • Never resend a code automatically after an error or a failed status: tell the user and let them decide. Returns the message ID; check delivery with get_message_status.

Input Schema

NameRequiredDescriptionDefault
toYesONE phone number, in international format: + and the country code, e.g. +14155550123.
messageYesThe text with the code, e.g. "Your sign-in code is 482913". Up to 320 characters.
deviceIdNoID of the phone that should send it, from list_phones. Leave it out to use SMSTUNNEL_DEVICE_ID or, when that is not set, a phone SMSTunnel picks.
defaultCountryCodeNoCountry calling code for a number written without + or 00, e.g. "+1" or "44". Defaults to SMSTUNNEL_DEFAULT_COUNTRY_CODE. Leave it out for numbers that already start with +.

Output Schema

NameRequiredDescriptionDefault
toYesThe number as it was given.
queuedYestrue when the phone was offline: the text waits and goes out when the phone is back online.
brandedYestrue when the Free plan's texts for the day were used up and this one goes out with a short SMSTunnel line at the end.
messageIdYesID of the text; pass it to get_message_status.
remainingTodayNoTexts left today on the plan (without that line).

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the annotations, the description discloses important behavior: the separate sign-in allowance, strict code-format validation, character limit, one-text-per-person rule, international number requirement, and refusal cases. It also explains the return value and points to get_message_status for delivery checks.

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 core purpose and the send_sms routing rule, then uses bullets for validation constraints. Despite being detailed, every sentence carries operationally relevant information for correctly invoking this tool.

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?

An output schema exists, so the description needn't detail the return structure, but it still tells the agent that a message ID is returned and to use get_message_status for delivery. Given the strict validation rules and mutation behavior, the description is complete enough to call the tool correctly.

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

Parameters4/5

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

Schema description coverage is 100%, so the schema already documents all four parameters. The description still adds meaningful validation semantics for message, especially the exact digit formats that count and the formats that are refused, plus the one-number and international-format constraints for to.

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: send a sign-in or verification code by SMS to one phone number. It also explicitly distinguishes this from send_sms, so an agent can select the right tool without opening sibling schemas.

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 sign-in codes, which count against a separate allowance. It names the alternative for other text (send_sms) and adds a clear exclusion against automatic resend after an error or failed status.

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