Clawdie AI

The add-protonmail skill adds a send_email tool to your agent. It uses ProtonMail's SMTP submission tokens — available for custom domain addresses like hello@clawdie.si — to send authenticated emails directly from chat.

Prerequisites

A ProtonMail account with a custom domain (e.g. hello@clawdie.si). Standard @proton.me / @protonmail.com addresses do not support SMTP submission tokens — a custom domain is required.

Setup

1. Enable SMTP submission and generate a token

  1. Log in to Proton Mail
  2. Go to Settings → All Settings → Proton Mail → SMTP submission
  3. Enable SMTP submission for your domain
  4. Click Generate token next to your address
  5. Copy the token — it will not be shown again
About SMTP tokens

SMTP tokens are separate from your login password. They are address-specific, can be revoked individually, and do not grant access to your inbox. Revoking a token does not affect your account or other tokens.

2. Add to .env

PROTONMAIL_SMTP_USER=hello@clawdie.si
PROTONMAIL_SMTP_TOKEN=your_smtp_token_here

3. Apply the skill

npx tsx scripts/apply-skill.ts .agent/skills/add-protonmail

# Rebuild the jail agent runner
cd jail/agent-runner && npm install && npm run build

The agent now has a send_email tool. No restart needed.

Available tools

ToolParametersDescription
send_email to, subject, body, cc?, reply_to? Send a plain-text email from your ProtonMail address

The tool is only registered when both PROTONMAIL_SMTP_USER and PROTONMAIL_SMTP_TOKEN are set. If either is absent, the skill is inert.

Example conversations

Outbound notification

"Send John a confirmation that his order shipped"
send_email(to: "john@example.com", subject: "Your order shipped", body: "Hi John...")

Composed reply

"Reply to Sarah's pricing question"
→ Agent drafts a response, calls send_email with your address as From

Scheduled sends

"Email the weekly report every Monday at 9am"
→ Agent schedules a task that generates and sends the report automatically

Team broadcasts

"Send the outage notice to the team list"
→ Agent composes and sends to multiple recipients

How it works

The send_email tool is implemented in jail/agent-runner/src/protonmail-tools.ts and registered into the existing ipc-mcp-stdio MCP server — the same server used for task scheduling and message sending. No additional daemons, no Proton Bridge required.

Outbound mail goes to smtp.protonmail.ch:587 via STARTTLS using nodemailer. The SMTP token authenticates the connection.

PROTONMAIL_SMTP_USER and PROTONMAIL_SMTP_TOKEN are passed to the jail via encrypted stdin (JailAgentInput.secrets), never via environment variables or mounted files.

Limitations

This skill is send-only.

  • The agent cannot read the ProtonMail inbox
  • Incoming emails do not trigger the agent automatically
  • No threading — replies are new emails, not IMAP thread continuations
Why no SMTP tokens for standard addresses?

ProtonMail's SMTP submission feature is designed for custom domain email sending (transactional mail, CRM integration, etc.). Standard ProtonMail addresses (@proton.me) require Proton Bridge for SMTP access.

Roadmap: full inbound channel

The full version of this skill will add a ProtonmailChannel that:

  • Polls the ProtonMail inbox via IMAP (through Proton Bridge headless daemon)
  • Delivers incoming emails to the main group automatically
  • Enables full reply threading — the same pattern as add-gmail

This requires Proton Bridge running as a FreeBSD service. Bridge is a Go binary — FreeBSD headless support is being evaluated. Once confirmed, the skill will be extended without breaking the current send-only setup.

Featurev1 (current)v2 (Bridge)
Send emails✓ SMTP token✓ SMTP via Bridge
Read inbox✓ IMAP via Bridge
Auto-trigger on inbound
Daemon required✓ Bridge as rc.d service
FreeBSD nativeTBD