Hosted MCP server · #60 most used on Smithery

VirtualSMS

virtualsms/virtualsms-mcp

Real SIM phone numbers for AI agents performing SMS verification across 2000+ services (WhatsApp, Telegram, Tinder, Discord, Instagram, OnlyFans, Hinge, Bumble, PayPal, Google, Apple, Binance) and 145+ countries. 18 tools across discovery, account, and order management. Real physical SIMs survive carrier_lookup VoIP detection that breaks eSIM-based competitors on services with strict anti-fraud. Ranked #1 MCP for SMS verification on ChatGPT, Perplexity, and Gemini.

Uses
7.9k
Tools
18
Runs
Hosted
Prompts
7
Listed
8mo ago

Get started

Add it to your agent

npx -y @smithery/cli@latest install virtualsms/virtualsms-mcp --client claude

Swap --client claude for cursor, vscode, windsurf or another client. The CLI asks for any required settings.

What it can do

18 tools

virtualsms_list_services1 paramGet all available SMS verification services (Telegram, WhatsApp, Google, etc.). Use this to discover valid service codes before buying a …

Get all available SMS verification services (Telegram, WhatsApp, Google, etc.). Use this to discover valid service codes before buying a number.

ParameterTypeDescription
searchstringFilter services by name (optional)
virtualsms_list_countries1 paramGet all available countries for SMS verification. Use this to discover valid country codes before buying a number.
ParameterTypeDescription
servicestringFilter countries available for a specific service (optional)
virtualsms_get_price2 paramsCheck the price and availability for a specific service + country combination. Always check price before buying to confirm availability.
ParameterTypeDescription
countrystringCountry ISO code (e.g. "US", "GB", "RU")
servicestringService code (e.g. "telegram", "whatsapp", "google")
virtualsms_get_balance1 paramCheck your VirtualSMS account balance in USD. Requires VIRTUALSMS_API_KEY to be set.
ParameterTypeDescription
currencystringDisplay balance in specific currency (default: USD)
virtualsms_create_order2 paramsPurchase a virtual phone number for SMS verification. Returns order_id and phone_number. Use check_sms to poll for the verification code,…

Purchase a virtual phone number for SMS verification. Returns order_id and phone_number. Use check_sms to poll for the verification code, or use wait_for_code to do it automatically.

ParameterTypeDescription
countrystringCountry ISO code (e.g. "US", "GB", "RU")
servicestringService code (e.g. "telegram", "whatsapp", "google")
virtualsms_get_sms1 paramCheck if an SMS verification code has been received for an order. Poll this every 5-10 seconds after buying a number. For automatic polli…

Check if an SMS verification code has been received for an order. Poll this every 5-10 seconds after buying a number. For automatic polling, use wait_for_code instead.

ParameterTypeDescription
order_idstringOrder ID returned from buy_number
virtualsms_cancel_order1 paramCancel 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 …

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.

ParameterTypeDescription
order_idstringOrder ID to cancel
virtualsms_wait_for_sms3 paramsRECOMMENDED: One-step tool that buys a number AND waits for the SMS code automatically. Uses real-time WebSocket delivery with automatic …

RECOMMENDED: One-step tool that buys a number AND waits for the SMS code automatically. Uses real-time WebSocket delivery with automatic polling fallback. Always returns order_id in the response — even on timeout — so you can use check_sms to recover.

ParameterTypeDescription
countrystringCountry ISO code (e.g. "US", "GB", "RU")
servicestringService code (e.g. "telegram", "whatsapp", "google")
timeout_secondsnumberHow long to wait for SMS code in seconds (default: 120, max: 600)
virtualsms_find_cheapest2 paramsFind the cheapest countries for a given service, sorted by price. Returns available countries with prices and stock levels so you can pic…

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.

