@lionchat/mcp-server 1.0.5 → 1.2.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.
@@ -198,6 +198,20 @@ Ou para listas grandes (cursors):
198
198
  - `includes` / `excludes` (relacionamentos)
199
199
  - `before` / `after` (datas)
200
200
 
201
+ ### Atributos personalizados — operadores por TIPO (2026-07-21)
202
+
203
+ Vale pra automações, filtro avançado de conversas/contatos e busca "+ Filtro" (motor compartilhado):
204
+
205
+ | Tipo do atributo | Operadores aceitos |
206
+ |---|---|
207
+ | texto / link | equal_to, not_equal_to, contains, does_not_contain, is_present, is_not_present |
208
+ | lista | equal_to, not_equal_to, is_present, is_not_present |
209
+ | número / data | equal_to, not_equal_to, is_present, is_not_present, is_greater_than, is_less_than |
210
+ | sim/não (checkbox) | equal_to, not_equal_to, is_present, is_not_present |
211
+
212
+ - Em atributo de LISTA, `equal_to` com vários `values[]` casa QUALQUER um deles (multi-seleção).
213
+ - NUNCA use `contains` em número/data/checkbox — o backend rejeita (cast inválido).
214
+
201
215
  > **Contatos — busca parcial por nome/ID externo:** no `POST /contacts/filter`, os campos `name` e
202
216
  > `identifier` aceitam `contains` / `does_not_contain` (match parcial, case-insensitive). Use isso
203
217
  > pra "contatos cujo nome contém X" sem precisar do valor exato.
@@ -219,7 +233,10 @@ Ou para listas grandes (cursors):
219
233
  ### Timezone
220
234
 
221
235
  - Default: `America/Sao_Paulo` (UTC-3, sem DST atualmente)
222
- - Conta pode ter `locale` próprio mas timezone segue config do servidor
236
+ - A CONTA tem fuso próprio (2026-07-21): Configurações > Conta, gravado em
237
+ `custom_attributes.timezone` (IANA, ex. `America/Manaus`) via atualização da conta —
238
+ vem no topo do payload da conta (`timezone`). Caixas novas e o FlowBuilder herdam.
239
+ Valor inválido é DESCARTADO em silêncio — confirme com um GET depois de gravar.
223
240
  - Pra evitar bugs, sempre passe timezone explícito
224
241
 
225
242
  ### Custom attributes de data/hora — formato canônico (2026-07-06)
@@ -19,7 +19,7 @@ A maioria dos endpoints aceita parâmetros pra filtrar antes de retornar:
19
19
 
20
20
  | Endpoint | Filtros úteis |
21
21
  |---|---|
22
- | `conversations_list` | `status` (open/resolved), `assignee_type`, `inbox_id`, `team_id`, `labels`, `q` (busca) |
22
+ | `conversations_list` | `status` (open/resolved/pending/snoozed/all), `assignee_type`, `conversation_type` (unread/unattended/mention/participating), `inbox_id`, `team_id`, `labels`, `captain_assistant` (any=com IA / none=sem IA / id do assistente), `quick_q` (busca rápida na lista), `source_id`, `updated_within` (segundos) |
23
23
  | `contacts_list` | `q` (nome/email/telefone), `include_contact_inboxes` |
24
24
  | `messages_search` | `q`, `file_type[]`, `private_only`, `page` (busca dentro de UMA conversa) |
25
25
  | `kanban_items_list` | `funnel_id`, `funnel_stage`, `assigned_agent_id` |
@@ -211,8 +211,9 @@ As instruções aceitam variáveis Liquid `{{ }}` que chegam JÁ PREENCHIDAS com
211
211
 
212
212
  - Contato: `{{contact.name}}`, `{{contact.first_name}}`, `{{contact.last_name}}`, `{{contact.email}}`, `{{contact.phone}}`, `{{contact.cpf}}`, `{{contact.cnpj}}`, `{{contact.rg}}`, `{{contact.date_of_birth}}`, `{{contact.profession}}`, `{{contact.address.city}}` (e `.cep`/`.street`/`.number`/`.neighborhood`/`.state`...), `{{contact.custom_attribute.<chave>}}`.
213
213
  - Conversa: `{{conversation.display_id}}`, `{{conversation.custom_attribute.<chave>}}`.
214
- - Variável sem valor sai vazia (não quebra). Texto SEM `{{` sai idêntico (preserva o cache do prompt) — só use variável quando agregar.
215
- - ATENÇÃO: variável de CONTA NÃO funciona aqui — `{{account.custom_attribute.<chave>}}` (slogan, endereço...) sai VAZIA dentro das instruções do AI Agente (o contexto só tem `contact` e `conversation`, proteção contra vazar secret). Pra um valor fixo da empresa no prompt, escreva o valor literal no texto.
214
+ - Variável sem valor sai vazia (não quebra). Texto SEM `{{` sai idêntico (preserva o cache do prompt) — só use variável quando agregar. Erro de digitação (filtro inválido, `{{` sem fechar) degrada suave: o pedaço com erro sai vazio e o resto das variáveis continua resolvendo (exceção: bloco `{% %}` sem fechar ainda cai pra texto cru).
215
+ - Conta (2026-07): `{{account.custom_attribute.<chave>}}` (slogan, endereço...) AGORA resolve nas instruções e cenários — MAS só os atributos de conta que você DEFINIU (via `account_variables_create`); campos internos de faturamento e secrets NUNCA aparecem no autocomplete nem resolvem. O editor de Instruções/Cenários já sugere essas variáveis de conta ao digitar `{{`.
216
+ - Simulador/Playground: agora também substitui as variáveis (com os dados do painel de teste). Obs.: CPF/CNPJ/endereço não são coletados no painel, então saem vazios só no teste (na conversa real funcionam).
216
217
 
217
218
  ## Conhecimento passivo da IA: FAQ + artigos (RAG) (2026-06)
218
219
 
@@ -270,15 +271,32 @@ formato estranho: o erro de sample é tolerado e a ativação segue. Outros ganh
270
271
  **Pro MCP:** ao acionar o backfill, informe ao usuário o `mode` retornado e quantos dias foram
271
272
  puxados. Se a ativação reclamar de sample, NÃO é bloqueio — a integração ainda fica ativa.
272
273
 
273
- ## Campanhas: audiência acumulativa (2026-06)
274
+ ## Campanhas: público avançado + exclusão ("negativar") (2026-07)
274
275
 
