Skip to main content
Glama

Call the account owner

call_me
Destructive

Ring the user's own phone, read them message, and bring back what they say.

A phone call interrupts the user. Follow their explicit instructions about whether and when to call, including an immediate call or a call when a job finishes. Otherwise prefer chat for routine updates; call for a time-sensitive decision only they can make after chat has no explicit answer, or for a still-active important event after the workflow's chosen wait if nobody has acknowledged it. There is no fixed waiting period: use the user's timing when given, otherwise choose one appropriate to the task. For monitoring, your workflow must watch the event, wait for acknowledgment, and decide when to invoke this tool; LifeClaw cannot do those things or schedule a future call. An explicit request to call regardless of event status takes priority over the default active-and-unacknowledged condition. Consider local time and do not repeatedly ring after a missed call. A terminal no-answer is for your workflow to assess; LifeClaw will not redial it automatically. Do not redial a failed result because contact may have occurred. A deliberate later call needs a new idempotency_key, and only a workflow that can wait and resume can promise one. Reuse the original key to recover an uncertain request instead.

Examples: (1) a deployment is blocked on a rollback decision and chat has no explicit answer; ask that one question and use result.reply. (2) An external monitor confirms a critical incident is still active and unacknowledged; call with that incident ID as idempotency_key. (3) The user asked for a call when a job finishes; call once when your workflow observes completion. Do not call for an ordinary completion the user did not ask to hear by phone.

wait_for_reply=True: the assistant asks, listens, reads the answer back, and returns it in result.reply. wait_for_reply=False: deliver and hang up. agent_name ("Claude Code", "Codex") is how the assistant introduces itself. language is spoken on the call and used for the result; set it to the user's language. Write the message as speech: short sentences, no markdown. Do NOT greet or introduce yourself inside message — the call already opens with "I'm your assistant from {agent_name}" / "我是来自 {agent_name} 的 AI 助手"; a message that starts with "Hi, this is Claude Code" gets introduced twice. Start with the content ("Hotpot or sushi tonight?"). keywords (optional, up to 20 short terms): the words the user is likely to say back — the options you offered ("火锅", "日料"), a ticket or PR number, a product name. They steer the speech-to-text toward those spellings so result.reply and the transcript come back right; phone audio otherwise mishears short words (火锅 → 哥哥 on a real call). Give them whenever the answer is a choice between named things.

Needs the account's voice-verified receiving number. Outbound Caller ID is separate. If this returns error: receiving_phone_required, send the user to the returned setup_url to select a number, answer the voice verification call, and enter its code. Capped at 4 calls per account per 10 minutes and 30 per 24 hours. Billed per minute like any call. For monitoring, pass a stable event ID as idempotency_key; a new event needs a new key.

Input Schema

NameRequiredDescriptionDefault
messageYesShort message or decision question to read to the account owner.
keywordsNoTerms the speech recognizer should expect.
languageNoLanguage the AI should speak during the phone call.en
agent_nameNoAgent name used to introduce the call.
wait_secondsNoSeconds to wait for the call result before returning a task ID.
wait_for_replyNoWhether to listen for and return the owner's answer.
idempotency_keyNoStable event key to prevent a retry from placing a second call.

Output Schema

NameRequiredDescriptionDefault

No arguments

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 give the generic readOnly=false/destructive=true/openWorld=true profile; the description supplies the specifics that actually matter — 4 calls/10 min and 30/24 h caps, per-minute billing, no automatic redial, no scheduling, the `receiving_phone_required` error and its setup_url recovery flow, and idempotency semantics for monitoring. This is well beyond what the annotations convey and consistent with them.

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?

Front-loaded with purpose, then routing policy, then examples, then per-parameter guidance — a sensible order with no filler sentences. It is long and revisits idempotency_key/redial rules in two places, which costs a point, but the length is largely justified by the tool's real complexity.

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 complex, high-stakes, open-world call tool this covers everything: prerequisites (voice-verified receiving number), failure recovery path, rate limits, billing, idempotency, redial policy, and how to read `result.reply`. An output schema exists, so return-value documentation is appropriately referenced rather than duplicated.

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 the baseline is 3, but the description adds genuine meaning the terse schema fields lack: what wait_for_reply does in each mode, how agent_name is spoken in the greeting, that language drives both speech and the result, why keywords steer speech-to-text (火锅 → 哥哥), and what idempotency_key does on retry/uncertainty. It also carries the non-obvious "do not greet inside `message`" constraint.

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 opening line states a concrete verb+resource+scope: ring the user's own phone, read them `message`, return what they say. The phrase "the user's own phone" implicitly separates it from the sibling tools that call other people (call_person, call_contact, call_business), so an agent can route without opening the 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?

Explicit when-to-use vs when-not: prefer chat for routine updates, call only for a time-sensitive decision chat could not resolve or a still-active unacknowledged event after the chosen wait. It also covers timing policy, monitoring responsibilities, priority of explicit user requests, missed-call handling, and redial prohibitions.

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