npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@multimail/mcp-server

v0.4.0

Published

MCP server for MultiMail — email for AI agents

Readme

@multimail/mcp-server

MCP server for MultiMail. Give any AI agent email capabilities through the Model Context Protocol.

Quick start

npx @multimail/mcp-server

Requires MULTIMAIL_API_KEY environment variable. Get one at multimail.dev.

By using MultiMail you agree to the Terms of Service and Acceptable Use Policy.

Setup

Option A: Remote server (recommended)

No install required. Connect directly to our hosted server. Authenticates via OAuth in the browser.

{
  "mcpServers": {
    "multimail": {
      "type": "url",
      "url": "https://mcp.multimail.dev/mcp"
    }
  }
}

Works with Claude.ai, Claude Desktop, Claude Code, and any client that supports remote MCP servers.

Option B: Local server (stdio)

Run the server locally. API key is passed as an environment variable.

{
  "mcpServers": {
    "multimail": {
      "command": "npx",
      "args": ["-y", "@multimail/mcp-server"],
      "env": {
        "MULTIMAIL_API_KEY": "mm_live_...",
        "MULTIMAIL_MAILBOX_ID": "01KJ1NHN8J..."
      }
    }
  }
}

Where to add this

| Client | Config file | |--------|------------| | Claude Code | ~/.claude/.mcp.json | | Claude Desktop | claude_desktop_config.json | | Cursor | .cursor/mcp.json in your project | | Windsurf | ~/.codeium/windsurf/mcp_config.json | | Copilot (VS Code) | .vscode/mcp.json in your project | | OpenCode | mcp.json in your project | | ChatGPT Desktop | Settings > MCP Servers | | Any MCP client | Consult your client's docs for config location |

Environment variables

| Variable | Required | Description | |----------|----------|-------------| | MULTIMAIL_API_KEY | Yes | Your MultiMail API key (mm_live_...) | | MULTIMAIL_MAILBOX_ID | No | Default mailbox ID. If not set, pass mailbox_id to each tool or call list_mailboxes first. | | MULTIMAIL_API_URL | No | API base URL. Defaults to https://api.multimail.dev. |

Tools

| Tool | Description | |------|-------------| | list_mailboxes | List all mailboxes available to this API key | | send_email | Send an email with a markdown body. Supports attachments and idempotency_key. | | check_inbox | List emails with filters: status, sender, subject, date range, direction, attachments, cursor pagination | | read_email | Get full email content including markdown body, attachments, tags, and delivery timestamps | | reply_email | Reply to an email in its existing thread. Supports attachments and idempotency_key. | | download_attachment | Download an email attachment as base64 with content type | | get_thread | Get all emails in a conversation thread with participants and metadata | | cancel_message | Cancel a pending email (pending_scan, pending_send_approval, or pending_inbound_approval) | | update_mailbox | Update mailbox settings (display name, oversight mode, signature, webhooks) | | update_account | Update account settings (org name, oversight email, physical address) | | delete_mailbox | Permanently delete a mailbox (requires admin scope) | | resend_confirmation | Resend the activation email with a new code | | activate_account | Activate an account using the code from the confirmation email | | tag_email | Set, get, or delete key-value tags on emails (persistent agent memory) | | add_contact | Add a contact to your address book with optional tags | | search_contacts | Search address book by name or email | | get_account | Get account status, plan, quota, sending enabled, enforcement tier | | create_mailbox | Create a new mailbox (requires admin scope) | | request_upgrade | Request an oversight mode upgrade (trust ladder) | | apply_upgrade | Apply an upgrade code from the operator | | get_usage | Check quota and usage stats for the billing period | | list_pending | List emails awaiting oversight decision (requires oversight scope) | | decide_email | Approve or reject a pending email (requires oversight scope) | | delete_contact | Delete a contact from the address book | | check_suppression | List suppressed email addresses | | remove_suppression | Remove an address from the suppression list | | list_api_keys | List all API keys (requires admin scope) | | create_api_key | Create a new API key with scopes (requires admin scope) | | revoke_api_key | Revoke an API key (requires admin scope) | | get_audit_log | Get account audit log (requires admin scope) | | delete_account | Permanently delete account and all data (requires admin scope) | | wait_for_email | Block until a new email arrives matching filters, or timeout (max 120s) | | create_webhook | Create a webhook subscription for real-time email event notifications | | list_webhooks | List all webhook subscriptions for this account | | delete_webhook | Delete a webhook subscription |

How it works

  • You write email bodies in markdown. MultiMail converts to formatted HTML for delivery.
  • Incoming email arrives as clean markdown. No HTML parsing or MIME decoding.
  • Threading is automatic. Reply to an email and headers are set correctly.
  • Sends return pending_scan status while the email is scanned for threats. If your mailbox uses gated oversight, the status transitions to pending_send_approval for human review. Do not retry or resend.
  • Verify other agents by checking the X-MultiMail-Identity signed header on received emails.

Development

npm install
npm run dev   # Run with tsx (no build needed)
npm run build # Compile TypeScript
npm start     # Run compiled version

Testing

echo '{"jsonrpc":"2.0","method":"tools/list","id":1}' | MULTIMAIL_API_KEY=mm_live_... node dist/index.js

License

MIT