@lionchat/mcp-server 0.5.7 → 0.5.9

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.
@@ -261,6 +261,57 @@ Pra dados fixos que se repetem (slogans, endereços, horários):
261
261
 
262
262
  Nunca hard-code esses dados em respostas geradas.
263
263
 
264
+ ## Variável dinâmica: atributo do contato escolhe a variável da conta (2026-07)
265
+
266
+ Receita pra quando a mensagem precisa puxar um valor que DEPENDE de um campo do contato.
267
+ Exemplo clássico: contato tem `unidade_de_atendimento` (Sorocaba) e a mensagem deve trazer
268
+ o endereço DAQUELA unidade sem o atendente escolher nada.
269
+
270
+ A técnica é busca indireta (indirect lookup) em Liquid: montar o NOME da variável da conta
271
+ usando o VALOR do atributo do contato e buscar por colchete `account.custom_attribute[chave]`.
272
+
273
+ ### Peças a criar (todas têm tool no MCP)
274
+
275
+ 1. Atributo de contato tipo lista (`custom_attributes_create`): ex. `unidade_de_atendimento`
276
+ com valores `sorocaba`, `tatuape`... (slugs limpos: sem acento, sem espaço).
277
+ 2. Uma variável da conta por opção (`account_variables_create`), nomeada `prefixo_` + valor:
278
+ `endereco_sorocaba`, `endereco_tatuape`...
279
+ 3. Resposta pronta (`canned_responses_create`) usando a sintaxe abaixo.
280
+
281
+ ### Sintaxe que funciona
282
+
283
+ ```text
284
+ Seu atendimento será na unidade {{contact.custom_attribute.unidade_de_atendimento}}.
285
+ Endereço: {% assign chave = "endereco_" | append: contact.custom_attribute.unidade_de_atendimento | downcase %}{% echo account.custom_attribute[chave] %}
286
+ ```
287
+
288
+ ### Regras críticas (confirmadas no código)
289
+
290
+ - A parte dinâmica DEVE usar `{% assign %}` + `{% echo %}` (tags `{% %}`), NUNCA `{{ }}`:
291
+ a caixa de mensagem substitui/apaga `{{ }}` desconhecido antes de enviar; tags `{% %}`
292
+ passam intactas e o backend (Liquid 5) resolve na criação da mensagem.
293
+ - Variáveis simples conhecidas (ex. `{{contact.custom_attribute.unidade_de_atendimento}}`)
294
+ podem ficar em `{{ }}` normalmente.
295
+ - Casamento da chave: o valor do atributo, em minúsculo, precisa bater EXATAMENTE com o
296
+ final do nome da variável da conta (`sorocaba` -> `endereco_sorocaba`). Por isso os
297
+ valores da lista devem ser slugs sem acento/espaço. O `| downcase` cobre maiúsculas,
298
+ mas NÃO remove acento nem espaço.
299
+ - NÃO envolva o trecho Liquid em crase/backticks: código entre crases vira `{% raw %}`
300
+ (não processa) — a mensagem sairia com o código literal.
301
+ - Variável da conta tipo `secret` sai VAZIA em mensagem (bloqueio de segurança; só resolve
302
+ em nó API Request do FlowBuilder).
303
+ - Onde resolve: mensagens outgoing, respostas prontas, campanhas e automações. NÃO resolve
304
+ nas instruções do AI Agente.
305
+ - Se a chave montada não existir, o `{% echo %}` sai vazio (sem erro). Teste com um contato
306
+ de cada valor da lista antes de entregar.
307
+
308
+ ### Padrão geral (serve pra qualquer caso)
309
+
310
+ - Atributo do contato = o seletor (unidade, plano, cidade...).
311
+ - Variáveis da conta = a tabela de valores (`endereco_X`, `preco_X`, `link_X`...).
312
+ - Mensagem monta a chave: `"prefixo_" | append: valor_do_contato | downcase` e busca com
313
+ `account.custom_attribute[chave]`.
314
+
264
315
  ## Templates WhatsApp com variáveis do sistema (auto-preenchimento) (2026-06)
265
316
 
266
317
  Ao criar/editar um template WhatsApp (`inboxes_whatsapp_templates_create` / `_create_2`), o corpo usa
