Anslut en AI-assistent (MCP)
Anslut Claude, Cursor, VS Code eller Gemini CLI till Workflow Transactional Email via MCP för att granska inställningar och felsöka utskick.
Appen kör en MCP-server, vilket innebär att en AI-assistent kan granska din konfiguration, skapa och översätta e-postmallar, hantera dina HTTP-förfrågningar och rensa upp i ditt mediebibliotek direkt, istället för att du själv behöver kopiera konfigurationen fram och tillbaka.
Användbara funktioner: skapa ett utkast till en marknadsföringslayout med dina sidfotstexter, översätt en layout till alla språk som du säljer på, granska vilka e-postlayouter som hänvisar till en hemlighet som snart ska bytas ut, hitta alla uppladdade bilder som inte längre används, förklara varför gårdagens utskick misslyckades eller skapa en ny HTTP-förfrågan utifrån dokumentationen för ett tredjeparts-API.
Slutpunkt
POST https://shopify.workflow-transactional-email.app/api/mcpTransportprotokollet är Streamable HTTP. Autentiseringen sker med samma bearer-nyckel som för REST-API:et - se Autentisering och API-nycklar.
Ansluta
Fliken ”MCP” på appens utvecklarsida genererar ett kommando som är klart att kopieras, där din URL och nyckel redan är ifyllda, för Claude, Claude Desktop, Cursor, VS Code och Gemini CLI. Använd det istället för att skriva in det för hand.
För Claude Code ser kommandot ut så här:
claude mcp add --transport http flow-transactional-email \
https://shopify.workflow-transactional-email.app/api/mcp \
--header "Authorization: Bearer fak_your_key_here"För redigerare som använder en JSON-konfiguration ser strukturen ut så här:
{
"mcpServers": {
"flow-transactional-email": {
"url": "https://shopify.workflow-transactional-email.app/api/mcp",
"headers": {
"Authorization": "Bearer fak_your_key_here"
}
}
}
}Tillgängliga verktyg
Verktygssatsen speglar din nyckels nivå. En skrivskyddad nyckel avvisas inte bara när den anropar ett skrivverktyg - den ser inte ens det verktyget i listan, så en assistent kan inte övertalas att försöka använda det.
Läs (15 verktyg)
E-postmallar: list_email_templates, get_email_template, get_layout_schema, list_template_translations, list_template_versions, get_template_version. list_email_templates tar emot q, category (transactional eller marketing), page och limit.
E-postavsändare: list_smtp_configs, list_senders
Hemligheter: list_secret_keys (endast namn)
HTTP-förfrågningar: list_http_requests, get_http_request
Media: list_files (ange usage: true för att se vad som fortfarande refererar till varje fil)
Historik: list_history (filtrera efter status, inklusive SKIPPED för marknadsföringsmejl där alla mottagare har avslutat prenumerationen), get_history_entry, get_stats
Läs och skriv (lägger till 12)
E-postmallar: create_email_template, update_email_template, delete_email_template
Språk: set_template_translation, delete_template_translation, promote_template_translation
Versioner: restore_template_version, restore_template_github_version
HTTP-förfrågningar: create_http_request, update_http_request, delete_http_request
Media: delete_file
Läsa, skriva och köra (lägger till 1)
test_http_request - utför en konfigurerad HTTP-förfrågan mot det verkliga målet.
Att skapa planritningar med hjälp av en assistent
Be assistenten att först läsa get_layout_schema: där beskrivs det visuella designformatet med standardinställningarna för varje block, vilken Liquid-kod du kan använda och vilka begränsningar som gäller - allt genererat av själva byggverktyget. Därefter tar create_email_template emot ett name, ett subject och ett bodyDesign (visuellt, standard) eller ett HTML-body (text). Layouten visas omedelbart i appen och varje ändring sparas i versionshistoriken, så ingenting som assistenten gör går inte att ångra.
Två fält avgör hur en layout fungerar i ett e-postmeddelande:
category:transactional(standard) ellermarketing. En marknadsföringslayout utelämnar mottagare som har avslutat prenumerationen och innehåller en länk för att avsluta prenumerationen samt en sidfot; se Marknadsföringsmejl och avregistreringar.marketingTexts: sidfotstexterna i en marknadsföringslayout istället för butikens texter från Inställningar,{ unsubscribeText, unsubscribeLinkLabel, companyDetails }, alla fält är valfria;nullinnebär att texterna från Inställningar används. Texten för avregistrering måste innehålla{{ unsubscribe_link }}eller{{ unsubscribe_url }}.
set_template_translation skapar eller ersätter ett språk med det fullständiga översatta innehållet. För en textlayout kan den även innehålla attachments (en lista = detta språks egna filer, null = layoutens, utelämnat = oförändrat), och för en marknadsföringslayout marketingTexts för det språket utöver layoutens. promote_template_translation gör ett språk till layoutens huvudspråk; de två byter plats, så ingenting går förlorat.
Ett bra första förslag:
"Läs layoutschemat och översätt sedan min layout ’Order shipped’ till tyska och franska. Behåll alla Liquid-taggar och URL:er exakt som de är."
Varje skrivning kontrolleras på samma sätt som när man sparar i appen: Liquid måste analysera uppgifterna, filerna måste tillhöra dig själv, och verktyget anger vilket fält som gav fel.
Städa upp i mediebiblioteket
Ett bra användningsområde för en assistent. Be den att visa en lista över dina filer med information om deras användning och ta sedan bort de filer som ingen hänvisar till:
"Visa en lista över mina uppladdade filer med information om hur de används och ange vilka som inte används av någon. Ta sedan bort dem."
delete_file-kommandot avvisas med felkod 409 om någon e-postmall eller förinställning för sidhuvud/sidfot fortfarande hänvisar till filen, och avvisningsmeddelandet anger vad som använder den - vilket innebär att assistenten inte kan ta bort en logotyp som ett aktivt e-postmeddelande fortfarande behöver, även om du ber den att göra det.
Det som assistenten aldrig kan se
Det finns medvetet inget verktyg som returnerar ett hemligt värde, ett SMTP-användarnamn eller lösenord, eller en inloggningstoken för en postlåda. list_secret_keys returnerar endast namn.
Det är just det som är poängen med konstruktionen: du kan be en assistent att skriva en HTTP-förfrågan som autentiserar sig hos din betalningsleverantör, och den kommer att hänvisa till {{ secrets.stripeApiKey }} på rätt sätt utan att själva nyckeln någonsin hamnar i modellens kontext.
Historik som returneras via MCP maskeras på exakt samma sätt som via REST. Samma varning gäller - maskeringen omfattar fältnamn och värdemönster, och fält med fritext kan fortfarande innehålla personuppgifter i kommunikationen. Tänk på detta innan du låter en assistent hantera ett stort historikintervall.
