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 claudeSwap --client claude for cursor, vscode, windsurf or another client. The CLI asks for any required settings.
claude mcp add --transport http virtualsms https://server.smithery.ai/virtualsms/virtualsms-mcp/mcpA hosted server: nothing to install. Run /mcp in Claude Code to sign in if it asks.
[mcp_servers.virtualsms]
url = "https://server.smithery.ai/virtualsms/virtualsms-mcp/mcp"Add to ~/.codex/config.toml.
{
"mcpServers": {
"virtualsms": {
"url": "https://server.smithery.ai/virtualsms/virtualsms-mcp/mcp"
}
}
}Add to ~/.cursor/mcp.json.
{
"servers": {
"virtualsms": {
"type": "http",
"url": "https://server.smithery.ai/virtualsms/virtualsms-mcp/mcp"
}
}
}Add to .vscode/mcp.json.
gemini mcp add --transport http virtualsms https://server.smithery.ai/virtualsms/virtualsms-mcp/mcpSaved to .gemini/settings.json.
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.
| Parameter | Type | Description |
|---|---|---|
search | string | Filter 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.
| Parameter | Type | Description |
|---|---|---|
service | string | Filter 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.
| Parameter | Type | Description |
|---|---|---|
country | string | Country ISO code (e.g. "US", "GB", "RU") |
service | string | Service code (e.g. "telegram", "whatsapp", "google") |
virtualsms_get_balance1 paramCheck your VirtualSMS account balance in USD. Requires VIRTUALSMS_API_KEY to be set.
| Parameter | Type | Description |
|---|---|---|
currency | string | Display 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.
| Parameter | Type | Description |
|---|---|---|
country | string | Country ISO code (e.g. "US", "GB", "RU") |
service | string | Service 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.
| Parameter | Type | Description |
|---|---|---|
order_id | string | Order 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.
| Parameter | Type | Description |
|---|---|---|
order_id | string | Order 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.
| Parameter | Type | Description |
|---|---|---|
country | string | Country ISO code (e.g. "US", "GB", "RU") |
service | string | Service code (e.g. "telegram", "whatsapp", "google") |
timeout_seconds | number | How 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.
| Parameter | Type | Description |
|---|---|---|
limit | number | Number of cheapest options to return (default: 5) |
service | string | Service 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.
| Parameter | Type | Description |
|---|---|---|
query | string | Natural 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.
| Parameter | Type | Description |
|---|---|---|
order_id | string | Order 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.
| Parameter | Type | Description |
|---|---|---|
status | string | Optional 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.
| Parameter | Type | Description |
|---|---|---|
order_id | string | Order 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.
| Parameter | Type | Description |
|---|---|---|
limit | number | Max orders to return (default: 20, server cap: 50) |
status | string | Optional status filter: "completed", "cancelled", "expired", "sms_received", "waiting" |
country | string | Optional country ISO code filter (e.g. "US", "GB") |
service | string | Optional service code filter (e.g. "telegram", "whatsapp") |
since_days | number | Only 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.
| Parameter | Type | Description |
|---|---|---|
since_days | number | Window 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".
| Parameter | Type | Description |
|---|---|---|
to | string | Upper bound on created_at — RFC3339 or YYYY-MM-DD |
from | string | Lower bound on created_at — RFC3339 or YYYY-MM-DD |
type | string | Filter by type: "deposit", "purchase", "refund", "admin_credit" |
limit | number | Max transactions (1-200, default: 50) |
offset | number | Pagination 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.