@@ -248,7 +248,7 @@ No editor visual esses destinos só aparecem quando a validação bate (computed
248
248
  | `conversation_has_agent` / `conversation_no_agent` / `conversation_not_agent` | agente atribuído |
249
249
  | `contact_has_label` / `contact_no_label` / `conversation_has_label` / `conversation_no_label` | labels |
250
250
  | `kanban_exists` / `kanban_in_stage` / `kanban_won` / `kanban_lost` | card no funil (usa `funnel_id` + `stage`) |
251
- | `card_attr_equals` / `card_attr_contains` | atributo do card (`attrSource: 'card'` + `attr_key`) |
251
+ | `card_attr_equals` / `card_attr_contains` | atributo do card (`attrSource: 'card'` + `attr_key`; aceita `card_source: 'trigger'` p/ ler o card que iniciou o flow) |
252
252
  | `pagetrack_visited` / `pagetrack_event` | LionTrack |
253
253
  | `sla_check` | status do SLA da conversa (usa `value` = código fixo; ver abaixo) |
254
254
 
@@ -327,6 +327,8 @@ Ex.: `{ "operator": "sla_check", "value": "frt_breached" }`. "Estourado" = o mon
327
327
 
328
328
  **Handles que SAEM:** `success`. Não tem handle `error` — falhas viram warning silencioso e o flow continua.
329
329
 
330
+ **`card_source` (blocos de card) — opcional:** as ações de card aceitam `card_source`: `'funnel'` (default — procura o card pelo `funnel_id`) ou `'trigger'` (usa o card que DISPAROU o flow, em flows iniciados por `card_created`/`card_moved`/`card_won`/`card_lost`). Com `'trigger'`, `funnel_id` deixa de ser obrigatório — EXCETO em `move_kanban_stage`/`create_kanban_item`, cujo funil/etapa são o DESTINO. Sem card-gatilho disponível, a ação é pulada (não cai no fallback de funil). Aplica-se a `move_kanban_stage`, `set_won`/`set_lost`/`set_open`, `assign_agent_card`, `add_card_note`, `update_attribute` (com `attr_source: 'card'`) e às condições `card_attr_equals`/`card_attr_contains` (gravando `card_source` na própria regra).
331
+
330
332
  **`update_attribute` — campos EXATOS:** `attr_source` (`'contact'`, `'conversation'` ou `'card'`), `attr_key` (nome do atributo), `attr_value` (valor). NÃO existem `entity`/`key`/`value` — esses são ignorados e não salvam nada.
331
333
 
332
334
  **Somar/subtrair NÃO é operação dedicada** — é filtro Liquid no próprio `attr_value`. O valor é resolvido como template antes de salvar. Exemplos:
package/endpoints.json CHANGED
@@ -1901,6 +1901,13 @@
1901
1901
  "location": "body",
1902
1902
  "required": false,
1903
1903
  "description": "Arquivos anexos"
1904
+ },
1905
+ {
1906
+ "name": "content_attributes",
1907
+ "type": "object",
1908
+ "location": "body",
1909
+ "required": false,
1910
+ "description": "Atributos livres da mensagem (objeto). Chaves uteis: coex_backup=true => envia fora da janela de 24h via sessao WAHA so-envio (caixa Cloud em coexistencia); reply_mode='public'|'private' + in_reply_to_comment_id => responde a um comentario do Instagram; in_reply_to => cita/responde outra mensagem pelo id."
1904
1911
  }
1905
1912
  ],
1906
1913
  "returns": "mensagem criada",
@@ -2295,7 +2302,7 @@
2295
2302
  "type": "object",
2296
2303
  "location": "body",
2297
2304
  "required": false,
2298
- "description": "Configurações"
2305
+ "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)."
2299
2306
  },
2300
2307
  {
2301
2308
  "name": "funnel.global_custom_attributes",
@@ -2374,7 +2381,7 @@
2374
2381
  "type": "object",
2375
2382
  "location": "body",
2376
2383
  "required": false,
2377
- "description": "Configurações"
2384
+ "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)."
2378
2385
  }
2379
2386
  ],
2380
2387
  "returns": "funil atualizado",
