Skip to main content
Glama

CallMCP — Phone Call MCP Server

Update Phone Flow

update_phone_flow
DestructiveIdempotent

Replace how calls ring on the business's hosted phone system with a full phone flow: { version: 1, hours: { mode: 'always' | 'business_hours', afterHours: 'kai' }, ring: { members: [{ kind: 'cell', phone: E.164, label, requirePressOne } | { kind: 'desk_phone' | 'user', userId, label }], timeoutSeconds: 5-120 }, overflow: 'kai' }. Applied idempotently (only real differences are written); every member passes the forwarding-loop guard; business_hours mode derives the schedule from the business hours already on file. Because it replaces the whole flow, the input is the full flow as get_phone_flow returns it, with changes applied.

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": {
      "flow": "<flow>"
    },
    "name": "update_phone_flow"
  }
}

Input Schema

NameRequiredDescriptionDefault
flowYesThe complete phone flow to apply.
business_idNoBusiness ID (required when the token can access multiple businesses).

Output Schema

NameRequiredDescriptionDefault
flowNo
errorNoPresent when success is false
changesNo
successYesWhether the tool completed successfully
readbackNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true and idempotentHint=true, but the description adds real substance: 'only real differences are written', 'every member passes the forwarding-loop guard', and business_hours mode derives its schedule from hours already on file. It still does not mention required permissions, what happens to in-progress calls, or failure/validation behavior for a destructive operation.

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 purpose and the replacement semantics are front-loaded, and the inline structure spec is dense but high-value. It loses a little by packing an object literal into one long sentence and by restating idempotency already implied by the annotation.

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?

Given an output schema exists, the description needn't explain return values, and annotations carry the safety profile. What remains essential for correct invocation — full-flow replacement, idempotency, loop guard, business-hours derivation, and the nested flow shape — is all present.

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?

Although schema coverage is 100%, the schema only says the flow object is 'The complete phone flow to apply', which conveys nothing. The description compensates by spelling out the flow structure: version, hours mode enum, afterHours, ring member variants with their discriminator fields, timeoutSeconds range 5-120, and overflow. This is meaning the schema does not provide.

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 description opens with a specific verb and resource ('Replace how calls ring on the business's hosted phone system') and immediately shows the shape of what is being written. It also ties itself to the sibling read tool by stating the input is the full flow 'as get_phone_flow returns it', so an agent can separate this from get_phone_flow without opening a schema.

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 establishes the usage context: this is a whole-flow replacement, so you must already have the complete flow (obtained via get_phone_flow) and apply changes to it. It stops short of explicit when-not-to-use guidance or naming alternatives such as add_team_phone or set_owner_phone for narrower edits, leaving the agent to infer that partial edits belong elsewhere.

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.