Documentation

Votre agent a une boîte de réception
en quatre étapes.

Connectez n'importe quel compte e-mail, collez une URL dans un client MCP compatible OAuth et autorisez. Les clients sans OAuth utilisent plutôt une clé API. Référence complète des outils et guide de connexion ci-dessous.

Démarrage rapideOAuth (claude.ai)Référence des outilsModèle de sécuritéFournisseurs pris en charge
Démarrage rapide

Opérationnel en quelques minutes.

Aucun SDK requis. MCPEmails parle le MCP standard via HTTP, donc il s'intègre dans tout agent compatible MCP.

01Inscrivez-vous et connectez une boîte

Créez votre compte et connectez Gmail

Inscrivez-vous sur mcpemails.com, puis allez dans Tableau de bord → Boîtes → Connecter une boîte. Choisissez Gmail, iCloud, Fastmail ou toute boîte IMAP, puis effectuez le flux OAuth ou collez un mot de passe d'application. Votre boîte est prête en moins d'une minute.

Connecter votre boîte →
02Créez une clé API

Générez un jeton bearer pour votre agent

Dans Tableau de bord → Clés d'API, cliquez sur « Créer une clé ». Nommez-la, sélectionnez les portées dont votre agent a besoin (read:email, search:email, send:email, manage:folders, delete:email, manage:drafts, manage:contacts, schedule:email ) et copiez la clé. Elle n'est affichée qu'une seule fois.

# Your key looks like this:
mcpe_live_AbCdEfGhIjKlMnOpQrStUvWxYz123456
03Ajoutez MCPEmails à votre agent

Collez le point de terminaison MCP dans votre client

Choisissez l'onglet de votre client ci-dessous. Les clients MCP qui prennent en charge OAuth 2.0 (claude.ai, Claude Desktop, Cursor et autres) n'ont qu'à coller l'URL et autoriser, aucune clé API nécessaire. Les clients sans OAuth, ainsi que l'accès par script, utilisent la clé API de l'étape 02.

json
# OAuth-capable clients (claude.ai, Claude Desktop, Cursor…)
# No API key required. Paste the URL, click Connect, authorize.
#
# Example: claude.ai
#   1. Go to claude.ai → Customize → Connectors
#   2. Click "Add connector" and paste this URL:
#
#        https://mcpemails.com/api/mcp
#
#   3. Click Connect and sign in with your mcpemails account.
#   4. Every tool your approved scopes allow is live immediately.
#
# Claude Desktop and Cursor follow the same OAuth flow when
# the server URL is configured in their MCP settings.
04Effectuez votre premier appel

Demandez à votre agent de vérifier votre boîte de réception

Aucun copier-coller d'UUID de boîte. Votre agent appelle d'abord inbox_list pour découvrir chaque boîte connectée et son UUID, puis vous demandez : « Vérifie ma boîte et résume les 5 derniers messages non lus. »

# The agent calls inbox_list first, so no hardcoded UUIDs.
# System prompt (optional, for multi-inbox setups):
You have access to email via MCPEmails.
Start by calling inbox_list to discover available inboxes.
Point de terminaison

Une URL, MCP standard.

Tout le trafic passe par un unique point de terminaison Streamable HTTP. Authentifiez-vous avec un jeton bearer issu de votre tableau de bord.

POSThttps://mcpemails.com/api/mcp

Envoyez un corps de requête JSON-RPC 2.0. Méthodes prises en charge : initialize, tools/list, tools/call.

Transport : Streamable HTTP (MCP 2025-06-18)
Auth : Authorization: Bearer <api-key>
Limites de débit : 100 req/min · 1 000/h · 10 000/jour par clé, plus le plafond d'espace de travail de votre formule
Format de réponse : JSON-RPC 2.0 : les résultats réussis comportent aussi un objet typé structuredContent
Handshake d'initialisation
bash
curl -X POST https://mcpemails.com/api/mcp \
  -H "Authorization: Bearer mcpe_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "initialize",
    "params": {
      "protocolVersion": "2025-06-18",
      "clientInfo": { "name": "my-agent", "version": "1.0" },
      "capabilities": {}
    }
  }'
Interrogation, pas push

MCPEmails fonctionne uniquement en requête/réponse : chaque résultat provient d'un appel d'outil effectué par votre agent. Il n'y a ni webhooks, ni notifications push, ni événements initiés par le serveur : un e-mail entrant ne déclenche jamais un appel d'agent de lui-même. Pour réagir aux nouveaux messages, faites interroger votre agent périodiquement, p. ex. en appelant email_read avec action: "list" et unread_only: true à l'intervalle dont votre flux a besoin (attention aux limites de débit ci-dessus).

Conçu pour le vrai travail de boîte mail

Plus de contrôle, sans plus d’encombrement d’outils.

Ce sont des capacités adaptées à chaque fournisseur au sein de la même interface MCP compacte et basée sur les actions, et non un catalogue d’outils distinct pour chaque cas particulier.

Approbation d’envoi appliquée par le serveur

Activez l’approbation par boîte dans le tableau de bord pour retenir les envois, réponses, transferts, envois de brouillons et envois programmés. L’agent reçoit un résultat en attente, puis un membre de l’espace de travail l’approuve ou le rejette dans le tableau de bord avant tout envoi.

Profils de compatibilité des fournisseurs

Appelez inbox_list pour consulter un profil versionné de chaque boîte. Il indique si les opérations normalisées sont exactes, différentes ou indisponibles, afin que les agents puissent choisir des flux portables sans faire comme si tous les fournisseurs étaient identiques.

Pièces jointes et e-mail d’origine

Lisez une pièce jointe sélectionnée sous forme de texte temporaire pour les fichiers texte pris en charge, CSV, HTML, JSON et PDF avec couche de texte, ou téléchargez l’original conservé par le fournisseur sous forme de .eml portable. L’extraction n’exécute aucun code intégré et n’applique pas d’OCR aux images.

Automatisation fiable et vérifiable

Réutilisez une idempotency_key pour réessayer sans risque la même requête sortante pendant 24 heures. Les exécutions d’organisation en masse conservent leur statut dans le tableau de bord et acceptent les demandes d’annulation ; aucun contenu de message ni terme de recherche n’est conservé dans ces enregistrements.

Workflows MCP guidés