275
- `audience` aceita 3 tipos de seção combináveis: `Label`, `Funnel` (com stages/include_won/include_lost)
276
- e `ConversationAttribute` ({key, value}). O campo `audience_mode` define a combinação ENTRE seções:
276
+ `audience` aceita 7 tipos de seção combináveis (cada seção é `{type, ...}`):
277
+ - `Label` `{id}` — etiqueta de CONVERSA
278
+ - `Funnel` `{id, stage_id?, include_won?, include_lost?}` — etapa de funil Kanban
279
+ - `ConversationAttribute` `{key, value}` — atributo da conversa
280
+ - `ContactLabel` `{id}` — etiqueta de CONTATO (novo)
281
+ - `ContactAttribute` `{key, value}` — atributo do contato (novo)
282
+ - `CardAttribute` `{key, value}` — atributo do card Kanban (novo)
283
+ - `AgentTeam` `{assignee_ids:[], team_ids:[]}` — responsável atual OU time da conversa (novo)
284
+
285
+ O campo `audience_mode` define a combinação ENTRE seções:
277
286
  - `"sum"` (default): união — contato em QUALQUER seção entra
278
287
  - `"all"`: interseção — contato precisa atender TODAS as seções preenchidas
279
288
 
280
- SEMPRE rode `campaigns_estimate_audience` com o MESMO audience+audience_mode antes de criar a
281
- campanha e mostre a contagem ao usuário — estimativa e disparo usam o mesmo motor (não divergem).
289
+ **Exclusão / "negativar" (novo 2026-07):** `exclusion` é uma lista no MESMO formato do `audience`.
290
+ Quem cair na exclusão é REMOVIDO do disparo, mesmo que esteja no público. No `campaigns_estimate_audience`
291
+ o `exclusion` (e o `audience_mode`) vão TOP-LEVEL; ao CRIAR/EDITAR a campanha eles vão dentro de
292
+ `trigger_rules` (`trigger_rules.exclusion` e `trigger_rules.audience_mode`).
293
+
294
+ **Ações pós-disparo** (`template_params.bulk_actions`, campanhas QR/WAHA) aceitam, além de
295
+ `{assignee_id, priority, labels}`: `contact_labels: []` (aplica etiqueta ao CONTATO que recebeu) e
296
+ `attribute_changes: [{scope:'contact'|'conversation', key, value}]` (grava/sobrescreve atributo de quem recebeu).
297
+
298
+ SEMPRE rode `campaigns_estimate_audience` com o MESMO audience + audience_mode + exclusion antes de
299
+ criar a campanha e mostre a contagem ao usuário — estimativa e disparo usam o mesmo motor (não divergem).
282
300
 
283
301
  ## Agendamento (booking): idempotência e limites (2026-06)
284
302
 
@@ -130,10 +130,16 @@ Se `captain_assistant_id` foi setado (manual ou via automação):
130
130
 
131
131
  ### 6. Estado "pending" (status 2)
132
132
 
133
- Conversa em "pending" significa "aguardando algo":
134
- - Cliente respondeu mas agente ainda não viu
135
- - OU agente respondeu e tá aguardando cliente
136
- - Geralmente movida automaticamente por automação ("se 24h sem resposta → pending")
133
+ Conversa em "pending" significa "aguardando algo" — status HUMANO reativado (2026-07-20,
134
+ handoff consultor→gestor). Pendente só acontece por ação explícita:
135
+ - Botão "Deixar pendente" no painel
136
+ - Ação de automação `pending_conversation`
137
+ - Node `change_status` do FlowBuilder com `status: pending`
138
+ - Ferramenta nativa da IA (deixar conversa pendente)
139
+
140
+ Comportamentos importantes:
141
+ - Mensagem nova do cliente NÃO reabre conversa pendente (segue pendente na lista)
142
+ - Pendente ATRIBUÍDA notifica o responsável (o gestor recebe o aviso)
137
143
 
138
144
  ### 7. Resolução (status 1)
139
145
 
@@ -92,6 +92,7 @@ Todo node tem essa estrutura base:
92
92
  Regras: `attr_key` é **obrigatório**. `trigger_uuid` é preenchido pelo backend no save (NÃO envie; se enviar é preservado). 29/02 em ano não-bissexto colapsa p/ 28/02. Disparo vencido tem tolerância de 24h. Se `inbox_mode` for `fixed` e a caixa for desvinculada do flow depois, os envios daquele gatilho são **pulados** (visíveis em `flows_executions_list`). Caixa oficial WhatsApp exige template na 1ª mensagem se a conversa for criada nova (senão pula). Ativar o flow agenda automaticamente os contatos que já têm a data preenchida.
93
93
  - **`attr_source: 'conversation'` (novo 2026-07-18):** a data vem de um atributo de DATA da CONVERSA (não do contato). Dispara NAQUELA conversa (reabre se resolvida). `attr_key` = chave de atributo de conversa tipo Data; o horário-por-atributo lê da conversa. NÃO tem seletor de caixa (a conversa já é conhecida) — não envie `inbox_mode`/`inbox_id`. NÃO use `repeat_yearly` (conversa é evento pontual — vetado com keep_both). SEM agendamento retroativo: só agenda o que for escrito/alterado APÓS ativar (100% forward). Ausente = `'contact'` (comportamento legado).
94
94
  - **`overwrite_mode` (novo 2026-07-18):** `'replace'` (default) = trocar a data cancela o agendamento anterior (correção de data errada não dispara em dobro). `'keep_both'` = acumula (cada data seu próprio disparo) — **SÓ com `attr_source: 'conversation'`** (vetado no contato) e **incompatível com `repeat_yearly`**. Os disparos futuros pendentes ficam visíveis/canceláveis na aba "Agendados" do editor.
95
+ - **Ver/cancelar os agendamentos (novo 2026-07-20):** `flows_scheduled_firings_list` (flow_id) lista os disparos FUTUROS pendentes do Gatilho de Data (quando vai disparar, atributo/valor que gerou, fonte contato/conversa, contato/conversa alvo). `flows_scheduled_firings_cancel` (flow_id, id) cancela um — se já disparou responde 409 `ja_disparado` e nada muda. Só flows com Gatilho de Data; ADMIN + flowbuilder_manage.
95
96
 
96
97
  **Trigger `webhook` — Webhook Universal EMBUTIDO (novo 2026-06):** o flow pode ser disparado por um webhook próprio, criado automaticamente. Receita via API:
97
98
  1. Criar o flow normalmente (`flows_create`).
