mailpal-mcp
Free email for AI agents -- MCP server for mailpal.com
uvx mailpal-mcp
or
pip install mailpal-mcp
Why MailPal?
- Free forever -- every AI agent gets a real
@mailpal.comemail address at no cost - Hardware attestation -- emails are cryptographically signed by your TPM, proving they came from real hardware (via 1id.com). Attestation is ON by default.
- Full protocols -- SMTP, IMAP, JMAP, CalDAV, CardDAV. Not a toy API -- a real mail server powered by Stalwart
Tools
| Tool | Description |
|---|---|
mailpal_activate_account |
Create your @mailpal.com email address (two-phase Proof-of-Intelligence challenge) |
mailpal_send_email |
Send email with hardware attestation ON by default (mode 2 = SD-JWT, mode 1 = direct TPM CMS, mode 0 = none) |
mailpal_check_inbox |
Check inbox for messages -- returns summaries with sender, subject, date, preview |
mailpal_read_message |
Read full message content including text body, HTML body, and all metadata |
mailpal_subscribe_to_inbox |
Subscribe to real-time "You've Got Mail!" notifications when new email arrives |
mailpal_wait_for_email |
Block until new email arrives or timeout (requires subscribe first) |
mailpal_register_email_callback |
Register a webhook URL to POST when new email arrives |
mailpal_unregister_email_callback |
Remove a previously registered webhook callback |
mailpal_jmap |
Raw JMAP passthrough -- delete, move, flag, search, folders, contacts, calendars, sieve filters, blob upload, anything JMAP supports |
oneid_get_or_create_identity |
Get or create a hardware-anchored 1id identity for this agent |
oneid_status |
Full picture of identity, devices, connected services |
oneid_get_bearer_token |
Get an OAuth2 Bearer token for the current identity |
oneid_sign_challenge |
Sign a verifier-provided nonce to prove hardware identity |
oneid_verify_peer_identity |
Verify another agent's identity proof bundle |
oneid_list_credential_pointers |
List credential pointers for an identity |
The mailpal_jmap tool gives your agent access to the full JMAP specification (RFC 8620/8621)
and all Stalwart extensions. If a convenience tool doesn't exist for what you need, use this.
Quick Start
1. Get a 1id.com identity
pip install oneid
oneid enroll
This creates a hardware-anchored identity. The MCP server uses it directly: each MailPal request is signed with your enrolled key (TPM, YubiKey, Secure Enclave or software key), because 1ID tokens are sender-constrained -- a token on its own is refused. There is no token to copy into a config file.
2. Add to your MCP client
Cursor (~/.cursor/mcp.json):
{
"mcpServers": {
"mailpal": {
"command": "uvx",
"args": ["mailpal-mcp"]
}
}
}
Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"mailpal": {
"command": "uvx",
"args": ["mailpal-mcp"]
}
}
}
Windsurf (~/.windsurf/mcp.json):
{
"mcpServers": {
"mailpal": {
"command": "uvx",
"args": ["mailpal-mcp"]
}
}
}
Environment Variables
| Variable | Required | Description |
|---|---|---|
MAILPAL_API_URL |
No | Override API base URL (default: https://mailpal.com/api/v1) |
Also Available As
- TypeScript:
mailpal-mcp-serveron npm --npx mailpal-mcp-server - REST API:
https://mailpal.com/api/v1/(docs) - Direct IMAP/SMTP:
imap.mailpal.com:993/smtp.mailpal.com:587(standard email clients)
Comparison
| Feature | MailPal | AgentMail | Robotomail | Nylas |
|---|---|---|---|---|
| Free tier | Unlimited | 100 msgs | Limited | Paid |
| Real SMTP/IMAP | Yes | API only | API only | Yes |
| Hardware attestation | Yes (ON by default) | No | No | No |
| CalDAV/CardDAV | Yes | No | No | Yes |
| MCP server | Yes | Yes | No | No |
| JMAP passthrough | Yes | No | No | No |
| Real-time inbox push | Yes | No | No | No |
| Self-hostable | Yes (Stalwart) | No | No | No |
Development
git clone https://github.com/mailpal-com/mcp-python.git
cd mcp-python
pip install -e .
mailpal-mcp
Test with MCP Inspector:
npx -y @modelcontextprotocol/inspector
License
Apache-2.0 -- see LICENSE.
Built by Crypt Inc. -- the team behind 1id.com and mailpal.com.
Release files for mailpal-mcp 1.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| mailpal_mcp-1.2.0.tar.gz | 22.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mailpal_mcp-1.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 45.6 kB
Release files / mailpal_mcp-1.2.0.tar.gz
| Download URL | mailpal_mcp-1.2.0.tar.gz |
|---|---|
| Size | 22.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f53c810c24e7b12a13bb05faac6138d6c461fd4daf12dd20240b6fefc2e8ec04
|
|
BLAKE2b-256 checksum How to use checksums |
0e2388d1311f4d066f90bfe2805ead8a35a0451695af91f0057b246e5f0c0c80
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.14
|
Release files / mailpal_mcp-1.2.0-py3-none-any.whl
| Download URL | mailpal_mcp-1.2.0-py3-none-any.whl |
|---|---|
| Size | 23.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
521658a00ec9d686e101379dea9d5b7a5eaf11b986317884af8d4a5b104c5863
|
|
BLAKE2b-256 checksum How to use checksums |
49ec8656c464ffecbe3124d6dbd88e3e94994291035a889c26b325ca5dfc6e68
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.14
|