Sendveo pour les agents IA
Sendveo parle le Model Context Protocol (MCP). Ajoutez-le à Claude, Cursor, ChatGPT ou tout agent compatible MCP, puis demandez en langage naturel : liste mes numéros, connecte celui-ci, réponds à cette conversation. L'agent appelle Sendveo pour vous.
De quoi s'agit-il
Le serveur MCP Sendveo est un petit pont entre votre assistant IA et votre compte Sendveo. Il expose les mêmes actions que l'API et le tableau de bord, sous forme d'outils que l'assistant peut appeler. Tout s'exécute sous votre propre compte : vous vous connectez avec votre e-mail et votre mot de passe Sendveo ou, pour un script ou un outil en ligne de commande, vous utilisez une clé API créée dans votre tableau de bord.
Il y a deux façons de se connecter, et toutes deux exposent les mêmes outils. Hébergée : vous collez une URL dans l'assistant et vous vous connectez, sans rien installer ni copier de clé. Locale : l'assistant lance une petite commande Sendveo sur votre machine avec une clé API, qui ne la quitte jamais.
Ce que vous pouvez faire
Un outil par action, regroupés comme dans le guide : numéros, messages, conversations, contacts, groupes, santé et profil, étiquettes, webhook, facturation. Les fonctions opérateur ne sont pas exposées : le serveur est limité au compte auquel appartient la connexion.
| Outil | Ce qu'il fait |
|---|---|
| Numéros | |
| list_numbers | Liste vos numéros WhatsApp, leur statut et leur santé. |
| get_number | Consulte un numéro par son identifiant, avec sa santé. |
| connect_number | Connecte un nouveau numéro. Renvoie une image QR à scanner, ou un code à 8 caractères à saisir dans WhatsApp. |
| refresh_qr | Obtient un nouveau QR ou code tant qu'un numéro est encore en appairage (ils tournent). |
| reconnect_number | Reconnecte un numéro dont la session a été perdue. |
| disconnect_number | Met un numéro hors service. Libère son emplacement et conserve le numéro. |
| remove_number | Supprime définitivement un numéro. |
| Messages | |
| send_message | Envoie un message WhatsApp (texte, fichiers, note vocale, position, fiches de contact, réponse citée) à un numéro de téléphone ou dans une conversation existante. |
| get_messages | Lit les messages entrants et sortants enregistrés : texte, type, statut de livraison, fichiers, réactions. |
| get_message | Lit un message par son identifiant, dans son état actuel. |
| get_attachment | Récupère un fichier joint à un message. Une image revient comme une image visible ; tout le reste sous forme de détails plus un lien Sendveo. |
| react_to_message | Réagit à un message avec un emoji. |
| remove_reaction | Retire votre réaction. |
| forward_message | Transfère un message dans une autre de vos conversations. |
| delete_message | Supprime un message pour tout le monde. Irréversible. |
| mark_chat_read | Marque une conversation comme lue, ou non lue. |
| send_typing | Affiche l'indicateur de saisie un instant avant un message. |
| Conversations | |
| list_chats | Liste vos conversations : nom, nombre de non-lus, archivée, en sourdine, dernier message, étiquettes. |
| get_chat | Lit une conversation en entier, y compris ses participants et ses étiquettes. |
| archive_chat | Archive une conversation. |
| unarchive_chat | Sort une conversation des archives. |
| mute_chat | Met en sourdine les notifications d'une conversation. |
| unmute_chat | Réactive les notifications d'une conversation. |
| sync_chat_history | Récupère les messages plus anciens dans ce que renvoie get_messages. |
| Contacts | |
| get_contact | Ce que WhatsApp révèle sur un numéro : présent sur WhatsApp ou non, nom, entreprise, ligne de statut. |
| get_contact_picture | La photo de profil d'un contact, comme une image visible ou comme un lien Sendveo. |
| lookup_numbers | Lesquels parmi 50 numéros au plus sont sur WhatsApp (oui ou non, rien de plus). |
| Groupes | |
| list_groups | Liste les groupes dont vos numéros font partie. |
| get_group | Lit un groupe : sujet, photo et membres. |
| get_group_picture | La photo d'un groupe, comme une image ou comme un lien Sendveo. |
| create_group | Crée un groupe avec un sujet, des membres et un premier message facultatif. |
| add_group_members | Ajoute des personnes à un groupe, toute la liste en un appel, vérifiée avant que quiconque rejoigne. Un refus en cours de route laisse les premiers numéros dans le groupe, et l'erreur les nomme. |
| remove_group_member | Retire quelqu'un d'un groupe (jamais vous-même : utilisez leave_group). |
| leave_group | Fait sortir votre propre numéro d'un groupe. |
| Santé et profil | |
| get_number_health | Ce numéro fonctionne-t-il ? Son statut, sa santé et ce qui lui est arrivé. |
| list_number_events | L'historique de santé seul. Parcourez-le page par page avec un curseur. |
| get_number_profile | Ce que votre propre ligne publie sur elle-même : nom, à propos, entreprise, photo. Lecture seule. |
| get_number_picture | La photo de votre propre ligne, comme une image visible ou comme un lien Sendveo. |
| Étiquettes | |
| list_labels | Vos étiquettes, avec le nombre de conversations qui portent chacune. |
| create_label | Crée une étiquette : un nom et une couleur facultative parmi une palette fixe. |
| update_label | Renomme une étiquette ou change sa couleur. |
| delete_label | Supprime une étiquette. Elle disparaît de toutes les conversations qui la portaient. |
| add_chat_label | Pose une étiquette sur une conversation, par identifiant ou par nom (un nom nouveau la crée). |
| remove_chat_label | Retire une étiquette d'une conversation. |
| Webhook | |
| get_webhook | Affiche l'URL à laquelle Sendveo transmet les messages entrants. |
| set_webhook | Définit ou remplace cette URL. |
| Facturation | |
| get_billing | Affiche votre crédit et vos emplacements : le crédit disponible sur votre compte, les emplacements par carte et par crédit, tout renouvellement mensuel impayé, et si vous pouvez acheter par carte ou activer des numéros avec votre crédit. |
connect_number, refresh_qr et reconnect_number acceptent un paramètre optionnel method. qr (par défaut) renvoie un QR à scanner depuis WhatsApp, dans Appareils connectés, Connecter un appareil. code renvoie un code à 8 caractères à saisir dans Connecter avec un numéro de téléphone : utilisez-le quand vous êtes sur le téléphone qui porte le numéro et ne pouvez pas scanner l'écran. Les deux expirent et tournent, demandez-en un nouveau s'il ne fonctionne plus.
Option A : collez l'URL et connectez-vous (recommandé)
Ajoutez Sendveo à votre assistant comme serveur MCP distant. Une seule valeur suffit : l'URL MCP Sendveo. Rien à installer et aucune clé à coller : votre assistant ouvre une page Sendveo où vous vous connectez et approuvez la connexion.
https://mcp.sendveo.com/mcpDans Claude
- Ouvrez Réglages, puis Connecteurs, et choisissez Ajouter un connecteur personnalisé.
- Collez l'URL MCP Sendveo ci-dessus et enregistrez. Votre assistant trouve le reste tout seul.
- Une page Sendveo s'ouvre dans votre navigateur. Connectez-vous avec l'e-mail et le mot de passe que vous utilisez pour le tableau de bord.
- Lisez ce que l'assistant demande et l'adresse vers laquelle il vous renverra, puis appuyez sur Autoriser. Appuyez sur Refuser et rien n'est accordé.
L'assistant reçoit une connexion liée à votre compte, portant les autorisations affichées sur cet écran d'approbation. Elle expire au bout d'une heure et se renouvelle discrètement tant que la connexion est utilisée. Vous ne collez jamais de clé dans l'assistant, et rien de ce que vous approuvez n'atteint un autre compte, la console opérateur ou votre mot de passe.
Pour vous déconnecter, supprimez le connecteur dans votre assistant. Une connexion supprimée côté Sendveo cesse de fonctionner immédiatement et définitivement.
Si aucune page de connexion ne s'ouvre, vérifiez que l'URL se termine par /mcp. Si votre assistant signale qu'il n'a pas pu joindre le service de connexion, c'est que Sendveo est injoignable depuis votre réseau : même vérification que pour le chargement du tableau de bord.
ChatGPT, Cursor et les autres assistants compatibles MCP utilisent la même URL dans leurs propres réglages de serveur MCP distant, et vous connectent de la même façon.
Option B : local (sur votre machine)
Si vous préférez garder la clé sur votre propre machine, exécutez le serveur MCP Sendveo en local. Il nécessite Node.js 22 ou plus récent. L'assistant le lance avec npx @sendveo/mcp et lui transmet votre clé via la variable d'environnement SENDVEO_API_KEY.
Ajoutez le bloc ci-dessous à la configuration MCP de votre assistant. Dans Claude Desktop, c'est claude_desktop_config.json ; dans Claude Code, lancez claude mcp add ou modifiez .mcp.json ; Cursor utilise .cursor/mcp.json. Le bloc est identique partout.
{
"mcpServers": {
"sendveo": {
"command": "npx",
"args": ["-y", "@sendveo/mcp"],
"env": {
"SENDVEO_API_KEY": "YOUR_SENDVEO_API_KEY"
}
}
}
}Remplacez le texte de substitution par votre clé, redémarrez l'assistant et demandez-lui de lister vos numéros Sendveo. Si le serveur s'arrête immédiatement, vérifiez que SENDVEO_API_KEY est bien définie.
Avec une clé API plutôt qu'une connexion
Se connecter est la façon normale d'utiliser l'URL hébergée. Si votre outil ne le permet pas, un script, un appel curl ou un client qui ne laisse définir que des en-têtes, la même URL accepte aussi une clé API Sendveo envoyée en jeton bearer. Chaque requête est authentifiée sur cette seule clé et reste limitée au compte de cette clé.
https://mcp.sendveo.com/mcpAuthorization: Bearer YOUR_SENDVEO_API_KEYPortées
Chaque connexion porte des portées, et chaque outil en exige une. Quand vous vous connectez, l'écran d'approbation les liste en langage clair avant que vous appuyiez sur Autoriser. Une nouvelle clé API reçoit toutes les portées par défaut, sauf le raccourci lecture seule : elle fonctionne donc d'emblée avec tous les outils. Si un outil signale une portée manquante, ajustez la clé dans Clés API de votre tableau de bord, ou reconnectez-vous et approuvez la permission manquante.
| Portée | Outils |
|---|---|
| numbers:read | list_numbers, get_number, get_billing, get_number_health, list_number_events, get_number_profile, get_number_picture |
| numbers:write | connect_number, refresh_qr, reconnect_number, disconnect_number, remove_number |
| messages:read | get_messages, get_message, get_attachment |
| messages:send | send_message, send_typing |
| messages:manage | react_to_message, remove_reaction, forward_message, delete_message, mark_chat_read |
| chats:read | list_chats, get_chat, list_labels |
| chats:manage | archive_chat, unarchive_chat, mute_chat, unmute_chat, sync_chat_history, create_label, update_label, delete_label, add_chat_label, remove_chat_label |
| contacts:read | get_contact, get_contact_picture, lookup_numbers |
| groups:read | list_groups, get_group, get_group_picture |
| groups:manage | create_group, add_group_members, remove_group_member, leave_group |
| webhooks:manage | get_webhook, set_webhook |
| *:read | Toutes les portées de lecture à la fois (une connexion en lecture seule) : les outils de numbers:read, messages:read, chats:read, contacts:read et groups:read, et rien qui écrive. |
messages:manage, chats:read, chats:manage, contacts:read, groups:read et groups:manage ont été ajoutées le 16 septembre 2026. Une clé API créée avant cette date n'en possède aucune et ne peut pas les recevoir : créez une nouvelle clé dans votre tableau de bord, ou reconnectez l'assistant et approuvez les permissions. Tout le reste continue de fonctionner avec l'ancienne clé.
La facturation est en lecture seule et couverte par numbers:read : il n'existe pas de portée facturation distincte.
Sécurité
- Se connecter ne donne jamais votre mot de passe à l'assistant, et le serveur hébergé ne stocke aucune clé API. Chaque requête est authentifiée avec l'identifiant qu'elle porte, et le serveur n'en conserve aucun.
- Chaque requête est isolée au compte derrière la connexion. Les fonctions opérateur ne sont pas accessibles via MCP.
- Des limites de débit s'appliquent, par clé et par source. Une réponse
429signifie ralentir et réessayer un peu plus tard. - Traitez la clé comme un mot de passe. Préférez une clé limitée à ce dont l'assistant a besoin, et révoquez-la depuis le tableau de bord en cas de fuite.
Dépannage
| Vous voyez | Que faire |
|---|---|
401 ou Invalid or missing Sendveo API key | Votre connexion a été révoquée ou n'a pas pu se renouveler, ou la clé API est incorrecte, absente, ou n'est pas envoyée sous la forme Authorization: Bearer .... Reconnectez-vous, ou copiez une nouvelle clé depuis votre tableau de bord. |
No available slot | Vous avez utilisé tous vos emplacements de numéros. Achetez un emplacement par carte ou activez-en un avec votre crédit dans la rubrique Facturation de votre tableau de bord, puis relancez connect_number. |
429 ou Rate limit exceeded | Trop de requêtes en peu de temps. Patientez un instant et réessayez, et demandez à l'assistant de faire moins d'appels à la fois. |
does not have the scope required | Accordez la portée manquante à la clé dans Clés API, ou créez une nouvelle clé avec toutes les portées. |