Skills give your agents new capabilities. Browse the catalog, pick what you need, and install with a single command.
Featured
Set up and send emails via a user-provided Resend account (BYO email provider)
assistant skills install resend-setupSend emails through the user's own Resend account. The user provides their Resend API key and you send via their domain.
Before starting, check whether Resend is already configured:
bun skills/resend-setup/scripts/check-config.ts
The script outputs JSON: { "configured": boolean, "hasApiKey": boolean, "hasWebhookSecret": boolean, "details": string }.
configured is true — Resend is already set up. Offer to verify the connection or reconfigure.configured is false — continue to Step 1.Run the store script to securely collect the API key:
bun skills/resend-setup/scripts/store-api-key.ts
The script opens a secure credential prompt, stores the key with the correct injection templates, and exits. If it exits 0, the key is stored. Exit code 130 means the user cancelled the prompt — nothing was stored; that's a valid choice, not an error, so ask whether they'd like to try again rather than treating it as a failure. Any other non-zero exit is a real failure. Never ask for the key in chat.
After storing the API key, automatically detect the user's domain — don't ask them for it. Call the Resend Domains API:
curl -s https://api.resend.com/domains \
-H "Content-Type: application/json"
Run this with network_mode: "proxied" and the resend credential so the Authorization header is injected automatically. The response contains a data array of domain objects with name and status fields. Pick the first domain with "status": "verified" (or the only domain if there's just one). If no verified domains are found, tell the user they need to verify a domain in their Resend dashboard first.
Use hi@<domain> as the default sender address. Remember the domain for future sends.
Send a test request to confirm the API key works:
curl -s https://api.resend.com/domains \
-H "Content-Type: application/json"
Run with network_mode: "proxied" and the resend credential. A successful response (HTTP 200) with domain data confirms the connection.
If the user also wants to receive emails via Resend, run the webhook setup script:
bun skills/resend-setup/scripts/setup-webhook.ts --domain "<verified domain>"
This script:
If the script fails because no public base URL is configured (self-hosted only), load the public-ingress skill to walk the user through setting one up, then retry.
Summarize with the completed checklist:
"Setup complete!
✅ API key configured
✅ Domain detected: <domain>
✅ Connection verified
{webhook_line}
Default sender: hi@<domain>"
For {webhook_line}:
✅ Webhook configured for inbound email⬜ Webhook — run setup again to enable inbound emailUse bash with curl to call the Resend API. The credential proxy injects the Authorization: Bearer header automatically when using network_mode: "proxied" with the resend credential.
curl -X POST https://api.resend.com/emails \
-H "Content-Type: application/json" \
-d '{
"from": "Name <sender@example.com>",
"to": ["recipient@example.com"],
"subject": "Hello",
"text": "Plain text body",
"html": "<p>HTML body</p>"
}'
| Parameter | Type | Required | Description |
|---|---|---|---|
from | string | ✅ | Sender address ("Name <email>" format) |
to | string | string[] | ✅ | Recipient(s), max 50 |
subject | string | ✅ | Email subject |
text | string | Plain text body | |
html | string | HTML body | |
cc | string | string[] | CC recipients | |
bcc | string | string[] | BCC recipients | |
reply_to | string | string[] | Reply-to address | |
headers | object | Custom headers (e.g. In-Reply-To, References for threading) |
To reply in a thread, include In-Reply-To and References headers:
{
"from": "bot@example.com",
"to": ["user@example.com"],
"subject": "Re: Original subject",
"text": "Reply body",
"headers": {
"In-Reply-To": "<original-message-id>",
"References": "<original-message-id>"
}
}
Success returns { "id": "email-id" } with HTTP 200.
Errors return { "message": "error description" } with 4xx/5xx status.
from address must be from a domain verified in the user's Resend account.hi@<domain> — use this unless the user specifies otherwise.text for plain text, html for rich formatting. Provide both when possible.