Wraps Logo
wraps · for agents

Email infrastructure your agent owns.

tool wraps.emails.send(
  from: string,
  to: string,
  subject: string,
  html: string,
): { messageId: string }

One tool. One AWS account — yours. The agent calls it; the reputation, logs, and bill live where they should.

Start free

No credit card. No vendor lock-in. Deploy with npx @wraps.dev/cli

agent · tool_call trace
user
email the Q3 report to sarah@acme.com
working…
what to tell your agent

Copy-paste prompts for your agent.

Wraps is a set of primitives agents can already use. Here's exactly what to say.

prompt.md
Deploy Wraps email infrastructure to my AWS account:

1. Use the Context7 MCP server to pull the latest @wraps.dev/cli docs.
2. Run: npx @wraps.dev/cli email init
3. After it finishes, verify my sending domain with:
   npx @wraps.dev/cli email domains verify -d <my-domain>
4. Print the messageId of a test send to confirm.

Why ownership matters for agents.

Agents act on your behalf. The domain they send from, the IAM role they call, the analytics they emit — all of it should live where you can audit, rotate, and revoke.

Your reputation

DKIM, SPF, and DMARC sign from your domain — not a shared pool. When inbox providers decide whether to trust a sender, they look at you.

Your credentials

The CLI assumes a role in your AWS account. Nothing stored on our side. Rotate, revoke, or leave without touching a dashboard.

Your exit path

Every SES identity, Lambda, and EventBridge rule stays in your account when you leave. Uninstall Wraps; keep the infra.

Agents already work with Wraps today.

Two pieces, both shipped: the SDK your agent calls at runtime, and an MCP config that keeps your AI editor writing correct Wraps code.

1. Send from your agent

Call @wraps.dev/email from inside an agent tool. It resolves credentials from your environment — no API keys to hand the agent.

TypeScriptagent-send.ts
import { Wraps } from "@wraps.dev/email";const wraps = new Wraps();// The agent already has the rest — it knows the user,// the message, and when to send. It just needs a sender.await wraps.emails.send({  from: "agent@yourdomain.com",  to: userEmail,  subject: reportSubject,  html: reportHtml,});

2. Help your AI editor write correct Wraps code

Wire Context7 into Claude Code, Cursor, or any MCP-compatible editor so it pulls the latest Wraps docs into context instead of hallucinating APIs.

JSONmcp.json
{  "mcpServers": {    "context7": {      "command": "npx",      "args": ["-y", "@upstash/context7-mcp@latest"]    }  }}

A dedicated Wraps MCP server is coming.

For now, Context7 gives your agent the docs. Follow the build on GitHub.

Transactional, not outreach.

Wraps is built for agents that send reports, replies, and notifications from your domain — the mail you'd send yourself if you were at the keyboard. It is not a tool for prospecting.

Agents send to people who already expect mail from you — customers, teammates, subscribers.

DKIM, SPF, and DMARC sign every message from your domain. If an agent misbehaves, your DMARC report surfaces it before an ISP does.

Prospecting and unsolicited mail violate the AWS SES Acceptable Use Policy and will burn your sending domain. Don't ship that; neither will we.

Where Wraps fits in the agent-email landscape.

The differentiator isn't volume or features. It's ownership.

Resend

Hosted, not owned — your domain reputation lives in their shared pool.

Cloudflare Email for Agents

Runs in their network — you don't see the AWS bill or keep the infra after you churn.

AgentMail

Agent-specific, third-party sender — still their infra, still their reputation.

Your agent. Your AWS. One command.