@lionchat/mcp-server 0.5.8 → 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.
- package/dist/docs/resources/best-practices.md +51 -0
- package/endpoints.json +75 -5
- package/package.json +1 -1
|
@@ -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
|
package/endpoints.json
CHANGED
|
@@ -7163,7 +7163,7 @@
|
|
|
7163
7163
|
"type": "string",
|
|
7164
7164
|
"location": "body",
|
|
7165
7165
|
"required": false,
|
|
7166
|
-
"description": "Modo de
|
|
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)."
|
|
7167
7167
|
}
|
|
7168
7168
|
],
|
|
7169
7169
|
"returns": "time/equipe criado (com novo ID)",
|
|
@@ -7217,7 +7217,7 @@
|
|
|
7217
7217
|
"type": "string",
|
|
7218
7218
|
"location": "body",
|
|
7219
7219
|
"required": false,
|
|
7220
|
-
"description": "Modo de
|
|
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)."
|
|
7221
7221
|
}
|
|
7222
7222
|
],
|
|
7223
7223
|
"returns": "time/equipe atualizado",
|
|
@@ -12958,6 +12958,13 @@
|
|
|
12958
12958
|
"required": false,
|
|
12959
12959
|
"description": "Nome"
|
|
12960
12960
|
},
|
|
12961
|
+
{
|
|
12962
|
+
"name": "description",
|
|
12963
|
+
"type": "string",
|
|
12964
|
+
"location": "body",
|
|
12965
|
+
"required": false,
|
|
12966
|
+
"description": "Nova descricao do cargo"
|
|
12967
|
+
},
|
|
12961
12968
|
{
|
|
12962
12969
|
"name": "permissions",
|
|
12963
12970
|
"type": "array",
|
|
@@ -19902,6 +19909,26 @@
|
|
|
19902
19909
|
"lionchat_agents_create"
|
|
19903
19910
|
]
|
|
19904
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
|
+
},
|
|
19905
19932
|
{
|
|
19906
19933
|
"id": "lionchat_agents_create",
|
|
19907
19934
|
"method": "POST",
|
|
@@ -19944,6 +19971,13 @@
|
|
|
19944
19971
|
"location": "body",
|
|
19945
19972
|
"required": false,
|
|
19946
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)."
|
|
19947
19981
|
}
|
|
19948
19982
|
],
|
|
19949
19983
|
"returns": "agente convidado (com novo ID)",
|
|
@@ -19957,12 +19991,38 @@
|
|
|
19957
19991
|
"lionchat_agents_update"
|
|
19958
19992
|
]
|
|
19959
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
|
+
},
|
|
19960
20020
|
{
|
|
19961
20021
|
"id": "lionchat_agents_update",
|
|
19962
20022
|
"method": "PATCH",
|
|
19963
20023
|
"path": "/api/v1/accounts/{account_id}/agents/{id}",
|
|
19964
20024
|
"title": "Atualizar Agente",
|
|
19965
|
-
"description": "Atualiza um agente existente. Campos suportados: name, role (agent ou administrator), availability, auto_offline. Use para promover/rebaixar papel ou
|
|
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.",
|
|
19966
20026
|
"category": "Agentes",
|
|
19967
20027
|
"params": [
|
|
19968
20028
|
{
|
|
@@ -19999,16 +20059,26 @@
|
|
|
19999
20059
|
"location": "body",
|
|
20000
20060
|
"required": false,
|
|
20001
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."
|
|
20002
20069
|
}
|
|
20003
20070
|
],
|
|
20004
20071
|
"returns": "agente atualizado",
|
|
20005
20072
|
"common_use_cases": [
|
|
20006
20073
|
"Promover um agente a administrador",
|
|
20007
20074
|
"Alterar disponibilidade de um agente",
|
|
20008
|
-
"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"
|
|
20009
20077
|
],
|
|
20010
20078
|
"related_tools": [
|
|
20011
|
-
"lionchat_agents_create"
|
|
20079
|
+
"lionchat_agents_create",
|
|
20080
|
+
"lionchat_agents_list",
|
|
20081
|
+
"lionchat_custom_roles_list"
|
|
20012
20082
|
]
|
|
20013
20083
|
},
|
|
20014
20084
|
{
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lionchat/mcp-server",
|
|
3
|
-
"version": "0.5.
|
|
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",
|