Send email via MailChannels Email API and ingest signed delivery-event webhooks into Clawdbot (Moltbot).
Scanned 9/7/2026
Install to Claude Code
npx -y skills add modbender/skill-library-mcp --skill mailchannels --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Mailchannels?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/modbender-mailchannels)More formats (shields.io, HTML) on the badges page.
---
name: mailchannels-email-api
description: Send email via MailChannels Email API and ingest signed delivery-event webhooks into Clawdbot (Moltbot).
homepage: https://docs.mailchannels.net/email-api/
metadata: {"moltbot":{"emoji":"📨","requires":{"env":["MAILCHANNELS_API_KEY","MAILCHANNELS_ACCOUNT_ID"],"bins":["curl"]},"primaryEnv":"MAILCHANNELS_API_KEY"}}
---
# MailChannels Email API (Send + Delivery Events)
## Environment
Required:
- `MAILCHANNELS_API_KEY` (send in `X-Api-Key`)
- `MAILCHANNELS_ACCOUNT_ID` (aka `customer_handle`)
Optional:
- `MAILCHANNELS_BASE_URL` (default: `https://api.mailchannels.net/tx/v1`), `MAILCHANNELS_WEBHOOK_ENDPOINT_URL`
## Domain Lockdown (DNS)
Create a TXT record for each sender domain:
- Host: `_mailchannels.<your-domain>`
- Value: `v=mc1; auid=<YOUR_ACCOUNT_ID>`
## API Quick Reference
Base URL: `${MAILCHANNELS_BASE_URL:-https://api.mailchannels.net/tx/v1}`
- Send: `POST /send`
- Send async: `POST /send-async`
- Webhook: `POST /webhook?endpoint=<url>`, `GET /webhook`, `DELETE /webhook`, `POST /webhook/validate`
- Public key: `GET /webhook/public-key?id=<keyid>`
## Sending Email
Minimum payload fields: `personalizations`, `from`, `subject`, `content`.
Use `/send` for normal traffic and `/send-async` for queued/low-latency; both produce webhooks.
Persist MailChannels correlation IDs (e.g., `request_id`).
## Delivery Events (Webhooks)
MailChannels POSTs a JSON array. Common fields: `email`, `customer_handle`, `timestamp`, `event`, `request_id`.
Bounce fields often include: `recipients`, `status`, `reason`, `smtp_id`.
## Moltbot Hooks Routing
1) Enable hooks in `~/.clawdbot/moltbot.json`.
2) Map `/hooks/<path>` to an agent action via `hooks.mappings` and optional transform.
3) Enroll the public endpoint in MailChannels `/webhook?endpoint=...`.
## Webhook Signature Verification
Headers: `Content-Digest`, `Signature-Input`, `Signature`.
Steps:
- Parse `Signature-Input` (name, `created`, `alg`, `keyid`).
- Reject stale `created` values.
- Fetch public key by `keyid`.
- Recreate the RFC 9421 signature base.
- Verify ed25519 signature (avoid hand-rolling).
Also verify JSON body is an array and every event has `customer_handle == MAILCHANNELS_ACCOUNT_ID`.
## Correlation + State Updates
Store your internal message ID + MailChannels IDs (e.g., `request_id`, `smtp_id`).
Update delivery state from events: `processed`, `delivered`, `soft-bounced`, `hard-bounced`, `dropped`.
Operational tips: respond 2xx quickly, process async, store raw events, dedupe retries.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!