Back to Browse

Mailoo MCP Server

Developer ToolsLow Risk10.0MCP RegistryLocal
Free

Server data from the Official MCP Registry

Mailoo — email MCP server for IMAP, SMTP, and ManageSieve. Multi-account, per-folder profiles.

About

Mailoo — email MCP server for IMAP, SMTP, and ManageSieve. Multi-account, per-folder profiles.

Security Report

10.0
Low Risk10.0Low Risk

Valid MCP server (2 strong, 1 medium validity signals). No known CVEs in dependencies. Package registry verified. Imported from the Official MCP Registry. Trust signals: 3 highly-trusted packages.

3 files analyzed · 1 issue found

Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.

Permissions Required

This plugin requests these system permissions. Most are normal for its category.

file_system

Check that this permission is expected for this type of plugin.

Shell Command Execution

Runs commands on your machine. Be cautious — only use if you trust this plugin.

What You'll Need

Set these up before or after installing:

Email address. Required for the environment-variable account.Optional

Environment variable: MCP_EMAIL_ADDRESS

Password or app password. Required unless MCP_EMAIL_OAUTH2_PROVIDER is set.Required

Environment variable: MCP_EMAIL_PASSWORD

IMAP server hostname.Optional

Environment variable: MCP_EMAIL_IMAP_HOST

SMTP server hostname.Optional

Environment variable: MCP_EMAIL_SMTP_HOST

Account name. Defaults to default.Optional

Environment variable: MCP_EMAIL_ACCOUNT_NAME

Display name on sent mail.Optional

Environment variable: MCP_EMAIL_FULL_NAME

Login username. Defaults to the email address.Optional

Environment variable: MCP_EMAIL_USERNAME

IMAP port. Defaults to 993.Optional

Environment variable: MCP_EMAIL_IMAP_PORT

Set to false to turn off implicit IMAP TLS. Defaults to true.Optional

Environment variable: MCP_EMAIL_IMAP_TLS

Set to true to upgrade IMAP with STARTTLS. Defaults to false.Optional

Environment variable: MCP_EMAIL_IMAP_STARTTLS

Set to false to skip IMAP certificate verification. Defaults to true.Optional

Environment variable: MCP_EMAIL_IMAP_VERIFY_SSL

Set to true to force IMAP4rev1 SEARCH.Optional

Environment variable: MCP_EMAIL_IMAP_DISABLE_IMAP4REV2

ManageSieve hostname. Defaults to the IMAP host.Optional

Environment variable: MCP_EMAIL_SIEVE_HOST

ManageSieve port. Defaults to 4190.Optional

Environment variable: MCP_EMAIL_SIEVE_PORT

SMTP port. Defaults to 465.Optional

Environment variable: MCP_EMAIL_SMTP_PORT

Set to false to turn off implicit SMTP TLS. Defaults to true.Optional

Environment variable: MCP_EMAIL_SMTP_TLS

Set to true to upgrade SMTP with STARTTLS. Defaults to false.Optional

Environment variable: MCP_EMAIL_SMTP_STARTTLS

Set to false to skip SMTP certificate verification. Defaults to true.Optional

Environment variable: MCP_EMAIL_SMTP_VERIFY_SSL

Set to false to disable SMTP connection pooling. Defaults to true.Optional

Environment variable: MCP_EMAIL_SMTP_POOL_ENABLED

Maximum pooled SMTP connections. Defaults to 1.Optional

Environment variable: MCP_EMAIL_SMTP_POOL_MAX_CONNECTIONS

Maximum messages per pooled SMTP connection. Defaults to 100.Optional

Environment variable: MCP_EMAIL_SMTP_POOL_MAX_MESSAGES

OAuth2 provider: google, microsoft, or custom.Optional

Environment variable: MCP_EMAIL_OAUTH2_PROVIDER

OAuth2 client id.Optional

Environment variable: MCP_EMAIL_OAUTH2_CLIENT_ID

OAuth2 client secret.Required

Environment variable: MCP_EMAIL_OAUTH2_CLIENT_SECRET

OAuth2 refresh token.Required

Environment variable: MCP_EMAIL_OAUTH2_REFRESH_TOKEN

Maximum sends per minute. Defaults to 10.Optional

Environment variable: MCP_EMAIL_RATE_LIMIT

Set to true to omit write tools and mailbox writers.Optional

Environment variable: MCP_EMAIL_READ_ONLY

Set to false to skip the IMAP Sent copy after SMTP. Defaults to true.Optional

Environment variable: MCP_EMAIL_SAVE_TO_SENT

Set to true to start the IMAP IDLE watcher.Optional

Environment variable: MCP_EMAIL_WATCHER_ENABLED

Comma-separated folders to watch. Defaults to INBOX.Optional

Environment variable: MCP_EMAIL_WATCHER_FOLDERS

IMAP IDLE timeout in seconds. Defaults to 1740.Optional

Environment variable: MCP_EMAIL_WATCHER_IDLE_TIMEOUT

What to do on arrival: triage, notify, or none.Optional

Environment variable: MCP_EMAIL_HOOK_ON_NEW_EMAIL

Hook preset: inbox-zero, gtd, priority-focus, notification-only, or custom.Optional

Environment variable: MCP_EMAIL_HOOK_PRESET

Set to true to apply labels from hook triage.Optional

Environment variable: MCP_EMAIL_HOOK_AUTO_LABEL

Set to true to flag mail from hook triage.Optional

Environment variable: MCP_EMAIL_HOOK_AUTO_FLAG

Seconds to batch arrivals before hooks run. Defaults to 5.Optional

Environment variable: MCP_EMAIL_HOOK_BATCH_DELAY

Extra instructions appended to the hook preset.Optional

Environment variable: MCP_EMAIL_HOOK_CUSTOM_INSTRUCTIONS

Set to true for desktop notifications.Optional

Environment variable: MCP_EMAIL_ALERT_DESKTOP

Set to true to play a sound with desktop notifications.Optional

Environment variable: MCP_EMAIL_ALERT_SOUND

Minimum urgency for an alert: urgent, high, normal, or low.Optional

Environment variable: MCP_EMAIL_ALERT_URGENCY_THRESHOLD

HTTP or HTTPS URL that receives alert POSTs.Required

Environment variable: MCP_EMAIL_ALERT_WEBHOOK_URL

Set to true to allow webhook targets on a LAN, VPN, or tailnet.Optional

