Een AI-assistent (MCP) koppelen
De app draait op een MCP-server, zodat een AI-assistent uw configuratie kan controleren, e-maillay-outs kan opstellen en vertalen, uw HTTP-verzoeken kan beheren en uw mediabibliotheek direct kan opschonen, in plaats van dat u zelf de configuratie heen en weer moet kopiëren.
Handige dingen die het kan doen: een marketinglay-out opstellen met uw voettekstteksten, een lay-out vertalen naar elke taal waarin u verkoopt, controleren welke e-maillay-outs verwijzen naar een geheim dat binnenkort wordt gewijzigd, alle geüploade afbeeldingen opsporen die nergens meer worden gebruikt, uitleggen waarom de verzendingen van gisteren zijn mislukt, of een nieuw HTTP-verzoek opstellen op basis van de documentatie van een API van een derde partij.
Eindpunt
POST https://shopify.workflow-transactional-email.app/api/mcpHet protocol is Streamable HTTP. Voor de authenticatie wordt dezelfde bearer-sleutel gebruikt als bij de REST-API - zie Authenticatie en API-sleutels.
Verbinding maken
Via het tabblad ‘MCP’ op de ontwikkelaarspagina van de app kunt u een kopieerklare opdracht genereren waarin uw URL en sleutel al zijn ingevuld, voor Claude, Claude Desktop, Cursor, VS Code en Gemini CLI. Gebruik deze opdracht in plaats van deze met de hand in te voeren.
Voor Claude Code ziet het commando er als volgt uit:
claude mcp add --transport http flow-transactional-email \
https://shopify.workflow-transactional-email.app/api/mcp \
--header "Authorization: Bearer fak_your_key_here"Voor editors die gebruikmaken van een JSON-configuratie is de structuur als volgt:
{
"mcpServers": {
"flow-transactional-email": {
"url": "https://shopify.workflow-transactional-email.app/api/mcp",
"headers": {
"Authorization": "Bearer fak_your_key_here"
}
}
}
}Beschikbare hulpmiddelen
De set met bewerkingen weerspiegelt het niveau van uw sleutel. Een sleutel met alleen-lezen-toegang wordt niet alleen geweigerd wanneer deze een schrijfbewerking aanroept - deze ziet die bewerking helemaal niet in de lijst staan, zodat een assistent er ook niet toe kan worden overgehaald om deze te proberen.
Lees (15 hulpmiddelen)
E-mailindelingen: list_email_templates, get_email_template, get_layout_schema, list_template_translations, list_template_versions, get_template_version. list_email_templates ondersteunt q, category (transactional of marketing), page en limit.
Afzenders van de e-mails: list_smtp_configs, list_senders
Geheimen: list_secret_keys (alleen namen)
HTTP-verzoeken: list_http_requests, get_http_request
Media: list_files (voer usage: true in om te zien welke bestanden nog naar elk bestand verwijzen)
Geschiedenis: list_history (filter op status, inclusief SKIPPED voor marketingmails waarvan alle ontvangers zich hadden afgemeld), get_history_entry, get_stats
Lezen en schrijven (optellen tot 12)
E-mailontwerpen: create_email_template, update_email_template, delete_email_template
Talen: set_template_translation, delete_template_translation, promote_template_translation
Versies: restore_template_version, restore_template_github_version
HTTP-verzoeken: create_http_request, update_http_request, delete_http_request
Media: delete_file
Lezen, schrijven en uitvoeren (voegt 1 toe)
test_http_request - voert een geconfigureerd HTTP-verzoek uit naar het daadwerkelijke doel.
Gebouwindelingen opstellen met behulp van een assistent
Vraag de assistent om eerst get_layout_schema te lezen: hierin wordt het visuele ontwerpformaat beschreven, inclusief de standaardinstellingen van elk blok, de Liquid-code die u kunt gebruiken en de beperkingen die door de builder zelf worden gegenereerd. Vervolgens neemt create_email_template een name, een subject en een bodyDesign (visueel, de standaardinstelling) of een HTML-body (tekst) in ontvangst. De lay-out verschijnt direct in de app en elke wijziging wordt bijgehouden in de versiegeschiedenis, zodat alles wat een assistent doet ongedaan kan worden gemaakt.
Twee velden bepalen hoe een lay-out zich als e-mail gedraagt:
category:transactional(standaard) ofmarketing. Bij een marketinglay-out worden ontvangers die zich hebben afgemeld overgeslagen en wordt er een afmeldlink en een voettekst weergegeven; zie Marketingmails en afmeldingen.marketingTexts: de voetteksten van een marketinglay-out in plaats van die van de webshop uit de instellingen,{ unsubscribeText, unsubscribeLinkLabel, companyDetails }; elk veld is optioneel;nullverwijst naar de teksten uit de instellingen. De afmeldzin moet{{ unsubscribe_link }}of{{ unsubscribe_url }}bevatten.
set_template_translation maakt een taal aan of vervangt een bestaande taal door de volledig vertaalde inhoud. Voor een tekstopmaak kan het ook attachments bevatten (a list = de eigen bestanden van deze taal, null = die van de opmaak, omitted = ongewijzigd), en voor een marketingopmaak marketingTexts voor die taal bovenop die van de opmaak. promote_template_translation maakt van een taal de hoofdtaal van de opmaak; de twee wisselen van plaats, zodat er niets verloren gaat.
Een goed eerste verzoek:
"Lees het lay-outschema door en vertaal vervolgens mijn lay-out 'Bestelling verzonden' naar het Duits en het Frans. Laat alle Liquid-tags en URL’s precies zo staan als ze zijn."
Elke schrijfbewerking wordt op dezelfde manier gecontroleerd als het opslaan in de app: Liquid moet de gegevens parseren, de bestanden moeten van uzelf zijn en de tool geeft aan welk veld niet is goedgekeurd.
De mediabibliotheek op orde brengen
Een handige toepassing voor een assistent. Vraag hem om een overzicht van uw bestanden te maken, inclusief het gebruik ervan, en verwijder vervolgens de bestanden waarnaar nergens wordt verwezen:
"Geef een overzicht van mijn geüploade bestanden met het bijbehorende gebruik en geef aan welke bestanden door niemand worden gebruikt. Verwijder die vervolgens."
delete_file wordt afgewezen met een 409-foutcode als er nog een e-mailopmaak of een voorinstelling voor kop- of voettekst is die naar het bestand verwijst, en bij de afwijzing wordt vermeld wat het bestand gebruikt - de assistent kan dus geen logo verwijderen dat nog nodig is voor een actieve e-mail, zelfs niet als u hem daarom vraagt.
Wat de assistent nooit kan zien
Er is bewust geen tool die een geheime waarde, een SMTP-gebruikersnaam of -wachtwoord, of een inlogtoken voor een mailbox retourneert. list_secret_keys geeft uitsluitend namen weer.
Dat is juist het doel van het ontwerp: u kunt een medewerker vragen om een HTTP-verzoek op te stellen waarmee bij uw betalingsprovider wordt geauthenticeerd, en daarin wordt correct naar {{ secrets.stripeApiKey }} verwezen, zonder dat de sleutel zelf ooit in de context van het model terechtkomt.
De geschiedenis die via MCP wordt teruggestuurd, wordt op precies dezelfde manier gemaskeerd als via REST. Hetzelfde voorbehoud geldt: het maskeren is van toepassing op veldnamen en waardepatronen, en in vrije-tekstvelden kunnen nog steeds persoonsgegevens in de communicatie voorkomen. Houd hier rekening mee voordat u een assistent op een groot bereik van de geschiedenis richt.

