Conecte um assistente de IA (MCP)

O aplicativo executa um servidor MCP, de modo que um assistente de IA pode verificar sua configuração, criar e traduzir layouts de e-mail, gerenciar suas solicitações HTTP e organizar sua biblioteca de mídia diretamente, em vez de você precisar copiar a configuração de um lado para outro.

Funções úteis que ele pode realizar: elaborar um layout de marketing com seus textos de rodapé, traduzir um layout para todos os idiomas em que você atua, verificar quais layouts de e-mail fazem referência a um segredo que está prestes a ser alterado, localizar todas as imagens enviadas que não são mais utilizadas, explicar por que os envios de ontem falharam ou criar uma nova solicitação HTTP a partir da documentação de uma API de terceiros.

Ponto final

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

O transporte é feito por Streamable HTTP. A autenticação é feita com a mesma chave de portador da API REST - consulte Autenticação e chaves de API.

Conectando

A guia “MCP” na página “Desenvolvedor” do aplicativo gera um comando pronto para ser copiado, com sua URL e chave já preenchidas, para o Claude, o Claude Desktop, o Cursor, o VS Code e o Gemini CLI. Utilize-o em vez de digitá-lo manualmente.

No Claude Code, o comando tem a seguinte forma:

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

Para editores que utilizam uma configuração JSON, o formato é o seguinte:

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

Ferramentas disponíveis

O conjunto de ferramentas reflete o nível da sua chave. Uma chave somente leitura não é simplesmente rejeitada quando tenta acessar uma ferramenta de gravação - ela nem sequer vê essa ferramenta na lista, de modo que não é possível convencer um assistente a tentar utilizá-la.

Leia (15 ferramentas)

Modelos de e-mail: list_email_templates, get_email_template, get_layout_schema, list_template_translations, list_template_versions, get_template_version. O endereço list_email_templates aceita q, category (transactional ou marketing), page e limit.

Remetentes do e-mail: list_smtp_configs, list_senders

Segredos: list_secret_keys (apenas nomes)

Solicitações HTTP: list_http_requests, get_http_request

Mídia: list_files (insira usage: true para verificar quais arquivos ainda fazem referência a cada um deles)

Histórico: list_history (filtrar por status, incluindo SKIPPED para e-mails de marketing cujos destinatários tenham cancelado a inscrição), get_history_entry, get_stats

Leitura e escrita (soma de 12)

Modelos de e-mail: create_email_template, update_email_template, delete_email_template

Idiomas: set_template_translation, delete_template_translation, promote_template_translation

Versões: restore_template_version, restore_template_github_version

Solicitações HTTP: create_http_request, update_http_request, delete_http_request

Mídia: delete_file

Ler, gravar e executar (adiciona 1)

test_http_request - executa uma solicitação HTTP configurada no alvo real.

Criação de plantas baixas com um assistente

Peça ao assistente para ler primeiro get_layout_schema: ele descreve o formato de design visual com os padrões de cada bloco, o Liquid que você pode usar e os limites, gerados pelo próprio construtor. Em seguida, create_email_template aceita um name, um subject e um bodyDesign (visual, o padrão) ou um HTML body (texto). O layout aparece imediatamente no aplicativo e todas as alterações são mantidas no histórico de versões; portanto, nada do que um assistente fizer está fora do alcance da função “desfazer”.

Dois campos determinam como um layout se comporta em um e-mail:

  • category: transactional (padrão) ou marketing. Um layout de marketing ignora os destinatários que cancelaram a inscrição e exibe um link para cancelamento de inscrição e um rodapé; consulte E-mails de marketing e cancelamentos de inscrição.
  • marketingTexts: os textos do rodapé de um layout de marketing, em vez dos da loja, conforme definido em Configurações, { unsubscribeText, unsubscribeLinkLabel, companyDetails }; todos os campos são opcionais; null significa os textos de Configurações. A frase de cancelamento de inscrição deve conter {{ unsubscribe_link }} ou {{ unsubscribe_url }}.

set_template_translation cria ou substitui um idioma pelo conteúdo totalmente traduzido. Para um layout de texto, também pode conter attachments (a list = arquivos próprios desse idioma, null = do layout, omitido = inalterado), e para um layout de marketing, marketingTexts para esse idioma, além dos do layout. promote_template_translation torna um idioma o idioma principal do layout; os dois trocam de lugar, de modo que nada se perde.

Um bom primeiro pedido:

"Leia o esquema do layout e, em seguida, traduza meu layout 'Pedido enviado' para o alemão e o francês. Mantenha todas as tags Liquid e URLs exatamente como estão."

Cada gravação é verificada da mesma forma que um salvamento no aplicativo: o Liquid precisa analisar os dados, os arquivos devem ser de sua autoria e a ferramenta informa qual campo apresentou falha.

Organizando a biblioteca de mídia

Um bom uso para um assistente. Peça a ele para listar seus arquivos, incluindo o uso de cada um, e, em seguida, exclua aqueles aos quais nada faz referência:

"Liste os meus arquivos enviados com o respectivo uso e indique quais não estão sendo utilizados por nenhum programa. Em seguida, exclua esses arquivos."

delete_file A solicitação é recusada com um código 409 caso algum layout de e-mail ou predefinição de cabeçalho/rodapé ainda faça referência ao arquivo, e a recusa indica o que o está utilizando - portanto, o assistente não pode remover um logotipo de que um e-mail ativo ainda necessite, mesmo que você solicite isso.

O que o assistente nunca pode ver

Não existe, deliberadamente, nenhuma ferramenta que retorne um valor secreto, um nome de usuário ou senha SMTP, nem um token de acesso à caixa de correio. O comando list_secret_keys retorna apenas nomes.

Esse é o objetivo do projeto: o senhor pode solicitar a um assistente que crie uma solicitação HTTP que realize a autenticação junto ao seu provedor de pagamentos, e ela fará referência a {{ secrets.stripeApiKey }} corretamente, sem que a chave em si chegue a entrar no contexto do modelo.

O histórico retornado por meio do MCP é mascarado exatamente da mesma forma que no REST. A mesma ressalva se aplica: a mascaramento atua sobre nomes de campos e padrões de valores, e os campos de texto livre ainda podem conter dados pessoais na conversa. Leve isso em consideração antes de direcionar um assistente a um amplo intervalo de histórico.