Environment variable: MCP_EMAIL_ALERT_WEBHOOK_ALLOW_PRIVATE

Set to true to create calendar events from hook triage.Optional

Environment variable: MCP_EMAIL_HOOK_AUTO_CALENDAR

Calendar name for automatic events.Optional

Environment variable: MCP_EMAIL_HOOK_CALENDAR_NAME

Minutes before an automatic event to alarm. Defaults to 15.Optional

Environment variable: MCP_EMAIL_HOOK_CALENDAR_ALARM_MINUTES

Set to false to skip confirming automatic calendar events. Defaults to true.Optional

Environment variable: MCP_EMAIL_HOOK_CALENDAR_CONFIRM

Set to true to classify residue mail with System One. Off by default.Optional

Environment variable: MCP_EMAIL_SYSTEM_ONE_ENABLED

HTTP listen address. Defaults to loopback. The host argument wins.Optional

Environment variable: MCP_EMAIL_HTTP_HOST

Bearer token. Required when the HTTP listen address is not loopback or MCP_EMAIL_HTTP_ALLOWED_HOSTS lists a non-loopback name.Required

Environment variable: MCP_EMAIL_HTTP_TOKEN

Comma-separated Host names. Required for 0.0.0.0 and ::.Optional

Environment variable: MCP_EMAIL_HTTP_ALLOWED_HOSTS

How to Install

Add this to your MCP configuration file:

{
  "mcpServers": {
    "io-github-bitfloo-mailoo": {
      "env": {
        "MCP_EMAIL_ADDRESS": "your-mcp-email-address-here",
        "MCP_EMAIL_IMAP_TLS": "your-mcp-email-imap-tls-here",
        "MCP_EMAIL_PASSWORD": "your-mcp-email-password-here",
        "MCP_EMAIL_SMTP_TLS": "your-mcp-email-smtp-tls-here",
        "MCP_EMAIL_USERNAME": "your-mcp-email-username-here",
        "MCP_EMAIL_FULL_NAME": "your-mcp-email-full-name-here",
        "MCP_EMAIL_HTTP_HOST": "your-mcp-email-http-host-here",
        "MCP_EMAIL_IMAP_HOST": "your-mcp-email-imap-host-here",
        "MCP_EMAIL_IMAP_PORT": "your-mcp-email-imap-port-here",
        "MCP_EMAIL_READ_ONLY": "your-mcp-email-read-only-here",
        "MCP_EMAIL_SMTP_HOST": "your-mcp-email-smtp-host-here",
        "MCP_EMAIL_SMTP_PORT": "your-mcp-email-smtp-port-here",
        "MCP_EMAIL_HTTP_TOKEN": "your-mcp-email-http-token-here",
        "MCP_EMAIL_RATE_LIMIT": "your-mcp-email-rate-limit-here",
        "MCP_EMAIL_SIEVE_HOST": "your-mcp-email-sieve-host-here",
        "MCP_EMAIL_SIEVE_PORT": "your-mcp-email-sieve-port-here",
        "MCP_EMAIL_ALERT_SOUND": "your-mcp-email-alert-sound-here",
        "MCP_EMAIL_HOOK_PRESET": "your-mcp-email-hook-preset-here",
        "MCP_EMAIL_ACCOUNT_NAME": "your-mcp-email-account-name-here",
        "MCP_EMAIL_SAVE_TO_SENT": "your-mcp-email-save-to-sent-here",
        "MCP_EMAIL_ALERT_DESKTOP": "your-mcp-email-alert-desktop-here",
        "MCP_EMAIL_IMAP_STARTTLS": "your-mcp-email-imap-starttls-here",
        "MCP_EMAIL_SMTP_STARTTLS": "your-mcp-email-smtp-starttls-here",
        "MCP_EMAIL_HOOK_AUTO_FLAG": "your-mcp-email-hook-auto-flag-here",
        "MCP_EMAIL_HOOK_AUTO_LABEL": "your-mcp-email-hook-auto-label-here",
        "MCP_EMAIL_IMAP_VERIFY_SSL": "your-mcp-email-imap-verify-ssl-here",
        "MCP_EMAIL_OAUTH2_PROVIDER": "your-mcp-email-oauth2-provider-here",
        "MCP_EMAIL_SMTP_VERIFY_SSL": "your-mcp-email-smtp-verify-ssl-here",
        "MCP_EMAIL_WATCHER_ENABLED": "your-mcp-email-watcher-enabled-here",
        "MCP_EMAIL_WATCHER_FOLDERS": "your-mcp-email-watcher-folders-here",
        "MCP_EMAIL_HOOK_BATCH_DELAY": "your-mcp-email-hook-batch-delay-here",
        "MCP_EMAIL_OAUTH2_CLIENT_ID": "your-mcp-email-oauth2-client-id-here",
        "MCP_EMAIL_ALERT_WEBHOOK_URL": "your-mcp-email-alert-webhook-url-here",
        "MCP_EMAIL_HOOK_ON_NEW_EMAIL": "your-mcp-email-hook-on-new-email-here",
        "MCP_EMAIL_SMTP_POOL_ENABLED": "your-mcp-email-smtp-pool-enabled-here",
        "MCP_EMAIL_HOOK_AUTO_CALENDAR": "your-mcp-email-hook-auto-calendar-here",
        "MCP_EMAIL_HOOK_CALENDAR_NAME": "your-mcp-email-hook-calendar-name-here",
        "MCP_EMAIL_HTTP_ALLOWED_HOSTS": "your-mcp-email-http-allowed-hosts-here",
        "MCP_EMAIL_SYSTEM_ONE_ENABLED": "your-mcp-email-system-one-enabled-here",
        "MCP_EMAIL_OAUTH2_CLIENT_SECRET": "your-mcp-email-oauth2-client-secret-here",
        "MCP_EMAIL_OAUTH2_REFRESH_TOKEN": "your-mcp-email-oauth2-refresh-token-here",
        "MCP_EMAIL_WATCHER_IDLE_TIMEOUT": "your-mcp-email-watcher-idle-timeout-here",
        "MCP_EMAIL_HOOK_CALENDAR_CONFIRM": "your-mcp-email-hook-calendar-confirm-here",
        "MCP_EMAIL_IMAP_DISABLE_IMAP4REV2": "your-mcp-email-imap-disable-imap4rev2-here",
        "MCP_EMAIL_SMTP_POOL_MAX_MESSAGES": "your-mcp-email-smtp-pool-max-messages-here",
        "MCP_EMAIL_ALERT_URGENCY_THRESHOLD": "your-mcp-email-alert-urgency-threshold-here",
        "MCP_EMAIL_HOOK_CUSTOM_INSTRUCTIONS": "your-mcp-email-hook-custom-instructions-here",
        "MCP_EMAIL_SMTP_POOL_MAX_CONNECTIONS": "your-mcp-email-smtp-pool-max-connections-here",
        "MCP_EMAIL_ALERT_WEBHOOK_ALLOW_PRIVATE": "your-mcp-email-alert-webhook-allow-private-here",
        "MCP_EMAIL_HOOK_CALENDAR_ALARM_MINUTES": "your-mcp-email-hook-calendar-alarm-minutes-here"
      },
      "args": [
        "-y",
        "@bitfloo/mailoo",
        "-y"
      ],
      "command": "npx"
    }
  }
}

