Skip to main content

MCP Server

DashX ships a Model Context Protocol (MCP) server, so AI agents like Claude Code, Claude Desktop, Cursor, and Codex can talk to your workspace data in natural language - "show me my WhatsApp chats", "summarize unanswered conversations", "how many open issues are there?"

The agent does the reasoning; DashX exposes your data as a set of permission-scoped tools. Every request runs through the same authorization and policy layer as the rest of the API, so an agent only ever sees what its credentials are allowed to see.

Beta

The MCP server is in beta. Tools and behavior may change. Connect it to a non-production environment first.

Endpoint

https://api.dashx.com/mcp

Self-hosted? Use your own host with the /mcp path.

Prerequisites

You authenticate with a DashX Public Key and Private Key - the same API key pair used by the Server-Side SDKs. If you don't have one yet, follow Generate API Keys to create a Service Account and a key pair.

tip

Create a dedicated Service Account (per environment) for your MCP connection, with only the permissions it needs. Revoke its key pair to instantly cut off access.

Quick Setup

Run this once - it registers the server in your current project:

claude mcp add --transport http dashx https://api.dashx.com/mcp \
--header "X-Public-Key: $DASHX_PUBLIC_KEY" \
--header "X-Private-Key: $DASHX_PRIVATE_KEY"

Confirm it connected:

claude mcp list
# dashx: https://api.dashx.com/mcp (HTTP) - ✓ Connected

Add --scope user to make dashx available in every Claude Code session, not just this project.

Authentication

The server reads two headers and resolves them to the owning account, exactly like the GraphQL API:

HeaderValue
X-Public-KeyYour Service Account's public key
X-Private-KeyYour Service Account's private key

To target an environment other than the key's own, also send X-Target-Environment with the environment identifier (e.g. staging).

caution

The private key is a secret. When configured in a client it lives in that client's config file - treat it like a password and revoke the key pair if it leaks.

Available Tools

ToolDescription
list_conversationsList conversations across channels (chat, WhatsApp, email, SMS, ...), with rich filters.
list_messagesList individual messages. Pass { "conversationId": "<uuid>" } to read one conversation's transcript.
list_issuesList issues / tickets.
list_groupsList groups (teams / queues issues and conversations are assigned to).
list_environmentsList the workspace's environments (resolve environment names/ids).
list_issue_statusesList issue statuses (the label/kind for an issue's status).
list_issue_typesList issue types (resolve issue type ids to names).
analyze_recordsFast aggregate counts and trends (ClickHouse) over issues, conversations, accounts, or groups - grouped by columns and/or a time bucket (day/week/month).

The list_* tools return the actual records (real-time, permission-scoped). analyze_records answers "how many / breakdown / trend" questions over large volumes - use it for counts, not for reading content.

Filtering conversations

list_conversations accepts a filter object. Keys are AND-combined; each takes an operator like { "eq": ... } or { "in": [...] }:

FilterExampleNotes
channel{ "eq": "CHAT" }EMAIL, SMS, PUSH, CHAT, IN_APP
subChannel{ "eq": "WHATSAPP" }WHATSAPP, SLACK, TELEGRAM, SIGNAL, IOS, ANDROID, WEB, MICROSOFT_TEAMS, DASHX
isUnansweredtrueAwaiting an internal/agent reply
assigneeId{ "eq": "<uuid>" }or "null" for unassigned
statusKind{ "eq": "<kind>" }Latest issue status

The agent constructs these from your request - you rarely write them by hand.

Example Prompts

Once connected, just talk to it in your client - the agent picks the right tools. A base set to start from:

Conversations & chats

  • "Show me my WhatsApp chats from this week."
  • "How many unanswered conversations do I have right now?"
  • "Read conversation <id> and summarize what the customer needs."
  • "What are customers complaining about on WhatsApp lately?"

Issues & tickets

  • "List my open issues."
  • "Which urgent issues are unassigned?"
  • "Show me the issues assigned to the Chat Team group."
  • "Summarize the high-priority issues created this week."

Trends & breakdowns (analytics)

  • "How many conversations per day this month, by channel?"
  • "Break down issues by priority."
  • "What's the WhatsApp conversation trend since January?"
  • "How many new accounts per month this year, by kind?"

Exploring your workspace

  • "What environments and groups do we have?"
  • "List our issue types and statuses."
tip

Mix and match - "break down this week's WhatsApp issues by status" will list groups/statuses to resolve names, then aggregate. Be specific about the time range and channel for the sharpest answers.

Security & Scoping

  • Results are scoped to the account behind the key pair and its policies - an agent sees only what that account is authorized to access.
  • Use a separate Service Account per integration/environment so you can grant least privilege and revoke independently.
  • All tool calls are read-only.