Enchant MCP by usefulapi

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

Sollte ich dies verwenden

Qualität und Sicherheit

A
Qualität der Beschreibung
95%
Vollständigkeit des Schemas
96%
Qualität der Benennung
79%
Risiko der Vergiftung
100%
Übereinstimmung der Berechtigungen
100%
Einhaltung des Protokolls
100%

Befunde (1)

  • LOWTool 'enchant_delete_customer_contact' name length outside 3-30 rangein enchant_delete_customer_contact

Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.

Kontextkosten

~3,246Tokens (Tool-Definitionen)
~1.7 KBTypische Antwortgröße
Erhebliche Auswirkung auf die Aufmerksamkeit (2.54% von 128k Kontext)

Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.

Installieren

Installation mit einem Klick

Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:

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

Remote-Endpunkte

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

Was es kann

Tool-Inventar

Tools (16)

🟢 Nur lesen🟡 Schreiben🔴 Löschen⚪ Unbekannt
🟢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.

Eingabe-Schema

{
  "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}.

Eingabe-Schema

{
  "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.

Eingabe-Schema

{
  "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.

Eingabe-Schema

{
  "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}.

Eingabe-Schema

{
  "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}.

Eingabe-Schema

{
  "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.

Eingabe-Schema

{
  "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}.

Eingabe-Schema

{
  "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}.

Eingabe-Schema

{
  "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}.

Eingabe-Schema

{
  "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).

Eingabe-Schema

{
  "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).

Eingabe-Schema

{
  "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.

Eingabe-Schema

{
  "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}.

Eingabe-Schema

{
  "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.

Eingabe-Schema

{
  "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}.

Eingabe-Schema

{
  "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"
}

Community

Diesen Server bewerten

Nachweis

Aktuelle Beobachtungen

verifiziertVersion nicht aufgezeichnet16 Tools