Documentation

View on GitHub

From the project's GitHub README.

Mailoo

standard-readme compliant license CI M8ven Verified

Mailoo is Bitfloo's IMAP, SMTP, and ManageSieve MCP server: multi-mailbox, with profiles per account and per folder.

This is a public LGPL-3.0-or-later fork of email-mcp. It is not an official codefuturist project. See Upstream / Attribution.

Enables AI assistants to read, search, send, manage, schedule, and analyze emails across multiple accounts. Exposes 56 tools, 7 prompts, and 6 resources over the MCP protocol with OAuth2 support (experimental), email scheduling, calendar extraction, analytics, provider-aware label management, real-time IMAP IDLE watcher with AI-powered triage, customizable presets and static rules, ManageSieve filters, and a guided setup wizard.

Behaviour for Sent copies, IMAP4rev2, Sieve, attachment savePath, and read-only side effects is documented in docs/configuration.md and docs/tools.md.

Highlights

FeatureIn this tree
Multi-account IMAP/SMTP✅
Send / reply / forward✅
Drafts & templates✅
Provider-aware labels & bulk ops✅
Schedule future emails✅
Real-time IMAP IDLE watcher✅
AI triage with presets✅
Desktop & webhook alerts✅
Calendar (ICS) extraction✅
Email analytics✅
OAuth2 (Gmail / M365)✅ experimental
Guided setup wizard✅
ManageSieve (server-side filters)✅
Sender auth headers (SPF/DKIM/DMARC)✅

Table of Contents

Security

Policy and how to report a vulnerability: SECURITY.md.

  • tls is implicit TLS; starttls fails the connection when the server offers no STARTTLS. With both false, IMAP and SMTP differ — see Security considerations.
  • The audit log redacts passwords and message bodies. It records send, draft, folder, label, bulk, manage, sieve, template, and schedule writes, not every local write (src/safety/audit.ts) — SECURITY.md
  • One global rate_limit (default 10 per minute) sizes a separate send bucket for each account (src/config/schema.ts)
  • OAuth2 XOAUTH2 authentication for Gmail and Microsoft 365 (experimental)
  • savePath writes a new file only under a specific working directory — Security considerations
  • Outgoing attachment paths must be regular files under the working directory or home — Security considerations

Docs

TopicWhere
Sent APPEND, IMAP4rev2, Sieve, read_only, stdio EOFdocs/configuration.md
savePath, search dates, get_email_security, sieve tools, send/draft attachments, RFC 2047docs/tools.md
Performance notesdocs/performance-roadmap.md

Background

Most MCP email implementations provide only basic read/send. This server aims to be a full-featured email client for AI assistants, covering the entire lifecycle: reading, composing, managing, scheduling, and analyzing email — all from a single MCP server.

Key design decisions:

  • XDG-compliant config — TOML at ~/.config/mailoo/config.toml
  • Multi-account — Operate across multiple IMAP/SMTP accounts simultaneously
  • Layered services — Business logic is decoupled from MCP wiring for testability
  • Provider auto-detection — Gmail, Outlook, Yahoo, iCloud, Fastmail, ProtonMail, Zoho, GMX

Install

Requires Node.js ≥ 24.

npx -y @bitfloo/mailoo setup

That writes the local config and prints an MCP client snippet. The same package runs the server and the other commands:

npx -y @bitfloo/mailoo
npx -y @bitfloo/mailoo account add
npx -y @bitfloo/mailoo test

npx -y @bitfloo/mailoo with no subcommand starts the MCP server over stdio. Or install the mailoo command:

npm install -g @bitfloo/mailoo
# or
pnpm add -g @bitfloo/mailoo
# or, without a global install:
pnpm dlx @bitfloo/mailoo setup

From a clone

Building this repository needs pnpm 9:

git clone https://github.com/Bitfloo/mailoo.git
cd mailoo
pnpm install && pnpm build
node dist/main.js setup

Docker

The running image needs Docker, not Node on the host. Create the config first with npx -y @bitfloo/mailoo setup (or write the TOML by hand), then mount that directory into the container.

The image is ghcr.io/bitfloo/mailoo, built for linux/amd64 and linux/arm64. Tags are bare semver (no v prefix), for example ghcr.io/bitfloo/mailoo:0.1.7:

docker pull ghcr.io/bitfloo/mailoo:0.1.7

To build from a clone instead (docker-compose.yml uses build: .):

docker build -t ghcr.io/bitfloo/mailoo .

Note: The server uses stdio transport. Config is created on the host (npx -y @bitfloo/mailoo setup, or a hand-written TOML) and mounted into the container.

Usage

Commands below use npx -y @bitfloo/mailoo. A global install accepts the same subcommands as mailoo. From a clone, after pnpm build, those subcommands are node dist/main.js (see From a clone).

Setup

# Add an email account interactively (recommended)
npx -y @bitfloo/mailoo account add

# Or use the legacy alias
npx -y @bitfloo/mailoo setup

# Or create a template config manually
npx -y @bitfloo/mailoo config init

The setup wizard auto-detects server settings, tests connections, saves config, and outputs the MCP client config snippet.

Test Connections

npx -y @bitfloo/mailoo test            # all accounts
npx -y @bitfloo/mailoo test personal   # specific account

npx -y @bitfloo/mailoo test / mailoo test is a live-account connection probe, not Vitest. Unit and integration tests are pnpm test / pnpm test:integration (see Contributing).

