EmailMCP
by setip.io · remote · no sign-in to list tools · v1.0.1 · published by io.setip
AI agent email — 23 tools free to read inbox, 28 paid to send. $9.99/mo. Token auto-provisioned.
56 tools: 5 can delete or cancel things, 3 do something that can't be undone, 24 change things and 24 only read.
Scanned Oct 21, 2026
- Deletes or cancels5Claude Code: deny: see these tools
- Can't be undone3Claude Code: ask: see these tools
- Changes things24Claude Code: ask: see these tools
- Only reads24Claude Code: allow: see these tools
13 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http emailmcp https://mcp.setip.io/mcpFindings
Matches of fixed checks, with the text they matched.
- Highread_inbox
The description refers to ".env".
What this check looks forMatched text
description: "...ering options. If IMAP is configured in .env, no credentials needed. Use "account" t..."
- Highread_inbox
The input schema at properties.imap_config.description refers to ".env".
What this check looks forMatched text
inputSchema.properties.imap_config.description: "Optional if IMAP is configured in .env (IMAP_HOST, IMAP_EMAIL, IMAP_PASSWORD)"
The description refers to ".env".
What this check looks forMatched text
description: "...email mailbox. If IMAP is configured in .env, no credentials needed. Use "account" t..."
- Highlist_mailboxes
The description refers to ".env".
What this check looks forMatched text
description: "...email account. If IMAP is configured in .env, no credentials needed. Use "account" t..."
- Infosend_email
The input schema at properties.provider.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.provider.description: "...mail, resend). Requires that provider's credentials in env."
- Infosend_email
The input schema at properties.from.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.from.description: "...matching account has personal SMTP/IMAP credentials (via set_personal_email_credentials), s..."
Show 7 more findingsShow fewer
- Inforead_inbox
The description mentions "credentials".
What this check looks forMatched text
description: "...ions. If IMAP is configured in .env, no credentials needed. Use "account" to pick a named a..."
The description mentions "credentials".
What this check looks forMatched text
description: "...lbox. If IMAP is configured in .env, no credentials needed. Use "account" to pick a named a..."
- Infolist_mailboxes
The description mentions "credentials".
What this check looks forMatched text
description: "...ount. If IMAP is configured in .env, no credentials needed. Use "account" to pick a named a..."
The description mentions "credentials".
What this check looks forMatched text
description: "Create an email account with SMTP credentials. Returns SMTP password once — save it...."
The description mentions "credentials".
What this check looks forMatched text
description: "...te an email account and revoke its SMTP credentials"
The description mentions "credentials".
What this check looks forMatched text
description: "List all email accounts with SMTP credentials (optionally filtered by domain)"
The description mentions "credentials".
What this check looks forMatched text
description: "...ch a personal account's own SMTP + IMAP credentials (iCloud, Gmail app password, Fastmail,..."
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
56 tools
Deletes or cancels 5Claude Code: deny
delete_email_accountDelete an email account and revoke its SMTP credentials1 finding
Why it is in this group
- The name "delete_email_account" says "delete": a word for removing or ending something.
Findings
- Info
The description mentions "credentials".
What this check looks forMatched text
description: "...te an email account and revoke its SMTP credentials"
Description, as the server wrote it Delete an email account and revoke its SMTP credentials
delete_email_ruleDelete an email rule by IDNo findings
Why it is in this group
- The name "delete_email_rule" says "delete": a word for removing or ending something.
Description, as the server wrote it Delete an email rule by ID
delete_mailboxDelete a local mailbox and all its stored emails (autonomous mode)No findings
Why it is in this group
- The name "delete_mailbox" says "delete": a word for removing or ending something.
Description, as the server wrote it Delete a local mailbox and all its stored emails (autonomous mode)
remove_from_suppressionRemove an address from the bounce suppression list (manual override to allow sending again)No findings
Why it is in this group
- The name "remove_from_suppression" says "remove": a word for removing or ending something.
Description, as the server wrote it Remove an address from the bounce suppression list (manual override to allow sending again)
remove_sending_domainRemove a sending domain and its DKIM keysNo findings
Why it is in this group
- The name "remove_sending_domain" says "remove": a word for removing or ending something.
Description, as the server wrote it Remove a sending domain and its DKIM keys
Can't be undone 3Claude Code: ask
create_email_ruleCreate a rule that triggers actions when incoming emails match conditions.No findings
Why it is in this group
- The name "create_email_rule" says "create": a word for a change.
- The input addresses people (input.match.to): what it sends cannot be taken back.
Description, as the server wrote it Create a rule that triggers actions when incoming emails match conditions. Actions: forward, auto_reply, webhook, flag, move, mcp_tool, log, reject.
send_emailSend an email with text or HTML content2 findings
Why it is in this group
- The name "send_email" says "send": a word for sending, and what is sent cannot be taken back.
- The input addresses people (input.to): what it sends cannot be taken back.
Findings
- Info
The input schema at properties.provider.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.provider.description: "...mail, resend). Requires that provider's credentials in env."
- Info
The input schema at properties.from.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.from.description: "...matching account has personal SMTP/IMAP credentials (via set_personal_email_credentials), s..."
Description, as the server wrote it Send an email with text or HTML content
send_template_emailSend an email using a predefined templateNo findings
Why it is in this group
- The name "send_template_email" says "send": a word for sending, and what is sent cannot be taken back.
- The input addresses people (input.to): what it sends cannot be taken back.
Description, as the server wrote it Send an email using a predefined template
Changes things 24Claude Code: ask
add_sending_domainAdd a customer sending domain.No findings
Why it is in this group
- The name "add_sending_domain" says "add": a word for a change.
Description, as the server wrote it Add a customer sending domain. Generates DKIM keys and returns the 4 DNS records the customer needs to add. Works like SendGrid domain authentication — self-hosted.
check_email_configCheck if email providers are configured, guide setup if neededNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Check if email providers are configured, guide setup if needed
configure_mailgunConfigure Mailgun email provider with step-by-step guidanceNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Configure Mailgun email provider with step-by-step guidance
create_email_accountCreate an email account with SMTP credentials.1 finding
Why it is in this group
- The name "create_email_account" says "create": a word for a change.
Findings
- Info
The description mentions "credentials".
What this check looks forMatched text
description: "Create an email account with SMTP credentials. Returns SMTP password once — save it...."
Description, as the server wrote it Create an email account with SMTP credentials. Returns SMTP password once — save it. The account can then send/receive via this server.
create_mailboxCreate a new local mailbox for receiving email (autonomous mode).No findings
Why it is in this group
- The name "create_mailbox" says "create": a word for a change.
Description, as the server wrote it Create a new local mailbox for receiving email (autonomous mode). Each address gets its own inbox accessible via MCP tools.
get_dns_recordsGenerate all required DNS records (A, MX, SPF, DKIM, DMARC) for autonomous email.No findings
Why it is in this group
- The name "get_dns_records" says "get": a word for reading.
- The description's first verb is "generate": a word for a change.
Description, as the server wrote it Generate all required DNS records (A, MX, SPF, DKIM, DMARC) for autonomous email. Outputs copyable records for your DNS provider.
provision_resumeResume provisioning from where you left off.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Resume provisioning from where you left off. Automatically detects the current phase and advances: WireGuard connection → DNS setup → TLS → verification. Run this after each user action (connecting WireGuard, adding DNS records).
provision_startPhase 1: Create a cloud VPS with dedicated IP.No findings
Why it is in this group
- The name "provision_start" says "start": a word for a change.
Description, as the server wrote it Phase 1: Create a cloud VPS with dedicated IP. Generates WireGuard config. Returns the IP and instructions to connect. Supports DigitalOcean, Vultr, Hetzner, OVH.
regenerate_zone_fileRegenerate the complete DNS zone file for the service domain including all customer subdomains.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Regenerate the complete DNS zone file for the service domain including all customer subdomains. Use after adding/removing domains.
request_email_ipRequest a dedicated WireGuard IP for email sending.No findings
Why it is in this group
- The name "request_email_ip" says "request": a word for a change.
Description, as the server wrote it Request a dedicated WireGuard IP for email sending. Submits to the provisioning queue.
reset_account_passwordReset the SMTP password for an email account.No findings
Why it is in this group
- The name "reset_account_password" says "reset": a word for a change.
Description, as the server wrote it Reset the SMTP password for an email account. Returns new password once.
set_personal_email_credentialsAttach a personal account's own SMTP + IMAP credentials (iCloud, Gmail app password, Fastmail, Office365, etc.) to an existing account.1 finding
Why it is in this group
- The name "set_personal_email_credentials" says "set": a word for a change.
Findings
- Info
The description mentions "credentials".
What this check looks forMatched text
description: "...ch a personal account's own SMTP + IMAP credentials (iCloud, Gmail app password, Fastmail,..."
Description, as the server wrote it Attach a personal account's own SMTP + IMAP credentials (iCloud, Gmail app password, Fastmail, Office365, etc.) to an existing account. Once set, send_email with from=<address> sends via that SMTP and IMAP-APPENDs a copy to its Sent folder. Passwords are AES-256-GCM encrypted at rest with EMAILMCP_SECRET.
setup_autonomous_securityAuto-configure DKIM, SPF, and DMARC for autonomous email.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Auto-configure DKIM, SPF, and DMARC for autonomous email. Generates DKIM keys, creates DNS records, and outputs everything needed.
start_domain_verificationBegin a domain-verification window: temporarily set the target domain's MX to verify.setip.io, start (or reuse) the EmailMCP SMTP receiver on :25, and forward any inbound mail for …No findings
Why it is in this group
- The name "start_domain_verification" says "start": a word for a change.
Description, as the server wrote it Begin a domain-verification window: temporarily set the target domain's MX to verify.setip.io, start (or reuse) the EmailMCP SMTP receiver on :25, and forward any inbound mail for *@domain to forward_to so a human can grab a verification code from the provider (Apple/Google/etc). Auto-tears down after ttl_minutes.
start_health_monitorStart monitoring the provisioned email server — checks tunnel, SMTP, DNS, and IP reputation every 60 seconds.No findings
Why it is in this group
- The name "start_health_monitor" says "start": a word for a change.
Description, as the server wrote it Start monitoring the provisioned email server — checks tunnel, SMTP, DNS, and IP reputation every 60 seconds. Auto-restarts on failure.
start_idle_watchStart real-time IMAP IDLE watching on email accounts.No findings
Why it is in this group
- The name "start_idle_watch" says "start": a word for a change.
Description, as the server wrote it Start real-time IMAP IDLE watching on email accounts. Get push notifications when new emails arrive. Works with Gmail, iCloud, Office365, etc.
start_smtp_receiverStart the SMTP server to receive forwarded corporate emailsNo findings
Why it is in this group
- The name "start_smtp_receiver" says "start": a word for a change.
Description, as the server wrote it Start the SMTP server to receive forwarded corporate emails
stop_domain_verificationTear down an active domain-verification window: restore MX (snapshot or supplied real_mx_target), remove the per-domain forwarder.No findings
Why it is in this group
- The name "stop_domain_verification" says "stop": a word for a change.
Description, as the server wrote it Tear down an active domain-verification window: restore MX (snapshot or supplied real_mx_target), remove the per-domain forwarder. Stops the receiver if no other windows remain.
stop_idle_watchStop IMAP IDLE watching on an account (or all accounts)No findings
Why it is in this group
- The name "stop_idle_watch" says "stop": a word for a change.
Description, as the server wrote it Stop IMAP IDLE watching on an account (or all accounts)
stop_smtp_receiverStop the SMTP forward receiver serverNo findings
Why it is in this group
- The name "stop_smtp_receiver" says "stop": a word for a change.
Description, as the server wrote it Stop the SMTP forward receiver server
test_email_configTest email configuration by sending a test emailNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Test email configuration by sending a test email
update_email_ruleUpdate an existing email rule (enable/disable, change match/actions/priority)No findings
Why it is in this group
- The name "update_email_rule" says "update": a word for a change.
Description, as the server wrote it Update an existing email rule (enable/disable, change match/actions/priority)
verify_autonomous_setupVerify that autonomous email is properly configured: DNS records, DKIM, SMTP send/receiveNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Verify that autonomous email is properly configured: DNS records, DKIM, SMTP send/receive
verify_email_setupVerify IP whitelisting and email provider configurationNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Verify IP whitelisting and email provider configuration
Only reads 24Claude Code: allow
check_ip_statusCheck the status of a pending WireGuard IP provisioning requestNo findings
Why it is in this group
- The name "check_ip_status" says "status": a word for reading.
Description, as the server wrote it Check the status of a pending WireGuard IP provisioning request
get_conversation_contextGet full conversation context for a specific threadNo findings
Why it is in this group
- The name "get_conversation_context" says "get": a word for reading.
Description, as the server wrote it Get full conversation context for a specific thread
get_conversation_threadsGet conversation threads with forwarded emailsNo findings
Why it is in this group
- The name "get_conversation_threads" says "get": a word for reading.
Description, as the server wrote it Get conversation threads with forwarded emails
get_domain_dns_recordsGet the DNS records a customer needs to add for a sending domainNo findings
Why it is in this group
- The name "get_domain_dns_records" says "get": a word for reading.
Description, as the server wrote it Get the DNS records a customer needs to add for a sending domain
get_domain_verification_emailsList mails received in the verification window for a given domain (e.g.No findings
Why it is in this group
- The name "get_domain_verification_emails" says "get": a word for reading.
Description, as the server wrote it List mails received in the verification window for a given domain (e.g. to find Apple's verification code without checking the forward_to mailbox).
get_domain_verification_statusShow active verification windows, the receiver state, and TTLs.No findings
Why it is in this group
- The name "get_domain_verification_status" says "get": a word for reading.
Description, as the server wrote it Show active verification windows, the receiver state, and TTLs.
get_email_usageGet email usage statistics — delivery rate, bounce rate, per-domain breakdown, top bounce reasons.No findings
Why it is in this group
- The name "get_email_usage" says "get": a word for reading.
Description, as the server wrote it Get email usage statistics — delivery rate, bounce rate, per-domain breakdown, top bounce reasons. Reads from persistent stats.
get_forwarded_emailsRetrieve forwarded emails with optional filteringNo findings
Why it is in this group
- The name "get_forwarded_emails" says "get": a word for reading.
Description, as the server wrote it Retrieve forwarded emails with optional filtering
get_health_statusGet current health status of the email server — tunnel, SMTP, DNS, IP blocklist checksNo findings
Why it is in this group
- The name "get_health_status" says "get": a word for reading.
Description, as the server wrote it Get current health status of the email server — tunnel, SMTP, DNS, IP blocklist checks
get_idle_statusGet status of IMAP IDLE watchers — which accounts are being watched, connection status, new email countsNo findings
Why it is in this group
- The name "get_idle_status" says "get": a word for reading.
Description, as the server wrote it Get status of IMAP IDLE watchers — which accounts are being watched, connection status, new email counts
get_mailbox_statusGet status information for an email mailbox.2 findings
Why it is in this group
- The name "get_mailbox_status" says "get": a word for reading.
Findings
- High
The description refers to ".env".
What this check looks forMatched text
description: "...email mailbox. If IMAP is configured in .env, no credentials needed. Use "account" t..."
- Info
The description mentions "credentials".
What this check looks forMatched text
description: "...lbox. If IMAP is configured in .env, no credentials needed. Use "account" to pick a named a..."
Description, as the server wrote it Get status information for an email mailbox. If IMAP is configured in .env, no credentials needed. Use "account" to pick a named account.
get_smtp_receiver_statusGet the current status of the SMTP forward receiverNo findings
Why it is in this group
- The name "get_smtp_receiver_status" says "get": a word for reading.
Description, as the server wrote it Get the current status of the SMTP forward receiver
get_suppression_listView all addresses on the bounce suppression list — these addresses will be rejected on sendNo findings
Why it is in this group
- The name "get_suppression_list" says "get": a word for reading.
Description, as the server wrote it View all addresses on the bounce suppression list — these addresses will be rejected on send
get_threads_for_senderGet all conversation threads involving a specific senderNo findings
Why it is in this group
- The name "get_threads_for_sender" says "get": a word for reading.
Description, as the server wrote it Get all conversation threads involving a specific sender
list_cloud_providersList supported cloud providers with pricing, regions, and PTR support infoNo findings
Why it is in this group
- The name "list_cloud_providers" says "list": a word for reading.
Description, as the server wrote it List supported cloud providers with pricing, regions, and PTR support info
list_email_accountsList all configured IMAP email accounts.No findings
Why it is in this group
- The name "list_email_accounts" says "list": a word for reading.
Description, as the server wrote it List all configured IMAP email accounts. Shows default and named accounts (work, personal, etc.).
list_email_accounts_managedList all email accounts with SMTP credentials (optionally filtered by domain)1 finding
Why it is in this group
- The name "list_email_accounts_managed" says "list": a word for reading.
Findings
- Info
The description mentions "credentials".
What this check looks forMatched text
description: "List all email accounts with SMTP credentials (optionally filtered by domain)"
Description, as the server wrote it List all email accounts with SMTP credentials (optionally filtered by domain)
list_email_rulesList all email rules with their match conditions, actions, and hit countsNo findings
Why it is in this group
- The name "list_email_rules" says "list": a word for reading.
Description, as the server wrote it List all email rules with their match conditions, actions, and hit counts
list_local_mailboxesList all local mailboxes on this server (autonomous mode)No findings
Why it is in this group
- The name "list_local_mailboxes" says "list": a word for reading.
Description, as the server wrote it List all local mailboxes on this server (autonomous mode)
list_mailboxesList all available mailboxes for an email account.2 findings
Why it is in this group
- The name "list_mailboxes" says "list": a word for reading.
Findings
- High
The description refers to ".env".
What this check looks forMatched text
description: "...email account. If IMAP is configured in .env, no credentials needed. Use "account" t..."
- Info
The description mentions "credentials".
What this check looks forMatched text
description: "...ount. If IMAP is configured in .env, no credentials needed. Use "account" to pick a named a..."
Description, as the server wrote it List all available mailboxes for an email account. If IMAP is configured in .env, no credentials needed. Use "account" to pick a named account.
list_sending_domainsList all configured sending domains with their verification statusNo findings
Why it is in this group
- The name "list_sending_domains" says "list": a word for reading.
Description, as the server wrote it List all configured sending domains with their verification status
provision_statusShow current provisioning state — which phases are complete, what to do nextNo findings
Why it is in this group
- The name "provision_status" says "status": a word for reading.
Description, as the server wrote it Show current provisioning state — which phases are complete, what to do next
read_inboxRead emails from an inbox via IMAP with filtering options.3 findings
Why it is in this group
- The name "read_inbox" says "read": a word for reading.
Findings
- High
The description refers to ".env".
What this check looks forMatched text
description: "...ering options. If IMAP is configured in .env, no credentials needed. Use "account" t..."
- Info
The description mentions "credentials".
What this check looks forMatched text
description: "...ions. If IMAP is configured in .env, no credentials needed. Use "account" to pick a named a..."
- High
The input schema at properties.imap_config.description refers to ".env".
What this check looks forMatched text
inputSchema.properties.imap_config.description: "Optional if IMAP is configured in .env (IMAP_HOST, IMAP_EMAIL, IMAP_PASSWORD)"
Description, as the server wrote it Read emails from an inbox via IMAP with filtering options. If IMAP is configured in .env, no credentials needed. Use "account" to pick a named account (work, personal, etc.).
validate_emailValidate email addresses and check deliverabilityNo findings
Why it is in this group
- The name "validate_email" says "validate": a word for reading.
Description, as the server wrote it Validate email addresses and check deliverability
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.0.1. Values in angle brackets are yours to fill in.
claude mcp add --transport http emailmcp https://mcp.setip.io/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__emailmcp__validate_email",
"mcp__emailmcp__get_email_usage",
"mcp__emailmcp__list_email_accounts",
"mcp__emailmcp__read_inbox",
"mcp__emailmcp__get_mailbox_status",
"mcp__emailmcp__list_mailboxes",
"mcp__emailmcp__get_smtp_receiver_status",
"mcp__emailmcp__get_forwarded_emails",
"mcp__emailmcp__get_conversation_threads",
"mcp__emailmcp__get_conversation_context",
"mcp__emailmcp__get_threads_for_sender",
"mcp__emailmcp__list_local_mailboxes",
"mcp__emailmcp__check_ip_status",
"mcp__emailmcp__list_email_rules",
"mcp__emailmcp__get_idle_status",
"mcp__emailmcp__provision_status",
"mcp__emailmcp__list_cloud_providers",
"mcp__emailmcp__get_health_status",
"mcp__emailmcp__list_sending_domains",
"mcp__emailmcp__get_domain_dns_records",
"mcp__emailmcp__list_email_accounts_managed",
"mcp__emailmcp__get_domain_verification_status",
"mcp__emailmcp__get_domain_verification_emails",
"mcp__emailmcp__get_suppression_list"
],
"ask": [
"mcp__emailmcp__send_email",
"mcp__emailmcp__send_template_email",
"mcp__emailmcp__verify_email_setup",
"mcp__emailmcp__start_smtp_receiver",
"mcp__emailmcp__stop_smtp_receiver",
"mcp__emailmcp__check_email_config",
"mcp__emailmcp__configure_mailgun",
"mcp__emailmcp__test_email_config",
"mcp__emailmcp__create_mailbox",
"mcp__emailmcp__request_email_ip",
"mcp__emailmcp__get_dns_records",
"mcp__emailmcp__verify_autonomous_setup",
"mcp__emailmcp__setup_autonomous_security",
"mcp__emailmcp__create_email_rule",
"mcp__emailmcp__update_email_rule",
"mcp__emailmcp__start_idle_watch",
"mcp__emailmcp__stop_idle_watch",
"mcp__emailmcp__provision_start",
"mcp__emailmcp__provision_resume",
"mcp__emailmcp__start_health_monitor",
"mcp__emailmcp__add_sending_domain",
"mcp__emailmcp__regenerate_zone_file",
"mcp__emailmcp__create_email_account",
"mcp__emailmcp__reset_account_password",
"mcp__emailmcp__start_domain_verification",
"mcp__emailmcp__stop_domain_verification",
"mcp__emailmcp__set_personal_email_credentials"
],
"deny": [
"mcp__emailmcp__delete_mailbox",
"mcp__emailmcp__delete_email_rule",
"mcp__emailmcp__remove_sending_domain",
"mcp__emailmcp__delete_email_account",
"mcp__emailmcp__remove_from_suppression"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as emailmcp. Review it before you use it.