# AX Check: agentmail.cc
Checked 2026-10-07.

AgentMail's docs, pricing, and setup are fully agent-ready.
All 23 checklist items passed: quickstart, SDKs, CLI, MCP server, and API reference are all reachable, with pricing fully stated upfront.

## Onboarded with real credentials

## Coding sessions
All three independent sessions (DeepSeek V4.1 Flash, Kimi K3, Qwen 3.8 Max) completed the task and produced full pricing tables covering Free, Developer, Startup, and Enterprise tiers, citing concrete limits like inbox counts, emails per month, and storage sourced directly from the live pricing page.

### DeepSeek V4.1 Flash
[View public run](https://agents.withgauge.com/p/runs/7687c5ea-8e6f-4c82-8c93-4a8a8f51495c) · [Read transcript](https://www.ax-check.com/agentmail.cc/sessions/deepseek.json)
Final output gives a full pricing table (Free/Developer/Startup/Enterprise) scraped live from agentmail.to/pricing (seq 38-41) with named assumptions (plan tier, add-on costs, yearly discount, free-tier no-credit-card).
#### End-to-end onboarding
- **Onboarded with real credentials**: The agent self-served real API credentials via AgentMail's agent sign-up endpoint with no human login or human-supplied key, then used that live key to run authenticated reads against the hosted product (listing the org's inboxes and inbox messages). A send attempt with the same key hit a real, documented 403 from the hosted API (not a mock), confirming genuine authentication even though sending is gated by an anti-spam/human-verification policy.
  Event 81:

  ```text
  {"organization_id":"c6efb03e-660e-436a-bf21-1f54faab3edb","inbox_id":"pi-demo-280405065@agentmail.to","email":"pi-demo-280405065@agentmail.to","api_key":"am_us_a0cf9d616b081f74770b5558d4a0b54af398f42a144e64a5269af9c1c2ecc29e"
  ```
  Event 95:

  ```text
  === inboxes.list ===
  type: ListInboxesResponse | count: 1
  first inbox: {"pod_id": "c6efb03e-660e-436a-bf21-1f54faab3edb", "inbox_id": "pi-demo-280405065@agentmail.to"
  ```
  Event 116:

  ```text
  ===== whoami =====
  Inboxes in this organization: 1
    - pi-demo-280405065@agentmail.to  (display name: AgentMail)
  ```
  Event 100:

  ```text
  ApiError status: 403
  body: name='MessageRejectedError' code='message_rejected' message='Message rejected: Recipient(s) blocked: recipient@example.com (not in allow list)'
  ```

#### Hallucinated URLs
None identified in this transcript.

#### Blockers
- **Sending email is locked until a human is verified**: Product behavior, not agent error: AgentMail's self-signup flow (used with no human email) deliberately creates a receive-only inbox. The agent correctly followed documented steps, got a real API key, and confirmed via a live 403 that outbound send/reply is blocked until a human email is attached and OTP-verified, or the inbox is claimed in the Console. This is an intentional anti-spam gate, not a bug, but it prevented the send/reply workflow from being demonstrated end-to-end.
  Event 81:

  ```text
  It cannot send email yet, because no human is attached to your account.
  ```
  Event 100:

  ```text
  fix="Remove these recipients from the request, or add each missing recipient to the send allow list with POST /v0/lists/send/allow
  ```

#### Suggested Changes
- **Add a pricing route at docs.agentmail.to/pricing**: The agent tried docs.agentmail.to/pricing expecting pricing info alongside the docs site and got a 404, then had to separately find the marketing site's pricing page at agentmail.to/pricing. Add a redirect or stub at docs.agentmail.to/pricing pointing to the real pricing page.
  Event 34:

  ```text
  === https://docs.agentmail.to/pricing ===
  http=404 size=64704
  ```
- **Surface the send-lock limitation earlier in the agent quickstart**: The For Agents quickstart shows 'Create an inbox and send an email' as step 3 right after sign-up, implying sending works immediately, but a no-human-email signup is receive-only and send calls 403 until verification. Add an explicit callout in quickstart step 3 stating send requires human attachment/verification first.
  Event 42:

  ```text
  3 Create an inbox and send an email With the API key from sign-up, the agent can create inboxes and send mail on its own.
  ```
  Event 100:

  ```text
  ApiError status: 403
  body: name='MessageRejectedError' code='message_rejected'
  ```