Configure Your MCP Client

Run the guided installer, or paste a snippet below. There is no VS Code / MCP gallery listing.

npx -y @bitfloo/mailoo install

The installer can register an npx, pnpm dlx, or global mailoo launch. A mailoo binary already on PATH can use "command": "mailoo" with "args": ["stdio"].

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "mailoo": {
      "command": "npx",
      "args": ["-y", "@bitfloo/mailoo", "stdio"]
    }
  }
}

Mailoo is not in the VS Code Extensions gallery. Point Copilot at the npx launch below.

Workspace (.vscode/mcp.json):

{
  "servers": {
    "mailoo": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@bitfloo/mailoo", "stdio"]
    }
  }
}

User config (settings.json, all workspaces):

Open the Command Palette → Preferences: Open User Settings (JSON) and add:

{
  "mcp": {
    "servers": {
      "mailoo": {
        "type": "stdio",
        "command": "npx",
        "args": ["-y", "@bitfloo/mailoo", "stdio"]
      }
    }
  }
}

Edit ~/.cursor/mcp.json:

{
  "mcpServers": {
    "mailoo": {
      "command": "npx",
      "args": ["-y", "@bitfloo/mailoo", "stdio"]
    }
  }
}

Edit ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "mailoo": {
      "command": "npx",
      "args": ["-y", "@bitfloo/mailoo", "stdio"]
    }
  }
}

Edit ~/.config/zed/settings.json:

{
  "context_servers": {
    "mailoo": {
      "command": {
        "path": "npx",
        "args": ["-y", "@bitfloo/mailoo", "stdio"]
      }
    }
  }
}

Add to ~/.vibe/config.toml:

[[mcp_servers]]
name = "mailoo"
transport = "stdio"
command = "npx"
args = ["-y", "@bitfloo/mailoo", "stdio"]

To pass credentials directly instead of using a config file, use the env field:

[[mcp_servers]]
name = "mailoo"
transport = "stdio"
command = "npx"
args = ["-y", "@bitfloo/mailoo", "stdio"]
env = { MCP_EMAIL_ADDRESS = "you@example.com", MCP_EMAIL_PASSWORD = "your-app-password", MCP_EMAIL_IMAP_HOST = "imap.example.com", MCP_EMAIL_SMTP_HOST = "smtp.example.com" }

MCP tools are exposed as mailoo_<tool_name> (e.g. mailoo_list_emails). Restart Vibe after editing the config.

Run the server in a container — mount your config directory read-only. The image is ghcr.io/bitfloo/mailoo (pull a tag such as 0.1.7, or build it with docker build -t ghcr.io/bitfloo/mailoo .):

docker run --rm -i \
  -v ~/.config/mailoo:/home/node/.config/mailoo:ro \
  ghcr.io/bitfloo/mailoo

For MCP client configuration (e.g. Claude Desktop):

{
  "mcpServers": {
    "mailoo": {
      "command": "docker",
      "args": [
        "run", "--rm", "-i",
        "-v", "~/.config/mailoo:/home/node/.config/mailoo:ro",
        "ghcr.io/bitfloo/mailoo"
      ]
    }
  }
}
{
  "mcpServers": {
    "mailoo": {
      "command": "npx",
      "args": ["-y", "@bitfloo/mailoo", "stdio"],
      "env": {
        "MCP_EMAIL_ADDRESS": "you@example.com",
        "MCP_EMAIL_PASSWORD": "your-app-password",
        "MCP_EMAIL_IMAP_HOST": "imap.example.com",
        "MCP_EMAIL_SMTP_HOST": "smtp.example.com"
      }
    }
  }
}

CLI Commands

npx -y @bitfloo/mailoo [command]

Commands:
  stdio                     Run as MCP server over stdio (default)
  http [port] [host]        Streamable HTTP (default: port 8080 on 127.0.0.1 and ::1)
  account list              List all configured accounts
  account add               Add a new email account interactively
  account edit [name]       Edit an existing account
  account delete [name]     Remove an account
  setup                     Alias for 'account add'
  test                      Test connections for all or a specific account
  install                   Register mailoo with MCP clients interactively
  install status            Show registration status for detected clients
  install remove            Unregister mailoo from MCP clients
  config show               Show config (passwords masked)
  config edit               Edit global settings (rate limit, read-only)
  config path               Print config file path
  config init               Create template config
  scheduler check           Process pending scheduled emails
  scheduler list            Show all scheduled emails
  scheduler install         Install OS-level scheduler (launchd/crontab)
  scheduler uninstall       Remove OS-level scheduler
  scheduler status          Show scheduler installation status
  --version, -v             Print the package version
  help                      Show help

HTTP

http listens on 127.0.0.1 and ::1 (port 8080 unless you pass another port). A non-loopback address or a non-loopback name in MCP_EMAIL_HTTP_ALLOWED_HOSTS requires MCP_EMAIL_HTTP_TOKEN. Details, including 0.0.0.0 / :: and the 8 MiB body limit: docs/configuration.md.

npx -y @bitfloo/mailoo http
MCP_EMAIL_HTTP_TOKEN='replace-with-a-long-random-secret' npx -y @bitfloo/mailoo http 8080 192.0.2.10

Clients send Authorization: Bearer <token> when a token is configured.

Configuration

Located at $XDG_CONFIG_HOME/mailoo/config.toml (default: ~/.config/mailoo/config.toml).

[settings]
rate_limit = 10  # max emails per minute per account
read_only = false
save_to_sent = true  # see docs/configuration.md — Gmail already files Sent

[[accounts]]
name = "personal"
email = "you@example.com"
full_name = "Your Name"
password = "your-app-password"

[accounts.imap]
host = "imap.example.com"
port = 993
tls = true
# disable_imap4rev2 = true  # Strato and similar SEARCH bugs
# sieve_host = "imap.example.com"
# sieve_port = 4190

[accounts.smtp]
host = "smtp.example.com"
port = 465
tls = true
starttls = false
verify_ssl = true

[accounts.smtp.pool]
enabled = true
max_connections = 1
max_messages = 100
OAuth2 (experimental)

Note: OAuth2 support is experimental. Token refresh and provider-specific flows may require additional testing in your environment.

[[accounts]]
name = "work"
email = "you@example.com"
full_name = "Your Name"

[accounts.oauth2]
provider = "google"            # or "microsoft"
client_id = "your-client-id"
client_secret = "your-client-secret"
refresh_token = "your-refresh-token"

