Skip to main content
Glama

Sergio by Serviche

Send a text (after your person confirms)

send_text
Idempotent

Texts a client or teammate on your person's order, from the business number, as a Manual send under the business's Sending setting. Use it whenever your person asks you to text someone now, with their words or words you wrote for them ("text today's cleaners about the weather"); create_draft leaves it for someone else to send later. First call without confirm_token: nothing is sent; you get a preview (who it goes to and the exact text) and a confirm_token. Show your person the preview word for word, and only after they say yes, call again with the same arguments and the SAME idempotency_key, plus confirm_token. Several people: one preview each, shown together, one yes covers the ones they approve. Never send something nobody asked for, or while nobody is watching; that is a draft (create_draft). Give conversationId (one-to-one: to defaults to the conversation's number); for a cleaner or contact without one, read clients (contact_type 'staff' for cleaners) for the phone, then open_conversation_by_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": {
      "conversationId": "<conversationId>",
      "body": "<body>",
      "idempotency_key": "<idempotency_key>"
    },
    "name": "send_text"
  }
}

Input Schema

NameRequiredDescriptionDefault
toNo
bodyYes
confirm_tokenNoFrom the preview, after your person said yes. Leave it out to get the preview.
conversationIdYes
idempotency_keyYesYour id for this operation (8-128 of A-Z a-z 0-9 . _ : -). Reuse it on every retry of the same operation; use a new one for a new operation.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only say it is a non-read-only, idempotent, open-world write; the description adds the substantive protocol the agent cannot infer: the first call sends nothing and returns a preview plus confirm_token, the second call must repeat the same arguments and the SAME idempotency_key with the token, sends go out from the business number under the business's Sending setting, and multiple recipients require one preview each shown together. That is well beyond what readOnlyHint/idempotentHint/destructiveHint convey.

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 confirm protocol is front-loaded and the routing to create_draft follows, so the load-bearing information is early. It is dense but slightly repetitive — the draft fallback is stated twice ('create_draft leaves it for someone else to send later' and again at the end) — costing a bit of tightness.

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 5-parameter, open-world mutation with no output schema, the description covers the send protocol, recipient resolution, sender identity, and even what the preview returns (who it goes to, the exact text, the confirm_token). An agent has enough to call it correctly end-to-end; only error/expiry behavior of confirm_token is left implicit.

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 40% — only confirm_token and idempotency_key carry schema descriptions — and the description compensates for most of the rest: it explains conversationId's one-to-one default for `to`, how to obtain a phone for contacts without a conversation, and the two-phase meaning of confirm_token and idempotency_key reuse. `body` gets no treatment at all (e.g. the 1600-character limit), which keeps it off a 5.

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?

States a specific verb and resource ('Texts a client or teammate ... from the business number, as a Manual send') and immediately distinguishes it from the closest sibling: 'create_draft leaves it for someone else to send later.' An agent can pick between send_text and create_draft without opening either schema.

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?

Gives explicit when-to-use ('whenever your person asks you to text someone now'), explicit when-not ('Never send something nobody asked for, or while nobody is watching; that is a draft (create_draft)'), and names the prerequisite tools for the no-conversation case ('read clients (contact_type 'staff' for cleaners) ... then open_conversation_by_phone'). Alternatives and exclusions are both covered.

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