### Kimi K3
[View public run](https://agents.withgauge.com/p/runs/fb5ce294-0b97-4cd1-ac34-2397a9b6312c) · [Read transcript](https://www.ax-check.com/agentmail.cc/sessions/kimi.json)
Final output gives a tiered pricing table (Free/Developer/Startup/Enterprise) with the workload assumptions behind each figure (inbox counts, emails/mo, storage, seats) plus add-on and billing-cycle caveats, sourced from the live pricing page fetch at seq 13-36.
#### End-to-end onboarding
- **Onboarded with real credentials**: The agent self-registered via the documented agent sign-up endpoint, obtaining a real API key and inbox with no human intervention, then used that key to make authenticated calls against the live hosted API: listing inbox messages (returned a real count) and attempting a send (returned a structured, product-specific error rather than a generic failure), proving the key was live and authenticated against the real backend.
  Event 60:

  ```text
  {"organization_id":"554dde18-e2af-4022-8ff8-4954103e3fef","inbox_id":"pi-demo-agent-7f3k9@agentmail.to","email":"pi-demo-agent-7f3k9@agentmail.to","api_key":"am_us_210d1f7a8b2246b104959bacdcdcb62fdf7e08d9fc92f11427d9f2d5de7326f6"
  ```
  Event 79:

  ```text
  Using inbox: pi-demo-agent-7f3k9@agentmail.to
  Messages in pi-demo-agent-7f3k9@agentmail.to: 0
  Send blocked (expected until a human is attached): 403 MessageRejectedError
  ```
  Event 71:

  ```text
  "message": "Inbox limit exceeded",
    "fix": "This organization is not verified yet, so its limits are the pre-verification defaults.
  ```

#### Hallucinated URLs
None identified in this transcript.

#### Blockers
- **Sending email requires human verification**: Product behavior, not agent error: unverified agent organizations are receive-only by design. Creating a second inbox returned a 403 limit_exceeded error, and attempting to send mail returned a 403 message_rejected error because the recipient wasn't on an allow list and no human had been attached/verified yet. This is an expected security gate (OTP sent to a human email), not a credentials failure or test-environment issue — the agent correctly identified it needs a human to supply an email and relay an OTP to fully unlock sending.
  Event 71:

  ```text
  "message": "Inbox limit exceeded",
    "fix": "This organization is not verified yet, so its limits are the pre-verification defaults. Ask the human for the verification code we emailed them and call POST /v0/agent/verify with it.
  ```
  Event 79:

  ```text
  "message": "Message rejected: Recipient(s) blocked: someone@example.com (not in allow list)"
  ```

#### Suggested Changes
- **Expose pricing figures as plain text, not just RSC JSON**: The pricing page serves plan prices and feature data entirely inside a Next.js React Server Component JSON payload, requiring regex parsing of nested escaped JSON strings to recover plain numbers. Consider a plain-text or JSON pricing summary endpoint, similar to the /llms.txt docs convention, so figures are readable without a JS-executing browser. Check by curling the page and confirming prices appear as plain text.
  Event 15:

  ```text
  children\":\"2\"}]}]
  ```

### Qwen 3.8 Max
[View public run](https://agents.withgauge.com/p/runs/036c059b-87c2-4058-a247-d52a37d2f60d) · [Read transcript](https://www.ax-check.com/agentmail.cc/sessions/qwen.json)
Final output lists Free/Developer/Startup/Enterprise tiers with concrete limits (inboxes, emails/mo, storage, custom domains) sourced live from agentmail.to/pricing, giving the basis for each figure.
#### End-to-end onboarding
- **Onboarding needs a login**: The agent never obtained an AgentMail API key during the session. It checked the environment for one, found none, and the only run of the finished example script exited with a message asking the human to supply a key. No signup/credential-issuance flow was attempted or completed, so no authenticated product operation (inbox creation, email send, etc.) against the hosted AgentMail API was ever demonstrated.
  Event 5:

  ```text
  env | grep -i -E "agentmail|api_key" | sed 's/=.*/=<redacted>/'
  ```
  Event 51:

  ```text
  AGENTMAIL_API_KEY not set — create a free key at https://agentmail.to/console
  ```
  Event 70:

  ```text
  Blocked point:** I could not execute it live — there's no `AGENTMAIL_API_KEY` in this environment. The script exits cleanly with a message telling you to add one.
  ```

#### Hallucinated URLs
None identified in this transcript.

#### Blockers
- **Missing AgentMail API key prevented live execution**: The sandbox had no AGENTMAIL_API_KEY and the agent had no self-service way to generate one (no signup flow attempted). This is a credentials/environment limitation rather than a product defect — AgentMail requires account signup for a key, which is normal auth. As a result, the example script was only syntax-checked and never run against the real hosted API.
  Event 51:

  ```text
  AGENTMAIL_API_KEY not set — create a free key at https://agentmail.to/console
  ```
  Event 68:

  ```text
  syntax OK
  ```
- **SDK v2 field/method names undocumented in agent's initial attempt required trial-and-error**: The agent initially wrote code using guessed attribute names (inbox.id, inbox.inbox_address, msg.status) that didn't match the installed agentmail 2.0.13 package, causing an import error and requiring introspection of the actual classes before the example would even parse correctly. This was agent error compounded by a lack of clear up-to-date reference, since the agent noted older docs may describe the v1 API.
  Event 43:

  ```text
  ImportError: cannot import name 'CreateInboxRequest' from 'agentmail.types'
  ```
  Event 70:

  ```text
  the SDK recently went to v2 with renamed fields (`inbox_id`/`email` vs. v1's `id`/`inbox_address`), so older docs/tutorials online may not match the installed package
  ```

#### Suggested Changes
- **Publish a v2-accurate quickstart with correct field names**: On the AgentMail docs/quickstart page, replace any v1-era example code referencing inbox.id, inbox.inbox_address, and msg.status with the current v2.0.13 field names (inbox.inbox_id, inbox.email, msg.thread_id). Verify by running the published quickstart snippet against the installed PyPI package without needing to introspect classes manually.
  Event 70:

  ```text
  the SDK recently went to v2 with renamed fields (`inbox_id`/`email` vs. v1's `id`/`inbox_address`), so older docs/tutorials online may not match the installed package
  ```
- **Add a CLI or API path to self-service API key creation**: Provide a documented way (e.g., a signup API endpoint or CLI command) for a new developer to obtain an AgentMail API key without going through the hosted console UI, so automated or headless environments can complete onboarding without manual key copy-paste. Check by confirming a fresh script can request and receive a working key end-to-end.
  Event 51:

  ```text
  AGENTMAIL_API_KEY not set — create a free key at https://agentmail.to/console
  ```

### Task given to each agent
Help me build a simple example using AgentMail. Tell me how pricing works, and briefly tell me whether this product will be easy for you to manage. Let me know if you get blocked. If this product has no developer workflow you can act on, say so plainly and stop. Stay light: use the hosted product through its SDK or API. Do not start local service stacks or wait for long-running commands; if the quickstart requires either, say so plainly and stop.

No product credentials were supplied and no purchases were authorized.

## Score: A · 100/100 (provisional)
Grades come from completed site checks. Coding sessions and skipped checks do not affect the score.

### Clarity
- **Pass** — Homepage answers Markdown requests

  ```text
  Homepage returned text/markdown with 362 tokens when Accept: text/markdown was sent.
  ```

- **Pass** — llms.txt provides an actionable documentation index

  ```text
  llms.txt links docs, API reference, MCP, SDKs, quickstart and setup guides.
  ```

- **Pass** — llms.txt provides navigation guidance

  ```text
  llms.txt gives ordered agent onboarding steps and links to docs and guides.
  ```

- **Pass** — llms.txt mentions offered API, MCP, and skills

  ```text
  llms.txt covers REST API, hosted MCP server, and Claude skill onboarding.
  ```

- **Pass** — A compact guide representation exists

  ```text
  llms.txt and SKILL.md provide compact Markdown guide representations for AgentMail.
  ```

- **Pass** — A focused guide is directly retrievable

  ```text
  SKILL.md and quickstart.md are directly retrievable focused guides with concrete steps.
  ```

- **Pass** — Equivalent instructions fit a token budget

  ```text
  SKILL.md is 2795 tokens, well under the 8000-token budget.
  ```

- **Pass** — Product-docs links survive format changes

  ```text
  Homepage Markdown retains docs, API reference, console, pricing and GitHub links.
  ```

- **Pass** — The compact guide is independently actionable

  ```text
  SKILL.md gives install, client init, inbox create, send, webhook and gotchas as a standalone workflow.
  ```

- **Pass** — Install and next-step links resolve

  ```text
  Quickstart install commands and next-step links (WebSockets, webhooks, API reference) fetched successfully.
  ```


### Onboarding
- **Pass** — Docs lead to a relevant quickstart

  ```text
  Docs quickstart gives concrete first steps: sign up, verify OTP, create inbox, send email.
  ```

- **Pass** — Installation commands are extractable

  ```text
  Install commands extractable: pip install agentmail, npm install agentmail, npm install -g agentmail-cli.
  ```

- **Pass** — Code examples are available without interaction

  ```text
  Full Python, TypeScript and cURL code examples shown inline without interaction.
  ```

- **Pass** — Prerequisites and auth boundaries are explicit

  ```text
  Auth explicit: AGENTMAIL_API_KEY env var, Console key generation, agent sign-up OTP flow.
  ```


### Pricing
- **Pass** — Pricing is readable without interaction

  ```text
  Pricing page renders as plain Markdown with all plan prices visible, no interaction needed.
  ```

- **Pass** — Prices are stated, not gated

  ```text
  Free $0, Developer $20/mo, Startup $200/mo stated; Enterprise custom pricing.
  ```

- **Pass** — Pricing units and limits are explicit

  ```text
  Units explicit: inboxes, emails/month, emails/day, storage GB, custom domains per tier.
  ```

- **Pass** — Agents identify pricing and its assumptions

  ```text
  3 of 3 sessions were judged on pricing; 0 fell short. DeepSeek V4.1 Flash: Final output gives a full pricing table (Free/Developer/Startup/Enterprise) scraped live from agentmail.to/pricing (seq 38-41) with named assumptions (plan tier, add-on costs, yearly discount, free-tier no-credit-card). Kimi K3: Final output gives a tiered pricing table (Free/Developer/Startup/Enterprise) with the workload assumptions behind each figure (inbox counts, emails/mo, storage, seats) plus add-on and billing-cycle caveats, sourced from the live pricing page fetch at seq 13-36. Qwen 3.8 Max: Final output lists Free/Developer/Startup/Enterprise tiers with concrete limits (inboxes, emails/mo, storage, custom domains) sourced live from agentmail.to/pricing, giving the basis for each figure. This behavioural item does not affect the fast grade.
  ```


### Activation
- **Pass** — An API reference or OpenAPI spec is reachable

  ```text
  API reference at docs.agentmail.to/api-reference and base URL https://api.agentmail.to/v0/ documented.
  ```

- **Pass** — An MCP server is documented and well-formed

  ```text
  Hosted MCP server at https://mcp.agentmail.to/mcp documented with OAuth and x-api-key auth and 37 tools.
  ```

- **Pass** — A CLI install path is documented

  ```text
  CLI install documented: npm install -g agentmail-cli, with agentmail inboxes create and send commands.
  ```

- **Pass** — SDK packages resolve on their registries

  ```text
  Registry lookups returned HTTP 200 for pypi agentmail, npm agentmail, and npm agentmail-cli.
  ```

- **Pass** — Agent skills are published

  ```text
  AgentMail skill published at agentmail-claude-skill SKILL.md with install, workflows, and references.
  ```



[Full report data](https://www.ax-check.com/agentmail.cc/report.json)
