Conectar um agente ao CRM
Autorize um agente a consultar grupos, agendar mensagens, trabalhar com contratos e ler indicadores na organização escolhida.
O MCP conecta um aplicativo de IA ao CRM com permissões definidas por você. A conexão oferece até 34 ferramentas: três para tarefas e notas internas, quatro para grupos, oito para contratos, uma para indicadores, catorze para consultar negócios, contatos, conversas, campanhas, automações, tarefas, agendamentos e formulários linha a linha e quatro relatórios agregados. A lista apresentada ao agente depende das permissões autorizadas e do acesso atual da sua conta.
Conectar
- No aplicativo compatível com MCP remoto e OAuth, adicione
https://crm.oficinamartech.com/mcp, usando o transporte Streamable HTTP. O endereço atende a revisão 2026-07-28 do protocolo (sem sessão, cada chamada independente) e também os aplicativos que ainda abrem a conexão pelo formato anterior. - Entre no CRM e conclua a verificação em duas etapas, quando exigida.
- Confira o nome do aplicativo e o destino da autorização. Escolha uma das organizações em que você pode conectar.
- Selecione as capacidades solicitadas pelo aplicativo. Você pode conectar contratos, grupos, indicadores e leituras de negócios, contatos, conversas e demais registros de forma independente, com uma exceção descrita abaixo da tabela.
- Retorne ao aplicativo e confira as ferramentas disponíveis.
Proprietários e administradores com acesso ativo sempre podem autorizar uma conexão. Operadores podem quando a organização liga Permitir que operadores conectem agentes, em Configurações → API → Conexão com IA (desligada por padrão; só proprietário e administrador alteram). Cada conexão acessa uma organização. Sessões de impersonação não podem autorizar agentes.
O agente vê e faz exatamente o que a pessoa que autorizou vê e faz na tela do CRM, nada além:
- A tela de autorização só oferece as permissões que a pessoa já tem. A tabela abaixo mostra de onde vem cada uma.
- Conversas, mensagens e grupos seguem a mesma regra de visibilidade da caixa de entrada: quem só vê as próprias conversas e as sem responsável recebe só essas.
- Indicadores e relatórios seguem o dashboard da pessoa: organização, equipe ou só os próprios números (veja Montar painéis com indicadores).
- A cada chamada o CRM confere de novo as permissões atuais. Quem perde uma permissão vê a ferramenta correspondente recusar com
missing_permission; quem sai da organização perde a conexão inteira.
Desligar a configuração impede novas conexões de operadores, mas não encerra as existentes: elas seguem até expirar ou serem desconectadas por um administrador.
| Permissão | Acesso | Disponível para quem |
|---|---|---|
groups:read | Consultar grupos e agendamentos. | Edita o módulo de grupos. |
groups:schedule | Agendar mensagens; exige também groups:read. | Edita o módulo de grupos. |
contracts:read | Consultar contexto, modelos e contratos. | Vê contratos, em organização com assinatura eletrônica. |
contracts:prepare | Preparar rascunhos e prévias; exige também contracts:read. | Edita contratos. |
contracts:send | Solicitar envio da revisão aprovada no CRM; exige também contracts:read. | Edita contratos. |
analytics:read | Consultar indicadores e relatórios agregados, campanhas de disparo, automações e formulários (perguntas e contadores), sem dados de contato. | Vê o dashboard (da organização, da equipe ou o próprio). Campanhas, automações e formulários pedem também a permissão de ver cada módulo. |
tasks:write | Criar e concluir tarefas; exige também deals:read. | Vê o funil. |
notes:write | Registrar notas internas; exige também deals:read ou contacts:read. | Edita conversas. |
deals:read | Listar funis, equipe, negócios e tarefas, linha a linha. | Vê o funil. |
contacts:read | Listar e consultar contatos, agendamentos e respostas de formulários, com nome, telefone e e-mail. | Vê contatos. Agendamentos pedem também ver a agenda; respostas, ver formulários. |
conversations:read | Listar equipe e conversas, com o contato e a prévia da última mensagem. | Vê conversas. |
messages:read | Ler o texto das mensagens; exige também conversations:read. | Vê conversas. |
Na tela de autorização, contacts:read, conversations:read, messages:read, tasks:write e notes:write vêm desmarcadas: dados pessoais, conteúdo de conversas e ações que alteram o CRM só são concedidos por escolha ativa. tasks:write aparece para quem pode ver o funil e notes:write para quem pode escrever em conversas.
Uma mesma conexão não combina groups:schedule com contacts:read, conversations:read ou messages:read. O agente que lê texto escrito por clientes não recebe, na mesma conexão, a ferramenta que agenda mensagens em grupos. Para usar os dois, conecte por aplicativos diferentes: uma nova autorização do mesmo aplicativo substitui a anterior.
Uma conexão somente de contratos não precisa de groups:read. Conexões antigas de grupos não recebem acesso a contratos automaticamente; ampliar permissões exige novo consentimento.
A autenticação exige PKCE S256. A conexão dura até 30 dias; tokens de acesso têm duração curta e podem ser renovados dentro desse prazo. O aplicativo recebe tokens da conexão; a credencial interna permanece no servidor. As permissões atuais continuam sendo verificadas nas operações.
Ferramentas
| Ferramenta | Permissão específica | Uso |
|---|---|---|
listar_grupos | groups:read | Buscar grupos por nome, com paginação. |
listar_agendamentos_em_grupos | groups:read | Listar as mensagens agendadas em grupos, com situação e contadores. |
consultar_agendamento_em_grupos | groups:read | Consultar as entregas de uma mensagem agendada em grupos, pelo identificador do recibo. |
agendar_mensagens_em_grupos | groups:schedule | Agendar um lote com chave de idempotência obrigatória. |
buscar_contexto_contrato | contracts:read | Localizar contatos e negócios pelo nome, título ou produto (com acesso a produtos). |
listar_modelos_contrato | contracts:read | Buscar modelos disponíveis, com filtros e paginação. |
consultar_modelo_contrato | contracts:read | Consultar revisão, variáveis, mapeamentos e padrões do modelo. |
listar_contratos | contracts:read | Filtrar contratos por entidade, situação e período. |
consultar_contrato | contracts:read | Consultar situação, participantes, atividade e referências de documentos. |
preparar_contrato | contracts:prepare | Criar ou atualizar um rascunho versionado e identificar pendências. |
gerar_previa_contrato | contracts:prepare | Gerar uma prévia da revisão exata, sem notificar participantes. |
enviar_contrato_para_assinatura | contracts:send | Enfileirar o envio da revisão aprovada, com idempotência. |
consultar_indicadores | analytics:read | Ler indicadores de funil, vendas, atendimento, matrículas e leads. |
listar_funis | deals:read | Listar funis e etapas em ordem. |
listar_equipe | deals:read ou conversations:read | Listar membros para resolver o responsável. |
listar_negocios | deals:read | Listar negócios por funil, etapa, responsável, situação e período. |
listar_contatos | contacts:read | Buscar contatos por nome, e-mail, telefone, origem e período. |
consultar_contato | contacts:read | Consultar um contato pelo identificador. |
listar_conversas | conversations:read | Listar conversas por situação, canal, responsável e última atividade. |
ler_mensagens | conversations:read e messages:read | Ler o texto das mensagens de uma conversa. |
buscar_mensagens | contacts:read e messages:read | Encontrar contatos pelo que foi dito nas mensagens. |
listar_campanhas | analytics:read | Listar campanhas de disparo com situação, canal e contadores, sem destinatários. |
listar_automacoes | analytics:read | Listar automações com gatilho, situação e execuções, sem o fluxo. |
listar_tarefas | deals:read | Listar tarefas por situação, responsável, negócio, contato e vencimento. |
listar_agendamentos_da_agenda | contacts:read | Listar reuniões e atendimentos da agenda por situação, profissional, contato e início. |
listar_formularios | contacts:read ou analytics:read | Listar formulários com contadores e perguntas. |
listar_respostas_formulario | contacts:read | Listar as respostas de um formulário, sem as de teste. |
criar_tarefa | tasks:write e deals:read | Criar uma tarefa para a equipe, vinculada a negócio, contato ou conversa. |
concluir_tarefa | tasks:write e deals:read | Concluir uma tarefa em nome de quem autorizou a conexão. |
registrar_nota_interna | notes:write e (deals:read ou contacts:read) | Registrar uma nota interna em um contato ou negócio. |
relatorio_funil | analytics:read | Entradas, saídas e tempo por etapa, e envelhecimento dos negócios abertos por etapa e responsável. |
relatorio_atendimento | analytics:read | SLA atual, mensagens por dia e por canal e CSAT/NPS, sem grupos nem conteúdo. |
relatorio_disparos | analytics:read | Campanhas iniciadas, entrega por dia e por canal e custo em dólar das mensagens cobradas. |
relatorio_operacoes | analytics:read | Agendamentos, tarefas, respostas por formulário e execuções por automação. |
As permissões de preparação e envio são independentes entre si. Cada uma exige leitura de contratos. Ferramentas sem o escopo correspondente ficam fora da lista do agente.
As ferramentas que alteram algo são criar_tarefa, concluir_tarefa, registrar_nota_interna, agendar_mensagens_em_grupos, preparar_contrato, gerar_previa_contrato e enviar_contrato_para_assinatura. As demais só consultam. O MCP não envia mensagem a contatos nem cria ou altera campanhas, negócios, contatos, conversas, automações ou a agenda, e não reabre, edita ou apaga tarefas e notas; o agente é instruído a dizer que isso não está disponível, sem substituir por outra ferramenta. listar_agendamentos_da_agenda trata da agenda de reuniões e não tem relação com mensagens agendadas em grupos.
agendar_mensagens_em_grupos, preparar_contrato e enviar_contrato_para_assinatura são marcadas como ações que pedem confirmação: o aplicativo conectado deve perguntar a você antes de cada chamada, mesmo quando as consultas estão liberadas sem confirmação. Confira o conteúdo, os grupos e o horário antes de aprovar.
Montar painéis com indicadores
consultar_indicadores devolve agregados para montar painéis e responder perguntas de desempenho, no recorte do dashboard de quem autorizou a conexão. Quem vê o dashboard da organização recebe os números da organização (scope org); quem vê o da equipe ou só o próprio recebe scope department ou own e um scope_note avisando que o número é parcial. O mesmo vale para os relatórios; relatorio_disparos exige o dashboard da organização. Não há dados de contato nem conteúdo de conversas. Cada seção vem como tabela (columns e rows), com os nomes de funil, etapa, operador e produto já resolvidos; as seções agregáveis trazem também total.
| Parâmetro | Uso |
|---|---|
sections | Seções desejadas. Obrigatório. |
days | Janela das seções com data, de 1 a 60 dias. Padrão 60. |
group_by | Dimensões mantidas; o servidor soma as demais. Lista vazia devolve só o total. Omitido: todas. |
date_grain | Granularidade das datas: day (padrão), week (data da segunda-feira) ou month (AAAA-MM). |
| Seção | Conteúdo | Dimensões | Recorte |
|---|---|---|---|
open_pipeline | Todos os negócios abertos, com valor. Use para o total do funil. | pipeline, stage, operator | Sem data |
backlog | Conversas em espera por faixa de tempo. | operator, waiting | Sem data |
deal_outcomes | Vendas ganhas e perdidas por data de fechamento, com valor e ciclo médio. | date, pipeline, operator, status, loss_reason | Janela em days |
deals | Negócios criados, por etapa atual e etapa máxima alcançada. | date, pipeline, stage, reached_stage, product, status, operator | Janela em days |
conversations | Conversas criadas. | date, channel, status | Janela em days |
lead_first_touch, lead_last_touch | Origem dos contatos criados, pelo primeiro ou pelo último toque. | date, touch_date, record_source, entry_source, utm_source, utm_medium, utm_campaign, utm_content, utm_term | Janela em days |
enrollment_flow | Matrículas por data, com valor pago. | date, product, status, source | Janela em days |
service | Atendimento por operador nas janelas de 7, 30 e days; scope team é a equipe. | Não agregável | Janela em days |
enrollment_totals, products, product_offers | Matrículas totais, por produto e por oferta. | Não agregável | Sem data |
pipelines, operators | Catálogos: funis com a ordem das etapas e operadores. | Não agregável | Sem data |
Para vendas por operador, peça deal_outcomes com group_by ["operator", "status"]: a resposta traz uma linha por operador e situação, já somada. stage e reached_stage trazem sempre o funil, porque etapas de funis diferentes podem ter o mesmo nome. Uma dimensão que nenhuma seção pedida possui é recusada.
Valores monetários vêm na unidade da moeda, por código ISO 4217 (BRL em reais; XXX é moeda não informada). As datas e a janela seguem o fuso horário da organização, informado em window.timezone: uma venda fechada às 22h entra no próprio dia. Em operator, null significa sem responsável; em loss_reason, null é venda ganha, (sem motivo) é perda sem motivo e (fora da lista) é um motivo que não está mais cadastrado. Nomes repetidos ganham um sufixo curto para não se misturarem, e textos longos são cortados em 120 caracteres. Com date_grain week ou month, o primeiro e o último período podem vir incompletos, cortados pela janela.
Cada consulta devolve no máximo 64 KiB, para caber inteira na leitura do agente. Acima disso a consulta é recusada, nunca truncada, e a resposta informa o tamanho de cada seção: reduza as dimensões, use date_grain week ou month, peça menos seções ou diminua a janela.
Consultar negócios, contatos, conversas e demais registros
As ferramentas de leitura devolvem os registros linha a linha, para ver o que compõe um número ou analisar casos específicos. Para totais, somas e séries por data, prefira consultar_indicadores: ele agrega no servidor e não expõe dados pessoais.
- Comece por
listar_funiselistar_equipepara obter os identificadores de funil, etapa e responsável. Eles são os filtros das demais listas e traduzempipeline_id,stage_ideassigned_toem nomes.stage_ordernumera as etapas de cada funil a partir de 1, igual emlistar_funis,relatorio_funileconsultar_indicadores. - Filtre
listar_negocioselistar_conversaspelo período e pelo responsável em vez de percorrer tudo. Em conversas,assigned_tononedevolve as que estão sem responsável, eactive_since/active_untilrecortam pela última mensagem. - Abra o conteúdo com
ler_mensagenssó nas conversas que interessam. As mensagens vêm da mais recente para a mais antiga, sem o arquivo de mídia; áudios trazem a transcrição quando ela existe.sender_kindvemcontactnas recebidas enullnas enviadas sem autor registrado, como as escritas direto no aparelho. - Use
listar_campanhaselistar_automacoespara ver o desempenho dos disparos e o uso das automações. Campanhas não trazem a lista de destinatários e automações não trazem o fluxo. - Use
listar_tarefaspara o que está pendente ou vencido por responsável elistar_agendamentos_da_agendapara a agenda. A tarefa aberta com vencimento passado sai com a situaçãooverdue, a mesma conta de vencidas derelatorio_operacoes;statusoverduelista só essas, e sem filtro entram todas, inclusive concluídas e canceladas. Agendamentos não trazem anotações internas, link da reunião nem token de cancelamento. - Para formulários, comece por
listar_formularios: a chave de cada pergunta identifica a resposta emlistar_respostas_formulario. Respostas de teste ficam de fora, e um formulário de outra organização responde como não encontrado. - Para totais e tendências, prefira os relatórios:
relatorio_funil,relatorio_atendimento,relatorio_disparoserelatorio_operacoessomam no servidor, sem dados de contato, e aceitamdaysde 1 a 90 (o funil aceita tambémpipeline_id; por padrão ele omite as etapas e os funis sem negócio aberto e sem movimento na janela, ehide_empty_stages: falsetraz todos). Use as listas acima para ver o detalhe por trás de um número.
Toda lista, inclusive as de grupos e de contratos, responde no mesmo formato: data (as linhas), total, has_more e next_offset (o offset da próxima página, ou null).
| Lista | total |
|---|---|
listar_negocios, listar_contatos, buscar_mensagens, listar_grupos, listar_agendamentos_em_grupos, consultar_agendamento_em_grupos | Contagem do filtro. |
listar_funis, listar_equipe | Vêm inteiras, sem páginas: total é o número de linhas. |
listar_conversas, ler_mensagens, listar_campanhas, listar_automacoes, listar_tarefas, listar_agendamentos_da_agenda, listar_formularios, listar_respostas_formulario, listar_contratos, listar_modelos_contrato, buscar_contexto_contrato | null: o CRM não conta o filtro; siga por has_more e next_offset. |
buscar_mensagens devolve contatos com ocorrências dos termos e algumas mensagens de contexto. De cada contato vêm id, nome e origem; em listar_agendamentos_da_agenda, o nome de quem agendou. Telefone e e-mail só saem nessas duas ferramentas com include_contact_details: true.
Cada página aceita de 1 a 100 linhas, com offset de até 10.000; além disso next_offset vem null e o histórico segue por janelas de data. Datas sem horário (AAAA-MM-DD) são lidas como 00:00 no fuso horário da organização, também em from e to de listar_contratos; conexões autorizadas antes desta mudança usam America/Sao_Paulo até serem refeitas. Uma consulta que falha com retryable: true pode ser repetida; query_rejected não muda ao repetir e deve ser informada ao suporte com o correlation_id. Cada resposta devolve no máximo 64 KiB. Acima disso a consulta é recusada, nunca truncada: reduza limit e avance com offset. Os relatórios não paginam: acima do mesmo limite respondem result_too_large, e a orientação é informar pipeline_id (funil) ou reduzir days. Cada mensagem traz até 4.000 caracteres de texto, com truncated indicando o corte.
Estas ferramentas expõem dados pessoais (nome, telefone e e-mail, inclusive em agendamentos e respostas de formulários) e o conteúdo das conversas ao aplicativo conectado. Conceda contacts:read, conversations:read e messages:read apenas quando a análise precisar deles. O texto de mensagens, nomes, respostas de formulários e campos personalizados é escrito por terceiros: o agente deve tratá-lo como dado, nunca como instrução. Caracteres de controle e de formatação invisível são removidos antes da entrega.
Preparar e enviar um contrato
- Localize o contato ou negócio e escolha um modelo disponível. Resolva ambiguidades e dados faltantes; o agente não deve inventar destinatários, documentos pessoais ou cláusulas.
- Prepare o rascunho e guarde
draft_iderevision. Atualizações exigemexpected_revision; uma revisão desatualizada é rejeitada, sem sobrescrever o trabalho do operador. - Gere a prévia quando o modelo for compatível. A prévia é um DOCX com substituição de variáveis escalares; não promete PDF nem equivalência visual com o documento final. Há restrições de formato descritas na referência de contratos.
- Abra o
approval_urlretornado pelo preparo. Um operador autenticado precisa conferir a revisão no CRM e aprovar conteúdo, participante, canal e prazo. A aprovação fica vinculada à revisão, ao operador e ao aplicativo; um booleano fornecido pelo agente não vale como aprovação. - Use
approval_id,expected_revisione umaidempotency_keyestável para solicitar o envio. O primeiro corte de envio aceita modelo pronto e um signatário. Arquivo avulso, múltiplos signatários e lotes não estão habilitados nesse envio. - Guarde
dispatch_job_idesignature_envelope_id. Consulte o contrato usando o identificador do envelope para acompanhar a situação.
Alterar o rascunho ou a configuração aprovada exige nova revisão e aprovação. A aprovação expira em 15 minutos e só pode ser consumida uma vez; a repetição idempotente de uma solicitação já aceita recupera o recibo existente.
Solicitação aceita, convite enviado e assinatura concluída são estados distintos. Conteúdo retornado de modelos e documentos é dado para revisão, nunca instrução para ampliar acesso ou executar outras operações.
Agendar mensagens
O agendamento é a única ação de envio do MCP: no horário marcado, todos os participantes de cada grupo recebem a mensagem. O agente é instruído a agendar só a seu pedido e a confirmar com você o conteúdo, os grupos pelo nome e o horário antes de chamar a ferramenta; confira esses dados na confirmação que o aplicativo exibir.
Primeiro, peça ao agente para localizar os grupos e confira os nomes e identificadores. A busca é por nome; ela não classifica automaticamente grupos como alunos ou gerais.
O lote usa os campos da API de agendamento, com idempotency_key adicional na ferramenta. Aceita texto, imagem, vídeo e documento, incluindo PDF. A mídia precisa de URL HTTPS acessível ao processamento; o MCP não oferece upload de arquivos.
Escolha o fuso IANA, como America/Sao_Paulo ou Europe/Lisbon. O padrão é America/Sao_Paulo. O horário vai em AAAA-MM-DDTHH:mm:ss, lido no fuso informado; com Z ou offset, vale o offset. Exige pelo menos cinco minutos de antecedência. Limites: 50 itens por lote, 50 grupos por item e 1.000 destinos somados. Aceitar o lote confirma o agendamento; consulte os identificadores individuais para acompanhar envio e entrega.
As conexões de agente de uma pessoa agendam, juntas, no máximo 200 destinos a cada 24 horas em cada organização, somando os lotes aceitos. Acima disso o lote inteiro é recusado e nada é agendado; o limite reabre conforme os lotes anteriores completam 24 horas, e reconectar o aplicativo não o reabre. Agendamentos feitos pela tela do CRM não entram nessa conta.
Para saber o que já está agendado, peça a lista: listar_agendamentos_em_grupos mostra os 500 agendamentos mais recentes da organização, feitos pelo agente, por outra conexão ou pela tela do CRM.
Registrar tarefas e notas
criar_tarefa, concluir_tarefa e registrar_nota_interna ficam dentro do CRM: nada é enviado ao contato e nenhuma automação é disparada. As permissões tasks:write e notes:write vêm desmarcadas na tela de autorização e podem ficar na mesma conexão que lê conversas e mensagens. O aplicativo conectado pede a sua confirmação a cada chamada; confira o texto, o prazo e o destino antes de aprovar.
A tarefa é criada para a pessoa indicada em assigned_to (de listar_equipe) ou, sem ela, para quem autorizou a conexão; a conclusão e a nota saem em nome de quem autorizou. O campo type da tarefa é só um rótulo: whatsapp, email, call e meeting não enviam nem agendam nada. Não há ferramenta para reabrir uma tarefa nem para editar ou apagar uma nota.
As conexões de agente de uma pessoa fazem, juntas, no máximo 200 escritas (tarefas e notas) a cada 24 horas em cada organização. Acima disso a ação é recusada e nada é gravado; reconectar o aplicativo não reabre o limite. Escritas feitas pela tela do CRM não entram nessa conta.
Evitar duplicidades e tratar resultados incertos
Mantenha a mesma chave de idempotência e o mesmo conteúdo na repetição da mesma solicitação. Conteúdo diferente com uma chave usada é rejeitado.
Se o resultado não for confirmado, consulte o estado antes de repetir e não gere outra chave. Falha de conexão não prova que a solicitação deixou de ser aceita.
- Contratos: a deduplicação usa organização, operador e identidade estável do aplicativo. Renovar ou reconectar o mesmo aplicativo não cria um novo espaço de deduplicação. Trocar o aplicativo ou operador não é uma forma segura de repetir uma solicitação incerta.
- Tarefas e notas: a deduplicação usa a credencial da conexão, como nos grupos. Em resultado incerto, confira em
listar_tarefasantes de repetir; reconectar não deduplica a ação anterior. - Grupos: a deduplicação usa a credencial da conexão. Reconectar cria outra credencial, que não deduplica o lote da conexão anterior. Não reconecte para repetir um resultado incerto: confira antes na lista de agendamentos se o lote foi criado.
O MCP não oferece cancelamento, lembretes ou edição de envios de contratos já aceitos, nem cancelamento ou edição de agendamentos de grupos.
Revogar ou trocar a organização
Em Configurações → API → Conexão com IA, proprietários e administradores veem todos os aplicativos conectados, com o nome de quem autorizou cada um, e desconectam qualquer um deles. A conexão também deixa de funcionar assim que quem a autorizou sai da organização, e cada ferramenta recusa quando a pessoa perde a permissão correspondente. A revogação não desfaz mensagens já agendadas nem envios já executados. Contratos enfileirados têm a autorização revalidada antes de novos efeitos externos.
Desconectar no aplicativo, quando ele envia a revogação OAuth, invalida sua autorização após a propagação. Isso não remove automaticamente a credencial interna da lista de API; ela expira em até 30 dias e também pode ser revogada pelo administrador.
Para trocar de organização ou ampliar permissões, inicie nova autorização. A nova conexão substitui a autorização anterior do mesmo usuário e aplicativo. Antes de reconectar, resolva operações cujo resultado esteja incerto.