@lionchat/mcp-server 1.5.0 → 1.6.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.
package/endpoints.json CHANGED
@@ -698,7 +698,7 @@
698
698
  "method": "POST",
699
699
  "path": "/api/v1/accounts/{account_id}/contacts/filter",
700
700
  "title": "Filtrar Contatos",
701
- "description": "Filtra contatos com condições avançadas (múltiplas condições combinadas com AND/OR, operadores como contains, is_present, days_before, starts_with, e filtro por custom_attributes). Ver a seção Casos de Uso e Filtros para a lista completa de atributos e operadores. Filtragem avançada de contatos via payload de condições. Múltiplos operadores: equal_to, contains, includes, is_present, etc.\n\nNOVO (2026-06): filtro por REGISTROS VINCULADOS — acha o contato pelo que aconteceu com ele: attribute_key 'conversation_search' (conversa vinculada: status/etiquetas/caixa), condicoes com custom_attribute_type 'conversation_attribute' (atributos da conversa) e attribute_key 'kanban_card' (card vinculado: funil/etapa/prioridade/status). Combinaveis com E/OU.",
701
+ "description": "Filtra contatos com condicoes avancadas (payload de condicoes). 15/pagina.\n\nCHAVES FILTRAVEIS: name, email, identifier (equal_to/not_equal_to/contains/does_not_contain — match parcial case-insensitive); phone_number (+starts_with); country_code, city, company; cpf, cnpj, rg, profession (cadastral; cpf/cnpj/rg aceitam is_present/is_not_present); labels; created_at, last_activity_at (is_greater_than/is_less_than/days_before); blocked (equal_to true/false); QUALQUER outra chave = atributo personalizado do contato.\n\nREGISTROS VINCULADOS (acha o contato pelo que aconteceu com ele): attribute_key 'conversation_search' (conversa vinculada: conversation_status/conversation_labels/conversation_inbox_id), condicoes com custom_attribute_type 'conversation_attribute' (atributo da conversa vinculada) e attribute_key 'kanban_card' (card vinculado: card_funnel_id/card_stage/card_priority/card_status). Combinaveis com E/OU.\n\nCada condicao: {attribute_key, filter_operator, values[], query_operator:'and'|'or', custom_attribute_type?}. Operador fora da lista da chave = 422.",
702
702
  "category": "Contatos",