@@ -281,7 +282,7 @@ No editor visual esses destinos só aparecem quando a validação bate (computed
281
282
  | `contains` / `not_contains` | substring |
282
283
  | `starts_with` / `ends_with` | prefixo/sufixo |
283
284
  | `is_empty` / `is_not_empty` | vazio/preenchido (NÃO existe `is_present`/`is_blank`) |
284
- | `greater_than` / `less_than` | comparação numérica |
285
+ | `greater_than` / `less_than` | comparação numérica (atributo número) OU de DATA (atributo `date`, `value` ISO `YYYY-MM-DD`). O backend detecta data ISO no valor do atributo e compara como data; senão numérico |
285
286
  | `number_range` | faixa; `value` no formato `"min-max"` (ex `"10-50"`) |
286
287
  | `has_length` | comprimento exato (`value` = número) |
287
288
  | `is_number` / `is_letter` / `is_email` / `is_phone` | validação de formato |
@@ -299,10 +300,12 @@ No editor visual esses destinos só aparecem quando a validação bate (computed
299
300
  **Restrição por TIPO de atributo (a UI só oferece um subconjunto, e é o que faz sentido):**
300
301
  - **Texto/string:** `equal`, `not_equal`, `contains`, `not_contains`, `starts_with`, `ends_with`, `is_empty`, `is_not_empty`
301
302
  - **Número:** `equal`, `not_equal`, `greater_than`, `less_than`, `number_range`, `is_empty`, `is_not_empty`
302
- - **Lista/Data:** `equal`, `not_equal`, `contains`, `not_contains`
303
- - **Hora (`time`, novo 2026-07-06):** tratado como texto nas condições (`equal`, `not_equal`, `is_empty`, `is_not_empty`); valor canônico `"HH:MM"` 24h. Comparação maior/menor NÃO é suportada pra Hora — o uso principal desse tipo é alimentar o campo Horário do node `wait` (modo date, `waitTimeMode: "variable"`).
303
+ - **Lista:** `equal`, `not_equal`, `contains`, `not_contains`
304
+ - **Data (`date`):** `equal`, `not_equal`, **`greater_than`, `less_than`** (novo 2026-07-21). Em `greater_than`/`less_than` o `value` é data ISO `YYYY-MM-DD` (UI = calendário). Backend compara como DATA (dia).
305
+ - **Hora (`time`):** `equal`, `not_equal`, **`greater_than`, `less_than`** (novo 2026-07-21), `is_empty`, `is_not_empty`. `value` canônico `"HH:MM"` 24h (UI = seletor de hora). Backend compara por minutos-do-dia. (Também alimenta o campo Horário do node `wait`.)
306
+ - **Data e Hora (`datetime`):** `equal`, `not_equal`, **`greater_than`, `less_than`** (novo 2026-07-21). Em `greater_than`/`less_than` o `value` é ISO `YYYY-MM-DDTHH:MM` (UI = calendário + hora). Backend compara HORÁRIO DE PAREDE (dia+hora até o minuto, IGNORA o fuso — o valor gravado tem offset `-03:00` mas a comparação é feita no relógio local, não no instante UTC).
304
307
 
305
- Use operador numérico (`greater_than`, `less_than`, `number_range`) SÓ em atributo de tipo número.
308
+ `greater_than`/`less_than` valem em atributo número (valor numérico) E temporais `date`/`time`/`datetime` (o backend detecta o formato do valor: instante > dia > minutos > número). `number_range` SÓ em número. Nunca use maior/menor em texto/lista.
306
309
 
307
310
  **SLA — operador `sla_check` (2026-06):** verifica se a conversa está dentro/fora do prazo de SLA. A regra NÃO usa `field`, só `value` (código fixo):
308
311
 
@@ -886,7 +889,7 @@ Nodes nunca devem ficar com a mesma coordenada `(x, y)`. Se dois nodes têm posi
886
889
  | `aiIntentOptions` (array de strings) no node ai | Ignorado | `aiIntents: [{name}]` |
887
890
  | `match_mode` no `message_received` | Ignorado | `match_type` (`exact`/`contains`) |
888
891
  | `label` (singular) em `label_added`/`label_removed` | Ignorado | `label_names: [...]` |
889
- | operador numérico (`greater_than` etc) em atributo texto | UI não oferece; semântica errada | usar só em atributo número |
892
+ | `greater_than`/`less_than` em atributo texto/lista | UI não oferece; semântica errada | usar só em atributo número ou `date` (data ISO) |
890
893
  | inboxes em flow `ai_tool` | Validação rejeita | ai_tool não tem inboxes |
891
894
  | `waitTime: "60"` (string) | Espera Integer | `waitTime: 60` |
892
895
  | `inbox_ids` aninhado em `{flow:{...}}` | No MCP, achata-se sozinho | Passa `inbox_ids: [1, 2]` no nível raiz |
@@ -294,7 +294,7 @@ Funis agora têm visibilidade por usuário. Um funil é visível pra alguém qua
294
294
  - é admin da conta, OU
295
295
  - tem permissão `kanban_view`/`kanban_manage` (custom role), OU
296
296
  - o funil está aberto a todos, OU
297
- - a pessoa participa do funil (está em `settings.agents` ou tem card atribuído)
297
+ - a pessoa participa do funil (está em `settings.agents`, OU é membro de um TIME em `settings.teams` — novo 2026-07-21, membros resolvidos ao vivo — ou tem card atribuído)
298
298
 
299
299
  **Efeitos práticos nas tools:**
300
300
  - `funnels_list` retorna SÓ os funis visíveis pro usuário do token
package/dist/tools.js CHANGED
@@ -283,7 +283,7 @@ function registerListCategoriesTool(server, allEndpoints) {
283
283
  // Helps LLMs build correct flow_data without hitting trial-and-error on
284
284
  // node types, action keys, source handles, etc.
285
285
  function registerFlowsSchemaReferenceTool(server) {
286
- const reference = `LIONCHAT FLOW BUILDER — SCHEMA REFERENCE (atualizado 2026-07-10)
286
+ const reference = `LIONCHAT FLOW BUILDER — SCHEMA REFERENCE (atualizado 2026-07-21)
287
287
 
288
288
  flow_data tem o formato Vue Flow: { nodes: [...], edges: [...] }.
289
289
 
@@ -423,7 +423,11 @@ flow_data tem o formato Vue Flow: { nodes: [...], edges: [...] }.
423
423
  NAO no formato "37:etapa"), pagetrack_visited/pagetrack_event,
424
424
  sla_check (SO value, codigo fixo: frt_breached/frt_ok/nrt_breached/nrt_ok/rt_breached/rt_ok/has_sla/no_sla;
425
425
  frt=primeira resp, nrt=proxima, rt=resolucao; _ok exige politica de SLA aplicada).
426
- Operador numerico SO em atributo numero.
426
+ greater_than/less_than: atributo numero (valor numerico) OU temporais (novo 2026-07-21) —
427
+ date (value ISO YYYY-MM-DD, compara por DIA), time (value "HH:MM", compara minutos-do-dia),
428
+ datetime (value "YYYY-MM-DDTHH:MM", compara HORARIO DE PAREDE — ignora fuso/offset).
429
+ Backend detecta o FORMATO do value: instante > dia > minutos > numero.
430
+ number_range SO em numero. NUNCA maior/menor em texto/lista.
427
431
 
428
432
  ▸ action
429
433
  data: { label, items: [ { key, config: {...} } ] }
package/dist/tools.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
package/endpoints.json CHANGED
@@ -7,7 +7,7 @@
7
7
  "description": "Retorna detalhes da conta atualmente autenticada. Inclui plano, usage limits, custom_attributes, configurações gerais. Use pra entender contexto antes de outras ações.",
8
8
  "category": "Conta",
9
9
  "params": [],
10
- "returns": "{ id, name, plan, usage_limits, custom_attributes, domain, locale, ... }",
10
+ "returns": "{ id, name, plan, usage_limits, custom_attributes, domain, locale, ... } Inclui timezone (fuso próprio da conta, 2026-07-21, default America/Sao_Paulo) no topo do payload.",
11
11
  "common_use_cases": [
12
12
  "Verificar plano e limites antes de criar recursos",
13
13
  "Pegar locale/timezone pra formatar saída",
@@ -1137,6 +1137,34 @@
1137
1137
  "location": "query",
1138
1138
  "required": false,
1139
1139
  "description": "Ordenação: last_activity_at_desc (MAIS RECENTES, padrão), last_activity_at_asc, created_at_desc (últimas criadas), created_at_asc (mais antigas), priority_desc (prioridade alta primeiro), waiting_since_desc (esperando há mais tempo)"
1140
+ },
1141
+ {
1142
+ "name": "captain_assistant",
1143
+ "type": "string",
1144
+ "location": "query",
1145
+ "required": false,
1146
+ "description": "Filtra por Agente de IA (Captain): 'any' = conversas com IA ativa (captain_assistant_id preenchido); 'none' = sem IA / atendimento humano; ou o ID do assistente para filtrar por um agente especifico. Ex.: 'todas as conversas na mao da IA' = any."
1147
+ },
1148
+ {
1149
+ "name": "quick_q",
1150
+ "type": "string",
1151
+ "location": "query",
1152
+ "required": false,
1153
+ "description": "Busca rapida na lista (min 3 caracteres): casa nome, e-mail, telefone ou identifier do contato; se for so digitos, casa tambem o numero da conversa (display_id). Respeita o filtro de status. Para busca ampla (CPF, atributo, conteudo de mensagem) use conversations_search."
1154
+ },
1155
+ {
1156
+ "name": "source_id",
1157
+ "type": "string",
1158
+ "location": "query",
1159
+ "required": false,
1160
+ "description": "Filtra pela origem do contact_inbox (source_id) — ex.: '5511999999999@c.us' do WhatsApp."
1161
+ },
1162
+ {
1163
+ "name": "updated_within",
1164
+ "type": "integer",
1165
+ "location": "query",
1166
+ "required": false,
1167
+ "description": "So conversas atualizadas nos ultimos N segundos (ex.: 3600 = ultima hora). Util para polling de atividade recente."
1140
1168
  }
1141
1169
  ],
1142
1170
  "returns": "meta (contadores globais) + payload (array de conversas)",
@@ -2265,7 +2293,7 @@
2265
2293
  "description": "FUNIL = KANBAN (pipeline/board) — no LionChat sao a mesma coisa. Lista todos os funis com contagem de itens por etapa (cache 5min). NAO e paginado. ACESSO (2026-06): retorna SO os funis visiveis pro usuario do token (admin, permissao kanban, funil aberto ou participante). Funil nao-visivel da 404 no show.",
2266
2294
  "category": "Funis",
2267
2295
  "params": [],
2268
- "returns": "array de funis (cada um com stage_items_count); sem meta/paginacao",
2296
+ "returns": "array de funis (cada um com stage_items_count); sem meta/paginacao Inclui resolved_agents: [{id, name, avatar_url, via: 'agent'|'team'}] — quem efetivamente participa do funil (2026-07-21).",
2269
2297
  "common_use_cases": [
2270
2298
  "Dashboard: contar/exibir funis",
2271
2299
  "Buscar com filtros antes de outra operação",
@@ -2316,7 +2344,7 @@
2316
2344
  "type": "object",
2317
2345
  "location": "body",
2318
2346
  "required": false,
2319
- "description": "Objeto de configuracoes do funil. Chaves: goals[], agents[] e automations[] (automacoes do funil). Cada automacao: {id, enabled, trigger_type: 'card_created'|'stage_moved'|'status_change', trigger_value (id da etapa p/ stage_moved; status p/ status_change; vazio p/ card_created), action: 'move_to_stage'|'assign_agent'|'create_note'|'update_checklist'|'apply_checklist_template'|'notify_team'|'duplicate_item'|'send_webhook', action_config: {} (ex.: move_to_stage->{stage}; assign_agent->{agent_id}; create_note->{note_text}; apply_checklist_template->{template_id}; notify_team->{message}; send_webhook->{webhook_url}; duplicate_item->{funnel_id,stage})}. ATENCAO: gravar settings SUBSTITUI o objeto inteiro — leia o funil (show) e reenvie settings completo (goals+agents+automations)."
2347
+ "description": "Objeto de configuracoes do funil. Chaves: goals[], agents[] e automations[] (automacoes do funil). Cada automacao: {id, enabled, trigger_type: 'card_created'|'stage_moved'|'status_change', trigger_value (id da etapa p/ stage_moved; status p/ status_change; vazio p/ card_created), action: 'move_to_stage'|'assign_agent'|'create_note'|'update_checklist'|'apply_checklist_template'|'notify_team'|'duplicate_item'|'send_webhook', action_config: {} (ex.: move_to_stage->{stage}; assign_agent->{agent_id}; create_note->{note_text}; apply_checklist_template->{template_id}; notify_team->{message}; send_webhook->{webhook_url}; duplicate_item->{funnel_id,stage})}. ATENCAO: gravar settings SUBSTITUI o objeto inteiro — leia o funil (show) e reenvie settings completo (goals+agents+automations). NOVO (2026-07-21): settings.teams[] = [{id: <team_id>}] — vincula TIMES ao funil: membros do time ganham acesso e entram no rodízio, resolvidos AO VIVO (mudou o time, mudou o funil). Lista efetiva = agents[] + membros dos teams[]; vazia = funil aberto a todos. IMPORTANTE: settings é substituído por inteiro — reenvie completo (goals+agents+teams+automations)."
2320
2348
  },
2321
2349
  {
2322
2350
  "name": "funnel.global_custom_attributes",
@@ -2355,7 +2383,7 @@
2355
2383
  "description": "ID do funil"
2356
2384
  }
2357
2385
  ],
2358
- "returns": "funil (objeto completo com associações)",
2386
+ "returns": "funil (objeto completo com associações) Inclui resolved_agents: [{id, name, avatar_url, via: 'agent'|'team'}] — quem efetivamente participa do funil (2026-07-21).",
2359
2387
  "common_use_cases": [
2360
2388
  "Ver dados completos antes de editar",
2361
2389
  "Verificar estado atual antes de uma ação",
@@ -2397,10 +2425,10 @@
2397
2425
  "type": "object",
2398
2426
  "location": "body",
2399
2427
  "required": false,
2400
- "description": "Objeto de configuracoes do funil. Chaves: goals[], agents[] e automations[] (automacoes do funil). Cada automacao: {id (formato 'automation_<timestamp_ms>'), enabled: true, trigger_type: 'card_created'|'stage_moved'|'status_change', trigger_value SEMPRE preenchido ('card_created' literal p/ card_created; chave da etapa de destino no hash funnel.stages p/ stage_moved; 'won'|'lost' p/ status_change), action: 'move_to_stage'|'assign_agent'|'create_note'|'update_checklist'|'apply_checklist_template'|'notify_team'|'duplicate_item'|'send_webhook', action_config: {} (move_to_stage->{stage}; assign_agent->{agent_id}; create_note->{note_text}; update_checklist->{checklist_updates:[{checklist_item_id,completed,text}]}; apply_checklist_template->{template_id}; notify_team->{message}; send_webhook->{webhook_url}; duplicate_item->{funnel_id,stage})}. Regras: trigger_value vazio ou enabled=false fazem a UI descartar a automacao no proximo salvar do usuario; stage_moved + move_to_stage nunca executa (anti-loop); notify_team hoje so registra em log (nao notifica ninguem); update_checklist nao aparece na UI (so via API). ATENCAO: gravar settings SUBSTITUI o objeto inteiro — leia o funil (show) e reenvie settings completo (goals+agents+automations)."
2428
+ "description": "Objeto de configuracoes do funil. Chaves: goals[], agents[] e automations[] (automacoes do funil). Cada automacao: {id (formato 'automation_<timestamp_ms>'), enabled: true, trigger_type: 'card_created'|'stage_moved'|'status_change', trigger_value SEMPRE preenchido ('card_created' literal p/ card_created; chave da etapa de destino no hash funnel.stages p/ stage_moved; 'won'|'lost' p/ status_change), action: 'move_to_stage'|'assign_agent'|'create_note'|'update_checklist'|'apply_checklist_template'|'notify_team'|'duplicate_item'|'send_webhook', action_config: {} (move_to_stage->{stage}; assign_agent->{agent_id}; create_note->{note_text}; update_checklist->{checklist_updates:[{checklist_item_id,completed,text}]}; apply_checklist_template->{template_id}; notify_team->{message}; send_webhook->{webhook_url}; duplicate_item->{funnel_id,stage})}. Regras: trigger_value vazio ou enabled=false fazem a UI descartar a automacao no proximo salvar do usuario; stage_moved + move_to_stage nunca executa (anti-loop); notify_team hoje so registra em log (nao notifica ninguem); update_checklist nao aparece na UI (so via API). ATENCAO: gravar settings SUBSTITUI o objeto inteiro — leia o funil (show) e reenvie settings completo (goals+agents+automations). NOVO (2026-07-21): settings.teams[] = [{id: <team_id>}] — vincula TIMES ao funil: membros do time ganham acesso e entram no rodízio, resolvidos AO VIVO (mudou o time, mudou o funil). Lista efetiva = agents[] + membros dos teams[]; vazia = funil aberto a todos. IMPORTANTE: settings é substituído por inteiro — reenvie completo (goals+agents+teams+automations)."
2401
2429
  }
2402
2430
  ],
