Sendveo para agentes de IA

Sendveo habla el Model Context Protocol (MCP). Añádelo a Claude, Cursor, ChatGPT o cualquier agente compatible con MCP y pídelo en lenguaje natural: lista mis números, conecta este, responde a ese chat. El agente llama a Sendveo por ti.

Qué es

El servidor MCP de Sendveo es un pequeño puente entre tu asistente de IA y tu cuenta de Sendveo. Expone las mismas acciones que la API y el panel, como herramientas que el asistente puede llamar. Todo se ejecuta bajo tu propia cuenta: inicias sesión con tu correo y tu contraseña de Sendveo o, para un script o una herramienta de línea de comandos, usas una clave de API de tu panel.

Hay dos formas de conectar, y ambas ofrecen las mismas herramientas. Alojada: pegas una URL en el asistente e inicias sesión, sin instalar nada ni copiar ninguna clave. Local: el asistente ejecuta un pequeño comando de Sendveo en tu equipo con una clave de API, que nunca sale de él.

Qué puedes hacer

Una herramienta por acción, agrupadas como las agrupa la guía: números, mensajes, conversaciones, contactos, grupos, salud y perfil, etiquetas, webhook, facturación. Las funciones de operador no se exponen: el servidor se limita a la cuenta a la que pertenece la conexión.

HerramientaQué hace
Números
list_numbersLista tus números de WhatsApp, su estado y su salud.
get_numberConsulta un número por su id, con su salud.
connect_numberConecta un número nuevo. Devuelve una imagen QR para escanear, o un código de 8 caracteres para escribir en WhatsApp.
refresh_qrObtiene un QR o código nuevo mientras un número sigue emparejándose (van rotando).
reconnect_numberVuelve a vincular un número cuya sesión se perdió.
disconnect_numberDa de baja un número. Libera su plaza y conserva el número.
remove_numberElimina un número de forma permanente.
Mensajes
send_messageEnvía un mensaje de WhatsApp (texto, archivos, una nota de voz, una ubicación, tarjetas de contacto, una respuesta citada) a un número de teléfono o a una conversación existente.
get_messagesLee los mensajes entrantes y salientes almacenados: texto, tipo, estado de entrega, archivos, reacciones.
get_messageLee un mensaje por su id, tal como está ahora.
get_attachmentObtiene un archivo de un mensaje. Una imagen vuelve como una imagen que puedes ver; cualquier otra cosa, como sus detalles más un enlace de Sendveo.
react_to_messageReacciona a un mensaje con un emoji.
remove_reactionRetira tu reacción.
forward_messageReenvía un mensaje a otra conversación que ya tienes.
delete_messageElimina un mensaje para todos. No se puede deshacer.
mark_chat_readMarca una conversación como leída, o como no leída.
send_typingNo disponible en WhatsApp: siempre responde sent false. Usa en su lugar typingDurationMs en send_message.
Conversaciones
list_chatsLista tus conversaciones: nombre, no leídos, archivada, silenciada, último mensaje, etiquetas.
get_chatLee una conversación completa, incluidos sus participantes y sus etiquetas.
archive_chatArchiva una conversación.
unarchive_chatSaca una conversación del archivo.
mute_chatSilencia las notificaciones de una conversación.
unmute_chatVuelve a activar las notificaciones de una conversación.
sync_chat_historyTrae los mensajes más antiguos a lo que devuelve get_messages.
Contactos
search_contactsEncuentra a una persona por su nombre en las conversaciones de tus números, empezando por las de uno a uno; a alguien a quien nunca has escrito se le contacta por su número.
get_contactLo que WhatsApp revela sobre un número: si está en WhatsApp, nombre, empresa, línea de estado.
get_contact_pictureLa foto de perfil de un contacto, como una imagen que puedes ver o como un enlace de Sendveo.
lookup_numbersCuáles de hasta 50 números están en WhatsApp (sí o no, y nada más).
Grupos
list_groupsLista los grupos en los que están tus números.
get_groupLee un grupo: asunto, foto y miembros.
get_group_pictureLa foto de un grupo, como una imagen o como un enlace de Sendveo.
create_groupCrea un grupo con un asunto, miembros y un primer mensaje opcional.
add_group_membersAñade personas a un grupo, toda la lista en una llamada, comprobada antes de que nadie entre. Un rechazo a mitad de camino deja dentro los primeros números, y el error los nombra.
remove_group_memberElimina a alguien de un grupo (nunca a ti mismo: usa leave_group).
leave_groupSaca tu propio número de un grupo.
Salud y perfil
get_number_health¿Funciona este número? Su estado, su salud y lo que le ha pasado.
list_number_eventsEl historial de salud por sí solo. Recórrelo página a página con un cursor.
get_number_profileLo que tu propia línea publica sobre sí misma: nombre, info, empresa, foto. Solo lectura.
get_number_pictureLa foto de tu propia línea, como una imagen que puedes ver o como un enlace de Sendveo.
Etiquetas
list_labelsTus etiquetas, con cuántas conversaciones lleva cada una.
create_labelCrea una etiqueta: un nombre y un color opcional de una paleta fija.
update_labelRenombra una etiqueta o cambia su color.
delete_labelElimina una etiqueta. Desaparece de todas las conversaciones que la llevaban.
add_chat_labelPone una etiqueta en una conversación, por id o por nombre (un nombre nuevo la crea).
remove_chat_labelQuita una etiqueta de una conversación.
Webhook
get_webhookMuestra la URL a la que Sendveo envía los mensajes entrantes.
set_webhookDefine o reemplaza esa URL.
Facturación
get_billingMuestra tu saldo y tus plazas: el saldo disponible de tu cuenta, las plazas con tarjeta y con saldo, cualquier renovación mensual impagada, y si puedes comprar con tarjeta o activar números con tu saldo.
activate_slotsConvierte el saldo de tu cuenta en plazas de números, en dos pasos: la primera llamada muestra el precio, tu saldo y lo que se va a descontar, sin cobrar nada; solo una segunda llamada que hayas aceptado las activa.

