MCP Server · 40 tools · SMS, rentals, proxies

SMS verification for AI agents

Infrastructure for AI agents that need real-world phone verification. One MCP server for one-time SMS verification, dedicated number rentals, and matching-country proxies, all from one prepaid balance. Paste one config and every major MCP client gets 40 tools.

Tested with 10 MCP clients

40 tools 2500+ services 145+ countries from $0.05 Real SIMs, not VoIP Matching-country proxies

Connected in three steps

API key → paste config → ask your agent. Most setups finish in under two minutes.

Create an API key

Sign up free, open Settings, create a key, copy the token.

Paste the MCP config

One JSON block for hosted HTTP, or pick your client below for local stdio.

Restart and verify

"What’s my VirtualSMS balance?" is the fastest smoke test.

TL;DR

Account verification for agents: SMS, rentals, proxies and cloud browser, one prepaid balance. Carrier-issued numbers on real physical SIM cards, not VoIP.

Show full summary

VirtualSMS is an account verification platform for individuals, developers, and AI agents. It combines one-time SMS verification, dedicated number rentals, matching-country proxies, and private cloud browser sessions behind one API, one MCP server, and one prepaid balance. The numbers are carrier-issued mobile numbers, backed by real physical SIM cards on operators like Vodafone, O2 and T-Mobile, not VoIP, so they pass the line-type checks that reject VoIP at signup.

From one prepaid balance you can:

  • receive one-time SMS verification codes from $0.05
  • rent dedicated numbers for 1 to 30 days
  • buy matching-country residential, mobile and datacenter proxies
  • launch private cloud browser sessions that work alongside your number and proxy (beta)

Most providers solve one piece of the verification workflow. VirtualSMS combines numbers, rentals, proxies and cloud browser sessions behind one API, SDKs and an MCP server, so you use only the pieces you need or combine them into one workflow.

Use the platform through a REST API, official SDKs for Node, Python, PHP, Ruby and .NET, a hosted MCP server, or automation tools like n8n.

VirtualSMS can be used by individuals manually, integrated into applications with SDKs and APIs, or driven by AI agents through MCP.

Use the hosted endpoint at mcp.virtualsms.io or install virtualsms-mcp locally. Your agent gets 40 tools spanning verification, rentals and proxies, against live VirtualSMS infrastructure. Free, MIT-licensed, 2500+ services across 145+ countries, from $0.05 per code.

Building autonomous agents with x402 pay-per-call? See the agents guide for the USDC deposit flow that skips API-key signup entirely.

Recommended

Quick install: hosted MCP server

StreamableHTTP transport. No npm install. Paste the block, plug in your API key, ask your agent a question.

Open Standard
Model Context Protocol by Anthropic
Real Physical SIM
Carrier networks, not VoIP
Zero Install
Hosted at mcp.virtualsms.io
json
{
  "mcpServers": {
    "virtualsms": {
      "type": "streamableHttp",
      "url": "https://mcp.virtualsms.io/mcp",
      "headers": { "x-api-key": "vsms_your_api_key_here" }
    }
  }
}

Replace vsms_your_api_key_here with a key from Settings -> API Keys or sign up free.

What this looks like in practice

An agent runs the full loop in about 30 seconds.

  1. 01
    Connect

    hosted MCP at mcp.virtualsms.io/mcp, 40 tools ready.

  2. 02
    Ask

    “Get me a Telegram number for Thailand and wait for the code.”

  3. 03
    Tools

    find_cheapest -> create_order -> wait_for_sms

  4. 04
    Returns

    the OTP code. Total cost: ~$0.08, ~30 seconds.

Alternative

Local install (npm)

Prefer running the server locally? Same 40 tools, same auth, just stdio instead of HTTP. Pick your client below.

Claude Desktop SMS verification

Anthropic's flagship desktop client

Config file

macOS~/Library/Application Support/Claude/claude_desktop_config.json
Windows%APPDATA%\Claude\claude_desktop_config.json
Linux~/.config/Claude/claude_desktop_config.json
json
{
  "mcpServers": {
    "virtualsms": {
      "command": "npx",
      "args": ["-y", "virtualsms-mcp"],
      "env": {
        "VIRTUALSMS_API_KEY": "your_key_here"
      }
    }
  }
}