2403
- "returns": "funil atualizado",
2431
+ "returns": "funil atualizado Inclui resolved_agents: [{id, name, avatar_url, via: 'agent'|'team'}] — quem efetivamente participa do funil (2026-07-21).",
2404
2432
  "common_use_cases": [
2405
2433
  "Edição parcial de funil",
2406
2434
  "Alteração de status/estado",
@@ -3798,7 +3826,14 @@
3798
3826
  "type": "string",
3799
3827
  "location": "body",
3800
3828
  "required": true,
3801
- "description": "JSON mapeando coluna do CSV -> campo do contato. Campos aceitos: name, email, phone_number, company, city, labels, instagram, facebook, linkedin, twitter (demais chaves sao ignoradas)"
3829
+ "description": "JSON mapeando coluna do CSV -> campo do contato. Campos aceitos: name, email, phone_number, company, city, labels, instagram, facebook, linkedin, twitter (demais chaves sao ignoradas) Chaves de destino também aceitam prefixo 'custom_attribute:<chave>' (atributo personalizado) e 'cadastral:<campo>' (dados cadastrais)."
3830
+ },
3831
+ {
3832
+ "name": "value_mappings",
3833
+ "type": "object",
3834
+ "location": "body",
3835
+ "required": false,
3836
+ "description": "De-para de VALORES por coluna (2026-07-21), p/ atributos de LISTA e campos cadastrais: {\"<mapping_key>\": {\"<valor da planilha>\": \"<opção do sistema>\" | \"\"}}. mapping_key é PREFIXADO ('custom_attribute:<chave>' ou 'cadastral:<campo>'). Chave ausente = valor cru; opção vazia (\"\") = IGNORAR o valor (campo fica em branco, sem aviso). Match ignora espaços e maiúsculas. Malformado = 422."
3802
3837
  }