connect_number, refresh_qr y reconnect_number aceptan un parámetro opcional method. qr (por defecto) devuelve un QR para escanear desde WhatsApp en Dispositivos vinculados, Vincular un dispositivo. code devuelve un código de 8 caracteres para escribir en Vincular con número de teléfono: úsalo cuando estés en el mismo teléfono que tiene el número y no puedas escanear la pantalla. Ambos caducan y rotan, así que pide uno nuevo si deja de funcionar.

Opción A: pega la URL e inicia sesión (recomendado)

Añade Sendveo a tu asistente como servidor MCP remoto. Solo necesitas un valor, la URL MCP de Sendveo. No hay nada que instalar ni ninguna clave que pegar: tu asistente abre una página de Sendveo donde inicias sesión y apruebas la conexión.

URL MCP
https://mcp.sendveo.com/mcp

En Claude

  1. Abre Ajustes, luego Conectores, y elige Añadir conector personalizado.
  2. Pega la URL MCP de Sendveo de arriba y guarda. Tu asistente encuentra el resto por su cuenta.
  3. Se abre una página de Sendveo en tu navegador. Inicia sesión con el correo y la contraseña que usas para el panel.
  4. Lee lo que pide el asistente y la dirección a la que te devolverá, y pulsa Permitir. Si pulsas Rechazar, no se concede nada.

El asistente recibe una conexión ligada a tu cuenta, con los permisos que muestra esa pantalla de aprobación. Caduca al cabo de una hora y se renueva sola mientras la conexión está en uso. Nunca pegas una clave en el asistente, y nada de lo que apruebas alcanza otra cuenta, la consola de operador ni tu contraseña.

Para desconectar, elimina el conector en tu asistente. Una conexión que elimines desde Sendveo deja de funcionar de inmediato y para siempre.

Si no se abre ninguna página de inicio de sesión, comprueba que la URL termina en /mcp. Si tu asistente informa de que no pudo alcanzar el servicio de inicio de sesión, Sendveo no es accesible desde tu red: la misma comprobación que cargar el panel.

ChatGPT, Cursor y otros asistentes compatibles con MCP usan la misma URL en sus propios ajustes de servidor MCP remoto, y te hacen iniciar sesión igual.

Opción B: local (en tu equipo)

Si prefieres mantener la clave en tu propio equipo, ejecuta el servidor MCP de Sendveo en local. Requiere Node.js 22 o superior. El asistente lo inicia con npx @sendveo/mcp y le pasa tu clave mediante la variable de entorno SENDVEO_API_KEY.

Añade el bloque de abajo a la configuración MCP de tu asistente. En Claude Desktop es claude_desktop_config.json; en Claude Code ejecuta claude mcp add o edita .mcp.json; Cursor usa .cursor/mcp.json. El bloque es el mismo en todos.

Configuración MCP
{
  "mcpServers": {
    "sendveo": {
      "command": "npx",
      "args": ["-y", "@sendveo/mcp"],
      "env": {
        "SENDVEO_API_KEY": "YOUR_SENDVEO_API_KEY"
      }
    }
  }
}

Sustituye el texto de ejemplo por tu clave, reinicia el asistente y pídele que liste tus números de Sendveo. Si el servidor se cierra de inmediato, comprueba que SENDVEO_API_KEY está definida.

Con una clave de API en lugar de iniciar sesión

Iniciar sesión es la forma normal de usar la URL alojada. Si tu herramienta no puede hacerlo, un script, una llamada curl o un cliente que solo te deja definir cabeceras, la misma URL también acepta una clave de API de Sendveo enviada como token bearer. Cada solicitud se autentica solo con esa clave y se limita a la cuenta de esa clave.

