aicrm-mcp 0.6.0 → 0.6.1
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/README.md +1 -1
- package/dist/cli.js +4 -4
- package/package.json +1 -1
- package/skill/aicrm-integrate/SKILL.md +4 -4
package/README.md
CHANGED
|
@@ -47,6 +47,6 @@ claude mcp add aicrm -- npx -y aicrm-mcp
|
|
|
47
47
|
npx -y aicrm-mcp skill install aicrm-integrate --project
|
|
48
48
|
```
|
|
49
49
|
|
|
50
|
-
Depois é só pedir: *"integre o formulário de contato deste projeto com o funil Vendas do AICRM"*. O agente lê os funis e os campos obrigatórios, mostra o mapeamento, cria uma chave de teste no `.env`, escreve o código com o SDK `@aicrm/sdk`, roda e confere nos logs. A chave de produção só é criada com o seu ok.
|
|
50
|
+
Depois é só pedir: *"integre o formulário de contato deste projeto com o funil Vendas do AICRM"*. O agente lê os funis e os campos obrigatórios, mostra o mapeamento, cria uma chave de teste no `.env`, escreve o código com o SDK `@aicrm-dev/sdk`, roda e confere nos logs. A chave de produção só é criada com o seu ok.
|
|
51
51
|
|
|
52
52
|
As permissões são aplicadas pelo servidor: um vendedor consegue tudo o que faz no app, e recebe "peça a um admin" nas ações de admin. O guia completo de uso está no SKILL.md (`aicrm-mcp skill`).
|
package/dist/cli.js
CHANGED
|
@@ -1216,7 +1216,7 @@ function registerIntegrationTools(server) {
|
|
|
1216
1216
|
},
|
|
1217
1217
|
withApi(async (api) => {
|
|
1218
1218
|
const s = await api.get("/integrations/status");
|
|
1219
|
-
const next = !s.hasTestKey ? "Crie uma chave de teste com create_api_key." : !s.firstLead ? "Escreva o c\xF3digo com o SDK @aicrm/sdk e rode; confira em list_api_logs." : !s.hasLiveKey ? "Quando a pessoa aprovar, crie a chave de produ\xE7\xE3o (create_api_key mode live) e troque no ambiente de produ\xE7\xE3o." : "Integra\xE7\xE3o completa. Se quiser, limpe os leads de teste com clear_test_leads.";
|
|
1219
|
+
const next = !s.hasTestKey ? "Crie uma chave de teste com create_api_key." : !s.firstLead ? "Escreva o c\xF3digo com o SDK @aicrm-dev/sdk e rode; confira em list_api_logs." : !s.hasLiveKey ? "Quando a pessoa aprovar, crie a chave de produ\xE7\xE3o (create_api_key mode live) e troque no ambiente de produ\xE7\xE3o." : "Integra\xE7\xE3o completa. Se quiser, limpe os leads de teste com clear_test_leads.";
|
|
1220
1220
|
return text({
|
|
1221
1221
|
test_key: s.hasTestKey,
|
|
1222
1222
|
first_lead: s.firstLead ? `${s.firstLead.name} em ${s.firstLead.funnelName} \u203A ${s.firstLead.stageName}${s.firstLead.isTest ? " (teste)" : ""}` : null,
|
|
@@ -1984,7 +1984,7 @@ function registerManageTools(server) {
|
|
|
1984
1984
|
}
|
|
1985
1985
|
|
|
1986
1986
|
// src/server.ts
|
|
1987
|
-
var DEVELOPER_INSTRUCTIONS = "Voc\xEA est\xE1 conectado ao AICRM como Desenvolvedor: seu trabalho \xE9 integrar o sistema desta pessoa ao CRM pela API p\xFAblica, com o SDK @aicrm/sdk. Voc\xEA n\xE3o v\xEA leads nem o time, s\xF3 a estrutura (get_integration_schema), suas chaves e os logs. Roteiro: 1) get_integration_schema; 2) ache no c\xF3digo de onde v\xEAm os leads e mostre \xE0 pessoa o mapeamento campo \u2192 campo do CRM (inclusive os obrigat\xF3rios) antes de escrever; 3) create_api_key em modo test, que grava a chave no .env sem mostr\xE1-la; 4) npm i @aicrm/sdk e escreva o c\xF3digo com externalId; 5) rode e confira em list_api_logs, corrigindo pelos how_to_fix; 6) s\xF3 com o ok da pessoa, create_api_key mode live (confirm_live) e clear_test_leads. Chave secreta (aicrm_sk_) nunca vai para o navegador: no site use publishable. Se a skill aicrm-integrate estiver instalada, siga-a.";
|
|
1987
|
+
var DEVELOPER_INSTRUCTIONS = "Voc\xEA est\xE1 conectado ao AICRM como Desenvolvedor: seu trabalho \xE9 integrar o sistema desta pessoa ao CRM pela API p\xFAblica, com o SDK @aicrm-dev/sdk. Voc\xEA n\xE3o v\xEA leads nem o time, s\xF3 a estrutura (get_integration_schema), suas chaves e os logs. Roteiro: 1) get_integration_schema; 2) ache no c\xF3digo de onde v\xEAm os leads e mostre \xE0 pessoa o mapeamento campo \u2192 campo do CRM (inclusive os obrigat\xF3rios) antes de escrever; 3) create_api_key em modo test, que grava a chave no .env sem mostr\xE1-la; 4) npm i @aicrm-dev/sdk e escreva o c\xF3digo com externalId; 5) rode e confira em list_api_logs, corrigindo pelos how_to_fix; 6) s\xF3 com o ok da pessoa, create_api_key mode live (confirm_live) e clear_test_leads. Chave secreta (aicrm_sk_) nunca vai para o navegador: no site use publishable. Se a skill aicrm-integrate estiver instalada, siga-a.";
|
|
1988
1988
|
async function currentRole() {
|
|
1989
1989
|
const creds = await loadCredentials();
|
|
1990
1990
|
if (!creds) return "";
|
|
@@ -1994,13 +1994,13 @@ async function currentRole() {
|
|
|
1994
1994
|
async function startServer() {
|
|
1995
1995
|
const role = await currentRole();
|
|
1996
1996
|
if (role === "developer") {
|
|
1997
|
-
const dev = new McpServer({ name: "aicrm", version: "0.6.
|
|
1997
|
+
const dev = new McpServer({ name: "aicrm", version: "0.6.1" }, { instructions: DEVELOPER_INSTRUCTIONS });
|
|
1998
1998
|
registerIntegrationTools(dev);
|
|
1999
1999
|
await dev.connect(new StdioServerTransport());
|
|
2000
2000
|
return;
|
|
2001
2001
|
}
|
|
2002
2002
|
const server = new McpServer(
|
|
2003
|
-
{ name: "aicrm", version: "0.6.
|
|
2003
|
+
{ name: "aicrm", version: "0.6.1" },
|
|
2004
2004
|
{
|
|
2005
2005
|
instructions: 'AICRM \xE9 um CRM de vendas. Workspaces cont\xEAm funis; funis cont\xEAm etapas e leads. Status do lead: open, won, lost. Workspaces, funis, etapas e vendedores podem ser referenciados por nome. Valores monet\xE1rios est\xE3o em reais (BRL). Use get_dashboard/get_forecast para metas e proje\xE7\xF5es estat\xEDsticas (Monte Carlo bayesiano). Para "o que eu fa\xE7o hoje?", use get_today_plan: lista os leads que mais ajudam a bater a meta, com motivo e a\xE7\xE3o sugerida. Cada workspace pode ter campos personalizados (ex.: Cidade, Porte) e esconder campos padr\xE3o: veja list_fields. Em create_lead/update_lead, preencha-os em custom_fields usando o nome do campo. Lead ganho n\xE3o troca de funil: para levar o cliente adiante (ex.: Aquisi\xE7\xE3o \u2192 Relacionamento), use handoff_lead ou next_funnel em mark_won, que criam um lead novo ligado ao ganho. Antes de importar um CSV desconhecido, rode import_leads_csv com dry_run=true para revisar o mapeamento de colunas. Pap\xE9is: admin configura tudo (estrutura, campos, comiss\xF5es, pap\xE9is); manager (Master) lidera o time s\xF3 nos workspaces dele: v\xEA todos os leads, importa e distribui, reatribui e exclui leads, define metas (set_goals), pausa/libera vendedores, usa modo TV e convida vendedores; member \xE9 o vendedor. Admins e Masters n\xE3o recebem leads automaticamente (distribui\xE7\xE3o e rod\xEDzio v\xE3o s\xF3 para vendedores), mas podem assumir um lead de prop\xF3sito. Funis com auto_assign distribuem leads sem vendedor por desempenho; quem passa um dia \xFAtil sem nenhuma a\xE7\xE3o no funil para de receber at\xE9 um Master ou admin liberar: veja get_distribution, release_seller e pause_seller. O servidor aplica as permiss\xF5es do usu\xE1rio logado: se uma a\xE7\xE3o for negada, explique que precisa de um admin ou Master. A\xE7\xF5es destrutivas (delete_*, archive_field, revoke_*) exigem confirma\xE7\xE3o expl\xEDcita da pessoa antes.'
|
|
2006
2006
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: aicrm-integrate
|
|
3
|
-
description: Integrar um sistema (site, landing page, formulário, checkout, webhook de pagamento, ERP, app) ao AICRM para que os leads caiam no funil de vendas, usando o SDK @aicrm/sdk e as ferramentas de integração do MCP aicrm (get_integration_schema, create_api_key, send_test_lead, list_api_logs). Use quando a pessoa pedir para mandar leads, contatos, cadastros ou pedidos para o AICRM ou para o CRM, conectar um formulário ao funil, ou criar/depurar uma integração com o AICRM, mesmo sem dizer "SDK" ou "API".
|
|
3
|
+
description: Integrar um sistema (site, landing page, formulário, checkout, webhook de pagamento, ERP, app) ao AICRM para que os leads caiam no funil de vendas, usando o SDK @aicrm-dev/sdk e as ferramentas de integração do MCP aicrm (get_integration_schema, create_api_key, send_test_lead, list_api_logs). Use quando a pessoa pedir para mandar leads, contatos, cadastros ou pedidos para o AICRM ou para o CRM, conectar um formulário ao funil, ou criar/depurar uma integração com o AICRM, mesmo sem dizer "SDK" ou "API".
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Integrar com o AICRM
|
|
@@ -64,12 +64,12 @@ Chame `create_api_key` com `mode: "test"`:
|
|
|
64
64
|
A ferramenta grava a chave, grava `AICRM_API_URL` quando a API não é a padrão (`https://api.aicrm.dev`) e põe o `.env` no `.gitignore`. Você recebe só o prefixo. Se o projeto tiver um `.env.example`, acrescente lá o nome da variável **sem valor**.
|
|
65
65
|
|
|
66
66
|
### Passo 5: escrever o código
|
|
67
|
-
Instale com o gerenciador do projeto (`npm i @aicrm/sdk`, `pnpm add @aicrm/sdk`, `yarn add @aicrm/sdk` ou `bun add @aicrm/sdk`). Depois de instalar, a referência completa do SDK está em `node_modules/@aicrm/sdk/README.md`.
|
|
67
|
+
Instale com o gerenciador do projeto (`npm i @aicrm-dev/sdk`, `pnpm add @aicrm-dev/sdk`, `yarn add @aicrm-dev/sdk` ou `bun add @aicrm-dev/sdk`). Depois de instalar, a referência completa do SDK está em `node_modules/@aicrm-dev/sdk/README.md`.
|
|
68
68
|
|
|
69
69
|
Servidor (Node, Next.js route handler, Express, edge):
|
|
70
70
|
|
|
71
71
|
```ts
|
|
72
|
-
import { AICRM } from "@aicrm/sdk";
|
|
72
|
+
import { AICRM } from "@aicrm-dev/sdk";
|
|
73
73
|
|
|
74
74
|
const aicrm = new AICRM(); // lê AICRM_API_KEY (e AICRM_API_URL, se houver) do ambiente
|
|
75
75
|
|
|
@@ -91,7 +91,7 @@ export async function onLead(input: { nome: string; email: string; cidade: strin
|
|
|
91
91
|
Navegador, com chave pública (o funil já vem da chave):
|
|
92
92
|
|
|
93
93
|
```ts
|
|
94
|
-
import { AICRM } from "@aicrm/sdk";
|
|
94
|
+
import { AICRM } from "@aicrm-dev/sdk";
|
|
95
95
|
const aicrm = new AICRM(import.meta.env.VITE_AICRM_KEY);
|
|
96
96
|
const { error } = await aicrm.leads.create({ name, email, phone, metadata: { pagina: location.pathname } });
|
|
97
97
|
```
|