703
703
  "params": [
704
704
  {
@@ -1426,7 +1426,7 @@
1426
1426
  "method": "POST",
1427
1427
  "path": "/api/v1/accounts/{account_id}/conversations/filter",
1428
1428
  "title": "Filtrar Conversas",
1429
- "description": "Filtra conversas com condições avançadas (múltiplas condições AND/OR, operadores como equal_to, contains, is_present, days_before, filtro por custom_attributes). Ordenação fixa: last_activity_at DESC. Paginação: 25 registros/página. Ver a seção Casos de Uso e Filtros para a lista completa de atributos e operadores. Filtragem avançada de conversas via payload de condições. Múltiplos operadores: equal_to, contains, includes, is_present, etc.",
1429
+ "description": "Filtra conversas com condicoes avancadas (payload de condicoes, mesmas da tela). Ordenacao fixa last_activity_at DESC, 25/pagina.\n\nCHAVES FILTRAVEIS (attribute_key -> operadores): status, chat_type, priority (equal_to/not_equal_to); assignee_id, inbox_id, team_id, campaign_id, captain_assistant_id, labels (equal_to/not_equal_to/is_present/is_not_present); display_id (equal_to/not_equal_to/contains/does_not_contain); created_at, last_activity_at (is_greater_than/is_less_than/days_before — valor de data); browser_language, conversation_language, referer, mail_subject; card_funnel_stage (conversa POR CARD do Kanban — valor 'funnel:<id>' ou 'stage:<id>:<chave_etapa>'); QUALQUER outra chave = atributo personalizado (use custom_attribute_type na condicao: 'conversation_attribute' ou 'contact_attribute').\n\nCada condicao: {attribute_key, filter_operator, values[], query_operator:'and'|'or', custom_attribute_type?}. Operador fora da lista da chave = 422 'Operador invalido' (ex: labels NAO aceita 'includes' — use equal_to).",
1430
1430
  "category": "Conversas",
1431
1431
  "params": [
1432
1432
  {
@@ -2252,7 +2252,7 @@
2252
2252
  "method": "POST",
2253
2253
  "path": "/api/v1/accounts/{account_id}/conversations/{conversation_id}/messages/{id}/retry",
2254
2254
  "title": "Reenviar Mensagem",
2255
- "description": "Reenvia uma mensagem que falhou. Obrigatorios: conversation_id, id.",
2255
+ "description": "[POST] Reenvia uma mensagem que falhou. Obrigatorios: conversation_id, id. [2026-07-24] Motor unico de reenvio: limpeza cirurgica de content_attributes (preserva vinculos de flow/automacao/comentario IG) + trava anti-duplicata por mensagem. Pra reenviar TODAS as falhadas de uma caixa de uma vez, use lionchat_inboxes_failed_messages_bulk_retry.",
2256
2256
  "category": "Mensagens",
2257
2257
  "params": [
2258
2258
  {
@@ -2279,7 +2279,9 @@
2279
2279
  "related_tools": [
2280
2280
  "lionchat_conversations_messages_list",
2281
2281
  "lionchat_conversations_messages_create",
2282
- "lionchat_conversations_messages_update"
2282
+ "lionchat_conversations_messages_update",
2283
+ "lionchat_inboxes_failed_messages_summary",
2284
+ "lionchat_inboxes_failed_messages_bulk_retry"
2283
2285
  ]
2284
2286
  },
2285
2287
  {
@@ -3504,7 +3506,7 @@
3504
3506
  "method": "GET",
3505
3507
  "path": "/api/v1/accounts/{account_id}/kanban_items/filter",
3506
3508
  "title": "Filtrar Items",
3507
- "description": "Filtra items com condições avançadas (mesmos filtros do index). Filtragem avançada de itens Kanban via payload de condições. Múltiplos operadores: equal_to, contains, includes, is_present, etc.",
3509
+ "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 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.)",
3508
3510
  "category": "Itens",
3509
3511
  "params": [
3510
3512
  {
@@ -3514,13 +3516,6 @@
3514
3516
  "required": true,
3515
3517
  "description": "ID do funil"
3516
3518
  },
3517
- {
3518
- "name": "stage_id",
3519
- "type": "string",
3520
- "location": "query",
3521
- "required": false,
3522
- "description": "Etapa"
3523
- },
3524
3519
  {
3525
3520
  "name": "agent_id",
3526
3521
  "type": "integer",
@@ -3559,39 +3554,103 @@
3559
3554
  "description": "Valor máximo"
3560
3555
  },
3561
3556
  {
3562
- "name": "inbox_id",
3563
- "type": "integer",
3557
+ "name": "stages",
3558
+ "query_name": "stages[]",
3559
+ "type": "array",
3564
3560
  "location": "query",
3565
3561
  "required": false,
3566
- "description": "Inbox"
3562
+ "description": "Etapas do funil (chaves internas/slugs, ex: ['novo_lead','qualificado'])"
3567
3563
  },
3568
3564
  {
3569
- "name": "sort_by",
3565
+ "name": "date_start",
3570
3566
  "type": "string",
3571
3567
  "location": "query",
3572
3568
  "required": false,
3573
- "description": "Campo de ordenação"
3569
+ "description": "Criado a partir de (YYYY-MM-DD) — filtra created_at do card"
3574
3570
  },
3575
3571
  {
3576
- "name": "sort_direction",
3572
+ "name": "date_end",
3577
3573
  "type": "string",
3578
3574
  "location": "query",
3579
3575
  "required": false,
3580
- "description": "asc ou desc"
3576
+ "description": "Criado ate (YYYY-MM-DD)"
3581
3577
  },
3582
3578
  {
3583
- "name": "page",
3584
- "type": "integer",
3579
+ "name": "scheduled_date_start",
3580
+ "type": "string",
3585
3581
  "location": "query",
3586
3582
  "required": false,
3587
- "description": "Página"
3583
+ "description": "Agendamento a partir de (YYYY-MM-DD) — considera scheduled_at/deadline_at do card E tarefas da agenda vinculadas"
3584
+ },
3585
+ {
3586
+ "name": "scheduled_date_end",
3587
+ "type": "string",
3588
+ "location": "query",
3589
+ "required": false,
3590
+ "description": "Agendamento ate (YYYY-MM-DD)"
3591
+ },
3592
+ {
3593
+ "name": "task_filter",
3594
+ "type": "string",
3595
+ "location": "query",
3596
+ "required": false,
3597
+ "description": "Filtro por tarefas vinculadas: has_task | no_task | today | tomorrow | this_week | overdue"
3598
+ },
3599
+ {
3600
+ "name": "channel",
3601
+ "type": "string",
3602
+ "location": "query",
3603
+ "required": false,
3604
+ "description": "Tipo de canal da conversa do card, SEM o prefixo Channel:: (ex: Waha, Whatsapp, Instagram, Email)"
3605
+ },
3606
+ {
3607
+ "name": "label",
3608
+ "type": "string",
3609
+ "location": "query",
3610
+ "required": false,
3611
+ "description": "Etiqueta aplicada na CONVERSA vinculada ao card (match parcial por titulo)"
3612
+ },
3613
+ {
3614
+ "name": "offer",
3615
+ "type": "string",
3616
+ "location": "query",
3617
+ "required": false,
3618
+ "description": "Descricao exata de uma oferta presente no card (item_details.offers)"
3619
+ },
3620
+ {
3621
+ "name": "card_custom_attribute_filters",
3622
+ "type": "string",
3623
+ "location": "query",
3624
+ "required": false,
3625
+ "description": "STRING JSON (array serializado) de condicoes sobre atributos personalizados do CARD: [{\"attribute_key\":\"...\",\"filter_operator\":\"equal_to|not_equal_to|contains|does_not_contain|is_present|is_not_present\",\"values\":[\"...\"]}]. Ex: \"[{\\\"attribute_key\\\":\\\"origem\\\",\\\"filter_operator\\\":\\\"equal_to\\\",\\\"values\\\":[\\\"indicacao\\\"]}]\". NAO enviar como array nativo — o backend faz JSON.parse da string."
3626
+ },
3627
+ {
3628
+ "name": "contact_custom_attribute_filters",
3629
+ "type": "string",
3630
+ "location": "query",
3631
+ "required": false,
3632
+ "description": "STRING JSON (array serializado) de condicoes sobre atributos personalizados do CONTATO vinculado: [{\"attribute_key\":\"...\",\"filter_operator\":\"equal_to|not_equal_to|contains|does_not_contain|is_present|is_not_present\",\"values\":[\"...\"]}]. Ex: \"[{\\\"attribute_key\\\":\\\"origem\\\",\\\"filter_operator\\\":\\\"equal_to\\\",\\\"values\\\":[\\\"indicacao\\\"]}]\". NAO enviar como array nativo — o backend faz JSON.parse da string."
3633
+ },
3634
+ {
3635
+ "name": "conversation_custom_attribute_filters",
3636
+ "type": "string",
3637
+ "location": "query",
3638
+ "required": false,
3639
+ "description": "STRING JSON (array serializado) de condicoes sobre atributos personalizados da CONVERSA vinculada: [{\"attribute_key\":\"...\",\"filter_operator\":\"equal_to|not_equal_to|contains|does_not_contain|is_present|is_not_present\",\"values\":[\"...\"]}]. Ex: \"[{\\\"attribute_key\\\":\\\"origem\\\",\\\"filter_operator\\\":\\\"equal_to\\\",\\\"values\\\":[\\\"indicacao\\\"]}]\". NAO enviar como array nativo — o backend faz JSON.parse da string."
3640
+ },
3641
+ {
3642
+ "name": "custom_attribute_match",
3643
+ "type": "string",
3644
+ "location": "query",
3645
+ "required": false,
3646
+ "description": "'all' (E — todas as condicoes de atributo, padrao) ou 'any' (OU — qualquer uma)"
3588
3647
  }
3589
3648
  ],
3590
- "returns": "payload (array de itens Kanban filtrados)",
3649
+ "returns": "{ items: [cards serializados], total: <int>, filters: <eco dos filtros> } — cap 5000, sem paginacao",
3591
3650
  "common_use_cases": [
3592
- "Filtros complexos com múltiplas condições",
3593
- "Relatórios customizados",
3594
- "Substituir vários list calls por 1 filtro estruturado"
3651
+ "Relatorio de cards por periodo + etapa + valor",
3652
+ "Cards com atributo personalizado especifico (card/contato/conversa)",
3653
+ "Cards com tarefa atrasada (task_filter=overdue) ou sem tarefa"
3595
3654
  ],
3596
3655
  "related_tools": [
3597
3656
  "lionchat_kanban_items_list",
@@ -3730,8 +3789,8 @@
3730
3789
  "id": "lionchat_kanban_items_list_3",
3731
3790
  "method": "GET",
3732
3791
  "path": "/api/v1/accounts/{account_id}/kanban_items/reports",
3733
- "title": "Relatórios Kanban",
3734
- "description": "Retorna relatórios agregados do kanban. Lista itens Kanban paginados (per_page padrão 25, máximo 100). Retorna meta (contadores) + payload (array de item Kanban).",
3792
+ "title": "Relatório Agregado do Kanban",
3793
+ "description": "RELATORIO AGREGADO do Kanban (funil de vendas) — a resposta e um OBJETO de metricas, nao lista de cards: soma de valores GANHOS no periodo, contagem/valor por etapa, previsao ponderada (forecast), top negocios, cards parados (stale) e metas do funil. Filtra por periodo (from/to), agentes (user_ids[]) e time (team_id). USE ESTA TOOL quando pedirem 'relatorio do funil/vendas/ganhos do mes por agente ou time'. Pra LISTAR os cards em si, use lionchat_kanban_items_filter.",
3735
3794
  "category": "Itens",
3736
3795
  "params": [
3737
3796
  {
@@ -3740,13 +3799,42 @@
3740
3799
  "location": "query",
3741
3800
  "required": true,
3742
3801
  "description": "ID do funil"
3802
+ },
3803
+ {
3804
+ "name": "from",
3805
+ "type": "string",
3806
+ "location": "query",
3807
+ "required": false,
3808
+ "description": "Inicio do periodo (YYYY-MM-DD ou ISO 8601)"
3809
+ },
3810
+ {
3811
+ "name": "to",
3812
+ "type": "string",
3813
+ "location": "query",
3814
+ "required": false,
3815
+ "description": "Fim do periodo (YYYY-MM-DD ou ISO 8601)"
3816
+ },
3817
+ {
3818
+ "name": "user_ids",
3819
+ "query_name": "user_ids[]",
3820
+ "type": "array",
3821
+ "location": "query",
3822
+ "required": false,
3823
+ "description": "IDs de agentes — restringe o relatorio aos cards atribuidos a eles"
3824
+ },
3825
+ {
3826
+ "name": "team_id",
3827
+ "type": "integer",
3828
+ "location": "query",
3829
+ "required": false,
3830
+ "description": "ID do time — restringe aos cards dos agentes do time"
3743
3831
  }
3744
3832
  ],
3745
- "returns": "objeto de relatorios agregados (nao array de itens)",
3833
+ "returns": "objeto de metricas agregadas do funil (valores ganhos, por etapa, forecast, top deals, stale) — NAO e array de itens",
3746
3834
  "common_use_cases": [
3747
- "Dashboard: contar/exibir itens Kanban",
3748
- "Buscar com filtros antes de outra operação",
3749
- "Auditoria/relatório de itens Kanban ativas"
3835
+ "Ganhos do mes por agente ou time",
3836
+ "Valor total e contagem por etapa do funil",
3837
+ "Forecast (previsao ponderada) e negocios parados"
3750
3838
  ],
3751
3839
  "related_tools": [
3752
3840
  "lionchat_kanban_items_list",
@@ -5100,14 +5188,14 @@
5100
5188
  "type": "string",
5101
5189
  "location": "query",
5102
5190
  "required": false,
5103
- "description": "Data inicio (ISO 8601)"
5191
+ "description": "Inicio do periodo — timestamp UNIX em SEGUNDOS (ex: 1782864000). NAO use ISO 8601 — o backend faz strptime %s e a janela quebra em silencio."
5104
5192
  },
5105
5193
  {
5106
5194
  "name": "until",
5107
5195
  "type": "string",
5108
5196
  "location": "query",
5109
5197
  "required": false,
5110
- "description": "Data fim (ISO 8601)"
5198
+ "description": "Fim do periodo — timestamp UNIX em SEGUNDOS (ex: 1782864000). NAO use ISO 8601 — o backend faz strptime %s e a janela quebra em silencio."
5111
5199
  },
5112
5200
  {
5113
5201
  "name": "business_hours",
@@ -5142,14 +5230,21 @@
5142
5230
  "type": "string",
5143
5231
  "location": "query",
5144
5232
  "required": false,
5145
- "description": "Data inicio"
5233
+ "description": "Inicio do periodo — timestamp UNIX em SEGUNDOS (ex: 1782864000). NAO use ISO 8601 — o backend faz strptime %s e a janela quebra em silencio."
5146
5234
  },
5147
5235
  {
5148
5236
  "name": "until",
5149
5237
  "type": "string",
5150
5238
  "location": "query",
5151
5239
  "required": false,
5152
- "description": "Data fim"
5240
+ "description": "Fim do periodo — timestamp UNIX em SEGUNDOS (ex: 1782864000). NAO use ISO 8601 — o backend faz strptime %s e a janela quebra em silencio."
5241
+ },
5242
+ {
5243
+ "name": "business_hours",
5244
+ "type": "boolean",
5245
+ "location": "query",
5246
+ "required": false,
5247
+ "description": "true = medias consideram so o horario de atendimento configurado"
5153
5248
  }
5154
5249
  ],
5155
5250
  "returns": "array por time { id, name, conversations_count, avg_resolution_time (seg), avg_first_response_time (seg), avg_reply_time (seg), resolved_count } (sem paginacao/meta)",
@@ -5177,14 +5272,21 @@
5177
5272
  "type": "string",
5178
5273
  "location": "query",
5179
5274
  "required": false,
5180
- "description": "Data inicio"
5275
+ "description": "Inicio do periodo — timestamp UNIX em SEGUNDOS (ex: 1782864000). NAO use ISO 8601 — o backend faz strptime %s e a janela quebra em silencio."
5181
5276
  },
5182
5277
  {
5183
5278
  "name": "until",
5184
5279
  "type": "string",
5185
5280
  "location": "query",
5186
5281
  "required": false,
5187
- "description": "Data fim"
5282
+ "description": "Fim do periodo — timestamp UNIX em SEGUNDOS (ex: 1782864000). NAO use ISO 8601 — o backend faz strptime %s e a janela quebra em silencio."
5283
+ },
5284
+ {
5285
+ "name": "business_hours",
5286
+ "type": "boolean",
5287
+ "location": "query",
5288
+ "required": false,
5289
+ "description": "true = medias consideram so o horario de atendimento configurado"
5188
5290
  }
5189
5291
  ],
5190
5292
  "returns": "array por inbox (mesma estrutura do resumo); sem meta",
@@ -5212,14 +5314,21 @@
5212
5314
  "type": "string",
5213
5315
  "location": "query",
5214
5316
  "required": false,
5215
- "description": "Data inicio"
5317
+ "description": "Inicio do periodo — timestamp UNIX em SEGUNDOS (ex: 1782864000). NAO use ISO 8601 — o backend faz strptime %s e a janela quebra em silencio."
5216
5318
  },
5217
5319
  {
5218
5320
  "name": "until",
5219
5321
  "type": "string",
5220
5322
  "location": "query",
5221
5323
  "required": false,
5222
- "description": "Data fim"
5324
+ "description": "Fim do periodo — timestamp UNIX em SEGUNDOS (ex: 1782864000). NAO use ISO 8601 — o backend faz strptime %s e a janela quebra em silencio."
5325
+ },
5326
+ {
5327
+ "name": "business_hours",
5328
+ "type": "boolean",
5329
+ "location": "query",
5330
+ "required": false,
5331
+ "description": "true = medias consideram so o horario de atendimento configurado"
5223
5332
  }
5224
5333
  ],
5225
5334
  "returns": "array por label; sem meta",
@@ -5247,14 +5356,21 @@
5247
5356
  "type": "string",
5248
5357
  "location": "query",
5249
5358
  "required": false,
5250
- "description": "Data inicio"
5359
+ "description": "Inicio do periodo — timestamp UNIX em SEGUNDOS (ex: 1782864000). NAO use ISO 8601 — o backend faz strptime %s e a janela quebra em silencio."
5251
5360
  },
5252
5361
  {
5253
5362
  "name": "until",
5254
5363
  "type": "string",
5255
5364
  "location": "query",
5256
5365
  "required": false,
5257
- "description": "Data fim"
5366
+ "description": "Fim do periodo — timestamp UNIX em SEGUNDOS (ex: 1782864000). NAO use ISO 8601 — o backend faz strptime %s e a janela quebra em silencio."
5367
+ },
5368
+ {
5369
+ "name": "business_hours",
5370
+ "type": "boolean",
5371
+ "location": "query",
5372
+ "required": false,
5373
+ "description": "true = medias consideram so o horario de atendimento configurado"
5258
5374
  }
5259
5375
  ],
