Connect any MCP client (Claude, Cursor, OpenCode, ChatGPT, agents) to Inbound: manage domains, endpoints, addresses, emails, Guard rules and , which are virtual email accounts that agents can read...
Overview
Connect any MCP client (Claude, Cursor, OpenCode, ChatGPT, agents) to Inbound: manage domains, endpoints, addresses, emails, Guard rules and , which are virtual email accounts that agents can read and send from. https://inbound.new/mcp (Streamable HTTP, stateless) The Inbound API enforces mailbox scopes and limits. An account can set protocols, allowed_ips, storage_quota_bytes, daily_send_limit and self_service with create_mailbox or update_mailbox. The password works as an MCP bearer token and for IMAP (imap.inboundemail.com:993) and SMTP (smtp.inboundemail.com:465) only where the protocol and IP are allowed. For MCP, the allowlist must include the MCP server's outgoing IP, not the agent's. Changing protocols, allowed IPs or self-service immediately closes open IMAP sessions. The daily limit counts only sends and replies authenticated by the mailbox password, not account-key sends. Leave out headers to use OAuth.
README
Inbound MCP server
Connect any MCP client (Claude, Cursor, OpenCode, ChatGPT, agents) to Inbound: manage domains, endpoints, addresses, emails, Guard rules and mailboxes, which are virtual email accounts that agents can read and send from.
Endpoint: https://inbound.new/mcp (Streamable HTTP, stateless)
Three ways to connect
| Credential | What the agent gets |
|---|---|
| OAuth (just add the URL; the client opens Inbound to sign in) | All account tools, including creating mailboxes and acting as any of them |
| Account API key (from inbound.new/settings) | The same as OAuth, for scripts and clients without OAuth |
Mailbox password (mail_…, returned by create_mailbox) |
Only that mailbox: whoami, list_messages, read_message, update_message, get_thread, send_email, reply, download_attachment, plus the folder, folder-message, filter and spam tools, list_mailbox_activity and rotate_my_password. None take mailbox_id. Filters, spam settings, activity and password rotation each require their respective self_service flag (filters, spam, activity, password); otherwise the API returns 403. |
The Inbound API enforces mailbox scopes and limits. An account can set protocols, allowed_ips, storage_quota_bytes, daily_send_limit and self_service with create_mailbox or update_mailbox. The password works as an MCP bearer token and for IMAP (imap.inboundemail.com:993) and SMTP (smtp.inboundemail.com:465) only where the protocol and IP are allowed. For MCP, the allowlist must include the MCP server’s outgoing IP, not the agent’s. Changing protocols, allowed IPs or self-service immediately closes open IMAP sessions. The daily limit counts only sends and replies authenticated by the mailbox password, not account-key sends.
{
"mcpServers": {
"inbound": {
"type": "http",
"url": "https://inbound.new/mcp",
"headers": { "Authorization": "Bearer " }
}
}
}
Leave out headers to use OAuth. Discovery follows the MCP authorization spec: the 401 points to https://inbound.new/.well-known/oauth-protected-resource/mcp, the authorization server is https://inbound.new/api/auth (dynamic client registration, PKCE), and tokens carry the inbound:account scope for the https://inbound.new/mcp audience. This server verifies them against Inbound’s JWKS and forwards them to the API.
x-inbound-api-key: is also accepted. Clients that only speak STDIO can use npx mcp-remote https://inbound.new/mcp --header "Authorization:Bearer ${INBOUND_API_KEY}".
Limit the tool list
Add ?toolsets= (or an x-inbound-toolsets header) with any of domains,endpoints,addresses,emails,mailboxes,guard, e.g. https://inbound.new/mcp?toolsets=mailboxes,emails.
Give an agent its own inbox
- With the account key:
create_mailbox { "address": "[email protected]", "sending_name": "Support Agent" }. - Give the returned password to the agent as its bearer token.
- The agent loops:
list_messages { unread_only: true }→read_message→reply→update_message { is_archived: true }.
Mailboxes, read state and sent mail are stored by Inbound, so they show up in the dashboard and over IMAP too.
Tools (account key)
- Domains:
list_domains,get_domain,create_domain,update_domain,delete_domain,enable_domain_dkim - Endpoints:
list_endpoints,get_endpoint,create_endpoint,update_endpoint,delete_endpoint,test_endpoint - Addresses:
list_email_addresses,get_email_address,create_email_address,update_email_address,delete_email_address - Emails:
list_emails,get_email,send_email,reply_to_email,update_email,cancel_scheduled_email,pause_scheduled_email,resume_scheduled_email,retry_email_delivery,list_threads,get_thread,list_attachments,download_attachment - Mailboxes:
list_mailboxes,create_mailbox,update_mailbox,delete_mailbox,rotate_mailbox_password,get_mailbox,list_mailbox_messages,read_mailbox_message,update_mailbox_message,get_mailbox_thread,send_from_mailbox,reply_from_mailbox,download_mailbox_attachment - Mailbox folders:
list_mailbox_folders,create_mailbox_folder,rename_mailbox_folder,delete_mailbox_folder - Folder messages (by folder path and UID, not account email ID):
list_folder_messages,get_folder_message,get_folder_message_raw,set_message_flags,move_message,copy_message,delete_folder_message,expunge_folder,append_message,list_folder_message_attachments,download_folder_message_attachment - Mailbox filters:
list_mailbox_filters,get_mailbox_filter,create_mailbox_filter,update_mailbox_filter,delete_mailbox_filter,reorder_mailbox_filters,apply_mailbox_filters. Enabled filters run on new received mail; useapply_mailbox_filtersto process an existing folder. - Mailbox spam:
get_mailbox_spam_settings,set_mailbox_spam_settings,add_spam_list_entry,remove_spam_list_entry. These affect only this mailbox, not the account verdict. - Mailbox activity:
list_mailbox_activityreads one mailbox’s log;list_account_activityreads across the account, optionally filtered bymailbox_id. Both list sign-ins, IMAP session events, quota errors and send failures, newest first. Events are retained for 30 days; message content and passwords are never logged. - Guard:
list_guard_rules,get_guard_rule,create_guard_rule,update_guard_rule,delete_guard_rule,check_guard_rule,generate_guard_rule
Development
bun install
bun run dev # http://localhost:5454/mcp, against production unless INBOUND_API_URL is set
bun run typecheck
INBOUND_API_KEY=... bun run stdio # STDIO transport
Deployed on Vercel (team inbound, project inbound-mcp) as one function, api/mcp.ts. inbound.new/mcp rewrites to it from the main app.
Install
This server does not publish a one-line install command.
Open the repository installation guide New to MCP? Start with the mcpskill.org guide →Configuration
{
"mcpServers": {
"inbound": {
"type": "http",
"url": "https://inbound.new/mcp",
"headers": { "Authorization": "Bearer <api key or mailbox password>" }
}
}
}