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/e2a-integratenpx skills add tokencanopy/e2a --skill e2a-integrategit 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.00068 | $0.00667 |
| Opus 5 | $0.00034 | $0.00333 |
| Sonnet 5 | $0.00014 | $0.00133 |
| Haiku 4.5 | $0.00007 | $0.00067 |
Grade A, and why
e2a-integrate 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 — 69 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Integrate e2a into an application
Determine the integration mode
Identify whether the request needs outbound sending, inbound signed webhooks, REST polling, or a combined flow. Ask only when the send/receive intent is materially ambiguous. Read integration-modes.md for the decision table.
Inspect the existing codebase
Find the language, framework, package manager, configuration conventions, server entry point, persistence layer, and test runner. Preserve the existing module, dependency, and test conventions. Do not create production credentials or put live addresses in fixtures.
Select the supported client surface
Use the official TypeScript/JavaScript or Python SDK when the application uses one of those languages; use REST and the OpenAPI contract for every other server language. Never invent an SDK or an unofficial wrapper. Read sdk-recipes.md or rest-openapi.md for the selected surface.
Build one application boundary
Add one application-owned e2a adapter boundary. Keep routes, domain logic, and workers dependent on that boundary rather than calling e2a throughout the application. Define server-only credential and webhook-secret configuration; never expose either to browser code, client bundles, logs, or test fixtures.
Make retried writes idempotent with a stable key derived from the application's
logical operation. Treat accepted, scheduled, and pending_review as
durable acceptance states; a send in any of these states must not be resent or
retried. Durable acceptance is not terminal delivery. Observe eventual delivery
through the application's requested webhook, event-log, or polling flow, and
handle failed outcomes through its existing error and job conventions.
Secure inbound webhooks
For a webhook integration, retain the raw request bytes and perform signature verification before JSON parsing or dispatch. Deduplicate at-least-once events by event ID in durable application state when it is available, then make the handler's side effects idempotent. Follow webhooks-and-tests.md for framework-safe verification and recovery details.
What ships with it
4 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.
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 · 69 lines · 68 tokens per session scan A 99f9199fc0de
e2a-integrate is a skill published in the GitHub repository tokencanopy/e2a (184 stars, last pushed 2d ago), licensed Apache-2.0. It adds 68 tokens to every session and 667 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.