# Tiflux — how to use (mcp.ai)

Wrapper for the official Tiflux API v2 (help desk and service desk): tickets with replies to the requester, internal notes, attachments, stage and SLA history, time entries, clients and requesters, desks with stages, priorities and service catalog, knowledge base, contracts and billing and satisfaction reports. Read and write. Authenticated by the user's API Session token.

## Option A — via MCP (recommended)
Remote MCP endpoint (HTTP, streamable): `https://api.mcp.ai/p_tiflux?ms=1786693980000`
Add it as a custom/remote MCP connector in your client (Claude, Cursor, VS Code…), then authenticate when prompted. Once connected, ask the agent to use the server's tools (e.g. `tiflux_billings_history`).

## Option B — via direct REST API
Base URL: `https://api.mcp.ai/api/tiflux`
Auth: `Authorization: Bearer sk_live_…` — create a workspace API key at https://mcp.ai/settings/api-keys
Discover endpoints: `GET https://api.mcp.ai/api/tiflux/_endpoints`

### Endpoints
- `POST https://api.mcp.ai/api/tiflux/billings/history` — Histórico de faturamentos. Os pares de data são obrigatórios em conjunto: billing_start_date com billing_end_date, e due_start_date com due_end_date.
  - body: { offset?: integer, limit?: integer, billing_start_date?: string, billing_end_date?: string, due_start_date?: string, due_end_date?: string, client_id?: string, nfe_number?: string, ticket_number?: string, type?: string, client_ids?: string[] }
- `POST https://api.mcp.ai/api/tiflux/cancel/ticket` — Cancela um chamado, encerrando-o SEM tratá-lo como atendido (duplicado, aberto por engano, fora de escopo). Cancelados não contam como resolvidos nos relatórios. Para um chamado efetivamente resolvido
  - body: { ticket_number: string }
- `POST https://api.mcp.ai/api/tiflux/close/ticket` — Encerra um chamado, marcando-o como resolvido. Encerrar para o SLA e costuma disparar a pesquisa de satisfação para o solicitante. Para um chamado que não deveria ter sido aberto, use tiflux_cancel_ti
  - body: { ticket_number: string }
- `POST https://api.mcp.ai/api/tiflux/create/appointment` — Lança um apontamento de horas num chamado, em nome do usuário dono do token.
  - body: { ticket_number: string, date: string, init_time: string, end_time: string, description: string }
- `POST https://api.mcp.ai/api/tiflux/create/internal/communication` — Cria uma comunicação interna num chamado. É uma nota visível SÓ PARA A EQUIPE, o solicitante não recebe nem vê. Para falar com o solicitante use tiflux_create_ticket_answer.
  - body: { ticket_number: string, text: string, files?: object[] }
- `POST https://api.mcp.ai/api/tiflux/create/ticket` — Abre um novo chamado. Resolva desk_id e client_id antes com tiflux_list_desks e tiflux_list_clients. Identifique o solicitante por requestor_id, ou pelos campos requestor_name e requestor_email quando
  - body: { title: string, description: string, desk_id?: string, client_id?: string, priority_id?: string, status_id?: string, services_catalogs_item_id?: string, requestor_id?: string, requestor_name?: string, requestor_email?: string, requestor_telephone?: string, responsible_id?: string, followers?: string, parent_ticket_number?: string, files?: object[], desk_ids?: string[], client_ids?: string[], priority_ids?: string[], status_ids?: string[], services_catalogs_item_ids?: string[], requestor_ids?: string[], responsible_ids?: string[] }
- `POST https://api.mcp.ai/api/tiflux/create/ticket/answer` — Responde um chamado. Esta resposta É VISÍVEL PARA O SOLICITANTE e dispara notificação. Para uma nota que só a equipe vê, use tiflux_create_internal_communication.
  - body: { ticket_number: string, text: string, with_signature?: boolean, files?: object[] }
- `POST https://api.mcp.ai/api/tiflux/get/clients` — Detalha um ou vários clientes pelos ids, numa única chamada. Um id que falhar não derruba os demais.
  - body: { client_ids: string[] }
- `POST https://api.mcp.ai/api/tiflux/get/ticket/stages/slas` — Histórico de estágios e SLAs de um chamado (quando entrou em cada estágio e como ficou o SLA). Use para auditar cumprimento de prazo.
  - body: { ticket_number: string, offset?: integer, limit?: integer }
- `POST https://api.mcp.ai/api/tiflux/get/tickets` — Detalha um ou vários chamados pelos números, numa única chamada. Um chamado que falhar não derruba os demais: os erros vêm separados por número em errors[].
  - body: { ticket_numbers: string[], show_entities?: boolean, include_filled_entity?: boolean }
- `POST https://api.mcp.ai/api/tiflux/list/appointments` — Lista apontamentos de horas de toda a organização por período, atendente e mesa. É a base para relatório de horas trabalhadas e faturáveis.
  - body: { offset?: integer, limit?: integer, start_date?: string, end_date?: string, user_ids?: string[], desk_ids?: string[], include_valorization?: boolean }
- `POST https://api.mcp.ai/api/tiflux/list/clients` — Lista clientes da organização, com busca parcial por nome. Use para resolver o client_id exigido na abertura de chamado.
  - body: { offset?: integer, limit?: integer, name?: string, active?: boolean, social_revenue?: string }
- `POST https://api.mcp.ai/api/tiflux/list/contracts` — Lista os contratos de atendimento, com filtro por cliente, tipo e situação.
  - body: { offset?: integer, limit?: integer, client_ids?: string[], contract_type_ids?: string[], status?: string }
- `POST https://api.mcp.ai/api/tiflux/list/departments` — Lista os departamentos da organização. Um atendente não administrador vê só os do próprio grupo.
  - body: { offset?: integer, limit?: integer, name?: string }
