Skip to main content
Glama
mohnori

Chatwoot MCP Server

by mohnori

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
CHATWOOT_EMAILNoEmail for JWT auth (alternative method)
CHATWOOT_BASE_URLYesYour Chatwoot instance URL (no trailing slash)
CHATWOOT_PASSWORDNoPassword for JWT auth (needed for token refresh)
CHATWOOT_API_TOKENNoAPI access token (recommended method)
CHATWOOT_ACCOUNT_IDYesYour Chatwoot account ID (numeric)

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
chatwoot_list_conversationsA

List conversations from a Chatwoot account with filtering options.

This tool retrieves conversations from Chatwoot, allowing you to filter by status, assignee, and inbox. Supports pagination for large result sets.

Args:

  • page (number): Page number for pagination, starts at 1 (default: 1)

  • status (string): Filter by conversation status - "open", "resolved", "pending", "snoozed", or "all" (default: "open")

  • assignee_type (string): Filter by assignee - "me", "unassigned", or "all" (optional)

  • inbox_id (number): Filter by specific inbox ID (optional)

  • response_format (string): Output format - "markdown" or "json" (default: "markdown")

Returns: A list of conversations with details including:

  • Conversation ID, status, and inbox

  • Contact information (name, email)

  • Assignee details

  • Message count and unread count

  • Last activity timestamp

Examples:

  • List all open conversations: { status: "open" }

  • List unassigned conversations: { assignee_type: "unassigned" }

  • List conversations in specific inbox: { inbox_id: 5 }

chatwoot_get_conversationA

Get detailed information about a specific Chatwoot conversation.

This tool retrieves full details for a single conversation including contact info, assignee, labels, and custom attributes.

Args:

  • conversation_id (number): The ID of the conversation to retrieve (required)

  • response_format (string): Output format - "markdown" or "json" (default: "markdown")

Returns: Full conversation details including:

  • Status, inbox, and metadata

  • Complete contact information

  • Assignee details

  • Labels and custom attributes

  • Message statistics

Examples:

  • Get conversation details: { conversation_id: 123 }

chatwoot_list_messagesA

List all messages in a Chatwoot conversation.

This tool retrieves all messages from a specific conversation, including message content, sender information, timestamps, and attachments.

Args:

  • conversation_id (number): The ID of the conversation (required)

  • response_format (string): Output format - "markdown" or "json" (default: "markdown")

Returns: List of messages with:

  • Message ID and content

  • Message type (incoming/outgoing)

  • Sender information (name, type)

  • Timestamp

  • Attachment information

  • Private flag (for internal notes)

Examples:

  • List all messages: { conversation_id: 123 }

chatwoot_create_messageA

Create a new message in a Chatwoot conversation.

This tool sends a message in an existing conversation. Can be used for outgoing messages to customers or private internal notes.

Args:

  • conversation_id (number): The ID of the conversation (required)

  • content (string): The message content (required)

  • message_type (string): Type of message - "outgoing" or "incoming" (default: "outgoing")

  • private (boolean): Whether this is a private internal note (default: false)

Returns: Created message details including ID and confirmation

Examples:

  • Send a reply: { conversation_id: 123, content: "Thank you for contacting us!" }

  • Add internal note: { conversation_id: 123, content: "Customer called for follow-up", private: true }

chatwoot_filter_conversationsA

Filter conversations using advanced criteria including date ranges, status, assignee, and labels.

This tool uses Chatwoot's filter API to find conversations by creation date, last activity date, status, and more. Supports pagination (25 results per page) or auto-pagination to fetch all results at once.

IMPORTANT - Date format must be YYYY-MM-DD only (no time component). Date filters use exclusive boundaries: date_from='2026-02-20' means conversations created AFTER Feb 20 (i.e., Feb 21+). For a single day like Feb 21: use date_from='2026-02-20' and date_to='2026-02-22'.

Args:

  • date_from (string): Start date YYYY-MM-DD - conversations created after this date (optional)

  • date_to (string): End date YYYY-MM-DD - conversations created before this date (optional)

  • activity_from (string): Filter by last activity after this date YYYY-MM-DD (optional)

  • activity_to (string): Filter by last activity before this date YYYY-MM-DD (optional)

  • status (string): Filter by status - "open", "resolved", "pending", "snoozed" (optional)

  • assignee_id (number): Filter by assignee agent ID (optional)

  • inbox_id (number): Filter by inbox ID (optional)

  • label (string): Filter by label name (optional)

  • all_pages (boolean): Fetch ALL pages automatically, returns every matching conversation (default: false)

  • page (number): Page number, 25 results per page - ignored when all_pages is true (default: 1)

  • response_format (string): "markdown" or "json" (default: "markdown")

Returns: Filtered conversations with meta counts (all_count, mine_count, unassigned_count, assigned_count).

Examples:

  • Get all conversations from Feb 21: { date_from: "2026-02-20", date_to: "2026-02-22" }

  • Get ALL conversations from a date range: { date_from: "2026-02-17", date_to: "2026-03-21", all_pages: true }

  • Get resolved conversations from Feb 21: { date_from: "2026-02-20", date_to: "2026-02-22", status: "resolved" }

  • Get conversations with activity on Feb 21: { activity_from: "2026-02-20", activity_to: "2026-02-22" }

  • Get open conversations with a label: { status: "open", label: "urgent" }

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.9/5.0

Scored across 5 tools

Disambiguation3/5

list_conversations and filter_conversations overlap significantly; both retrieve conversations with filtering, though filter adds date/label/advanced criteria. The other three tools (get_conversation, list_messages, create_message) are clearly distinct.

Naming Consistency5/5

All tools follow a consistent chatwoot_ verb_noun pattern in snake_case: list_conversations, get_conversation, list_messages, create_message, filter_conversations. No style mixing or irregularities.

Tool Count4/5

Five tools is a reasonable size for a focused Chatwoot conversation/message server. It feels slightly thin compared to the full platform scope, but each tool has a distinct role and the count is appropriate for a targeted integration.

Completeness3/5

Core read and send workflows are covered (list/get conversations, list/create messages), but there are notable gaps: no way to update conversation status, assignee, or labels, and no create conversation or contact management. The surface handles common support tasks but lacks lifecycle management.

Maintenance

ActivityInactive
ResponsivenessNo issues