Comparison

Resend sends emails. Truncus executes them.

Resend is a great developer email API. Truncus is a different category — the execution layer for systems that need guaranteed delivery, operational tracking, and governance. If your agent needs to send email AND know that it worked, Truncus is what you're looking for.

Resend is a wrapper around AWS SES. If SES goes down, Resend goes down. Truncus routes around failures automatically — SES Ireland primary, Brevo France failover, with a durable circuit breaker and retry queue. Both providers EU-based.

Feature comparison

Side-by-side comparison of capabilities. Where we don't have a feature, we say so.

FeatureTruncusResend
Synchronous delivery confirmation
Yes (send_sync — ~1s)
No
Operations API (durable sends)
Yes (delivery guarantees, retries, lifecycle)
No
Delivery guarantees
best_effort / at_least_once / exactly_once
Best effort only
Pre-send validation
Confidence score, spam check, domain health
No
Post-send intelligence
Failure analysis, recommended actions, lifecycle
No
Email infrastructure
Multi-provider (SES Ireland + Brevo France)
Single SES wrapper
Automatic failover
Circuit breaker (5 failures/60s triggers switch)
None
Failed email recovery
Durable retry queue (30s/2m/8m/30m/2h) + dead letter + replay
Lost
Sandbox replay
Replay real event timelines for testing
No
Global message identity
One ID across sends, retries, providers
No
Content-based deduplication
Automatic (10-min window)
No
Account reputation engine
Auto-throttle on high bounce/complaint rates
No
Kill switch
Instant send suspension via API
No
MCP server
197 tools (npm)
No
Agent discovery
agent.json, llms.txt, OpenClaw
No
CLI
@vanmoose/truncus-cli (send, ops, validate, domains)
Yes — with agent support (March 2026)
SDKs
Python + Node
18 languages
EU data residency
Default — both providers EU (Ireland + France)
Available (add-on, US by default)
Inbound continuity
Dual MX records (SES MX 10 + Brevo MX 20)
Single provider
Provider transparency
Every email logs which provider sent it
No
React Email support
Yes (via react field)
Yes (native)
Marketing emails
No
Yes (Audiences + Broadcasts)
Email editor
No
Yes
Multi-tenant (tenant_id per email)
Built-in
No
Scheduled sends
Yes (send_at field)
Yes
Batch API
Up to 100 emails per call
Yes
Inbound email processing
Yes (with intent classification)
Yes
Log retention (Pro)
90 days
30 days
Stream isolation
Isolated transactional + outreach streams
Single stream — all email shares reputation
Domain type enforcement
API blocks wrong traffic type on domains
No enforcement
Reputation firewall
Cold email can never touch transactional domains
Cold email shares reputation with auth emails
Outage simulation
Simulate provider failures before they happen
No outage testing capability
Dependency visibility
Maps underlying provider dependencies (SES → AWS)
Resend itself depends on SES — no visibility
Revenue protection
Classifies emails by business type, estimates impact
No business impact awareness
Free tier
3,000 emails/mo
3,000 emails/mo
Pro pricing
$19/mo (50K emails)
$20/mo (50K emails)

Truncus shipped agent-native tooling in early March 2026. Resend announced CLI agent support later that month.

Comparison based on publicly available information as of March 2026. Resend is a trademark of Resend Inc.

Built for agents, not just developers

Truncus was designed for AI agents from day one. Resend is now adding agent support too — a sign the industry is moving this way. Here's what Truncus ships today.

MCP server

Install @truncus/mcp-server in Claude Desktop or any MCP-compatible agent. 192 typed tools for sending, querying logs, and managing domains — all from natural language.

Multi-tenant built-in

Pass a tenant_id on every email. Suppression lists, domains, and delivery logs are scoped per tenant — no workarounds needed.

Agent discovery

/.well-known/agent.json lets any compliant agent discover Truncus capabilities automatically. Think robots.txt, but for AI agents.

Deterministic responses

Every API response follows a strict, machine-readable envelope with idempotency keys for safe retries. Agents can parse responses reliably without brittle string matching.

Agent-native timeline

Both platforms are investing in agent support. Here's what shipped and when.

Truncus

Agent-first from launch

  • March 25, 2026

    @vanmoose/truncus-cli published to npm

  • Early March 2026

    MCP server published to npm (197 tools)

  • Early March 2026

    OpenClaw skill on ClawHub

  • Early March 2026

    .well-known/agent.json + llms.txt discovery

  • Launch

    Idempotency keys, deterministic responses

  • Launch

    Python SDK + Node SDK

Resend

Adding agent support to existing platform

  • Late March 2026

    CLI with agent support (announced)

  • 2023–2025

    Developer-focused SDKs (11+ languages)

  • 2024

    React Email ecosystem, Audiences, Broadcasts

Both platforms now offer CLIs. Truncus additionally provides an MCP server with 197 tools, an OpenClaw skill, and agent discovery endpoints — infrastructure designed for autonomous agents, not just human developers.

When to choose Truncus

Truncus is the right pick when:

  • You're building AI agents that send email autonomously
  • You need EU data residency by default — both providers in EU (Ireland + France)
  • You can't afford a single point of failure — automatic multi-provider failover
  • You need zero email loss — durable retry queue with dead-letter recovery
  • You want provider transparency — every email logs which provider delivered it
  • You need multi-tenant email with tenant_id on every call

When to choose Resend

Resend is the better choice when:

  • You need marketing email features like Audiences and Broadcasts
  • You want a mature, battle-tested platform with 400K+ users
  • You need SDKs in 18 languages or a CLI for local development
  • You prefer a React-first developer experience with deep React Email integration

Migrate from Resend to Truncus

The APIs are nearly identical. Switching takes minutes, not days.

Before (Resend)

send-email.ts
import { Resend } from 'resend'

const resend = new Resend('re_...')

await resend.emails.send({
  to: 'user@example.com',
  from: 'hello@yourapp.com',
  subject: 'Your invoice is ready',
  html: '<p>Thanks for your order.</p>'
})

After (Truncus)

send-email.ts
import { Truncus } from '@truncus/email'

const truncus = new Truncus({ apiKey: 'tr_live_...' })

await truncus.sendEmail({
  to: 'user@example.com',
  from: 'hello@yourapp.com',
  subject: 'Your invoice is ready',
  html: '<p>Thanks for your order.</p>'
})

Change the import, swap the API key, and you are done. Same shape, same simplicity.

Simple, transparent pricing

Free tier, no credit card. Upgrade when you outgrow it.

Free
$0
3,000 emails/month
Start free
Pro
$19/mo
50,000 emails/month
Start Pro
Scale
$99/mo
300,000 emails/month
Start Scale

All tiers include multi-provider failover, EU data residency, and the full Operations API.

Try Truncus free — 3,000 emails/month

No credit card required. Get your API key in under a minute and start sending transactional email from the EU.

Create free account

Free tier includes 3,000 emails/month and 1 sending domain.

Truncus vs Resend: Which Email API Is Right for You? (2026)