Skip to main content
Glama

Configure a phone number

update_phone_number
DestructiveIdempotent

Change an owned number's routing and tags: link inbound calls to a voice application or SIP trunk, unlink either, or replace tags. Use on numbers already on the account.

Instructions

Change one owned phone number's configuration: replace its tags, link it to a voice application (inbound calls then fetch that application's answer_url) or to a SIP trunk (inbound calls are delivered through the trunk), or unlink either. A number can be linked to an application or a trunk, not both; unlinks run before links, so one call can switch. The number must already be on the account (see list_phone_numbers), otherwise not_found. To buy or release a number use buy_phone_number or release_phone_number. Returns the list of changes applied. Gated by VOBIZ_ENABLE_PROVISIONING and confirm: true.

Input Schema

NameRequiredDescriptionDefault
tagsNoReplaces the number's whole tag list (up to 20 tags of 1-50 characters); include every tag to keep. An empty array clears the tags.
confirmYesMust be true, set only after the user explicitly approved: changing this number's routing. If your client supports MCP elicitation, the server asks the user to approve directly and this flag is not relied on; otherwise it is your attestation that the user approved.
trunk_idNoSIP trunk (trunk_id from list_sip_trunks) that inbound calls to this number are routed through; sent to Vobiz as trunk_group_id. Not with unlink_trunk or application_id.
phone_numberYesAn owned number from list_phone_numbers, in E.164 form (e.g. +918065551234).
unlink_trunkNotrue removes the number's SIP trunk link so inbound calls stop routing through it; reverses trunk_id. Not together with trunk_id.
application_idNoApplication (app_id from list_applications) whose answer_url handles inbound calls to this number. Not with unlink_application or trunk_id.
unlink_applicationNotrue removes the number's current application link; reverses application_id. Not together with application_id.

Output Schema

NameRequiredDescriptionDefault
okNoTrue on success. On a failure the result is isError with ok: false plus `error` (kind), `message`, `retryable` and sometimes `http_status`.
changesNoHuman-readable list of the changes applied, in the order they ran.
phone_numberNoThe number that was changed, in E.164 form.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed8 schema fields changedv1.4.2
    • addedInput schema / properties / application_id / description
      Added value: +"Application (app_id from list_applications) whose answer_url handles inbound calls to this number. Not with unlink_application or trunk_id."
    • changedInput schema / properties / confirm / description
      Previous value: -"Must be true, set only after the user explicitly approved: changing this number's routing."New value: +"Must be true, set only after the user explicitly approved: changing this number's routing. If your client supports MCP elicitation, the server asks the user to approve directly and this flag is not relied on; otherwise it is your attestation that the user approved."
    • addedInput schema / properties / phone_number / description
      Added value: +"An owned number from list_phone_numbers, in E.164 form (e.g. +918065551234)."
    • addedInput schema / properties / tags / description
      Added value: +"Replaces the number's whole tag list (up to 20 tags of 1-50 characters); include every tag to keep. An empty array clears the tags."
    • changedInput schema / properties / trunk_id / description
      Previous value: -"Trunk to route this number to (sent as trunk_group_id)."New value: +"SIP trunk (trunk_id from list_sip_trunks) that inbound calls to this number are routed through; sent to Vobiz as trunk_group_id. Not with unlink_trunk or application_id."
    • addedInput schema / properties / unlink_application / description
      Added value: +"true removes the number's current application link; reverses application_id. Not together with application_id."
    • addedInput schema / properties / unlink_trunk / description
      Added value: +"true removes the number's SIP trunk link so inbound calls stop routing through it; reverses trunk_id. Not together with trunk_id."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "changes": {
      +      "description": "Human-readable list of the changes applied, in the order they ran.",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "ok": {
      +      "description": "True on success. On a failure the result is isError with ok: false plus `error` (kind), `message`, `retryable` and sometimes `http_status`.",
      +      "type": "boolean"
      +    },
      +    "phone_number": {
      +      "description": "The number that was changed, in E.164 form.",
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  2. First observedv1.1.1

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already flag destructiveHint and idempotency, but the description adds substantial beyond-schema behavior: mutual exclusivity of application vs trunk, deterministic ordering (unlinks run before links so one call can switch), the not_found condition, the VOBIZ_ENABLE_PROVISIONING gate, and required confirm:true. This is unusually rich behavioral disclosure.

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

Conciseness5/5

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

One dense paragraph that is front-loaded with the core action, then constraints, prerequisites, alternatives, and gating. Every sentence carries information; nothing is filler.

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 mutation tool with 7 params, 100% schema coverage, existing output schema, and destructive annotations, the description covers everything an agent needs: scope, exclusivity, ordering, prerequisites, gating, error, and alternatives. No material gap remains.

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 description coverage is 100%, so the per-parameter baseline is 3. The description adds cross-parameter semantics the schema does not: application and trunk links are mutually exclusive, unlinks precede links, and confirm gates the mutation. That meaningfully extends beyond the individual field docs.

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 (change configuration) and resource (one owned phone number), then enumerates the actual operations: replace tags, link to application or trunk, or unlink. It explicitly distinguishes itself from siblings buy_phone_number and release_phone_number, so an agent can differentiate 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 Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use (number must already be on the account, see list_phone_numbers), when-not (buy/release instead), the not_found failure mode, and the alternative resolution (list_sip_trunks, list_applications). Prerequisites and routing alternatives are all stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools