Vision Helpdesk MCP by usefulapi
Triage Vision Helpdesk tickets, read conversations, find clients and manage internal handoffs.
使うべきか
品質と安全性
検出事項(1)
- LOWvision_get_ticket 内
ツール定義とプロトコルへの準拠に関する自動分析に基づいています。
コンテキストコスト
これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。
インストール
ワンクリックインストール
これを `claude_desktop_config.json` ファイルに追加してください:
{
"mcpServers": {
"vision-helpdesk": {
"url": "https://vision-helpdesk.usefulapi.io/mcp"
}
}
}リモートエンドポイント
https://vision-helpdesk.usefulapi.io/mcpstreamable-httpできること
ツール一覧
ツール(19)
🟢vision_get_dashboard_counts
The ticket counts of the staff dashboard (quick view): for example new, open, overdue and assigned tickets. ticket / quick_view.
入力スキーマ
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢vision_list_tickets(ticket_id, status_id, department_id, folder, include_count, ...)
List tickets, with at most ONE filter: a ticket id, a status id, a department id or a folder (inbox, new, overdue, assigned, trash, spam, draft). Without a filter it lists the tickets the API user can see. Status ids come from vision_list_statuses. ticket / get_tickets.
入力スキーマ
{
"type": "object",
"properties": {
"ticket_id": {
"description": "Only this ticket.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"status_id": {
"description": "Only tickets with this status id (vision_list_statuses).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"department_id": {
"description": "Only tickets of this department id.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"folder": {
"description": "A ticket folder.",
"type": "string",
"enum": [
"inbox",
"new",
"overdue",
"assigned",
"trash",
"spam",
"draft"
]
},
"include_count": {
"description": "Also ask for the total count.",
"type": "boolean"
},
"offset": {
"description": "How many results to skip (default 0), for the next page.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
},
"limit": {
"description": "How many results to return, 1-100 (default 25).",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢vision_search_tickets(ticket_hash, subject, offset, limit)
Find tickets by an EXACT ticket reference (the ticket hash such as VHD-218) or an EXACT subject. Give one of them. ticket / get_tickets with a filter on ticket_hash or subject.
入力スキーマ
{
"type": "object",
"properties": {
"ticket_hash": {
"description": "The ticket reference, for example VHD-218.",
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,40}$"
},
"subject": {
"description": "The exact ticket subject.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"offset": {
"description": "How many results to skip (default 0), for the next page.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
},
"limit": {
"description": "How many results to return, 1-100 (default 25).",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢vision_get_ticket(ticket_id)
One ticket with its fields (status, owner, priority, department...) and its posts (the conversation). ticket / ticket_details.
入力スキーマ
{
"type": "object",
"properties": {
"ticket_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Ticket id (the number, not the reference)."
}
},
"required": [
"ticket_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢vision_list_tickets_by_tag(tag_id)
Tickets that carry a tag, by tag id. ticket / tag_search.
入力スキーマ
{
"type": "object",
"properties": {
"tag_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Tag id."
}
},
"required": [
"tag_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢vision_list_tickets_by_label(label_id)
Tickets that carry a label, by label id. ticket / search_label_tickets.
入力スキーマ
{
"type": "object",
"properties": {
"label_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Label id."
}
},
"required": [
"label_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢vision_list_statuses(department_id)
The ticket statuses of a department (ids and names), for filters and status changes. ticket / get_status.
入力スキーマ
{
"type": "object",
"properties": {
"department_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Department id (statuses are per department)."
}
},
"required": [
"department_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢vision_list_priorities(department_id)
The ticket priorities of a department (ids and names). ticket / get_priority.
入力スキーマ
{
"type": "object",
"properties": {
"department_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Department id."
}
},
"required": [
"department_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢vision_list_ticket_types(department_id)
The ticket types of a department (ids and names). ticket / get_ticket_type.
入力スキーマ
{
"type": "object",
"properties": {
"department_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Department id."
}
},
"required": [
"department_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢vision_list_clients(client_id, first_name, parent_id, include_count, offset, ...)
List clients (customers), with at most ONE filter: a client id, a first name (exact), or a parent client id (lists that client's contacts). client / get_clients.
入力スキーマ
{
"type": "object",
"properties": {
"client_id": {
"description": "Only this client.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"first_name": {
"description": "Clients with exactly this first name.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"parent_id": {
"description": "The contacts of this client.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"include_count": {
"description": "Also ask for the total count.",
"type": "boolean"
},
"offset": {
"description": "How many results to skip (default 0), for the next page.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
},
"limit": {
"description": "How many clients to return, 1-200 (default 50). The helpdesk returns the whole list; it is cut here.",
"type": "integer",
"minimum": 1,
"maximum": 200
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢vision_search_clients(text, offset, limit)
Search clients by name or email text. client / list_clients.
入力スキーマ
{
"type": "object",
"properties": {
"text": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Part of a client name or email address."
},
"offset": {
"description": "How many results to skip (default 0), for the next page.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
},
"limit": {
"description": "How many clients to return, 1-200 (default 50).",
"type": "integer",
"minimum": 1,
"maximum": 200
}
},
"required": [
"text"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢vision_get_client_summary(client_id)
A client's summary: notes and ticket counts. client / get_summary.
入力スキーマ
{
"type": "object",
"properties": {
"client_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Client id."
}
},
"required": [
"client_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴vision_create_ticket(confirm, domain_id, department_id, status_id, priority_id, ...)
WRITE: confirm:true required. open a new ticket for a client, given by client id or email. By default no email and no autoresponder is sent; a normal ticket's first post is created on behalf of the client and shown to the client. Internal tickets are staff-only and cannot have client recipients or email enabled. Look up the department, status, priority and type ids first (vision_list_statuses, vision_list_priorities, vision_list_ticket_types). ticket / open_new_ticket.
入力スキーマ
{
"type": "object",
"properties": {
"confirm": {
"type": "boolean",
"const": true,
"description": "Required: confirm the exact change and any client-visible or email effects before setting true."
},
"domain_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Domain id the ticket is opened under (1 on a single-domain helpdesk)."
},
"department_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Department id."
},
"status_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Status id."
},
"priority_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Priority id."
},
"type_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Ticket type id."
},
"subject": {
"type": "string",
"minLength": 1,
"maxLength": 250,
"description": "Ticket subject."
},
"message": {
"type": "string",
"minLength": 1,
"maxLength": 50000,
"description": "The first post (HTML allowed)."
},
"from": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"pattern": "^[^\\r\\n]+$",
"description": "The from address shown on the post, for example [email protected]."
},
"client_id": {
"description": "The client the ticket is for. Give this or client_email (not needed for an internal ticket).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"client_email": {
"description": "A valid client email address. Give this or client_id.",
"type": "string",
"maxLength": 254,
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"cc": {
"description": "CC email addresses.",
"type": "string",
"maxLength": 500
},
"owner_ids": {
"description": "Staff ids that own the ticket.",
"maxItems": 20,
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"send_autoresponder": {
"description": "Send the autoresponder email to the client (default false).",
"type": "boolean"
},
"send_email": {
"description": "Send the post by email to the client (default false).",
"type": "boolean"
},
"visible_to_client": {
"description": "Show the first post to the client (default true).",
"type": "boolean"
},
"as_client": {
"description": "true (default): the post is the client's own; false: it is a staff reply.",
"type": "boolean"
},
"internal": {
"description": "An internal ticket (default false).",
"type": "boolean"
}
},
"required": [
"confirm",
"domain_id",
"department_id",
"status_id",
"priority_id",
"type_id",
"subject",
"message",
"from"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴vision_reply_to_ticket(confirm, ticket_id, message, from, visible_to_client, ...)
WRITE: confirm:true required. add a staff reply to a ticket. Say explicitly whether the client can see it (visible_to_client) and whether it is emailed to the client (send_email, default false). ticket / reply_ticket.
入力スキーマ
{
"type": "object",
"properties": {
"confirm": {
"type": "boolean",
"const": true,
"description": "Required: confirm the exact change and any client-visible or email effects before setting true."
},
"ticket_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Ticket id."
},
"message": {
"type": "string",
"minLength": 1,
"maxLength": 50000,
"description": "The reply text (HTML allowed)."
},
"from": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"pattern": "^[^\\r\\n]+$",
"description": "The sender name or address shown on the reply."
},
"visible_to_client": {
"type": "boolean",
"description": "true: the client can see the reply; false: staff only."
},
"send_email": {
"description": "Email the reply to the client (default false).",
"type": "boolean"
}
},
"required": [
"confirm",
"ticket_id",
"message",
"from",
"visible_to_client"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴vision_add_ticket_note(confirm, ticket_id, note)
WRITE: confirm:true required. add an internal note to a ticket (not shown to the client). ticket / add_note with notetype 0.
入力スキーマ
{
"type": "object",
"properties": {
"confirm": {
"type": "boolean",
"const": true,
"description": "Required: confirm the exact change and any client-visible or email effects before setting true."
},
"ticket_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Ticket id."
},
"note": {
"type": "string",
"minLength": 1,
"maxLength": 20000,
"description": "The note text."
}
},
"required": [
"confirm",
"ticket_id",
"note"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴vision_add_client_note(confirm, client_id, note)
WRITE: confirm:true required. add an internal note to a client record. ticket / add_note with notetype 1.
入力スキーマ
{
"type": "object",
"properties": {
"confirm": {
"type": "boolean",
"const": true,
"description": "Required: confirm the exact change and any client-visible or email effects before setting true."
},
"client_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Client id."
},
"note": {
"type": "string",
"minLength": 1,
"maxLength": 20000,
"description": "The note text."
}
},
"required": [
"confirm",
"client_id",
"note"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴vision_update_ticket_property(confirm, ticket_id, property, value_id)
WRITE: confirm:true required. change one property of a ticket to another id: status, priority, department or type. Look the ids up first (vision_list_statuses and the like). Changing the department can change which statuses and priorities apply. ticket / update_properties.
入力スキーマ
{
"type": "object",
"properties": {
"confirm": {
"type": "boolean",
"const": true,
"description": "Required: confirm the exact change and any client-visible or email effects before setting true."
},
"ticket_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Ticket id."
},
"property": {
"type": "string",
"enum": [
"status",
"priority",
"department",
"type"
],
"description": "What to change."
},
"value_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The id of the new status, priority, department or type."
}
},
"required": [
"confirm",
"ticket_id",
"property",
"value_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴vision_assign_ticket_staff(confirm, ticket_id, staff_id, action)
WRITE: confirm:true required. add a staff member as an owner of a ticket, or remove one. ticket / update_properties with action staff.
入力スキーマ
{
"type": "object",
"properties": {
"confirm": {
"type": "boolean",
"const": true,
"description": "Required: confirm the exact change and any client-visible or email effects before setting true."
},
"ticket_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Ticket id."
},
"staff_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Staff id."
},
"action": {
"type": "string",
"enum": [
"assign",
"unassign"
],
"description": "assign or unassign."
}
},
"required": [
"confirm",
"ticket_id",
"staff_id",
"action"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴vision_add_ticket_tag(confirm, ticket_id, tag)
WRITE: confirm:true required. add a tag (by title) to a ticket. ticket / add_live_tag.
入力スキーマ
{
"type": "object",
"properties": {
"confirm": {
"type": "boolean",
"const": true,
"description": "Required: confirm the exact change and any client-visible or email effects before setting true."
},
"ticket_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Ticket id."
},
"tag": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "The tag title."
}
},
"required": [
"confirm",
"ticket_id",
"tag"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}コミュニティ
エビデンス