Enchant MCP by usefulapi
Work with Enchant help desk tickets: list, read, reply, add notes and labels, manage customers.
使うべきか
品質と安全性
検出事項(1)
- LOWenchant_delete_customer_contact 内
ツール定義とプロトコルへの準拠に関する自動分析に基づいています。
コンテキストコスト
これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。
インストール
ワンクリックインストール
これを `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"
}コミュニティ
エビデンス