5260
5376
  "returns": "array por canal; sem meta",
@@ -5282,7 +5398,7 @@
5282
5398
  "type": "string",
5283
5399
  "location": "query",
5284
5400
  "required": false,
5285
- "description": "Metrica: conversations_count, incoming_messages_count, etc"
5401
+ "description": "Metrica (UMA por chamada): conversations_count | incoming_messages_count | outgoing_messages_count | avg_first_response_time | avg_resolution_time | resolutions_count | reply_time | bot_resolutions_count | bot_handoffs_count. Tempos em SEGUNDOS."
5286
5402
  },
5287
5403
  {
5288
5404
  "name": "type",
@@ -5296,14 +5412,14 @@
5296
5412
  "type": "string",
5297
5413
  "location": "query",
5298
5414
  "required": false,
5299
- "description": "Timestamp inicio"
5415
+ "description": "Inicio do periodo — timestamp UNIX em SEGUNDOS (ex: 1782864000). NAO use ISO 8601 — o backend faz strptime %s e a janela quebra em silencio."
5300
5416
  },
5301
5417
  {
5302
5418
  "name": "until",
5303
5419
  "type": "string",
5304
5420
  "location": "query",
5305
5421
  "required": false,
5306
- "description": "Timestamp fim"
5422
+ "description": "Fim do periodo — timestamp UNIX em SEGUNDOS (ex: 1782864000). NAO use ISO 8601 — o backend faz strptime %s e a janela quebra em silencio."
5307
5423
  },