@@ -3997,6 +4004,13 @@
3997
4004
  "location": "body",
3998
4005
  "required": false,
3999
4006
  "description": "BOTAO DE PANICO: true pausa TODA a IA do assistente (respostas, follow-ups, callbacks) sem perder config. Top-level, auditado"
4007
+ },
4008
+ {
4009
+ "name": "config.follow_up_skip_conditions",
4010
+ "type": "array",
4011
+ "location": "body",
4012
+ "required": false,
4013
+ "description": "Condicoes para a IA NAO fazer follow-up (ate 3). Array de objetos, ex.: {type, operator, attribute, value, labels:[]}."
4000
4014
  }
4001
4015
  ],
4002
4016
  "returns": "assistente AI criado (com novo ID)",
@@ -4208,6 +4222,13 @@
4208
4222
  "location": "body",
4209
4223
  "required": false,
4210
4224
  "description": "BOTAO DE PANICO: true pausa TODA a IA do assistente (respostas, follow-ups, callbacks) sem perder config. Top-level, auditado"
4225
+ },
4226
+ {
4227
+ "name": "config.follow_up_skip_conditions",
4228
+ "type": "array",
4229
+ "location": "body",
4230
+ "required": false,
4231
+ "description": "Condicoes para a IA NAO fazer follow-up (ate 3). Array de objetos, ex.: {type, operator, attribute, value, labels:[]}."
4211
4232
  }
4212
4233
  ],
4213
4234
  "returns": "assistente AI atualizado",
@@ -6191,7 +6212,15 @@
6191
6212
  "title": "Listar Threads Copilot",
6192
6213
  "description": "Lista as threads do Copilot.",
6193
6214
  "category": "Assistentes",
6194
- "params": [],
6215
+ "params": [
6216
+ {
6217
+ "name": "conversation_id",
6218
+ "type": "integer",
6219
+ "location": "query",
6220
+ "required": false,
6221
+ "description": "Filtra as threads do Copiloto pela conversa (conversation_display_id)."
6222
+ }
6223
+ ],
6195
6224
  "returns": "meta (contadores globais) + payload (array de assistentes AI)",
6196
6225
  "common_use_cases": [
6197
6226
  "Dashboard: contar/exibir assistentes AI",
@@ -7134,7 +7163,7 @@
7134
7163
  "type": "string",
7135
7164
  "location": "body",
7136
7165
  "required": false,
7137
- "description": "Modo de atribuição de conversas no time"
7166
+ "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)."
7138
7167
  }
7139
7168
  ],
7140
7169
  "returns": "time/equipe criado (com novo ID)",
@@ -7188,7 +7217,7 @@
7188
7217
  "type": "string",
7189
7218
  "location": "body",
7190
7219
  "required": false,
7191
- "description": "Modo de atribuição de conversas no time"
7220
+ "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)."
7192
7221
  }
7193
7222
  ],
7194
7223
  "returns": "time/equipe atualizado",
@@ -12929,6 +12958,13 @@
12929
12958
  "required": false,
12930
12959
  "description": "Nome"
12931
12960
  },
