Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/tokencanopy/e2a/email-evalsnpx skills add tokencanopy/e2a --skill email-evalsgit clone --depth 1 https://github.com/tokencanopy/e2aWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00053 | $0.01841 |
| Opus 5 | $0.00026 | $0.00920 |
| Sonnet 5 | $0.00011 | $0.00368 |
| Haiku 4.5 | $0.00005 | $0.00184 |
Grade A, and why
email-evals scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 145 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Email evals
Gather the suite one answer at a time
Ask one logical question at a time; do not dump a questionnaire. Ask exactly one prompt, wait for the answer, then advance. Conditionally omit a later prompt only when an earlier answer proves its field irrelevant; never bundle prompts.
What ships with it
60 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- email-evals.sh 824 B runs code
- launcher.mjs 30 KB runs code
- runtime/cli.mjs 20 KB runs code
- runtime/email-evals-runtime.bundle.mjs 1221 KB runs code
- runtime/lib/cli-arguments.mjs 3.0 KB runs code
- runtime/lib/contract.mjs 39 KB runs code
- runtime/lib/e2a-adapter.mjs 79 KB runs code
- runtime/lib/errors.mjs 2.9 KB runs code
- runtime/lib/grade-content.mjs 30 KB runs code
- runtime/lib/grade-core.mjs 19 KB runs code
- runtime/lib/mime.mjs 11 KB runs code
- runtime/lib/normalize.mjs 17 KB runs code
- runtime/lib/report.mjs 47 KB runs code
- runtime/lib/result-contract.mjs 769 B runs code
- runtime/lib/runner.mjs 78 KB runs code
- runtime/lib/safe-pattern.mjs 580 B runs code
- runtime/package-lock.json 16 KB
- runtime/package.json 423 B
- runtime/test/bundle.test.mjs 3.8 KB runs code
- runtime/test/cli.test.mjs 20 KB runs code
- runtime/test/contract.test.mjs 29 KB runs code
- runtime/test/e2a-adapter-observe.test.mjs 61 KB runs code
- runtime/test/e2a-adapter-preflight.test.mjs 11 KB runs code
- runtime/test/final-security.test.mjs 14 KB runs code
- runtime/test/grade-content.test.mjs 27 KB runs code
- runtime/test/grade-core.test.mjs 19 KB runs code
- runtime/test/launcher.test.mjs 19 KB runs code
- runtime/test/live-responder.mjs 2.4 KB runs code
- runtime/test/mime.test.mjs 8.0 KB runs code
- runtime/test/report.test.mjs 26 KB runs code
- runtime/test/runner.test.mjs 81 KB runs code
- runtime/test/safe-pattern.test.mjs 1.7 KB runs code
- runtime/test/scaffold.test.mjs 6.5 KB runs code
- runtime/test/setup.test.mjs 3.7 KB runs code
- runtime/testdata/contracts/invalid/bad-duration/suite.yaml 265 B
- runtime/testdata/contracts/invalid/bad-regex/case.yaml 145 B
- runtime/testdata/contracts/invalid/bad-regex/suite.yaml 248 B
- runtime/testdata/contracts/invalid/case-traversal/suite.yaml 253 B
- runtime/testdata/contracts/invalid/duplicate-key/suite.yaml 250 B
- runtime/testdata/contracts/invalid/escape.yaml 103 B
- runtime/testdata/contracts/invalid/missing-envelope-expectation/case.yaml 206 B
- runtime/testdata/contracts/invalid/missing-envelope-expectation/suite.yaml 248 B
- runtime/testdata/contracts/invalid/missing-environment/case.yaml 110 B
- runtime/testdata/contracts/invalid/missing-environment/suite.yaml 262 B
- runtime/testdata/contracts/invalid/partial-environment/suite.yaml 246 B
- runtime/testdata/contracts/invalid/recipient-outside-allowlist/case.yaml 262 B
- runtime/testdata/contracts/invalid/recipient-outside-allowlist/suite.yaml 248 B
- runtime/testdata/contracts/invalid/unknown-key/suite.yaml 257 B
- runtime/testdata/contracts/valid/cases/happy-path.yaml 791 B
- runtime/testdata/contracts/valid/cases/missing-information.yaml 435 B
- runtime/testdata/contracts/valid/cases/unsafe-request.yaml 338 B
- runtime/testdata/contracts/valid/suite.yaml 398 B
- runtime/testdata/e2a/events-blocked.json 1.4 KB
- runtime/testdata/e2a/events-success.json 2.3 KB
- runtime/testdata/e2a/protection-safe.json 374 B
- runtime/testdata/e2a/protection-wide.json 158 B
- runtime/testdata/evidence/core-forward.json 671 B
- runtime/testdata/evidence/core-safe-reply.json 685 B
- runtime/testdata/mime/attachment.eml 642 B
- runtime/testdata/mime/header-injection.eml 441 B
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2d ago First seen · 145 lines · 53 tokens per session scan A 52c316e24f2f
email-evals is a skill published in the GitHub repository tokencanopy/e2a (184 stars, last pushed 2d ago), licensed Apache-2.0. It adds 53 tokens to every session and 1,841 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
commune-email
I give you a real email inbox and let you send, receive, search, and manage email threads programmatically via the Commune API. Every inbox I create is RFC 5322 compliant — replies thread correctly in any email client, including Gmail, Apple Mail, and Outlook.
commune-sms
I give you a real phone number and let you send and receive SMS messages programmatically via the Commune API. You can send texts to any number, read conversation threads, and list all your SMS conversations — all from within your OpenClaw agent.
commune-agent-network
Requires COMMUNEAPIKEY environment variable. Get one at commune.email.
shipmail
Operate Shipmail custom-domain business email, agent inboxes, calendars, booking pages, newsletters, webhooks, and related account resources through the Shipmail MCP server. Use when the user asks to read or triage a Shipmail inbox, draft or send email, reply to a message or thread, manage a mailbox or domain, check…
skills
Email API for AI agents. Create inboxes, send/receive email, manage threads and webhooks.
clawaimail
Email infrastructure for AI agents — create inboxes, send and receive real emails, search messages, manage threads. Alternative to AgentMail with MCP server, REST API, webhooks, and WebSocket streaming.