5308
5424
  {
5309
5425
  "name": "id",
@@ -5331,7 +5447,7 @@
5331
5447
  "type": "string",
5332
5448
  "location": "query",
5333
5449
  "required": false,
5334
- "description": "Offset de timezone em horas"
5450
+ "description": "Deslocamento de fuso em horas (ex: -3 pra Brasilia) — afeta SO o agrupamento dos pontos do grafico (fronteira do dia/hora), NAO altera totais de summary."
5335
5451
  }
5336
5452
  ],
5337
5453
  "returns": "array de { value, timestamp[, count] } (sem meta)",
@@ -5359,14 +5475,14 @@
5359
5475
  "type": "string",
5360
5476
  "location": "query",
5361
5477
  "required": false,
5362
- "description": "Timestamp inicio"
5478
+ "description": "Inicio do periodo — timestamp UNIX em SEGUNDOS (ex: 1782864000). NAO use ISO 8601 — o backend faz strptime %s e a janela quebra em silencio."
5363
5479
  },
5364
5480
  {
5365
5481
  "name": "until",
5366
5482
  "type": "string",
5367
5483
  "location": "query",
5368
5484
  "required": false,
5369
- "description": "Timestamp fim"
5485
+ "description": "Fim do periodo — timestamp UNIX em SEGUNDOS (ex: 1782864000). NAO use ISO 8601 — o backend faz strptime %s e a janela quebra em silencio."
5370
5486
  },
