Skip to main content
Glama

CallMCP — Phone Call MCP Server

Set Conversation Owner

set_conversation_owner
Idempotent

Set who answers a customer's text conversation. owner 'ai' (the default): Kai replies. 'human': Kai stays quiet and the business owner answers. 'external': Kai stays quiet and the business's own system answers; it receives the sms.received webhook and replies with send_message or POST /v1/messages. With external_reply_timeout_seconds (external only, 60 to 86400), Kai answers a message nothing replied to in that time. Messages are always stored and sms.received always fires. Pass conversation_id for one conversation, or phone for every conversation the business has with that customer. Re-sending the same owner changes nothing.

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": {
      "owner": "<owner>"
    },
    "name": "set_conversation_owner"
  }
}

Input Schema

NameRequiredDescriptionDefault
ownerYes
phoneNoThe customer's number (E.164): every conversation the business has with it.
business_idNoRequired when the account has more than one business and only phone is given.
conversation_idNoOne conversation. Either this or phone is required.
external_reply_timeout_secondsNoowner 'external' only: Kai answers when nothing replied in this many seconds.

Output Schema

NameRequiredDescriptionDefault
codeNo
errorNoPresent when success is false
ownerNo
successYesWhether the tool completed successfully
owner_set_atNo
conversationsNo
conversation_idNo
external_reply_timeout_secondsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.7/5.0
Behavior5/5

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

The annotations only say this is a non-destructive, idempotent write; the description goes much further by disclosing that messages are always stored, that sms.received always fires, that an external system receives the webhook and replies via send_message or POST /v1/messages, and that Kai takes over after the timeout if nothing replied. These are the operational consequences an agent needs before switching a conversation to 'external'.

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 mode definitions are front-loaded and each sentence carries useful information, but 'Re-sending the same owner changes nothing' largely repeats the idempotentHint annotation and the webhook guarantee is stated twice in spirit. Dense but readable, with minor redundancy.

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 five-parameter mutation with an output schema and annotation coverage, the description supplies everything missing: mode semantics, targeting rules, fallback behavior, and the guarantee that message storage and webhooks are unaffected. An agent could invoke this correctly without consulting any other source.

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

Parameters5/5

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

With 80% schema coverage the baseline is 3, but the description adds real meaning: it spells out the semantics of each owner enum value, explains that phone targets every conversation with that customer (not just one), and gives the external-only constraint plus the 60–86400 range for external_reply_timeout_seconds. Only business_id's conditionality is left to the schema.

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 first sentence names a specific verb and resource ('Set who answers a customer's text conversation') and then defines the three owner states concretely: 'ai' means Kai replies, 'human' means Kai stays quiet and the business owner answers, 'external' means the business's own system answers. This is far beyond restating the tool name and lets an agent distinguish it from send_message or set_owner_phone.

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?

It clearly explains which owner mode to pick and how to scope the change ('Pass conversation_id for one conversation, or phone for every conversation the business has with that customer'), and notes that re-sending the same owner is a no-op. It does not explicitly address the overlap with the sibling set_owner_phone or say when to prefer that tool, so routing between the two is left 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.