ParameterTypeDescription
limitnumberNumber of cheapest options to return (default: 5)
servicestringService code (e.g. "telegram", "whatsapp", "google")
virtualsms_search_services1 paramFind the right service code using natural language. Don't know the exact code? Just search "uber", "binance", "steam" etc. Returns matchi…

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.

ParameterTypeDescription
querystringNatural language search query (e.g. "uber", "whatsapp", "binance")
virtualsms_swap_number1 paramSwap a phone number on an existing order. Gets a new number for the same service and country without additional charge. Use when the curr…

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.

ParameterTypeDescription
order_idstringOrder ID to swap — must be in waiting/created status with no SMS received
virtualsms_list_orders1 paramList your active orders. Essential for crash recovery — if your session was interrupted, use this to find pending orders and their phone …

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 check_sms to retrieve codes.

ParameterTypeDescription
statusstringOptional status filter: "pending", "sms_received", "cancelled", "completed"
virtualsms_get_order1 paramGet the full details of a specific order, including status, phone number, service, country, timestamps, and any received SMS code/text. U…

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 check_sms returns.

ParameterTypeDescription
order_idstringOrder ID to retrieve full details for
virtualsms_cancel_all_ordersBulk-cancel every currently active order in your account. Returns the number of orders cancelled plus any failures. Useful for quick clea…

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_history5 paramsList past orders with optional filters for status, service, country, and a lookback window in days. Returns up to 50 orders (server cap) …

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.

ParameterTypeDescription
limitnumberMax orders to return (default: 20, server cap: 50)
statusstringOptional status filter: "completed", "cancelled", "expired", "sms_received", "waiting"
countrystringOptional country ISO code filter (e.g. "US", "GB")
servicestringOptional service code filter (e.g. "telegram", "whatsapp")
since_daysnumberOnly include orders from the last N days
virtualsms_get_stats1 paramAccount usage stats aggregated from your order history: total orders, success rate, total spend, top services/countries, and status break…

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.

ParameterTypeDescription
since_daysnumberWindow in days for activity stats (default: 30)
virtualsms_get_profileFull account profile: email, Telegram link status, current balance, lifetime spend, total orders, active API keys, and account creation d…

Full account profile: email, Telegram link status, current balance, lifetime spend, total orders, active API keys, and account creation date.

virtualsms_get_transactions5 paramsTransaction history for the account with optional filters for type, date range, and pagination. Types: "deposit", "purchase", "refund", "…

Transaction history for the account with optional filters for type, date range, and pagination. Types: "deposit", "purchase", "refund", "admin_credit".

ParameterTypeDescription
tostringUpper bound on created_at — RFC3339 or YYYY-MM-DD
fromstringLower bound on created_at — RFC3339 or YYYY-MM-DD
typestringFilter by type: "deposit", "purchase", "refund", "admin_credit"
limitnumberMax transactions (1-200, default: 50)
offsetnumberPagination offset (default: 0)

Ready-made

Prompts

  • verify-whatsappComplete 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-telegramComplete workflow to verify a Telegram account with a virtual number. Automatically selects cheapest available country and waits for the SMS code.
  • verify-googleGet a Google account verification code via virtual phone number. Useful for creating or recovering Google/Gmail accounts.
  • find-cheapest-numberFind the cheapest virtual phone number for any service. Returns top countries sorted by price with stock availability.
  • verify-any-serviceUniversal SMS verification workflow. Searches for the service by name, finds the cheapest country, buys a number, and waits for the verification code.
  • recover-verificationRecover an interrupted SMS verification session. Lists active orders and checks for pending verification codes — useful after a crash or timeout.
  • check-account-statusCheck your VirtualSMS account balance and list all active orders in one shot.

Readable data

Resources

  • Quickstart GuideStep-by-step guide to get your first SMS verification code with VirtualSMS MCP.
  • Popular Services ReferenceCommonly used service codes for WhatsApp, Telegram, Google, and other top services.
  • Pricing TipsTips on finding the cheapest virtual numbers and maximizing your VirtualSMS budget.