> ## Documentation Index
> Fetch the complete documentation index at: https://docs.useanima.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# Anima vs AgentMail: Why You Need More Than Just Email

> AgentMail provides email for AI agents. Anima provides email plus phone, vault, and cryptographic identity. Here is when to use each.

# Anima vs AgentMail: Why You Need More Than Just Email

AgentMail does one thing and does it well: email for AI agents. If all your agent needs is to send and receive email, AgentMail is a solid choice. But most production agents need more than an inbox.

## The Problem with Email-Only

Consider a customer support agent. It receives a complaint via email, looks up the order, sends an SMS confirmation, and logs into the merchant portal to update the ticket. That workflow touches:

* **Email** (receive complaint, send resolution)
* **Phone** (send SMS confirmation)
* **Vault** (store merchant portal credentials)
* **Identity** (prove to the merchant portal that it is an authorized agent)

With AgentMail, you get step one. The rest requires separate integrations with separate vendors, separate SDKs, and separate failure modes.

## Feature Comparison

| Capability                            | AgentMail    | Anima                   |
| ------------------------------------- | ------------ | ----------------------- |
| Agent email inboxes                   | Yes          | Yes                     |
| Custom domains                        | Yes          | Yes                     |
| Inbound webhooks                      | Yes          | Yes                     |
| Content scanning                      | Basic        | Dual-layer (regex + AI) |
| Phone numbers (SMS/voice)             | No           | Yes                     |
| Encrypted credential vault            | No           | Yes (Bitwarden-backed)  |
| DID-based identity                    | No           | Yes (did:anima)         |
| Verifiable Credentials                | No           | Yes (W3C VC)            |
| Agent Cards (/.well-known/agent.json) | No           | Yes                     |
| Agent Registry & discovery            | No           | Yes                     |
| x402 payments                         | No           | Yes                     |
| A2A protocol support                  | No           | Yes                     |
| Policy engine                         | No           | Yes                     |
| MCP server (53 tools)                 | No           | Yes                     |
| SOC 2 controls                        | Partial      | Yes                     |
| SDKs                                  | Node, Python | Node, Python, Go, CLI   |

## When to Use AgentMail

AgentMail is a reasonable choice if:

* Your agent only sends and receives email
* You do not need phone or identity capabilities
* You are building a prototype and email is the only channel
* You prefer a narrowly scoped vendor for email specifically

## When to Use Anima

Anima is the right choice when:

* Your agent operates across multiple channels (email + phone)
* You need cryptographic identity for agent-to-agent trust
* Your compliance requirements demand audit trails across all agent actions
* You want a single SDK instead of integrating multiple separate services
* You need vault storage or policy enforcement

## Code Comparison

### AgentMail: Send an email

```ts theme={null}
// AgentMail — email only
import { AgentMail } from "agentmail";

const client = new AgentMail({ apiKey: "am_..." });
await client.send({
  from: "agent@myco.com",
  to: "user@example.com",
  subject: "Your order update",
  body: "Your order has shipped.",
});
```

### Anima: Full agent workflow

```ts theme={null}
// Anima — email + SMS + vault in one SDK
import { Anima } from "@anima-labs/sdk";

const anima = new Anima({ apiKey: "ak_..." });
const agent = await anima.agents.create({ name: "Support Agent" });

// Send email
await anima.messages.send_email({
  agentId: agent.id,
  to: "user@example.com",
  subject: "Your refund has been processed",
  body: "We've issued a $45.00 refund to your original payment method.",
});

// Send SMS confirmation
await anima.messages.sendSms({
  agentId: agent.id,
  to: "+15551234567",
  body: "Refund of $45.00 processed. Check your email for details.",
});

// Store the case credentials for follow-up
await anima.vault.createCredential({
  agentId: agent.id,
  type: "secure_note",
  name: "Case #4821 — Refund details",
  notes: JSON.stringify({
    orderId: "ORD-9921",
    refundAmount: 4500,
  }),
});
```

Same agent. Same API key. No glue code between vendors.

## The Unified Identity Advantage

The deeper issue with using AgentMail alongside other point solutions is identity fragmentation. Your agent has one identity in AgentMail, another in your phone service. There is no single source of truth for "who is this agent and what is it authorized to do?"

With Anima, every agent gets a `did:anima` identifier that spans all capabilities. The policy engine enforces rules across email and phone from a single configuration. Audit logs capture every action across every channel in one place.

This matters for compliance. When an auditor asks "what did agent X do last month?", you query one system — not five.

## Migration Path

If you are already on AgentMail and want to move to Anima, the process is straightforward:

1. Install the Anima SDK alongside AgentMail
2. Create agents in Anima and set up custom domains
3. Migrate email sending calls from AgentMail's API to `anima.messages.send_email()`
4. Add phone and vault capabilities as needed
5. Remove the AgentMail dependency

The Anima email API is designed to be familiar. If you have used AgentMail, you will find the patterns similar — the main difference is that Anima uses `agentId` to scope everything to a unified agent identity.

## Bottom Line

AgentMail is fine for email. But production agents do not just send email — they call, authenticate, and prove their identity. Anima provides the full stack so you can build agents that operate in the real world without stitching together multiple different services.

[Get started with Anima](/getting-started) | [See the full SDK reference](/sdks)
