Skip to main content
Glama

CallMCP — Phone Call MCP Server

Send SMS

send_sms
Destructive

Send a text from an agent's phone line through the governed messaging API. Provide from_agent_id, to, and message. For the immediate confirmation a customer just requested on a booking form, add purpose: booking_confirmation, the form's actual sms_consent: true, and idempotency_key; this records service consent and allows the requested confirmation after hours. Booking alerts to this business's active admin phone use purpose: booking_alert and idempotency_key. Explicit opt-outs, content controls and rate limits remain enforced. Use dispatch_policy: queue_if_needed to defer ordinary messages outside their allowed window. Optionally link lead_id; it must belong to this business and match the recipient phone.

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": {
      "from_agent_id": "<from_agent_id>",
      "to": "<to>",
      "message": "<message>"
    },
    "name": "send_sms"
  }
}

Input Schema

NameRequiredDescriptionDefault
toYesRecipient phone number in E.164 format (e.g. +18135551234).
lead_idNoOptional lead ID to link and honor the lead's automation-pause state.
messageYesText message body.
purposeNoBooking confirmation attests the customer just requested this text; booking_alert requires an active business admin recipient. Requires idempotency_key.
sms_opt_inNoExisting form consent alias, for example yes.
source_urlNoOptional HTTPS booking-form URL for consent provenance.
sms_consentNoActual service-message opt-in captured on the booking form. Never infer or invent it.
submitted_atNoOptional original form-submission ISO timestamp. Must be recent for an immediate reply.
from_agent_idYesAgent ID whose phone line the text is sent from.
submission_idNoOptional original submission ID; defaults to the idempotency key.
dispatch_policyNo
idempotency_keyNoOptional caller-supplied key. A replay with the same key returns the original send outcome instead of sending again — so a retry after an uncertain response is safe.
consent_languageNoThe disclosure shown on the form, when available.

Output Schema

NameRequiredDescriptionDefault
toNo
fromNo
errorNoPresent when success is false
successYesWhether the tool completed successfully
message_sidNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A3.9/5.0
Behavior4/5

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

Beyond the annotations, the description discloses that opt-outs, content controls and rate limits remain enforced, that consent is recorded from the form, that after-hours confirmations are permitted under service consent, and that replies can be deferred. It does not explicitly warn that sending is externally visible and irreversible to a real handset, which is the main thing destructiveHint/openWorldHint imply but a reader might gloss over.

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

Conciseness4/5

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

The core action and required fields are front-loaded, then scenario-specific guidance follows in readable order. It is dense but every sentence carries operational meaning; the booking_confirmation sentence is long and could be split, but nothing is redundant.

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?

For a 13-parameter external-send tool with an output schema already covering return values, the description supplies the consent, idempotency and dispatch guidance an agent needs to avoid a bad send. The remaining gap is that the consent-provenance parameters are only covered by the schema, not by the prose.

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?

With 92% schema coverage the schema already documents nearly every parameter, including the idempotency replay semantics and enum meanings. The description adds real constraint meaning for lead_id ('must belong to this business and match the recipient phone') and ties purpose to idempotency_key, but leaves source_url, submitted_at, sms_opt_in, submission_id and consent_language untouched. Above the baseline, not by much.

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?

The description opens with a concrete verb and resource ('Send a text from an agent's phone line through the governed messaging API') and distinguishes the channel from generic messaging. It stops short of naming which sibling to pick when the text is not tied to an agent phone line, so differentiation is inferred rather than stated.

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?

Strong scenario routing: it tells the agent to add purpose: booking_confirmation when a customer just requested an immediate confirmation, to use booking_alert only for active admin recipients, and to use dispatch_policy: queue_if_needed for ordinary messages outside their window. There is no explicit 'use X instead' exclusion against siblings such as send_message, which keeps it below a 5.

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.