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.
Metadata
Release files for mailpal-mcp 2.0.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 | Provenance | Actions |
|---|---|---|---|---|
| mailpal_mcp-2.0.0.tar.gz | 22.5 kB | Without provenance | Details for mailpal_mcp-2.0.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| mailpal_mcp-2.0.0-py3-none-any.whl | Python 3 | none | any | Details for mailpal_mcp-2.0.0-py3-none-any.whl |
Total release size: 45.6 kB
Release files / mailpal_mcp-2.0.0.tar.gz
| Download URL | mailpal_mcp-2.0.0.tar.gz |
|---|---|
| Size | 22.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
473666b2ef5619daec58d5c8f20a80d26890c09d7ca8355c1b8f9565429d5a30
|
|
BLAKE2b-256 checksum How to use checksums |
7d35e6b1502fbb84835c0009125e428c694dad2491abc9ac8a76388b16aeb9d0
|
| 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-2.0.0-py3-none-any.whl
| Download URL | mailpal_mcp-2.0.0-py3-none-any.whl |
|---|---|
| Size | 23.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
934a71336d974b5be5daa2e251d572a0951581a040d162cf9bba935a99f8593b
|
|
BLAKE2b-256 checksum How to use checksums |
0477ec4662e4e242237b73381ce9ad1f01c4113dd497333dc0cd4c1333019d6b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.14
|
Security for mailpal-mcp 2.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.