Skip to main content
Glama
CTMJSON

ctm-number-provisioner

Official
by CTMJSON

configure_numbers

Configure multiple tracking numbers with names, custom fields, tracking sources, and call routing to queues, menus, or users in one action.

Instructions

Apply a name, tracking source, and one call route to one or many numbers.

Get ids from list_routing_targets and let the user choose them. Pick at most ONE route: receiving_number_ids, queue_id (CQU...), voice_menu_id (VOM...), user_id (USR..., rings an agent), or route_override (raw {"virtual_phone_number": {...}} dial_routes body). Pick at most ONE route: receiving_number_ids, queue_id (CQU...), voice_menu_id (VOM...), user_id (USR...), conditional_router_id (smart router), geo_route_id (GEO...), routing_table_id (RTT...), voice_bot_id (VBT...), or route_override.

Args: tpn_ids: Tracking numbers to configure (TPN...). name: Label. Supports {n} (1-based index) and {number} placeholders, e.g. "Google Ads {n}". custom_fields: Custom field values to set on each number. source_id: Tracking source id (TSO... or numeric) to attach the numbers to. receiving_number_ids: RPN ids to forward calls to. route_override: Raw dial_routes body; only if the named routes don't fit.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameNo
tpn_idsYes
user_idNo
queue_idNo
source_idNo
account_idNo
token_nameNo
geo_route_idNo
voice_bot_idNo
custom_fieldsNo
voice_menu_idNo
route_overrideNo
routing_table_idNo
user_default_actionNovoicemail
receiving_number_idsNo
conditional_router_idNo
user_no_answer_secondsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does imply mutation ('apply'), states the at-most-one-route constraint, gives ID prefix conventions (CQU..., VOM..., USR...), and notes that user_id 'rings an agent'. But it never states whether existing number configuration gets overwritten, whether the call is idempotent, or what happens to unspecified settings — a notable gap for a config-mutation tool with zero annotation coverage.

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

Conciseness2/5

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

The structure is sensible on paper — summary line, guidance paragraph, then args list — but it repeats the 'Pick at most ONE route' sentence nearly verbatim twice with different route enumerations, wasting space and creating ambiguity about which enumeration is authoritative. This is a real structural defect, not merely verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 17-parameter tool with no annotations, no output schema, and 0% schema coverage, this description is incomplete. Four parameters (account_id, token_name, user_default_action, user_no_answer_seconds) go unmentioned, and there's no guidance on defaults that materially affect behavior, such as user_default_action='voicemail' and user_no_answer_seconds=25, which an agent would need to make sound choices.

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

Parameters3/5

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

Schema coverage is 0%, so the description must compensate, and it does for several parameters: tpn_ids (TPN...), name (with {n} and {number} placeholders and an example), source_id (TSO... or numeric), receiving_number_ids (RPN), and route_override. It also enumerates route params with ID formats. But account_id, token_name, user_default_action, and user_no_answer_seconds are entirely undocumented, and the route parameters lack semantic explanations of what each route type actually does.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

'Apply a name, tracking source, and one call route to one or many numbers' is a specific verb+resource+scope statement that clearly identifies the tool as a configuration operation over tracking numbers. It is distinguishable from siblings like buy_numbers (acquisition) and release_numbers (teardown). Not a 5 because the purpose is somewhat buried under the duplicated route-guidance paragraph, and the identity isn't crisply framed against the configure family.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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

It gives a concrete prerequisite and interaction pattern — 'Get ids from list_routing_targets and let the user choose them' — and an explicit exclusion for route_override ('only if the named routes don't fit'). However, there is no contrast with buy_numbers or release_numbers on when to configure vs acquire/release, and the duplicated 'Pick at most ONE route' sentence lists different route sets each time, which could mislead the agent about which routes are valid.

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