12961
+ {
12962
+ "name": "description",
12963
+ "type": "string",
12964
+ "location": "body",
12965
+ "required": false,
12966
+ "description": "Nova descricao do cargo"
12967
+ },
12932
12968
  {
12933
12969
  "name": "permissions",
12934
12970
  "type": "array",
@@ -18172,9 +18208,73 @@
18172
18208
  "method": "POST",
18173
18209
  "path": "/api/v1/accounts/{account_id}/kanban_config",
18174
18210
  "title": "Criar Configuracao Kanban",
18175
- "description": "Cria a configuracao do Kanban. Cria novo config Kanban. Valida unicidade quando aplicável. Retorna o config Kanban criado com ID atribuído.",
18211
+ "description": "Cria a configuracao do Kanban da conta (singleton). Aceita: checklist_templates (templates de checklist reutilizaveis aplicados aos cards), win_reasons/loss_reasons (motivos de ganho/perda), global_custom_attributes (atributos dos cards), config (preferencias) e webhook (url/secret/events).",
18176
18212
  "category": "Config Kanban",
18177
- "params": [],
18213
+ "params": [
18214
+ {
18215
+ "name": "kanban_config.checklist_templates",
18216
+ "type": "array",
18217
+ "location": "body",
18218
+ "required": false,
18219
+ "description": "Templates de checklist reutilizaveis aplicaveis aos cards. Formato: [{id, name, items:[{id, text}]}]"
18220
+ },
18221
+ {
18222
+ "name": "kanban_config.win_reasons",
18223
+ "type": "array",
18224
+ "location": "body",
18225
+ "required": false,
18226
+ "description": "Motivos de ganho do funil. Formato: [{id, title}]"
18227
+ },
18228
+ {
18229
+ "name": "kanban_config.loss_reasons",
18230
+ "type": "array",
18231
+ "location": "body",
18232
+ "required": false,
18233
+ "description": "Motivos de perda do funil. Formato: [{id, title}]"
18234
+ },
18235
+ {
18236
+ "name": "kanban_config.global_custom_attributes",
18237
+ "type": "array",
18238
+ "location": "body",
18239
+ "required": false,
18240
+ "description": "Atributos personalizados globais dos cards. Formato: [{name, type, is_list, list_values:[]}]"
18241
+ },
18242
+ {
18243
+ "name": "kanban_config.config",
18244
+ "type": "object",
18245
+ "location": "body",
18246
+ "required": false,
18247
+ "description": "Preferencias do Kanban: title, default_view, auto_assignment, notifications_enabled, support_email, support_phone, support_chat_hours, support_chat_enabled, dragbar_enabled, quick_message_enabled, list_view_enabled, agenda_view_enabled"
18248
+ },
18249
+ {
18250
+ "name": "kanban_config.enabled",
18251
+ "type": "boolean",
18252
+ "location": "body",
18253
+ "required": false,
18254
+ "description": "Habilita/desabilita a config (afeta o webhook)"
18255
+ },
18256
+ {
18257
+ "name": "kanban_config.webhook_url",
18258
+ "type": "string",
18259
+ "location": "body",
18260
+ "required": false,
18261
+ "description": "URL do webhook do Kanban"
18262
+ },
18263
+ {
18264
+ "name": "kanban_config.webhook_secret",
18265
+ "type": "string",
18266
+ "location": "body",
18267
+ "required": false,
18268
+ "description": "Segredo HMAC do webhook"
18269
+ },
18270
+ {
18271
+ "name": "kanban_config.webhook_events",
18272
+ "type": "array",
18273
+ "location": "body",
18274
+ "required": false,
18275
+ "description": "Eventos do webhook habilitados (array de strings)"
18276
+ }
18277
+ ],
18178
18278
  "returns": "config Kanban criado (com novo ID)",
18179
18279
  "common_use_cases": [
18180
18280
  "Cadastro inicial de config Kanban",
@@ -18192,9 +18292,73 @@
18192
18292
  "method": "PUT",
18193
18293
  "path": "/api/v1/accounts/{account_id}/kanban_config",
18194
18294
  "title": "Atualizar Configuracao Kanban",
18195
- "description": "Atualiza a configuracao do Kanban. Atualiza campos do config Kanban existente. Suporta atualização parcial (PATCH) — só campos enviados são alterados.",
18295
+ "description": "Atualiza a configuracao do Kanban da conta. Atualizacao parcial — so os campos enviados mudam. Use para criar/editar checklist_templates (templates de checklist dos cards), win_reasons/loss_reasons (motivos de ganho/perda), global_custom_attributes (atributos dos cards), config (preferencias) e webhook (url/secret/events).",
18196
18296
  "category": "Config Kanban",
18197
- "params": [],
18297
+ "params": [
18298
+ {
18299
+ "name": "kanban_config.checklist_templates",
18300
+ "type": "array",
18301
+ "location": "body",
18302
+ "required": false,
18303
+ "description": "Templates de checklist reutilizaveis aplicaveis aos cards. Formato: [{id, name, items:[{id, text}]}]"
18304
+ },
18305
+ {
18306
+ "name": "kanban_config.win_reasons",
18307
+ "type": "array",
18308
+ "location": "body",
18309
+ "required": false,
18310
+ "description": "Motivos de ganho do funil. Formato: [{id, title}]"
18311
+ },
18312
+ {
18313
+ "name": "kanban_config.loss_reasons",
18314
+ "type": "array",
18315
+ "location": "body",
18316
+ "required": false,
18317
+ "description": "Motivos de perda do funil. Formato: [{id, title}]"
18318
+ },
18319
+ {
18320
+ "name": "kanban_config.global_custom_attributes",
18321
+ "type": "array",
18322
+ "location": "body",
18323
+ "required": false,
18324
+ "description": "Atributos personalizados globais dos cards. Formato: [{name, type, is_list, list_values:[]}]"
18325
+ },
18326
+ {
18327
+ "name": "kanban_config.config",
18328
+ "type": "object",
18329
+ "location": "body",
18330
+ "required": false,
18331
+ "description": "Preferencias do Kanban: title, default_view, auto_assignment, notifications_enabled, support_email, support_phone, support_chat_hours, support_chat_enabled, dragbar_enabled, quick_message_enabled, list_view_enabled, agenda_view_enabled"
18332
+ },
18333
+ {
18334
+ "name": "kanban_config.enabled",
18335
+ "type": "boolean",
18336
+ "location": "body",
18337
+ "required": false,
18338
+ "description": "Habilita/desabilita a config (afeta o webhook)"
18339
+ },
18340
+ {
18341
+ "name": "kanban_config.webhook_url",
18342
+ "type": "string",
18343
+ "location": "body",
18344
+ "required": false,
18345
+ "description": "URL do webhook do Kanban"
18346
+ },
18347
+ {
18348
+ "name": "kanban_config.webhook_secret",
18349
+ "type": "string",
18350
+ "location": "body",
18351
+ "required": false,
18352
+ "description": "Segredo HMAC do webhook"
18353
+ },
18354
+ {
18355
+ "name": "kanban_config.webhook_events",
18356
+ "type": "array",
18357
+ "location": "body",
18358
+ "required": false,
18359
+ "description": "Eventos do webhook habilitados (array de strings)"
18360
+ }
18361
+ ],
18198
18362
  "returns": "config Kanban atualizado",
18199
18363
  "common_use_cases": [
18200
18364
  "Edição parcial de config Kanban",
@@ -19745,6 +19909,26 @@
19745
19909
  "lionchat_agents_create"
19746
19910
  ]
19747
19911
  },
19912
+ {
19913
+ "id": "lionchat_agents_list",
19914
+ "method": "GET",
19915
+ "path": "/api/v1/accounts/{account_id}/agents",
19916
+ "title": "Listar Agentes",
19917
+ "description": "Lista todos os agentes (usuarios) da conta. Retorna id, name, email, availability_status, confirmed, role (agent ou administrator) e, no Enterprise, custom_role_id (ID do cargo personalizado aplicado ao agente, ou null). Use para descobrir os IDs dos agentes antes de atualizar papel/cargo, reatribuir recursos ou auditar a equipe.",
19918
+ "category": "Agentes",
19919
+ "params": [],
19920
+ "returns": "array de agentes (id, name, email, role, custom_role_id, availability_status, confirmed)",
19921
+ "common_use_cases": [
19922
+ "Descobrir o ID de um agente antes de atualizar ou remover",
19923
+ "Auditar quem e administrador, agente puro ou tem cargo personalizado",
19924
+ "Listar a equipe para aplicar um cargo personalizado em massa"
19925
+ ],
19926
+ "related_tools": [
19927
+ "lionchat_agents_update",
19928
+ "lionchat_agents_create",
19929
+ "lionchat_custom_roles_list"
19930
+ ]
19931
+ },
19748
19932
  {
19749
19933
  "id": "lionchat_agents_create",
19750
19934
  "method": "POST",
@@ -19787,6 +19971,13 @@
19787
19971
  "location": "body",
19788
19972
  "required": false,
19789
19973
  "description": "Define se o agente fica offline automaticamente por inatividade"
19974
+ },
19975
+ {
19976
+ "name": "custom_role_id",
19977
+ "type": "integer",
19978
+ "location": "body",
19979
+ "required": false,
19980
+ "description": "ID do cargo personalizado (custom role) a aplicar ja no convite. Requer Enterprise. Use lionchat_custom_roles_list para obter os IDs. Envie junto com role=agent (cargo personalizado e sempre nivel agente)."
19790
19981
  }
19791
19982
  ],