Restart Claude Desktop after saving. The virtualsms server appears in the MCP tool list.

Replace your_key_here with a key from Settings -> API Keys or sign up free.

40 MCP tools, grouped by job

18 activation 9 rentals 10 proxy 3 other

Agent 7 tools built for agent workflows, not REST wrappers

Activation & Account 18 tools
list_services

Every verification service VirtualSMS supports, across 2500+ services and 145+ countries. Optional search filter.

When: First call when picking a service from a long list.

list_countries

Every country with real physical SIM numbers available. Optional service filter.

When: When picking a country before creating an order.

get_price

Live price and availability for a service plus country pair.

When: When validating cost before placing an order.

find_cheapest Agent

Cheapest countries for a service right now, sorted by price, with real stock counts.

When: When the agent should auto-pick by price.

search_services Agent

Natural-language service lookup. "telega" finds Telegram.

When: When the user gives an ambiguous service name.

get_balance

Account balance in USD.

When: When confirming spend headroom before bulk orders.

get_profile

Email, Telegram link, balance, lifetime spend, total orders, active API keys.

When: When the agent needs account context.

get_stats

Orders, success rate, spend, and status/service/country breakdown.

When: For dashboards or weekly reporting.

get_transactions

Transaction history with type, date range, and pagination filters.

When: For audit, reconciliation, or expense reports.

create_order

Buy a number for a service plus country. Returns order_id and phone_number.

When: When the user asks for a verification number.

get_sms

Poll an order for the code. Extracts the verification code automatically.

When: For batch or cron jobs that manage their own polling.

wait_for_sms Agent

Block until the SMS lands on an existing order_id, or until timeout. WebSocket-backed, so no polling loop.

When: Default for interactive agent flows.

get_order

Full order detail plus every message received on the number.

When: When debugging or auditing a specific order.

list_orders

Your active orders. Essential for crash recovery.

When: When the agent needs live state of in-flight orders.

order_history

Past orders with status, service, country, and date filters.

When: When the user asks about past activity.

cancel_order

Cancel and refund, if no SMS arrived. 120s cooldown after purchase.

When: When the SMS times out.

cancel_all_orders

Bulk-cancel every active order. Refunds where eligible.

When: For end-of-session cleanup across many orders.

swap_number Agent

Swap for a new number, same service and country, no extra charge. 120s cooldown.

When: When the current number is flagged or rate-limited.

Rentals 9 tools
rentals_pricing

Full Access pricing tiers: durations and prices.

When: When quoting a rental before committing spend.

rentals_available

Countries with rental stock, counts, and pricing, per tier.

When: First call when renting. Confirms real stock.

rentals_services

Services available for Platform-tier rental in a country, with stock and price.

When: When the rental must be locked to one service.

rentals_price

Retail price for a service, country, and duration combination.

When: When pricing an exact rental configuration.

create_rental

Rent a number. Check availability and price first.

When: When the user needs one number for days, not one code.

list_rentals

Your rentals across both tiers, filterable by status.

When: When the agent needs live state of active rentals.

get_rental

Full detail for one rental: tier, number, service lock, status, expiry, SMS.

When: When reading messages on a rented number.

extend_rental

Extend an active rental. Charges the current catalog price.

When: When a rental is about to expire and is still in use.

cancel_rental

Full refund, within 20 minutes of purchase and before any SMS.

When: When a rental was bought by mistake.

Proxy 10 tools
list_proxy_catalog

Pool types, countries, and price per GB. Pools sold: datacenter, residential, mobile.

When: First call when buying a proxy.

list_proxy_locations

Cities, states, ASNs, or ZIPs for a pool type plus country. No purchase required.

When: When planning geo-targeting before spending.

buy_proxy

Purchase proxy traffic in GB. Returns credentials and remaining balance.

When: When the agent needs an IP in the number's country.

list_proxies

Your proxies with remaining GB and credentials. Returns proxy_id values.

When: When reusing a proxy you already own.

generate_proxy_endpoint Agent

Build a ready-to-use connection string: country, state, city, ZIP or ASN targeting, rotating or sticky, HTTP or SOCKS5.

When: When wiring a proxy into a browser or HTTP client.

rotate_proxy

Request a fresh exit IP for an existing proxy.

