Skip to main content
Glama

Search numbers to buy

search_available_numbers
Read-only

Search Vobiz inventory for buyable phone numbers by country, region, digits, or India series, returning fees, capabilities, commitment, and Aadhaar verification. Paginate with page and per_page.

Instructions

Search Vobiz inventory for phone numbers you can buy, returning each number's setup_fee, monthly_fee, currency, capabilities, minimum commitment and whether Aadhaar verification is required. Filter by country, region, contains (digits anywhere in the number) or series (India). Numbers already on the account are not inventory: use list_phone_numbers for those. Buy a result with buy_phone_number, which quotes the same fees. Pagination is stateless: pass page and per_page on every call (nothing is saved between calls) and follow pagination.next_page.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "search_available_numbers"
  }
}

Input Schema

NameRequiredDescriptionDefault
pageNo1-based page number (default 1); pass pagination.next_page from the previous result.
regionNoOnly numbers whose inventory region matches this text (up to 80 characters), for countries where Vobiz records a region such as a state or city.
seriesNoIndia only: the digits right after +91 the number must start with, e.g. 80 for the 80-series.
countryNoISO 3166-1 alpha-2 country code in upper case, e.g. IN or US. Omit for every country.
containsNoDigits (1-15) that must appear somewhere in the number, e.g. 80 matches +918065...; vanity or pattern search.
per_pageNoNumbers per page, 1-100 (default: the server's VOBIZ_DEFAULT_PAGE_SIZE, normally 20).

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`.
numbersNoInventory numbers matching the filters; empty when nothing matches.
paginationNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed7 schema fields changedv1.4.2
    • changedInput schema / properties / contains / description
      Previous value: -"Digits the number must contain (vanity/pattern search)."New value: +"Digits (1-15) that must appear somewhere in the number, e.g. 80 matches +918065...; vanity or pattern search."
    • addedInput schema / properties / country / description
      Added value: +"ISO 3166-1 alpha-2 country code in upper case, e.g. IN or US. Omit for every country."
    • addedInput schema / properties / page / description
      Added value: +"1-based page number (default 1); pass pagination.next_page from the previous result."
    • addedInput schema / properties / per_page / description
      Added value: +"Numbers per page, 1-100 (default: the server's VOBIZ_DEFAULT_PAGE_SIZE, normally 20)."
    • addedInput schema / properties / region / description
      Added value: +"Only numbers whose inventory region matches this text (up to 80 characters), for countries where Vobiz records a region such as a state or city."
    • changedInput schema / properties / series / description
      Previous value: -"India only: digits right after +91, e.g. 80."New value: +"India only: the digits right after +91 the number must start with, e.g. 80 for the 80-series."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "numbers": {
      +      "description": "Inventory numbers matching the filters; empty when nothing matches.",
      +      "items": {
      +        "additionalProperties": {},
      +        "properties": {
      +          "aadhaar_verification_required": {
      +            "description": "True when the buyer must complete Aadhaar verification before use (India).",
      +            "type": [
      +              "boolean",
      +              "null"
      +            ]
      +          },
      +          "capabilities": {
      +            "anyOf": [
      +              {
      +                "additionalProperties": {},
      +                "propertyNames": {
      +                  "type": "string"
      +                },
      +                "type": "object"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "description": "Capability flags such as voice, sms, mms and fax."
      +          },
      +          "country": {
      +            "description": "ISO 3166-1 alpha-2 country code.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "currency": {
      +            "description": "ISO 4217 currency of the fees.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "e164": {
      +            "description": "The number in E.164 form; pass it to buy_phone_number.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "is_trial_number": {
      +            "description": "True for trial-tier numbers.",
      +            "type": [
      +              "boolean",
      +              "null"
      +            ]
      +          },
      +          "minimum_commitment_months": {
      +            "description": "Minimum rental period in months.",
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "monthly_fee": {
      +            "description": "Recurring monthly rental, charged at purchase and then monthly.",
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "provider": {
      +            "description": "Upstream carrier label.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "region": {
      +            "description": "Region or state the number belongs to, when Vobiz records one.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "setup_fee": {
      +            "description": "One-time fee charged at purchase.",
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "status": {
      +            "description": "Inventory status; only active, unassigned numbers are listed.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "voice_enabled": {
      +            "description": "True when the number can carry voice calls.",
      +            "type": [
      +              "boolean",
      +              "null"
      +            ]
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "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"
      +    },
      +    "pagination": {
      +      "additionalProperties": {},
      +      "properties": {
      +        "has_more": {
      +          "description": "True when another page exists.",
      +          "type": "boolean"
      +        },
      +        "next_page": {
      +          "description": "page to pass next, or null on the last page.",
      +          "type": [
      +            "number",
      +            "null"
      +          ]
      +        },
      +        "page": {
      +          "description": "Page returned.",
      +          "type": "number"
      +        },
      +        "per_page": {
      +          "description": "Page size applied.",
      +          "type": "number"
      +        },
      +        "returned": {
      +          "description": "Numbers in this page.",
      +          "type": "number"
      +        },
      +        "total": {
      +          "description": "Total matching numbers, or null when Vobiz did not report one.",
      +          "type": [
      +            "number",
      +            "null"
      +          ]
      +        }
      +      },
      +      "type": "object"
      +    }
      +  },
      +  "type": "object"
      +}
  2. First observedv1.1.1

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, so the description's added value is the stateless-pagination disclosure ('nothing is saved between calls'), which is genuinely non-obvious behavior. It also previews the fields each result carries. It stops short of stating auth requirements or result limits, keeping it at a 4.

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?

Front-loaded with purpose and scope, then filters, then routing and pagination. Every sentence carries load, though the enumeration of return fields is slightly redundant given the output schema exists.

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 required parameters, full schema coverage, an output schema for return values, and explicit routing plus pagination semantics — everything an agent needs to call this correctly is present.

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 description coverage is 100%, with each parameter's format, pattern, and defaults already documented (e.g. series pattern, per_page maximum). The description restates the filter fields in prose ('contains (digits anywhere in the number)') which is helpful routing context but adds little beyond the schema, so the baseline 3 applies.

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 ('Search Vobiz inventory for phone numbers you can buy') and immediately distinguishes itself from list_phone_numbers by noting owned numbers 'are not inventory.' An agent can pick this tool over its closest sibling without opening either 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?

Explicitly routes: use list_phone_numbers for numbers already on the account, buy_phone_number to purchase a result, and describes each filter's intended use (country, region, contains, series for India). Also gives the pagination protocol ('pass page and per_page on every call', follow pagination.next_page), leaving nothing to inference.

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