Vision Helpdesk MCP by usefulapi

Triage Vision Helpdesk tickets, read conversations, find clients and manage internal handoffs.

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
88%
Integridad del esquema
95%
Calidad de los nombres
80%
Riesgo de envenenamiento
100%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Hallazgos (1)

  • LOWTool 'vision_get_ticket' description lacks action verben vision_get_ticket

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~4,065Tokens (definiciones de herramientas)
~1.6 KBTamaño de respuesta típico
Impacto significativo en la atención (3.18% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

{
  "mcpServers": {
    "vision-helpdesk": {
      "url": "https://vision-helpdesk.usefulapi.io/mcp"
    }
  }
}

Puntos de conexión remotos

https://vision-helpdesk.usefulapi.io/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (19)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢vision_get_dashboard_counts

The ticket counts of the staff dashboard (quick view): for example new, open, overdue and assigned tickets. ticket / quick_view.

Esquema de entrada

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

Esquema de entrada

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

Esquema de entrada

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

Esquema de entrada

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

Esquema de entrada

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

Esquema de entrada

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

Esquema de entrada

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

Esquema de entrada

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

Esquema de entrada

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

Esquema de entrada

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

Esquema de entrada

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

Esquema de entrada

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

Esquema de entrada

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

Esquema de entrada

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

Esquema de entrada

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

Esquema de entrada

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

Esquema de entrada

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

Esquema de entrada

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

Esquema de entrada

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

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada19 herramientas