Enchant MCP by usefulapi

Work with Enchant help desk tickets: list, read, reply, add notes and labels, manage customers.

我该使用它吗

质量与安全性

A
描述质量
95%
模式完整度
96%
命名质量
79%
投毒风险
100%
权限匹配度
100%
协议合规性
100%

发现(1)

  • LOWTool 'enchant_delete_customer_contact' name length outside 3-30 range在 enchant_delete_customer_contact 中

基于对工具定义和协议合规性的自动分析。

上下文开销

~3,246token 数(工具定义)
~1.7 KB典型响应大小
对注意力有显著影响(占 128k 上下文窗口的 2.54%)

这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。

安装

一键安装

将以下内容添加到你的 `claude_desktop_config.json` 文件中:

{
  "mcpServers": {
    "enchant": {
      "url": "https://enchant.usefulapi.io/mcp"
    }
  }
}

远程端点

https://enchant.usefulapi.io/mcpstreamable-http

它能做什么

工具清单

工具(16)

🟢 只读🟡 写入🔴 删除⚪ 未知
🟢enchant_list_tickets(ids, inbox_ids, states, user_ids, label_ids, ...)

List and filter tickets (newest first by default). Enchant REST: GET /tickets. Use user_ids ["null"] for unassigned tickets. Each result has a short summary; use enchant_get_ticket for messages.

输入模式

