Skip to main content
Glama

Buy a dedicated number

purchase_dedicated_number
Destructive

Buy a dedicated monthly phone number in a selected country, charge your balance for the first month, and get a ded_ id to poll for incoming SMS.

Instructions

Buy a dedicated monthly number in a country from search_dedicated_countries, charged to your balance immediately for the first month. Requires max_price_cents: the monthly price you showed the user and they approved; if the price is now higher, nothing is charged and the new price comes back to re-confirm. There is no cancel or refund - to stop paying, leave auto_renew off and let the month run out. Returns a ded_ id - poll get_dedicated_number to read incoming SMS.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
countryYesCountry code or name from search_dedicated_countries (e.g. 'us', 'uk', 'germany')
auto_renewNoCharge the next month automatically at the end of each monthly period (ask the user first)
max_price_centsYesThe price you showed the user and they approved, in US cents (e.g. 250 = $2.50). Nothing is charged if the current price is higher; the new price comes back so you can ask the user again.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
dedicated_numberYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changedv1.2.1
    • changedInput schema / properties / auto_renew / description
      Previous value: -"Charge the next month automatically at the end of each monthly period"New value: +"Charge the next month automatically at the end of each monthly period (ask the user first)"
    • addedInput schema / properties / max_price_cents
      Added value: +{
      +  "description": "The price you showed the user and they approved, in US cents (e.g. 250 = $2.50). Nothing is charged if the current price is higher; the new price comes back so you can ask the user again.",
      +  "exclusiveMinimum": 0,
      +  "maximum": 1000000,
      +  "type": "integer"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "country"
      -]New value: +[
      +  "country",
      +  "max_price_cents"
      +]
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": {},
      +  "properties": {
      +    "dedicated_number": {
      +      "additionalProperties": {},
      +      "properties": {
      +        "auto_renew": {
      +          "type": "boolean"
      +        },
      +        "billing_period": {
      +          "type": "string"
      +        },
      +        "charged_price_cents": {
      +          "maximum": 9007199254740991,
      +          "minimum": -9007199254740991,
      +          "type": "integer"
      +        },
      +        "country": {
      +          "type": "string"
      +        },
      +        "country_name": {
      +          "type": "string"
      +        },
      +        "created_at": {
      +          "type": "string"
      +        },
      +        "display_id": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "expires_at": {
      +          "type": "string"
      +        },
      +        "id": {
      +          "type": "string"
      +        },
      +        "messages": {
      +          "items": {
      +            "additionalProperties": {},
      +            "properties": {
      +              "code": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "id": {
      +                "type": "string"
      +              },
      +              "received_at": {
      +                "type": "string"
      +              },
      +              "text": {
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "id",
      +              "text",
      +              "received_at"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "next_renewal_price_cents": {
      +          "maximum": 9007199254740991,
      +          "minimum": -9007199254740991,
      +          "type": "integer"
      +        },
      +        "nickname": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "paid_until": {
      +          "type": "string"
      +        },
      +        "phone_number": {
      +          "type": "string"
      +        },
      +        "quoted_price_cents": {
      +          "maximum": 9007199254740991,
      +          "minimum": -9007199254740991,
      +          "type": "integer"
      +        },
      +        "status": {
      +          "enum": [
      +            "active",
      +            "expired"
      +          ],
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "id",
      +        "status",
      +        "phone_number",
      +        "country",
      +        "country_name",
      +        "billing_period",
      +        "quoted_price_cents",
      +        "charged_price_cents",
      +        "next_renewal_price_cents",
      +        "auto_renew",
      +        "created_at",
      +        "paid_until",
      +        "expires_at"
      +      ],
      +      "type": "object"
      +    }
      +  },
      +  "required": [
      +    "dedicated_number"
      +  ],
      +  "type": "object"
      +}
  2. Changed3 schema fields changedv1.1.8
    • changedInput schema / properties / auto_renew / description
      Previous value: -"Auto-charge at the end of each monthly period"New value: +"Charge the next month automatically at the end of each monthly period"
    • addedInput schema / properties / country / maxLength
      Added value: +40
    • addedInput schema / properties / country / minLength
      Added value: +2
  3. First observedv1.1.3

TDQS

A4.9/5.0
Behavior5/5

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

Annotations mark it destructive/non-idempotent/open-world, and the description adds concrete consequences: immediate charge for the first month, no cancel or refund, and a price-guard that aborts the charge if the price rose. It also discloses the failure path (new price returned to re-confirm), which annotations cannot convey.

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?

Three tight sentences, front-loaded with the action and charge behavior, then constraints, then the return/next step. No filler; every clause carries actionable information.

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?

Covers prerequisites, billing behavior, refund policy, price-guard outcome, and the ID prefix for the follow-up call. With an output schema present it correctly does not spell out return fields, yet still gives enough to chain into get_dedicated_number.

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 coverage is 100%, so the baseline is 3, but the description adds workflow meaning to max_price_cents (the price the user already approved, with re-confirmation on mismatch) and reinforces the auto_renew/charge relationship. Slightly redundant with the schema but ties parameters to the purchase flow.

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 (Buy) and resource (dedicated monthly number) plus the source of the country value, search_dedicated_countries. This clearly distinguishes it from sibling purchase tools like rent_number and purchase_esim.

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 identifies the prerequisite tool (search_dedicated_countries), the required approved-price gate, the no-cancel/no-refund constraint, and the follow-up step (poll get_dedicated_number). An agent knows both when and how to invoke it without inference.

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