Skip to main content
Glama
DMTicket MCP Server

DMTicket MCP Server

by doanhnd9989

DMTicket MCP Server

Model Context Protocol server for DMTicket — the omnichannel customer-messaging & CRM platform (Zalo, Facebook, Telegram, groups & communities).

It gives AI agents (Claude, Cursor, ChatGPT, custom agents…) live access to a DMTicket account: contacts, conversations, messages, labels, custom attributes, inboxes, teams, agents, canned responses, automation and reports — so an agent can read, segment, message and automate on your behalf.

Build the automation, don't just read the data

Most helpdesk integrations stop at "list my conversations". DMTicket exposes the pieces an agent needs to stand up a working business process on its own:

  • Data sources — register a connection to a Lark sheet, PostgreSQL, or MySQL. The agent references it by name; the credentials stay server-side and are never handed to the model. Reads only — SQL that is not a single SELECT is rejected.

  • Scheduled flows — automation that fires on a cron schedule rather than waiting for a conversation to exist. Read rows, filter them, extract fields, skip what was already handled, then draft or send.

  • Dry run — POST /scheduled_flows/{id}/run defaults to a dry run: the pipeline executes for real, but actions are reported instead of performed. An agent can show you exactly what a flow will send before it sends anything.

  • Durable dedupe — automation_states claims a key atomically, so a restart, a redeploy, or an overlapping run never processes the same row twice.

Hand an agent your token and this server, describe the process in plain language, and it can build and test the automation end to end.

Related MCP server: DLF Agency MCP Server

How it works

On startup the server fetches the DMTicket OpenAPI spec from https://dmticket.com/api/openapi.json and auto-generates one MCP tool per API operation — 129 tools at the time of writing. When DMTicket adds a new endpoint, it becomes an MCP tool on the next restart, with no code changes here.

Point it somewhere else with DMTICKET_OPENAPI_URL if you self-host.

1. Get your DMTicket API token

  1. Sign in to your DMTicket account at https://app.dmticket.com

  2. Click your avatar (bottom-left) → Profile settings

  3. Scroll to the bottom and copy the Access Token

The token carries your own permissions, so an agent using it can do exactly what you can — no more. Keep it secret; regenerate from the same screen to revoke.

API base URL: https://app.dmticket.com · Auth header: api-access-token: <token> Quick test: curl https://app.dmticket.com/api/v1/profile -H "api-access-token: <token>"

Spell the header with dashes. Rails maps api-access-token and api_access_token to the same value, but proxies strip headers containing underscores, so the underscored spelling arrives empty and every call 401s.

Most endpoints are scoped to one account, so you also need your numeric account id — it is the number in the app URL, e.g. app.dmticket.com/app/accounts/**3**/dashboard.

2. Install

git clone https://github.com/doanhnd9989/dmticket-mcp.git
cd dmticket-mcp
npm install
npm run build     # outputs dist/

3. Configure your agent

Set two environment variables:

Variable

Required

Default

Description

DMTICKET_API_KEY

✅

—

Your workspace token from step 1

DMTICKET_API_URL

—

https://dmticket.com

Your DMTicket origin

DMTICKET_MCP_TRANSPORT

—

both

stdio, sse, or both

Claude Code / Claude Desktop

claude mcp add dmticket \
  -e DMTICKET_API_KEY=<your-workspace-token> \
  -e DMTICKET_API_URL=https://dmticket.com \
  -- node /absolute/path/to/dmticket-mcp/dist/index.mjs

Or in claude_desktop_config.json / .mcp.json:

{
  "mcpServers": {
    "dmticket": {
      "command": "node",
      "args": ["/absolute/path/to/dmticket-mcp/dist/index.mjs"],
      "env": {
        "DMTICKET_API_KEY": "<your-workspace-token>",
        "DMTICKET_API_URL": "https://dmticket.com"
      }
    }
  }
}

Cursor (.cursor/mcp.json)

{
  "mcpServers": {
    "dmticket": {
      "command": "node",
      "args": ["/absolute/path/to/dmticket-mcp/dist/index.mjs"],
      "env": { "DMTICKET_API_KEY": "<your-workspace-token>" }
    }
  }
}

Remote (SSE) mode

DMTICKET_API_KEY=<token> DMTICKET_MCP_TRANSPORT=sse DMTICKET_MCP_PORT=3333 node dist/index.mjs
# then point your agent at http://<host>:3333/sse

Tools

Tool names are the OpenAPI operationId in snake_case — e.g. list_contacts, create_contact, list_conversations, create_message, create_data_source, query_data_source, create_scheduled_flow, run_scheduled_flow, list_scheduled_flow_runs, claim_automation_state, create_webhook, … The full set is generated live from the spec, so it always matches your DMTicket version.