When: When the current exit IP gets blocked.

test_proxy

Prove a proxy works. Reports exit IP, country, city, ISP, and latency.

When: Before trusting a proxy in a real signup flow.

get_proxy_usage

Cached GB used and remaining, plus request count, for one proxy.

When: When checking headroom before a long run.

get_proxy_usage_history

Per-day traffic and request series over the last 7 or 30 days.

When: For usage reporting and cost attribution.

set_proxy_targeting

Persist a default geo-targeting on a proxy sub-user.

When: When every request from a sub-user should share one geo.

Other 3 tools
retry_order

Ask for the SMS to be resent to the same number. Not all order types support it.

When: When the code never arrived but the number is still good.

check_number Agent

Carrier and line-type lookup for any E.164 number: mobile, landline or VoIP, plus spam risk. No API key required.

When: When screening a number before you trust it.

start_manual_registration_session Agent beta

Private cloud browser sessions (beta, invite-only). Start a country-matched cloud browser and drive it yourself in a live viewer. Join for beta access and updates.

When: When a signup needs a guided browser session you drive yourself.

When to pick which: use wait_for_sms for interactive flows; use get_sms for batch or cron jobs.

Talk to your agent naturally

Same prompts work in Claude Desktop, Claude Code, Cursor, Windsurf, OpenClaw, Codex, Hermes, Cline, Zed, and Continue.dev.

Balance & account
  • What's my VirtualSMS balance?
  • Show my last 10 activations and total spend this month.
  • Pull my VirtualSMS profile: tier, referral code, created_at.
Pricing & research
  • Which country has the cheapest WhatsApp verification right now?
  • Compare Telegram verification price across UK, Germany and Poland.
  • Find me the cheapest country for Discord verification under $0.80.
Ordering
  • Buy me a German number for WhatsApp verification.
  • Order a US Telegram number under $1 and wait for the SMS code.
  • Grab 5 UK numbers for Instagram, one per account.
  • Rent me a British number for 7 days.
  • Buy a UK proxy to match my UK number, then give me the connection string.
Operations
  • Cancel every VirtualSMS order older than 15 minutes.
  • Swap my current Telegram number, the last one got rate-limited.
  • Show all my active orders with the numbers and services.
Developer workflows
  • Write a Python script that orders a US WhatsApp number and polls for the code using virtualsms-mcp.
  • I built this integration against sms-activate. Here's the code. Rewrite it to call VirtualSMS tools via MCP.

Production-ready infrastructure

Published on npm

virtualsms-mcp on npm - install with npx, auto-updated on each agent restart.

npmjs.com/package/virtualsms-mcp ›

Open source, MIT-licensed

Source on GitHub. Read, fork, vendor, or open a PR. Bearer API key over TLS; 120 req/min default.

github.com/virtualsms-io/mcp-server ›

Same infra as the REST API

MCP calls hit the same backend that powers the VirtualSMS dashboard and SDKs. No new stack, no experimental path.

MCP clients

Tested with 10 clients

One npx virtualsms-mcp package, same config block in every client below.

What makes VirtualSMS MCP different

Dedicated inventory plus a carrier-vetted global supplier network, exposed to your agents directly through MCP.

Real physical SIM cards, not VoIP

The numbers are carrier-issued mobile numbers, backed by real physical SIM cards, not VoIP. WhatsApp, Telegram, Google and Discord accept them. VoIP pools do not pass their line-type checks.

40 tools across four jobs

40 tools across four jobs. Verification, rentals, proxies and utilities in one server. find_cheapest, search_services, swap_number and wait_for_sms are built for agent workflows, not REST-wrapped dashboards.

Rentals and matching-country proxies on the same account

Keep a number by the day: Full Access rentals run 1, 7 or 30 days for a number that works across any service; Platform rentals run 1, 3 or 7 days locked to one service. Both refund in full within 20 minutes of purchase and before the first SMS. And a matching-country proxy from the same balance keeps the number and the IP in agreement. One MCP server, the whole verification stack.

Typed inputs and named tools that read like English

find_cheapest service=whatsapp is guessable. create_order service=telegram country=gb max_price=1.00 reads itself. Agents call them correctly on the first try.

Same $0.05+ activation price as the REST API

