Skip to main content
Glama

Patch MCP

place_call

Destructive

Place one real phone call FROM the selected outbound number (the authenticated user’s verified personal number by default) to accomplish a specific objective (book a table, ask a question, chase an order). A real-time voice agent handles the call, including automated phone menus and hold queues. Its default opening says who it is calling for and states the call's purpose. Use get_agent and update_agent for number settings and inbound greeting/instructions. Outbound greeting and system instructions are read-only through MCP; use objective and context for call-specific facts. Changes apply directly to new calls. Call facts are added automatically. The recording disclosure belongs in the first spoken turn that advances the objective, whether asking a question, making a request, or giving task-related details. Brief introductory chatter or an acknowledgment of a request to hold may come first. State that recording is happening in the selected call language; no fixed wording is required. Returns immediately with a call_id and resolved locale, language, and voice; the call proceeds in the background and typically takes 2–5 minutes — poll get_call (pass wait_seconds to long-poll) until the status is terminal. The response includes a listen_url: a private web link where the user can hear the call live, watch the transcript, and stop the call — offer it to the user. Calls in Central America, Europe, North America, and South America, subject to route availability; never for emergencies. Calls involving a non-US/Canadian number require a paid plan from the first call. Rates vary by caller ID and destination; the response includes an estimated provider cost for one minute, including per-call costs. This estimate is not a final charge. Paid usage follows telephone, AI and any lookup costs, including unsuccessful attempts, and can update after the call. Calls can be placed at any time of day, any day of the week, and the user is responsible for fair use; one call runs at a time per account and volume is governed by the plan — rejections return a machine-readable error code with retry guidance, so relay the message to the user rather than retrying blindly. The voice agent receives the name of the person the call is for: if the account has no name on file the call is rejected with user_name_required — ask your user what name to give (e.g. "Sam" or "Sam at Acme"), then call again with it in user_name; it is saved to the account for future calls.

Input Schema