3803
3838
  ],
3804
3839
  "returns": "{ import_id } — use import_status para acompanhar o progresso",
@@ -8651,7 +8686,7 @@
8651
8686
  "type": "string",
8652
8687
  "location": "body",
8653
8688
  "required": false,
8654
- "description": "daily, weekly, monthly, yearly"
8689
+ "description": "Frequência da recorrência. Valores REAIS (corrigido 2026-07-21; 'daily/weekly/monthly/yearly' NUNCA existiram): every_day, every_day_at_time, every_week, every_biweekly, every_month, every_year, every_weekday (dias úteis), every_weekend. Aceita a string direta ou {type: '<valor>'}."
8655
8690
  }
8656
8691
  ],
8657
8692
  "returns": "mensagem agendada criado (com novo ID)",
@@ -8671,7 +8706,7 @@
8671
8706
  "method": "PATCH",
8672
8707
  "path": "/api/v1/accounts/{account_id}/conversations/{conversation_id}/scheduled_messages/{id}",
8673
8708
  "title": "Atualizar Agendada",
8674
- "description": "Atualiza mensagem agendada (wrapper scheduled_message). Campos: content, scheduled_at, title, inbox_id, is_recurrent, period, recurrence_count.",
8709
+ "description": "Atualiza mensagem agendada (wrapper scheduled_message). Campos: content, scheduled_at, title, inbox_id, is_recurrent, period, recurrence_count. (2026-07-21) Trocar o period agora PERSISTE; editar scheduled_at REARMA o envio; mensagem sent/failed editada com data futura VOLTA a pending (reativação — só fluxo manual).",
8675
8710
  "category": "Mensagens Agendadas",
