Koble til en AI-assistent (MCP)
Koble Claude, Cursor, VS Code eller Gemini CLI til Workflow Transactional Email via MCP for å kontrollere konfigurasjoner og feilsøke utsendelser.
Appen kjører en MCP-server, slik at en AI-assistent kan sjekke oppsettet ditt, lage og oversette e-postmaler, administrere HTTP-forespørsler og rydde opp i mediebiblioteket ditt direkte, i stedet for at du må kopiere konfigurasjonen frem og tilbake.
Nyttige ting den kan gjøre: utarbeide et markedsføringsoppsett med bunntekstene dine, oversette et oppsett til alle språkene du selger på, sjekke hvilke e-postoppsett som refererer til en hemmelighet som snart skal byttes ut, finne alle opplastede bilder som ikke lenger brukes, forklare hvorfor gårsdagens utsendelser mislyktes, eller lage en ny HTTP-forespørsel basert på dokumentasjonen til et tredjeparts-API.
Endepunkt
POST https://shopify.workflow-transactional-email.app/api/mcpTransporten skjer via Streamable HTTP. Autentiseringen skjer med samme «bearer»-nøkkel som for REST-API-et - se Autentisering og API-nøkler.
Kobler til
Fanen MCP på appens utviklerside genererer en kommando som er klar til å kopieres, med din URL og nøkkel allerede utfylt, for Claude, Claude Desktop, Cursor, VS Code og Gemini CLI. Bruk den i stedet for å skrive den inn for hånd.
For Claude Code ser kommandoen slik ut:
claude mcp add --transport http flow-transactional-email \
https://shopify.workflow-transactional-email.app/api/mcp \
--header "Authorization: Bearer fak_your_key_here"For redigeringsprogrammer som bruker en JSON-konfigurasjon, ser strukturen slik ut:
{
"mcpServers": {
"flow-transactional-email": {
"url": "https://shopify.workflow-transactional-email.app/api/mcp",
"headers": {
"Authorization": "Bearer fak_your_key_here"
}
}
}
}Tilgjengelige verktøy
Verktøysettet avspeiler nøkkelens nivå. En skrivebeskyttet nøkkel blir ikke bare avvist når den prøver å bruke et skriveverktøy - den ser ikke engang dette verktøyet i listen, så en assistent kan ikke overtales til å prøve det.
Les (15 verktøy)
E-postmaler: list_email_templates, get_email_template, get_layout_schema, list_template_translations, list_template_versions, get_template_version. list_email_templates tar imot q, category (transactional eller marketing), page og limit.
E-postavsendere: list_smtp_configs, list_senders
Hemmeligheter: list_secret_keys (kun navn)
HTTP-forespørsler: list_http_requests, get_http_request
Media: list_files (bruk usage: true for å se hva som fremdeles refererer til hver fil)
Historikk: list_history (filtrer etter status, inkludert SKIPPED for markedsførings-e-poster der alle mottakerne har meldt seg av), get_history_entry, get_stats
Lesing og skriving (legger sammen 12)
E-postmaler: create_email_template, update_email_template, delete_email_template
Språk: set_template_translation, delete_template_translation, promote_template_translation
Versjoner: restore_template_version, restore_template_github_version
HTTP-forespørsler: create_http_request, update_http_request, delete_http_request
Media: delete_file
Les, skriv og utfør (legger til 1)
test_http_request - utfører en konfigurert HTTP-forespørsel mot det virkelige målet.
Utarbeide planløsninger med en assistent
Be assistenten om å lese get_layout_schema først: den beskriver det visuelle designformatet med standardinnstillingene for hver blokk, hvilken Liquid du kan bruke og begrensningene, generert av selve byggverktøyet. Deretter tar create_email_template imot et name, et subject og et bodyDesign (visuelt, standard) eller en HTML-body (tekst). Oppsettet vises umiddelbart i appen, og alle endringer lagres i versjonshistorikken, slik at alt assistenten gjør kan angres.
To felt avgjør hvordan et oppsett fungerer i en e-post:
category:transactional(standard) ellermarketing. En markedsføringsmal utelater mottakere som har meldt seg av, og inneholder en avmeldingslenke og en bunntekst; se Markedsførings-e-poster og avmeldinger.marketingTexts: bunntekstene i et markedsføringsoppsett i stedet for butikkens tekster fra Innstillinger,{ unsubscribeText, unsubscribeLinkLabel, companyDetails }; alle feltene er valgfrie;nullbetyr at tekstene fra Innstillinger brukes. Avmeldingssetningen må inneholde{{ unsubscribe_link }}eller{{ unsubscribe_url }}.
set_template_translation oppretter eller erstatter ett språk med det fullstendige oversatte innholdet. For en tekstmal kan den også inneholde attachments (en liste = dette språkets egne filer, null = malens, utelatt = uendret), og for en markedsføringsmal marketingTexts for det aktuelle språket i tillegg til malens. promote_template_translation gjør et språk til malens hovedspråk; de to bytter plass, slik at ingenting går tapt.
Et godt første forslag:
«Les oppsettskjemaet, og oversett deretter oppsettet mitt «Order shipped» til tysk og fransk. Behold alle Liquid-tagger og URL-er nøyaktig slik de er.»
Hver skriveoperasjon kontrolleres på samme måte som når man lagrer i appen: Liquid må analysere dataene, filene må være dine egne, og verktøyet oppgir hvilket felt som ga feil.
Rydding i mediebiblioteket
En god oppgave for en assistent. Be den om å lage en liste over filene dine med opplysninger om bruken, og deretter slette de som ingen refererer til:
«Vis en liste over filene jeg har lastet opp, med informasjon om bruken, og fortell meg hvilke som ikke brukes av noen. Slett deretter disse.»
delete_file-kommandoen avslås med feilkode 409 dersom en e-postmal eller en forhåndsinnstilling for topp- eller bunntekst fortsatt refererer til filen, og avslaget angir hva som bruker den - dermed kan assistenten ikke fjerne et logo som en aktiv e-post fortsatt trenger, selv om du ber den om det.
Det assistenten aldri kan se
Det finnes bevisst ikke noe verktøy som returnerer en hemmelig verdi, et SMTP-brukernavn eller -passord, eller et påloggingstoken for en postkasse. list_secret_keys returnerer kun navn.
Det er poenget med utformingen: Du kan be en assistent om å skrive en HTTP-forespørsel som autentiserer seg hos betalingsleverandøren din, og den vil henvise til {{ secrets.stripeApiKey }} på riktig måte uten at selve nøkkelen noensinne kommer inn i modellens kontekst.
Historikken som returneres via MCP, blir maskert på nøyaktig samme måte som via REST. Det samme forbeholdet gjelder - maskeringen omfatter feltnavn og verdimønstre, og fritekstfelt kan fortsatt inneholde personopplysninger i kommunikasjonen. Tenk på dette før du lar en assistent søke i et stort historikkintervall.
