VirtualSMS MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| VIRTUALSMS_API_KEY | Yes | Your VirtualSMS API key (required for auth tools) | |
| VIRTUALSMS_BASE_URL | No | API base URL | https://virtualsms.io |
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
| Capability | Details |
|---|---|
| tools | {} |
| prompts | {} |
| resources | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| virtualsms_list_proxy_catalogA | List available proxy pool types, countries, and price-per-GB. Use this before buying proxy traffic. |
| virtualsms_list_proxiesA | List all proxies on your account with remaining GB and login credentials. Returns proxy_id values for use with get_proxy_usage, rotate_proxy, set_proxy_targeting, and generate_proxy_endpoint. |
| virtualsms_buy_proxyA | Purchase proxy traffic (GB) for a selected pool type. Returns proxy credentials and remaining balance. country_code here is only a soft preference for provisioning. For actual per-connection targeting (country/state/city/zip/asn) or a ready-to-use connection string, use virtualsms_generate_proxy_endpoint after buying. To persist a default targeting on the sub-user, use virtualsms_set_proxy_targeting. |
| virtualsms_rotate_proxyA | Request a fresh IP for an existing proxy. Useful when an endpoint flags the current exit IP. |
| virtualsms_get_proxy_usageA | Get cached GB used/remaining and request count for one proxy. Cheap, no upstream call. Reads a cached value refreshed every ~5 minutes. |
| virtualsms_get_proxy_usage_historyB | Get a per-day traffic (GB) and request-count series for one proxy over the last 7 or 30 days. |
| virtualsms_set_proxy_targetingA | Persist a default geo-targeting (country, and optionally cities/ASNs) on an existing proxy sub-user. Country-only is free. Adding cities or ASNs bills the GB on your OWN allocation at 2x (not on residential_premium, where refined targeting is included free). This changes the STORED default. For a one-off connection string with any targeting (including state/zip), use virtualsms_generate_proxy_endpoint instead. |
| virtualsms_test_proxyA | Make one request through a proxy and report the exit IP, country, city, ISP, and latency. Proves the proxy works and which country it exits from. Consumes a small amount of the proxy's GB allocation. Rate-limited to about once per 20 seconds per proxy. |
| virtualsms_list_proxy_locationsA | List available cities, states, ASNs, or ZIP codes for a pool type + country. Use this to discover valid location_code values before calling virtualsms_generate_proxy_endpoint or virtualsms_set_proxy_targeting with sub-country targeting. Public endpoint, no purchase required. Not available for residential_premium (only residential, mobile, datacenter). |
| virtualsms_generate_proxy_endpointA | Build ready-to-use proxy connection string(s) for an owned proxy: country/state/city/zip/asn targeting, rotating or sticky session, HTTP or SOCKS5, in host:port:user:pass / user:pass@host:port / curl format. Nothing is purchased or changed server-side. This only composes a connection string from the proxy's existing credentials (same convention as the VirtualSMS dashboard's endpoint generator). Sub-country targeting (state/city/zip/asn) bills the proxy's own GB at 2x on non-premium pools, free on residential_premium. |
| virtualsms_start_manual_registration_sessionA | Beta, invite-only. Start a country-matched cloud browser you drive yourself: returns a viewer_url, an authenticated live-viewer link you open to watch and drive the session (manual takeover), plus optional order phone number and timeline. Agent-driven navigation is the separate opt-in session tools. Pair with create_order for OTP + browser in one agent flow. |
| virtualsms_list_servicesA | Get all available SMS verification services (Telegram, WhatsApp, Google, etc.). Use this to discover valid service codes before buying a number. |
| virtualsms_list_countriesA | Get all available countries for SMS verification. Use this to discover valid country codes before buying a number. |
| virtualsms_get_priceA | Check the price and availability for a specific service + country combination. Always check price before buying to confirm availability. |
| virtualsms_get_balanceA | Check your VirtualSMS account balance in USD. Requires VIRTUALSMS_API_KEY to be set. |
| virtualsms_create_orderA | Purchase a virtual phone number for SMS verification. Returns order_id and phone_number. Codes typically arrive within ~10-60 seconds after purchase. Use get_sms to poll for the verification code, or use wait_for_sms to block until it arrives. |
| virtualsms_get_smsA | Check if an SMS verification code has been received for an order. Returns status, phone_number, and (when delivered) messages[] array plus an extracted code. Poll this every 5-10 seconds after buying a number, or use wait_for_sms to block until delivery. |
| virtualsms_cancel_orderA | Cancel an order and request a refund. Only works if no SMS has been received yet. Use this if the service is taking too long or you want to try a different number. Cooldown: cancel is only available 120 seconds after purchase. Check |
| virtualsms_wait_for_smsA | Wait (block) until the SMS arrives on an existing order_id, or until timeout. Codes typically arrive within ~10-60 seconds. This call BLOCKS for up to timeout_seconds (default 60, max 600) before returning. Uses real-time WebSocket delivery with automatic polling fallback. Pass an order_id from create_order. To buy AND wait in one step, call create_order then this tool. |
| virtualsms_find_cheapestA | Find the cheapest countries for a given service, sorted by price. Returns available countries with prices and stock levels so you can pick the best deal. |
| virtualsms_search_servicesA | Find the right service code using natural language. Don't know the exact code? Just search "uber", "binance", "steam" etc. Returns matching services with similarity scores. |
| virtualsms_swap_numberA | Swap a phone number on an existing order. Gets a new number for the same service and country without additional charge. Use when the current number isn't receiving SMS. Cooldown: swap is only available 120 seconds after purchase. Check |
| virtualsms_list_ordersA | List your active orders. Essential for crash recovery. If your session was interrupted, use this to find pending orders and their phone numbers, then use get_sms to retrieve codes. |
| virtualsms_get_orderA | Get the full details of a specific order, including status, phone number, service, country, timestamps, and any received SMS code/text. Use this when you have an order_id and need the latest state beyond what get_sms returns. |
| virtualsms_cancel_all_ordersA | Bulk-cancel every currently active order in your account. Returns the number of orders cancelled plus any failures. Useful for quick cleanup after a batch run or test session. |
| virtualsms_order_historyA | List past orders with optional filters for status, service, country, and a lookback window in days. Returns up to 50 orders (server cap) ordered most-recent-first. |
| virtualsms_get_statsA | Account usage stats aggregated from your order history: total orders, success rate, total spend, top services/countries, and status breakdown over a configurable lookback window. |
| virtualsms_get_profileA | Full account profile: email, Telegram link status, current balance, lifetime spend, total orders, active API keys, and account creation date. |
| virtualsms_get_transactionsB | Transaction history for the account with optional filters for type, date range, and pagination. Types: "deposit", "purchase", "refund", "admin_credit". |
| virtualsms_rentals_pricingA | List all active rental pricing tiers (Full Access tier: local SIM inventory, durations and prices). This is a raw catalog dump and may list rows that are not purchasable today, so confirm against rentals_available (authoritative per country) before creating a rental. Use rentals_price for platform-tier (per-country, per-service) pricing instead. |
| virtualsms_rentals_availableA | List countries with rental stock, available counts, and pricing. tier=full_access (default) shows local-SIM inventory; tier=platform shows countries available via our global supplier network (with per-country service counts and popular services). Use this before creating a rental. |
| virtualsms_rentals_servicesA | List services available for platform-tier rental in a given country, with physical stock counts and retail price. Platform-tier rentals are locked to ONE chosen service per number. Use this to pick a valid service code before creating one. |
| virtualsms_rentals_priceA | Get the catalog-driven retail price for a (service, country, duration) platform-tier rental combo. |
| virtualsms_create_rentalA | Rent a phone number for an extended period (as opposed to a one-off number via create_order). Two tiers: "full_access" = local SIM inventory, works across ANY service on that number. "platform" = sourced via our global supplier network, locked to ONE chosen service, durations 1/3/7 days only. Both tiers carry the same refund terms: a full refund within 20 minutes of purchase and before the first SMS arrives. Check rentals_available and rentals_price/rentals_pricing first to confirm country/service/duration and cost. |
| virtualsms_list_rentalsA | List your rentals across both tiers, optionally filtered by status. Returns rental_id, tier, country, phone number, status, and expiry for each. Use get_rental for full detail on one. |
| virtualsms_get_rentalA | Get the full details of a specific rental by ID, including tier, phone number, country, service lock, status, expiry, and any received SMS. Use list_rentals first if you do not have the rental_id. |
| virtualsms_extend_rentalA | Extend an active rental by an additional duration. Charges your balance at the current catalog price for that duration. |
| virtualsms_cancel_rentalA | Cancel a rental for a full refund. Only eligible within 20 minutes of purchase AND before any SMS has been received. Works for either tier. Past that window a rental runs to its natural expiry. |
| virtualsms_retry_orderA | Ask the provider to resend the SMS to the SAME phone number on an existing order (order must be in waiting/created status). Not all order types support this. Some providers only support swap_number instead, which returns a NEW number. |
| virtualsms_check_numberA | Public carrier + line-type lookup for an arbitrary E.164 phone number (mobile/landline/VoIP, spam risk). No API key required. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| verify-whatsapp | Complete workflow to get a WhatsApp verification code using a virtual number. Finds the cheapest available country, buys a number, and waits for the SMS code automatically. |
| verify-telegram | Complete workflow to verify a Telegram account with a virtual number. Automatically selects cheapest available country and waits for the SMS code. |
| verify-google | Get a Google account verification code via virtual phone number. Useful for creating or recovering Google/Gmail accounts. |
| find-cheapest-number | Find the cheapest virtual phone number for any service. Returns top countries sorted by price with stock availability. |
| verify-any-service | Universal SMS verification workflow. Searches for the service by name, finds the cheapest country, buys a number, and waits for the verification code. |
| recover-verification | Recover an interrupted SMS verification session. Lists active orders and checks for pending verification codes. Useful after a crash or timeout. |
| check-account-status | Check your VirtualSMS account balance and list all active orders in one shot. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| Quickstart Guide | Step-by-step guide to get your first SMS verification code with VirtualSMS MCP. |
| Popular Services Reference | Commonly used service codes for WhatsApp, Telegram, Google, and other top services. |
| Pricing Tips | Tips on finding the cheapest virtual numbers and maximizing your VirtualSMS budget. |
TDQS
Scored across 40 tools
Each tool targets a distinct resource and action, with clear separation between SMS orders, proxy management, rentals, and account functions. Even similar tools like list_proxy_catalog vs list_proxies or generate_proxy_endpoint vs set_proxy_targeting are clearly differentiated by their descriptions.
All tools follow a consistent verb_noun pattern with the virtualsms_ prefix, using snake_case throughout. The rental sub-group (rentals_pricing, rentals_available, etc.) adds a consistent sub-pattern without breaking the overall convention.
With 40 tools, this exceeds the threshold for 'too many' (25+). While the server covers a complex domain with multiple features, the large number of tools makes the surface heavy and potential for agent misselection higher.
The tool set provides comprehensive lifecycle coverage: full CRUD for orders and rentals, proxy purchase/rotation/usage/targeting, account and transaction history, plus discovery and pricing tools. No obvious dead ends or missing operations for the stated purpose.