AhaSend Email API & SMTP relay

oficial

Envie e-mails, descubra por que um e-mail falhou, configure domínios de envio e gerencie modelos, contatos, listas e campanhas na sua conta AhaSend.

O que você pode fazer com AhaSend Email API & SMTP Relay MCP?

  • Enviar e-mail — Peça ao assistente para enviar um e-mail avulso, um e-mail de modelo ou um e-mail de conversa, e cancele um envio agendado.
  • Diagnosticar entrega — Consulte mensagens, descubra por que um e-mail falhou e obtenha estatísticas de entregabilidade, rejeição e tempo de entrega.
  • Gerenciar domínios — Liste, adicione, atualize e exclua domínios de envio, e verifique os registros DNS de um domínio.
  • Criar modelos — Crie, atualize, publique e versione modelos e modelos de campanha, editando designs do Simple Editor como marcação AhaML.
  • Gerenciar público — Crie e atualize contatos, listas e segmentos, adicione contatos a listas e visualize um segmento.
  • Executar campanhas — Crie, duplique, teste, envie e agende campanhas, depois verifique as estatísticas e os destinatários da campanha.

Servidor MCP hospedado

npx add-mcp 'https://mcp.ahasend.com/mcp'

Instala no Claude Code, Codex, Cursor e outros

Documentação

ahasend-mcp

Um módulo Go com ferramentas MCP para o AhaSend. Com essas ferramentas, um agente de IA pode enviar e-mail, descobrir por que um e-mail falhou e gerenciar domínios, templates, contatos, listas, campanhas, webhooks, rotas, supressões, credenciais SMTP e subcontas.

Cada ferramenta chama a API v2 do AhaSend por meio do ahasend-go. Os escopos da chave de API decidem o que o agente pode fazer.

O módulo constrói um servidor com o SDK MCP oficial para Go. Seu programa escolhe como servi-lo: stdio, HTTP ou qualquer outro transporte do SDK.

go get github.com/AhaSend/ahasend-mcp

Exemplo

server, err := ahasendmcp.NewServer(
	&mcp.Implementation{Name: "my-app", Version: "1.0.0"},
	ahasendmcp.Options{
		Client:           api.NewAPIClient(api.WithAPIKey(apiKey)),
		AccountID:        accountID,
		DashboardBaseURL: "https://dash.ahasend.com",
		ConfirmationKey:  key, // at least 32 random bytes
	},
)
if err != nil {
	return err
}
return server.Run(ctx, &mcp.StdioTransport{})

Opções

CampoO que faz
ClientO cliente ahasend-go, com a chave de API. Obrigatório.
AccountIDA conta em que as ferramentas operam. Obrigatório.
DashboardBaseURLA URL do painel do AhaSend, usada em links de campanha. Obrigatório.
ConfirmationKeyUm segredo de pelo menos 32 bytes que assina as perguntas de envio de campanha. Obrigatório.
ScopesOs escopos da chave de API. Apenas as ferramentas que a chave pode usar são exibidas. nil exibe todas as ferramentas.
ToolsetsExibe apenas estes conjuntos de ferramentas. nil exibe todos.
ReadOnlyExibe apenas ferramentas que não alteram nada.
StatelessDefina como true se você servir via HTTP sem estado.
MaxRecipientsPerSendO número máximo de destinatários por envio. Padrão 50.
ReadInboundPermite que as ferramentas de mensagem retornem e-mails recebidos pela conta. Desativado por padrão.
BlockedSe definido, toda chamada de ferramenta retorna este texto como erro e não faz nada.
RecorderRecebe um registro por chamada de ferramenta: nome da ferramenta, sucesso, tipo de erro e tempo gasto. Nunca as entradas ou resultados.

Se você atende muitos usuários, construa um novo servidor para cada requisição com a chave e os escopos daquele usuário. Isso é barato. Use o mesmo ConfirmationKey em todas as instâncias.

Catalogue() lista cada ferramenta com os escopos de que precisa. OfferedScopes() lista cada escopo usado pelas ferramentas, para uma página em que o usuário escolhe escopos.

Ferramentas

