@lionchat/mcp-server 1.11.0 → 1.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -353,7 +353,10 @@ Antes de escolher a ferramenta, cheque se a intenção bate com a coluna da dire
|
|
|
353
353
|
| Intenção do usuário | Tool certa | Cuidado |
|
|
354
354
|
|---|---|---|
|
|
355
355
|
| Listar / ver não lidas | `lionchat_conversations_list` (`conversation_type: 'unread'`) ou `lionchat_conversations_meta` | NÃO use `lionchat_conversations_unread` — é AÇÃO DE ESCRITA (marca como não-lida) |
|
|
356
|
-
|
|
|
356
|
+
| Achar a conversa **de uma pessoa/empresa** (nome, telefone, e-mail, CPF/CNPJ, nº da conversa) | `lionchat_search_list` (`/search/conversations`) ou `lionchat_contacts_search` | RÁPIDO. **NÃO use `lionchat_conversations_search`**: apesar do nome, ele é o legado que procura dentro das mensagens e leva **15 a 22 s** (medido em produção 11/08). O sufixo `_list` aqui é histórico — `lionchat_search_list*` **são buscas**, não listagens; a regra "não baixe tudo com `*_list`" vale para `lionchat_<recurso>_list` |
|
|
357
|
+
| Achar **onde foi dito** algo (palavra dentro da conversa) | `lionchat_search_list_2` (`/search/messages`) | RÁPIDO: índice trigram próprio e teto de tempo em duas fases (2 s / 14 s). É a substituta certa do `lionchat_conversations_search` |
|
|
358
|
+
| Não sei se o termo é nome de alguém ou algo dito no papo | `lionchat_search_search` (`/search`) | Cobre os dois numa chamada. Opção mais segura quando a intenção é ambígua |
|
|
359
|
+
| (qualquer busca) termo com menos de 3 caracteres | — | Volta **vazio de propósito** em todas as buscas. Vazio ≠ "não existe": quer dizer que a busca não rodou. Refaça com 3+ caracteres. Só-dígitos é isento nas rotas `/search/*`, mas **não** no `lionchat_conversations_search` legado |
|
|
357
360
|
| Só a contagem / números | `lionchat_conversations_meta` / `lionchat_reports_summary` | Não liste o conteúdo completo |
|
|
358
361
|
| Criar contato | `lionchat_contacts_create` base (path `/contacts`) | NÃO use as variantes `_1` … `_9` |
|
|
359
362
|
| Pausar a IA agora (botão de pânico) | `lionchat_captain_assistants_update` (`paused: true`, top-level) | — |
|
|
@@ -374,11 +377,13 @@ Antes de escolher a ferramenta, cheque se a intenção bate com a coluna da dire
|
|
|
374
377
|
| **Definir supervisor** de caixa | `lionchat_inbox_members_create` / `_update` com `supervisor_ids[]` | Supervisor vê TUDO da caixa mas fica fora do rodízio (ver abaixo) |
|
|
375
378
|
| **Definir supervisor** de time | `lionchat_team_members_create` / `_update` com `supervisor_ids[]` | Contrato diferente do da caixa: `user_ids[]` é a lista COMPLETA e `supervisor_ids[]` um subconjunto dela. Omitir `supervisor_ids` não mexe em papel nenhum (seção 2) |
|
|
376
379
|
| **Mudar a fila do time** (teto por atendente, janela, online/offline) | `lionchat_teams_update` (`assignment_mode`, `fair_distribution_limit`, `fair_distribution_window`) | Time tem PREFERÊNCIA sobre a caixa na distribuição. Leia a config atual antes de mudar (ver `lionchat://docs/conversation-flows`) |
|
|
380
|
+
| **Mudar o modo de distribuição do time** (Rodízio × Equilibrado) | `lionchat_teams_update` (`assignment_order`: `round_robin` \| `balanced`) | **`null` é valor válido e significa "o time não escolheu"** — a decisão herda da política da caixa, depois do `auto_assignment_config` da caixa, e por fim rodízio. NUNCA gravar `round_robin` só para "preencher": isso rebaixa em silêncio uma caixa que roda Equilibrado por política. `balanced` exige o recurso `advanced_assignment` na conta |
|
|
381
|
+
| **Mudar o modo de distribuição da caixa** (Rodízio × Equilibrado) | `lionchat_inboxes_update` (`auto_assignment_config.assignment_order`) | Só vale quando a caixa NÃO tem política vinculada (com política, a política manda). O jsonb é SUBSTITUÍDO, não mesclado: releia o `auto_assignment_config` atual e reenvie as outras chaves junto, senão apaga o `assign_offline_agents` e o freio |
|
|
377
382
|
| **Criar/atualizar time** | `lionchat_teams_create` / `_update` | **Preencha `description`**: desde 03/08 é ela que o AI Agente lê pra decidir o roteamento por time. Descreva QUANDO mandar pra lá, não o que o time é |
|
|
378
383
|
| **Pausar a automação no meio** (esperar atribuição/card antes da próxima ação) | ação `wait` em `lionchat_automation_rules_create` / `_update` | Segundos, teto 300. Acima disso é caso de FlowBuilder. Ver `lionchat://docs/conversation-flows` |
|
|
379
384
|
| **Buscar contato/conversa/card** | `lionchat_search_*`, `lionchat_contacts_search` | **Termo com letra exige 3+ caracteres** (dígito é isento). Menos que isso volta VAZIO sem erro — não conclua que o registro não existe. Ver `lionchat://docs/api-conventions` |
|
|
380
385
|
| **Migrar conversas** de uma caixa WhatsApp pra outra (ex.: QR Code → Oficial) | `lionchat_inboxes_inbox_migration_list` (prévia) → `_execute` → acompanhar status | Admin-only e IRREVERSÍVEL: sempre mostre os números da prévia e confirme (seção 7a). Grupos não vão pro canal oficial — ficam na caixa de origem |
|
|
381
|
-
| Qualquer coisa de Ligação WP (Wavoip) | **
|
|
386
|
+
| Qualquer coisa de Ligação WP (Wavoip) | **INTEGRAÇÃO REMOVIDA em 12/08/2026** — não há tool nem tela | A Wavoip saiu do produto: a aba "Ligação WP" **não existe mais**. NUNCA orientar o usuário a "Configurações da caixa → Ligação WP". Para voz em caixa QR Code, o caminho hoje é o **LionCalls**. As ligações antigas seguem no histórico (`provider: "wavoip"`); as gravações delas ficavam no servidor da Wavoip e vão sumir — ao tentar ouvir, o painel mostra "Esta gravação não está mais disponível", e isso é esperado, não é defeito. |
|
|
382
387
|
| Restringir agendas que a IA oferece | `lionchat_captain_assistants_update` (`config.booking_event_type_ids: [Int]`) | binding de agenda por cenário NÃO é settable via API |
|
|
383
388
|
| Configurar o Copiloto (modelo/temperatura/prompt base) | `lionchat_copilot_settings_update` | admin-only; copiloto tem motor próprio (padrão temp 0.3) |
|
|
384
389
|
| **Resetar/testar do zero a IA** numa conversa | `lionchat_conversations_captain_history_reset` (POST, sem body) | Cria pílula de marco na conversa; a partir dali TODA leitura autônoma da IA (respostas, resumo, follow-up) considera só mensagens pós-marco. Não apaga nada; o atendente segue vendo tudo. Enterprise-only |
|
|
@@ -522,12 +522,10 @@ WhatsappCall (Ligação WhatsApp — enterprise, voz via Cloud API)
|
|
|
522
522
|
├── custom_name (observação) / favorited (bool)
|
|
523
523
|
└── transcript / transcript_status (pending/processing/completed/failed — IA da conta)
|
|
524
524
|
|
|
525
|
-
WavoipSetting
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
└── NAO ha tool pra ler nem escrever isto. Ligação WP e contratada/configurada MANUALMENTE pelo
|
|
530
|
-
cliente no painel. Aqui so pra voce entender o modelo — nao tente operar.
|
|
525
|
+
WavoipSetting — TABELA REMOVIDA em 13/08/2026 (integração Wavoip encerrada; último uso 30/07)
|
|
526
|
+
└── Não existe mais modelo, tabela, tela nem rota. Ligações ANTIGAS do Wavoip continuam no
|
|
527
|
+
histórico (CallLog com provider "wavoip"), com quem ligou, quando e quanto durou; as gravações
|
|
528
|
+
ficavam no servidor da Wavoip e vão sumir. Para voz em caixa QR Code hoje: LionCalls.
|
|
531
529
|
|
|
532
530
|
ContactDocument (aba Documentos do contato, 2026-06-11)
|
|
533
531
|
├── 3 fontes agregadas: upload direto + espelho dos cards Kanban + espelho das conversas (só image/file)
|
|
@@ -114,6 +114,20 @@ stage_id/inbox_id/sort_by/sort_direction/page foram REMOVIDOS, eram ignorados pe
|
|
|
114
114
|
responde "o que se mexeu essa semana". Pontas independentes, e os dois períodos podem ser combinados.
|
|
115
115
|
Nuance ao explicar pro usuário: card criado ontem que nunca se moveu TAMBÉM entra (ele entrou na
|
|
116
116
|
etapa ao nascer) — o que o filtro separa de verdade é o card VELHO que se moveu.
|
|
117
|
+
- `updated_date_start`/`updated_date_end` (2026-08-13) — **última alteração no card**
|
|
118
|
+
(`updated_at`). Pega QUALQUER mexida: mover, trocar etapa, etiqueta, valor, nota, anexo, marcar
|
|
119
|
+
ganho/perdido. É o "o que teve alguma ação no período", independentemente de qual ação foi.
|
|
120
|
+
Medido em 13/08: 97,7% das escritas correspondem a uma atividade visível no histórico do card.
|
|
121
|
+
- `closed_date_start`/`closed_date_end` (2026-08-13) — **data do DESFECHO** (quando o card foi
|
|
122
|
+
marcado como Ganho ou Perdido). É o que responde *"quantos ganhos eu dei no mês passado"*, e é
|
|
123
|
+
a régua `closed` do `Kanban::DateBasis` — a MESMA da página Relatórios > Kanban, então os dois
|
|
124
|
+
batem. Use junto de `statuses: ['won']` para ver só os ganhos.
|
|
125
|
+
**NÃO confundir com as outras três datas:** um negócio pode ter nascido em janeiro
|
|
126
|
+
(`date_*`), estar parado na mesma etapa desde março (`stage_date_*`), ter sido editado ontem
|
|
127
|
+
(`updated_date_*`) e ter sido GANHO em julho (`closed_date_*`). Só este último responde à
|
|
128
|
+
pergunta de fechamento. Pontas independentes; combinável com os demais períodos.
|
|
129
|
+
Nuance: card cujo desfecho nunca foi carimbado cai na data da última alteração (é o 3º ramo da
|
|
130
|
+
régua, e continua valendo para card importado por planilha, que nasce fechado sem data).
|
|
117
131
|
- `scheduled_date_start`/`scheduled_date_end` (agendamento: scheduled_at/deadline_at do card E
|
|
118
132
|
tarefas da agenda vinculadas)
|
|
119
133
|
- `task_filter`: has_task | no_task | today | tomorrow | this_week | overdue
|
|
@@ -404,32 +404,35 @@ Campos MUTÁVEIS (atualizáveis livremente por IA/integração): `marital_status
|
|
|
404
404
|
|
|
405
405
|
| Sistema | O que é | Tools | Canal |
|
|
406
406
|
|---|---|---|---|
|
|
407
|
-
| **Ligação WP (Wavoip)** | Voz pelo WhatsApp em caixa **QR Code/WAHA** — QR conecta um "device" Wavoip (pago, por caixa); widget de discagem, gravação e transcrição automática | **NENHUMA — sem tool no MCP** (ver nota abaixo) | WhatsApp QR Code |
|
|
408
407
|
| **LionCalls** | Voz pelo WhatsApp em caixa **QR Code**, mas pelo **motor próprio do LionChat** (credencial global, 1 sessão por caixa; flag `lioncalls_calling`, nasce desligada e é ligada conta a conta) | **NENHUMA — sem tool no MCP** | WhatsApp QR Code |
|
|
409
408
|
| **WhatsApp Calling (Cloud)** | Voz pelo WhatsApp na **API oficial** (enterprise) | `whatsapp_calls_*` + enable/disable_whatsapp_calling | WhatsApp oficial |
|
|
410
409
|
| **VoIP (Zenvia)** | Telefonia COMUM com softphone no navegador (ramais, saldo, recarga) | `voip_*` | Telefone |
|
|
411
410
|
| **VTCall** | Telefonia por **PABX click-to-call**, config por conta + ramal por atendente; **sem softphone no navegador** — o atendente fala pelo app/ramal do VTCall | `vtcall_settings_*` (show/update/test_connection), `vtcall_ramals_*` (list/create/destroy) | Telefone (PABX do cliente) |
|
|
412
411
|
|
|
413
|
-
Quando o usuário falar "ligação", descubra o canal ANTES de responder: caixa QR Code →
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
**Wavoip —
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
`
|
|
432
|
-
|
|
412
|
+
Quando o usuário falar "ligação", descubra o canal ANTES de responder: caixa QR Code → **LionCalls**;
|
|
413
|
+
caixa oficial → `whatsapp_calls`; telefone/ramal → Zenvia (softphone) ou VTCall (PABX).
|
|
414
|
+
|
|
415
|
+
**Histórico é compartilhado.** LionCalls, Zenvia e VTCall gravam na MESMA tabela de ligações, então
|
|
416
|
+
`voip_calls_list` (`/voip/calls`) devolve as três juntas — mesmo as que não têm tool própria. Só o
|
|
417
|
+
WhatsApp Calling (Cloud) fica fora, em `whatsapp_calls_*`. Ligações antigas do **Wavoip** (integração
|
|
418
|
+
encerrada em 30/07/2026) continuam aparecendo nesse histórico, com `provider: "wavoip"`.
|
|
419
|
+
|
|
420
|
+
**Wavoip — INTEGRAÇÃO REMOVIDA (12/08/2026).** O vínculo com a Wavoip acabou; o último uso real foi
|
|
421
|
+
em 30/07/2026. Saíram do produto: a aba "Ligação WP" da caixa, o discador, o Super Admin, as rotas,
|
|
422
|
+
os webhooks, as tarefas automáticas e a tabela. As 8 tools `wavoip_*` já haviam sido removidas do MCP
|
|
423
|
+
em 16/07 — **não re-adicionar**, não há mais o que chamar.
|
|
424
|
+
|
|
425
|
+
Se o usuário perguntar por "Ligação WP" ou "Wavoip": a integração **não existe mais**; para voz em
|
|
426
|
+
caixa QR Code hoje o caminho é o **LionCalls**. Nunca orientar o usuário a "Configurações da caixa →
|
|
427
|
+
Ligação WP" — essa aba não existe.
|
|
428
|
+
|
|
429
|
+
**O que SOBRA e continua funcionando:** as **2.927 ligações antigas** seguem no histórico com
|
|
430
|
+
`provider: "wavoip"`, com quem ligou, quando e quanto durou. As **gravações** ficavam no servidor da
|
|
431
|
+
Wavoip e vão sumir — ao tentar ouvir, o painel mostra "Esta gravação não está mais disponível" em vez
|
|
432
|
+
de um botão que não funciona. Isso é esperado, não é defeito.
|
|
433
|
+
|
|
434
|
+
WhatsappCall (Cloud, esse SIM tem tool): `status`, `custom_name`, `favorited`,
|
|
435
|
+
`transcript`/`transcript_status`.
|
|
433
436
|
|
|
434
437
|
## Chat interno da equipe (InternalChat)
|
|
435
438
|
|
package/endpoints.json
CHANGED
|
@@ -1464,7 +1464,7 @@
|
|
|
1464
1464
|
"method": "GET",
|
|
1465
1465
|
"path": "/api/v1/accounts/{account_id}/conversations/search",
|
|
1466
1466
|
"title": "Buscar Conversas",
|
|
1467
|
-
"description": "Busca conversas por texto (no conteúdo das mensagens). Diferente de filter — pesquisa free-text.
|
|
1467
|
+
"description": "LENTO — EVITE. Busca conversas por texto (no conteúdo das mensagens). Diferente de filter — pesquisa free-text.\n\nCUSTO MEDIDO EM PRODUCAO (11/08/2026): 15 a 22 SEGUNDOS por chamada. E o endpoint legado: alem da varredura, ele devolve todas as mensagens que casaram, e so a montagem da resposta consome ate 8 s. As rotas /search/* fazem o mesmo trabalho com indice proprio e teto de tempo.\n\nPREFIRA: para achar a conversa DE UMA PESSOA/EMPRESA (nome, telefone, e-mail, CPF/CNPJ, numero da conversa) use lionchat_search_list. Para achar ONDE FOI DITO algo dentro da conversa use lionchat_search_list_2. Para as duas coisas de uma vez, sem ter que adivinhar, use lionchat_search_search.\n\nPISO DE 3 CARACTERES (desde 11/08/2026): termo com menos de 3 caracteres — INCLUSIVE so-digitos — e recusado e a resposta vem VAZIA sem nenhum aviso. Vazio NAO quer dizer que a conversa nao existe, quer dizer que a busca nem rodou; refaca com 3+ caracteres. (Aqui digito NAO e isento, diferente de /search/messages, porque este caminho nao tem teto de tempo.)\n\nNOVO (2026-06): 'q' aceita multiplos termos (espacos = E/AND, cap 5; cada termo precisa bater) e dados cadastrais (CPF/CNPJ/RG por digitos, ignora pontuacao).",
|
|
1468
1468
|
"category": "Conversas",
|
|
1469
1469
|
"params": [
|
|
1470
1470
|
{
|
|
@@ -3658,7 +3658,7 @@
|
|
|
3658
3658
|
"method": "GET",
|
|
3659
3659
|
"path": "/api/v1/accounts/{account_id}/kanban_items/filter",
|
|
3660
3660
|
"title": "Filtrar Items",
|
|
3661
|
-
"description": "Filtra cards do Kanban com o filtro RICO da plataforma (mesmo motor da tela '+ Filtro'). Filtros REAIS aplicados: etapas (stages), prioridades, status do card (open/won/lost), agente, faixa de valor, periodo de criacao (date_start/end), periodo de MOVIMENTACAO PARA A ETAPA atual (stage_date_start/end), periodo de agendamento (scheduled_date_*), tarefas (task_filter), canal, etiqueta da conversa, oferta e atributos personalizados de card/contato/conversa (JSON-string + custom_attribute_match all/any). ATENCAO: SEM paginacao — retorna ate 5000 cards em ordem created_at DESC, shape {items:[], total, filters}. NAO existe filtro por time aqui (use lionchat_kanban_items_list_3 pra relatorio por time, ou filtre por agent_id); ordenacao e fixa. (2026-07-24: removidos os parametros stage_id/inbox_id/sort_by/sort_direction/page — eram aceitos mas IGNORADOS pelo backend; use stages[] no lugar de stage_id.)",
|
|
3661
|
+
"description": "Filtra cards do Kanban com o filtro RICO da plataforma (mesmo motor da tela '+ Filtro'). Filtros REAIS aplicados: etapas (stages), prioridades, status do card (open/won/lost), agente, faixa de valor, periodo de criacao (date_start/end), periodo de MOVIMENTACAO PARA A ETAPA atual (stage_date_start/end), periodo de agendamento (scheduled_date_*), tarefas (task_filter), canal, etiqueta da conversa, oferta e atributos personalizados de card/contato/conversa (JSON-string + custom_attribute_match all/any). ATENCAO: SEM paginacao — retorna ate 5000 cards em ordem created_at DESC, shape {items:[], total, filters}. NAO existe filtro por time aqui (use lionchat_kanban_items_list_3 pra relatorio por time, ou filtre por agent_id); ordenacao e fixa. (2026-07-24: removidos os parametros stage_id/inbox_id/sort_by/sort_direction/page — eram aceitos mas IGNORADOS pelo backend; use stages[] no lugar de stage_id.) NOVO 2026-08-13: updated_date_start/end (ultima alteracao, qualquer mexida) e closed_date_start/end (data do DESFECHO — ganho/perdido; use com statuses=['won'] pra 'os ganhos do mes').",
|
|
3662
3662
|
"category": "Itens",
|
|
3663
3663
|
"params": [
|
|
3664
3664
|
{
|
|
@@ -3741,6 +3741,34 @@
|
|
|
3741
3741
|
"required": false,
|
|
3742
3742
|
"description": "Movido para a etapa ate (YYYY-MM-DD) — cobre o dia inteiro."
|
|
3743
3743
|
},
|
|
3744
|
+
{
|
|
3745
|
+
"name": "updated_date_start",
|
|
3746
|
+
"type": "string",
|
|
3747
|
+
"location": "query",
|
|
3748
|
+
"required": false,
|
|
3749
|
+
"description": "Ultima alteracao a partir de (YYYY-MM-DD) — QUALQUER mexida no card (mover, trocar etapa, etiqueta, valor, nota, anexo, marcar ganho/perdido). Responde 'o que teve alguma acao no periodo', sem distinguir qual acao. Pontas independentes."
|
|
3750
|
+
},
|
|
3751
|
+
{
|
|
3752
|
+
"name": "updated_date_end",
|
|
3753
|
+
"type": "string",
|
|
3754
|
+
"location": "query",
|
|
3755
|
+
"required": false,
|
|
3756
|
+
"description": "Ultima alteracao ate (YYYY-MM-DD) — cobre o dia inteiro."
|
|
3757
|
+
},
|
|
3758
|
+
{
|
|
3759
|
+
"name": "closed_date_start",
|
|
3760
|
+
"type": "string",
|
|
3761
|
+
"location": "query",
|
|
3762
|
+
"required": false,
|
|
3763
|
+
"description": "Ganho ou perdido a partir de (YYYY-MM-DD) — data do DESFECHO do card. E o filtro que responde 'quantos ganhos eu dei no mes passado': use junto com statuses=['won']. Mesma regua da pagina Relatorios > Kanban (date_basis 'closed'), entao os numeros batem. NAO confundir com as outras tres datas: um negocio pode ter nascido em janeiro (date_start), estar parado na etapa desde marco (stage_date_start), ter sido editado ontem (updated_date_start) e ter sido GANHO em julho (closed_date_start). Card cujo desfecho nunca foi carimbado cai na data da ultima alteracao. Pontas independentes."
|
|
3764
|
+
},
|
|
3765
|
+
{
|
|
3766
|
+
"name": "closed_date_end",
|
|
3767
|
+
"type": "string",
|
|
3768
|
+
"location": "query",
|
|
3769
|
+
"required": false,
|
|
3770
|
+
"description": "Ganho ou perdido ate (YYYY-MM-DD) — cobre o dia inteiro."
|
|
3771
|
+
},
|
|
3744
3772
|
{
|
|
3745
3773
|
"name": "scheduled_date_start",
|
|
3746
3774
|
"type": "string",
|
|
@@ -7516,6 +7544,27 @@
|
|
|
7516
7544
|
"location": "body",
|
|
7517
7545
|
"required": false,
|
|
7518
7546
|
"description": "Modo de atribuicao de conversas no time. Valores: 'online_only' (padrao — so atribui a agentes com status online no momento) ou 'include_offline' (rodizio entre TODOS os agentes do time, mesmo offline)."
|
|
7547
|
+
},
|
|
7548
|
+
{
|
|
7549
|
+
"name": "fair_distribution_limit",
|
|
7550
|
+
"type": "integer",
|
|
7551
|
+
"location": "body",
|
|
7552
|
+
"required": false,
|
|
7553
|
+
"description": "Teto de conversas que o robo entrega a CADA atendente do time dentro da janela (freio de rajada; a vaga volta quando a conversa deixa de estar aberta). Padrao 10. Zero = sem freio. So tem efeito com assignment_mode 'online_only'."
|
|
7554
|
+
},
|
|
7555
|
+
{
|
|
7556
|
+
"name": "fair_distribution_window",
|
|
7557
|
+
"type": "integer",
|
|
7558
|
+
"location": "body",
|
|
7559
|
+
"required": false,
|
|
7560
|
+
"description": "Tamanho da janela do freio em SEGUNDOS (600 = 10 minutos). Padrao 600."
|
|
7561
|
+
},
|
|
7562
|
+
{
|
|
7563
|
+
"name": "assignment_order",
|
|
7564
|
+
"type": "string",
|
|
7565
|
+
"location": "body",
|
|
7566
|
+
"required": false,
|
|
7567
|
+
"description": "Ordem de atribuicao do time: 'round_robin' (rodizio — distribui igualmente, por ordem de vez) ou 'balanced' (equilibrado — entrega pra quem tem MENOS conversas abertas no momento). OMITIR o campo (ou mandar null) significa 'o time nao escolheu' e a decisao HERDA do nivel de cima: politica da caixa, depois auto_assignment_config da caixa, e por fim rodizio. NUNCA mandar 'round_robin' so pra preencher: isso vira escolha EXPLICITA do time e rebaixa em silencio uma caixa que roda equilibrado por politica. 'balanced' exige o recurso advanced_assignment na conta."
|
|
7519
7568
|
}
|
|
7520
7569
|
],
|
|
7521
7570
|
"returns": "time/equipe criado (com novo ID)",
|
|
@@ -7533,7 +7582,7 @@
|
|
|
7533
7582
|
"method": "PUT",
|
|
7534
7583
|
"path": "/api/v1/accounts/{account_id}/teams/{team_id}",
|
|
7535
7584
|
"title": "Atualizar Time",
|
|
7536
|
-
"description": "Atualiza um time/equipe existente. Campos suportados: name, description, allow_auto_assign, assignment_mode. Edita o time em si (não os membros — para membros use lionchat_team_members_update).",
|
|
7585
|
+
"description": "Atualiza um time/equipe existente. Campos suportados: name, description, allow_auto_assign, assignment_mode, fair_distribution_limit, fair_distribution_window, assignment_order. Edita o time em si (não os membros — para membros use lionchat_team_members_update).",
|
|
7537
7586
|
"category": "Times",
|
|
7538
7587
|
"params": [
|
|
7539
7588
|
{
|
|
@@ -7570,6 +7619,27 @@
|
|
|
7570
7619
|
"location": "body",
|
|
7571
7620
|
"required": false,
|
|
7572
7621
|
"description": "Modo de atribuicao de conversas no time. Valores: 'online_only' (padrao — so atribui a agentes com status online no momento) ou 'include_offline' (rodizio entre TODOS os agentes do time, mesmo offline)."
|
|
7622
|
+
},
|
|
7623
|
+
{
|
|
7624
|
+
"name": "fair_distribution_limit",
|
|
7625
|
+
"type": "integer",
|
|
7626
|
+
"location": "body",
|
|
7627
|
+
"required": false,
|
|
7628
|
+
"description": "Teto de conversas que o robo entrega a CADA atendente do time dentro da janela (freio de rajada; a vaga volta quando a conversa deixa de estar aberta). Padrao 10. Zero = sem freio. So tem efeito com assignment_mode 'online_only'."
|
|
7629
|
+
},
|
|
7630
|
+
{
|
|
7631
|
+
"name": "fair_distribution_window",
|
|
7632
|
+
"type": "integer",
|
|
7633
|
+
"location": "body",
|
|
7634
|
+
"required": false,
|
|
7635
|
+
"description": "Tamanho da janela do freio em SEGUNDOS (600 = 10 minutos). Padrao 600."
|
|
7636
|
+
},
|
|
7637
|
+
{
|
|
7638
|
+
"name": "assignment_order",
|
|
7639
|
+
"type": "string",
|
|
7640
|
+
"location": "body",
|
|
7641
|
+
"required": false,
|
|
7642
|
+
"description": "Ordem de atribuicao do time: 'round_robin' (rodizio — distribui igualmente, por ordem de vez) ou 'balanced' (equilibrado — entrega pra quem tem MENOS conversas abertas no momento). OMITIR o campo (ou mandar null) significa 'o time nao escolheu' e a decisao HERDA do nivel de cima: politica da caixa, depois auto_assignment_config da caixa, e por fim rodizio. NUNCA mandar 'round_robin' so pra preencher: isso vira escolha EXPLICITA do time e rebaixa em silencio uma caixa que roda equilibrado por politica. 'balanced' exige o recurso advanced_assignment na conta."
|
|
7573
7643
|
}
|
|
7574
7644
|
],
|
|
7575
7645
|
"returns": "time/equipe atualizado",
|
|
@@ -7954,7 +8024,7 @@
|
|
|
7954
8024
|
"method": "GET",
|
|
7955
8025
|
"path": "/api/v1/accounts/{account_id}/search",
|
|
7956
8026
|
"title": "Busca Global",
|
|
7957
|
-
"description": "Busca global por texto (conversas, contatos, mensagens, artigos) — sempre retorna todos os tipos. Para um tipo unico use /search/conversations|contacts|messages.\n\nNOVO (2026-06): 'q' aceita multiplos termos (espacos = E/AND, cap 5; cada termo precisa bater) e dados cadastrais (CPF/CNPJ/RG por digitos, ignora pontuacao). Sempre retorna todos os tipos: conversations, contacts, messages, articles e kanban_items. Mensagens trazem previous_message/next_message.",
|
|
8027
|
+
"description": "RAPIDO, e a opcao mais segura quando nao se sabe se o termo e o nome de alguem ou algo dito no papo — cobre os dois casos numa chamada. Busca global por texto (conversas, contatos, mensagens, artigos) — sempre retorna todos os tipos. Para um tipo unico use /search/conversations|contacts|messages.\n\nPREFIRA esta ao lionchat_conversations_search legado, que leva 15 a 22 segundos (medido em producao 11/08/2026).\n\nNOVO (2026-06): 'q' aceita multiplos termos (espacos = E/AND, cap 5; cada termo precisa bater) e dados cadastrais (CPF/CNPJ/RG por digitos, ignora pontuacao). Sempre retorna todos os tipos: conversations, contacts, messages, articles e kanban_items. Mensagens trazem previous_message/next_message.",
|
|
7958
8028
|
"category": "Busca",
|
|
7959
8029
|
"params": [
|
|
7960
8030
|
{
|
|
@@ -8034,7 +8104,7 @@
|
|
|
8034
8104
|
"method": "GET",
|
|
8035
8105
|
"path": "/api/v1/accounts/{account_id}/search/conversations",
|
|
8036
8106
|
"title": "Buscar Conversas",
|
|
8037
|
-
"description": "
|
|
8107
|
+
"description": "RAPIDO. E uma BUSCA, nao uma listagem — o sufixo _list no id e historico, ignore. Acha a conversa PELA PESSOA/EMPRESA: nome, e-mail, telefone, identificador, CPF/CNPJ por digitos, atributos personalizados da conversa e numero da conversa.\n\nNAO procura dentro do texto das mensagens — para isso use lionchat_search_list_2 (ou lionchat_search_search para as duas coisas). E a substituta rapida do lionchat_conversations_search legado (15 a 22 s) quando a intencao e achar a conversa de alguem.\n\nDevolve payload.conversations[], 15 por pagina. Termo de texto com menos de 3 caracteres e descartado (so-digitos e isento); se todos os termos forem curtos a resposta vem VAZIA — isso nao significa que nao existe, significa que a busca nao rodou.\n\nNOVO (2026-06): 'q' aceita multiplos termos (espacos = E/AND, cap 5; cada termo precisa bater) e dados cadastrais (CPF/CNPJ/RG por digitos, ignora pontuacao).",
|
|
8038
8108
|
"category": "Busca",
|
|
8039
8109
|
"params": [
|
|
8040
8110
|
{
|
|
@@ -8158,7 +8228,7 @@
|
|
|
8158
8228
|
"method": "GET",
|
|
8159
8229
|
"path": "/api/v1/accounts/{account_id}/search/messages",
|
|
8160
8230
|
"title": "Buscar Mensagens",
|
|
8161
|
-
"description": "
|
|
8231
|
+
"description": "RAPIDO. E uma BUSCA, nao uma listagem — o sufixo _list no id e historico, ignore. Procura o termo DENTRO DO TEXTO das mensagens.\n\nE A SUBSTITUTA CERTA do lionchat_conversations_search legado, que faz a mesma busca em 15 a 22 segundos: aqui ha indice trigram proprio e teto de tempo em duas fases (2 s na primeira tentativa, 14 s no limite absoluto), entao nao trava. Devolve payload.messages[], 15 por pagina.\n\nTermo de texto com menos de 3 caracteres e descartado (so-digitos e isento, protegido pelo limite da primeira fase); se todos os termos forem curtos a resposta vem VAZIA — isso nao significa que nao existe, significa que a busca nao rodou.\n\nNOVO (2026-06): 'q' aceita multiplos termos (espacos = E/AND, cap 5; cada termo precisa bater) e dados cadastrais (CPF/CNPJ/RG por digitos, ignora pontuacao). NOVO (2026-06-16): casa por TRECHO/substring (multi-termo AND — ex.: 'época d' acha 'época do'); e cada resultado de mensagem inclui previous_message e next_message (as mensagens anterior e seguinte da MESMA conversa, em ordem cronológica, ignorando eventos de sistema) como objeto {id, content, sender_name, message_type, private, created_at} ou null quando não há vizinha.",
|
|
8162
8232
|
"category": "Busca",
|
|
8163
8233
|
"params": [
|
|
8164
8234
|
{
|
|
@@ -9770,6 +9840,13 @@
|
|
|
9770
9840
|
"required": true,
|
|
9771
9841
|
"description": "Título"
|
|
9772
9842
|
},
|
|
9843
|
+
{
|
|
9844
|
+
"name": "booking_event_type.user_id",
|
|
9845
|
+
"type": "integer",
|
|
9846
|
+
"location": "body",
|
|
9847
|
+
"required": false,
|
|
9848
|
+
"description": "ID do agente responsável pelo Booking (Agente responsável). Só admin pode definir para outro agente; sem isso fica em nome de quem cria. Pegue o ID em agents_list."
|
|
9849
|
+
},
|
|
9773
9850
|
{
|
|
9774
9851
|
"name": "booking_event_type.duration_minutes",
|
|
9775
9852
|
"type": "integer",
|
|
@@ -9868,6 +9945,13 @@
|
|
|
9868
9945
|
"required": false,
|
|
9869
9946
|
"description": "Título"
|
|
9870
9947
|
},
|
|
9948
|
+
{
|
|
9949
|
+
"name": "booking_event_type.user_id",
|
|
9950
|
+
"type": "integer",
|
|
9951
|
+
"location": "body",
|
|
9952
|
+
"required": false,
|
|
9953
|
+
"description": "ID do novo agente responsável (só admin pode trocar o dono do Booking)."
|
|
9954
|
+
},
|
|
9871
9955
|
{
|
|
9872
9956
|
"name": "booking_event_type.active",
|
|
9873
9957
|
"type": "boolean",
|
|
@@ -28171,4 +28255,4 @@
|
|
|
28171
28255
|
"lionchat_conversations_show"
|
|
28172
28256
|
]
|
|
28173
28257
|
}
|
|
28174
|
-
]
|
|
28258
|
+
]
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lionchat/mcp-server",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.12.0",
|
|
4
4
|
"description": "MCP server for LionChat API — 547 tools + 10 resources + 9 prompts. Audit-log aware, completion API, progress notifications.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|