8676
8711
  "params": [
8677
8712
  {
@@ -9733,7 +9768,7 @@
9733
9768
  "type": "array",
9734
9769
  "location": "body",
9735
9770
  "required": true,
9736
- "description": "[{action_name, action_params[]}]"
9771
+ "description": "[{action_name, action_params[]}] Actions novas (2026-07-21): 'update_contact_attribute' e 'update_conversation_attribute' — action_params: [{attribute_key, value}], value aceita texto fixo OU variável Liquid (ex. {{contact.phone_number}}); grava atributo personalizado com MERGE (não apaga os demais) e passa pelo porteiro de data. 'pending_conversation' (2026-07-20, sem params) — deixa a conversa PENDENTE (handoff; mensagem nova do cliente NÃO reabre)."
9737
9772
  },
9738
9773
  {
9739
9774
  "name": "active",
@@ -9831,7 +9866,7 @@
9831
9866
  "type": "array",
9832
9867
  "location": "body",
9833
9868
  "required": false,
9834
- "description": "Acoes"
9869
+ "description": "Acoes Actions novas (2026-07-21): 'update_contact_attribute' e 'update_conversation_attribute' — action_params: [{attribute_key, value}], value aceita texto fixo OU variável Liquid (ex. {{contact.phone_number}}); grava atributo personalizado com MERGE (não apaga os demais) e passa pelo porteiro de data. 'pending_conversation' (2026-07-20, sem params) — deixa a conversa PENDENTE (handoff; mensagem nova do cliente NÃO reabre)."
9835
9870
  }
9836
9871
  ],
9837
9872
  "returns": "regra de automação atualizado",
@@ -13757,7 +13792,7 @@
13757
13792
  "method": "POST",
13758
13793
  "path": "/api/v1/accounts/{account_id}/support_access",
13759
13794
  "title": "Solicitar Acesso de Suporte",
13760
- "description": "Concede acesso de suporte (SuperAdmin) à conta. Obrigatório: support_agent_email.",
13795
+ "description": "Concede acesso de suporte (SuperAdmin) à conta. Obrigatório: support_agent_email. Grantee pode ser SuperAdmin OU usuário marcado como 'usuário de suporte' no Super Admin (isenção de vaga). 422 se o e-mail já for agente pago regular da conta (sem grant prévio).",
13761
13796
  "category": "Acesso de Suporte",
13762
13797
  "params": [
13763
13798
  {
@@ -13780,6 +13815,20 @@
13780
13815
  "location": "body",
13781
13816
  "required": false,
13782
13817
  "description": "Texto de consentimento LGPD"
13818
+ },
13819
+ {
13820
+ "name": "duration_hours",
13821
+ "type": "integer",
13822
+ "location": "body",
13823
+ "required": false,
13824
+ "description": "Duração do acesso em horas (respeita o teto do servidor). Ignorado quando lifetime=true."
13825
+ },
13826
+ {
13827
+ "name": "lifetime",
13828
+ "type": "boolean",
13829
+ "location": "body",
13830
+ "required": false,
13831
+ "description": "true = acesso VITALÍCIO (2026-07-21): não expira e não agenda revogação automática."
13783
13832
  }
13784
13833
  ],
13785
13834
  "returns": "acesso de suporte criado (com novo ID)",
@@ -20186,6 +20235,13 @@
20186
20235
  "location": "body",
20187
20236
  "required": false,
20188
20237
  "description": "Lista COMPLETA das caixas desejadas para o agente, com o cargo (reconcilia: adiciona, remove e ajusta o cargo). Array de objetos { inbox_id, supervisor }, ex: [{\"inbox_id\": 82, \"supervisor\": false}, {\"inbox_id\": 91, \"supervisor\": true}]. supervisor=false => Agente; supervisor=true => Supervisor. Omitir o campo mantem as caixas atuais intactas. Use lionchat_inboxes_list para obter os IDs."
20238
+ },
20239
+ {
20240
+ "name": "email",
20241
+ "type": "string",
20242
+ "location": "body",
20243
+ "required": false,
20244
+ "description": "Novo e-mail do agente (2026-07-21). A troca exige confirmação: o link vai pro e-mail NOVO e o antigo continua valendo até confirmar (sem lockout). Agente ainda não confirmado troca direto."
20189
20245
  }
20190
20246
  ],
20191
20247
  "returns": "agente atualizado",
@@ -20289,7 +20345,7 @@
20289
20345
  "type": "string",
20290
20346
  "location": "body",
20291
20347
  "required": true,
20292
- "description": "Tipo de exibicao: text, number, link, date, time (Hora 24h — valor canonico HH:MM; fuso mora em attribute_timezone), list, checkbox, currency, percent ou secret"
20348
+ "description": "Tipo de exibicao do atributo: text, number, currency, percent, link, date, list, checkbox, time, datetime. NOVO 'datetime' = Data e Hora (interno ISO 8601 com offset do fuso do atributo; usa attribute_timezone, default America/Sao_Paulo; exibe DD/MM/AAAA - HH:MM). ATENCAO: 'datetime' NAO entra no Gatilho de Data nem nos campos Data/Horario do no Esperar do FlowBuilder — esses continuam exigindo 'date' e 'time' SEPARADOS."
20293
20349
  },
20294
20350
  {
20295
20351
  "name": "attribute_timezone",
@@ -20409,7 +20465,7 @@
20409
20465
  "type": "string",
20410
20466
  "location": "body",
20411
20467
  "required": false,
20412
- "description": "Tipo de exibicao: text, number, link, date, time (Hora 24h — valor canonico HH:MM; fuso mora em attribute_timezone), list, checkbox, currency, percent ou secret"
20468
+ "description": "Tipo de exibicao do atributo: text, number, currency, percent, link, date, list, checkbox, time, datetime. NOVO 'datetime' = Data e Hora (interno ISO 8601 com offset do fuso do atributo; usa attribute_timezone, default America/Sao_Paulo; exibe DD/MM/AAAA - HH:MM). ATENCAO: 'datetime' NAO entra no Gatilho de Data nem nos campos Data/Horario do no Esperar do FlowBuilder — esses continuam exigindo 'date' e 'time' SEPARADOS."
20413
20469
  },
20414
20470
  {
20415
20471
  "name": "attribute_timezone",
@@ -20731,7 +20787,7 @@
20731
20787
  "type": "object",
20732
20788
  "location": "body",
20733
20789
  "required": false,
20734
- "description": "Regras de disparo (ongoing/Website): { url, time_on_page }"
20790
+ "description": "Regras da campanha (hash aberto). Carrega: 'audience_mode' ('sum'|'all', combinacao das secoes de publico) e 'exclusion' (array no MESMO formato do audience — publico a negativar/excluir do disparo). Ex.: {\"audience_mode\":\"sum\",\"exclusion\":[{\"type\":\"ContactLabel\",\"id\":12}]}. audience_mode top-level so vale no estimate_audience; ao criar/editar ele PRECISA ir aqui dentro."
20735
20791
  },
