virtualsms-mcp 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +61 -32
- package/ROADMAP.md +6 -0
- package/package.json +21 -7
package/README.md
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
|
-
# VirtualSMS MCP Server
|
|
1
|
+
# VirtualSMS MCP Server — SMS Verification for AI Agents
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://www.npmjs.com/package/virtualsms-mcp)
|
|
4
|
+
[](./LICENSE)
|
|
5
|
+
[](https://github.com/virtualsms-io/mcp-server)
|
|
4
6
|
|
|
5
|
-
**
|
|
7
|
+
**VirtualSMS MCP Server** is a [Model Context Protocol](https://modelcontextprotocol.io) server that gives AI agents access to a complete SMS verification API. Get a virtual phone number, receive SMS online, and extract verification codes — all without leaving your AI workflow.
|
|
8
|
+
|
|
9
|
+
Powered by [VirtualSMS.io](https://virtualsms.io) — a phone verification service running on own infrastructure across 200+ countries.
|
|
6
10
|
|
|
7
11
|
---
|
|
8
12
|
|
|
@@ -22,6 +26,35 @@ Get your API key at [virtualsms.io](https://virtualsms.io).
|
|
|
22
26
|
|
|
23
27
|
---
|
|
24
28
|
|
|
29
|
+
## What is VirtualSMS?
|
|
30
|
+
|
|
31
|
+
[VirtualSMS.io](https://virtualsms.io) is a **temporary phone number API** for SMS verification. Unlike resellers that aggregate other providers, VirtualSMS operates its own modem infrastructure — giving you direct access to real SIM cards across 200+ countries.
|
|
32
|
+
|
|
33
|
+
Use it to verify accounts on WhatsApp, Telegram, Google, Instagram, and 500+ other services — programmatically, via API or MCP.
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Why VirtualSMS?
|
|
38
|
+
|
|
39
|
+
- **Own infrastructure** — Not a reseller. Real SIM cards on our own hardware.
|
|
40
|
+
- **200+ countries** — Find the cheapest number for any service worldwide.
|
|
41
|
+
- **Real-time delivery** — WebSocket push means your agent gets the code in seconds, not minutes.
|
|
42
|
+
- **Competitive pricing** — Starting from $0.02 per number.
|
|
43
|
+
- **Simple REST + WebSocket API** — Clean, documented, agent-friendly.
|
|
44
|
+
- **11 MCP tools** — Everything from price discovery to one-step code retrieval.
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Migrating from SMS-Activate or DaisySMS?
|
|
49
|
+
|
|
50
|
+
If you're moving away from **SMS-Activate** or **DaisySMS** (closing March 2025), VirtualSMS is a straightforward alternative with comparable service coverage, competitive pricing, and a modern API built for programmatic use.
|
|
51
|
+
|
|
52
|
+
Just swap your API key and update the base URL — the concepts (buy number → wait for SMS → get code) are identical.
|
|
53
|
+
|
|
54
|
+
👉 [Sign up at VirtualSMS.io](https://virtualsms.io) and get started in minutes.
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
25
58
|
## Configuration
|
|
26
59
|
|
|
27
60
|
### Claude Desktop
|
|
@@ -82,7 +115,7 @@ list_services()
|
|
|
82
115
|
```
|
|
83
116
|
|
|
84
117
|
#### `list_countries`
|
|
85
|
-
Get all available countries for
|
|
118
|
+
Get all available countries for phone verification.
|
|
86
119
|
|
|
87
120
|
```
|
|
88
121
|
list_countries()
|
|
@@ -137,7 +170,7 @@ Optional `status` filter: `"pending"`, `"sms_received"`, `"cancelled"`, `"comple
|
|
|
137
170
|
### Order Management Tools (API key required)
|
|
138
171
|
|
|
139
172
|
#### `buy_number`
|
|
140
|
-
Purchase a virtual phone number.
|
|
173
|
+
Purchase a virtual phone number for a specific service and country.
|
|
141
174
|
|
|
142
175
|
```
|
|
143
176
|
buy_number(service: "telegram", country: "US")
|
|
@@ -145,7 +178,7 @@ buy_number(service: "telegram", country: "US")
|
|
|
145
178
|
```
|
|
146
179
|
|
|
147
180
|
#### `check_sms`
|
|
148
|
-
Check if an SMS code has arrived
|
|
181
|
+
Check if an SMS verification code has arrived.
|
|
149
182
|
|
|
150
183
|
```
|
|
151
184
|
check_sms(order_id: "abc123")
|
|
@@ -184,28 +217,35 @@ On timeout, returns `order_id` for recovery:
|
|
|
184
217
|
|
|
185
218
|
---
|
|
186
219
|
|
|
220
|
+
|
|
221
|
+
## Number Rentals (Coming Soon)
|
|
222
|
+
|
|
223
|
+
Need to keep the same phone number for days or weeks? VirtualSMS supports **number rentals** for recurring verifications — perfect for long-running automations, dev testing, and accounts that require re-verification with the same number.
|
|
224
|
+
|
|
225
|
+
Rental tools (`rent_number`, `extend_rental`, `list_rentals`) are coming in v1.1. See the [Roadmap](./ROADMAP.md).
|
|
226
|
+
|
|
187
227
|
## How It Works
|
|
188
228
|
|
|
189
229
|
### WebSocket vs Polling
|
|
190
230
|
|
|
191
231
|
`wait_for_code` uses a two-tier delivery system:
|
|
192
232
|
|
|
193
|
-
1. **WebSocket (instant)** — connects to `wss://virtualsms.io/ws/orders?order_id=xxx` immediately after
|
|
233
|
+
1. **WebSocket (instant)** — connects to `wss://virtualsms.io/ws/orders?order_id=xxx` immediately after purchase. When the SMS arrives, the server pushes it in real-time. Typical delivery: 2–15 seconds.
|
|
194
234
|
|
|
195
|
-
2. **Polling fallback** — if WebSocket fails to connect or disconnects, automatically falls back to polling `GET /api/v1/order/{id}` every 5 seconds.
|
|
235
|
+
2. **Polling fallback** — if WebSocket fails to connect or disconnects, automatically falls back to polling `GET /api/v1/order/{id}` every 5 seconds.
|
|
196
236
|
|
|
197
237
|
The `delivery_method` field in the response tells you which was used.
|
|
198
238
|
|
|
199
239
|
### Architecture
|
|
200
240
|
|
|
201
241
|
```
|
|
202
|
-
AI Agent (Claude/Cursor)
|
|
242
|
+
AI Agent (Claude / Cursor / any MCP client)
|
|
203
243
|
│
|
|
204
244
|
▼ MCP stdio protocol
|
|
205
245
|
VirtualSMS MCP Server (this package)
|
|
206
246
|
│
|
|
207
247
|
├──► REST API: https://virtualsms.io/api/v1/
|
|
208
|
-
│ buy_number, check_sms, cancel_order,
|
|
248
|
+
│ buy_number, check_sms, cancel_order, get_balance ...
|
|
209
249
|
│
|
|
210
250
|
└──► WebSocket: wss://virtualsms.io/ws/orders
|
|
211
251
|
real-time SMS push delivery
|
|
@@ -215,7 +255,7 @@ VirtualSMS MCP Server (this package)
|
|
|
215
255
|
|
|
216
256
|
## Typical Workflows
|
|
217
257
|
|
|
218
|
-
### Simple: Get a Telegram code
|
|
258
|
+
### Simple: Get a Telegram verification code
|
|
219
259
|
```
|
|
220
260
|
wait_for_code(service: "telegram", country: "US")
|
|
221
261
|
```
|
|
@@ -231,35 +271,24 @@ wait_for_code(service: "telegram", country: "PK")
|
|
|
231
271
|
```
|
|
232
272
|
buy_number(service: "google", country: "GB")
|
|
233
273
|
# → order_id: "abc123", phone: "+447911123456"
|
|
234
|
-
|
|
235
|
-
# Use the phone number to trigger the SMS...
|
|
236
|
-
|
|
274
|
+
# Use the number to trigger the SMS, then:
|
|
237
275
|
check_sms(order_id: "abc123")
|
|
238
|
-
#
|
|
239
|
-
cancel_order(order_id: "abc123")
|
|
276
|
+
# or cancel if no longer needed:
|
|
277
|
+
cancel_order(order_id: "abc123")
|
|
240
278
|
```
|
|
241
279
|
|
|
242
280
|
---
|
|
243
281
|
|
|
244
282
|
## Crash Recovery
|
|
245
283
|
|
|
246
|
-
If your
|
|
284
|
+
If your session is interrupted mid-verification:
|
|
247
285
|
|
|
248
|
-
1. **Restart the MCP server**
|
|
249
|
-
2. **List active orders:**
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
```
|
|
253
|
-
3. **Check for codes:**
|
|
254
|
-
```
|
|
255
|
-
check_sms(order_id: "abc123")
|
|
256
|
-
```
|
|
257
|
-
4. **Cancel if no longer needed:**
|
|
258
|
-
```
|
|
259
|
-
cancel_order(order_id: "abc123")
|
|
260
|
-
```
|
|
286
|
+
1. **Restart the MCP server**
|
|
287
|
+
2. **List active orders:** `active_orders(status: "pending")`
|
|
288
|
+
3. **Check for codes:** `check_sms(order_id: "abc123")`
|
|
289
|
+
4. **Cancel if not needed:** `cancel_order(order_id: "abc123")`
|
|
261
290
|
|
|
262
|
-
|
|
291
|
+
`wait_for_code` always returns `order_id` even on timeout — use it to recover.
|
|
263
292
|
|
|
264
293
|
---
|
|
265
294
|
|
|
@@ -267,4 +296,4 @@ The `wait_for_code` tool always returns `order_id` even on timeout — this is y
|
|
|
267
296
|
|
|
268
297
|
MIT — See [LICENSE](./LICENSE)
|
|
269
298
|
|
|
270
|
-
Built with ❤️ by [VirtualSMS.io](https://virtualsms.io)
|
|
299
|
+
Built with ❤️ by [VirtualSMS.io](https://virtualsms.io) — virtual phone numbers for SMS verification, built on own infrastructure.
|
package/ROADMAP.md
CHANGED
|
@@ -46,3 +46,9 @@ Current version: **v1.0.0** — Core tools, WebSocket delivery, crash recovery.
|
|
|
46
46
|
- **Rental numbers** — keep a number for days or weeks (not just one-time verification).
|
|
47
47
|
- **Number recycling preferences** — opt out of recycled numbers for higher success rates.
|
|
48
48
|
- **Operator filtering** — prefer specific carriers per country for higher deliverability.
|
|
49
|
+
|
|
50
|
+
### Rental Tools (v1.1)
|
|
51
|
+
- `rent_number` — Rent a number for days/weeks for recurring verifications
|
|
52
|
+
- `extend_rental` — Extend an active rental period
|
|
53
|
+
- `list_rentals` — List active number rentals
|
|
54
|
+
- `rental_sms` — Check SMS received on a rented number
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "virtualsms-mcp",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "MCP server for VirtualSMS — receive SMS verification codes with AI agents",
|
|
3
|
+
"version": "1.0.2",
|
|
4
|
+
"description": "MCP server for VirtualSMS — receive SMS verification codes with AI agents. Virtual phone numbers and number rentals for WhatsApp, Telegram, Google & 200+ services. SMS-Activate & DaisySMS alternative.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
7
7
|
"virtualsms-mcp": "dist/index.js"
|
|
@@ -14,22 +14,36 @@
|
|
|
14
14
|
},
|
|
15
15
|
"keywords": [
|
|
16
16
|
"mcp",
|
|
17
|
+
"mcp-server",
|
|
18
|
+
"model-context-protocol",
|
|
17
19
|
"sms",
|
|
18
|
-
"verification",
|
|
20
|
+
"sms-verification",
|
|
21
|
+
"sms-activate",
|
|
19
22
|
"virtual-number",
|
|
23
|
+
"virtual-phone-number",
|
|
20
24
|
"phone-verification",
|
|
21
|
-
"sms
|
|
22
|
-
"
|
|
25
|
+
"receive-sms",
|
|
26
|
+
"ai-agent",
|
|
27
|
+
"claude",
|
|
28
|
+
"cursor",
|
|
29
|
+
"daisysms-alternative",
|
|
30
|
+
"temporary-phone-number",
|
|
31
|
+
"whatsapp-verification",
|
|
32
|
+
"telegram-verification",
|
|
33
|
+
"virtualsms",
|
|
34
|
+
"phone-number-rental",
|
|
35
|
+
"long-term-virtual-number",
|
|
36
|
+
"sms-rental"
|
|
23
37
|
],
|
|
24
38
|
"author": "VirtualSMS",
|
|
25
39
|
"license": "MIT",
|
|
26
40
|
"homepage": "https://virtualsms.io",
|
|
27
41
|
"repository": {
|
|
28
42
|
"type": "git",
|
|
29
|
-
"url": "https://github.com/virtualsms/mcp-server"
|
|
43
|
+
"url": "git+https://github.com/virtualsms-io/mcp-server.git"
|
|
30
44
|
},
|
|
31
45
|
"bugs": {
|
|
32
|
-
"url": "https://github.com/virtualsms/mcp-server/issues"
|
|
46
|
+
"url": "https://github.com/virtualsms-io/mcp-server/issues"
|
|
33
47
|
},
|
|
34
48
|
"engines": {
|
|
35
49
|
"node": ">=18"
|