VirtualSMS
Verificación de SMS con números de teléfono SIM físicos reales en más de 145 países y más de 2000 servicios para agentes de IA.
Documentación
VirtualSMS MCP Server
Enlaces rápidos: Inicio rápido · Por qué VirtualSMS · Lo que puedes construir · Herramientas · Preguntas · Ejemplos · Registro de cambios · Política de seguridad · Estado
VirtualSMS es una plataforma de verificación de cuentas para desarrolladores y agentes de IA. Combina verificación por SMS de un solo uso, alquiler de números dedicados, proxies de países coincidentes y sesiones privadas de navegador en la nube detrás de una única API, un único servidor MCP y un único saldo prepago.
Infraestructura para agentes de IA que necesitan verificación telefónica del mundo real.
Los números son números móviles emitidos por operadores, respaldados por tarjetas SIM físicas reales en redes de operadores, no VoIP, por lo que pasan las comprobaciones de tipo de línea que rechazan los números VoIP al registrarse.
Desde un único saldo prepago puedes:
- recibir códigos SMS de un solo uso desde $0.05
- alquilar números dedicados de 1 a 30 días
- comprar proxies residenciales, móviles y de centro de datos del país coincidente
- lanzar sesiones privadas de navegador en la nube que funcionan junto a tu número y proxy (beta)
Los cuatro funcionan juntos desde un único saldo prepago, una única API y un único panel de control. Usa solo las piezas que necesites o combínalas en un único flujo de verificación.
La mayoría de los proveedores resuelven una sola parte del flujo de verificación. VirtualSMS combina números, alquileres, proxies y sesiones de navegador en la nube detrás de una única API, SDK y un servidor MCP, para que uses solo las piezas que necesites o las combines en un único flujo de trabajo.
VirtualSMS puede ser utilizado manualmente por individuos, integrarse en aplicaciones con SDK y API, o ser impulsado por agentes de IA a través de MCP. Usa la plataforma a través de una API REST, SDK oficiales para Node, Python, PHP, Ruby y .NET, un servidor MCP alojado, o herramientas de automatización como n8n.
Este servidor expone esa plataforma a cualquier cliente MCP. Construido para agentes de IA. Diseñado para flujos de trabajo agénticos. Funciona con Claude Code, Claude Desktop, Cursor, Windsurf y cualquier cliente compatible con MCP, sin necesidad de escribir código envoltorio.
Inicio rápido
Pega esto en la configuración de tu cliente MCP. Nada que instalar, no se requiere Node.js en el cliente:
{
"mcpServers": {
"virtualsms": {
"type": "streamableHttp",
"url": "https://mcp.virtualsms.io/mcp",
"headers": {
"x-api-key": "vsms_your_api_key_here"
}
}
}
}
Obtén una clave de API en virtualsms.io. Luego pregúntale a tu agente:
"Cómprame un número de Telegram en el país más barato y espera el código."
¿Prefieres ejecutarlo localmente con stdio?:
npx virtualsms-mcp
Por qué VirtualSMS
Verificar una cuenta no debería significar unir números de un proveedor, proxies de otro y sesiones de navegador de un tercero: múltiples cuentas, múltiples saldos y APIs, y soporte distribuido entre proveedores. VirtualSMS reúne esas piezas detrás de un único saldo, una única API y un único servidor MCP.
VirtualSMS combina los tres bajo una sola cuenta y te da una sola forma de manejarlos:
- Números móviles emitidos por operadores. Respaldados por tarjetas SIM físicas reales, no VoIP, por lo que se resuelven como móviles al registrarse.
- Proxies del país coincidente. Grupos residenciales, móviles y de centro de datos, para que el número y la IP coincidan.
- Sesiones privadas de navegador en la nube. Beta.
- API REST. Documentada en virtualsms.io/docs.
- Servidor MCP alojado. Este repositorio, en vivo en
https://mcp.virtualsms.io/mcp. - Un único saldo prepago. La verificación, los alquileres y los proxies se cargan a este saldo.
Todo lo siguiente amplía esos seis puntos.
Lo que puedes construir
Trabajos concretos que este servidor hace hoy. Cada uno es una solicitud en lenguaje natural que tu agente convierte en llamadas a herramientas:
| Quieres | Pídele a tu agente | Herramientas que usa |
|---|---|---|
| Verificar una cuenta de WhatsApp desde Claude Code | "Consígueme un código de WhatsApp en un número del Reino Unido" | create_order → wait_for_sms |
| Crear una cuenta de Telegram desde Cursor | "Cómprame un número de Telegram en el país más barato y espera el código" | find_cheapest → create_order → wait_for_sms |
| Recuperar códigos de verificación automáticamente | "Espera el código y pégalo en el formulario" | wait_for_sms |
| Probar flujos OTP durante el control de calidad | "Ejecuta el flujo de registro diez veces e informa qué códigos llegaron" | create_order → wait_for_sms → cancel_order |
| Aprovisionar números temporales durante CI | "Dale al conjunto de pruebas un número nuevo y luego libéralo" | create_order → get_sms → cancel_order |
| Mantener un número durante una semana | "Alquílame un número británico por 7 días" | rentals_available → create_rental |
| Hacer que el número y la IP coincidan | "Cómprame un proxy del Reino Unido para que coincida con mi número del Reino Unido" | list_proxy_catalog → buy_proxy → generate_proxy_endpoint |
| Verificar un número antes de confiar en él | "¿Es este número VoIP?" | check_number (no se requiere clave de API) |
| Recuperar un número que quedó en silencio | "Ese número nunca recibió el código, cámbialo" | swap_number |
Las versiones ejecutables de los dos primeros se encuentran en examples/.
Configuración del cliente
Cada cliente ejecuta el mismo comando stdio npx virtualsms-mcp. Solo cambian la ubicación y el formato del archivo. La configuración alojada anterior funciona en cualquier lugar donde se admita streamableHttp y es la ruta recomendada.
Claude Desktop
Edita ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) o %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"virtualsms": {
"command": "npx",
"args": ["virtualsms-mcp"],
"env": {
"VIRTUALSMS_API_KEY": "vsms_your_api_key_here"
}
}
}
}
Cierra y vuelve a abrir Claude Desktop. Una configuración lista para usar más una transcripción de ejemplo se encuentra en examples/03-claude-desktop-config/.
Claude Code, Cursor, Windsurf, OpenClaw, Codex, Hermes, Cline, Zed, Continue.dev
Claude Code (CLI)
claude mcp add --scope user virtualsms npx virtualsms-mcp -e VIRTUALSMS_API_KEY=vsms_your_api_key_here
Cursor
Edita ~/.cursor/mcp.json:
{
"mcpServers": {
"virtualsms": {
"command": "npx",
"args": ["virtualsms-mcp"],
"env": {
"VIRTUALSMS_API_KEY": "vsms_your_api_key_here"
}
}
}
}
Windsurf
Edita ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"virtualsms": {
"command": "npx",
"args": ["virtualsms-mcp"],
"env": {
"VIRTUALSMS_API_KEY": "vsms_your_api_key_here"
}
}
}
}
OpenClaw
Edita ~/.openclaw/mcp.json:
{
"mcpServers": {
"virtualsms": {
"command": "npx",
"args": ["virtualsms-mcp"],
"env": {
"VIRTUALSMS_API_KEY": "vsms_your_api_key_here"
}
}
}
}
Codex (OpenAI Codex CLI)
Edita ~/.codex/config.toml:
[mcp_servers.virtualsms]
command = "npx"
args = ["virtualsms-mcp"]
env = { VIRTUALSMS_API_KEY = "vsms_your_api_key_here" }
Hermes
Edita tu configuración MCP de Hermes:
{
"mcpServers": {
"virtualsms": {
"command": "npx",
"args": ["virtualsms-mcp"],
"env": {
"VIRTUALSMS_API_KEY": "vsms_your_api_key_here"
}
}
}
}
Cline (VS Code)
Abre el panel de configuración MCP de Cline y añade:
{
"virtualsms": {
"command": "npx",
"args": ["virtualsms-mcp"],
"env": {
"VIRTUALSMS_API_KEY": "vsms_your_api_key_here"
}
}
}
Zed
Edita ~/.config/zed/settings.json:
{
"context_servers": {
"virtualsms": {
"command": {
"path": "npx",
"args": ["virtualsms-mcp"],
"env": {
"VIRTUALSMS_API_KEY": "vsms_your_api_key_here"
}
}
}
}
}
Continue.dev
Edita ~/.continue/config.yaml:
mcpServers:
- name: virtualsms
command: npx
args:
- virtualsms-mcp
env:
VIRTUALSMS_API_KEY: vsms_your_api_key_here
¿Funciona esto con ChatGPT?
Sí, a través del Modo Desarrollador de ChatGPT. Abre Configuración, activa el modo Desarrollador y luego añade https://mcp.virtualsms.io/mcp como conector personalizado (planes Plus, Pro, Business, Enterprise y Edu; no disponible en el nivel gratuito). La configuración es pegar una URL en lugar de un archivo de configuración, por lo que difiere de las configuraciones de cliente anteriores. ChatGPT solo se conecta a servidores MCP remotos a través de SSE o HTTP en streaming, así que usa el endpoint alojado, no el comando stdio local. La API REST sigue disponible si prefieres crear un GPT personalizado o una Action en su lugar.
Configuración
| Variable | Requerida | Predeterminado | Descripción |
|---|---|---|---|
VIRTUALSMS_API_KEY | Sí, para herramientas de cuenta | ninguno | Tu clave de API de VirtualSMS. Las claves llevan un prefijo vsms_ |
VIRTUALSMS_BASE_URL | No | https://virtualsms.io | URL base de la API |
VIRTUALSMS_ENABLE_SESSIONS | No | apagado | Sirve 3 herramientas adicionales de control de sesión cuando se establece en 1, true o yes. Desactivado por defecto |
VIRTUALSMS_ENABLE_RELEASE | No | apagado | Sirve la herramienta de alquiler en lanzamiento temprano cuando se establece en 1, true o yes. Desactivado por defecto mientras se determinan sus términos de reembolso |
Herramientas
40 herramientas por defecto. Establece VIRTUALSMS_ENABLE_SESSIONS=1 para exponer 3 más.
Los nombres de las herramientas se muestran a continuación sin el prefijo virtualsms_ para mayor legibilidad. Los nombres reales en el cable tienen prefijo: virtualsms_create_order, virtualsms_get_sms, y así sucesivamente.
Activación y cuenta (18 herramientas)
La superficie principal de verificación por SMS: descubre un servicio, cotízalo, compra un número, obtén el código.
| Herramienta | Autenticación | Descripción |
|---|---|---|
list_services | Sí | Todos los servicios de verificación disponibles. Filtro opcional search |
list_countries | Sí | Todos los países disponibles. Filtro opcional service |
get_price | No | Precio y disponibilidad para un par de servicio y país |
find_cheapest | No | Países más baratos para un servicio, ordenados por precio, con recuentos reales de stock |
search_services | Sí | Búsqueda de servicios en lenguaje natural. "telega" encuentra Telegram |
get_balance | Sí | Saldo de la cuenta en USD |
get_profile | Sí | Correo electrónico, enlace de Telegram, saldo, gasto de por vida, pedidos totales, claves API activas |
get_stats | Sí | Pedidos, tasa de éxito, gasto y desglose por estado/servicio/país |
get_transactions | Sí | Historial de transacciones con tipo, rango de fechas y filtros de paginación |
create_order | Sí | Compra un número para un servicio y país. Devuelve order_id y phone_number |
get_sms | Sí | Consulta un pedido para obtener el código. Úsalo para trabajos por lotes y cron |
wait_for_sms | Sí | Bloquea hasta que el SMS llegue a un order_id existente, o hasta el tiempo de espera |
get_order | Sí | Detalle completo del pedido más cada mensaje recibido |
list_orders | Sí | Tus pedidos activos. Esencial para la recuperación ante caídas |
order_history | Sí | Pedidos pasados con filtros de estado, servicio, país y fecha |
cancel_order | Sí | Cancela y reembolsa, si no llegó ningún SMS. Enfriamiento de 120s después de la compra |
cancel_all_orders | Sí | Cancelación masiva de todos los pedidos activos |
swap_number | Sí | Cambia por un número nuevo, mismo servicio y país, sin cargo adicional. Enfriamiento de 120s |
get_smsvswait_for_sms:wait_for_smses la opción recomendada por defecto para flujos de trabajo interactivos de agentes. Bloquea y regresa en el momento en que el SMS llega a través de WebSocket. Usaget_smspara trabajos por lotes, sondeo impulsado por cron, o cuando ya administras tu propio ciclo de sondeo.
wait_for_smstoma unorder_id, no un servicio y país. Llama acreate_orderprimero, luego pasa elorder_iddevuelto. Ese es el flujo de comprar y esperar en dos pasos.
Alquileres (9 herramientas)
Mantén un número por día en lugar de comprar una verificación única. Dos niveles:
- Acceso completo: inventario local de SIM, para un número completo que funciona con cualquier servicio. Cada país en stock hoy lista 1, 7 y 30 días, con precios que varían por país. Las duraciones y los precios no están codificados aquí a propósito: llama a
rentals_availablepara la lista en vivo por país y trátala como autoritativa. - Plataforma: obtenido a través de nuestra red global de proveedores, bloqueado a un servicio elegido, con duraciones de 1, 3 o 7 días. Llama a
rentals_pricepara el precio minorista exacto de una combinación (servicio, país, duración).
El stock, las duraciones y los precios difieren por nivel y por país, así que llama a rentals_available antes de comprometerte con cualquiera de los dos. Un alquiler activo se puede extender con extend_rental al precio actual del catálogo, en las mismas duraciones que permita su nivel.
Ambos niveles tienen los mismos términos de reembolso: cancela para un reembolso completo dentro de los 20 minutos posteriores a la compra y antes de que llegue el primer SMS. Las cancelaciones de plataforma están además sujetas a una retención mínima de 2 minutos, por lo que una cancelación dentro de los primeros 2 minutos es rechazada y debe reintentarse.
| Herramienta | Autenticación | Descripción |
|---|---|---|
rentals_pricing | Sí | Niveles de precios de Full Access: duraciones y precios |
rentals_available | Sí | Países con stock de alquiler, cantidades y precios, por nivel |
rentals_services | Sí | Servicios disponibles para alquiler de nivel Platform en un país, con stock y precio |
rentals_price | Sí | Precio minorista para una combinación de servicio, país y duración |
create_rental | Sí | Alquila un número. Comprueba disponibilidad y precio primero |
list_rentals | Sí | Tus alquileres en ambos niveles, filtrables por estado |
get_rental | Sí | Detalle completo de un alquiler: nivel, número, bloqueo de servicio, estado, vencimiento, SMS |
extend_rental | Sí | Extiende un alquiler activo. Cobra el precio actual del catálogo |
cancel_rental | Sí | Reembolso completo, dentro de los 20 minutos posteriores a la compra y antes de cualquier SMS |
Proxy (10 herramientas)
Proxies del país correspondiente, para que el número y la IP coincidan. Tres grupos: residencial, móvil y centro de datos. Compra tráfico por GB y luego genera una cadena de conexión.
| Herramienta | Autenticación | Descripción |
|---|---|---|
list_proxy_catalog | Sí | Tipos de grupo, países y precio por GB. Empieza aquí |
list_proxy_locations | No | Ciudades, estados, ASN o códigos postales para un tipo de grupo más país. No se requiere compra |
buy_proxy | Sí | Compra tráfico de proxy en GB. Devuelve credenciales y saldo restante |
list_proxies | Sí | Tus proxies con GB restante y credenciales. Devuelve valores de proxy_id |
generate_proxy_endpoint | Sí | Construye una cadena de conexión lista para usar: país, estado, ciudad, código postal o segmentación por ASN, rotativo o fijo, HTTP o SOCKS5 |
rotate_proxy | Sí | Solicita una IP de salida nueva para un proxy existente |
test_proxy | Sí | Demuestra que un proxy funciona. Informa de IP de salida, país, ciudad, ISP y latencia |
get_proxy_usage | Sí | GB en caché usados y restantes, más el recuento de solicitudes, para un proxy |
get_proxy_usage_history | Sí | Series de tráfico y solicitudes por día durante los últimos 7 o 30 días |
set_proxy_targeting | Sí | Persiste una geosegmentación predeterminada en un subusuario de proxy |
Otros (3 herramientas)
| Herramienta | Autenticación | Descripción |
|---|---|---|
retry_order | Sí | Solicita que se reenvíe el SMS al mismo número. No todos los tipos de pedido lo admiten |
check_number | No | Consulta de operador y tipo de línea para cualquier número E.164: móvil, fijo o VoIP, además del riesgo de spam |
start_manual_registration_session | Sí | Beta, solo con invitación. Inicia un navegador en la nube del país correspondiente que tú mismo controlas en un visor en vivo. La navegación dirigida por agente es una opción independiente (las herramientas de sesión). Únete a https://t.me/VirtualSMS_io para acceder a la beta |
Herramientas de sesión (3 más, desactivadas por defecto)
Beta, solo con invitación. La pila del navegador es temprana. Funciona, pero la forma de estas herramientas aún puede cambiar y no hay garantía de estabilidad todavía. Únete a https://t.me/VirtualSMS_io para acceder a la beta y recibir actualizaciones.
Se sirve solo cuando VIRTUALSMS_ENABLE_SESSIONS está configurado como 1, true o yes. No se expone en la superficie predeterminada.
| Herramienta | Descripción |
|---|---|
navigate_session | Navega una sesión de navegador activa a una URL |
session_viewer | URL del visor en vivo y estado actual de una sesión activa |
stop_session | Detiene una sesión de navegador activa y la libera |
Flujos de trabajo típicos
Obtener un código de verificación
create_order(service: "telegram", country: "US")
→ {order_id: "abc123", phone_number: "+14155552671", status: "pending"}
wait_for_sms(order_id: "abc123", timeout_seconds: 180)
→ {success: true, code: "12345", delivery_method: "websocket", elapsed_seconds: 8}
Encuentra primero el país más barato
find_cheapest(service: "telegram", limit: 3)
→ {cheapest_options: [{country: "PK", price_usd: 0.05, ...}]}
create_order(service: "telegram", country: "PK")
wait_for_sms(order_id: "abc123")
¿El número no recibe? Cámbialo
swap_number(order_id: "abc123")
→ {order_id: "def456", phone_number: "+628...", status: "waiting"}
Alquila un número por un mes
rentals_available(tier: "full_access")
→ countries holding local SIM stock, each with its own duration and price list
create_rental(tier: "full_access", country: "FR", duration_hours: 720)
→ {rental_id: "rnt_1", phone_number: "+33...", expires_in_days: 30}
El stock es por país y por nivel, así que primero descubre y luego alquila. rentals_available(tier: "platform") cubre un catálogo diferente, bloqueado por servicio.
Combina un número con un proxy del país correspondiente
list_proxy_catalog()
buy_proxy(pool_type: "residential", gb: 1, country_code: "GB")
generate_proxy_endpoint(proxy_id: "px_1", country_code: "GB", protocol: "socks5")
Preguntas
¿Qué es la infraestructura de verificación de cuentas?
La infraestructura de verificación de cuentas es la pila que lleva una cuenta real a través de un flujo de registro que exige un número de teléfono. Tiene cinco capas, y una brecha en cualquiera de ellas hace fallar toda la cadena:
- Números. Una línea móvil emitida por un operador, porque se comprueba el tipo de línea.
- SMS. El código de verificación, entregado a ese número y legible por software en lugar de por un humano sosteniendo un teléfono.
- Proxy. Una IP en el mismo país que el número, para que ambos coincidan.
- Navegador. Un entorno limpio para llevar a cabo el propio registro.
- Automatización. Una API o un agente que ejecuta la cadena de principio a fin, sin supervisión.
La mayoría de los proveedores venden las dos primeras capas y te dejan conseguir el resto, que es exactamente donde el número, la IP y el navegador dejan de contar la misma historia. VirtualSMS proporciona la infraestructura detrás de las cinco.
VirtualSMS es una plataforma de verificación de cuentas para individuos, desarrolladores y agentes de IA. Combina verificación SMS de un solo uso, alquiler de números dedicados, proxies del país correspondiente y sesiones privadas de navegador en la nube detrás de una API, un servidor MCP y un saldo prepagado.
¿Qué es un servidor MCP para verificación SMS?
MCP (Model Context Protocol) es un estándar abierto que permite a un cliente de IA llamar a herramientas externas. Un servidor MCP para verificación SMS expone operaciones de número de teléfono y código de verificación como herramientas que un agente puede llamar directamente, de modo que el agente compra el número, espera el código y lo lee sin ningún código de conexión por tu parte. Este repositorio es ese servidor para VirtualSMS: 40 herramientas que cubren verificación, alquileres y proxies. Si no estás manejando ningún agente, las mismas operaciones están disponibles como una API REST de verificación simple.
¿Cuándo debería usar esto?
- Tu agente de IA necesita iniciar sesión o registrar una cuenta que exige un número de teléfono.
- Estás probando un flujo de OTP o registro y quieres números nuevos bajo demanda en lugar de un cajón de SIM de prueba.
- Necesitas recuperar un código de verificación automáticamente, en CI o en un trabajo sin supervisión.
- Necesitas un número y una IP del país correspondiente que coincidan entre sí.
- Estás manejando automatización de registro en un navegador y prefieres que el número, la IP y el navegador vengan de un solo lugar en lugar de tres.
- Necesitas un número de teléfono temporal para un código, o uno dedicado que conservas hasta 30 días.
- Quieres precios por código desde $0.05 sin suscripción y sin alquiler mensual de número.
¿Cuándo NO debería usar esto?
Respuestas honestas, para que no pierdas una tarde:
- Necesitas enviar SMS. Esta plataforma recibe; no envía. Usa un proveedor de mensajería como Twilio.
- Necesitas un número permanente para tu negocio. Los números de verificación son temporales por diseño, y los alquileres duran días, no años. Compra una línea real a un operador.
- Necesitas códigos en un número que ya posees. No hay portabilidad. Los números provienen de nuestro inventario.
- Estás ejecutando campañas de marketing A2P. Herramienta completamente equivocada.
- Estás intentando evadir los términos de servicio de una plataforma. Que tu uso cumpla con los términos del servicio contra el que verificas es tu responsabilidad, no la nuestra.
¿Pueden Claude o Cursor recibir códigos de verificación SMS?
Sí, a través de este servidor. Claude Code, Claude Desktop, Cursor, Windsurf, Cline, Zed, Continue.dev, Codex, OpenClaw y Hermes son todos clientes MCP, y cada uno está a un pegado de configuración de distancia (consulta Configuración del cliente). Una vez instalado, «compra un número de Telegram y espera el código» es una solicitud que el agente puede llevar a cabo de principio a fin. ChatGPT también puede acceder, a través de conectores personalizados del Modo Desarrollador (consulta ¿Funciona esto con ChatGPT?), o a través de la API REST si prefieres no habilitar el Modo Desarrollador.
¿Cómo reciben los agentes de IA los códigos OTP automáticamente?
Dos llamadas a herramientas. create_order compra un número para un servicio y país determinados y devuelve un order_id. wait_for_sms se bloquea entonces en ese order_id y devuelve el resultado en el momento en que llega el código, enviado por WebSocket, normalmente en 2 a 15 segundos. El agente nunca sondea, nunca duerme en un bucle y nunca necesita que un humano lea un teléfono. Si prefieres manejar tu propio bucle, get_sms sondea un solo pedido en su lugar.
¿En qué se diferencia esto de Twilio?
Twilio es una plataforma de comunicaciones completa: enviar y recibir SMS y voz, números de larga duración, campañas A2P, todo. VirtualSMS hace un solo trabajo, que es recibir códigos de verificación bajo demanda. Las diferencias prácticas:
- Tipo de línea. Los números de Twilio son VoIP. Muchos servicios rechazan números VoIP en el registro. Los números de VirtualSMS son tarjetas SIM físicas reales en redes de operadores, por lo que se resuelven como móviles.
- Forma de precios. Twilio te cobra por un número cada mes, lo uses o no. VirtualSMS cobra por código desde $0.05, sin suscripción.
- Dirección. Twilio envía y recibe. Esto recibe.
Si necesitas enviar mensajes, usa Twilio. Si necesitas recibir un código de verificación, esto está construido específicamente para ello.
¿Por qué tarjetas SIM físicas reales en lugar de VoIP?
Los sistemas de verificación comprueban el tipo de línea del número que les das. Los números VoIP son baratos y desechables a escala, por lo que se correlacionan con el fraude, y una gran parte de los servicios los rechazan directamente en el registro. Las tarjetas SIM físicas reales están en redes de operadores y se resuelven como móviles, que es exactamente lo que buscan esas comprobaciones: un número no VoIP que se comporta como un teléfono real.
No tienes que creerlo sin más. check_number realiza una consulta de operador y tipo de línea en cualquier número E.164, no necesita clave de API, y te dirá si un número se lee como móvil, fijo o VoIP.
Alternativas y comparaciones
Los desarrolladores que buscan textverified mcp, sms-activate mcp, 5sim mcp, daisysms mcp o smspool mcp suelen hacer una pregunta: ¿qué proveedor de verificación SMS puede manejar un agente de IA de forma nativa? Esta sección responde eso sin un marcador.
VirtualSMS publica este servidor MCP, por lo que cualquier cliente MCP lo llama directamente sin código de envoltura: 40 herramientas, más de 2500 servicios, más de 145 países, desde $0.05 por código, en tarjetas SIM físicas reales, además de alquiler de números y proxies del país correspondiente desde el mismo saldo.
SMS-Activate cerró en diciembre de 2025. Si tu integración apuntaba allí, ya no existe, y la migración es una nueva clave de API y una nueva URL base en lugar de una reescritura: la forma del trabajo, comprar un número y luego leer el código, es la misma aquí.
TextVerified, 5SIM, DaisySMS y SMSPool son todos proveedores activos de verificación SMS, cada uno con su propia API, precios, cobertura y términos. Consulta su documentación actual para ver qué ofrecen hoy.
Deliberadamente no publicamos una tabla comparativa de precios, recuentos de servicios o cobertura de los competidores. Esos números cambian semana a semana, no tenemos una visión privilegiada del inventario de nadie más, y una tabla desactualizada disfrazada de investigación es peor que ninguna tabla. Los números de VirtualSMS anteriores son nuestros y los respaldamos. Compáralos con lo que estés usando ahora.
Cómo funciona
WebSocket y sondeo
wait_for_sms usa un sistema de entrega de dos niveles:
- WebSocket, instantáneo. Se conecta a
wss://virtualsms.io/ws/orders?order_id=xxx&api_key=your_key. Cuando llega el SMS, el servidor lo envía en tiempo real. Entrega típica: 2 a 15 segundos. - Respaldo de sondeo. Si el WebSocket no se conecta o se cae, la herramienta recurre al sondeo cada 5 segundos durante el tiempo de espera restante.
El campo delivery_method en la respuesta te indica qué ruta se usó: websocket, polling o instant cuando el código ya había llegado antes de que llamaras.
Este servidor envía a través de un WebSocket mantenido abierto; nunca te devuelve la llamada. Si prefieres que VirtualSMS envíe eventos POST a una URL que posees, la plataforma ejecuta un sistema separado de suscripción a webhooks, configurado desde el panel y manejado por la API REST en lugar de por este servidor MCP.
Arquitectura
AI Agent (Claude / Cursor / Codex / Windsurf / any MCP client)
│
▼ MCP (stdio or StreamableHTTP)
VirtualSMS MCP Server (this package)
│
├──► REST API: https://virtualsms.io/docs
│ create_order, get_sms, cancel_order, get_balance ...
│
└──► WebSocket: wss://virtualsms.io/ws/orders
real-time SMS push delivery
Recuperación ante fallos
Si tu sesión se interrumpe a mitad de la verificación:
- Reinicia el servidor MCP.
- Lista los pedidos activos:
list_orders(status: "pending") - Comprueba si hay códigos:
get_sms(order_id: "abc123") - Cancela si no es necesario:
cancel_order(order_id: "abc123")
wait_for_sms siempre devuelve order_id, incluso en caso de timeout, para que puedas recuperarte.
Endpoint alojado y estado
- Endpoint MCP alojado:
https://mcp.virtualsms.io/mcp. StreamableHTTP solo TLS, con Cloudflare al frente. - Estado y disponibilidad de la plataforma: virtualsms.io/status, consultado en vivo: sitio web y panel, pasarela SMS, API REST, bot de Telegram y base de datos. El endpoint MCP alojado se ejecuta como un servicio independiente y aún no aparece como fila en esa página.
- SLA objetivo: 99,9% en la ruta MCP alojada. Un objetivo que nos imponemos a nosotros mismos más que una garantía contractual, y que la página de estado anterior aún no mide.
- Cobertura: 145+ países en línea, 2500+ servicios indexados.
- Retención de datos: los cuerpos de los mensajes SMS se conservan durante 7 días y luego se eliminan permanentemente. Los metadatos de los pedidos (número de teléfono, servicio, país, marcas de tiempo) se conservan durante toda la vida de tu cuenta. Consulta SECURITY.md para más detalles.
- Divulgación de vulnerabilidades: envía un correo a
security@virtualsms.ioo abre un aviso de seguridad privado.
Ejemplos
En este repositorio hay tres ejemplos ejecutables. Cada uno está a node run.mjs de distancia una vez que se establece VIRTUALSMS_API_KEY.
examples/01-quick-balance-check/: prueba de humo MCP alojada de 5 segundos (get_balance).examples/02-buy-sms-and-wait-for-code/: flujo de verificación completo,find_cheapest→create_order→wait_for_sms→ cancelación por timeout. El patrón canónico para agentes de IA.examples/03-claude-desktop-config/: configuración de Claude Desktop lista para usar más una transcripción de "pregúntale a Claude cuál es mi saldo" a través de StreamableHTTP.
SDKs y herramientas
La misma plataforma, desde lo que ya uses para escribir:
| Repositorio | Qué es |
|---|---|
| node-sdk | SDK oficial de Node.js / TypeScript |
| python-sdk | SDK oficial de Python |
| virtualsms-php-sdk | SDK oficial de PHP |
| ruby-sdk | SDK oficial de Ruby |
| dotnet-sdk | SDK oficial de .NET |
| go-sdk | SDK oficial de Go |
| rust-sdk | SDK oficial de Rust |
| swift-sdk | SDK oficial de Swift |
| java-sdk | SDK oficial de Java |
| api-docs | Fuente de documentación de la API REST |
| examples | Ejemplos ejecutables en varios lenguajes |
| n8n-nodes-virtualsms | Nodos de la comunidad de n8n |
| automation-integrations | Integraciones con Make, Zapier y flujos de trabajo |
| virtual-number-checker | Herramienta de consulta de operador y tipo de línea |
| claude-skill-sms-verification | Habilidad de Claude para verificación por SMS |
| cursor-rules-sms-verification | Reglas de Cursor para verificación por SMS |
Compilar y contribuir
git clone https://github.com/virtualsms-io/mcp-server.git
cd mcp-server
npm install
npm run build # tsc
npm test # vitest
npx tsc --noEmit # typecheck only
Dos transportes comparten una misma tabla de herramientas: src/index.ts (stdio) y src/http-server.ts (StreamableHTTP). Las definiciones y los manejadores de herramientas viven en src/tools.ts. Si añades una herramienta, conéctala a ambos transportes. src/__tests__/transport-parity.test.ts hace fallar la compilación si lo olvidas, y src/__tests__/docs-tool-names.test.ts falla si la documentación menciona una herramienta que no existe.
Problemas y pull requests: github.com/virtualsms-io/mcp-server.
Las notas de versión de v1.0.0 a v1.3.1 están en CHANGELOG.md.
Seguridad
Las claves de API se pasan mediante el encabezado x-api-key (alojado) o la variable de entorno VIRTUALSMS_API_KEY (stdio local), y se pueden rotar desde tu cuenta en virtualsms.io. Política completa, detalles de retención y proceso de divulgación: SECURITY.md.
Reporta vulnerabilidades a security@virtualsms.io.
Licencia
MIT. Consulta LICENSE.
Creado por VirtualSMS.io. Verificación de cuentas para desarrolladores y agentes de IA, con tarjetas SIM físicas reales: 2500+ servicios · 145+ países · desde $0.05 por código.