Connecter un assistant IA (MCP)

L'application exécute un serveur MCP, ce qui permet à un assistant IA d'analyser votre configuration, de créer et de traduire des modèles d'e-mails, de gérer vos requêtes HTTP et de mettre de l'ordre dans votre bibliothèque multimédia directement, sans que vous ayez à copier-coller la configuration d'un endroit à l'autre.

Voici quelques-unes de ses fonctionnalités utiles : créer une maquette marketing avec vos textes de pied de page, traduire une maquette dans toutes les langues dans lesquelles vous commercialisez vos produits, vérifier quelles maquettes d'e-mails font référence à un élément secret sur le point d'être remplacé, identifier toutes les images mises en ligne qui ne sont plus utilisées, expliquer pourquoi les envois d'hier ont échoué, ou créer une nouvelle requête HTTP à partir de la documentation d'une API tierce.

Point d'extrémité

text
POST https://shopify.workflow-transactional-email.app/api/mcp

Le protocole de transport utilisé est Streamable HTTP. L'authentification s'effectue à l'aide de la même clé « bearer » que pour l'API REST - voir Authentification et clés API.

Connexion

L'onglet « MCP » de la page « Développeur » de l'application génère une commande prête à être copiée, dans laquelle votre URL et votre clé sont déjà renseignées, pour Claude, Claude Desktop, Cursor, VS Code et Gemini CLI. Utilisez-la plutôt que de la saisir manuellement.

Pour Claude Code, la commande se présente comme suit :

bash
claude mcp add --transport http flow-transactional-email \
  https://shopify.workflow-transactional-email.app/api/mcp \
  --header "Authorization: Bearer fak_your_key_here"

Pour les éditeurs utilisant une configuration JSON, le format est le suivant :

~/.cursor/mcp.jsonjson
{
  "mcpServers": {
    "flow-transactional-email": {
      "url": "https://shopify.workflow-transactional-email.app/api/mcp",
      "headers": {
        "Authorization": "Bearer fak_your_key_here"
      }
    }
  }
}

Outils disponibles

L'ensemble d'outils correspond au niveau de votre clé. Une clé en lecture seule ne se contente pas d'être refusée lorsqu'elle tente d'utiliser un outil d'écriture : elle ne voit tout simplement pas cet outil apparaître dans la liste, de sorte qu'il est impossible de convaincre un assistant de tenter cette opération.

Lire (15 outils)

Modèles d'e-mails : list_email_templates, get_email_template, get_layout_schema, list_template_translations, list_template_versions, get_template_version. list_email_templates prend en charge q, category (transactional ou marketing), page et limit.

Expéditeurs des e-mails : list_smtp_configs, list_senders

Secrets : list_secret_keys (noms uniquement)

Requêtes HTTP : list_http_requests, get_http_request

Médias : list_files (utilisez le paramètre usage: true pour voir ce qui fait encore référence à chaque fichier)

Historique : list_history (filtrer par status, y compris SKIPPED pour les e-mails marketing dont tous les destinataires se sont désabonnés), get_history_entry, get_stats

Lecture et écriture (ajoute 12)

Modèles d'e-mails : create_email_template, update_email_template, delete_email_template

Langues : set_template_translation, delete_template_translation, promote_template_translation

Versions : restore_template_version, restore_template_github_version

Requêtes HTTP : create_http_request, update_http_request, delete_http_request

Médias : delete_file

Lecture, écriture et exécution (ajoute 1)

test_http_request - exécute une requête HTTP configurée à l'encontre de la cible réelle.

Créer des plans d'étage à l'aide d'un assistant

Demandez à l’assistant de lire d’abord get_layout_schema : ce document décrit le format de conception visuelle avec les paramètres par défaut de chaque bloc, le code Liquid que vous pouvez utiliser et les contraintes, générées par le générateur lui-même. Ensuite, create_email_template prend en charge une URL de type name, subject et bodyDesign (mode visuel, par défaut) ou une URL HTML de type body (mode texte). La mise en page s’affiche immédiatement dans l’application et chaque modification est conservée dans l’historique des versions ; ainsi, aucune action effectuée par un assistant ne peut être considérée comme irréversible.

Deux champs déterminent le comportement d'une mise en page dans un e-mail :

  • category : transactional (par défaut) ou marketing. Un modèle marketing exclut les destinataires désabonnés et comporte un lien de désabonnement ainsi qu'un pied de page ; voir E-mails marketing et désabonnements.
  • marketingTexts : les textes du pied de page d'une mise en page marketing au lieu de ceux de la boutique, tels qu'ils apparaissent dans les Paramètres, { unsubscribeText, unsubscribeLinkLabel, companyDetails } ; chaque champ est facultatif ; null correspond aux textes des Paramètres. La phrase de désabonnement doit contenir {{ unsubscribe_link }} ou {{ unsubscribe_url }}.

set_template_translation crée ou remplace une langue par l'intégralité du contenu traduit. Pour une mise en page de texte, il peut également comporter des informations de type attachments (une liste = les fichiers propres à cette langue, null = ceux de la mise en page, « omis » = inchangés), et pour une mise en page marketing, des informations de type marketingTexts pour cette langue en plus de celles de la mise en page. promote_template_translation fait de cette langue la langue principale de la mise en page ; les deux échangent leurs places, de sorte que rien n’est perdu.

Une bonne première demande :

« Veuillez lire le schéma de mise en page, puis traduisez ma mise en page « Commande expédiée » en allemand et en français. Conservez toutes les balises Liquid et toutes les URL exactement telles quelles. »

Chaque opération d'écriture est vérifiée comme s'il s'agissait d'une sauvegarde dans l'application : Liquid doit analyser les données, les fichiers doivent vous appartenir, et l'outil vous indique le champ qui a posé problème.

Mettre de l'ordre dans la médiathèque

Une utilisation utile de cet assistant. Demandez-lui de répertorier vos fichiers en indiquant leur utilisation, puis de supprimer ceux qui ne sont référencés par aucun autre fichier :

« Veuillez dresser la liste de mes fichiers téléchargés en indiquant leur utilisation et me signaler ceux qui ne sont utilisés par aucun programme. Supprimez ensuite ces derniers. »

delete_file La demande est refusée avec un code d'erreur 409 si un modèle d'e-mail ou un préréglage d'en-tête/pied de page fait encore référence à ce fichier, et le message d'erreur précise quel élément l'utilise. L'assistant ne peut donc pas supprimer un logo dont un e-mail actif a encore besoin, même si vous le lui demandez.

Ce que l'assistant ne peut jamais voir

Il n'existe délibérément aucun outil permettant d'obtenir une valeur secrète, un nom d'utilisateur ou un mot de passe SMTP, ni un jeton d'accès à une boîte aux lettres. La commande list_secret_keys ne renvoie que des noms.

C'est là tout l'intérêt de cette conception : vous pouvez demander à un assistant de rédiger une requête HTTP permettant de s'authentifier auprès de votre prestataire de paiement, et celle-ci fera correctement référence à {{ secrets.stripeApiKey }} sans que la clé elle-même n'entre jamais dans le contexte du modèle.

L'historique renvoyé via MCP est masqué exactement de la même manière que via REST. La même mise en garde s'applique : le masquage s'applique aux noms de champs et aux modèles de valeurs, et les champs de texte libre peuvent toujours contenir des données à caractère personnel dans l'échange. Pensez-y avant de demander à un assistant d'analyser une large plage de l'historique.