Skip to main content
Glama
shanjairaj7

commune-mcp

by shanjairaj7

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_schemaA

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_schemaC

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_threadsB

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_statusA

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_threadB

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_statsB

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)

list_phone_numbersA

List all provisioned phone numbers in your Commune account.

Returns each number's ID, number, type, capabilities, and status. Use the phone_number_id with SMS tools or update_phone_number.

get_phone_numberA

Get details for a single provisioned phone number.

Args: phone_number_id: The phone number ID (from list_phone_numbers)

update_phone_numberA

Update a phone number's friendly name or auto-reply message.

Args: phone_number_id: The phone number ID (from list_phone_numbers) friendly_name: Human-readable label for this number (optional) auto_reply: Automatic reply text sent to all inbound SMS (optional, empty string to disable)

list_available_phone_numbersA

List available phone numbers to purchase.

Browse numbers before buying with provision_phone_number.

Args: type: Number type — "TollFree" (default) or "Local" country: Two-letter country code (default: "US") limit: Max results (default: 10)

provision_phone_numberA

Purchase/provision a phone number for SMS.

Deducts credits from your balance. Use list_available_phone_numbers first to browse options.

Args: phone_number: Specific E.164 number to buy, e.g. "+18005551234" (optional, auto-selected if omitted) type: Number type — "tollfree" (default) or "local" friendly_name: Human-readable label for this number (optional)

release_phone_numberA

Release a provisioned phone number.

The number will be returned to the pool. No credit refund. Message history is retained.

Args: phone_number_id: The phone number ID to release (from list_phone_numbers)

send_smsA

Send an SMS message.

Returns message_id, message_sid, status, and credits_charged.

Args: to: Recipient phone number in E.164 format, e.g. "+15551234567" body: SMS message text phone_number_id: Send from a specific phone number (optional, auto-assigned if omitted)

list_sms_conversationsA

List SMS conversation threads.

Returns a summary of each thread: remote number, last message snippet, and message count.

Args: phone_number_id: Filter conversations by phone number (optional, lists all if omitted) limit: Max results, 1-100 (default: 20)

get_sms_threadA

Get all messages in an SMS thread with a specific number.

Returns chronological messages with direction, body, and timestamps.

Args: remote_number: The external phone number in E.164 format, e.g. "+15551234567" phone_number_id: Your Commune phone number ID for this conversation

search_smsA

Semantic search across SMS messages.

Returns matching messages with body, direction, and timestamps.

Args: query: Search query (searches message content) phone_number_id: Scope search to a specific phone number (optional) limit: Max results, 1-100 (default: 20)

set_phone_number_webhookA

Configure a webhook for a phone number to receive SMS event notifications.

When set, Commune will POST to your endpoint on sms.received and sms.sent events.

Args: phone_number_id: The phone number ID (from list_phone_numbers) endpoint: HTTPS URL to receive webhook payloads secret: Optional webhook signing secret for payload verification events: Event types to subscribe to (default: ["sms.received", "sms.sent"])

set_phone_number_allow_listA

Set the allow list for a phone number (only these numbers can send SMS to it).

Replaces the existing allow list. Pass an empty list to clear it.

Args: phone_number_id: The phone number ID (from list_phone_numbers) numbers: List of E.164 phone numbers to allow, e.g. ["+15551234567"]

set_phone_number_block_listA

Set the block list for a phone number (these numbers are rejected).

Replaces the existing block list. Pass an empty list to clear it.

Args: phone_number_id: The phone number ID (from list_phone_numbers) numbers: List of E.164 phone numbers to block, e.g. ["+15551234567"]

list_sms_suppressionsA

List phone numbers suppressed from receiving SMS (opted out via STOP keyword).

Args: phone_number_id: Filter by phone number ID (optional, lists all if omitted)

remove_sms_suppressionA

Remove a phone number from the SMS suppression list (re-enable SMS delivery).

Use this when a user sends UNSTOP or contacts support to re-subscribe.

Args: phone_number: The E.164 phone number to remove from suppressions, e.g. "+15551234567"

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/shanjairaj7/commune-mcp'

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