20736
20792
  {
20737
20793
  "name": "template_params",
@@ -20901,14 +20957,21 @@
20901
20957
  "type": "array",
20902
20958
  "location": "body",
20903
20959
  "required": true,
20904
- "description": "Critérios de público — array de seções combináveis: { type: 'Label', id } | { type: 'Funnel', id, stages: ['slug_etapa'], include_won: bool, include_lost: bool } | { type: 'ConversationAttribute', key, value } (atributo personalizado da conversa, ex: origem_do_lead=instagram)"
20960
+ "description": "Lista de secoes do publico-alvo (uniao/intersecao conforme audience_mode). Cada secao: {type, ...}. Tipos: 'Label' {id} (etiqueta de CONVERSA); 'Funnel' {id, stage_id?} (etapa de funil Kanban); 'ConversationAttribute' {key, value}; 'ContactLabel' {id} (etiqueta de CONTATO); 'ContactAttribute' {key, value}; 'CardAttribute' {key, value} (atributo do card Kanban); 'AgentTeam' {assignee_ids:[], team_ids:[]} (responsavel atual OU time da conversa)."
20905
20961
  },
20906
20962
  {
20907
20963
  "name": "audience_mode",
20908
20964
  "type": "string",
20909
20965
  "location": "body",
20910
20966
  "required": false,
20911
- "description": "Como combinar as seções do público: 'sum' (união, default — contato em QUALQUER seção entra) ou 'all' (interseção — precisa atender TODAS as seções preenchidas)"
20967
+ "description": "Como combinar as secoes: 'sum' (uniao — quem estiver em QUALQUER secao, padrao) | 'all' (intersecao — quem estiver em TODAS as secoes preenchidas). No estimate vai top-level; ao CRIAR a campanha o modo vai dentro de trigger_rules.audience_mode."
20968
+ },
20969
+ {
20970
+ "name": "exclusion",
20971
+ "type": "array",
20972
+ "location": "query",
20973
+ "required": false,
20974
+ "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)."
20912
20975
  }
20913
20976
  ],
20914
20977
  "returns": "{ count: <int> }",
@@ -24902,5 +24965,242 @@
24902
24965
  "related_tools": [
24903
24966
  "lionchat_copilot_settings_show"
24904
24967
  ]
