
Commune
A production-ready email and SMS gateway built on the Commune API, exposing 41 tools for reading, sending, and managing messages through Claude or any MCP client. You get full inbox operations (threads, search, tagging), deliverability tracking (bounces, complaints, suppressions), and SMS send/receive with phone number provisioning. Useful when you need AI agents to actually handle customer support queues, send transactional emails in thread context, or coordinate over SMS without writing API wrappers. Runs via uvx with just an API key, supports custom domains with DKIM signing, and includes webhook delivery for inbound messages. Ships with Smithery one-line install for Claude Desktop, Cursor, and Windsurf.
- GitHub stars
- 1
- tools
- 21
- auth
- Secret needed
- transport
- STDIO
- env var
- 1
- last updated
- Mar 3, 2026
Tools
21 toolsPublic tool metadata for what this MCP can expose to an agent.
list_domainsList all email domains in your Commune account. Returns each domain's ID, name, and verification status. Use the domain ID with other tools like list_inboxes or create_inbox.
List all email domains in your Commune account. Returns each domain's ID, name, and verification status. Use the domain ID with other tools like list_inboxes or create_inbox.
No parameter schema in public metadata yet.
create_domainCreate a new custom email domain. After creating a domain, you need to: 1. Call get_domain_records to see the required DNS records 2. Add those records at your domain registrar 3. Call verify_domain to check verification status Args: name: Domain name, e.g. "example.com" regio...2 params
Create a new custom email domain. After creating a domain, you need to: 1. Call get_domain_records to see the required DNS records 2. Add those records at your domain registrar 3. Call verify_domain to check verification status Args: name: Domain name, e.g. "example.com" regio...
namestringregionvalueverify_domainTrigger DNS verification for a domain. Call this after adding the required DNS records at your registrar. Use get_domain_records first to see which records are needed. Args: domain_id: The domain ID (from list_domains)1 params
Trigger DNS verification for a domain. Call this after adding the required DNS records at your registrar. Use get_domain_records first to see which records are needed. Args: domain_id: The domain ID (from list_domains)
domain_idstringget_domain_recordsGet the DNS records required to verify a domain. Returns MX, TXT, and CNAME records that must be added at your domain registrar before calling verify_domain. Args: domain_id: The domain ID (from list_domains)1 params
Get the DNS records required to verify a domain. Returns MX, TXT, and CNAME records that must be added at your domain registrar before calling verify_domain. Args: domain_id: The domain ID (from list_domains)
domain_idstringlist_inboxesList inboxes. Without domain_id, lists all inboxes across all domains. With domain_id, lists inboxes for that specific domain. Each inbox has a local_part (the part before @) that forms the email address: {local_part}@{domain_name} Args: domain_id: Filter by domain (optional,...1 params
List inboxes. Without domain_id, lists all inboxes across all domains. With domain_id, lists inboxes for that specific domain. Each inbox has a local_part (the part before @) that forms the email address: {local_part}@{domain_name} Args: domain_id: Filter by domain (optional,...
domain_idvaluecreate_inboxCreate a new inbox for receiving emails. The inbox email address will be {local_part}@{domain}. If no domain_id is provided, Commune auto-assigns your inbox to an available domain — no DNS setup required. Args: local_part: Part before @ (e.g. "support", "billing", "hello") dom...5 params
Create a new inbox for receiving emails. The inbox email address will be {local_part}@{domain}. If no domain_id is provided, Commune auto-assigns your inbox to an available domain — no DNS setup required. Args: local_part: Part before @ (e.g. "support", "billing", "hello") dom...
display_namevaluedomain_idvaluelocal_partstringnamevaluewebhook_endpointvaluedelete_inboxDelete an inbox. Args: domain_id: The domain ID inbox_id: The inbox ID to delete2 params
Delete an inbox. Args: domain_id: The domain ID inbox_id: The inbox ID to delete
domain_idstringinbox_idstringlist_threadsList email threads (conversations) with pagination. Returns thread summaries: subject, message count, last activity, snippet. Use next_cursor from the response to fetch the next page. Provide at least one of inbox_id or domain_id. Args: inbox_id: Filter threads by inbox (recom...5 params
List email threads (conversations) with pagination. Returns thread summaries: subject, message count, last activity, snippet. Use next_cursor from the response to fetch the next page. Provide at least one of inbox_id or domain_id. Args: inbox_id: Filter threads by inbox (recom...
cursorvaluedomain_idvalueinbox_idvaluelimitintegerorderstringget_thread_messagesGet all messages in an email thread. Returns the full conversation with sender, content, timestamps. Args: thread_id: The thread ID (from list_threads) limit: Max messages, 1-1000 (default: 50) order: "asc" for chronological (default), "desc" for newest first3 params
Get all messages in an email thread. Returns the full conversation with sender, content, timestamps. Args: thread_id: The thread ID (from list_threads) limit: Max messages, 1-1000 (default: 50) order: "asc" for chronological (default), "desc" for newest first
limitintegerorderstringthread_idstringsend_emailSend an email message. Provide html or text (or both) for the body. To reply in an existing thread, pass thread_id. To attach files, first call upload_attachment, then pass the attachment IDs as a comma-separated string. You only need inbox_id to send — the domain is inferred...10 params
Send an email message. Provide html or text (or both) for the body. To reply in an existing thread, pass thread_id. To attach files, first call upload_attachment, then pass the attachment IDs as a comma-separated string. You only need inbox_id to send — the domain is inferred...
attachmentsvaluedomain_idvaluefrom_addressvaluehtmlvalueinbox_idvaluereply_tovaluesubjectstringtextvaluethread_idvaluetostringupload_attachmentUpload a file for use when sending emails. Returns an attachment_id to pass to send_email's attachments parameter. Args: content: Base64-encoded file content filename: Original filename, e.g. "report.pdf" mime_type: MIME type, e.g. "application/pdf" or "image/png"3 params
Upload a file for use when sending emails. Returns an attachment_id to pass to send_email's attachments parameter. Args: content: Base64-encoded file content filename: Original filename, e.g. "report.pdf" mime_type: MIME type, e.g. "application/pdf" or "image/png"
contentstringfilenamestringmime_typestringget_attachment_urlGet a temporary download URL for an attachment. Args: attachment_id: The attachment ID expires_in: URL lifetime in seconds (default: 3600 = 1 hour)2 params
Get a temporary download URL for an attachment. Args: attachment_id: The attachment ID expires_in: URL lifetime in seconds (default: 3600 = 1 hour)
attachment_idstringexpires_inintegersearch_threadsSearch across email threads by subject or content. Returns matching thread summaries with subject, snippet, and message count. Provide at least one of inbox_id or domain_id. Args: query: Search query (searches subject and message content) inbox_id: Filter by inbox (recommended...4 params
Search across email threads by subject or content. Returns matching thread summaries with subject, snippet, and message count. Provide at least one of inbox_id or domain_id. Args: query: Search query (searches subject and message content) inbox_id: Filter by inbox (recommended...
domain_idvalueinbox_idvaluelimitintegerquerystringget_thread_metadataGet triage metadata for a thread: tags, status, and assignment. Args: thread_id: The thread ID1 params
Get triage metadata for a thread: tags, status, and assignment. Args: thread_id: The thread ID
thread_idstringset_thread_statusSet the status of a thread for triage. Valid statuses: "open", "needs_reply", "waiting", "closed" Args: thread_id: The thread ID status: New status — one of: open, needs_reply, waiting, closed2 params
Set the status of a thread for triage. Valid statuses: "open", "needs_reply", "waiting", "closed" Args: thread_id: The thread ID status: New status — one of: open, needs_reply, waiting, closed
statusstringthread_idstringtag_threadAdd tags/labels to a thread. Tags are additive — existing tags are preserved. Use tags for categorization: "vip", "bug-report", "sales-lead", "urgent", etc. Args: thread_id: The thread ID tags: Comma-separated tags to add (e.g. "urgent,vip,sales-lead")2 params
Add tags/labels to a thread. Tags are additive — existing tags are preserved. Use tags for categorization: "vip", "bug-report", "sales-lead", "urgent", etc. Args: thread_id: The thread ID tags: Comma-separated tags to add (e.g. "urgent,vip,sales-lead")
tagsstringthread_idstringuntag_threadRemove tags/labels from a thread. Args: thread_id: The thread ID tags: Comma-separated tags to remove (e.g. "urgent,vip")2 params
Remove tags/labels from a thread. Args: thread_id: The thread ID tags: Comma-separated tags to remove (e.g. "urgent,vip")
tagsstringthread_idstringassign_threadAssign a thread to an agent or user. Pass null/empty to unassign. Args: thread_id: The thread ID assigned_to: Agent/user identifier to assign to (empty or omit to unassign)2 params
Assign a thread to an agent or user. Pass null/empty to unassign. Args: thread_id: The thread ID assigned_to: Agent/user identifier to assign to (empty or omit to unassign)
assigned_tovaluethread_idstringget_deliverability_statsGet email deliverability metrics: sent, delivered, bounced, complained, failed. Provides bounce rate, complaint rate, and delivery rate percentages. Use this to monitor sender reputation and identify deliverability issues. Args: inbox_id: Filter metrics by inbox (recommended)...3 params
Get email deliverability metrics: sent, delivered, bounced, complained, failed. Provides bounce rate, complaint rate, and delivery rate percentages. Use this to monitor sender reputation and identify deliverability issues. Args: inbox_id: Filter metrics by inbox (recommended)...
domain_idvalueinbox_idvalueperiodstringget_suppressionsList suppressed email addresses (bounces, complaints, unsubscribes). Suppressed addresses are automatically skipped when sending. Use this to audit why certain recipients aren't receiving emails. Args: inbox_id: Filter by inbox (optional) limit: Max results (default: 50)2 params
List suppressed email addresses (bounces, complaints, unsubscribes). Suppressed addresses are automatically skipped when sending. Use this to audit why certain recipients aren't receiving emails. Args: inbox_id: Filter by inbox (optional) limit: Max results (default: 50)
inbox_idvaluelimitintegerget_delivery_eventsGet delivery event log: sent, delivered, bounced, complained, failed. Track the lifecycle of individual emails or audit delivery across an inbox. Args: message_id: Filter events for a specific message inbox_id: Filter events by inbox event_type: Filter by type: "sent", "delive...4 params
Get delivery event log: sent, delivered, bounced, complained, failed. Track the lifecycle of individual emails or audit delivery across an inbox. Args: message_id: Filter events for a specific message inbox_id: Filter events by inbox event_type: Filter by type: "sent", "delive...
event_typevalueinbox_idvaluelimitintegermessage_idvalueSponsors
Configuration
COMMUNE_API_KEY*secretYour Commune API key (starts with comm_). Get one at https://app.commune.email
Readme
Email for Claude Desktop, Cursor & Windsurf
Give Claude (or any MCP client) a real email inbox and SMS. Install in 30 seconds — no cloning required.
Details
- Repository
- github.com/shanjai-raj/commune-mcp
- Categories
- Communication & Messaging, Search & Web Crawling
- Package
commune-mcp- Transport
- STDIO
- Auth
- Required
- Registry
- MCP registry, active