No MCP premium. Tool calls bill the same as every other surface. Swap to the REST API or SDK at any time with zero data migration.

Private cloud browser sessions (beta)

Private cloud browser sessions (beta, invite-only). Start a country-matched cloud browser and drive it yourself in a live viewer. Join for beta access and updates .

FAQ

Frequently asked questions

What is account verification infrastructure?

Account verification infrastructure is the stack that gets a real account through a signup flow that demands a phone number. It has five layers, and a gap in any one fails the whole chain: a carrier-issued mobile number, the SMS code readable by software, a proxy IP in the same country as the number, a clean browser to drive the signup, and the automation that runs the chain end to end. Most providers sell the first two layers and leave you to source the rest, which is exactly where the number, the IP and the browser stop telling the same story. VirtualSMS provides the infrastructure behind all five.

How do AI agents receive OTP codes automatically?

Two tool calls. create_order buys a number for a given service and country and returns an order_id. wait_for_sms then blocks on that order_id and returns the moment the code arrives, pushed over WebSocket, typically in 2 to 15 seconds. The agent never polls, never sleeps in a loop, and never needs a human to read a phone. If you would rather drive your own loop, get_sms polls a single order.

What is MCP and how does VirtualSMS use it?

MCP (Model Context Protocol) is an open spec by Anthropic that lets AI agents call external tools securely. VirtualSMS ships a signed npm package, virtualsms-mcp, that exposes 40 tools for verification, rentals and proxies to any MCP-compatible agent (18 activation & account | 9 rentals | 10 proxy | 3 other). The agent asks your question, the MCP server talks to our API, and verification codes land back in chat.

Which AI assistants support the VirtualSMS MCP server?

Claude Desktop, Claude Code (CLI), Cursor, Windsurf, OpenClaw, Codex (OpenAI CLI), Hermes, Cline (VS Code), Zed, Continue.dev, and any other client that implements the Model Context Protocol stdio transport. The same config block works everywhere (Codex uses TOML, the rest use JSON).

Does this work with ChatGPT?

Yes. ChatGPT supports MCP via Developer Mode custom connectors (hosted MCP, streamable-HTTP/SSE, plan-gated to Plus/Pro/Business/Enterprise). Add https://mcp.virtualsms.io/mcp as a connector. The REST API is also available.

Do I need to install anything locally?

One step: npm install -g virtualsms-mcp (or let npx install it on first use). That's it. The AI client spawns the server with npx. You never run it manually.

Does using MCP cost extra?

No. Tool calls bill identically to REST API or dashboard usage. Verifications start at $0.05. The MCP server itself is free and MIT-licensed.

Is SMS content logged?

Verification codes and metadata are retained for 7 days so get_sms and get_order stay idempotent, then auto-purged. Codes are never shared, sold, or indexed. Cancel an order and the record is purged immediately.

Can I use this in commercial agent products?

Yes. The MCP server is MIT-licensed and the VirtualSMS API terms permit commercial use. Resellers and agent-platform operators are common.

What's the rate limit on MCP tool calls?

120 requests per minute per API key by default. That handles every normal interactive-agent workflow. Need more? Email support. We raise limits for production accounts.

How is the MCP server different from your REST API or SDKs?

Same API under the hood. MCP is just the right surface for AI agents: tool descriptions, typed inputs, streaming results. Use the SDK when you want imperative code, use MCP when the caller is an AI.

How many tools does VirtualSMS MCP expose?

40 tools spanning verification, rentals and proxies (18 activation & account | 9 rentals | 10 proxy | 3 other). Private cloud browser sessions via start_manual_registration_session are beta and invite-only - join https://t.me/VirtualSMS_io for access. Setting VIRTUALSMS_ENABLE_SESSIONS=1 exposes 3 more browser-session tools. The count is derived from the tool registry, not typed into the page.

Which MCP transport and spec version do you support?

Both stdio (local Node install) and StreamableHTTP (zero-install hosted at https://mcp.virtualsms.io/mcp). MCP 0.1+ spec. Pick whichever fits your workflow.

Connect your agent in under two minutes

Paste the config, create a free API key, ask for a balance, done.

MIT-licensed · 120 req/min · Same price as REST API

Run a blog, tool list, or Telegram channel? Earn up to 15% lifetime commission.

Become an affiliate