pp-resend
Original:🇺🇸 English
Translated
The full Resend API (100 endpoints across emails, broadcasts, audiences, contacts, domains, templates, webhooks)... Trigger phrases: `send an email with resend`, `check resend deliverability`, `list resend audiences`, `what did we send to <email>`, `use resend`, `run resend`.
3installs
Added on
NPX Install
npx skill4agent add mvanhorn/printing-press-library pp-resendTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →<!-- GENERATED FILE — DO NOT EDIT.
This file is a verbatim mirror of library/productivity/resend/SKILL.md,
regenerated post-merge by tools/generate-skills/. Hand-edits here are
silently overwritten on the next regen. Edit the library/ source instead.
See the repository agent guide, section "Generated artifacts: registry.json, cli-skills/". -->
resolves a natural-language capability query to the best matching command from this CLI's curated feature index. Exit code means at least one match; exit code means no confident match — fall back to or use a narrower query.
Resend — Printing Press CLI
Prerequisites: Install the CLI
This skill drives the binary. You must verify the CLI is installed before invoking any command from this skill. If it is missing, install it first:
resend-pp-cli- Install via the Printing Press installer. It defaults binaries to on macOS/Linux and
$HOME/.local/binon Windows:%LOCALAPPDATA%\Programs\PrintingPress\binbashnpx -y @mvanhorn/printing-press-library install resend --cli-only - Verify:
resend-pp-cli --version - Ensure the reported install directory is on for the agent/runtime that will invoke this skill.
$PATH
If the install fails (no Node, offline, etc.), fall back to a direct Go install (requires Go 1.26.3 or newer):
npxbash
go install github.com/mvanhorn/printing-press-library/library/productivity/resend/cmd/resend-pp-cli@latestIf reports "command not found" after install, the runtime cannot see the binary directory on . Do not proceed with skill commands until verification succeeds.
--version$PATHWhen to Use This CLI
Use this CLI when an agent needs to answer cross-resource questions about a Resend account that the dashboard or SDK cannot answer in one call — what did we send to a specific recipient, which audiences is a contact in, how does broadcast performance trend over time, what's the 7-day bounce rate. Stick with for one-shot transactional sends or with React Email for templates; this CLI is the agent-facing companion, not a replacement.
npx resend sendUnique Capabilities
These capabilities aren't available in any other tool for this API.
Cross-resource queries over local state
-
— Every email sent to a single recipient address, with delivery status and timestamps, ordered newest-first.
emails toReach for this when an agent needs to reconstruct what a single user has received — support tickets, GDPR exports, dispute investigations.bashresend-pp-cli emails to <your-email> --json --select id,subject,status,sent_at -
— Collapsed event chain for a single email: sent → delivered → opened → clicked → bounced, in one ordered table.
emails timelineUse when debugging 'why didn't this arrive?' — one command shows whether it was sent, delivered, opened, or bounced and when.bashresend-pp-cli emails timeline 4ef9a417-d4ff-4ec5-9af2-c80a4d5d2c1f --json -
— Per-audience rollup: contact count, unsubscribed count, last-broadcast timestamp, recent open-rate.
audiences inventoryUse before planning a campaign — quickly see which audiences are healthy and recently engaged.bashresend-pp-cli audiences inventory --json -
— Find every audience, segment, and topic a contact (by email or name) belongs to in one query.
contacts whereUse when triaging unsubscribe requests, GDPR deletions, or 'why is bob getting this email?'.bashresend-pp-cli contacts where <contact-email> --json --select audience_name,subscribed
Aggregate analytics from local store
-
— Open / click / bounce rate across all broadcasts, sortable; not limited to a single broadcast or 30-day window.
broadcasts performanceUse to compare campaign performance across the lifetime of the account.bashresend-pp-cli broadcasts performance --json --select broadcasts,count,status -
— Verification + DKIM/SPF/DMARC status across every domain in one table, flags missing or unverified records.
domains healthUse on call-out / deliverability incidents to confirm all sending domains are fully verified.bashresend-pp-cli domains health --json -
— Bounce rate, complaint rate, and suppression count over a rolling window (default 7d) computed from local event data.
deliverability summaryUse weekly to monitor IP/domain reputation trends before they cause deliverability incidents.bashresend-pp-cli deliverability summary --window 7d --json
Operational hygiene
-
— API keys sorted by age + last-used timestamp (joined from logs); flags stale keys older than N days.
api-keys rotationUse during quarterly security reviews — find unused keys that should be rotated or revoked.bashresend-pp-cli api-keys rotation --older-than 90d --json
Command Reference
api-keys — Create and manage API Keys through the Resend API.
- — Create a new API key
resend-pp-cli api-keys create - — Remove an existing API key
resend-pp-cli api-keys delete - — Retrieve a list of API keys
resend-pp-cli api-keys list
audiences — Deprecated: Use Segments instead. Create and manage Audiences through the Resend API.
- — Deprecated: Use Segments instead. These endpoints still work, but will be removed in the future.
resend-pp-cli audiences create - — Deprecated: Use Segments instead. These endpoints still work, but will be removed in the future.
resend-pp-cli audiences delete - — Deprecated: Use Segments instead. These endpoints still work, but will be removed in the future.
resend-pp-cli audiences get - — Deprecated: Use Segments instead. These endpoints still work, but will be removed in the future.
resend-pp-cli audiences list
automations — Create and manage Automations through the Resend API.
- — Create an automation
resend-pp-cli automations create - — Delete an automation
resend-pp-cli automations delete - — Retrieve a single automation
resend-pp-cli automations get - — Retrieve a list of automations
resend-pp-cli automations list - — Update an automation
resend-pp-cli automations update
broadcasts — Create and manage Broadcasts through the Resend API.
- — Create a broadcast
resend-pp-cli broadcasts create - — Remove an existing broadcast that is in the draft status
resend-pp-cli broadcasts delete - — Retrieve a single broadcast
resend-pp-cli broadcasts get - — Retrieve a list of broadcasts
resend-pp-cli broadcasts list - — Update an existing broadcast
resend-pp-cli broadcasts update
contact-properties — Create and manage Contact Properties through the Resend API.
- — Create a new contact property
resend-pp-cli contact-properties create - — Remove an existing contact property
resend-pp-cli contact-properties delete - — Retrieve a single contact property
resend-pp-cli contact-properties get - — Retrieve a list of contact properties
resend-pp-cli contact-properties list - — Update an existing contact property
resend-pp-cli contact-properties update
contacts — Create and manage Contacts through the Resend API.
- — Create a new contact
resend-pp-cli contacts create - — Remove an existing contact by ID or email
resend-pp-cli contacts delete - — Retrieve a single contact by ID or email
resend-pp-cli contacts get - — Retrieve a list of contacts
resend-pp-cli contacts list - — Update a single contact by ID or email
resend-pp-cli contacts update
domains — Create and manage domains through the Resend API.
- — Create a new domain
resend-pp-cli domains create - — Remove an existing domain
resend-pp-cli domains delete - — Retrieve a single domain
resend-pp-cli domains get - — Retrieve a list of domains
resend-pp-cli domains list - — Update an existing domain
resend-pp-cli domains update
emails — Start sending emails through the Resend API.
- — Send an email
resend-pp-cli emails create - — Trigger up to 100 batch emails at once.
resend-pp-cli emails create-batch - — Retrieve a single email
resend-pp-cli emails get - — Retrieve a single received email
resend-pp-cli emails get-receiving - — Retrieve a list of attachments for a received email
resend-pp-cli emails get-receiving-2 - — Retrieve a single attachment for a received email
resend-pp-cli emails get-receiving-3 - — Retrieve a list of emails
resend-pp-cli emails list - — Retrieve a list of received emails
resend-pp-cli emails list-receiving - — Update a single email
resend-pp-cli emails update
events — Create and manage Events through the Resend API.
- — Create an event
resend-pp-cli events create - — Send an event
resend-pp-cli events create-send - — Delete an event
resend-pp-cli events delete - — Retrieve a single event
resend-pp-cli events get - — Retrieve a list of events
resend-pp-cli events list - — Update an event
resend-pp-cli events update
logs — Retrieve API request logs through the Resend API.
- — Retrieve a single log
resend-pp-cli logs get - — Retrieve a list of logs
resend-pp-cli logs list
segments — Create and manage Segments through the Resend API.
- — Create a new segment
resend-pp-cli segments create - — Remove an existing segment
resend-pp-cli segments delete - — Retrieve a single segment
resend-pp-cli segments get - — Retrieve a list of segments
resend-pp-cli segments list
templates — Create and manage Templates through the Resend API.
- — Create a template
resend-pp-cli templates create - — Remove an existing template
resend-pp-cli templates delete - — Retrieve a single template
resend-pp-cli templates get - — Retrieve a list of templates
resend-pp-cli templates list - — Update an existing template
resend-pp-cli templates update
topics — Create and manage Topics through the Resend API.
- — Create a new topic
resend-pp-cli topics create - — Remove an existing topic
resend-pp-cli topics delete - — Retrieve a single topic
resend-pp-cli topics get - — Retrieve a list of topics
resend-pp-cli topics list - — Update an existing topic
resend-pp-cli topics update
webhooks — Create and manage Webhooks through the Resend API.
- — Create a new webhook
resend-pp-cli webhooks create - — Remove an existing webhook
resend-pp-cli webhooks delete - — Retrieve a single webhook
resend-pp-cli webhooks get - — Retrieve a list of webhooks
resend-pp-cli webhooks list - — Update an existing webhook
resend-pp-cli webhooks update
Finding the right command
When you know what you want to do but not which command does it, ask the CLI directly:
bash
resend-pp-cli which "<capability in your own words>"which02--helpRecipes
Reconstruct what a user has received
bash
resend-pp-cli emails to user@example.com --json --select id,subject,status,sent_at,opened_at --limit 50Use this for support tickets and GDPR exports — every email sent to one recipient, with delivery state.
Pre-campaign audience check
bash
resend-pp-cli audiences inventory --json --select name,contact_count,unsubscribed_count,last_broadcast_atRun before scheduling a broadcast — surfaces audiences with high unsubscribe rates or stale engagement.
Weekly deliverability review
bash
resend-pp-cli deliverability summary --window 7d --agent --select bounce_rate,complaint_rate,suppression_countTrend snapshot for IP/domain reputation; pipe through to alert on threshold breaches.
jqAudit stale API keys
bash
resend-pp-cli api-keys rotation --older-than 90d --json --select name,created_at,last_used_atFind unused keys during quarterly security reviews.
Search every sent email for a phrase
bash
resend-pp-cli search 'password reset' --json --select id,subject,to,sent_atFTS5-backed; needs first.
sync --fullAuth Setup
Run for the URL and steps to obtain a token (add to open the URL). Then store it:
resend-pp-cli auth setup--launchbash
resend-pp-cli auth set-token YOUR_TOKEN_HEREOr set as an environment variable.
RESEND_API_KEYRun to verify setup.
resend-pp-cli doctorAgent Mode
Add to any command. Expands to: .
--agent--json --compact --no-input --no-color --yes-
Pipeable — JSON on stdout, errors on stderr
-
Filterable —keeps a subset of fields. Dotted paths descend into nested structures; arrays traverse element-wise. Critical for keeping context small on verbose APIs:
--selectbashresend-pp-cli api-keys list --agent --select id,name,status -
Previewable —shows the request without sending
--dry-run -
Offline-friendly — sync/search commands can use the local SQLite store when available
-
Non-interactive — never prompts, every input is a flag
-
Explicit retries — useonly when an already-existing create should count as success, and
--idempotentonly when a missing delete target should count as success--ignore-missing
Response envelope
Commands that read from the local store or the API wrap output in a provenance envelope:
json
{
"meta": {"source": "live" | "local", "synced_at": "...", "reason": "..."},
"results": <data>
}Parse for data and to know whether it's live or local. A human-readable summary is printed to stderr only when stdout is a terminal — piped/agent consumers get pure JSON on stdout.
.results.meta.sourceN results (live)Agent Feedback
When you (or the agent) notice something off about this CLI, record it:
resend-pp-cli feedback "the --since flag is inclusive but docs say exclusive"
resend-pp-cli feedback --stdin < notes.txt
resend-pp-cli feedback list --json --limit 10Entries are stored locally at . They are never POSTed unless is set AND either is passed or . Default behavior is local-only.
~/.resend-pp-cli/feedback.jsonlRESEND_FEEDBACK_ENDPOINT--sendRESEND_FEEDBACK_AUTO_SEND=trueWrite what surprised you, not a bug report. Short, specific, one line: that is the part that compounds.
Output Delivery
Every command accepts . The output goes to the named sink in addition to (or instead of) stdout, so agents can route command results without hand-piping. Three sinks are supported:
--deliver <sink>| Sink | Effect |
|---|---|
| Default; write to stdout only |
| Atomically write output to |
| POST the output body to the URL ( |
Unknown schemes are refused with a structured error naming the supported set. Webhook failures return non-zero and log the URL + HTTP status on stderr.
Named Profiles
A profile is a saved set of flag values, reused across invocations. Use it when a scheduled agent calls the same command every run with the same configuration - HeyGen's "Beacon" pattern.
resend-pp-cli profile save briefing --json
resend-pp-cli --profile briefing api-keys list
resend-pp-cli profile list --json
resend-pp-cli profile show briefing
resend-pp-cli profile delete briefing --yesExplicit flags always win over profile values; profile values win over defaults. lists all available profiles under so introspecting agents discover them at runtime.
agent-contextavailable_profilesExit Codes
| Code | Meaning |
|---|---|
| 0 | Success |
| 2 | Usage error (wrong arguments) |
| 3 | Resource not found |
| 4 | Authentication required |
| 5 | API error (upstream issue) |
| 7 | Rate limited (wait and retry) |
| 10 | Config error |
Argument Parsing
Parse :
$ARGUMENTS- Empty, , or
help→ show--helpoutputresend-pp-cli --help - Starts with → ends with
install→ MCP installation; otherwise → see Prerequisites abovemcp - Anything else → Direct Use (execute as CLI command with )
--agent
MCP Server Installation
Install the MCP binary from this CLI's published public-library entry or pre-built release, then register it:
bash
claude mcp add resend-pp-mcp -- resend-pp-mcpVerify:
claude mcp listDirect Use
- Check if installed: If not found, offer to install (see Prerequisites at the top of this skill).
which resend-pp-cli - Match the user query to the best command from the Unique Capabilities and Command Reference above.
- Execute with the flag:
--agentbashresend-pp-cli <command> [subcommand] [args] --agent - If ambiguous, drill into subcommand help: .
resend-pp-cli <command> --help