19792
19983
  "returns": "agente convidado (com novo ID)",
@@ -19800,12 +19991,38 @@
19800
19991
  "lionchat_agents_update"
19801
19992
  ]
19802
19993
  },
19994
+ {
19995
+ "id": "lionchat_agents_resend_invitation",
19996
+ "method": "POST",
19997
+ "path": "/api/v1/accounts/{account_id}/agents/{id}/resend_invitation",
19998
+ "title": "Reenviar Convite do Agente",
19999
+ "description": "Reenvia o e-mail de convite (confirmacao de acesso) para um agente que ainda nao confirmou a conta. Retorna erro se o agente ja estiver confirmado. Rate limit: 1 envio por minuto por agente (429 com retry_after se chamar cedo demais).",
20000
+ "category": "Agentes",
20001
+ "params": [
20002
+ {
20003
+ "name": "id",
20004
+ "type": "integer",
20005
+ "location": "path",
20006
+ "required": true,
20007
+ "description": "ID do agente"
20008
+ }
20009
+ ],
20010
+ "returns": "message: sent + email do agente | 422 se ja confirmado | 429 se rate-limited",
20011
+ "common_use_cases": [
20012
+ "Agente novo nao recebeu ou perdeu o e-mail de convite",
20013
+ "Reativar acesso de agente que nunca confirmou a conta"
20014
+ ],
20015
+ "related_tools": [
20016
+ "lionchat_agents_list",
20017
+ "lionchat_agents_create"
20018
+ ]
20019
+ },
19803
20020
  {
19804
20021
  "id": "lionchat_agents_update",
19805
20022
  "method": "PATCH",
19806
20023
  "path": "/api/v1/accounts/{account_id}/agents/{id}",
19807
20024
  "title": "Atualizar Agente",
19808
- "description": "Atualiza um agente existente. Campos suportados: name, role (agent ou administrator), availability, auto_offline. Use para promover/rebaixar papel ou ajustar disponibilidade.",
20025
+ "description": "Atualiza um agente existente. Campos suportados: name, role (agent ou administrator), availability, auto_offline e custom_role_id (aplica um cargo personalizado no Enterprise). Use para promover/rebaixar papel, ajustar disponibilidade ou aplicar um cargo personalizado.",
19809
20026
  "category": "Agentes",
19810
20027
  "params": [
19811
20028
  {
@@ -19842,16 +20059,26 @@
19842
20059
  "location": "body",
19843
20060
  "required": false,
19844
20061
  "description": "Define se o agente fica offline automaticamente por inatividade"
20062
+ },
20063
+ {
20064
+ "name": "custom_role_id",
20065
+ "type": "integer",
20066
+ "location": "body",
20067
+ "required": false,
20068
+ "description": "ID do cargo personalizado (custom role) a aplicar ao agente. Requer Enterprise. IMPORTANTE: o backend aplica este campo em TODA atualizacao do agente — se voce atualizar um agente que tem cargo personalizado SEM enviar custom_role_id, o cargo sera REMOVIDO. Ao editar um agente que tem cargo, envie sempre o custom_role_id junto. Use lionchat_custom_roles_list para obter os IDs dos cargos."
19845
20069
  }
19846
20070
  ],
19847
20071
  "returns": "agente atualizado",
19848
20072
  "common_use_cases": [
19849
20073
  "Promover um agente a administrador",
19850
20074
  "Alterar disponibilidade de um agente",
19851
- "Ajustar o comportamento de offline automático"
20075
+ "Ajustar o comportamento de offline automático",
20076
+ "Aplicar um cargo personalizado (custom role) a um agente"
19852
20077
  ],
19853
20078
  "related_tools": [
19854
- "lionchat_agents_create"
20079
+ "lionchat_agents_create",
20080
+ "lionchat_agents_list",
20081
+ "lionchat_custom_roles_list"
19855
20082
  ]
19856
20083
  },
