Skip to main content
Glama

Create PSTN Voice IN Trunk

create_pstn_trunk
Destructive

Create a PSTN / call-forwarding Voice IN Trunk for the authenticated customer: inbound calls to the assigned DIDs are forwarded to destination — a phone number in digits, e.g. "48452006332". Forwarding is billed per minute, so this tool is confirmation-gated: the preview shows the forwarding rate (amounts are in USD) — show the price to the user before confirming. If the destination has no rate, the trunk cannot be created. For a SIP trunk use create_sip_trunk; for a phone.systems™ trunk use create_phone_systems_trunk.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
popNoDIDWW Point of Presence the trunk is served from. Omit to let DIDWW pick.
nameYesFriendly name of the Voice IN Trunk (must be unique for the customer).
weightNoLoad-balancing weight among trunk-group members of the same priority; higher is preferred (default 65535).
priorityNoPriority of this trunk; DIDWW contacts the lowest-numbered priority first. Range 0-65535.
cli_formatNoFormat of the caller ID sent to the customer equipment (default e164).
cli_prefixNoPrefix prepended to the caller ID. Letters, digits, "+" and "#" only, up to 7 characters.
descriptionNoDescription of the Voice IN Trunk.
destinationYesPhone number to forward calls to, digits only (e.g. "48452006332").
capacity_limitNoMaximum number of simultaneous calls for the Voice IN Trunk.
trunk_group_idNoOptional Voice IN Trunk Group UUID to assign the trunk to.
ringing_timeoutNoSeconds to wait for a 200 OK after a 18x ringing response before ending the routing attempt with the "Ringing timeout" disconnect code. Omit to use the platform default.
confirmation_tokenNoLeave empty on the first call — it returns the per-minute rate preview + a confirmation_token and creates nothing; re-call with the token to create the trunk.
src_number_list_idNoOptional Voice IN Number List UUID (from list_voice_in_number_lists) to apply as the caller-ID (source number) filter on this trunk.

Schema Changelog

Changes observed during successful MCP inspections.

No schema history has been recorded yet.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only flag destructiveHint/idempotentHint, but the description goes well beyond them: per-minute billing, a confirmation-gated two-step flow where the first call creates nothing and returns a rate preview plus token, and USD-denominated amounts. It also discloses a failure mode (no rate = no trunk), which the annotations cannot express.

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?

Front-loaded with the action and its effect, then billing/gating, then failure condition, then sibling routing. Every sentence carries new information; nothing is repeated from the schema or annotations.

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

Completeness4/5

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

For a 13-parameter mutation tool with no output schema, the description covers the workflow, cost implications, preconditions, and sibling routing well. It stops short of describing what a successful creation returns (trunk ID/handle) or any authorization requirements, which leaves a small gap for a creation tool.

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 baseline is 3, and the description adds genuine meaning on top: the destination format is restated with a concrete example, and confirmation_token's 'leave empty on first call' semantics are explained in workflow terms rather than field terms. It does not explain the routing parameters (priority, weight, pop, ringing_timeout), but those are already fully documented in the schema.

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 ('Create a PSTN / call-forwarding Voice IN Trunk') and immediately scopes the behavior (inbound calls to assigned DIDs are forwarded to `destination`). It explicitly distinguishes itself from the two nearest siblings, create_sip_trunk and create_phone_systems_trunk, so an agent can route correctly 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?

Names both alternatives with their selection conditions ('For a SIP trunk use create_sip_trunk; for a phone.systems™ trunk use create_phone_systems_trunk') and states a hard precondition ('If the destination has no rate, the trunk cannot be created'). It also prescribes the two-call confirmation workflow, which is exactly the when-to-use guidance an agent needs.

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