Skip to main content
Glama
README.md
# ClawAIMail

**Email infrastructure for AI agents.**

[![npm version](https://img.shields.io/npm/v/clawaimail.svg)](https://www.npmjs.com/package/clawaimail)
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
[![Documentation](https://img.shields.io/badge/docs-clawaimail.com-brightgreen.svg)](https://clawaimail.com/docs)

---

ClawAIMail gives AI agents their own email addresses and full programmatic control over sending, receiving, and managing email. Built for developers who need reliable email primitives in agentic workflows.

## Features

- **REST API** -- Send, receive, search, and manage emails with a simple JSON API.
- **MCP Server** -- First-class Model Context Protocol server for Claude, Cursor, and other MCP-compatible clients.
- **WebSocket Streaming** -- Real-time email events pushed to your agent as they happen.
- **Webhooks** -- HTTP callbacks on incoming mail, delivery status, and other events.
- **Custom Domains** -- Bring your own domain or use a `@clawaimail.com` address.
- **SDKs** -- Official Node.js and Python SDKs for rapid integration.

## Quick Start

### Node.js

```bash
npm install clawaimail
```

```javascript
const { ClawAIMail } = require("clawaimail");

const client = new ClawAIMail({ apiKey: process.env.CLAWAIMAIL_API_KEY });

// Create a mailbox for your agent
const mailbox = await client.mailboxes.create({
  name: "support-agent",
  domain: "clawaimail.com",
});

// Send an email
await client.emails.send({
  from: mailbox.address,
  to: "user@example.com",
  subject: "Hello from my AI agent",
  text: "This email was sent by an autonomous agent.",
});

// List incoming emails
const inbox = await client.emails.list({
  mailbox: mailbox.id,
  unread: true,
});
```

### Python

```bash
pip install clawaimail
```

```python
from clawaimail import ClawAIMail

client = ClawAIMail(api_key="your-api-key")

# Create a mailbox
mailbox = client.mailboxes.create(name="support-agent", domain="clawaimail.com")

# Send an email
client.emails.send(
    from_address=mailbox.address,
    to="user@example.com",
    subject="Hello from my AI agent",
    text="This email was sent by an autonomous agent.",
)

# List incoming emails
inbox = client.emails.list(mailbox=mailbox.id, unread=True)
```

## MCP Server

ClawAIMail ships an MCP server so that Claude, Cursor, and other MCP-compatible clients can use email tools directly.

### Claude Desktop

Add the following to your Claude Desktop MCP config (`claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "clawaimail": {
      "command": "npx",
      "args": ["-y", "clawaimail-mcp"],
      "env": {
        "CLAWAIMAIL_API_KEY": "your-api-key"
      }
    }
  }
}
```

### Cursor

Add to your `.cursor/mcp.json`:

```json
{
  "mcpServers": {
    "clawaimail": {
      "command": "npx",
      "args": ["-y", "clawaimail-mcp"],
      "env": {
        "CLAWAIMAIL_API_KEY": "your-api-key"
      }
    }
  }
}
```

Once configured, the agent can call tools like `send_email`, `read_inbox`, `search_emails`, and `create_mailbox` without any additional code.

## Self-Hosting

ClawAIMail can be self-hosted for full control over your email infrastructure.

```bash
# Clone the repository
git clone https://github.com/joansongjr/clawaimail.git
cd clawaimail

# Install dependencies
npm install

# Configure environment
cp .env.example .env
# Edit .env with your SMTP credentials, database URL, and API keys

# Run database migrations
npm run db:migrate

# Start the server
npm start
```

The server will be available at `http://localhost:3000` by default. See the [self-hosting docs](https://clawaimail.com/docs/self-hosting) for production deployment guides (Docker, Railway, Fly.io).

## API Endpoints

| Method | Endpoint | Description |
|--------|----------|-------------|
| `POST` | `/v1/emails/send` | Send an email |
| `GET` | `/v1/emails` | List emails for a mailbox |
| `GET` | `/v1/emails/:id` | Get a single email by ID |
| `DELETE` | `/v1/emails/:id` | Delete an email |
| `POST` | `/v1/mailboxes` | Create a new mailbox |
| `GET` | `/v1/mailboxes` | List all mailboxes |
| `DELETE` | `/v1/mailboxes/:id` | Delete a mailbox |
| `POST` | `/v1/webhooks` | Register a webhook |
| `GET` | `/v1/webhooks` | List registered webhooks |
| `DELETE` | `/v1/webhooks/:id` | Remove a webhook |
| `GET` | `/v1/domains` | List verified domains |
| `POST` | `/v1/domains/verify` | Verify a custom domain |
| `GET` | `/v1/ws` | WebSocket connection for real-time events |

Full API reference: [clawaimail.com/docs/api](https://clawaimail.com/docs/api)

## Pricing

| | Free | Starter | Pro | Business |
|---|---|---|---|---|
| **Price** | $0/mo | $5/mo | $29/mo | $99/mo |
| **Emails/month** | 100 | 5,000 | 50,000 | 500,000 |
| **Mailboxes** | 1 | 10 | 100 | Unlimited |
| **Custom domains** | -- | 1 | 5 | Unlimited |
| **Webhooks** | 1 | 5 | 25 | Unlimited |
| **WebSocket** | -- | Yes | Yes | Yes |
| **Support** | Community | Email | Priority | Dedicated |

Self-hosted deployments are free and unlimited. See [clawaimail.com/pricing](https://clawaimail.com/pricing) for details.

## Links

- [Documentation](https://clawaimail.com/docs)
- [Node.js SDK](https://www.npmjs.com/package/clawaimail)
- [Python SDK](https://pypi.org/project/clawaimail/)
- [Website](https://clawaimail.com)
- [Status Page](https://status.clawaimail.com)

## License

MIT -- see [LICENSE](./LICENSE) for details.

TDQS

A3.6/5.0

Scored across 10 tools

Disambiguation5/5

Each tool targets a distinct operation: account info, inbox CRUD, message listing/reading/searching/sending, and a getting-started guide. No overlapping purposes.

Naming Consistency4/5

Most tools follow a consistent verb_noun snake_case pattern (e.g., create_inbox, list_messages). However, 'getting_started' (gerund) and 'my_email' (possessive) deviate slightly.

Tool Count5/5

10 tools cover the essential email operations (inbox management, message reading/writing/searching, account info) without being excessive or insufficient.

Completeness4/5

The set includes CRUD for inboxes, message operations, search, and sending with attachments. Missing operations like updating an inbox or deleting a message are minor gaps.

Maintenance

ActivityInactive
ResponsivenessUnresponsive