Skip to main content
Glama
commune-dev

commune-mcp

Official
by commune-dev

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
COMMUNE_API_KEYYesYour API key (starts with comm_)
COMMUNE_BASE_URLNoOverride API URL (default: Commune cloud)

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_domainsA

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.

create_domainA

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" region: AWS region (optional), e.g. "us-east-1" or "eu-west-1"

verify_domainA

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)

get_domain_recordsA

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)

list_inboxesA

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, lists all if omitted)

create_inboxA

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") domain_id: Domain to create under (optional, auto-resolved if omitted) name: Agent name for the inbox (optional, also used as display_name fallback) display_name: Sender display name shown in email clients (e.g. "Support Agent", "Acme Sales"). If set, outbound emails show as '"Display Name" ' in Gmail/Outlook. webhook_endpoint: URL to receive notifications on new emails (optional)

delete_inboxC

Delete an inbox.

Args: domain_id: The domain ID inbox_id: The inbox ID to delete

set_extraction_schemaB

Set structured extraction schema for an inbox.

Args: domain_id: Domain ID for the inbox. inbox_id: Inbox ID. name: Schema name. schema: JSON string of a valid JSON Schema object. description: Optional schema description. enabled: Enable extraction immediately (default: true).

remove_extraction_schemaB

Remove structured extraction schema from an inbox.

list_threadsA

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 (recommended) domain_id: Filter threads by domain limit: Results per page, 1-100 (default: 20) cursor: Pagination cursor from a previous response's next_cursor order: "desc" for newest first (default), "asc" for oldest first

get_thread_messagesA

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

send_emailA

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 automatically.

Args: to: Recipient email address (for multiple, comma-separate) subject: Email subject line html: HTML body content text: Plain text body (fallback) from_address: Sender address (optional, uses inbox default) reply_to: Reply-to address (optional) thread_id: Reply within an existing thread (optional) inbox_id: Send from a specific inbox (recommended — domain is auto-resolved) domain_id: Send from a specific domain (optional, inferred from inbox_id) attachments: Comma-separated attachment IDs from upload_attachment (optional)

upload_attachmentA

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"

get_attachment_urlA

Get a temporary download URL for an attachment.

Args: attachment_id: The attachment ID expires_in: URL lifetime in seconds (default: 3600 = 1 hour)

search_threadsA

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_id: Filter by domain limit: Max results, 1-100 (default: 20)

get_thread_metadataB

Get triage metadata for a thread: tags, status, and assignment.

Args: thread_id: The thread ID

set_thread_statusB

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

tag_threadA

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")

untag_threadA

Remove tags/labels from a thread.

Args: thread_id: The thread ID tags: Comma-separated tags to remove (e.g. "urgent,vip")

assign_threadA

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)

get_deliverability_statsA

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_id: Filter metrics by domain period: Time period — "24h", "7d", "30d" (default: "7d")

get_suppressionsA

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) domain_id: Filter by domain (optional) limit: Max results (default: 50)

get_delivery_eventsA

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 domain_id: Filter events by domain event_type: Filter by type: "sent", "delivered", "bounced", "complained", "failed" limit: Max results (default: 50)

get_credit_balanceA

Get current credit balance for your Commune account.

Returns included credits, purchased credits, total available, and credits used this billing cycle.

list_credit_bundlesA

List available credit bundles that can be purchased.

Returns each bundle's ID, credit amount, price, and description.

credits_checkoutA

Create a Stripe checkout session to purchase a credit bundle.

Returns a checkout_url to open in the browser to complete payment. Valid bundles: "starter", "growth", "scale".

Args: bundle: The bundle ID to purchase — "starter", "growth", or "scale" return_url: URL to redirect to after payment (optional)

submit_feedbackA

Submit feedback about Commune to the product team.

Use this tool whenever you encounter something worth reporting — an error, a missing capability, or an observation about what's working well or could be improved.

Three feedback types:

"error" — the API returned a non-2xx status, the response shape was wrong, or behavior was incorrect (not just unexpected). Include context: which tool you called, what you expected, what happened. Example: "list_threads returns 500 when the inbox has never received a message."

"feature" — you need a capability that doesn't exist yet. Be specific about the use case. Example: "Need cursor-based pagination on search_threads — current limit cap blocks processing large backlogs."

"signal" — the API succeeded but quality, latency, or behavior was unexpected. Also use for positive observations. Example: "Semantic search quality on long threads is excellent — intent matching across 40+ messages works." Example: "Thread metadata endpoint is slow (~3s) on inboxes with 1000+ threads — expected <500ms."

The optional context dict lets you attach structured metadata that makes feedback actionable. For errors, include the tool name, any IDs, and status codes. For features, include the related tool and your use case.

Args: type: Feedback type — "error", "feature", or "signal" message: Clear description of the feedback (max 4000 chars) context: Optional structured metadata, e.g. {"tool": "list_threads", "inbox_id": "inb_123", "status_code": 500}

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/commune-dev/commune-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server