Security

  • The token is a per-workspace credential — treat it like a password. Do not commit it.

  • The server only talks to your configured DMTICKET_API_URL.

  • Revoke by regenerating the workspace token in DMTicket settings.

License

ISC. This is the MCP integration for DMTicket (https://dmticket.com).

Available Tools

155 tools
add_new_agent_to_accountC

Add a New Agent

Inputs: no named parameters.

add_new_agent_to_inboxD

Add a New Agent

Inputs: inbox_id (required), user_ids (required).

add_new_agent_to_teamC

Add a New Agent

Inputs: user_ids (required).

add_new_article_to_accountC

Add a new article

Inputs: no named parameters.

add_new_automation_rule_to_accountC

Add a new automation rule

Inputs: no named parameters.

add_new_canned_response_to_accountC

Add a New Canned Response

Inputs: no named parameters.

add_new_category_to_accountD

Add a new category

Inputs: no named parameters.

add_new_custom_attribute_to_accountB

Add a new custom attribute

Inputs: no named parameters.

add_new_portal_to_accountB

Add a new portal

Inputs: no named parameters.

assign_a_conversationD

Assign Conversation

Inputs: team_id, assignee_id.

claim_automation_stateB

Claim a key before doing irreversible work

Inputs: no named parameters.

contactable_inboxes_getD

Get Contactable Inboxes

Inputs: id (required).

contact_add_labelsC

Add Labels

Inputs: labels (required).

contact_conversationsD

Contact Conversations

Inputs: id (required).

contact_createD

Create Contact

Inputs: no named parameters.

contact_deleteB

Delete Contact

Inputs: no named parameters.

contact_detailsD

Show Contact

Inputs: no named parameters.

contact_filterD

Contact Filter

Inputs: page, payload.

contact_inbox_creationC

Create contact inbox

Inputs: id (required), inbox_id (required), source_id.

contact_listB

List Contacts

Inputs: no named parameters.

contact_mergeB

Merge Contacts

Inputs: base_contact_id (required), mergee_contact_id (required).

contact_updateC

Update Contact

Inputs: no named parameters.

conversation_add_labelsD

Add Labels

Inputs: labels (required).

conversation_filterD

Conversations Filter

Inputs: page, payload.

conversation_listD

Conversations List

Inputs: q, page, labels, status, +3 more.

conversation_list_metaC

Get Conversation Counts

Inputs: q, labels, status, team_id, +1 more.

create_a_contactC

Create a contact

Inputs: no named parameters.

create_a_conversationC

Create a conversation

Inputs: no named parameters.

create_a_custom_filterD

Create a custom filter

Inputs: no named parameters.

create_a_labelD

Create a label

Inputs: no named parameters.

create_a_messageC

Create a message

Inputs: no named parameters.

create_an_account_agent_botD

Create an Agent Bot

Inputs: no named parameters.

create_a_new_message_in_a_conversationD

Create New Message

Inputs: no named parameters.

create_an_integration_hookD

Create an integration hook

Inputs: no named parameters.

create_a_teamA

Create a team

Inputs: no named parameters.

create_a_webhookC

Add a webhook

Inputs: no named parameters.

create_data_sourceC

Create a data source

Inputs: no named parameters.

create_scheduled_flowC

Create a scheduled flow

Inputs: no named parameters.

create_sla_policyC

Tạo chính sách SLA

Inputs: sla_policy.

delete_a_custom_filterC

Delete a custom filter

Inputs: no named parameters.

delete_agent_from_accountC

Remove an Agent from Account

Inputs: id (required).

delete_agent_in_inboxC

Remove an Agent from Inbox

Inputs: inbox_id (required), user_ids (required).

delete_agent_in_teamB

Remove an Agent from Team

Inputs: user_ids (required).

delete_a_labelC

Delete a label

Inputs: no named parameters.

delete_a_messageB

Delete a message

Inputs: no named parameters.

delete_an_account_agent_botC

Delete an AgentBot

Inputs: no named parameters.

delete_an_integration_hookC

Delete an Integration Hook

Inputs: no named parameters.

delete_a_teamC

Delete a team

Inputs: no named parameters.

delete_automation_rule_from_accountB

Remove a automation rule from account

Inputs: id (required).

delete_automation_stateC

Delete an automation state entry

Inputs: namespace (required).

delete_a_webhookB

Delete a webhook

Inputs: no named parameters.

delete_canned_response_from_accountB

Remove a Canned Response from Account

Inputs: id (required).

delete_custom_attribute_from_accountC

Remove a custom attribute from account

Inputs: id (required).

delete_data_sourceC

Delete a data source

Inputs: no named parameters.

delete_scheduled_flowB

Delete a scheduled flow

Inputs: no named parameters.

delete_sla_policyC

Xoá chính sách SLA

Inputs: no named parameters.

fetch_profileB

Fetch user profile

Inputs: no named parameters.

get_account_agentsB

List Agents in Account

Inputs: no named parameters.

get_account_audit_logsC

List Audit Logs in Account

Inputs: page.

get_account_automation_ruleB

List all automation rules in an account

Inputs: no named parameters.

get_account_branded_email_layoutB

Get account branded email layout

Inputs: no named parameters.

get_account_canned_responseA

List all Canned Responses in an Account

Inputs: no named parameters.

get_account_conversation_metricsD

Account Conversation Metrics

Inputs: no named parameters.

get_account_custom_attributeB

List all custom attributes in an account

Inputs: attribute_model (required).

get_account_detailsC

Get account details

Inputs: no named parameters.

get_account_reporting_eventsD

Account Reporting Events

Inputs: name, since, until, user_id, +1 more.

get_agent_conversation_metricsD

Agent Conversation Metrics

Inputs: no named parameters.

get_agent_summary_reportA

Get conversation statistics grouped by agent

Inputs: no named parameters.

get_automation_stateC

Get one automation state entry

Inputs: namespace (required).

get_channel_summary_reportB

Get conversation statistics grouped by channel type

Inputs: no named parameters.

get_conversation_messagesC

Get messages from a conversation

Inputs: no named parameters.

get_conversation_reporting_eventsD

Conversation Reporting Events

Inputs: no named parameters.

get_csat_survey_pageC

Get CSAT survey page

Inputs: no named parameters.

get_data_sourceD

Get a data source

Inputs: no named parameters.

get_details_of_a_contactD

Get a contact

Inputs: no named parameters.

get_details_of_a_conversationD

Conversation Details

Inputs: no named parameters.

get_details_of_a_inboxC

Inbox details

Inputs: no named parameters.

get_details_of_all_integrationsA

List all the Integrations

Inputs: no named parameters.

get_details_of_a_single_account_agent_botC

Get an agent bot details

Inputs: no named parameters.

get_details_of_a_single_automation_ruleC

Get a automation rule details

Inputs: id (required).

get_details_of_a_single_custom_attributeC

Get a custom attribute details

Inputs: id (required).

get_details_of_a_single_custom_filterB

Get a custom filter details

Inputs: no named parameters.

get_details_of_a_single_labelD

Get a label

Inputs: no named parameters.

get_details_of_a_single_teamC

Get a team details

Inputs: no named parameters.

get_first_response_time_distributionB

Get first response time distribution by channel

Inputs: no named parameters.

get_inboxC

Get an inbox

Inputs: id (required).

get_inbox_agent_botC

Show Inbox Agent Bot

Inputs: id (required).

get_inbox_label_matrixC

Get inbox-label matrix report

Inputs: no named parameters.

get_inbox_membersC

List Agents in Inbox

Inputs: no named parameters.

get_inbox_summary_reportB

Get conversation statistics grouped by inbox

Inputs: no named parameters.

get_label_summary_reportD

Báo cáo hội thoại theo nhãn (Type)

Inputs: no named parameters.

get_outgoing_messages_countC

Get outgoing messages count grouped by entity

Inputs: group_by (required).

get_portalB

List all portals in an account

Inputs: no named parameters.

get_scheduled_flowC

Get a scheduled flow

Inputs: no named parameters.

get_single_conversationC

Get a single conversation

Inputs: no named parameters.

get_sla_policyC

Xem một chính sách SLA

Inputs: no named parameters.

get_team_membersC

List Agents in Team

Inputs: no named parameters.

get_team_summary_reportB

Get conversation statistics grouped by team

Inputs: no named parameters.

inbox_creationA

Create an inbox

Inputs: no named parameters.

list_all_account_agent_botsA

List all AgentBots

Inputs: no named parameters.

list_all_contact_conversationsC

List all conversations

Inputs: no named parameters.

list_all_conversation_messagesC

List all messages

Inputs: no named parameters.

list_all_conversation_statisticsD

Get Account reports

Inputs: no named parameters.

list_all_conversation_statistics_summaryC

Get Account reports summary

Inputs: no named parameters.

list_all_filtersB

List all custom filters

Inputs: no named parameters.

list_all_inboxesA

List all inboxes

Inputs: no named parameters.

list_all_labelsC

List all labels

Inputs: no named parameters.

list_all_labels_of_a_contactD

List Labels

Inputs: no named parameters.

list_all_labels_of_a_conversationD

List Labels

Inputs: no named parameters.

list_all_messagesD

Get messages

Inputs: after, before.

list_all_teamsB

List all teams

Inputs: no named parameters.

list_all_webhooksA

List all webhooks

Inputs: no named parameters.

list_automation_statesC

List automation state entries

Inputs: namespace (required), key, limit.

list_csat_survey_responsesC

Danh sách đánh giá mức độ hài lòng (CSAT)

Inputs: no named parameters.

list_data_sourcesB

List all data sources

Inputs: no named parameters.

list_scheduled_flow_runsC

List past runs of a flow

Inputs: limit.

list_scheduled_flowsC

List scheduled flows

Inputs: no named parameters.

list_sla_policiesC

Danh sách chính sách SLA

Inputs: no named parameters.

new_conversationC

Create New Conversation

Inputs: no named parameters.

put_automation_stateB

Write an automation state entry

Inputs: no named parameters.

query_data_sourceC

Read from the data source

Inputs: no named parameters.

resolve_conversationD

Resolve a conversation

Inputs: no named parameters.

run_scheduled_flowC

Run a flow now (dry run by default)

Inputs: no named parameters.

test_data_sourceC

Test the connection

Inputs: no named parameters.

toggle_priority_of_a_conversationC

Toggle Priority

Inputs: priority (required).

toggle_status_of_a_conversationC

Toggle Status

Inputs: status (required), snoozed_until.

toggle_typing_statusC

Toggle typing status

Inputs: typing_status (required).

toggle_typing_status_of_a_conversationC

Toggle Typing Status

Inputs: typing_status (required), is_private.

update_accountD

Update account

Inputs: no named parameters.

update_account_branded_email_layoutC

Update account branded email layout

Inputs: no named parameters.

update_a_contactC

Update a contact

Inputs: no named parameters.

update_a_custom_filterC

Update a custom filter

Inputs: no named parameters.

update_agent_botC

Add or remove agent bot

Inputs: id (required), agent_bot (required).

update_agent_in_accountC

Update Agent in Account

Inputs: id (required).

update_agents_in_inboxD

Update Agents in Inbox

Inputs: inbox_id (required), user_ids (required).

update_agents_in_teamD

Update Agents in Team

Inputs: user_ids (required).

update_a_labelD

Update a label

Inputs: no named parameters.

update_a_messageC

Update a message

Inputs: no named parameters.

update_an_account_agent_botD

Update an agent bot

Inputs: no named parameters.

update_an_integrations_hookC

Update an Integration Hook

Inputs: no named parameters.

update_a_teamC

Update a team

Inputs: no named parameters.

update_automation_rule_in_accountC

Update automation rule in Account

Inputs: id (required).

update_a_webhookC

Update a webhook object

Inputs: no named parameters.

update_canned_response_in_accountC

Update Canned Response in Account

Inputs: id (required).

update_conversationD

Update Conversation

Inputs: priority, sla_policy_id.

update_custom_attribute_in_accountC

Update custom attribute in Account

Inputs: id (required).

update_custom_attributes_of_a_conversationD

Update Custom Attributes

Inputs: custom_attributes (required).

update_data_sourceD

Update a data source

Inputs: no named parameters.

update_inboxD

Update Inbox

Inputs: id (required).

update_last_seenD

Update last seen

Inputs: no named parameters.

update_portal_to_accountC

Update a portal

Inputs: no named parameters.

update_profileC

Update user profile

Inputs: profile (required).

update_scheduled_flowC

Update a scheduled flow

Inputs: no named parameters.

update_sla_policyC

Sửa chính sách SLA

Inputs: sla_policy.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    D1.7/5.0

    Scored across 155 tools

    Disambiguation1/5

    Many tools have overlapping purposes, e.g., 'create_a_contact' and 'contact_create' both create contacts. The naming is inconsistent, making it hard to distinguish between similar operations.

    Naming Consistency1/5

    Tool names follow no consistent pattern, mixing 'contact_list', 'create_a_contact', 'get_details_of_a_contact', and 'contact_create' without rhyme or reason.

    Tool Count1/5

    With 155 tools, the server is far too large for a typical MCP tool set. This excessive granularity undermines usability and suggests many tools could be merged or parameterized.

    Completeness2/5

    While the server covers many entities (contacts, conversations, agents, etc.), the massive redundancy and poor organization indicate significant gaps in coherent workflow coverage.

    Maintenance

    ActivityInactive
    ResponsivenessLimited data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables AI agents to interact with Mailjet's contact, campaign, segmentation, statistics, and workflow APIs for managing email marketing operations through natural language.
      625 npm
      14
      Apache 2.0
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables AI agents to manage GoHighLevel workspaces through natural language, with 508 tools across 18 domains for complete CRM, marketing, and workflow automation.
      Apache 2.0
    • A
      license
      Not graded
      quality
      B
      maintenance
      Exposes seven read-only tools for sales engagement data from DM Faster, enabling agents to query workspace briefings, campaigns, sendings, replies, pipelines, and company timelines.
      Apache 2.0
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables AI agents to manage omnichannel CRM data (WhatsApp, Instagram, Facebook) via the official API, including leads, deals, pipelines, activities, tags, products, conversations, lists, attachments, and notes.
      MIT