[accounts.imap]
host = "imap.example.com"
port = 993
tls = true

[accounts.smtp]
host = "smtp.example.com"
port = 465
tls = true

[accounts.smtp.pool]
enabled = true
max_connections = 1
max_messages = 100
Environment Variables

For single-account setups (overrides config file):

VariableDefaultDescription
MCP_EMAIL_ADDRESSrequiredEmail address
MCP_EMAIL_PASSWORDrequiredPassword or app password
MCP_EMAIL_IMAP_HOSTrequiredIMAP server hostname
MCP_EMAIL_SMTP_HOSTrequiredSMTP server hostname
MCP_EMAIL_ACCOUNT_NAMEdefaultAccount name
MCP_EMAIL_FULL_NAME—Display name
MCP_EMAIL_USERNAMEemailLogin username
MCP_EMAIL_IMAP_PORT993IMAP port
MCP_EMAIL_IMAP_TLStrueIMAP TLS
MCP_EMAIL_SMTP_PORT465SMTP port
MCP_EMAIL_SMTP_TLStrueSMTP TLS
MCP_EMAIL_SMTP_STARTTLSfalseSMTP STARTTLS
MCP_EMAIL_SMTP_VERIFY_SSLtrueVerify SSL certificates
MCP_EMAIL_SMTP_POOL_ENABLEDtrueEnable SMTP transport pooling
MCP_EMAIL_SMTP_POOL_MAX_CONNECTIONS1Max pooled SMTP connections
MCP_EMAIL_SMTP_POOL_MAX_MESSAGES100Max messages per pooled connection
MCP_EMAIL_RATE_LIMIT10Max sends per minute

Sent copies, IMAP4rev2, Sieve host/port, and read_only env vars: docs/configuration.md.

Email Scheduling

The scheduler enables future email delivery with a layered architecture:

  1. MCP auto-check — Processes the queue on server startup and every 60 seconds while the MCP server is running
  2. CLI — npx -y @bitfloo/mailoo scheduler check for manual or cron-based processing
  3. OS-level daemon — npx -y @bitfloo/mailoo scheduler install sets up launchd (macOS) or crontab (Linux) to run every minute, independently of the MCP server

Important — the daemon must be installed for reliable delivery. Without it, scheduled emails only fire while an AI client is actively connected. Your machine also needs to be running at the scheduled time; if it's asleep or off, the daemon will process overdue emails on next wake/startup. Failed sends are retried up to 3 times before being marked failed.

Setting up the daemon
# Install (macOS launchd / Linux crontab — runs every minute)
npx -y @bitfloo/mailoo scheduler install

# Verify it's running
npx -y @bitfloo/mailoo scheduler status

# View pending / sent / failed scheduled emails
npx -y @bitfloo/mailoo scheduler list

# Trigger a manual check immediately
npx -y @bitfloo/mailoo scheduler check

# Remove the daemon
npx -y @bitfloo/mailoo scheduler uninstall

Scheduled emails are JSON files in ~/.local/state/mailoo/scheduled/. Before sending, a check claims the entry with a lock file next to it and keeps that claim fresh while SMTP runs, so the in-process timer, mailoo scheduler check and other server processes do not send it twice. If the process dies after the server accepted a message but before it was recorded as sent, the entry can be sent again after the claim goes stale (at least once, not exactly once). Each entry tracks attempts (max 3) and the last error, so you can inspect failures with scheduler list.

Real-time Watcher & AI Hooks

The IMAP IDLE watcher monitors configured mailboxes in real-time using persistent IDLE connections (separate from tool connections). When new emails arrive:

  1. Static rules — Pattern-match on from/to/subject → apply labels, flag, or mark read instantly (no AI)
  2. AI triage — Remaining emails are analyzed via MCP sampling with a customizable preset prompt
  3. Notify mode — Falls back to logging if AI triage is disabled

Configure in config.toml:

[settings.watcher]
enabled = true
folders = ["INBOX"]
idle_timeout = 1740     # 29 minutes (IMAP spec max is 30)

[settings.hooks]
on_new_email = "triage" # "triage" | "notify" | "none"
preset = "inbox-zero"   # "inbox-zero" | "gtd" | "priority-focus" | "notification-only" | "custom"
auto_label = true       # apply AI-suggested labels
auto_flag = true        # flag urgent emails
batch_delay = 5         # seconds to batch before triage

# User context — appended to preset's AI prompt
custom_instructions = """
I'm a software engineer. Emails from @example.com are always high priority.
Newsletters I read: TL;DR, Hacker Newsletter.
"""

# Static rules — run BEFORE AI, skip AI if matched
[[settings.hooks.rules]]
name = "GitHub Notifications"
match = { from = "*@example.com" }
actions = { labels = ["Dev"], mark_read = true }

[[settings.hooks.rules]]
name = "Newsletter Archive"
match = { from = "*@example.com|*@example.test" }
actions = { labels = ["Newsletter"] }

[[settings.hooks.rules]]
name = "VIP Contacts"
match = { from = "ceo@example.com|cto@example.test" }
actions = { flag = true, labels = ["VIP"] }
Presets
PresetFocusSuggested Labels
inbox-zeroAggressive categorization + archivingNewsletter, Notification, Updates, Finance, Social, Promo
gtdGetting Things Done contexts@Action, @Waiting, @Reference, @Someday, @Delegated
priority-focusSimple priority classification (default)(none — just priority + flag)
notification-onlyNo AI triage, just log(none)
customUser defines full system promptUser-defined
Static Rules

Static rules use glob-style patterns (*@example.com) with | as OR separator (*@example.com|*@example.test). All conditions within a match are AND'd. First matching rule wins.

Available actions: labels (string array), flag (boolean), mark_read (boolean), alert (boolean — forces desktop notification).

Alerts

Urgency-based multi-channel notification routing — grab attention for important emails even when you're not looking at the chat. All channels are opt-in and disabled by default.

PriorityDesktopSoundMCP Log LevelWebhook
urgent✅ Banner🔊 Alertalert✅
high✅ Banner🔇 Silentwarning✅
normal❌❌info❌
low❌❌debug❌
[settings.hooks.alerts]
desktop = true              # OS-level notifications (macOS/Linux/Windows)
sound = true                # play sound for urgent emails
urgency_threshold = "high"  # minimum priority to trigger desktop alert
webhook_url = "https://ntfy.sh/my-email-alerts"  # optional: Slack, Discord, ntfy.sh, etc.
webhook_events = ["urgent", "high"]
allow_private_webhooks = false  # default; true allows a LAN, VPN, or tailnet target

