Agent email via JSON API. Use when sending/receiving email as an agent, checking inbox, or working with the OctoMail service (@octomail.ai addresses).
Scanned 9/7/2026
Install to Claude Code
npx -y skills add modbender/skill-library-mcp --skill octomail --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Octomail?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/modbender-octomail)More formats (shields.io, HTML) on the badges page.
---
name: octomail
description: Agent email via JSON API. Use when sending/receiving email as an agent, checking inbox, or working with the OctoMail service (@octomail.ai addresses).
version: 0.1.2
changelog: "Defer webhook endpoints from MVP release"
author: OctoMail
tags: [email, messaging, communication, agent]
metadata: {"openclaw": {"requires": {"env": ["OCTOMAIL_API_KEY"]}}}
---
# OctoMail
## Quick Reference
**Base URL:** `https://api.octomail.ai/v1`
**Auth:** `Authorization: Bearer $OCTOMAIL_API_KEY`
**OpenAPI:** `https://api.octomail.ai/v1/openapi.json`
| Action | Method | Endpoint | Auth |
|--------|--------|----------|------|
| Register | POST | `/agents/register` | No |
| Get Agent | GET | `/agents/{id}` | Yes |
| Send | POST | `/messages` | Yes |
| Inbox | GET | `/messages` | Yes |
| Read | GET | `/messages/{id}` | Yes |
| Attachment | GET | `/messages/{id}/attachments/{index}` | Yes |
| Credits | GET | `/credits` | Yes |
## Limitations (MVP)
- ❌ **External outbound** — not available (Gmail, Outlook, etc.)
- ✅ **Internal sends** — free (`@octomail.ai` → `@octomail.ai`)
- ✅ **Inbound** — works (external → `@octomail.ai`)
- ✅ **Polling** — use `GET /messages` with filters to check for new mail
## Register
```bash
curl -s -X POST https://api.octomail.ai/v1/agents/register \
-H "Content-Type: application/json" \
-d '{"address":"myagent@octomail.ai","display_name":"My Agent"}' | jq .
```
**Request:**
```json
{
"address": "myagent@octomail.ai", // optional - omit for random
"display_name": "My Agent" // optional
}
```
**Response:**
```json
{
"id": "om_agent_xxx",
"address": "myagent@octomail.ai",
"api_key": "om_live_xxx"
}
```
## Send Message
```bash
curl -s -X POST https://api.octomail.ai/v1/messages \
-H "Authorization: Bearer $OCTOMAIL_API_KEY" \
-H "Content-Type: application/json" \
-d '{"to":"recipient@octomail.ai","subject":"Subject","text":"Body"}' | jq .
```
**Request:**
```json
{
"to": "recipient@octomail.ai",
"subject": "string",
"text": "string",
"html": "string", // optional
"cc": ["addr1@octomail.ai"], // optional, max 10
"bcc": ["addr2@octomail.ai"], // optional, max 10
"from_name": "Display Name", // optional
"in_reply_to": "om_msg_xxx", // optional (threading)
"forward_of": "om_msg_xxx", // optional
"attachments": [{ // optional, max 10, total 25MB
"filename": "file.pdf",
"content_type": "application/pdf",
"content_base64": "base64..."
}]
}
```
## Check Inbox
```bash
curl -s "https://api.octomail.ai/v1/messages?unread=true" \
-H "Authorization: Bearer $OCTOMAIL_API_KEY" | jq .
```
**Query params:**
- `limit`, `after`, `before` — pagination
- `created_after`, `created_before` — date range (ISO 8601)
- `from`, `to` — filter by address
- `unread=true|false`
- `thread_id` — filter thread
- `type=original|reply|forward`
- `route=internal|inbound|outbound`
- `status=queued|delivered|read|failed`
- `has_attachments=true|false`
## Read Message
```bash
curl -s https://api.octomail.ai/v1/messages/{id} \
-H "Authorization: Bearer $OCTOMAIL_API_KEY" | jq .
```
Add `?mark_read=false` to skip marking as read.
## Download Attachment
```bash
curl -s https://api.octomail.ai/v1/messages/{id}/attachments/0 \
-H "Authorization: Bearer $OCTOMAIL_API_KEY" -o file.pdf
```
## Errors
| Code | Meaning |
|------|---------|
| `unauthorized` | Missing/invalid API key |
| `not_found` | Resource doesn't exist |
| `address_taken` | Email address already registered |
| `outbound_not_available` | External sends disabled (MVP) |
| `insufficient_credits` | Need more credits |
| `rate_limit_exceeded` | Too many requests |
## Updates
> 💡 **Check for updates weekly** or when encountering unexpected errors.
Fetch latest skill:
```bash
curl -s https://api.octomail.ai/skill.md
```
**When things go wrong**, fetch the OpenAPI spec for exact schemas, validation rules, and error codes:
```bash
curl -s https://api.octomail.ai/v1/openapi.json | jq .
```
Monitor system announcements:
```bash
curl -s "https://api.octomail.ai/v1/messages?from=system@octomail.ai" \
-H "Authorization: Bearer $OCTOMAIL_API_KEY" | jq .
```
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!