← 返回 Skills 市场
oyagev

Mailgi - Free Email for Agents

作者 oyagev · GitHub ↗ · v1.0.2 · MIT-0
cross-platform ✓ 安全检测通过
164
总下载
0
收藏
0
当前安装
3
版本数
在 OpenClaw 中安装
/install mailgi
功能描述
Register and manage email agents to send, receive, organize, and read emails via Mailgi's API with optional blockchain-based billing and DID authentication.
使用说明 (SKILL.md)

mailgi — SKILL FILE

This file teaches you how to use the mailgi email API. You are an AI agent. Read this file, then you can send and receive email.

Base URL: https://api.mailgi.xyz Auth: Authorization: Bearer \x3CapiKey> on all authenticated requests.


1. Get an email address

Register once. No password, no OAuth.

POST /v1/agents/register
Content-Type: application/json

{ "label": "my-agent" }

Response:

{
  "agentId": "clxxx...",
  "emailAddress": "[email protected]",
  "aliasAddress": "[email protected]",
  "apiKey": "amb_...",
  "apiKeyId": "clyyy..."
}

Store apiKey immediately. It is shown exactly once.

emailAddress is your friendly address. Use it for sending and tell others to send to it. aliasAddress is a deterministic alias — both receive mail to the same inbox.


2. Check your profile

GET /v1/agents/me
Authorization: Bearer \x3CapiKey>

3. Read your inbox

GET /v1/mail
Authorization: Bearer \x3CapiKey>

Optional query params:

  • mailboxId — filter to a specific folder
  • limit — max results (default 20, max 100)
  • position — pagination offset (default 0)
  • sortasc or desc (default desc)

Response: { messages: [...], total: N, position: N }

Each message has: id, subject, from, to, receivedAt, preview, seen.

Get full body of a message:

GET /v1/mail/\x3Cid>
Authorization: Bearer \x3CapiKey>

Response includes htmlBody and/or textBody. If body is a string, use it directly. If it is an array of JMAP parts, look up bodyValues[part.partId].value for the text.


4. Send email

POST /v1/mail/send
Authorization: Bearer \x3CapiKey>
Content-Type: application/json

{
  "to": ["[email protected]"],
  "subject": "Hello from my agent",
  "textBody": "Hi there."
}

Optional fields: cc, bcc, htmlBody, replyTo. to, cc, bcc accept a single string or an array of strings.

Response: { "messageId": "..." }

Sending is free. Rate limit: 100 external emails per day per API key.


5. Manage mailboxes (folders)

List folders:

GET /v1/mailboxes
Authorization: Bearer \x3CapiKey>

Each mailbox has id, name, role (inbox/sent/trash/drafts/etc), totalEmails, unreadEmails.

Create a folder:

POST /v1/mailboxes
Authorization: Bearer \x3CapiKey>
Content-Type: application/json

{ "name": "Projects", "parentId": "\x3Coptional parent id>" }

Move a message to a folder:

PATCH /v1/mail/\x3Cid>/move
Authorization: Bearer \x3CapiKey>
Content-Type: application/json

{ "mailboxId": "\x3Cfolder id>" }

Mark as read:

PATCH /v1/mail/\x3Cid>/flags
Authorization: Bearer \x3CapiKey>
Content-Type: application/json

{ "seen": true }

Delete a message (moves to Trash):

DELETE /v1/mail/\x3Cid>
Authorization: Bearer \x3CapiKey>

6. API keys

You can create additional API keys (e.g. one per task):

POST /v1/apikeys
Authorization: Bearer \x3CapiKey>
Content-Type: application/json

{ "label": "task-runner", "expiresAt": "2026-12-31T00:00:00Z" }

Response includes apiKey (raw, shown once) and id.

List keys: GET /v1/apikeys Revoke a key: DELETE /v1/apikeys/\x3CkeyId>


7. DID-based auth (optional)

If you registered with a did:key: DID, you can authenticate without an API key:

  1. Request a challenge:
POST /v1/auth/challenge
Content-Type: application/json

{ "did": "did:key:z6Mk..." }
  1. Sign the returned nonce with your Ed25519 private key (base64url), then verify:
POST /v1/auth/verify
Content-Type: application/json

{ "did": "did:key:z6Mk...", "nonce": "...", "signature": "\x3Cbase64url Ed25519 sig>" }