- `POST https://api.mcp.ai/api/tiflux/list/desk/priorities` — Lista as prioridades configuradas numa mesa, com os respectivos SLAs.
  - body: { desk_id: string, offset?: integer, limit?: integer, desk_ids?: string[] }
- `POST https://api.mcp.ai/api/tiflux/list/desk/services/catalogs` — Lista os catálogos de serviços de uma mesa (a classificação do chamado).
  - body: { desk_id: string, offset?: integer, limit?: integer, desk_ids?: string[] }
- `POST https://api.mcp.ai/api/tiflux/list/desk/stages` — Lista os estágios (etapas do fluxo) de uma mesa. Use para descobrir o stage_id ao mover um chamado com tiflux_update_ticket.
  - body: { desk_id: string, offset?: integer, limit?: integer, desk_ids?: string[] }
- `POST https://api.mcp.ai/api/tiflux/list/desks` — Lista as mesas de atendimento, com busca parcial por nome. A mesa define os estágios, prioridades e catálogo de serviços disponíveis num chamado.
  - body: { offset?: integer, limit?: integer, name?: string, active?: boolean }
- `POST https://api.mcp.ai/api/tiflux/list/internal/communications` — Lista as comunicações internas de um chamado (notas visíveis só para a equipe, nunca para o solicitante).
  - body: { ticket_number: string, offset?: integer, limit?: integer }
- `POST https://api.mcp.ai/api/tiflux/list/knowledges` — Busca artigos da base de conhecimento por texto e por pasta. Use para achar o procedimento antes de responder um chamado.
  - body: { offset?: integer, limit?: integer, search?: string, knowledge_folder_ids?: string[] }
- `POST https://api.mcp.ai/api/tiflux/list/requestors` — Busca solicitantes por nome, e-mail ou telefone. Devolve o requestor_id correto para abrir chamado, e não exige perfil de administrador.
  - body: { offset?: integer, limit?: integer, name?: string, email?: string, telephone?: string, can_open_ticket?: boolean }
- `POST https://api.mcp.ai/api/tiflux/list/technical/groups` — Lista os grupos de atendentes da organização.
  - body: { offset?: integer, limit?: integer }
- `POST https://api.mcp.ai/api/tiflux/list/technical/users` — Lista os atendentes, com filtro por nome, e-mail, mesa ou cliente. Use para resolver o responsible_id ao atribuir um chamado.
  - body: { offset?: integer, limit?: integer, name?: string, email?: string, desk_id?: string, client_id?: string, desk_ids?: string[], client_ids?: string[] }
- `POST https://api.mcp.ai/api/tiflux/list/ticket/answers` — Lista as respostas (comunicações visíveis ao solicitante) de um chamado.
  - body: { ticket_number: string, offset?: integer, limit?: integer }
- `POST https://api.mcp.ai/api/tiflux/list/ticket/appointments` — Lista os apontamentos de horas de um chamado.
  - body: { ticket_number: string, offset?: integer, limit?: integer, user_id?: string, start_date?: string, end_date?: string, user_ids?: string[] }
- `POST https://api.mcp.ai/api/tiflux/list/ticket/files` — Lista os arquivos anexados a um chamado.
  - body: { ticket_number: string, offset?: integer, limit?: integer }
- `POST https://api.mcp.ai/api/tiflux/list/tickets` — Lista chamados com filtros (situação, mesa, cliente, estágio, responsável, solicitante, período, SLA a vencer). Devolve total_items com o total real do filtro, use-o antes de concluir qualquer contage
  - body: { offset?: integer, limit?: integer, filter_by?: string, desk_ids?: string[], client_ids?: string[], stage_ids?: string[], responsible_ids?: string[], requestor_ids?: string[], priority_ids?: string[], services_catalogs_item_ids?: string[], requestor_email?: string, date_type?: string, start_datetime?: string, end_datetime?: string, sla_expiring_before?: string, group_by?: string }
- `POST https://api.mcp.ai/api/tiflux/me` — Dados do usuário dono do token (nome, e-mail, perfil, feature flags). Use para confirmar em nome de quem as ações serão registradas e qual o escopo de permissão da chave.
- `POST https://api.mcp.ai/api/tiflux/tickets/feedback/report` — Relatório de satisfação (feedback) dos chamados por período, com recorte por responsável, departamento ou grupo de atendentes.
  - body: { offset?: integer, limit?: integer, start_date?: string, end_date?: string, tickets_list?: boolean, responsible_ids?: string[], department_ids?: string[], technical_group_ids?: string[] }
- `POST https://api.mcp.ai/api/tiflux/update/ticket` — Atualiza um chamado existente. Envie só os campos a alterar. Para mover de estágio use stage_id, para transferir de responsável use responsible_id.
  - body: { ticket_number: string, title?: string, description?: string, client_id?: string, desk_id?: string, priority_id?: string, priority_change_reason?: string, status_id?: string, stage_id?: string, services_catalogs_item_id?: string, requestor_id?: string, responsible_id?: string, followers?: string, client_ids?: string[], desk_ids?: string[], priority_ids?: string[], status_ids?: string[], stage_ids?: string[], services_catalogs_item_ids?: string[], requestor_ids?: string[], responsible_ids?: string[] }

## Example prompts
- "List open tickets whose SLA expires in the next 4 hours"
- "Open a ticket on the Support desk for client X about the printer being down"
- "Reply to ticket 1234 saying the fix was applied and close it"
- "How many hours were logged per agent last month"

## More
- Page: https://mcp.ai/tiflux
- Agent spec (llms.txt): https://mcp.ai/tiflux/llms.txt
- Postman collection: https://mcp.ai/tiflux/postman.json