{
  "type": "object",
  "properties": {
    "ids": {
      "description": "Only these ticket ids.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "inbox_ids": {
      "description": "Only tickets in these inbox ids.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "states": {
      "description": "Only tickets in these states.",
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "open",
          "hold",
          "closed"
        ]
      }
    },
    "user_ids": {
      "description": "Only tickets assigned to these user ids (\"null\" = unassigned).",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "label_ids": {
      "description": "Only tickets with these label ids.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "types": {
      "description": "Ticket types, e.g. email, chat, sms, phone, web, twitter, whatsapp.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "spam": {
      "description": "Only spam (true) or only non-spam (false) tickets.",
      "type": "boolean"
    },
    "trash": {
      "description": "Only trashed (true) or only non-trashed (false) tickets.",
      "type": "boolean"
    },
    "since_created_at": {
      "description": "Only tickets created since this UTC ISO 8601 time, e.g. 2026-01-31T13:41:10Z.",
      "type": "string"
    },
    "since_updated_at": {
      "description": "Only tickets updated since this UTC ISO 8601 time.",
      "type": "string"
    },
    "sort": {
      "description": "Sort order; a leading - means descending.",
      "type": "string",
      "enum": [
        "updated_at",
        "-updated_at",
        "created_at",
        "-created_at",
        "user_id",
        "user_id,-updated_at"
      ]
    },
    "per_page": {
      "description": "Results per page (0-100, default 10). Use 0 with count to get only the total.",
      "type": "integer",
      "minimum": 0,
      "maximum": 100
    },
    "page": {
      "description": "Page number (1-based). Past 10,000 results, filter by since_created_at instead.",
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "count": {
      "description": "If true, also return the total number of matching results (costs 1 extra rate-limit credit).",
      "type": "boolean"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢enchant_get_ticket(id, embed)

Get one ticket by id. Embed related data with `embed`: messages (the conversation: replies and notes), customer, user, inbox, labels. Each embedded type costs 1 extra rate-limit credit. Enchant REST: GET /tickets/{id}.

输入模式

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Ticket id (the string id, not the friendly ticket number)."
    },
    "embed": {
      "description": "Related resources to embed.",
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "messages",
          "customer",
          "user",
          "inbox",
          "labels"
        ]
      }
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢enchant_list_users(per_page, page)

List the help desk users (agents): id, name, email. Use the ids to assign tickets and to author replies and notes. Enchant REST: GET /users.

输入模式

{
  "type": "object",
  "properties": {
    "per_page": {
      "description": "Results per page (0-100, default 10). Use 0 with count to get only the total.",
      "type": "integer",
      "minimum": 0,
      "maximum": 100
    },
    "page": {
      "description": "Page number (1-based). Past 10,000 results, filter by since_created_at instead.",
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢enchant_list_customers(contact_type, contact_value, since_created_at, per_page, page, ...)

List customers, or find one by contact: set contact_type and contact_value (for example email + an address). Enchant REST: GET /customers.

输入模式

{
  "type": "object",
  "properties": {
    "contact_type": {
      "description": "Contact type to match (use with contact_value).",
      "type": "string",
      "enum": [
        "email",
        "twitter",
        "phone"
      ]
    },
    "contact_value": {
      "description": "Email address or Twitter screen name to match (use with contact_type).",
      "type": "string"
    },
    "since_created_at": {
      "description": "Only customers created since this UTC ISO 8601 time.",
      "type": "string"
    },
    "per_page": {
      "description": "Results per page (0-100, default 10). Use 0 with count to get only the total.",
      "type": "integer",
      "minimum": 0,
      "maximum": 100
    },
    "page": {
      "description": "Page number (1-based). Past 10,000 results, filter by since_created_at instead.",
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "count": {
      "description": "If true, also return the total number of matching results (costs 1 extra rate-limit credit).",
      "type": "boolean"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢enchant_get_customer(id)

Get one customer by id, with the contacts (emails, phones, Twitter names). Enchant REST: GET /customers/{id}.

输入模式

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Customer id."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢enchant_get_attachment(id)

Get the metadata of an attachment (name, size, MIME type) by id; attachment ids appear in ticket messages. Enchant REST: GET /attachments/{id}.

输入模式

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Attachment id."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴enchant_create_ticket(subject, customer_id, customer, body, user_id, ...)

WRITE: create an email ticket. Give customer_id, or a customer (matched by contact email, created if new). Optionally add the customer's first message with body (needs the customer's email). Enchant REST: POST /tickets.

输入模式

{
  "type": "object",
  "properties": {
    "subject": {
      "type": "string",
      "minLength": 1,
      "description": "Ticket subject."
    },
    "customer_id": {
      "description": "Existing customer id. Give this or customer.",
      "type": "string"
    },
    "customer": {
      "description": "Customer to find or create, instead of customer_id.",
      "type": "object",
      "properties": {
        "first_name": {
          "type": "string"
        },
        "last_name": {
          "type": "string"
        },
        "email": {
          "description": "Email address; used to find or create the customer.",
          "type": "string"
        }
      }
    },
    "body": {
      "description": "First inbound message from the customer (plain text).",
      "type": "string"
    },
    "user_id": {
      "description": "User id to assign the ticket to.",
      "type": "string"
    },
    "inbox_id": {
      "description": "Inbox id (the default inbox if omitted).",
      "type": "string"
    }
  },
  "required": [
    "subject"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴enchant_update_ticket(id, state, user_id, inbox_id, subject, ...)

WRITE: change a ticket: state (open, hold, closed), assignee, inbox, subject, spam or trash (not both true). label_ids REPLACES all labels (empty array clears them); use enchant_add_ticket_labels to keep existing ones. Enchant REST: PATCH /tickets/{id}.

输入模式

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Ticket id."
    },
    "state": {
      "description": "New state.",
      "type": "string",
      "enum": [
        "open",
        "hold",
        "closed"
      ]
    },
    "user_id": {
      "description": "Assign to this user id; null unassigns the ticket.",
      "type": [
        "string",
        "null"
      ]
    },
    "inbox_id": {
      "description": "Move to this inbox id.",
      "type": "string"
    },
    "subject": {
      "description": "New subject.",
      "type": "string"
    },
    "label_ids": {
      "description": "The full new set of label ids (replaces existing labels).",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "spam": {
      "description": "Mark as spam. Cannot be true together with trash.",
      "type": "boolean"
    },
    "trash": {
      "description": "Send to trash. Cannot be true together with spam.",
      "type": "boolean"
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴enchant_add_ticket_labels(id, label_ids)

WRITE: add one or more labels to a ticket without changing its other labels. Enchant REST: PUT /tickets/{id}/labels/{label_ids}.

输入模式

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Ticket id."
    },
    "label_ids": {
      "minItems": 1,
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Label ids to add."
    }
  },
  "required": [
    "id",
    "label_ids"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴enchant_remove_ticket_labels(id, label_ids)

WRITE: remove one or more labels from a ticket; its other labels stay. Enchant REST: DELETE /tickets/{id}/labels/{label_ids}.

输入模式

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Ticket id."
    },
    "label_ids": {
      "minItems": 1,
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Label ids to remove."
    }
  },
  "required": [
    "id",
    "label_ids"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴enchant_reply_to_ticket(id, user_id, to, body, html, ...)

WRITE: send an outbound reply on a ticket. This SENDS A REAL EMAIL to the customer address in `to`. Use enchant_add_note for an internal note. Enchant REST: POST /tickets/{id}/messages (type reply, direction out).

输入模式

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Ticket id."
    },
    "user_id": {
      "type": "string",
      "description": "Id of the user (agent) the reply is sent as; see enchant_list_users."
    },
    "to": {
      "type": "string",
      "minLength": 1,
      "description": "Recipient address, normally the customer's email."
    },
    "body": {
      "type": "string",
      "minLength": 1,
      "description": "Reply body."
    },
    "html": {
      "description": "True if body is HTML (default false: plain text).",
      "type": "boolean"
    },
    "attachment_ids": {
      "description": "Ids of attachments already uploaded.",
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "id",
    "user_id",
    "to",
    "body"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴enchant_add_note(id, user_id, body, html, attachment_ids)

WRITE: add an internal note to a ticket (not sent to the customer). Enchant REST: POST /tickets/{id}/messages (type note).

输入模式

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Ticket id."
    },
    "user_id": {
      "type": "string",
      "description": "Id of the user (agent) the note is from; see enchant_list_users."
    },
    "body": {
      "type": "string",
      "minLength": 1,
      "description": "Note body."
    },
    "html": {
      "description": "True if body is HTML (default false: plain text).",
      "type": "boolean"
    },
    "attachment_ids": {
      "description": "Ids of attachments already uploaded.",
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "id",
    "user_id",
    "body"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴enchant_create_customer(first_name, last_name, summary, contacts)

WRITE: create a customer with optional contacts (email, twitter, phone). Enchant REST: POST /customers.

输入模式

{
  "type": "object",
  "properties": {
    "first_name": {
      "type": "string"
    },
    "last_name": {
      "type": "string"
    },
    "summary": {
      "description": "Short free-text summary shown on the customer profile.",
      "type": "string"
    },
    "contacts": {
      "description": "Contacts of the customer.",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "email",
              "twitter",
              "phone"
            ],
            "description": "Contact type."
          },
          "value": {
            "type": "string",
            "minLength": 1,
            "description": "Email address, Twitter screen name or phone number."
          }
        },
        "required": [
          "type",
          "value"
        ]
      }
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴enchant_update_customer(id, first_name, last_name, summary, contacts)

WRITE: update a customer's name or summary. If `contacts` is given, it REPLACES the contact list; use enchant_add_customer_contact to add one. Enchant REST: PATCH /customers/{id}.

输入模式

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Customer id."
    },
    "first_name": {
      "type": "string"
    },
    "last_name": {
      "type": "string"
    },
    "summary": {
      "description": "Short free-text summary shown on the customer profile.",
      "type": "string"
    },
    "contacts": {
      "description": "The full new contact list (replaces the existing one).",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "email",
              "twitter",
              "phone"
            ],
            "description": "Contact type."
          },
          "value": {
            "type": "string",
            "minLength": 1,
            "description": "Email address, Twitter screen name or phone number."
          }
        },
        "required": [
          "type",
          "value"
        ]
      }
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴enchant_add_customer_contact(id, type, value)

WRITE: add one contact (email, twitter or phone) to a customer. Enchant REST: POST /customers/{id}/contacts.

输入模式

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Customer id."
    },
    "type": {
      "type": "string",
      "enum": [
        "email",
        "twitter",
        "phone"
      ],
      "description": "Contact type."
    },
    "value": {
      "type": "string",
      "minLength": 1,
      "description": "Email address, Twitter screen name or phone number."
    }
  },
  "required": [
    "id",
    "type",
    "value"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴enchant_delete_customer_contact(id, contact_id)

WRITE, DELETES DATA: remove one contact from a customer. Enchant REST: DELETE /customers/{id}/contacts/{contact_id}.

输入模式

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Customer id."
    },
    "contact_id": {
      "type": "string",
      "description": "Contact id (from the customer's contacts)."
    }
  },
  "required": [
    "id",
    "contact_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

社区

评价此服务器

证据

最近观测

已验证未记录版本16 个工具