Integrations
Agent plugin (Claude Code, Cursor, Codex, Open Plugins)
The native plugin lives at plugins/agents and ships eight skills — send-email, check-email, manage-inboxes, wzrdmail (SDK), wzrdmail-cli, wzrdmail-mcp, wzrdmail-toolkit, agent-email-patterns — plus .mcp.json pointing at the hosted MCP server.
# Claude Code
claude plugin marketplace add gratitude5dee/wzrdmail --path plugins/agents
claude plugin install wzrdmail
# Cursor — add plugins/agents as a local plugin, or merge .mcp.json into .cursor/mcp.json
# Codex — point at plugins/agents/.agents/plugins/marketplace.json
Set WZRDMAIL_API_KEY in the client's environment; the skills never embed keys.
MCP server
https://mcp.mail.wzrd.tech/mcp Streamable HTTP
x-api-key: wm_live_… or Authorization: Bearer wm_live_…
The same endpoint also relays the Air × Muse connector when no WZRDMail API key is supplied. It advertises Air's OAuth 2.1 + PKCE resource challenge and forwards the resulting opaque token directly to Air; it never exposes that token to WZRDMail's API or mailbox Durable Object. Use this lane only when connecting Air to Muse—mail clients should continue sending x-api-key.
The Air connection signs in through the existing WZRDMail console's Thirdweb authentication (email, Google, or Apple). WZRDMail returns only a five-minute, single-use opaque handoff to Air; Thirdweb tokens and email addresses do not cross the service boundary. The user then verifies the US mobile number that will own their unique Air iMessage line. Air provisions a new account, mailbox, and Box when needed. Once connected, actions made through the Muse connector execute immediately under the owner's Air plan and policy; Air does not show a separate consent step or Needs you card for those connector actions.
claude mcp add --transport http wzrdmail https://mcp.mail.wzrd.tech/mcp --header "x-api-key: ${WZRDMAIL_API_KEY}"
Tools: list_inboxes, create_inbox, get_inbox, list_messages, get_message, send_message, reply_to_message, reply_all_to_message, forward_message, update_message, list_threads, get_thread, search_threads, list_drafts, create_draft, update_draft, send_draft, get_attachment, list_webhooks, create_webhook, list_domains, get_usage. Tools are filtered by the key's permissions: an inbox-scoped read,drafts key can create_draft but send_message / send_draft return forbidden.
CLI
npm i -g @wzrdmail/cli # binaries: wzrdmail, wm
export WZRDMAIL_API_KEY=wm_live_…
wzrdmail inboxes list
wzrdmail messages send <inbox_id> --to a@example.com --subject Hi --text "Hello"
wzrdmail keys create --name box --inbox-id agent@wzrd.tech --permissions read,drafts
wzrdmail events tail --inbox-ids agent@wzrd.tech
WZRDMAIL_BASE_URL overrides the API host; WZRDMAIL_CONFIG_PATH relocates the saved login.
SDKs
npm install wzrdmail # import { WzrdMailClient } from "wzrdmail"
pip install wzrdmail # from wzrdmail import WzrdMail
Webhooks
Standard Webhooks / Svix signing (svix-id, svix-timestamp, svix-signature, whsec_ secret). Any Svix verifier or verifyWebhook from @wzrdmail/core works. Subscribe per inbox (inbox_id), per pod set (pod_ids), or organization-wide.