24968
+ },
24969
+ {
24970
+ "id": "lionchat_flows_scheduled_firings_list",
24971
+ "method": "GET",
24972
+ "path": "/api/v1/accounts/{account_id}/flows/{flow_id}/scheduled_firings",
24973
+ "title": "Agendamentos do Gatilho de Data (Agendados)",
24974
+ "description": "Lista os disparos FUTUROS pendentes do Gatilho de Data de um flow (aba 'Agendados'). Cada item mostra quando vai disparar, o atributo/valor que gerou o agendamento, a fonte (contato ou conversa) e o contato/conversa alvo. So flows com Gatilho de Data. ADMIN + flowbuilder_manage. Paginado.",
24975
+ "category": "Flows",
24976
+ "params": [
24977
+ {
24978
+ "name": "flow_id",
24979
+ "type": "integer",
24980
+ "location": "path",
24981
+ "required": true,
24982
+ "description": "ID do flow"
24983
+ },
24984
+ {
24985
+ "name": "page",
24986
+ "type": "integer",
24987
+ "location": "query",
24988
+ "required": false,
24989
+ "description": "Pagina (default 1)"
24990
+ },
24991
+ {
24992
+ "name": "per",
24993
+ "type": "integer",
24994
+ "location": "query",
24995
+ "required": false,
24996
+ "description": "Itens por pagina (default 25, max 100)"
24997
+ }
24998
+ ],
24999
+ "returns": "{ payload: [{ id, fire_at (ISO), occurrence_date, attr_key, attr_value, attr_source ('contact'|'conversation'), contact_id, contact_name, conversation_id }], meta: { count } }",
25000
+ "common_use_cases": [
25001
+ "Ver quem esta agendado para disparar e quando",
25002
+ "Auditar os agendamentos futuros de um flow de Gatilho de Data"
25003
+ ],
25004
+ "related_tools": [
25005
+ "lionchat_flows_scheduled_firings_cancel",
25006
+ "lionchat_flows_executions_list",
25007
+ "lionchat_flows_show"
25008
+ ]
25009
+ },
25010
+ {
25011
+ "id": "lionchat_flows_scheduled_firings_cancel",
25012
+ "method": "POST",
25013
+ "path": "/api/v1/accounts/{account_id}/flows/{flow_id}/scheduled_firings/{id}/cancel",
25014
+ "title": "Cancelar um agendamento do Gatilho de Data",
25015
+ "description": "Cancela um disparo futuro pendente do Gatilho de Data (aba 'Agendados'). Idempotente/seguro: se o disparo JA aconteceu, responde 409 {error:'ja_disparado'} e nada muda. ADMIN + flowbuilder_manage.",
25016
+ "category": "Flows",
25017
+ "params": [
25018
+ {
25019
+ "name": "flow_id",
25020
+ "type": "integer",
25021
+ "location": "path",
25022
+ "required": true,
25023
+ "description": "ID do flow"
25024
+ },
25025
+ {
25026
+ "name": "id",
25027
+ "type": "integer",
25028
+ "location": "path",
25029
+ "required": true,
25030
+ "description": "ID do agendamento (scheduled_firing) a cancelar"
25031
+ }
25032
+ ],
25033
+ "returns": "200 { id, status: 'cancelled' } | 409 { error: 'ja_disparado' } se ja disparou | 404 se nao encontrado",
25034
+ "common_use_cases": [
25035
+ "Cancelar um disparo futuro agendado por engano"
25036
+ ],
25037
+ "related_tools": [
25038
+ "lionchat_flows_scheduled_firings_list"
25039
+ ]
25040
+ },
25041
+ {
25042
+ "id": "lionchat_contacts_import_validate",
25043
+ "method": "POST",
25044
+ "path": "/api/v1/accounts/{account_id}/contacts/import_validate",
25045
+ "title": "Validar Import de Contatos (pré-check)",
25046
+ "description": "Valida o CSV de import ANTES de importar: confere tipos dos valores contra os atributos de destino (data, número, lista...) e devolve os problemas por linha/coluna. Aceita os mesmos file + mappings + value_mappings do import_csv. Use pra conferir antes de rodar o import de verdade.",
25047
+ "category": "Contatos",
25048
+ "params": [
25049
+ {
25050
+ "name": "file",
25051
+ "type": "string",
25052
+ "location": "body",
25053
+ "required": true,
25054
+ "description": "Arquivo CSV (mesmo formato do import_csv)"
25055
+ },
25056
+ {
25057
+ "name": "mappings",
25058
+ "type": "object",
25059
+ "location": "body",
25060
+ "required": false,
25061
+ "description": "Mapeamento coluna→campo (mesmo formato do import_csv, com prefixos custom_attribute:/cadastral:)"
25062
+ },
25063
+ {
25064
+ "name": "value_mappings",
25065
+ "type": "object",
25066
+ "location": "body",
25067
+ "required": false,
25068
+ "description": "De-para de valores (mesmo formato do import_csv)"
25069
+ }
25070
+ ],
25071
+ "returns": "Resultado da validação com problemas por linha/coluna (tipos incompatíveis, valores fora da lista)",
25072
+ "common_use_cases": [
25073
+ "Conferir a planilha antes do import definitivo"
25074
+ ],
25075
+ "related_tools": [
25076
+ "lionchat_contacts_create_8",
25077
+ "lionchat_contacts_create_7",
25078
+ "lionchat_contacts_show_1"
25079
+ ]
25080
+ },
25081
+ {
25082
+ "id": "lionchat_account_settings_update",
25083
+ "method": "PUT",
25084
+ "path": "/api/v1/accounts/{account_id}",
25085
+ "title": "Atualizar Configurações da Conta",
25086
+ "description": "Atualiza as configurações GERAIS da conta (Configurações > Conta). Inclui o FUSO HORÁRIO próprio da conta (novo 2026-07-21): timezone IANA, default America/Sao_Paulo — caixas novas e o Gatilho de Data do FlowBuilder herdam. ATENÇÃO: timezone inválido é DESCARTADO em silêncio (não dá erro) — confirme com account_show depois. Não confundir com account_update (que é o PERFIL do usuário logado).",
25087
+ "category": "Conta",
25088
+ "params": [
25089
+ {
25090
+ "name": "name",
25091
+ "type": "string",
25092
+ "location": "body",
25093
+ "required": false,
25094
+ "description": "Nome da conta"
25095
+ },
25096
+ {
25097
+ "name": "locale",
25098
+ "type": "string",
25099
+ "location": "body",
25100
+ "required": false,
25101
+ "description": "Idioma da conta (ex. pt_BR)"
25102
+ },
25103
+ {
25104
+ "name": "support_email",
25105
+ "type": "string",
25106
+ "location": "body",
25107
+ "required": false,
25108
+ "description": "E-mail de suporte da conta"
25109
+ },
25110
+ {
25111
+ "name": "domain",
25112
+ "type": "string",
25113
+ "location": "body",
25114
+ "required": false,
25115
+ "description": "Domínio da conta"
25116
+ },
25117
+ {
25118
+ "name": "timezone",
25119
+ "type": "string",
25120
+ "location": "body",
25121
+ "required": false,
25122
+ "description": "Fuso horário IANA da conta (ex. America/Sao_Paulo, America/Manaus). Gravado em custom_attributes.timezone; vem no topo do payload da conta. Inválido = ignorado em silêncio."
25123
+ }
25124
+ ],
25125
+ "returns": "Conta atualizada (payload completo, com timezone no topo)",
25126
+ "common_use_cases": [
25127
+ "Mudar o fuso horário da conta",
25128
+ "Atualizar nome/idioma/e-mail de suporte"
25129
+ ],
25130
+ "related_tools": [
25131
+ "lionchat_account_show",
25132
+ "lionchat_current_account"
25133
+ ]
25134
+ },
25135
+ {
25136
+ "id": "lionchat_team_members_kanban_reassignment_preview",
25137
+ "method": "POST",
25138
+ "path": "/api/v1/accounts/{account_id}/teams/{team_id}/team_members/kanban_reassignment_preview",
25139
+ "title": "Prévia de reatribuição de cards (remover agente do time)",
25140
+ "description": "Antes de remover agentes de um time VINCULADO a funil Kanban (settings.teams), mostra quais cards ficariam órfãos por agente que perde acesso. Envie user_ids = a lista COMPLETA desejada de membros (quem ficar de fora é tratado como removido).",
25141
+ "category": "Times",
25142
+ "params": [
25143
+ {
25144
+ "name": "team_id",
25145
+ "type": "integer",
25146
+ "location": "path",
25147
+ "required": true,
25148
+ "description": "ID do time"
25149
+ },
25150
+ {
25151
+ "name": "user_ids",
25152
+ "type": "array",
25153
+ "location": "body",
25154
+ "required": true,
25155
+ "description": "Lista COMPLETA de membros desejada após a mudança (não a lista de removidos)"
25156
+ }
25157
+ ],
25158
+ "returns": "{ reassignments: [...] } — por agente removido, os funis/cards afetados que precisarão de novo dono",
25159
+ "common_use_cases": [
25160
+ "Ver o impacto antes de tirar alguém de um time ligado a funil"
25161
+ ],
25162
+ "related_tools": [
25163
+ "lionchat_team_members_remove_agents_with_reassignment",
25164
+ "lionchat_funnels_show"
25165
+ ]
25166
+ },
25167
+ {
25168
+ "id": "lionchat_team_members_remove_agents_with_reassignment",
25169
+ "method": "POST",
25170
+ "path": "/api/v1/accounts/{account_id}/teams/{team_id}/team_members/remove_agents_with_reassignment",
25171
+ "title": "Remover agentes do time reatribuindo os cards",
25172
+ "description": "Remove agentes de um time vinculado a funil Kanban REATRIBUINDO os cards deles em uma operação atômica (2026-07-21). Use a prévia (kanban_reassignment_preview) antes pra montar o destino por funil. 422 {error: 'reassignment_failed'} se algum destino for inválido — nada é aplicado.",
25173
+ "category": "Times",
25174
+ "params": [
25175
+ {
25176
+ "name": "team_id",
25177
+ "type": "integer",
25178
+ "location": "path",
25179
+ "required": true,
25180
+ "description": "ID do time"
25181
+ },
25182
+ {
25183
+ "name": "user_ids",
25184
+ "type": "array",
25185
+ "location": "body",
25186
+ "required": true,
25187
+ "description": "Lista COMPLETA de membros desejada após a mudança"
25188
+ },
25189
+ {
25190
+ "name": "reassignments",
25191
+ "type": "object",
25192
+ "location": "body",
25193
+ "required": false,
25194
+ "description": "Destino dos cards por funil pra cada agente removido (shape da prévia)"
25195
+ }
25196
+ ],
25197
+ "returns": "200 com o time atualizado | 422 { error: 'reassignment_failed', reason } (atômico — nada muda)",
25198
+ "common_use_cases": [
25199
+ "Tirar um agente do time sem deixar cards órfãos no funil"
25200
+ ],
25201
+ "related_tools": [
25202
+ "lionchat_team_members_kanban_reassignment_preview",
25203
+ "lionchat_team_members_destroy"
25204
+ ]
24905
25205
  }
24906
25206
  ]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lionchat/mcp-server",
3
- "version": "1.0.5",
3
+ "version": "1.2.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",