URL MCP
https://mcp.sendveo.com/mcp
Cabecera
Authorization: Bearer YOUR_SENDVEO_API_KEY

Ámbitos

Cada conexión lleva ámbitos, y cada herramienta necesita uno. Al iniciar sesión, la pantalla de aprobación los enumera en lenguaje claro antes de que pulses Permitir. Una clave de API nueva recibe todos los ámbitos por defecto, salvo el atajo de solo lectura, así que funciona con todas las herramientas desde el principio. Si una herramienta informa de que falta un ámbito, ajusta la clave en Claves de API en tu panel, o vuelve a conectar y aprueba el permiso que falta.

ÁmbitoHerramientas
numbers:readlist_numbers, get_number, get_billing, get_number_health, list_number_events, get_number_profile, get_number_picture
numbers:writeconnect_number, refresh_qr, reconnect_number, disconnect_number, remove_number y, con una clave de API, activate_slots
messages:readget_messages, get_message, get_attachment
messages:sendsend_message, send_typing
messages:managereact_to_message, remove_reaction, forward_message, delete_message, mark_chat_read
chats:readlist_chats, get_chat, list_labels y las conversaciones uno a uno que encuentra la búsqueda por nombre
chats:managearchive_chat, unarchive_chat, mute_chat, unmute_chat, sync_chat_history, create_label, update_label, delete_label, add_chat_label, remove_chat_label
contacts:readget_contact, get_contact_picture, lookup_numbers y search_contacts junto con chats:read (conversaciones uno a uno) o groups:read (miembros de grupos). Con solo contacts:read, la búsqueda se rechaza.
groups:readlist_groups, get_group, get_group_picture y los miembros de grupos que encuentra la búsqueda por nombre
groups:managecreate_group, add_group_members, remove_group_member, leave_group
webhooks:manageget_webhook, set_webhook
billing:spendactivate_slots para un asistente conectado iniciando sesión, solo si la persona marcó este ámbito en la pantalla de aprobación. Una clave de API usa numbers:write en su lugar y nunca lleva este ámbito.
*:readTodos los ámbitos de lectura a la vez (una conexión de solo lectura): las herramientas de numbers:read, messages:read, chats:read, contacts:read y groups:read, y nada que escriba.

messages:manage, chats:read, chats:manage, contacts:read, groups:read y groups:manage se añadieron el 16 de septiembre de 2026. Una clave de API creada antes de esa fecha no tiene ninguno de ellos y no puede recibirlos: crea una clave nueva en tu panel, o vuelve a conectar el asistente y aprueba los permisos. Todo lo demás sigue funcionando con la clave antigua.

Leer tu facturación lo cubre numbers:read. Comprar plazas de números con tu saldo (activate_slots) requiere numbers:write en una clave de API, y billing:spend en un asistente conectado iniciando sesión. El ámbito billing:spend está desactivado salvo que lo marques en la pantalla de aprobación, y las conexiones creadas antes de que existiera no lo tienen, así que un asistente que conectes sin marcarlo nunca podrá comprar plazas. Conectar no es comprar, pero puede costar: cuando connect_number o reconnect_number coloca un número en una plaza con saldo aún no pagada este mes, ese número se renueva desde tu saldo a su precio mensual en la revisión horaria que sigue al emparejamiento del teléfono, o queda como renovación impagada si tu saldo no es suficiente. Ocurre con o sin billing:spend, igual que cuando conectas un número desde tu panel.

Seguridad

  • Iniciar sesión nunca da tu contraseña al asistente, y el servidor alojado no guarda ninguna clave de API. Cada solicitud se autentica con la credencial que lleva, y el servidor no conserva ninguna.
  • Cada solicitud queda aislada en la cuenta que hay detrás de la conexión. Las funciones de operador no son accesibles por MCP.
  • Hay límites de frecuencia, por clave y por origen. Una respuesta 429 significa: baja el ritmo y reintenta en un momento.
  • Trata la clave como una contraseña. Prefiere una clave limitada a lo que el asistente necesita, y revócala desde el panel si se filtra.

Solución de problemas

VesQué hacer
401 o Invalid or missing Sendveo API keyTu conexión fue revocada o no pudo renovarse, o la clave de API es incorrecta, no está definida, o no se envía como Authorization: Bearer .... Vuelve a conectar, o copia una clave nueva desde tu panel.
No available slotHas usado todas tus plazas de números. Pide al asistente que active una con tu saldo (activate_slots, que muestra el precio antes de cobrar nada) o compra una plaza con tarjeta en Facturación en tu panel, y reintenta connect_number.
429 o Rate limit exceededDemasiadas solicitudes en poco tiempo. Espera un momento y reintenta, y pide al asistente que haga menos llamadas a la vez.
does not have the scope requiredConcede el ámbito que falta a la clave en Claves de API, o crea una clave nueva con todos los ámbitos.
WhatsApp desde agentes de IA con MCP · Sendveo