NameRequiredDescriptionDefault
toYesDestination phone number in E.164, e.g. +14155551234. Supported: Central America, Europe, North America, and South America (Telnyx regions; Caribbean excluded). Destination country codes: BZ, CR, SV, GT, HN, NI, PA, AX, AL, AD, AT, BE, BA, BG, HR, CY, CZ, DK, EE, FO, FI, FR, DE, GI, GR, GL, GG, HU, IS, IE, IM, IT, JE, LV, LI, LT, LU, MK, MT, MC, ME, NL, NO, PL, PT, XK, RO, RU, SM, RS, SK, SI, ES, SJ, SE, CH, UA, GB, VA, US, CA, MX, PM, AR, BO, BR, CL, CO, EC, FK, GF, GY, PY, PE, SR, UY, VE.
localeNoLanguage the voice agent should use for the entire call. Choose one of the advertised BCP 47 tags for the active speech provider. The objective and context may be written in another language. Defaults to the selected source’s published preference in the phone workspace, otherwise the supported account preference, then English. Uses an available saved voice or the provider default. Applies only to this call; the selected language stays fixed for the entire call. Unsupported locales return unsupported_language before dialing
contextNoExtra facts the agent may reveal if asked (e.g. party preferences, callback number policy).
timezoneYesThe callee’s local IANA timezone, for example America/Chicago or Europe/London. Determine it from reliable context or ask; do not guess from a phone number.
number_idNoAccount phone assignment ID from list_phone_numbers; omit to use the account default.
objectiveYesWhat the call should achieve, with all needed specifics and acceptable fallbacks. E.g. "Book a table for 2 tonight at 19:30 under 'Iddo'. Acceptable window 19:00–20:30."
user_nameNoThe user name supplied to the voice agent for the call, e.g. "Sam" or "Sam at Acme". The default introduction uses the saved name when explaining who the call is for; a custom introduction follows the published outbound agent instructions. Only needed when place_call returned user_name_required: ask your user for it, do not invent one. Saved to the account for future calls; a later value updates the saved name.
request_idNoOptional retry key. Reuse the same UUID and arguments after a lost response to avoid a second call.
callee_nameNoWho is being called, e.g. "Zuni Café". Improves the conversation and the logs.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedInput schema / properties / number_id
      Added value: +{
      +  "description": "Account phone assignment ID from list_phone_numbers; omit to use the account default.",
      +  "type": "string"
      +}
    • removedInput schema / properties / source_number_id
      Removed value: -{
      -  "description": "Account phone assignment ID from list_phone_numbers; omit to use the account default.",
      -  "type": "string"
      -}
    • changedOutput schema / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "call_id": {
      -        "description": "Call identifier used with get_call, end_call and set_call_visibility.",
      -        "type": "string"
      -      },
      -      "callee_name": {
      -        "anyOf": [
      -          {
      -            "description": "Recipient display name.",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "created_at": {
      -        "description": "ISO 8601 creation time.",
      -        "type": "string"
      -      },
      -      "from": {
      -        "description": "Caller ID in E.164 format.",
      -        "type": "string"
      -      },
      -      "language": {
      -        "description": "Resolved call language.",
      -        "type": "string"
      -      },
      -      "listen_url": {
      -        "description": "URL for the user to listen, read the transcript and stop an active call.",
      -        "type": "string"
      -      },
      -      "locale": {
      -        "description": "Resolved BCP 47 language/locale for this call.",
      -        "type": "string"
      -      },
      -      "max_duration_minutes": {
      -        "anyOf": [
      -          {
      -            "description": "Free-call duration cap; null for paid calls.",
      -            "type": "number"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "message": {
      -        "description": "Polling and allowance guidance.",
      -        "type": "string"
      -      },
      -      "pricing": {
      -        "additionalProperties": {},
      -        "properties": {
      -          "currency": {
      -            "const": "USD",
      -            "type": "string"
      -          },
      -          "estimated_telnyx_cents_at_one_minute": {
      -            "anyOf": [
      -              {
      -                "description": "Estimated carrier cost for one minute; null when included in a combined service estimate.",
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "estimated_total_cents_at_one_minute": {
      -            "description": "Estimated provider cost for a one-minute call, including per-call costs; not a final charge.",
      -            "type": "string"
      -          },
      -          "reserved_usage_units": {
      -            "anyOf": [
      -              {
      -                "description": "Usage units reserved for the call.",
      -                "type": "number"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "currency",
      -          "estimated_total_cents_at_one_minute",
      -          "estimated_telnyx_cents_at_one_minute"
      -        ],
      -        "type": "object"
      -      },
      -      "status": {
      -        "description": "Current call lifecycle state.",
      -        "enum": [
      -          "queued",
      -          "ringing",
      -          "in_progress",
      -          "completed",
      -          "answered_silently",
      -          "no_answer",
      -          "busy",
      -          "voicemail",
      -          "failed",
      -          "rejected",
      -          "canceled",
      -          "declined_recording",
      -          "opted_out"
      -        ],
      -        "type": "string"
      -      },
      -      "to": {
      -        "description": "Destination in E.164 format.",
      -        "type": "string"
      -      },
      -      "voice": {
      -        "anyOf": [
      -          {
      -            "description": "Resolved voice identifier.",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      }
      -    },
      -    "required": [
      -      "call_id",
      -      "status",
      -      "to",
      -      "from",
      -      "callee_name",
      -      "language",
      -      "locale",
      -      "voice",
      -      "max_duration_minutes",
      -      "created_at",
      -      "listen_url",
      -      "message",
      -      "pricing"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "error": {
      -        "description": "Machine-readable failure code.",
      -        "type": "string"
      -      },
      -      "message": {
      -        "description": "Explanation or recovery guidance.",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "error"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "next_action": {
      -        "type": "string"
      -      },
      -      "operation_id": {
      -        "type": "string"
      -      },
      -      "status": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "operation_id",
      -      "status"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "call_id": {
      +        "description": "Call identifier used with get_call, end_call and set_call_visibility.",
      +        "type": "string"
      +      },
      +      "callee_name": {
      +        "anyOf": [
      +          {
      +            "description": "Recipient display name.",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "created_at": {
      +        "description": "ISO 8601 creation time.",
      +        "type": "string"
      +      },
      +      "from": {
      +        "description": "Caller ID in E.164 format.",
      +        "type": "string"
      +      },
      +      "language": {
      +        "description": "Resolved call language.",
      +        "type": "string"
      +      },
      +      "listen_url": {
      +        "description": "URL for the user to listen, read the transcript and stop an active call.",
      +        "type": "string"
      +      },
      +      "locale": {
      +        "description": "Resolved BCP 47 language/locale for this call.",
      +        "type": "string"
      +      },
      +      "max_duration_minutes": {
      +        "anyOf": [
      +          {
      +            "description": "Free-call duration cap; null for paid calls.",
      +            "type": "number"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "message": {
      +        "description": "Polling and allowance guidance.",
      +        "type": "string"
      +      },
      +      "number_id": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "pricing": {
      +        "additionalProperties": {},
      +        "properties": {
      +          "currency": {
      +            "const": "USD",
      +            "type": "string"
      +          },
      +          "estimated_telnyx_cents_at_one_minute": {
      +            "anyOf": [
      +              {
      +                "description": "Estimated carrier cost for one minute; null when included in a combined service estimate.",
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "estimated_total_cents_at_one_minute": {
      +            "description": "Estimated provider cost for a one-minute call, including per-call costs; not a final charge.",
      +            "type": "string"
      +          },
      +          "reserved_usage_units": {
      +            "anyOf": [
      +              {
      +                "description": "Usage units reserved for the call.",
      +                "type": "number"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "currency",
      +          "estimated_total_cents_at_one_minute",
      +          "estimated_telnyx_cents_at_one_minute"
      +        ],
      +        "type": "object"
      +      },
      +      "status": {
      +        "description": "Current call lifecycle state.",
      +        "enum": [
      +          "queued",
      +          "ringing",
      +          "in_progress",
      +          "completed",
      +          "answered_silently",
      +          "no_answer",
      +          "busy",
      +          "voicemail",
      +          "failed",
      +          "rejected",
      +          "canceled",
      +          "declined_recording",
      +          "opted_out"
      +        ],
      +        "type": "string"
      +      },
      +      "to": {
      +        "description": "Destination in E.164 format.",
      +        "type": "string"
      +      },
      +      "voice": {
      +        "anyOf": [
      +          {
      +            "description": "Resolved voice identifier.",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      }
      +    },
      +    "required": [
      +      "call_id",
      +      "status",
      +      "to",
      +      "from",
      +      "callee_name",
      +      "language",
      +      "locale",
      +      "voice",
      +      "max_duration_minutes",
      +      "created_at",
      +      "listen_url",
      +      "message",
      +      "pricing",
      +      "number_id"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "error": {
      +        "description": "Machine-readable failure code.",
      +        "type": "string"
      +      },
      +      "message": {
      +        "description": "Explanation or recovery guidance.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "error"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "next_action": {
      +        "type": "string"
      +      },
      +      "operation_id": {
      +        "type": "string"
      +      },
      +      "status": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "operation_id",
      +      "status"
      +    ],
      +    "type": "object"
      +  }
      +]
  2. Changed1 schema field changed
    • changedOutput schema / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "call_id": {
      -        "description": "Call identifier used with get_call, end_call and set_call_visibility.",
      -        "type": "string"
      -      },
      -      "callee_name": {
      -        "anyOf": [
      -          {
      -            "description": "Recipient display name.",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "created_at": {
      -        "description": "ISO 8601 creation time.",
      -        "type": "string"
      -      },
      -      "from": {
      -        "description": "Caller ID in E.164 format.",
      -        "type": "string"
      -      },
      -      "language": {
      -        "description": "Resolved call language.",
      -        "type": "string"
      -      },
      -      "listen_url": {
      -        "description": "URL for the user to listen, read the transcript and stop an active call.",
      -        "type": "string"
      -      },
      -      "locale": {
      -        "description": "Resolved BCP 47 language/locale for this call.",
      -        "type": "string"
      -      },
      -      "max_duration_minutes": {
      -        "anyOf": [
      -          {
      -            "description": "Free-call duration cap; null for paid calls.",
      -            "type": "number"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "message": {
      -        "description": "Polling and allowance guidance.",
      -        "type": "string"
      -      },
      -      "pricing": {
      -        "additionalProperties": {},
      -        "properties": {
      -          "currency": {
      -            "const": "USD",
      -            "type": "string"
      -          },
      -          "estimated_telnyx_cents_at_one_minute": {
      -            "anyOf": [
      -              {
      -                "description": "Estimated carrier cost for one minute; null when included in a combined service estimate.",
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "estimated_total_cents_at_one_minute": {
      -            "description": "Estimated provider cost for a one-minute call, including per-call costs; not a final charge.",
      -            "type": "string"
      -          },
      -          "rate_version": {
      -            "description": "Rate deck version.",
      -            "type": "string"
      -          },
      -          "reserved_usage_units": {
      -            "anyOf": [
      -              {
      -                "description": "Usage units reserved for the call.",
      -                "type": "number"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "currency",
      -          "rate_version",
      -          "estimated_total_cents_at_one_minute",
      -          "estimated_telnyx_cents_at_one_minute"
      -        ],
      -        "type": "object"
      -      },
      -      "status": {
      -        "description": "Current call lifecycle state.",
      -        "enum": [
      -          "queued",
      -          "ringing",
      -          "in_progress",
      -          "completed",
      -          "answered_silently",
      -          "no_answer",
      -          "busy",
      -          "voicemail",
      -          "failed",
      -          "rejected",
      -          "canceled",
      -          "declined_recording",
      -          "opted_out"
      -        ],
      -        "type": "string"
      -      },
      -      "to": {
      -        "description": "Destination in E.164 format.",
      -        "type": "string"
      -      },
      -      "voice": {
      -        "anyOf": [
      -          {
      -            "description": "Resolved voice identifier.",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      }
      -    },
      -    "required": [
      -      "call_id",
      -      "status",
      -      "to",
      -      "from",
      -      "callee_name",
      -      "language",
      -      "locale",
      -      "voice",
      -      "max_duration_minutes",
      -      "created_at",
      -      "listen_url",
      -      "message",
      -      "pricing"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "error": {
      -        "description": "Machine-readable failure code.",
      -        "type": "string"
      -      },
      -      "message": {
      -        "description": "Explanation or recovery guidance.",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "error"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "next_action": {
      -        "type": "string"
      -      },
      -      "operation_id": {
      -        "type": "string"
      -      },
      -      "status": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "operation_id",
      -      "status"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "call_id": {
      +        "description": "Call identifier used with get_call, end_call and set_call_visibility.",
      +        "type": "string"
      +      },
      +      "callee_name": {
      +        "anyOf": [
      +          {
      +            "description": "Recipient display name.",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "created_at": {
      +        "description": "ISO 8601 creation time.",
      +        "type": "string"
      +      },
      +      "from": {
      +        "description": "Caller ID in E.164 format.",
      +        "type": "string"
      +      },
      +      "language": {
      +        "description": "Resolved call language.",
      +        "type": "string"
      +      },
      +      "listen_url": {
      +        "description": "URL for the user to listen, read the transcript and stop an active call.",
      +        "type": "string"
      +      },
      +      "locale": {
      +        "description": "Resolved BCP 47 language/locale for this call.",
      +        "type": "string"
      +      },
      +      "max_duration_minutes": {
      +        "anyOf": [
      +          {
      +            "description": "Free-call duration cap; null for paid calls.",
      +            "type": "number"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "message": {
      +        "description": "Polling and allowance guidance.",
      +        "type": "string"
      +      },
      +      "pricing": {
      +        "additionalProperties": {},
      +        "properties": {
      +          "currency": {
      +            "const": "USD",
      +            "type": "string"
      +          },
      +          "estimated_telnyx_cents_at_one_minute": {
      +            "anyOf": [
      +              {
      +                "description": "Estimated carrier cost for one minute; null when included in a combined service estimate.",
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "estimated_total_cents_at_one_minute": {
      +            "description": "Estimated provider cost for a one-minute call, including per-call costs; not a final charge.",
      +            "type": "string"
      +          },
      +          "reserved_usage_units": {
      +            "anyOf": [
      +              {
      +                "description": "Usage units reserved for the call.",
      +                "type": "number"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "currency",
      +          "estimated_total_cents_at_one_minute",
      +          "estimated_telnyx_cents_at_one_minute"
      +        ],
      +        "type": "object"
      +      },
      +      "status": {
      +        "description": "Current call lifecycle state.",
      +        "enum": [
      +          "queued",
      +          "ringing",
      +          "in_progress",
      +          "completed",
      +          "answered_silently",
      +          "no_answer",
      +          "busy",
      +          "voicemail",
      +          "failed",
      +          "rejected",
      +          "canceled",
      +          "declined_recording",
      +          "opted_out"
      +        ],
      +        "type": "string"
      +      },
      +      "to": {
      +        "description": "Destination in E.164 format.",
      +        "type": "string"
      +      },
      +      "voice": {
      +        "anyOf": [
      +          {
      +            "description": "Resolved voice identifier.",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      }
      +    },
      +    "required": [
      +      "call_id",
      +      "status",
      +      "to",
      +      "from",
      +      "callee_name",
      +      "language",
      +      "locale",
      +      "voice",
      +      "max_duration_minutes",
      +      "created_at",
      +      "listen_url",
      +      "message",
      +      "pricing"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "error": {
      +        "description": "Machine-readable failure code.",
      +        "type": "string"
      +      },
      +      "message": {
      +        "description": "Explanation or recovery guidance.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "error"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "next_action": {
      +        "type": "string"
      +      },
      +      "operation_id": {
      +        "type": "string"
      +      },
      +      "status": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "operation_id",
      +      "status"
      +    ],
      +    "type": "object"
      +  }
      +]
  3. Changed2 schema fields changed
    • addedInput schema / properties / request_id
      Added value: +{
      +  "description": "Optional retry key. Reuse the same UUID and arguments after a lost response to avoid a second call.",
      +  "format": "uuid",
      +  "type": "string"
      +}
    • changedOutput schema / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "call_id": {
      -        "description": "Call identifier used with get_call, end_call and set_call_visibility.",
      -        "type": "string"
      -      },
      -      "callee_name": {
      -        "anyOf": [
      -          {
      -            "description": "Recipient display name.",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "created_at": {
      -        "description": "ISO 8601 creation time.",
      -        "type": "string"
      -      },
      -      "from": {
      -        "description": "Caller ID in E.164 format.",
      -        "type": "string"
      -      },
      -      "language": {
      -        "description": "Resolved call language.",
      -        "type": "string"
      -      },
      -      "listen_url": {
      -        "description": "URL for the user to listen, read the transcript and stop an active call.",
      -        "type": "string"
      -      },
      -      "locale": {
      -        "description": "Resolved BCP 47 language/locale for this call.",
      -        "type": "string"
      -      },
      -      "max_duration_minutes": {
      -        "anyOf": [
      -          {
      -            "description": "Free-call duration cap; null for paid calls.",
      -            "type": "number"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "message": {
      -        "description": "Polling and allowance guidance.",
      -        "type": "string"
      -      },
      -      "pricing": {
      -        "additionalProperties": {},
      -        "properties": {
      -          "currency": {
      -            "const": "USD",
      -            "type": "string"
      -          },
      -          "estimated_telnyx_cents_at_one_minute": {
      -            "anyOf": [
      -              {
      -                "description": "Estimated carrier cost for one minute; null when included in a combined service estimate.",
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "estimated_total_cents_at_one_minute": {
      -            "description": "Estimated provider cost for a one-minute call, including per-call costs; not a final charge.",
      -            "type": "string"
      -          },
      -          "rate_version": {
      -            "description": "Rate deck version.",
      -            "type": "string"
      -          },
      -          "reserved_usage_units": {
      -            "anyOf": [
      -              {
      -                "description": "Usage units reserved for the call.",
      -                "type": "number"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "currency",
      -          "rate_version",
      -          "estimated_total_cents_at_one_minute",
      -          "estimated_telnyx_cents_at_one_minute"
      -        ],
      -        "type": "object"
      -      },
      -      "status": {
      -        "description": "Current call lifecycle state.",
      -        "enum": [
      -          "queued",
      -          "ringing",
      -          "in_progress",
      -          "completed",
      -          "answered_silently",
      -          "no_answer",
      -          "busy",
      -          "voicemail",
      -          "failed",
      -          "rejected",
      -          "canceled",
      -          "declined_recording",
      -          "opted_out"
      -        ],
      -        "type": "string"
      -      },
      -      "to": {
      -        "description": "Destination in E.164 format.",
      -        "type": "string"
      -      },
      -      "voice": {
      -        "anyOf": [
      -          {
      -            "description": "Resolved voice identifier.",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      }
      -    },
      -    "required": [
      -      "call_id",
      -      "status",
      -      "to",
      -      "from",
      -      "callee_name",
      -      "language",
      -      "locale",
      -      "voice",
      -      "max_duration_minutes",
      -      "created_at",
      -      "listen_url",
      -      "message",
      -      "pricing"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "error": {
      -        "description": "Machine-readable failure code.",
      -        "type": "string"
      -      },
      -      "message": {
      -        "description": "Explanation or recovery guidance.",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "error"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "call_id": {
      +        "description": "Call identifier used with get_call, end_call and set_call_visibility.",
      +        "type": "string"
      +      },
      +      "callee_name": {
      +        "anyOf": [
      +          {
      +            "description": "Recipient display name.",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "created_at": {
      +        "description": "ISO 8601 creation time.",
      +        "type": "string"
      +      },
      +      "from": {
      +        "description": "Caller ID in E.164 format.",
      +        "type": "string"
      +      },
      +      "language": {
      +        "description": "Resolved call language.",
      +        "type": "string"
      +      },
      +      "listen_url": {
      +        "description": "URL for the user to listen, read the transcript and stop an active call.",
      +        "type": "string"
      +      },
      +      "locale": {
      +        "description": "Resolved BCP 47 language/locale for this call.",
      +        "type": "string"
      +      },
      +      "max_duration_minutes": {
      +        "anyOf": [
      +          {
      +            "description": "Free-call duration cap; null for paid calls.",
      +            "type": "number"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "message": {
      +        "description": "Polling and allowance guidance.",
      +        "type": "string"
      +      },
      +      "pricing": {
      +        "additionalProperties": {},
      +        "properties": {
      +          "currency": {
      +            "const": "USD",
      +            "type": "string"
      +          },
      +          "estimated_telnyx_cents_at_one_minute": {
      +            "anyOf": [
      +              {
      +                "description": "Estimated carrier cost for one minute; null when included in a combined service estimate.",
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "estimated_total_cents_at_one_minute": {
      +            "description": "Estimated provider cost for a one-minute call, including per-call costs; not a final charge.",
      +            "type": "string"
      +          },
      +          "rate_version": {
      +            "description": "Rate deck version.",
      +            "type": "string"
      +          },
      +          "reserved_usage_units": {
      +            "anyOf": [
      +              {
      +                "description": "Usage units reserved for the call.",
      +                "type": "number"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "currency",
      +          "rate_version",
      +          "estimated_total_cents_at_one_minute",
      +          "estimated_telnyx_cents_at_one_minute"
      +        ],
      +        "type": "object"
      +      },
      +      "status": {
      +        "description": "Current call lifecycle state.",
      +        "enum": [
      +          "queued",
      +          "ringing",
      +          "in_progress",
      +          "completed",
      +          "answered_silently",
      +          "no_answer",
      +          "busy",
      +          "voicemail",
      +          "failed",
      +          "rejected",
      +          "canceled",
      +          "declined_recording",
      +          "opted_out"
      +        ],
      +        "type": "string"
      +      },
      +      "to": {
      +        "description": "Destination in E.164 format.",
      +        "type": "string"
      +      },
      +      "voice": {
      +        "anyOf": [
      +          {
      +            "description": "Resolved voice identifier.",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      }
      +    },
      +    "required": [
      +      "call_id",
      +      "status",
      +      "to",
      +      "from",
      +      "callee_name",
      +      "language",
      +      "locale",
      +      "voice",
      +      "max_duration_minutes",
      +      "created_at",
      +      "listen_url",
      +      "message",
      +      "pricing"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "error": {
      +        "description": "Machine-readable failure code.",
      +        "type": "string"
      +      },
      +      "message": {
      +        "description": "Explanation or recovery guidance.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "error"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "next_action": {
      +        "type": "string"
      +      },
      +      "operation_id": {
      +        "type": "string"
      +      },
      +      "status": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "operation_id",
      +      "status"
      +    ],
      +    "type": "object"
      +  }
      +]
  4. Changed2 schema fields changed
    • changedInput schema / properties / locale / description
      Previous value: -"Language the voice agent should use for the entire call. Choose one of the advertised BCP 47 tags for the active speech provider. The objective and context may be written in another language. Defaults to the supported account preference, otherwise English. Uses an available saved voice or the provider default. Applies only to this call; the selected language stays fixed for the entire call. Unsupported locales return unsupported_language before dialing"New value: +"Language the voice agent should use for the entire call. Choose one of the advertised BCP 47 tags for the active speech provider. The objective and context may be written in another language. Defaults to the selected source’s published preference in the phone workspace, otherwise the supported account preference, then English. Uses an available saved voice or the provider default. Applies only to this call; the selected language stays fixed for the entire call. Unsupported locales return unsupported_language before dialing"
    • changedInput schema / properties / user_name / description
      Previous value: -"The user name supplied to the voice agent for the call, e.g. \"Sam\" or \"Sam at Acme\". The default introduction uses it in \"Hi, I’m calling for … about …\"; a custom introduction follows the saved Account → Call agent instructions. Only needed when place_call returned user_name_required: ask your user for it, do not invent one. Saved to the account for future calls; a later value updates the saved name."New value: +"The user name supplied to the voice agent for the call, e.g. \"Sam\" or \"Sam at Acme\". The default introduction uses the saved name when explaining who the call is for; a custom introduction follows the published outbound agent instructions. Only needed when place_call returned user_name_required: ask your user for it, do not invent one. Saved to the account for future calls; a later value updates the saved name."
  5. Changed5 schema fields changed
    • changedInput schema / properties / locale / description
      Previous value: -"Language the voice agent should use for the entire call, as a supported BCP 47 tag: fr, it, ru, pl, uk, ro, nl, or de (no regional variants), or a regional locale such as en-US (US English), es-MX (Mexican Spanish), or pt-BR (Brazilian Portuguese). The objective and context may be written in another language. Defaults to your account locale, or en-US. Uses your saved voice for that locale, otherwise its default female voice. Applies only to this call; the selected language stays fixed for the entire call. Unsupported locales return unsupported_language before dialing."New value: +"Language the voice agent should use for the entire call. Choose one of the advertised BCP 47 tags for the active speech provider. The objective and context may be written in another language. Defaults to the supported account preference, otherwise English. Uses an available saved voice or the provider default. Applies only to this call; the selected language stays fixed for the entire call. Unsupported locales return unsupported_language before dialing"
    • addedInput schema / properties / source_number_id
      Added value: +{
      +  "description": "Account phone assignment ID from list_phone_numbers; omit to use the account default.",
      +  "type": "string"
      +}
    • addedInput schema / properties / timezone
      Added value: +{
      +  "description": "The callee’s local IANA timezone, for example America/Chicago or Europe/London. Determine it from reliable context or ask; do not guess from a phone number.",
      +  "type": "string"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "to",
      -  "objective"
      -]New value: +[
      +  "to",
      +  "objective",
      +  "timezone"
      +]
    • changedOutput schema / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "call_id": {
      -        "description": "Call identifier used with get_call, end_call and set_call_visibility.",
      -        "type": "string"
      -      },
      -      "callee_name": {
      -        "anyOf": [
      -          {
      -            "description": "Recipient display name.",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "created_at": {
      -        "description": "ISO 8601 creation time.",
      -        "type": "string"
      -      },
      -      "from": {
      -        "description": "Caller ID in E.164 format.",
      -        "type": "string"
      -      },
      -      "language": {
      -        "description": "Resolved call language.",
      -        "type": "string"
      -      },
      -      "listen_url": {
      -        "description": "URL for the user to listen, read the transcript and stop an active call.",
      -        "type": "string"
      -      },
      -      "locale": {
      -        "description": "Resolved BCP 47 language/locale for this call.",
      -        "type": "string"
      -      },
      -      "max_duration_minutes": {
      -        "anyOf": [
      -          {
      -            "description": "Free-call duration cap; null for paid calls.",
      -            "type": "number"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "message": {
      -        "description": "Polling and allowance guidance.",
      -        "type": "string"
      -      },
      -      "pricing": {
      -        "additionalProperties": {},
      -        "properties": {
      -          "currency": {
      -            "const": "USD",
      -            "type": "string"
      -          },
      -          "estimated_telnyx_cents_at_one_minute": {
      -            "description": "Estimated carrier cost for one minute.",
      -            "type": "string"
      -          },
      -          "estimated_total_cents_at_one_minute": {
      -            "description": "Estimated combined provider cost for one minute.",
      -            "type": "string"
      -          },
      -          "rate_version": {
      -            "description": "Rate deck version.",
      -            "type": "string"
      -          },
      -          "reserved_usage_units": {
      -            "anyOf": [
      -              {
      -                "description": "Usage units reserved for the call.",
      -                "type": "number"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "currency",
      -          "rate_version",
      -          "estimated_total_cents_at_one_minute",
      -          "estimated_telnyx_cents_at_one_minute"
      -        ],
      -        "type": "object"
      -      },
      -      "status": {
      -        "description": "Current call lifecycle state.",
      -        "enum": [
      -          "queued",
      -          "ringing",
      -          "in_progress",
      -          "completed",
      -          "no_answer",
      -          "busy",
      -          "voicemail",
      -          "failed",
      -          "rejected",
      -          "canceled",
      -          "declined_recording",
      -          "opted_out"
      -        ],
      -        "type": "string"
      -      },
      -      "to": {
      -        "description": "Destination in E.164 format.",
      -        "type": "string"
      -      },
      -      "voice": {
      -        "anyOf": [
      -          {
      -            "description": "Resolved voice identifier.",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      }
      -    },
      -    "required": [
      -      "call_id",
      -      "status",
      -      "to",
      -      "from",
      -      "callee_name",
      -      "language",
      -      "locale",
      -      "voice",
      -      "max_duration_minutes",
      -      "created_at",
      -      "listen_url",
      -      "message",
      -      "pricing"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "error": {
      -        "description": "Machine-readable failure code.",
      -        "type": "string"
      -      },
      -      "message": {
      -        "description": "Explanation or recovery guidance.",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "error"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "call_id": {
      +        "description": "Call identifier used with get_call, end_call and set_call_visibility.",
      +        "type": "string"
      +      },
      +      "callee_name": {
      +        "anyOf": [
      +          {
      +            "description": "Recipient display name.",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "created_at": {
      +        "description": "ISO 8601 creation time.",
      +        "type": "string"
      +      },
      +      "from": {
      +        "description": "Caller ID in E.164 format.",
      +        "type": "string"
      +      },
      +      "language": {
      +        "description": "Resolved call language.",
      +        "type": "string"
      +      },
      +      "listen_url": {
      +        "description": "URL for the user to listen, read the transcript and stop an active call.",
      +        "type": "string"
      +      },
      +      "locale": {
      +        "description": "Resolved BCP 47 language/locale for this call.",
      +        "type": "string"
      +      },
      +      "max_duration_minutes": {
      +        "anyOf": [
      +          {
      +            "description": "Free-call duration cap; null for paid calls.",
      +            "type": "number"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "message": {
      +        "description": "Polling and allowance guidance.",
      +        "type": "string"
      +      },
      +      "pricing": {
      +        "additionalProperties": {},
      +        "properties": {
      +          "currency": {
      +            "const": "USD",
      +            "type": "string"
      +          },
      +          "estimated_telnyx_cents_at_one_minute": {
      +            "anyOf": [
      +              {
      +                "description": "Estimated carrier cost for one minute; null when included in a combined service estimate.",
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "estimated_total_cents_at_one_minute": {
      +            "description": "Estimated provider cost for a one-minute call, including per-call costs; not a final charge.",
      +            "type": "string"
      +          },
      +          "rate_version": {
      +            "description": "Rate deck version.",
      +            "type": "string"
      +          },
      +          "reserved_usage_units": {
      +            "anyOf": [
      +              {
      +                "description": "Usage units reserved for the call.",
      +                "type": "number"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "currency",
      +          "rate_version",
      +          "estimated_total_cents_at_one_minute",
      +          "estimated_telnyx_cents_at_one_minute"
      +        ],
      +        "type": "object"
      +      },
      +      "status": {
      +        "description": "Current call lifecycle state.",
      +        "enum": [
      +          "queued",
      +          "ringing",
      +          "in_progress",
      +          "completed",
      +          "answered_silently",
      +          "no_answer",
      +          "busy",
      +          "voicemail",
      +          "failed",
      +          "rejected",
      +          "canceled",
      +          "declined_recording",
      +          "opted_out"
      +        ],
      +        "type": "string"
      +      },
      +      "to": {
      +        "description": "Destination in E.164 format.",
      +        "type": "string"
      +      },
      +      "voice": {
      +        "anyOf": [
      +          {
      +            "description": "Resolved voice identifier.",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      }
      +    },
      +    "required": [
      +      "call_id",
      +      "status",
      +      "to",
      +      "from",
      +      "callee_name",
      +      "language",
      +      "locale",
      +      "voice",
      +      "max_duration_minutes",
      +      "created_at",
      +      "listen_url",
      +      "message",
      +      "pricing"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "error": {
      +        "description": "Machine-readable failure code.",
      +        "type": "string"
      +      },
      +      "message": {
      +        "description": "Explanation or recovery guidance.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "error"
      +    ],
      +    "type": "object"
      +  }
      +]
  6. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "anyOf": [
      +    {
      +      "additionalProperties": {},
      +      "properties": {
      +        "call_id": {
      +          "description": "Call identifier used with get_call, end_call and set_call_visibility.",
      +          "type": "string"
      +        },
      +        "callee_name": {
      +          "anyOf": [
      +            {
      +              "description": "Recipient display name.",
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "created_at": {
      +          "description": "ISO 8601 creation time.",
      +          "type": "string"
      +        },
      +        "from": {
      +          "description": "Caller ID in E.164 format.",
      +          "type": "string"
      +        },
      +        "language": {
      +          "description": "Resolved call language.",
      +          "type": "string"
      +        },
      +        "listen_url": {
      +          "description": "URL for the user to listen, read the transcript and stop an active call.",
      +          "type": "string"
      +        },
      +        "locale": {
      +          "description": "Resolved BCP 47 language/locale for this call.",
      +          "type": "string"
      +        },
      +        "max_duration_minutes": {
      +          "anyOf": [
      +            {
      +              "description": "Free-call duration cap; null for paid calls.",
      +              "type": "number"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "message": {
      +          "description": "Polling and allowance guidance.",
      +          "type": "string"
      +        },
      +        "pricing": {
      +          "additionalProperties": {},
      +          "properties": {
      +            "currency": {
      +              "const": "USD",
      +              "type": "string"
      +            },
      +            "estimated_telnyx_cents_at_one_minute": {
      +              "description": "Estimated carrier cost for one minute.",
      +              "type": "string"
      +            },
      +            "estimated_total_cents_at_one_minute": {
      +              "description": "Estimated combined provider cost for one minute.",
      +              "type": "string"
      +            },
      +            "rate_version": {
      +              "description": "Rate deck version.",
      +              "type": "string"
      +            },
      +            "reserved_usage_units": {
      +              "anyOf": [
      +                {
      +                  "description": "Usage units reserved for the call.",
      +                  "type": "number"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            }
      +          },
      +          "required": [
      +            "currency",
      +            "rate_version",
      +            "estimated_total_cents_at_one_minute",
      +            "estimated_telnyx_cents_at_one_minute"
      +          ],
      +          "type": "object"
      +        },
      +        "status": {
      +          "description": "Current call lifecycle state.",
      +          "enum": [
      +            "queued",
      +            "ringing",
      +            "in_progress",
      +            "completed",
      +            "no_answer",
      +            "busy",
      +            "voicemail",
      +            "failed",
      +            "rejected",
      +            "canceled",
      +            "declined_recording",
      +            "opted_out"
      +          ],
      +          "type": "string"
      +        },
      +        "to": {
      +          "description": "Destination in E.164 format.",
      +          "type": "string"
      +        },
      +        "voice": {
      +          "anyOf": [
      +            {
      +              "description": "Resolved voice identifier.",
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        }
      +      },
      +      "required": [
      +        "call_id",
      +        "status",
      +        "to",
      +        "from",
      +        "callee_name",
      +        "language",
      +        "locale",
      +        "voice",
      +        "max_duration_minutes",
      +        "created_at",
      +        "listen_url",
      +        "message",
      +        "pricing"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "additionalProperties": {},
      +      "properties": {
      +        "error": {
      +          "description": "Machine-readable failure code.",
      +          "type": "string"
      +        },
      +        "message": {
      +          "description": "Explanation or recovery guidance.",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "error"
      +      ],
      +      "type": "object"
      +    }
      +  ],
      +  "description": "Successful result or a machine-readable tool error.",
      +  "type": "object"
      +}
  7. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Annotations declare destructive/openWorld/non-idempotent, and the description adds substantial context beyond them: real cost exposure including unsuccessful attempts and estimated provider cost, one concurrent call per account, geographic and paid-plan constraints, the user_name_required rejection path, the recording-disclosure obligation on the first objective-advancing turn, and the request_id-based retry key. This is exactly the operational knowledge an agent needs before committing an irreversible, open-world action.

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

Conciseness3/5

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

The opening sentence is well front-loaded, but the remainder is a dense ~350-word block with no paragraph breaks that hops between recording disclosure, pricing, timezone, concurrency, error handling and name requirements. Every fact is arguably useful, yet the recording-disclosure guidance spans three sentences and is interleaved with unrelated cost information, hurting scannability.

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 9-parameter, destructive, open-world tool with an output schema, the description fills every operational gap an agent could hit: async polling contract, listen_url offering, cost semantics, language/locale behavior, and failure modes. Nothing needed to invoke it correctly is missing.

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; the description earns credit for explaining the division of labor between objective/context (call-specific facts) versus the read-only outbound greeting, and for spelling out the user_name recovery flow after a user_name_required rejection. It adds marginal value over the already thorough schema, hence 4 rather than 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 ('Place one real phone call' from the selected outbound number) plus the scope of what the call can accomplish (book a table, ask a question, chase an order). It names the sibling tools it is not (get_agent/update_agent for number settings and inbound greeting) and the companion it polls (get_call), so an agent can distinguish it without opening any 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 about when to use it and when not: 'never for emergencies', outbound greeting/system instructions are read-only through MCP so call-specific facts belong in objective/context, and it routes number settings and inbound greeting to get_agent/update_agent. It also tells the agent how to follow up (poll get_call with wait_seconds until terminal status) and to relay error codes rather than retry blindly.

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