19857
20084
  {
@@ -24364,6 +24591,84 @@
24364
24591
  "lionchat_inboxes_whatsapp_history_status"
24365
24592
  ]
24366
24593
  },
24594
+ {
24595
+ "id": "lionchat_inboxes_coex_backup_connect",
24596
+ "method": "POST",
24597
+ "path": "/api/v1/accounts/{account_id}/inboxes/{inbox_id}/coex_backup/connect",
24598
+ "title": "Conectar Saida de Emergencia (Coex)",
24599
+ "description": "Provisiona/conecta a sessao WAHA so-envio (retorna QR) de uma caixa WhatsApp Cloud em coexistencia, usada para enviar texto fora da janela de 24h. Requer admin + feature 'coexistence_backup_send' + caixa Cloud em coexistencia.",
24600
+ "category": "Caixas de Entrada",
24601
+ "params": [
24602
+ {
24603
+ "name": "inbox_id",
24604
+ "type": "integer",
24605
+ "location": "path",
24606
+ "required": true,
24607
+ "description": "ID da caixa de entrada (inbox)"
24608
+ }
24609
+ ],
24610
+ "returns": "Estado da sessao de emergencia (state, qr, connected)",
24611
+ "common_use_cases": [
24612
+ "Ativar o envio fora da janela de 24h numa caixa Cloud",
24613
+ "Exibir o QR para parear o numero de emergencia"
24614
+ ],
24615
+ "related_tools": [
24616
+ "lionchat_inboxes_coex_backup_status",
24617
+ "lionchat_inboxes_coex_backup_disconnect"
24618
+ ]
24619
+ },
24620
+ {
24621
+ "id": "lionchat_inboxes_coex_backup_status",
24622
+ "method": "GET",
24623
+ "path": "/api/v1/accounts/{account_id}/inboxes/{inbox_id}/coex_backup/status",
24624
+ "title": "Status da Saida de Emergencia (Coex)",
24625
+ "description": "Retorna o estado da sessao WAHA so-envio da caixa (state, qr, connected). Nunca levanta erro. Requer admin + feature 'coexistence_backup_send'.",
24626
+ "category": "Caixas de Entrada",
24627
+ "params": [
24628
+ {
24629
+ "name": "inbox_id",
24630
+ "type": "integer",
24631
+ "location": "path",
24632
+ "required": true,
24633
+ "description": "ID da caixa de entrada (inbox)"
24634
+ }
24635
+ ],
24636
+ "returns": "{ state, qr, connected }",
24637
+ "common_use_cases": [
24638
+ "Verificar se a saida de emergencia esta conectada",
24639
+ "Buscar o QR atual durante o pareamento"
24640
+ ],
24641
+ "related_tools": [
24642
+ "lionchat_inboxes_coex_backup_connect",
24643
+ "lionchat_inboxes_coex_backup_disconnect"
24644
+ ]
24645
+ },
24646
+ {
24647
+ "id": "lionchat_inboxes_coex_backup_disconnect",
24648
+ "method": "POST",
24649
+ "path": "/api/v1/accounts/{account_id}/inboxes/{inbox_id}/coex_backup/disconnect",
24650
+ "title": "Desconectar Saida de Emergencia (Coex)",
24651
+ "description": "Desconecta/destroi a sessao WAHA so-envio da caixa Cloud em coexistencia. Requer admin + feature 'coexistence_backup_send'.",
24652
+ "category": "Caixas de Entrada",
24653
+ "params": [
24654
+ {
24655
+ "name": "inbox_id",
24656
+ "type": "integer",
24657
+ "location": "path",
24658
+ "required": true,
24659
+ "description": "ID da caixa de entrada (inbox)"
24660
+ }
24661
+ ],
24662
+ "returns": "Resultado da desconexao",
24663
+ "common_use_cases": [
24664
+ "Desligar o envio fora da janela de 24h",
24665
+ "Limpar a sessao de emergencia da caixa"
24666
+ ],
24667
+ "related_tools": [
24668
+ "lionchat_inboxes_coex_backup_connect",
24669
+ "lionchat_inboxes_coex_backup_status"
24670
+ ]
24671
+ },
24367
24672
  {
24368
24673
  "id": "lionchat_conversations_toggle_block",
24369
24674
  "method": "POST",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lionchat/mcp-server",
3
- "version": "0.5.7",
3
+ "version": "0.5.9",
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",