Skip to main content
Glama

Create Voice IN Number List

create_voice_in_number_list

Create a Voice IN Number List — a caller-ID (source number) filter for inbound calls. Choose mode: "full_number" (entries match the caller's number exactly) or "prefix" (entries match by prefix). Choose default_action: "allow" (calls pass unless an entry rejects them — a deny-list) or "reject" (calls are rejected unless an entry allows them — an allow-list). Optionally seed the list with numbers (full numbers or prefixes; allowed characters: digits, letters, "+", "-", "." — stored EXACTLY as passed, no normalization); by default those entries carry the OPPOSITE action of default_action (the usual deny-list / allow-list shape) — override with numbers_action. Creating a list does NOT filter anything by itself: attach it to a SIP or PSTN Voice IN Trunk via src_number_list_id on create_sip_trunk / create_pstn_trunk / update_sip_trunk / update_pstn_trunk. Returns the created list, or a readable error (in which case nothing is created).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
modeYesHow entries match the caller's number: "full_number" (exact match) or "prefix" (prefix match). Cannot be mixed within one list.
nameYesName of the Voice IN Number List (must be unique for the customer).
numbersNoOptional initial entries — full caller numbers (mode "full_number") or prefixes (mode "prefix"). Allowed characters: digits, letters, "+", "-", "."; max 20 chars each, up to 500. Stored exactly as passed (whitespace trimmed, nothing else normalized) and unique within the list.
default_actionYesWhat happens to a call whose caller number matches NO entry: "allow" (deny-list style) or "reject" (allow-list style).
numbers_actionNoAction the initial `numbers` entries carry: "allow" or "reject". Default: the opposite of default_action.

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?

Adds substantial behavior beyond annotations: the atomicity guarantee ('returns... or a readable error, in which case nothing is created'), the no-normalization storage rule, and the crucial warning that creation alone is inert until attached to a trunk. Annotations only cover the safety profile, so this contextual disclosure is valuable.

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

Conciseness4/5

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

The description is long and dense, but it is front-loaded with the definition and every sentence carries distinct, non-redundant information (mode, default_action, numbers, numbers_action, attachment requirement, return behavior). No filler, though the single dense paragraph is heavier than strictly necessary.

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?

No output schema exists, and the description compensates by stating what is returned (the created list or a readable error and the resulting no-op). With annotations covering safety and the schema covering every parameter, nothing an agent needs to call this 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 description coverage is 100%, so the schema already documents all five parameters and the default-3 baseline applies. The description nonetheless adds conceptual meaning the schema doesn't carry — the deny-list/allow-list framing for default_action and the rule that numbers carry the opposite action by default.

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 (create) and resource (Voice IN Number List) and immediately defines what the resource is: a caller-ID/source-number filter for inbound calls. It is clearly differentiated from the sibling trunk tools, which are named as the place where the list is actually attached.

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?

Explicitly explains when this tool is and isn't sufficient: creating a list does NOT filter anything on its own, and routes the agent to create_sip_trunk / create_pstn_trunk / update_sip_trunk / update_pstn_trunk via src_number_list_id. The mode and default_action choices come with the conditions that select each option.

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