Details: docs/configuration.md.

Supported platforms: macOS (Notification Center via osascript), Linux (notify-send), Windows (PowerShell toast). Zero npm dependencies — uses native OS commands.

Notification setup by platform:

Desktop notifications use osascript (built-in). The terminal app running the MCP server needs notification permission:

  1. Open System Settings → Notifications & Focus
  2. Find your terminal app (Terminal, iTerm2, VS Code, Cursor, etc.)
  3. Enable Allow Notifications and choose Banners or Alerts
  4. Ensure Focus / Do Not Disturb is not blocking notifications

Use check_notification_setup to diagnose and test_notification to verify.

Requires notify-send from libnotify. For sound alerts, paplay is also needed:

# Ubuntu / Debian
sudo apt install libnotify-bin pulseaudio-utils

# Fedora
sudo dnf install libnotify pulseaudio-utils

# Arch
sudo pacman -S libnotify

Desktop notifications require a running display server (X11/Wayland) — they will not work in headless/SSH sessions.

Uses PowerShell toast notifications (built-in):

  1. Open Settings → System → Notifications
  2. Ensure Notifications is turned on
  3. Set Focus Assist to allow notifications
  4. If using Windows Terminal, ensure its notifications are enabled

AI-configurable: The AI can check, test, and configure notifications at runtime:

  • check_notification_setup — diagnose platform support and show setup instructions
  • test_notification — send a test notification to verify everything works
  • configure_alerts — enable/disable desktop, sound, threshold, webhook (with optional persist to config file)

Webhook payload:

{
  "event": "email.urgent",
  "account": "work",
  "sender": { "name": "John CEO", "address": "ceo@example.com" },
  "subject": "Q4 Review Due Today",
  "priority": "urgent",
  "labels": ["VIP"],
  "rule": "VIP Contacts",
  "timestamp": "2026-02-18T11:30:00Z"
}

Static rules can force desktop notifications with alert = true, regardless of urgency threshold:

[[settings.hooks.rules]]
name = "VIP Contacts"
match = { from = "ceo@example.com" }
actions = { flag = true, alert = true, labels = ["VIP"] }

Features:

  • Auto-reconnect — Exponential backoff (1s → 60s) on connection failures
  • Batching — Groups arrivals within a configurable delay to reduce AI calls
  • Rate limiting — Max 10 sampling calls per minute
  • Graceful degradation — Falls back to notify mode if client doesn't support sampling

System One (opt-in typed filing)

Optional TypeSafe System One classification on residue mail after static rules. Off by default. Both settings.watcher.enabled and settings.system_one.enabled must be on. Set TYPESAFE_API_KEY in the environment (never in TOML).

Default classify path sends mail_headers (subject, From, attachment names, extracted links, auth codes) to api.typesafe.ai. include_body = true additionally sends mail_body. auto_move and auto_flag are separate poles and default false. Filing destinations come from folders[].path (validated against IMAP LIST), not a live listing of every mailbox.

[settings.system_one]
enabled = false
include_body = false
auto_move = false
auto_flag = false

[[settings.system_one.folders]]
path = "Receipts"
description = "Invoices, receipts, and payment confirmations."

on_new_email = "notify" or "triage" both feed System One when it is on. none stays off.

Capabilities & data flows

Outbound calls, child processes, files, and environment variables below are what src/ does. Hook triage that uses MCP sampling stays inside the connected client; Mailoo does not dial a separate model host for that path.

Network

DestinationWhenCode
Configured IMAP host and portReads, writes, IDLEsrc/connections/manager.ts, src/services/watcher.service.ts
Configured SMTP host and portSendssrc/connections/manager.ts
ManageSieve host (IMAP host if unset) port 4190 by default (sieve_port / MCP_EMAIL_SIEVE_PORT)Filter scriptssrc/services/sieve.service.ts
https://oauth2.googleapis.com/tokenGoogle token refresh and code exchangesrc/services/oauth.service.ts
https://accounts.google.com/o/oauth2/v2/authAuthorization URL for the operator's browser; the process does not fetch itsrc/services/oauth.service.ts
https://login.microsoftonline.com/common/oauth2/v2.0/tokenMicrosoft token refresh and code exchangesrc/services/oauth.service.ts
https://login.microsoftonline.com/common/oauth2/v2.0/authorizeAuthorization URL for the operator's browser; the process does not fetch itsrc/services/oauth.service.ts
Custom token_url / auth_urlSame split when oauth2.provider is customsrc/services/oauth.service.ts
Configured webhook URL (http or https POST)Alerts, after a DNS lookup of that hostsrc/services/notifier.service.ts, src/safety/validation.ts
https://api.typesafe.ai (or TYPESAFE_BASE_URL)System One classification, only when that integration is onsrc/services/mail-arrival/index.ts

mailoo http listens. It does not add an outbound destination. Provider presets in src/cli/providers.ts fill the IMAP and SMTP hosts the wizard saves.

Processes

ProgramWhenCode
osascriptmacOS notifications, calendar events, reminderssrc/services/notifier.service.ts, src/services/local-calendar.service.ts, src/services/reminders.service.ts
notify-sendLinux desktop notificationssrc/services/notifier.service.ts
paplayLinux notification soundsrc/services/notifier.service.ts
powershellWindows balloon notificationssrc/services/notifier.service.ts
which (Windows: where)Checks that osascript, afplay, notify-send, paplay, or powershell exists. afplay is only probed; macOS sound goes through osascriptsrc/services/notifier.service.ts
xdg-openOpens a temporary calendar file on Linuxsrc/services/local-calendar.service.ts
launchctlInstalls or removes the macOS scheduler agentsrc/cli/scheduler.ts
crontabInstalls or removes the Linux scheduler linesrc/cli/scheduler.ts

Files

Paths follow the XDG defaults in src/config/xdg.ts unless XDG_CONFIG_HOME, XDG_DATA_HOME, or XDG_STATE_HOME is set.