5371
5487
  {
5372
5488
  "name": "type",
@@ -5394,7 +5510,7 @@
5394
5510
  "type": "string",
5395
5511
  "location": "query",
5396
5512
  "required": false,
5397
- "description": "Offset de timezone em horas"
5513
+ "description": "Deslocamento de fuso em horas (ex: -3). NAO altera os totais do summary — so afeta agrupamento em endpoints de serie temporal."
5398
5514
  }
5399
5515
  ],
5400
5516
  "returns": "{ conversations_count, incoming_messages_count, outgoing_messages_count, resolutions_count, avg_first_response_time (seg), avg_resolution_time (seg), previous: {...mesma estrutura...} }",
@@ -5630,7 +5746,7 @@
5630
5746
  "method": "GET",
5631
5747
  "path": "/api/v2/accounts/{account_id}/reports/conversation_traffic",
5632
5748
  "title": "Trafego de Conversas",
5633
- "description": "Exporta CSV de heatmap de trafego de conversas. Aceita timezone_offset.",
5749
+ "description": "[GET] Conversation Traffic (heatmap de volume por hora x dia, CSV). ATENCAO: janela FIXA calculada a partir de HOJE no fuso informado — NAO aceita since/until (nao adianta passar). Unico parametro: timezone_offset (ex: -3 pra Brasilia; sem ele o pico sai em UTC).",
5634
5750
  "category": "Relatorios",
