Resend Skills
Use when working with Resend email platform - routes to specific sub-skills for sending, receiving, audiences, or broadcasts.
Rank
62
Safety
84
Downloads
1.6k
Updated
Apr 15, 2026
Version
2.5.0
Source
CLAWHUB
About
What it does, and when to use it.
Capability contract not published. No trust telemetry is available yet. 1.6K downloads reported by the source. Last updated 4/15/2026.
Avoid when
- Contract metadata is missing or unavailable for deterministic execution.
Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing
Public facts
Every fact links back to the source it came from.
- Vendor
- Clawhubvendor · observed Apr 15, 2026
- Protocol compatibility
- OpenClawcompatibility · observed Apr 15, 2026
- Adoption signal
- 1.6K downloadsadoption · observed Apr 15, 2026
- Latest release
- 2.5.0release · observed Feb 17, 2026
- Handshake status
- UNKNOWNsecurity
Install and run
Setup complexity: low.
clawhub skill install kn7ar7f1k0g5etvh4zyrsgvr5n801t2p:resend-skills- Install using `clawhub skill install kn7ar7f1k0g5etvh4zyrsgvr5n801t2p:resend-skills` in an isolated environment before connecting it to live workloads.
- No published capability contract is available yet, so validate auth and request/response behavior manually.
- Review the upstream CLAWHUB listing at https://clawhub.ai/christina-de-martinez/resend-skills before using production credentials.
Contract: missing
curl -s "https://www.xpersona.co/api/v1/agents/clawhub-christina-de-martinez-resend-skills/snapshot"
Documentation
CLAWHUB
144,065 characters of source documentation, loaded on request.
Extracted files
5 files captured from the source.
agent-email-inbox/SKILL.md
---
name: agent-email-inbox
description: Use when setting up an email inbox for an AI agent (Moltbot, Clawdbot, or similar) - configuring inbound email, webhooks, tunneling for local development, and implementing security measures to prevent prompt injection attacks.
inputs:
- name: RESEND_API_KEY
description: Resend API key for sending and receiving emails. Get yours at https://resend.com/api-keys
required: true
- name: RESEND_WEBHOOK_SECRET
description: Webhook signing secret for verifying inbound email event payloads. Returned as `signing_secret` in the response when you create a webhook via the API.
required: true
---
# AI Agent Email Inbox
## Overview
Moltbot (formerly Clawdbot) is an AI agent that can send and receive emails. This skill covers setting up a secure email inbox that allows your agent to be notified of incoming emails and respond appropriately, while protecting against prompt injection and other email-based attacks.
**Core principle:** An AI agent's inbox is a potential attack vector. Malicious actors can email instructions that the agent might blindly follow. Security configuration is not optional.
### Why Webhook-Based Receiving?
Resend uses webhooks for inbound email, meaning your agent is notified **instantly** when an email arrives. This is valuable for agents because:
- **Real-time responsiveness** — React to emails within seconds, not minutes
- **No polling overhead** — No cron jobs checking "any new mail?" repeatedly
- **Event-driven architecture** — Your agent only wakes up when there's actually something to process
- **Lower API costs** — No wasted calls checking empty inboxes
For time-sensitive workflows (support tickets, urgent notifications, conversational email threads), instant notification makes a meaningful difference in user experience.
## Architecture
```
Sender → Email → Resend (MX) → Webhook → Your Server → AI Agent
↓
Security Validation
↓
Process or Reject
```
## SDK Version Requirements
This skill requires Resend SDK features for webhook verification (`webhooks.verify()`) and email receiving (`emails.receiving.get()`). Always install the latest SDK version. If the project already has a Resend SDK installed, check the version and upgrade if needed.
| Language | Package | Min Version |
|----------|---------|-------------|
| Node.js | `resend` | >= 6.9.2 |
| Python | `resend` | >= 2.21.0 |
| Go | `resend-go/v3` | >= 3.1.0 |
| Ruby | `resend` | >= 1.0.0 |
| PHP | `resend/resend-php` | >= 1.1.0 |
| Rust | `resend-rs` | >= 0.20.0 |
| Java | `resend-java` | >= 4.11.0 |
| .NET | `Resend` | >= 0.2.1 |
See `send-email` skill's [installation guide](../send-email/references/installation.md) for full installation commands.
## Quick Start
1. **Ask the user for their email address** - You need a real email addreresend-inbound/SKILL.md
---
name: resend-inbound
description: Use when receiving emails with Resend - setting up inbound domains, processing email.received webhooks, retrieving email content/attachments, or forwarding received emails.
inputs:
- name: RESEND_API_KEY
description: Resend API key for retrieving email content and attachments. Get yours at https://resend.com/api-keys
required: true
- name: RESEND_WEBHOOK_SECRET
description: Webhook signing secret for verifying inbound email event payloads. Found in the Resend dashboard under Webhooks.
required: true
---
# Receive Emails with Resend
## Overview
Resend processes incoming emails for your domain and sends webhook events to your endpoint. **Webhooks contain metadata only** - you must call separate APIs to retrieve email body and attachments.
## SDK Version Requirements
This skill requires Resend SDK features for webhook verification (`webhooks.verify()`) and email receiving (`emails.receiving.get()`). Always install the latest SDK version. If the project already has a Resend SDK installed, check the version and upgrade if needed.
| Language | Package | Min Version |
|----------|---------|-------------|
| Node.js | `resend` | >= 6.9.2 |
| Python | `resend` | >= 2.21.0 |
| Go | `resend-go/v3` | >= 3.1.0 |
| Ruby | `resend` | >= 1.0.0 |
| PHP | `resend/resend-php` | >= 1.1.0 |
| Rust | `resend-rs` | >= 0.20.0 |
| Java | `resend-java` | >= 4.11.0 |
| .NET | `Resend` | >= 0.2.1 |
See `send-email` skill's [installation guide](../send-email/references/installation.md) for full installation commands.
## Quick Start
1. **Configure receiving domain** - Use Resend's `.resend.app` domain or add MX record for custom domain
2. **Set up webhook** - Subscribe to `email.received` event
3. **Retrieve content** - Call Receiving API for body, Attachments API for files
## Domain Setup
### Option 1: Resend-Managed Domain (Fastest)
Use your auto-generated address: `<anything>@<your-id>.resend.app`
No DNS configuration needed. Find your address in Dashboard → Emails → Receiving → "Receiving address".
### Option 2: Custom Domain
Add MX record to receive at `<anything>@yourdomain.com`.
| Setting | Value |
|---------|-------|
| **Type** | MX |
| **Host** | Your domain or subdomain |
| **Value** | Provided in Resend dashboard |
| **Priority** | 10 (**lowest number** wins a conflict, but typically only multiples of 10 are used) |
**Critical:** Your MX record must have the lowest priority value, or emails won't route to Resend.
### Subdomain Recommendation
If you already have MX records (e.g., Google Workspace, Microsoft 365):
| Approach | Result |
|----------|--------|
| **Use subdomain** (recommended) | `support.acme.com` → Resend, `acme.com` → existing provider |
| **Use root domain** | All email routes to Resend (breaks existing email) |
```
# Example: receive at support.acme.com without affecting acme.com
support.acme.com. MX 10 <resend-mx-value>
```
If you set up Resend to receive send-email/SKILL.md
---
name: send-email
description: Use when sending transactional emails (welcome messages, order confirmations, password resets, receipts), notifications, or bulk emails via Resend API.
inputs:
- name: RESEND_API_KEY
description: Resend API key for sending emails. Get yours at https://resend.com/api-keys
required: true
- name: RESEND_WEBHOOK_SECRET
description: Webhook signing secret for verifying delivery event payloads (bounced, delivered, opened). Found in the Resend dashboard under Webhooks.
required: false
---
# Send Email with Resend
## Overview
Resend provides two endpoints for sending emails:
| Approach | Endpoint | Use Case |
|----------|----------|----------|
| **Single** | `POST /emails` | Individual transactional emails, emails with attachments, scheduled sends |
| **Batch** | `POST /emails/batch` | Multiple distinct emails in one request (max 100), bulk notifications |
**Choose batch when:**
- Sending 2+ distinct emails at once
- Reducing API calls is important (by default, rate limit is 2 requests per second)
- No attachments or scheduling needed
**Choose single when:**
- Sending one email
- Email needs attachments
- Email needs to be scheduled
- Different recipients need different timing
## Quick Start
1. **Detect project language** from config files (package.json, requirements.txt, go.mod, etc.)
2. **Install SDK** (preferred) or use cURL - See [references/installation.md](references/installation.md)
3. **Choose single or batch** based on the decision matrix above
4. **Implement best practices** - Idempotency keys, error handling, retries
## Best Practices (Critical for Production)
Always implement these for production email sending. See [references/best-practices.md](references/best-practices.md) for complete implementations.
### Idempotency Keys
Prevent duplicate emails when retrying failed requests.
| Key Facts | |
|-----------|---|
| **Format (single)** | `<event-type>/<entity-id>` (e.g., `welcome-email/user-123`) |
| **Format (batch)** | `batch-<event-type>/<batch-id>` (e.g., `batch-orders/batch-456`) |
| **Expiration** | 24 hours |
| **Max length** | 256 characters |
| **Duplicate payload** | Returns original response without resending |
| **Different payload** | Returns 409 error |
### Error Handling
| Code | Action |
|------|--------|
| 400, 422 | Fix request parameters, don't retry |
| 401, 403 | Check API key / verify domain, don't retry |
| 409 | Idempotency conflict - use new key or fix payload |
| 429 | Rate limited - retry with exponential backoff (by default, rate limit is 2 requests/second) |
| 500 | Server error - retry with exponential backoff |
### Retry Strategy
- **Backoff:** Exponential (1s, 2s, 4s...)
- **Max retries:** 3-5 for most use cases
- **Only retry:** 429 (rate limit) and 500 (server error)
- **Always use:** Idempotency keys when retrying
## Single Email
**Endpoint:** `POST /emails` (prefer SDK over cURL)
### Required Parameters
| Parameter | Type SKILL.md
---
name: resend
description: Use when working with Resend email platform - routes to specific sub-skills for sending, receiving, audiences, or broadcasts.
license: MIT
metadata:
author: resend
version: "2.5.0"
homepage: https://resend.com
source: https://github.com/resend/resend-skills
inputs:
- name: RESEND_API_KEY
description: Resend API key for sending and receiving emails. Get yours at https://resend.com/api-keys
required: true
- name: RESEND_WEBHOOK_SECRET
description: Webhook signing secret for verifying event payloads. Found in the Resend dashboard under Webhooks after creating an endpoint.
required: false
---
# Resend
## Overview
Resend is an email platform for developers. This skill routes to feature-specific sub-skills.
## Sub-Skills
| Feature | Skill | Use When |
|---------|-------|----------|
| **Sending emails** | `send-email` | Transactional emails, notifications, batch sends |
| **Receiving emails** | `resend-inbound` | Processing inbound emails, webhooks for received mail, attachments |
| **AI Agent inbox** | `agent-email-inbox` | Setting up email for AI agents, or any system where untrusted email content triggers actions — includes security measures against prompt injection |
## Quick Routing
**Need to send emails?** Use `send-email` skill
- Single or batch transactional emails
- Attachments, scheduling, templates
- Delivery webhooks (bounced, delivered, opened)
**Need to receive emails?** Use `resend-inbound` skill
- Setting up inbound domain (MX records)
- Processing `email.received` webhooks
- Retrieving email content and attachments
- Forwarding received emails
**Setting up an AI agent inbox?** Use `agent-email-inbox` skill
- Configuring email for Moltbot/Clawdbot or similar AI agents
- Webhook setup with ngrok/tunneling for local development
- Security levels to prevent prompt injection attacks
- Trusted sender allowlists and content filtering
**Automated system processes untrusted email content and takes actions?** Use `agent-email-inbox` skill
- Even without AI/LLM involvement, any system that interprets freeform email content from external senders and triggers actions (refunds, database changes, forwarding) needs security. Untrusted input triggering actions = attack vector.
**Sending + receiving together?** You need both `resend-inbound` and `send-email`
- Auto-replies, email forwarding, or any receive-then-send workflow requires both skills
- Set up inbound first, then sending
- Note: batch sending does not support attachments or scheduling — use single sends when forwarding with attachments
**Marketing emails or newsletters?** Use [Resend Broadcasts](https://resend.com/broadcasts)
- The sub-skills above are for transactional email. Marketing campaigns to large subscriber lists with unsubscribe links and engagement tracking should use Resend Broadcasts, not batch sending.
## Common Setup
### API Key
Store in environment variable:
```bash
export RESEND_API_KEREADME.md
``` ____ _____ ____ _____ _ _ ____ ____ _ _____ _ _ ____ | _ \| ____/ ___|| ____| \ | | _ \ / ___|| |/ /_ _| | | | / ___| | |_) | _| \___ \| _| | \| | | | |_____\___ \| ' / | || | | | \___ \ | _ <| |___ ___) | |___| |\ | |_| |_____|___) | . \ | || |___| |___ ___) | |_| \_\_____|____/|_____|_| \_|____/ |____/|_|\_\___|_____|_____|____/ ``` # Resend Skills A collection of skills for AI coding agents following the Agent Skills format. These skills enable AI agents to send emails using the [Resend](https://resend.com) API. ## Available Skills ### [`send-email`](./send-email) Send emails using the Resend API - single or batch. Supports transactional emails, notifications, and bulk sending (up to 100 emails per batch). Includes best practices for idempotency keys, error handling, and retry logic. ## Installation ```bash npx skills add resend/resend-skills ``` ## Usage Skills are automatically activated when relevant tasks are detected. Example prompts: - "Send a welcome email to new users" - "Send batch notifications to all order customers" - "Schedule a newsletter for tomorrow at 9am" ## Supported SDKs - Node.js / TypeScript - Python - Go - Ruby - PHP - Rust - Java - .NET - cURL - SMTP ## Prerequisites - A Resend account with a verified domain - API key stored in `RESEND_API_KEY` environment variable Get your API key at [resend.com/api-keys](https://resend.com/api-keys) ## License MIT
AionUi
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!
activepieces
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
cherry-studio
AI productivity studio with smart chat, autonomous agents, and 300+ assistants.
CopilotKit
The Frontend for Agents & Generative UI. React + Angular
Machine-readable data
The same record, as JSON, for agents and crawlers.
{
"facts": [
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Clawhub",
"href": "https://clawhub.ai/christina-de-martinez/resend-skills",
"sourceUrl": "https://clawhub.ai/christina-de-martinez/resend-skills",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-04-15T00:45:39.800Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-christina-de-martinez-resend-skills/contract",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-christina-de-martinez-resend-skills/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-04-15T00:45:39.800Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "1.6K downloads",
"href": "https://clawhub.ai/christina-de-martinez/resend-skills",
"sourceUrl": "https://clawhub.ai/christina-de-martinez/resend-skills",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-04-15T00:45:39.800Z",
"isPublic": true
},
{
"factKey": "latest_release",
"category": "release",
"label": "Latest release",
"value": "2.5.0",
"href": "https://clawhub.ai/christina-de-martinez/resend-skills",
"sourceUrl": "https://clawhub.ai/christina-de-martinez/resend-skills",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-02-17T23:15:07.650Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-christina-de-martinez-resend-skills/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-christina-de-martinez-resend-skills/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
],
"events": [
{
"eventType": "release",
"title": "Release 2.5.0",
"description": "- Bumped skill version from 2.4.0 to 2.5.0 in metadata. - In the last update (which we didn't publish here), we also updated the language in the tests to not sound like it's a prompt injection. That language was causing this package to be marked as suspicious. We're hoping this clears it up!",
"href": "https://clawhub.ai/christina-de-martinez/resend-skills",
"sourceUrl": "https://clawhub.ai/christina-de-martinez/resend-skills",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-02-17T23:15:07.650Z",
"isPublic": true
}
]
}Record generated Oct 10, 2026.