Conjunto de ferramentasFerramentas
sendingsend_email, send_conversation_email, send_template_email, cancel_scheduled_email
diagnosticslist_messages, get_message, diagnose_message, get_deliverability_stats, get_bounce_stats, get_delivery_time_stats
domainslist_domains, get_domain, add_domain, check_domain_dns, update_domain, delete_domain
templateslist_templates, get_template, get_published_template, create_template, update_template, delete_template, discard_template_draft, publish_template, list_template_versions, get_template_version, restore_template_version, list_campaign_templates, get_campaign_template, create_campaign_template, update_campaign_template, delete_campaign_template
audiencelist_contacts, get_contact, create_contact, upsert_contacts, update_contact, delete_contact, list_contact_lists, list_lists, get_list, create_list, update_list, delete_list, list_list_contacts, add_contacts_to_list, upsert_list_contact, remove_contact_from_list, list_segments, get_segment, create_segment, update_segment, delete_segment, preview_segment, list_segment_contacts, list_contact_segments
campaignslist_campaigns, get_campaign, create_campaign, update_campaign, delete_campaign, duplicate_campaign, send_campaign_test, send_campaign, schedule_campaign, unschedule_campaign, get_campaign_stats, list_campaign_recipients
managementget_account, list_webhooks, get_webhook, create_webhook, update_webhook, delete_webhook, list_routes, get_route, create_route, update_route, delete_route, list_suppressions, add_suppression, remove_suppression, list_smtp_credentials, get_smtp_credential, delete_smtp_credential, list_sub_accounts, get_sub_account, create_sub_account, update_sub_account, get_sub_account_usage

Cada ferramenta precisa dos escopos de que seu endpoint de API precisa. send_campaign e schedule_campaign também precisam de campaigns:read e lists:read, e segments:read para enviar uma campanha que usa segmentos. As ferramentas de template de campanha também precisam de campaigns:read. preview_segment, list_segment_contacts e list_contact_segments precisam de contacts:read além de segments:read.

As ferramentas de listagem retornam 20 itens por padrão e no máximo 100. Passe o cursor retornado para obter a próxima página.

Não há ferramentas para criar chaves de API ou credenciais SMTP, alterar configurações da conta, cobrança ou membros da equipe, remover todas as supressões, ou excluir ou suspender subcontas.

Designs do Simple Editor e AhaML

As ferramentas de template, template de campanha e campanha leem e gravam um design do Simple Editor do painel como AhaSend Markup (AhaML), uma forma XML do design, no campo markup do conteúdo. get_template retorna a cópia de trabalho de um template, o rascunho enquanto ele existir, para que um agente edite o que leu; get_published_template retorna a cópia que um envio usa.

O servidor tem um recurso, ahasend://docs/ahaml: a referência AhaML, com cada tag, atributo, limite e código de erro. Ele também está em https://ahasend.com/docs/send-api/ahaml. O recurso é listado em toda conexão, para que um agente sem acesso à web possa lê-lo.

Regras de segurança

Envios de campanha precisam do sim de uma pessoa. send_campaign e schedule_campaign mostram ao usuário um formulário com o horário de envio, o número de contatos, o nome da campanha, assunto, remetente, listas e segmentos, e as listas e segmentos excluídos. Eles enviam somente se o usuário responder sim. Se a campanha mudar após a pergunta, a ferramenta pergunta novamente. Se o cliente não puder exibir um formulário, a ferramenta não envia nada e retorna um link para a campanha no painel.

Envios avulsos têm um limite de destinatários. Um único envio para mais de MaxRecipientsPerSend destinatários (padrão 50) é recusado. Use uma campanha para e-mail em massa.

E-mails recebidos ficam ocultos por padrão. Qualquer pessoa pode enviar e-mail para os endereços de entrada de uma conta, e esse e-mail pode conter texto que tenta enganar o agente. A menos que ReadInbound esteja ativado, as ferramentas de mensagem não retornam e-mails recebidos. Quando estiver ativado, as mensagens recebidas são marcadas untrusted: true.

Erros

Quando a API recusa uma chamada, a ferramenta retorna um erro com a mensagem da API e o que fazer em seguida. Quando ela recusa AhaML, o erro lista os problemas, até os primeiros 100, cada um com seu código, linha, coluna, caminho e dica; a mensagem da API informa quantos são.

Testando localmente

cmd/ahasend-mcp-dev serve todas as ferramentas via stdio com sua própria chave de API. É apenas para testes.

go build -o ahasend-mcp-dev ./cmd/ahasend-mcp-dev
claude mcp add ahasend \
  -e AHASEND_API_KEY=... -e AHASEND_ACCOUNT_ID=... \
  -- ./ahasend-mcp-dev

Defina AHASEND_BASE_URL para usar uma API diferente da padrão.

Licença

MIT