Response: { "token": "...", "expiresIn": 3600 } — use as Authorization: Bearer \x3Ctoken>.


8. Error responses

All errors follow:

{ "error": { "code": "ERROR_CODE", "message": "Human-readable description" } }

Common codes:

  • 401 — missing or invalid API key
  • 404 — message or mailbox not found
  • 409 — conflict (e.g. mailbox name already exists)
  • 429 — rate limit exceeded

9. Health

GET /health        — liveness (always 200 if server is up)
GET /health/ready  — readiness (checks DB + mail server)

Quick start (copy-paste)

# 1. Register
RESP=$(curl -s -X POST https://api.mailgi.xyz/v1/agents/register \
  -H "Content-Type: application/json" \
  -d '{"label":"my-agent"}')
EMAIL=$(echo $RESP | jq -r .emailAddress)
KEY=$(echo $RESP | jq -r .apiKey)

# 2. Send a message
curl -s -X POST https://api.mailgi.xyz/v1/mail/send \
  -H "Authorization: Bearer $KEY" \
  -H "Content-Type: application/json" \
  -d "{\"to\":[\"[email protected]\"],\"subject\":\"Hi\",\"textBody\":\"Hello from $EMAIL\"}"

# 3. Read inbox
curl -s https://api.mailgi.xyz/v1/mail \
  -H "Authorization: Bearer $KEY"

10. TypeScript / Node.js SDK

Install:

npm install @mailgi/mailgi
import { AgentMailboxClient } from '@mailgi/mailgi';

// Construct from a stored API key
const client = AgentMailboxClient.withApiKey(
  'https://api.mailgi.xyz',
  process.env.MAILGI_API_KEY!,
);

// Register a new agent (first time only — save the returned apiKey)
const reg = await client.agents.register({ label: 'my-agent' });
// reg.emailAddress => '[email protected]'
// reg.apiKey       => 'amb_...'  (shown once — store it)
client.apiKey = reg.apiKey;

// Send email
const { messageId } = await client.mail.send({
  to: ['[email protected]'],
  subject: 'Hello',
  textBody: 'Hi from my agent.',
});

// Read inbox
const { messages } = await client.mail.list({ limit: 20, sort: 'desc' });
const email = await client.mail.get(messages[0].id);
console.log(email.subject, email.textBody);

// Mark as read
await client.mail.setFlags(email.id, { seen: true });

All SDK methods map 1-to-1 to the REST endpoints above. Errors extend AgentMailboxError with statusCode and code:

import { NotFoundError, UnauthorizedError } from '@mailgi/mailgi';

try {
  await client.mail.get('bad-id');
} catch (err) {
  if (err instanceof NotFoundError) console.error('Not found');
  if (err instanceof UnauthorizedError) console.error('Bad API key');
}

11. CLI

Install globally:

npm install -g @mailgi/mailgi

All commands require --agent \x3Cemail-or-username>.

# Register a new agent (saves API key to ~/.mailgi/config.json)
mailgi register --label my-agent --agent [email protected]

# Save an existing agent by API key
mailgi login --agent [email protected] --apikey amb_...

# List saved agents
mailgi agents

# Show agent profile (live from API)
mailgi me --agent buzzing-falcon

# Read inbox
mailgi inbox --agent buzzing-falcon
mailgi inbox --agent buzzing-falcon --limit 50

# Read a message (auto-marks as seen)
mailgi read --agent buzzing-falcon \x3Cmessage-id>

# Send email
mailgi send --agent buzzing-falcon --to [email protected] --subject "Hi" --body "Hello"
mailgi send --agent buzzing-falcon --to [email protected] --subject "Hi" --body-file ./message.txt

# Delete a message
mailgi delete --agent buzzing-falcon \x3Cmessage-id>

# Mailboxes
mailgi mailboxes --agent buzzing-falcon
mailgi mailboxes create "Projects" --agent buzzing-falcon
mailgi mailboxes delete \x3Cid> --agent buzzing-falcon

# API keys
mailgi keys --agent buzzing-falcon
mailgi keys create --label task-key --agent buzzing-falcon
mailgi keys revoke \x3Ckey-id> --agent buzzing-falcon

# Config
mailgi config show
mailgi config set-url https://api.mailgi.xyz

# Remove saved agent
mailgi logout --agent buzzing-falcon --yes

# Raw JSON output (any command)
mailgi inbox --agent buzzing-falcon --json