5635
5751
  "params": [
5636
5752
  {
@@ -13850,9 +13966,60 @@
13850
13966
  "method": "GET",
13851
13967
  "path": "/api/v1/accounts/{account_id}/applied_slas/metrics",
13852
13968
  "title": "Metricas SLA",
13853
- "description": "Metricas agregadas de SLA. ENTERPRISE-only, Admin.",
13969
+ "description": "[GET] Agregado de SLA (ENTERPRISE-ONLY): total_applied_slas, number_of_sla_misses e hit_rate (string pronta com %). [2026-07-24] Agora com os filtros REAIS expostos: periodo since/until (unix SEGUNDOS), inbox_id, team_id, sla_policy_id, label_list[] e assigned_agent_id. Conta sem Enterprise/SLA: endpoint indisponivel.",
13854
13970
  "category": "SLA",
13855
- "params": [],
13971
+ "params": [
13972
+ {
13973
+ "name": "since",
13974
+ "type": "string",
13975
+ "location": "query",
13976
+ "required": false,
13977
+ "description": "Inicio do periodo — timestamp UNIX em SEGUNDOS (ex: 1782864000). NAO use ISO 8601 — o backend faz strptime %s e a janela quebra em silencio."
13978
+ },
13979
+ {
13980
+ "name": "until",
13981
+ "type": "string",
13982
+ "location": "query",
13983
+ "required": false,
13984
+ "description": "Fim do periodo — timestamp UNIX em SEGUNDOS (ex: 1782864000). NAO use ISO 8601 — o backend faz strptime %s e a janela quebra em silencio."
13985
+ },
13986
+ {
13987
+ "name": "inbox_id",
13988
+ "type": "integer",
13989
+ "location": "query",
13990
+ "required": false,
13991
+ "description": "Filtra por caixa de entrada"
13992
+ },
13993
+ {
13994
+ "name": "team_id",
13995
+ "type": "integer",
13996
+ "location": "query",
13997
+ "required": false,
13998
+ "description": "Filtra por time"
13999
+ },
14000
+ {
14001
+ "name": "sla_policy_id",
14002
+ "type": "integer",
14003
+ "location": "query",
14004
+ "required": false,
14005
+ "description": "Filtra por politica de SLA"
14006
+ },
14007
+ {
14008
+ "name": "label_list",
14009
+ "query_name": "label_list[]",
14010
+ "type": "array",
14011
+ "location": "query",
14012
+ "required": false,
14013
+ "description": "Filtra por etiquetas da conversa (titulos)"
14014
+ },
14015
+ {
14016
+ "name": "assigned_agent_id",
14017
+ "type": "integer",
14018
+ "location": "query",
14019
+ "required": false,
14020
+ "description": "Filtra por atendente responsavel (admin; agente comum ve so o proprio)"
14021
+ }
14022
+ ],
13856
14023
  "returns": "{ total_applied_slas, number_of_sla_misses, hit_rate } — hit_rate e STRING tipo '95.5%'",
13857
14024
  "common_use_cases": [
13858
14025
  "Dashboard: contar/exibir políticas SLA",
@@ -20738,7 +20905,7 @@
20738
20905
  "method": "GET",
20739
20906
  "path": "/api/v1/accounts/{account_id}/csat_survey_responses/metrics",
20740
20907
  "title": "Metricas CSAT",
20741
- "description": "Metricas de CSAT do periodo. Filtros: user_ids, inbox_id, team_id, rating. A MEDIA e a taxa NAO vem prontas — calcule de ratings_count.",
20908
+ "description": "[GET] Agregado de CSAT: total de respostas, distribuicao por nota (ratings_count) e pesquisas enviadas (total_sent_messages_count). [2026-07-24] Agora com os filtros REAIS expostos: user_ids[] (atendentes), inbox_id (caixa), team_id, rating e periodo since/until (unix SEGUNDOS). Nota media = soma(nota x qtd)/total; taxa de resposta = total_count/total_sent_messages_count (calcule — nao vem prontas).",
20742
20909
  "category": "CSAT",
20743
20910
  "params": [
20744
20911
  {
@@ -20746,14 +20913,43 @@
20746
20913
  "type": "string",
20747
20914
  "location": "query",
20748
20915
  "required": false,
20749
- "description": "Data inicio"
20916
+ "description": "Inicio do periodo — timestamp UNIX em SEGUNDOS (ex: 1782864000). NAO use ISO 8601 — o backend faz strptime %s e a janela quebra em silencio."
20750
20917
  },
20751
20918
  {
20752
20919
  "name": "until",
20753
20920
  "type": "string",
20754
20921
  "location": "query",
20755
20922
  "required": false,
20756
- "description": "Data fim"
20923
+ "description": "Fim do periodo — timestamp UNIX em SEGUNDOS (ex: 1782864000). NAO use ISO 8601 — o backend faz strptime %s e a janela quebra em silencio."
20924
+ },
20925
+ {
20926
+ "name": "user_ids",
20927
+ "query_name": "user_ids[]",
20928
+ "type": "array",
20929
+ "location": "query",
20930
+ "required": false,
20931
+ "description": "IDs de atendentes — CSAT so das conversas atribuidas a eles (admin; agente comum ve so o proprio)"
20932
+ },
20933
+ {
20934
+ "name": "inbox_id",
20935
+ "type": "integer",
20936
+ "location": "query",
20937
+ "required": false,
20938
+ "description": "Filtra por caixa de entrada"
20939
+ },
20940
+ {
20941
+ "name": "team_id",
20942
+ "type": "integer",
20943
+ "location": "query",
20944
+ "required": false,
20945
+ "description": "Filtra por time"
20946
+ },
20947
+ {
20948
+ "name": "rating",
20949
+ "type": "integer",
20950
+ "location": "query",
20951
+ "required": false,
20952
+ "description": "Filtra por nota (1-5)"
20757
20953
  }
20758
20954
  ],
20759
20955
  "returns": "{ total_count, ratings_count (hash rating=>qtd), total_sent_messages_count }",
@@ -21078,7 +21274,7 @@
21078
21274
  {
21079
21275
  "name": "exclusion",
21080
21276
  "type": "array",
21081
- "location": "query",
21277
+ "location": "body",
21082
21278
  "required": false,
21083
21279
  "description": "Publico a EXCLUIR/negativar antes de estimar (mesmo formato do 'audience': lista de secoes por tipo). O contador desconta quem cair na exclusao. Tipos aceitos iguais aos do audience (Label, Funnel, ConversationAttribute, ContactLabel, ContactAttribute, CardAttribute, AgentTeam)."
21084
21280
  }
@@ -22215,6 +22411,67 @@
22215
22411
  ],
22216
22412
  "related_tools": []
22217
22413
  },
22414
+ {
22415
+ "id": "lionchat_inboxes_failed_messages_summary",
22416
+ "method": "GET",
22417
+ "path": "/api/v1/accounts/{account_id}/inboxes/{inbox_id}/failed_messages/summary",
22418
+ "title": "Falhas de Envio da Caixa (painel)",
22419
+ "description": "[NOVO 2026-07-24] Painel 'Falhas de envio' da caixa: mensagens FALHADAS das ultimas 24h agrupadas por motivo — billing (falta de saldo/pagamento), transient (erro comum, reenviavel), window_expired (janela de 24h da API oficial fechou), permanent (erro definitivo) — + grupos informativos campaign (mensagem de campanha NUNCA reenvia por aqui) e partial (multi-anexo parcial, anti-duplicata). group_details traz ate 30 itens por grupo com contato, conversa, erro real e horario. Canais elegiveis: WAHA (QR), WhatsApp oficial e Messenger (Telegram/Instagram nao marcam failed). ADMIN-ONLY. Use antes do bulk_retry pra mostrar ao usuario O QUE falhou e quanto e reenviavel (retryable_count = billing + transient).",
22420
+ "category": "Caixas de Entrada",
22421
+ "params": [
22422
+ {
22423
+ "name": "inbox_id",
22424
+ "type": "integer",
22425
+ "location": "path",
22426
+ "required": true,
22427
+ "description": "ID da caixa de entrada"
22428
+ }
22429
+ ],
22430
+ "returns": "{ window_hours, eligible_channel, bulk_retry_running, groups:{billing,transient,window_expired,permanent}, group_details, campaign_count, partial_count, retryable_count, total }",
22431
+ "common_use_cases": [
22432
+ "Diagnosticar por que mensagens nao chegaram (agrupado por motivo, com erro real)",
22433
+ "Ver quantas falhas sao reenviaveis antes de disparar o reenvio em massa",
22434
+ "Auditoria pos-incidente de envio (saldo Meta, sessao WAHA caida)"
22435
+ ],
22436
+ "related_tools": [
22437
+ "lionchat_inboxes_failed_messages_bulk_retry",
22438
+ "lionchat_conversations_messages_create_1",
22439
+ "lionchat_inboxes_waha_status"
22440
+ ]
22441
+ },
22442
+ {
22443
+ "id": "lionchat_inboxes_failed_messages_bulk_retry",
22444
+ "method": "POST",
22445
+ "path": "/api/v1/accounts/{account_id}/inboxes/{inbox_id}/failed_messages/bulk_retry",
22446
+ "title": "Reenvio em Massa das Falhadas",
22447
+ "description": "[NOVO 2026-07-24] Reenvia EM LOTE as mensagens falhadas REENVIAVEIS das ultimas 24h da caixa (grupos billing + transient do summary). Teto 500 por clique; cadencia anti-ban (WAHA 8s entre mensagens, demais 1s); trava de 1 lote por caixa (409 bulk_retry_running se ja houver lote rodando); cada mensagem e re-validada na hora do reenvio (ainda failed, sem source_id, sessao WAHA WORKING, janela 24h da oficial) e tem teto de 3 tentativas no erro comum. Mensagens de CAMPANHA e multi-anexo PARCIAL nunca entram (anti-duplicata). ADMIN-ONLY. Sempre chame o summary antes e mostre as contagens ao usuario; confirme antes de disparar (acao de envio em massa real).",
22448
+ "category": "Caixas de Entrada",
22449
+ "params": [
22450
+ {
22451
+ "name": "inbox_id",
22452
+ "type": "integer",
22453
+ "location": "path",
22454
+ "required": true,
22455
+ "description": "ID da caixa de entrada"
22456
+ },
22457
+ {
22458
+ "name": "classification",
22459
+ "type": "string",
22460
+ "location": "body",
22461
+ "required": false,
22462
+ "description": "Opcional: restringe o lote a UM grupo — 'billing' (so as de falta de saldo, ex: apos pagar a Meta) ou 'transient' (so erro comum). Ausente = todos os reenviaveis."
22463
+ }
22464
+ ],
22465
+ "returns": "{ scheduled: <agendadas agora>, remaining: <elegiveis que ficaram alem do teto de 500> } | 409 {error:'bulk_retry_running'} | 422 {error:'inbox_not_eligible'|'invalid_classification'}",
22466
+ "common_use_cases": [
22467
+ "Pos-incidente: reenviar tudo que falhou nas ultimas 24h da caixa",
22468
+ "Pagou o saldo da Meta: reenviar SO o grupo billing (classification='billing')"
22469
+ ],
22470
+ "related_tools": [
22471
+ "lionchat_inboxes_failed_messages_summary",
22472
+ "lionchat_conversations_messages_create_1"
22473
+ ]
22474
+ },
22218
22475
  {
22219
22476
  "id": "lionchat_internal_chat_rooms_list",
22220
22477
  "method": "GET",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lionchat/mcp-server",
3
- "version": "1.5.0",
3
+ "version": "1.6.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",