Skip to main content
Glama
CTMJSON

ctm-number-provisioner

Official
by CTMJSON

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
CTM_BASE_URLNoOverride the CTM API base URL.https://api.calltrackingmetrics.com/api/v1
CTM_ENV_FILENoPath to a credentials file containing named tokens. Only needed if using the multiple-account option.~/.ctm/env
CTM_ACCOUNT_IDYesThe CTM account ID to operate on. Always required.
CTM_BASIC_AUTHNoRaw base64 access:secret token for a single CTM account. Use this for Option A.
CTM_TOKEN_NAMENoName of the line to select in the credentials file. Required when using the credentials-file option.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
whoamiA

Show which CTM account the server will act on, and where the token came from.

Call this first and tell the user the resolved account name before buying anything: a token can map to a different account than its label suggests.

search_available_numbersA

Search available CTM tracking numbers before buying them.

US/CA modes (searchby is inferred when omitted):

  • area_code: numbers in an area code (e.g. "443").

  • address: street or ZIP (e.g. "21201").

  • number_prefix: area code + prefix (e.g. "917563").

  • tollfree: the default when nothing else is given.

International: pass country (e.g. "GB") with pattern, and optionally operator="start_with" or "includes" (default includes).

Returns compact rows: number, friendly_name, type, region, postal_code, lata, sms, mms, addr_required, hipaa_friendly. Show them to the user and let them pick before calling buy_numbers.

buy_numbersA

Purchase CTM tracking numbers. Real purchases cost money unless test=True.

ALWAYS call with dry_run=True first (the default), show the user the plan (account name, count, numbers or area code), and get explicit confirmation before calling again with dry_run=False. There is no undo except release_numbers.

Args: phone_numbers: Exact numbers from search_available_numbers. area_code: Let CTM pick numbers in this area code (see quantity). quantity: How many numbers to buy in area_code mode (1-500). test: Buy free test numbers. Default False (real, billable). dry_run: Plan only, no write calls. Default True.

Returns rows with tpn_id; feed those tpn_ids to configure_numbers.

list_routing_targetsA

List everything a tracking number can be attached or routed to.

Present these options to the user and let them choose; do not pick for them. With more than four options, show a numbered list and have the user reply with a number, or use search to narrow it down.

Args: kinds: Subset of ["sources", "receiving_numbers", "queues", "voice_menus", "users", "conditional_routers", "geo_routes", "routing_tables", "voice_bots"]. Default: the first four. search: Case-insensitive substring filter on the row's fields.

configure_numbersB

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.

release_numbersA

Release (delete) tracking numbers. Destructive and irreversible.

Use this only when the user explicitly asks, typically to clean up test numbers. Refuses unless confirm=True; ask the user first.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.8/5.0

Scored across 6 tools

Disambiguation5/5

Each tool addresses a distinct stage of the number lifecycle: identity (whoami), discovery (search_available_numbers), acquisition (buy_numbers), routing options (list_routing_targets), configuration (configure_numbers), and removal (release_numbers). There is no meaningful overlap between tool purposes.

Naming Consistency4/5

Most tools follow a clear verb_noun snake_case pattern (search_available_numbers, buy_numbers, list_routing_targets, configure_numbers, release_numbers). The lone exception is 'whoami', a standard Unix-style command name, which is a minor deviation rather than a systemic inconsistency.

Tool Count5/5

Six tools provide a focused, well-scoped surface for a number-provisioning server. Each tool corresponds to a necessary step in the purchase-to-configuration workflow, and none feels redundant or extraneous.

Completeness3/5

The lifecycle is well covered from search/buy through configure/release, but there is no tool to list or inspect already-owned/configured numbers. This is a notable gap for agents needing to manage existing inventory, though the core provisioning flow can still be completed.

Maintenance

ActivityMaintained
ResponsivenessNo issues