Skip to main content
Glama

Sparetext

Send a text

send_sms
Destructive

Send an SMS from the user's own number to one or more people. Returns each text's id; status starts as queued. Confirm the recipients and exact wording with the user first, unless they gave both. One SMS holds 160 GSM-7 characters (153 per segment when longer); an emoji or any character outside GSM-7 makes it UCS-2: 70 characters (67 per segment). Each segment is billed. For person-to-person texts only: carriers filter bulk and marketing (A2P) traffic on personal numbers.

Input Schema

NameRequiredDescriptionDefault
toYesRecipients, up to 100
simNoOptional, Android only: which SIM sends it, numbered as on the phone (1 or 2). list_devices shows each phone's SIMs. Defaults to the SIM chosen in the app.
textYesThe message, up to 1,600 characters (may be empty when media_urls has a picture)
send_atNoOptional: send later (ISO 8601, up to 30 days ahead).
device_idNoOptional: which phone sends it (see list_devices). Defaults to the default phone.
expires_atNoOptional, instead of ttl_seconds: the same as an ISO 8601 time.
media_urlsNoOptional: up to 3 pictures (JPEG, PNG or GIF, public https URLs, 5 MB each) to send as an MMS. Android 1.4.0 or the Mac relay. text may then be empty.
ttl_secondsNoOptional: if it hasn't gone out this many seconds after it may (send_at, or now), drop it and never send it; it fails with error expired. Use for one-time codes and anything that stops mattering, e.g. 300.

Output Schema

NameRequiredDescriptionDefault
smsYes
noteNo
deviceYes
batchIdYes
messagesYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and openWorldHint=true; the description adds real operational context the annotations cannot - the returned id with status 'queued', per-segment billing, encoding-driven segment counts, and carrier filtering of A2P traffic on personal numbers. It stops short of saying the send cannot be recalled, which the human-confirmation line only implies.

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?

Front-loaded with what it does and the confirmation rule, then the encoding/billing facts, then the person-to-person constraint. No sentence is padding - even the segment arithmetic directly changes how an agent writes the message.

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?

Output schema exists, so the brief return note suffices; annotations carry the safety profile and the description fills the gaps an agent actually needs before an irreversible send: confirmation, billing, length limits, and traffic-type restrictions.

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 coverage is 100%, so baseline is 3; the description earns a bump by explaining the GSM-7 (160/153) vs UCS-2 (70/67) character economics that govern how the agent should compose 'text', a fact the schema's maxLength=1600 does not convey. The other seven parameters (sim, send_at, ttl_seconds, media_urls) are left entirely to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (send an SMS from the user's own number) plus an explicit scope of 'one or more people'. It never distinguishes itself from the sibling send_sms_batch, so an agent facing both tools must open the schemas to choose.

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?

'Confirm the recipients and exact wording with the user first, unless they gave both' gives a concrete pre-flight rule, and 'For person-to-person texts only' states an exclusion. It does not name send_sms_batch as the alternative for bulk/A2P traffic, leaving the routing to inference.

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.

Resources