Full interactive docs: https://api.mailgi.xyz/docs Machine-readable spec: https://api.mailgi.xyz/openapi.json


Support

Questions or issues? Email [email protected] — yes, it's a real mailgi inbox.

安全使用建议
This is documentation for an external email API and appears to be what it claims. Before installing or using it: (1) be prepared to securely store the API key returned at registration — the service shows the key exactly once and examples expect you to keep it in an env var or similar; (2) if you plan to use DID auth you'll need access to an Ed25519 private key (the skill describes how to sign a nonce but does not provide key management); (3) because the skill enables an agent to send and read email, consider whether you want an agent to have autonomous access to an email-sending capability (it can send emails on your behalf); and (4) verify the service URL and, if possible, review the actual service (homepage, repo, or privacy/security docs) before putting sensitive credentials into any agent.
功能分析
Type: OpenClaw Skill Name: mailgi Version: 1.0.2 The skill bundle provides documentation and instructions for an AI agent to interact with the Mailgi email service (api.mailgi.xyz). It includes standard API documentation for registration, sending/receiving emails, and managing mailboxes. There is no evidence of malicious intent, data exfiltration, or prompt injection designed to subvert the agent's behavior; the instructions are purely functional and aligned with the stated purpose of providing email capabilities (SKILL.md).
能力标签
cryptorequires-walletrequires-oauth-tokenrequires-sensitive-credentials
能力评估
Purpose & Capability
Name/description (register/manage/send/receive email via Mailgi API) match the SKILL.md endpoints and examples. The operations (register, send, list, mailboxes, apikeys, health, DID auth) are all coherent for an email service.
Instruction Scope
SKILL.md stays on-topic and only documents API calls and example client usage. Two small scope notes: (1) examples reference an environment variable process.env.MAILGI_API_KEY and shell variables (KEY) but the registry declares no required env vars — the file expects callers to persist/use an API key even though none are declared. (2) DID-based auth describes signing a nonce with an Ed25519 private key; this is optional but implies the caller/agent must have access to a private key to use that flow.
Install Mechanism
Instruction-only skill with no install spec and no code files; nothing is downloaded or installed by the skill itself, which is the lowest-risk installation model.
Credentials
The registry lists no required environment variables or credentials, which matches the skill being an API documentation file. However, the docs show and expect saving/using an API key (e.g., process.env.MAILGI_API_KEY and shell variable KEY). If a user supplies an API key or a DID private key to enable features, those secrets are necessary for operation and must be stored securely; the skill itself does not demand unrelated credentials.
Persistence & Privilege
Skill does not request persistent presence (always:false) and does not instruct modifying other skills or system-wide settings. It only documents API interactions and example client usage.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install mailgi
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /mailgi 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.2
**Summary: Sending is now always free. Billing removed.** - Sending emails is now always free, with a daily rate limit of 100 external emails per API key. - Error documentation updated: HTTP 429 error (`rate limit exceeded`) added. - Minor clarifications and updates to CLI and SDK usage examples.
v1.0.1
- Added section 11: TypeScript / Node.js SDK usage instructions, including setup, registration, sending and reading email, error handling, and balance check. - Added section 12: CLI usage documentation with installation steps and command examples for agent registration, login, inbox management, and email sending. - No changes to the API or core documentation for REST usage.
v1.0.0
mailgi-email-for-agents 1.0.0 - Free Agent-first, full email via API - Provides endpoints to register agents, send and receive emails via API. - Supports mailbox management, billing, and API key creation. - Includes DID-based authentication as an option. - Offers clear instructions and quick start examples for setup.
元数据
Slug mailgi
版本 1.0.2
许可证 MIT-0
累计安装 0
当前安装数 0
历史版本数 3
常见问题

Mailgi - Free Email for Agents 是什么?

Register and manage email agents to send, receive, organize, and read emails via Mailgi's API with optional blockchain-based billing and DID authentication. 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 164 次。

如何安装 Mailgi - Free Email for Agents?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install mailgi」即可一键安装,无需额外配置。

Mailgi - Free Email for Agents 是免费的吗?

是的,Mailgi - Free Email for Agents 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

Mailgi - Free Email for Agents 支持哪些平台?

Mailgi - Free Email for Agents 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 Mailgi - Free Email for Agents?

由 oyagev(@oyagev)开发并维护,当前版本 v1.0.2。

💬 留言讨论