PathWhat is writtenCode
$XDG_CONFIG_HOME/mailoo/config.toml (mode 0600)Accounts and settings, including passwords and OAuth secretssrc/config/loader.ts
$XDG_DATA_HOME/mailoo/audit.logAppend-only audit linessrc/safety/audit.ts
$XDG_STATE_HOME/mailoo/scheduled/ and scheduled/sent/Scheduled-send JSONsrc/services/scheduler.service.ts
$XDG_DATA_HOME/mailoo/calendar-attachments/Attachment files saved for a calendar eventsrc/services/imap.service.ts
$XDG_STATE_HOME/mailoo/calendar-processed.json and .lockWhich messages already created an automatic event or remindersrc/utils/calendar-state.ts
savePath under the working directorydownload_attachment when that argument is setsrc/tools/attachments.tool.ts
OS temp directory, mailoo-event-*.icsLinux calendar file passed to xdg-opensrc/services/local-calendar.service.ts
~/Library/LaunchAgents/com.bitfloo.mailoo.scheduler.plistmacOS scheduler agent. Its stdout and stderr are /tmp/mailoo-scheduler.logsrc/cli/scheduler.ts
User crontabOne Mailoo line on Linuxsrc/cli/scheduler.ts
MCP client config (Claude, Cursor, Windsurf)mailoo install merges the launch entrysrc/cli/install-commands.ts

Templates under $XDG_CONFIG_HOME/mailoo/templates/ are read, not written by the server.

Environment

Single-account setup reads MCP_EMAIL_* (src/config/loader.ts). HTTP listens reads MCP_EMAIL_HTTP_HOST, MCP_EMAIL_HTTP_TOKEN, and MCP_EMAIL_HTTP_ALLOWED_HOSTS (src/safety/http-transport.ts). The same names are the Smithery config keys and the packages[].environmentVariables list in server.json.

NameRole
MCP_EMAIL_ADDRESS, MCP_EMAIL_PASSWORD, MCP_EMAIL_IMAP_HOST, MCP_EMAIL_SMTP_HOSTAccount. Password is required unless MCP_EMAIL_OAUTH2_PROVIDER is set
MCP_EMAIL_ACCOUNT_NAME, MCP_EMAIL_FULL_NAME, MCP_EMAIL_USERNAMEIdentity
MCP_EMAIL_IMAP_PORT, MCP_EMAIL_IMAP_TLS, MCP_EMAIL_IMAP_STARTTLS, MCP_EMAIL_IMAP_VERIFY_SSL, MCP_EMAIL_IMAP_DISABLE_IMAP4REV2, MCP_EMAIL_SIEVE_HOST, MCP_EMAIL_SIEVE_PORTIMAP and ManageSieve
MCP_EMAIL_SMTP_PORT, MCP_EMAIL_SMTP_TLS, MCP_EMAIL_SMTP_STARTTLS, MCP_EMAIL_SMTP_VERIFY_SSL, MCP_EMAIL_SMTP_POOL_ENABLED, MCP_EMAIL_SMTP_POOL_MAX_CONNECTIONS, MCP_EMAIL_SMTP_POOL_MAX_MESSAGESSMTP
MCP_EMAIL_OAUTH2_PROVIDER, MCP_EMAIL_OAUTH2_CLIENT_ID, MCP_EMAIL_OAUTH2_CLIENT_SECRET, MCP_EMAIL_OAUTH2_REFRESH_TOKENOAuth2
MCP_EMAIL_RATE_LIMIT, MCP_EMAIL_READ_ONLY, MCP_EMAIL_SAVE_TO_SENTSettings
MCP_EMAIL_WATCHER_ENABLED, MCP_EMAIL_WATCHER_FOLDERS, MCP_EMAIL_WATCHER_IDLE_TIMEOUTIDLE watcher
MCP_EMAIL_HOOK_ON_NEW_EMAIL, MCP_EMAIL_HOOK_PRESET, MCP_EMAIL_HOOK_AUTO_LABEL, MCP_EMAIL_HOOK_AUTO_FLAG, MCP_EMAIL_HOOK_BATCH_DELAY, MCP_EMAIL_HOOK_CUSTOM_INSTRUCTIONSHooks
MCP_EMAIL_ALERT_DESKTOP, MCP_EMAIL_ALERT_SOUND, MCP_EMAIL_ALERT_URGENCY_THRESHOLD, MCP_EMAIL_ALERT_WEBHOOK_URL, MCP_EMAIL_ALERT_WEBHOOK_ALLOW_PRIVATEAlerts
MCP_EMAIL_HOOK_AUTO_CALENDAR, MCP_EMAIL_HOOK_CALENDAR_NAME, MCP_EMAIL_HOOK_CALENDAR_ALARM_MINUTES, MCP_EMAIL_HOOK_CALENDAR_CONFIRMAutomatic calendar
MCP_EMAIL_SYSTEM_ONE_ENABLEDSystem One switch. The API key is TYPESAFE_API_KEY, not a MCP_EMAIL_* variable
TYPESAFE_API_KEY, TYPESAFE_BASE_URLSystem One credential and optional API root. The SDK reads TYPESAFE_BASE_URL
XDG_CONFIG_HOME, XDG_DATA_HOME, XDG_STATE_HOME, APPDATAOverride the directories above. APPDATA is the Windows Claude config directory used by mailoo install
MCP_EMAIL_HTTP_HOST, MCP_EMAIL_HTTP_TOKEN, MCP_EMAIL_HTTP_ALLOWED_HOSTSHTTP listen policy

API

Tools (56)