Les clients qui prennent en charge les prompts MCP peuvent proposer des routines intégrées pour un tri attentif de la boîte, la revue des conversations en suspens, la préparation de brouillons de réponse, des propositions de classement et la revue des envois programmés. Les prompts n’accordent jamais de permissions et ne s’exécutent jamais tout seuls.

Brouillons de réponse dans le fil et Send As Gmail

Créez une réponse non envoyée dans sa conversation d’origine pour relecture humaine. Les envois, réponses et transferts Gmail ne peuvent choisir qu’une identité Send As vérifiée par le fournisseur et renvoyée par inbox_list ; les autres fournisseurs utilisent leur adresse connectée.

Connexion OAuth

Zéro configuration pour les clients compatibles OAuth.

Les clients MCP qui prennent en charge OAuth 2.0 (claude.ai, Claude Desktop, Cursor et autres) se connectent automatiquement via le code d'autorisation + PKCE. Aucune clé API, aucun fichier de configuration. Collez l'URL et cliquez sur Connecter.

Étape 1 : Allez dans claude.ai → Customize → Connectors → Add connector
Étape 2 : Collez https://mcpemails.com/api/mcp comme URL du serveur
Étape 3 : Cliquez sur Connect. MCPEmails ouvre un écran d'autorisation
Étape 4 : Connectez-vous avec votre compte mcpemails et approuvez l'accès
Terminé : Chaque outil autorisé par vos portées approuvées est actif. claude.ai renouvelle les jetons automatiquement

Comment ça fonctionne en coulisses

claude.ai s'enregistre via RFC 7591 Dynamic Client Registration, donc vous ne préenregistrez jamais d'ID client.

L'autorisation utilise OAuth 2.0 Authorization Code + PKCE (RFC 7636), donc aucun secret client n'est jamais transmis.

Les jetons sont limités exactement aux autorisations que vous approuvez : read:email, search:email, send:email, manage:folders, delete:email, manage:drafts, manage:contacts, schedule:email et manage:automations.

Vous utilisez un client sans prise en charge d'OAuth ? Créez une clé API dans Tableau de bord → Clés API et passez-la comme jeton bearer. Les connexions par clé API et par OAuth utilisent le même point de terminaison MCP et le même catalogue d'outils.
Référence des outils

11 outils. Toutes les opérations e-mail dont votre agent a besoin.

Cibler une boîte est facultatif. Quand votre clé n'a qu'une seule boîte, chaque outil par boîte la résout automatiquement, sans avoir besoin d’inbox_id. Avec plusieurs boîtes, passez inbox_id (l'UUID renvoyé par inbox_list) ou inbox (l'adresse e-mail de la boîte). La plupart des outils prennent un argument action qui sélectionne l'opération ; les badges indiquent les portées dont chacun a besoin, et tools/list ne renvoie que les outils pour lesquels votre clé (ou jeton OAuth) est autorisée. Cliquez sur « Afficher l'exemple » pour voir une requête et une réponse complètes.

inbox_listread:email

Renvoie toutes les boîtes auxquelles la clé API ou le jeton OAuth actuel a accès. Appelez-le en premier pour découvrir les valeurs inbox_id, afin de ne jamais copier-coller d'UUID depuis le tableau de bord. Chaque résultat inclut l'adresse e-mail, le fournisseur, une marque de service facultative (icloud/yahoo/zoho/yandex/generic/fastmail) et un objet capabilities décrivant les fonctionnalités prises en charge par cette boîte.

ParamètreTypeRequisDescription
providerenumoptionnelFiltre facultatif : ne renvoie que les boîtes servies par ce fournisseur. L'un de : gmail, fastmail, imap. Omettez-le pour lister toutes les boîtes auxquelles la clé a accès.
include_capabilitiesbooleanoptionnelSi chaque boîte inclut son objet capabilities (les fonctionnalités prises en charge). Par défaut true ; mettez false pour une liste compacte ne contenant que inbox_id, adresse e-mail, nom affiché, fournisseur et marque de service.
email_readread:emailsearch:email