Read (18)
ToolDescription
list_accountsList all configured email accounts
list_mailboxesList folders with unread counts and special-use flags
list_emailsPaginated email listing with date, sender, subject, and flag filters
get_emailRead full email content with attachment metadata
get_emailsFetch full content of multiple emails in a single call (max 20)
get_email_statusGet read/flag/label state of an email without fetching the body
search_emailsSearch by keyword; since/before (aliases start_date/end_date)
download_attachmentDownload an attachment (base64, or savePath to disk — not a read-only write)
find_email_folderDiscover the real folder(s) an email resides in (resolves virtual folders)
extract_contactsExtract unique contacts from recent email headers
get_threadReconstruct a conversation thread via References/In-Reply-To
list_templatesList available email templates
get_email_statsEmail analytics — volume, top senders, daily trends
check_healthConnection health, latency, quota, and IMAP capabilities
get_email_securityRead-only SPF/DKIM/DMARC and From/Reply-To/Return-Path domains
sieve_statusWhether ManageSieve is reachable (default port 4190)
sieve_list_scriptsList ManageSieve scripts
sieve_get_scriptDownload a ManageSieve script
Write (12)
ToolDescription
send_emailSend a new email (plain text or HTML, CC/BCC, attachments)
reply_emailReply with proper threading (In-Reply-To, References)
forward_emailForward with original content quoted
save_draftSave a draft (RFC 2047 subjects; optional attachments)
send_draftSend an existing draft and remove from Drafts
apply_templateApply a template with variable substitution
schedule_emailSchedule an email for future delivery
list_scheduledList scheduled emails by status
cancel_scheduledCancel a pending scheduled email
sieve_put_scriptCreate or replace a ManageSieve script (does not activate)
sieve_delete_scriptDelete a ManageSieve script
sieve_activate_scriptActivate a script (empty name deactivates all)
Manage (7)
ToolDescription
move_emailMove email between folders
delete_emailMove to Trash or permanently delete
mark_emailMark as read/unread, flag/unflag
bulk_actionBatch operation on up to 100 emails
create_mailboxCreate a new mailbox folder
rename_mailboxRename an existing mailbox folder
delete_mailboxPermanently delete a mailbox and contents
Labels (5)
ToolDescription
list_labelsDiscover available labels (auto-detects provider strategy)
add_labelAdd a label to an email (ProtonMail folders, Gmail X-GM-LABELS, or IMAP keywords)
remove_labelRemove a label from an email
create_labelCreate a new label
delete_labelDelete a label
Watcher & Alerts (6)
ToolDescription
get_watcher_statusShow IMAP IDLE connections, folders being monitored, and last-seen UIDs
list_presetsList available AI triage presets with descriptions and suggested labels
get_hooks_configShow current hooks configuration — preset, rules, and custom instructions
configure_alertsUpdate alert/notification settings at runtime
check_notification_setupDiagnose desktop notification support and provide setup instructions
test_notificationSend a test notification to verify OS permissions are configured
Calendar & Reminders (8)
ToolDescription
extract_calendarExtract ICS/iCalendar events from an email
analyze_email_for_schedulingAnalyze an email to detect events and reminder-worthy content
add_to_calendarAdd an email event to the local calendar (macOS/Linux)
create_reminderCreate a reminder in macOS Reminders.app from an email
list_calendarsList all available local calendars
list_eventsList local calendar events with optional title, date, and calendar filters
list_remindersList Reminders.app items with optional title and list filters
check_calendar_permissionsCheck whether the local calendar is accessible

Parameter-level notes for the tools above: docs/tools.md.

Prompts (7)

PromptDescription
triage_inboxCategorize and prioritize unread emails with suggested actions
summarize_threadSummarize an email conversation thread
compose_replyDraft a context-aware reply to an email
draft_from_contextCompose a new email from provided context and instructions
extract_action_itemsExtract actionable tasks from email threads
summarize_meetingsSummarize upcoming calendar events from emails
cleanup_inboxSuggest emails to archive, delete, or unsubscribe from

Resources (6)

ResourceURIDescription
Accountsemail://accountsList of configured accounts
Mailboxesemail://{account}/mailboxesFolder tree for an account
Unreademail://{account}/unreadUnread email summary
Templatesemail://templatesAvailable email templates
Statsemail://{account}/statsEmail statistics snapshot
Scheduledemail://scheduledPending scheduled emails

Provider Auto-Detection

ProviderDomains
Gmailgmail.com
Outlook / Hotmailoutlook.com, hotmail.com, live.com
Yahoo Mailyahoo.com, ymail.com
iCloudicloud.com, me.com, mac.com
Fastmailfastmail.com
ProtonMail Bridgeproton.me, protonmail.com
Zoho Mailzoho.com
GMXgmx.com, gmx.de, gmx.net

Architecture

src/
├── main.ts                — Entry point and subcommand routing
├── server.ts              — MCP server factory
├── logging.ts             — MCP protocol logging bridge
├── cli/                   — Interactive CLI commands
│   ├── account-commands.ts — Account CRUD (list, add, edit, delete)
│   ├── setup.ts           — Legacy setup alias → account add
│   ├── test.ts            — Connection tester
│   ├── config-commands.ts — Config management (show, edit, path, init)
│   ├── install-commands.ts — MCP client registration (install, status, remove)
│   ├── providers.ts       — Provider auto-detection + OAuth2 endpoints (experimental)
│   └── scheduler.ts       — Scheduler CLI
├── config/                — Configuration layer
│   ├── xdg.ts             — XDG Base Directory paths
│   ├── schema.ts          — Zod validation schemas
│   └── loader.ts          — Config loader (TOML + env vars)
├── connections/
│   └── manager.ts         — Lazy persistent IMAP/SMTP with OAuth2 (experimental)
├── services/              — Business logic
│   ├── imap.service.ts    — IMAP operations
│   ├── label-strategy.ts  — Provider-aware label strategy (ProtonMail/Gmail/IMAP keywords)
│   ├── smtp.service.ts    — SMTP operations + optional \\Sent APPEND
│   ├── sieve.service.ts   — ManageSieve (RFC 5804)
│   ├── template.service.ts — Email template engine
│   ├── oauth.service.ts   — OAuth2 token management (experimental)
│   ├── calendar.service.ts — ICS/iCalendar parsing
│   ├── scheduler.service.ts — Email scheduling queue
│   ├── watcher.service.ts — IMAP IDLE real-time watcher with auto-reconnect
│   ├── hooks.service.ts   — AI triage via MCP sampling + static rules + auto-labeling/flagging
│   ├── notifier.service.ts — Multi-channel notification dispatcher (desktop/sound/webhook)
│   ├── presets.ts         — Built-in hook presets (inbox-zero, gtd, priority-focus, etc.)
│   └── event-bus.ts       — Typed EventEmitter for internal email events
├── tools/                 — MCP tool definitions (56)
├── prompts/               — MCP prompt definitions (7)
├── resources/             — MCP resource definitions (6)
├── safety/                — Audit trail, rate limiter, stdio lifecycle
│   └── http-transport.ts  — Streamable HTTP listen policy
├── utils/                 — RFC 2047 compose, MIME body, auth headers
└── types/                 — Shared TypeScript types

Maintainers

Bitfloo

Upstream / Attribution

Documentation truncated — see the full README on GitHub.

Reviews

No reviews yet

Be the first to review this server!