Lire, lister et rechercher des messages dans une boîte. Définissez action : 'list' pour des résumés de messages récents (les plus récents d'abord, avec filtrage par dossier/non lus et pagination), 'read' pour le contenu complet d'un message_id (corps texte, HTML assaini facultatif et pièces jointes), 'read_batch' pour récupérer jusqu'à 50 message_ids en un seul appel, 'search' pour des filtres structurés et indépendants du fournisseur (from, to, cc, subject, body, text, unread, has_attachment, flagged, since, before), ou 'attachment' pour télécharger une seule pièce jointe (par attachment_index ou filename) en données base64, jusqu'à 25 Mo. En lecture seule : ne modifie jamais rien. L'action 'search' est aussi débloquée seule par la portée plus restreinte search:email. Les corps longs sont renvoyés par fenêtres : vérifiez body_truncated, puis renvoyez body_next_offset comme body_offset pour continuer.

ParamètreTypeRequisDescription
actionenumrequisQuelle opération effectuer : "list" (résumés de messages récents), "read" (contenu complet d'un message_id), "read_batch" (plusieurs message_ids), "search" (filtres structurés) ou "attachment" (télécharger une pièce jointe en base64). Détermine quels autres arguments s'appliquent.
inbox_idstring (uuid)optionnelUUID de la boîte à lire. Facultatif : résolu automatiquement quand la clé n'a qu'une seule boîte ; sinon passez celui-ci ou inbox. Appelez inbox_list pour découvrir les ID de boîte.
inboxstringoptionnelAdresse e-mail de la boîte à utiliser, comme alternative pratique à inbox_id. Facultatif ; ignoré si inbox_id est fourni.
message_idstringoptionnelID de message du fournisseur à lire (action 'read' ou 'attachment'), issu d'un list ou search précédent.
message_idsarray[string]optionnelID de message du fournisseur à lire (action 'read_batch'), issus d'un list ou search précédent. Max 50 par appel.
folderstringoptionnelDossier à lister (action 'list'). Par défaut "INBOX". Autres valeurs : "SENT", "DRAFTS", "TRASH".
unread_onlybooleanoptionnelNe renvoyer que les messages non lus (action 'list'). Par défaut false.
limitintegeroptionnelNombre max de résultats à renvoyer (action 'list' ou 'search'). Par défaut 20, max 100.
offsetintegeroptionnelDécalage de pagination commençant à zéro (action 'list' ou 'search'). Par défaut 0.
include_htmlbooleanoptionnelInclure le corps HTML assaini (action 'read'/'read_batch'). Par défaut false.
include_attachmentsbooleanoptionnelInclure les données des pièces jointes en base64 (action 'read'/'read_batch'). En 'read_batch', la limite totale de 10 Mo est partagée entre tous les messages de l'appel. Par défaut false.
mark_as_readbooleanoptionnelMarquer le ou les messages comme lus après récupération (action 'read'/'read_batch'). Par défaut false.
fromstringoptionnelExpéditeur à faire correspondre (action 'search') : adresse e-mail, nom affiché ou fragment (p. ex. "alice@example.com" ou "Alice").
tostringoptionnelDestinataire principal (To) à faire correspondre (action 'search') : adresse e-mail, nom affiché ou fragment.
ccstringoptionnelDestinataire en copie (Cc) à faire correspondre (action 'search') : adresse e-mail, nom affiché ou fragment.
subjectstringoptionnelTexte à faire correspondre dans l'objet (action 'search'). Les expressions de plusieurs mots sont prises telles quelles.
bodystringoptionnelTexte libre à trouver dans le corps du message (action 'search'). (Sur Gmail, cela correspond à l'ensemble du message, pas seulement au corps.)
textstringoptionnelTexte libre à faire correspondre n'importe où dans le message, en-têtes et corps (action 'search').
unreadbooleanoptionnelAction 'search' : true = uniquement les messages non lus ; false = uniquement les lus ; omettez pour les deux.
has_attachmentbooleanoptionnelAction 'search' : true = uniquement les messages avec pièce jointe. Non pris en charge sur IMAP générique (ignoré ici).
flaggedbooleanoptionnelAction 'search' : true = uniquement les messages marqués/suivis. Non pris en charge sur Outlook/Graph (ignoré ici).
sincestring (ISO date)optionnelDate ou date-heure ISO 8601 (action 'search') ; renvoie les messages reçus le/après (>=) cet instant. P. ex. "2026-06-01".
beforestring (ISO date)optionnelDate ou date-heure ISO 8601 (action 'search') ; renvoie les messages reçus strictement avant (<) cet instant.
querystringoptionnelChaîne de requête native du fournisseur (action 'search', solution de secours). Préférez les champs structurés ci-dessus. Combinée avec eux quand c'est pris en charge ; ignorée sur Fastmail.
include_foldersarrayoptionnelRestreindre une recherche à ces noms de dossier (action 'search'). Par défaut : rechercher dans tous les dossiers.
email_organizemanage:folders

Déplacer, copier, marquer ou archiver des messages. Définissez action : 'move'/'move_batch' (vers un destination_folder_id), 'copy'/'copy_batch' (dupliquer dans un destination_folder_id, en laissant l'original en place ; IMAP, Outlook et Fastmail uniquement), 'flag' (définir lu/non lu/marqué via flag_action sur des message_ids), 'archive' (sortir de la boîte de réception, non destructif), ou 'search_and_move' (appliquer à chaque message correspondant à une recherche structurée, ce qui évite les ID de message obsolètes). Chaque action nécessite la portée correspondante : manage:folders pour les déplacements et les copies, send:email pour flag/archive. La suppression des messages a son propre outil email_delete.

ParamètreTypeRequisDescription
actionenumrequisQuelle opération effectuer : "move", "move_batch", "copy", "copy_batch", "flag", "archive" ou "search_and_move". Détermine quels autres arguments s'appliquent et quelle portée est requise.
inbox_idstring (uuid)optionnelUUID de la boîte qui contient les messages. Facultatif : résolu automatiquement quand la clé n'a qu'une seule boîte ; sinon passez celui-ci ou inbox. Appelez inbox_list pour obtenir les ID de boîte disponibles.
inboxstringoptionnelAdresse e-mail de la boîte à utiliser, comme alternative pratique à inbox_id. Facultatif ; ignoré si inbox_id est fourni.
message_idstringoptionnelID de message du fournisseur pour une action sur un seul message (move, copy, archive), issu d'un list, read ou search précédent.
message_idsarray[string]optionnelID de message du fournisseur pour une action par lot (move_batch, copy_batch, flag). Max 500 par appel.
destination_folder_idstringoptionnelDossier de destination (move, move_batch, copy, copy_batch, search_and_move) : un alias canonique (inbox, sent, drafts, trash, archive, spam), un nom de dossier/libellé (p. ex. 'Receipts') ou un ID de dossier natif du fournisseur issu de l'action list de folder. Les noms et alias sont résolus automatiquement.
flag_actionenumoptionnelPour l'action 'flag' : la modification à appliquer à chaque message : "read" ou "unread" pour définir le statut de lecture, ou "flag"/"unflag" pour ajouter ou retirer une étoile/un indicateur de suivi.
fromstringoptionnelExpéditeur à faire correspondre (search_and_move) : adresse e-mail, nom affiché ou fragment.
tostringoptionnelDestinataire principal (To) à faire correspondre (search_and_move) : adresse e-mail, nom affiché ou fragment.
ccstringoptionnelDestinataire en copie (Cc) à faire correspondre (search_and_move) : adresse e-mail, nom affiché ou fragment.
subjectstringoptionnelTexte à faire correspondre dans l'objet (search_and_move).
bodystringoptionnelTexte libre à trouver dans le corps du message (search_and_move). (Sur Gmail, cela correspond à l'ensemble du message.)
textstringoptionnelTexte libre à faire correspondre n'importe où dans le message, en-têtes et corps (search_and_move).
unreadbooleanoptionnelActions de recherche : true = uniquement non lus ; false = uniquement lus ; omettez pour les deux.
has_attachmentbooleanoptionnelActions de recherche : true = uniquement les messages avec pièce jointe. Non pris en charge sur IMAP générique (ignoré ici).
flaggedbooleanoptionnelActions de recherche : true = uniquement les messages marqués/suivis. Non pris en charge sur Outlook/Graph (ignoré ici).
sincestring (ISO date)optionnelDate ou date-heure ISO 8601 (actions de recherche) ; correspond aux messages reçus le/après (>=) cet instant.
beforestring (ISO date)optionnelDate ou date-heure ISO 8601 (actions de recherche) ; correspond aux messages reçus strictement avant (<) cet instant.
querystringoptionnelChaîne de requête native du fournisseur (actions de recherche, solution de secours). Préférez les champs structurés ci-dessus. Ignorée sur Fastmail.
include_foldersarrayoptionnelRestreindre la recherche à ces noms de dossier (actions de recherche). Par défaut : tous les dossiers.
limitintegeroptionnelPour search_and_move : nombre maximal de correspondances à traiter. Par défaut 500, max 500.
email_deletedelete:email

Supprimer des messages, dans son propre outil, distinct d'email_organize, car la suppression est destructive. Définissez action : 'delete'/'delete_batch' (Corbeille par défaut, ou permanent), ou 'search_and_delete' (supprimer chaque message correspondant à une recherche structurée, ce qui évite les ID de message obsolètes). Les suppressions vont à la Corbeille sauf si vous passez permanent : true, ce qui est irréversible. Chaque action nécessite la portée delete:email, et l'outil entier est signalé comme destructif à votre client MCP, qui gère la confirmation de l'utilisateur avant toute suppression.

ParamètreTypeRequisDescription
actionenumrequisQuelle opération effectuer : "delete", "delete_batch" ou "search_and_delete". Détermine quels autres arguments s'appliquent.
inbox_idstring (uuid)optionnelUUID de la boîte qui contient les messages. Facultatif : résolu automatiquement quand la clé n'a qu'une seule boîte ; sinon passez celui-ci ou inbox. Appelez inbox_list pour obtenir les ID de boîte disponibles.
inboxstringoptionnelAdresse e-mail de la boîte à utiliser, comme alternative pratique à inbox_id. Facultatif ; ignoré si inbox_id est fourni.
message_idstringoptionnelID de message du fournisseur pour une suppression unique (action 'delete'), issu d'un list, read ou search précédent.
message_idsarray[string]optionnelID de message du fournisseur pour une suppression par lot (action 'delete_batch'). Max 500 par appel.
permanentbooleanoptionnelSi true, suppression définitive (contourne la Corbeille ; peut être irréversible) ; si false ou omis, déplacement vers la Corbeille. La suppression définitive est disponible sur IMAP et Fastmail ; Gmail et Outlook ne prennent en charge que la corbeille. Par défaut false.
fromstringoptionnelExpéditeur à faire correspondre (search_and_delete) : adresse e-mail, nom affiché ou fragment.
tostringoptionnelDestinataire principal (To) à faire correspondre (search_and_delete) : adresse e-mail, nom affiché ou fragment.
ccstringoptionnelDestinataire en copie (Cc) à faire correspondre (search_and_delete) : adresse e-mail, nom affiché ou fragment.
subjectstringoptionnelTexte à faire correspondre dans l'objet (search_and_delete).
bodystringoptionnelTexte libre à trouver dans le corps du message (search_and_delete). (Sur Gmail, cela correspond à l'ensemble du message.)
textstringoptionnelTexte libre à faire correspondre n'importe où dans le message, en-têtes et corps (search_and_delete).
unreadbooleanoptionnelAction de recherche : true = uniquement non lus ; false = uniquement lus ; omettez pour les deux.
has_attachmentbooleanoptionnelAction de recherche : true = uniquement les messages avec pièce jointe. Non pris en charge sur IMAP générique (ignoré ici).
flaggedbooleanoptionnelAction de recherche : true = uniquement les messages marqués/suivis. Non pris en charge sur Outlook/Graph (ignoré ici).
sincestring (ISO date)optionnelDate ou date-heure ISO 8601 (action de recherche) ; correspond aux messages reçus le/après (>=) cet instant.
beforestring (ISO date)optionnelDate ou date-heure ISO 8601 (action de recherche) ; correspond aux messages reçus strictement avant (<) cet instant.
querystringoptionnelChaîne de requête native du fournisseur (action de recherche, solution de secours). Préférez les champs structurés ci-dessus. Ignorée sur Fastmail.
include_foldersarrayoptionnelRestreindre la recherche à ces noms de dossier (action de recherche). Par défaut : tous les dossiers.
limitintegeroptionnelPour search_and_delete : nombre maximal de correspondances à traiter. Par défaut 500, max 500.
email_composesend:email

Envoyer un nouveau message ou répondre à des messages existants. Définissez action : 'send' pour un nouvel e-mail (to/subject/body, éventuellement cc/bcc/html_body/reply_to/attachments), 'reply' pour répondre à un message_id (les en-têtes de fil sont définis automatiquement ; éventuellement reply_all), ou 'forward' pour transférer un message_id à de nouveaux destinataires (en réattachant éventuellement les fichiers d'origine). La signature de la boîte est ajoutée automatiquement : sur les réponses et les transferts, elle se place après votre texte et avant le bloc cité, selon le mode de réponse de la signature ; passez include_signature: false pour la supprimer sur un message court ponctuel. Les trois sont irréversibles une fois envoyées.

ParamètreTypeRequisDescription
actionenumrequisQuelle opération effectuer : "send", "reply" ou "forward". Détermine quels autres arguments s'appliquent.
inbox_idstring (uuid)optionnelUUID de la boîte depuis laquelle envoyer. Facultatif : résolu automatiquement quand la clé n'a qu'une seule boîte ; sinon passez celui-ci ou inbox. Appelez inbox_list pour obtenir les ID de boîte disponibles.
inboxstringoptionnelAdresse e-mail de la boîte à utiliser, comme alternative pratique à inbox_id. Facultatif ; ignoré si inbox_id est fourni.
message_idstringoptionnelID de message du fournisseur du message d'origine (action 'reply' ou 'forward'), issu d'un list, read ou search précédent.
toarray[string]optionnelAdresses e-mail des destinataires (requis pour 'send' et 'forward'). Max 50.
subjectstringoptionnelObjet de l'e-mail (action 'send'). Max 998 caractères. En reply/forward, il est dérivé de l'original.
bodystringoptionnelCorps en texte brut. Pour 'reply', c'est votre réponse ; pour 'forward', une note facultative ajoutée au-dessus du message transféré.
ccarray[string]optionnelDestinataires en copie (send, forward). Par défaut [].
bccarray[string]optionnelDestinataires en copie cachée (send, forward). Par défaut [].
html_bodystringoptionnelVersion HTML du corps (multipart/alternative). L'appelant est responsable d'un HTML sûr.
reply_tostringoptionnelAdresse de l'en-tête Reply-To (action 'send').
reply_allbooleanoptionnelRépondre à tous les destinataires d'origine, To + Cc (action 'reply'). Par défaut false.
include_attachmentsbooleanoptionnelRéattacher les pièces jointes du message d'origine (action 'forward'). Les fichiers dépassant le budget de 10 Mo sont omis. Par défaut false.
include_signaturebooleanoptionnelIndique s'il faut ajouter la signature configurée de la boîte à ce message. Par défaut true ; mettez false pour envoyer ce seul message sans la signature.
attachmentsarrayoptionnelPièces jointes. Chaque élément : { filename, mime_type, data (base64) }. Max 20 éléments, 10 Mo au total.
idempotency_keystringoptionnelClé opaque facultative (1–200 caractères) pour une seule requête sortante logique. Ne la réutilisez que pour réessayer exactement la même action avec les mêmes arguments dans les 24 heures ; une réutilisation avec des arguments différents est rejetée.
folderread:emailmanage:folders

Gérer les dossiers de la boîte (libellés sur Gmail). Définissez action : 'list' (chaque dossier avec son ID natif du fournisseur, son nom affiché, son type et ses nombres de messages : utilisez les ID comme argument folder lors du listage et comme destination de déplacement), 'create' (name), 'rename' (folder_id, new_name) ou 'delete' (folder_id, irréversible ; les messages qu'il contient peuvent être perdus selon le fournisseur). 'list' nécessite read:email ; create/rename/delete nécessitent manage:folders, et delete est signalé comme destructif à votre client MCP.

ParamètreTypeRequisDescription
actionenumrequisQuelle opération effectuer : "list", "create", "rename" ou "delete". Détermine quels autres arguments s'appliquent et quelle portée est requise.
inbox_idstring (uuid)optionnelUUID de la boîte dont les dossiers sont gérés. Facultatif : résolu automatiquement quand la clé n'a qu'une seule boîte ; sinon passez celui-ci ou inbox. Appelez inbox_list pour obtenir les ID de boîte disponibles.
inboxstringoptionnelAdresse e-mail de la boîte à utiliser, comme alternative pratique à inbox_id. Facultatif ; ignoré si inbox_id est fourni.
namestringoptionnelNom du nouveau dossier ou libellé (action 'create'). 1–255 caractères.
folder_idstringoptionnelID de dossier/libellé natif du fournisseur (action 'rename' ou 'delete'), issu de l'action list de folder.
new_namestringoptionnelNouveau nom affiché (action 'rename'). 1–255 caractères.
draftmanage:drafts

Gérer les brouillons dans le dossier Drafts de la boîte. Définissez action : 'list' (brouillons enregistrés, chacun avec son draft_id, son objet, ses destinataires et sa date de création), 'create' (subject/body requis, éventuellement to/cc/bcc/html_body), 'update' (draft_id plus les champs à écraser) ou 'send' (draft_id, supprime le brouillon et l'envoie, irréversible). La signature de la boîte est intégrée à la création ou à la mise à jour du brouillon, elle est donc déjà présente dans le dossier Drafts et n'est pas réajoutée à l'envoi ; passez include_signature: false pour créer un brouillon sans elle. Sur les boîtes basées sur IMAP, un draft_id change à chaque mise à jour, utilisez donc toujours le plus récent ; Gmail et Outlook conservent un draft_id stable.

ParamètreTypeRequisDescription
actionenumrequisQuelle opération effectuer : "list", "create", "reply", "update" ou "send". Détermine quels autres arguments s'appliquent.
inbox_idstring (uuid)optionnelUUID de la boîte qui contient les brouillons. Facultatif : résolu automatiquement quand la clé n'a qu'une seule boîte ; sinon passez celui-ci ou inbox. Appelez inbox_list pour obtenir les ID de boîte disponibles.
inboxstringoptionnelAdresse e-mail de la boîte à utiliser, comme alternative pratique à inbox_id. Facultatif ; ignoré si inbox_id est fourni.
draft_idstringoptionnelID de brouillon du fournisseur (action 'update' ou 'send'), issu de l'action create, update ou list la plus récente. Sur les boîtes IMAP, il change après chaque mise à jour, utilisez donc toujours le plus récent.
subjectstringoptionnelObjet du brouillon (action 'create'/'update').
bodystringoptionnelCorps en texte brut du brouillon (action 'create'/'update').
toarray[string]optionnelAdresses des destinataires (action 'create'/'update'). Par défaut [].
ccarray[string]optionnelDestinataires en copie (action 'create'/'update'). Par défaut [].
bccarray[string]optionnelDestinataires en copie cachée (action 'create'/'update'). Par défaut [].
html_bodystringoptionnelCorps HTML facultatif (action 'create'/'update').
include_signaturebooleanoptionnelIndique s'il faut intégrer la signature configurée de la boîte au brouillon (action 'create'/'update'). Par défaut true ; mettez false pour enregistrer un brouillon sans la signature.
idempotency_keystringoptionnelClé opaque facultative (1–200 caractères) pour un seul envoi de brouillon. Ne la réutilisez que pour réessayer exactement le même envoi dans les 24 heures ; une réutilisation avec des arguments différents est rejetée.
limitintegeroptionnelNombre maximal de brouillons à renvoyer (action 'list'). Par défaut 20, max 50.
scheduleschedule:email

Programmer un e-mail pour une livraison ultérieure via une file d'attente côté serveur. Définissez action : 'create' (to/subject/body plus un horodatage send_at au format ISO 8601 : les destinataires et le corps sont validés immédiatement, et les envois invalides ne sont pas mis en file), 'list' (envois programmés en attente, les plus proches d'abord, éventuellement filtrés par boîte) ou 'cancel' (scheduled_send_id, seuls les envois encore 'pending' peuvent être annulés). Le distributeur s'exécute chaque minute, la livraison peut donc avoir lieu jusqu'à 60 secondes après send_at.

ParamètreTypeRequisDescription
actionenumrequisQuelle opération effectuer : "create", "list" ou "cancel". Détermine quels autres arguments s'appliquent.
inbox_idstring (uuid)optionnelUUID de la boîte depuis laquelle envoyer (action 'create') ou par laquelle filtrer (action 'list'). Facultatif : résolu automatiquement quand la clé n'a qu'une seule boîte ; sinon passez celui-ci ou inbox. Appelez inbox_list pour obtenir les ID de boîte disponibles.
inboxstringoptionnelAdresse e-mail de la boîte à utiliser, comme alternative pratique à inbox_id. Facultatif ; ignoré si inbox_id est fourni.
toarray[string]optionnelAdresses e-mail des destinataires (action 'create'). Max 50.
subjectstringoptionnelObjet de l'e-mail (action 'create'). Max 998 caractères.
bodystringoptionnelCorps en texte brut de l'e-mail (action 'create').
send_atstring (ISO 8601)optionnelDate-heure ISO 8601 avec fuseau horaire à laquelle envoyer (action 'create'). Doit être dans le futur, p. ex. "2026-06-02T09:00:00Z".
ccarray[string]optionnelDestinataires en copie (action 'create'). Par défaut [].
bccarray[string]optionnelDestinataires en copie cachée (action 'create'). Par défaut [].
html_bodystringoptionnelVersion HTML facultative du corps (action 'create').
reply_tostringoptionnelAdresse facultative de l'en-tête Reply-To (action 'create').
attachmentsarrayoptionnelPièces jointes (action 'create'). Même schéma que l'action send. Max 20 éléments, 10 Mo au total.
scheduled_send_idstring (uuid)optionnelUUID de l'envoi programmé à annuler (action 'cancel').
idempotency_keystringoptionnelClé opaque facultative pour la création d’un seul envoi programmé. Ne la réutilisez que pour réessayer exactement la même requête de création dans les 24 heures.
limitintegeroptionnelNombre maximal de résultats (action 'list'). Par défaut 20, max 100.
automationmanage:automations

Créez et gérez des règles de tri planifiées et sans surveillance. Une règle est une recherche enregistrée plus une action fixe, réévaluée à une cadence fixe et sans aucun modèle dans la boucle : le courrier est mis en correspondance, jamais interprété. Définissez action : 'create' (name, filter, rule_action et interval_minutes ; une règle est toujours créée désactivée), 'list', 'get', 'update', 'enable', 'disable', 'delete' (l'historique des exécutions est conservé), 'runs' (compteurs des exécutions récentes) ou 'preview' (une simulation qui indique ce que le filtre trouve à l'instant et n'applique rien). Les actions de règle disponibles sont move, label (un libellé Gmail, une catégorie Outlook ou un mot-clé IMAP), mark_read, forward et draft_reply. Supprimer du courrier n'est pas proposé à une automatisation. Un transfert est toujours retenu pour approbation humaine, quel que soit le réglage d'approbation de la boîte, et draft_reply se contente d'écrire un brouillon. Prévisualisez avant d'activer. Chaque action exige manage:automations.

ParamètreTypeRequisDescription
actionenumrequisOpération à effectuer : « create », « list », « get », « update », « enable », « disable », « delete », « runs » ou « preview ». Détermine quels autres arguments s'appliquent.
automation_idstring (uuid)optionnelUUID de la règle visée, tel que renvoyé par 'create' ou 'list'. Obligatoire pour get, update, enable, disable, delete et runs. Facultatif pour preview : passez-le pour simuler une règle enregistrée plutôt qu'un filtre improvisé.
inbox_idstring (uuid)optionnelUUID de la boîte surveillée par la règle ('create'), ou de la boîte à prévisualiser. Facultatif quand la clé ne couvre qu'une boîte ; sinon passez ce champ ou inbox.
inboxstringoptionnelAdresse e-mail de la boîte, alternative pratique à inbox_id. Facultatif ; ignoré si inbox_id est fourni.
namestringoptionnelNom lisible de la règle, de 1 à 80 caractères. Obligatoire pour 'create'.
filterobjectoptionnelLa recherche enregistrée, avec les mêmes critères structurés que ceux acceptés par l'action 'search' d'email_read : from, to, cc, subject, body, text, unread, has_attachment, flagged, since, before. Au moins un critère est exigé, car un filtre vide correspondrait à toute votre boîte. Les requêtes natives du fournisseur en texte brut ne sont pas acceptées ici : une règle se réexécute sans surveillance pendant des mois, et une chaîne brute est un dialecte que rien ne valide.
rule_actionobjectoptionnelL'unique action fixe appliquée à chaque correspondance, sous forme d'objet typé dont le type vaut move (plus folder), label (plus label ; écrit comme un libellé Gmail, une catégorie Outlook ou un mot-clé IMAP), mark_read, forward (plus to, et un note facultatif) ou draft_reply (plus template). Il s'appelle rule_action parce que action sélectionne déjà l'opération. Aucune action de suppression n'existe, et une telle demande est refusée et non ignorée. Un transfert est toujours retenu pour approbation, et draft_reply écrit seulement un brouillon. Un modèle ne substitue que {{sender_name}}, {{sender_email}}, {{subject}} et {{date}}, chacun échappé en HTML ; tout le reste est du texte littéral et le corps des messages n'est jamais interpolé.
interval_minutesenumoptionnelMinutes entre deux exécutions, dans l'échelle fixe 15, 30, 60, 180, 360, 720 ou 1440. Obligatoire pour 'create'. Une échelle plutôt qu'un entier libre, pour qu'une règle d'une minute ne pousse pas le fournisseur à limiter le débit.
max_messages_per_runintegeroptionnelNombre de messages correspondants qu'une exécution peut traiter : de 1 à 200, 25 par défaut. C'est le rayon d'impact : il plafonne la quantité de courrier qu'un filtre mal réglé peut toucher avant qu'une personne ne lise le journal d'exécution.
limitintegeroptionnelPour l'action 'runs' : nombre d'exécutions à renvoyer, de la plus récente à la plus ancienne. Par défaut 20, maximum 100.
signatureread:emailsend:email

Lire ou configurer la signature e-mail de la boîte, qui est ajoutée côté serveur à chaque envoi, réponse, transfert, brouillon et message programmé. Définissez action : 'get' (renvoie le texte et le HTML de la signature actuelle, si elle est activée, le mode de réponse/transfert et sa source, 'manual', 'gmail_import' ou null) ou 'set' (écrire signature_text et/ou signature_html, et éventuellement signature_enabled et signature_reply_mode). Les signatures prennent en charge le HTML enrichi : gras, italique, titres, listes, couleurs, alignement, liens et images/logos hébergés référencés par des URL https, de sorte qu'un agent peut définir une signature entièrement mise en forme en passant signature_html. Le même éditeur enrichi est disponible dans le tableau de bord. Définir une signature marque sa source comme 'manual', ce qui remplace définitivement l'import automatique de Gmail pour cette boîte. 'get' nécessite read:email ; 'set' nécessite send:email.

ParamètreTypeRequisDescription
actionenumrequisQuelle opération effectuer : "get" (lire la signature actuelle) ou "set" (l'écrire). Détermine quels autres arguments s'appliquent et quelle portée est requise.
inbox_idstring (uuid)optionnelUUID de la boîte dont la signature est lue ou définie. Facultatif : résolu automatiquement quand la clé n'a qu'une seule boîte ; sinon passez celui-ci ou inbox. Appelez inbox_list pour obtenir les ID de boîte disponibles.
inboxstringoptionnelAdresse e-mail de la boîte à utiliser, comme alternative pratique à inbox_id. Facultatif ; ignoré si inbox_id est fourni.
signature_textstringoptionnelCorps de signature en texte brut (action 'set'). Omettez-le pour ne rien changer ; passez une chaîne vide pour l'effacer. Si seul le texte est fourni, une version HTML est dérivée automatiquement à l'envoi.
signature_htmlstringoptionnelCorps de signature en HTML enrichi facultatif (action 'set'). Accepte la mise en forme (gras, italique, souligné, titres, listes, couleurs, alignement, liens) et des images hébergées via des balises <img> dont le src est une URL https (pas de base64 ni de CID) ; il est nettoyé à l'enregistrement. Omettez-le pour ne rien changer ; passez une chaîne vide pour l'effacer.
signature_enabledbooleanoptionnelIndique si la signature est ajoutée au courrier sortant (action 'set'). Par défaut true ; mettez false pour cesser de l'ajouter sans supprimer le texte.
signature_reply_modeenumoptionnelQuand inclure la signature dans les réponses et les transferts (action 'set') : "always" (chaque réponse/transfert), "first_only" (par défaut, uniquement le premier message d'un fil, pour éviter la double signature) ou "never".
Modèle de sécurité des automatisations

Ce qu'une règle planifiée peut faire, et ne peut pas faire.

Une automatisation touche votre boîte selon un calendrier, sans personne pour regarder. Ce n'est pas la même catégorie de risque qu'un agent avec lequel vous discutez, aussi les garanties ci-dessous sont-elles appliquées par le serveur plutôt que confiées à la règle que vous écrivez.

Aucun modèle ne tourne sans surveillance.

Une règle est une requête enregistrée plus une action fixe. À l'exécution, le serveur lance cette requête sur votre boîte et applique cette action aux correspondances. Rien ne lit votre courrier pour décider ensuite quoi en faire. Le contenu des e-mails est mis en correspondance, jamais interprété comme une instruction : l'injection de prompt est donc structurellement absente du chemin sans surveillance, et non simplement filtrée, notée ou atténuée. Il n'y a rien dans la boucle à qui un texte injecté puisse parler.

Cela mérite d'être dit clairement, car la forme dangereuse dans cette catégorie est un agent qui lit du courrier entrant non fiable puis agit dessus sans aucun humain présent. Des incidents publics, comme EchoLeak et le serveur MCP Postmark porteur d'une porte dérobée, ont légitimement rendu les acheteurs méfiants envers exactement cela. En session interactive, un modèle lit bien votre courrier, ce qui est tout l'intérêt du produit, et là une personne est présente et le contenu est marqué comme donnée non fiable. Le chemin planifié est celui qui s'exécute seul, et il ne contient aucun modèle.

Une automatisation ne supprime jamais de courrier.

La suppression n'est pas une action disponible, par conception. Déplacer, libeller, marquer comme lu, transférer et rédiger un brouillon de réponse forment l'ensemble complet. La suppression est la seule action qu'une règle défaillante rend irréversible : elle est donc exclue au niveau de la validation, où une action qui ne fait que nommer la suppression est refusée plutôt qu'ignorée en silence.

Les transferts attendent toujours une personne.

Un transfert issu d'une automatisation est placé dans la file d'approbation et ne quitte votre boîte qu'après validation par un membre de l'espace de travail, quel que soit le réglage d'approbation d'envoi de la boîte. Le nombre de destinataires est plafonné par règle. Une règle sans surveillance ne peut pas sortir du courrier de votre organisation toute seule.

Un brouillon de réponse reste un brouillon.

Une règle draft_reply écrit un brouillon non envoyé dans la conversation d'origine, et s'arrête là. Rien n'est envoyé sans surveillance, chez aucun fournisseur, sous aucune configuration.

Les modèles substituent quatre champs, et rien d'autre.

Un modèle de réponse est stocké tel quel et n'est jamais évalué. Seuls {{sender_name}}, {{sender_email}}, {{subject}} et {{date}} sont substitués, chacun échappé en HTML. Le corps des messages n'est jamais interpolé et il n'existe aucune syntaxe d'expression à évaluer : rien de ce qui arrive dans votre boîte ne peut transformer un modèle en calcul.

Chaque exécution laisse une trace.

Chaque exécution consigne ce que le filtre a trouvé, ce qui est arrivé à chaque message et ce qui a été mis en attente d'approbation, avec les compteurs de correspondances, traités, réussis, échoués et ignorés. Les actions réversibles conservent l'état nécessaire pour les annuler. L'historique survit à la règle à laquelle il appartient, car il est le compte rendu de ce qui a été fait à votre boîte. Consultez-le avec l'action 'runs' ou dans le tableau de bord.

Une règle a l'autorité d'exactement une clé.

Chaque règle s'exécute au nom de la clé d'API qui l'a créée. Elle ne peut jamais dépasser les portées ni l'accès aux boîtes dont cette clé dispose déjà, chacune de ses actions est comptabilisée, soumise aux limites de débit et écrite dans le journal d'audit exactement comme un appel interactif, et révoquer la clé arrête la règle.

L'échec répété la désactive.

Après 5 exécutions en échec consécutives, la règle est désactivée automatiquement et le motif est consigné. Une règle pointée sur une boîte qui ne répond plus s'arrête, au lieu de réessayer toutes les 15 minutes indéfiniment.

Un rayon d'impact plafonné par exécution.

Chaque règle porte un nombre maximal de messages qu'une exécution peut traiter, de 1 à 200 et 25 par défaut : un filtre plus large que prévu touche au plus ce nombre de messages avant que vous ne voyiez le journal. Une règle est en outre créée désactivée, et la prévisualisation est une simulation qui montre ce que le filtre trouve à l'instant sans rien appliquer.

Codes d'erreur

Codes d'erreur et conseils de réessai.

Les échecs d'authentification, de portée et de limite de débit renvoient un objet error JSON-RPC avec un code numérique. Les échecs d'exécution d'outil (boîte introuvable, erreur du fournisseur, plafond d'usage équitable atteint, etc.) renvoient un result normal avec isError: true et un message lisible dans content[0].text.

CodeTypeQuand cela survientRéessayable
-32001JSON-RPC errorClé API manquante, mal formée, révoquée ou expirée. Également renvoyé lorsque la clé API n'a pas la portée requise pour l'outil appelé.Non
-32601JSON-RPC errorMéthode JSON-RPC inconnue (par ex. appel d'une méthode autre qu'initialize, tools/list, tools/call)Non
-32602JSON-RPC errorNom d'outil inconnu, ou paramètre manquant / invalide dans tools/callNon
-32003JSON-RPC errorLimite de débit par clé ou par espace de travail dépassée (HTTP 429). data.error_code vaut toujours « rate_limit_exceeded ». Attendez data.retry_after secondes, ou lisez l'en-tête Retry-After, avant de réessayer.
isError: trueTool resultL'outil s'est exécuté mais a rencontré une erreur (boîte introuvable, message introuvable, échec d'authentification du fournisseur, destinataire invalide, pièce jointe trop volumineuse, fournisseur 5xx). La description de l'erreur se trouve dans content[0].text.Non
isError: trueTool resultL'espace de travail a atteint son plafond d'usage équitable sur les actions facturables pour la période de facturation en cours. Renvoyé comme un résultat d'outil normal avec isError: true, et non comme une erreur JSON-RPC, les détails se trouvant sous _meta["com.mcpemails/usage_limit"] : error_code « usage_limit_reached » et reset_at. Réessayer ne peut pas réussir avant reset_at.Non
Exemples de réponses d'erreur
json
// Tool execution error: inbox not found
{
  "jsonrpc": "2.0",
  "id": 2,
  "result": {
    "content": [{ "type": "text", "text": "Inbox not found or not accessible." }],
    "isError": true
  }
}

// Rate limit: JSON-RPC error object with data (HTTP 429). Safe to retry
// after retry_after seconds.
{
  "jsonrpc": "2.0",
  "id": 3,
  "error": {
    "code": -32003,
    "message": "Rate limit exceeded",
    "data": {
      "error_code": "rate_limit_exceeded",
      "window": "per_minute",
      "limit": 100,
      "used": 100,
      "retry_after": 34
    }
  }
}

// Fair-use ceiling: a normal tool result (HTTP 200) with isError: true.
// NOT a JSON-RPC error, and NOT retryable until reset_at.
{
  "jsonrpc": "2.0",
  "id": 4,
  "result": {
    "content": [{
      "type": "text",
      "text": "Usage limit reached for this workspace. Calls resume at reset_at."
    }],
    "isError": true,
    "_meta": {
      "com.mcpemails/usage_limit": {
        "error_code": "usage_limit_reached",
        "reset_at": "2026-09-01T00:00:00.000Z",
        "dashboard_url": "https://mcpemails.com/dashboard/usage"
      }
    }
  }
}
Limites de débit

Limites de débit et usage équitable.

Fenêtres glissantes par clé

100 req / min · 1 000 / h · 10 000 / jour

Appliqué par clé API quelle que soit la formule. En cas de dépassement, le serveur renvoie HTTP 429 avec le code d'erreur JSON-RPC -32003, data.error_code: "rate_limit_exceeded" et un champ data.retry_after (secondes). Respectez cette valeur avant de réessayer : il s'agit d'une courte pause réessayable.

Plafond par minute de la formule

Gratuit 60 / min · Personal 120 / min · Pro 300 / min · Team 1 000 / min

Une limite de pointe d'usage équitable par espace de travail, agrégée sur toutes vos clés API. En cas de dépassement, les appels renvoient le code d'erreur -32003 avec data.error_code: "rate_limit_exceeded", data.window: "per_minute" et un compte à rebours data.retry_after (secondes). Personal, Pro et Team relèvent le plafond.

Plafond d'usage équitable

Un arrêt, pas un backoff

Chaque espace de travail dispose d'un plafond d'usage équitable sur les actions facturables par période de facturation. Il se situe très au-dessus de l'usage réel et ne s'achète pas, mais un agent emballé peut l'atteindre. L'atteindre n'est pas une erreur JSON-RPC : l'appel renvoie HTTP 200 avec un résultat d'outil normal portant isError: true et un bloc _meta["com.mcpemails/usage_limit"] contenant error_code: "usage_limit_reached" et reset_at. Il n'y a pas de retry_after, car réessayer ne peut pas réussir avant reset_at. Traitez cela comme un arrêt, pas comme un backoff.

Réessayer en toute sécurité

Respectez toujours retry_after ; ne réessayez jamais les envois à l'aveugle

Pour les erreurs rate_limit_exceeded, attendez data.retry_after secondes avant de réessayer. Utilisez un backoff exponentiel pour provider_error. Ne réessayez pas automatiquement les envois email_compose en cas de provider_error, car le message a peut-être déjà été accepté par le fournisseur. Ne réessayez jamais usage_limit_reached : cela ne se débloque qu'à reset_at.

Prêt à connecter votre boîte de réception ?

Commencez avec la formule Gratuit : une boîte connectée, pour toujours et sans carte bancaire. Personal en connecte trois pour 5 $ par mois, Pro connecte toutes les boîtes que vous possédez, et Team ajoute des membres, des rôles et un espace de travail par client.