Como conectar ferramentas externas via Model Context Protocol, avaliar Security Risk Scores e construir ações em Apex sob o novo modelo de execução desacoplada da plataforma.

A transição da inteligência artificial generativa baseada em chatbots para sistemas autônomos orientados a agentes exigiu uma reestruturação profunda nas fundações da Salesforce. Durante o ciclo recente de evolução do ecossistema (consolidado nos lançamentos do Summer ’26 e nos previews do Winter ’27), a Salesforce acelerou a iniciativa Headless 360, permitindo que o cérebro cognitivo do Agentforce atue desacoplado da interface gráfica tradicional do CRM.

Contudo, dar autonomia para que agentes acionem ferramentas externas, consultem bancos de dados legados e executem mutações em sistemas corporativos cria um desafio de engenharia imediato: a governança do ambiente de execução. Se um agente pode invocar um servidor externo através do Model Context Protocol (MCP) ou acionar métodos em Apex, como garantir que ele não execute operações destrutivas ou seja induzido por injeções indiretas de prompt?

Para responder a essa pergunta, a liderança de engenharia da plataforma introduziu o conceito do Enterprise Harness: uma camada de contenção, observabilidade e políticas de segurança que envolve as ações pro-code e os servidores MCP conectados. Neste artigo técnico, vamos explorar como arquitetar integrações robustas entre o Agentforce e ferramentas externas, entender a nova avaliação de risco de servidores MCP e implementar ações em Apex sob princípios estritos de Zero Trust.

1. A Evolução do Headless 360 e o Papel do Enterprise Harness

O conceito de arquitetura sem cabeça (headless) em IA corporativa significa que a inteligência, o raciocínio e a tomada de decisão residem em um motor unificado (o Atlas Reasoning Engine integrado ao Data Cloud), enquanto a execução pode ocorrer em qualquer ponto de contato: desde um componente móvel offline no Consumer Goods Cloud até aplicações em React, bots de terminal ou serviços em nuvem.

Enterprise Harness atua como o intermediário regulatório entre a intenção formulada pelo LLM e a execução física do código. Ele desempenha quatro funções vitais:

  • Validação de Esquemas e Tipagem Estrita: impede que saídas alucinadas do modelo sejam enviadas diretamente como parâmetros para APIs transacionais.
  • Avaliação de Risco em Tempo de Execução: analisa o contexto da sessão antes de autorizar a chamada a um servidor MCP de terceiros.
  • Barreiras de Permissão Granular: assegura que o agente herde estritamente o Field-Level Security (FLS) e o perfil do usuário chamador, impedindo escalada de privilégios.
  • Observabilidade Contínua: registra cada etapa de raciocínio e cada invocação de ferramenta em logs estruturados de auditoria sem consumir créditos de dados do Data 360.
+-------------------------------------------------------------+
|                   Atlas Reasoning Engine                    |
|           (Orquestração, Intenção e Grounding)              |
+-------------------------------------------------------------+
                              |
                              v
+-------------------------------------------------------------+
|                     ENTERPRISE HARNESS                      |
|  [Security Risk Gate] [Schema Validator] [Audit Logger]     |
|             (Políticas de Segurança e Zero Trust)           |
+-------------------------------------------------------------+
         |                                           |
         v                                           v
+------------------------+               +------------------------+
|   Ações Pro-Code Apex  |               |  Servidores MCP (API)  |
|  (@InvocableMethod)    |               |  (Model Context Proto) |
+------------------------+               +------------------------+

2. Model Context Protocol (MCP) no Salesforce: Conectando Ferramentas Externas

O padrão MCP, adotado amplamente na indústria de desenvolvimento por provedores como Anthropic e parceiros de nuvem, tornou-se o protocolo padrão para expor ferramentas a modelos de linguagem. No Salesforce, o Agentforce permite cadastrar servidores MCP para que os agentes consultem ferramentas especializadas (como repositórios Git, sistemas ERP e mecanismos de cálculo financeiro).

No entanto, servidores MCP de terceiros introduzem superfícies de ataque adicionais. Uma ferramenta maliciosa ou mal configurada pode expor dados confidenciais ou sofrer injeção de instruções nas respostas enviadas ao agente.

Configuração do Esquema MCP

Um servidor MCP expõe suas ferramentas através de esquemas padronizados em JSON. Abaixo apresentamos um exemplo de contrato para um serviço corporativo de consulta de crédito para clientes de atacado:

{
  "name": "wholesale_credit_verifier",
  "description": "Verifica o limite de crédito disponível e o histórico de inadimplência de contas comerciais.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "accountNumber": {
        "type": "string",
        "description": "Identificador fiscal ou código único da conta corporativa."
      },
      "requestedAmount": {
        "type": "number",
        "description": "Valor monetário da transação ou pedido a ser avaliado."
      }
    },
    "required": ["accountNumber", "requestedAmount"]
  }
}

Quando esse serviço é registrado na central de ferramentas do Agentforce, a plataforma submete o conector a uma análise automática de conformidade.

3. Avaliação de Índices de Risco (Security Risk Scores) para Servidores MCP

As atualizações da plataforma introduziram o recurso de Security Risk Scores para servidores MCP de terceiros. Esse mecanismo inspeciona automaticamente os metadados do conector e atribui uma pontuação de risco calculada com base em quatro vetores essenciais:

  • Mutabilidade da Ação: ferramentas somente leitura (Read-Only) recebem pontuações de risco menores do que ferramentas que executam gravações, deleções ou transferências financeiras.
  • Escopo de Acesso a Dados: análise do tipo de dado trafegado (dados transacionais comuns versus PII ou registros financeiros confidenciais).
  • Validação de Certificados e Criptografia: exigência de certificados TLS válidos e suporte a autenticação mútua (mTLS) com tokens OAuth assinados.
  • Isolamento de Domínio: verificação se os endpoints estão restritos a listas de domínios corporativos permitidos, bloqueando domínios públicos ou sem governança.

Matriz de Decisão do Enterprise Harness

Nível de RiscoAção Recomendada pelo ArquitetoConfiguração de Execução no Agentforce
Baixo (0 a 30)Invocação totalmente autônomaAção executada diretamente pelo agente sem confirmação manual.
Médio (31 a 70)Invocação condicionadaExecução autônoma com registro obrigatório de auditoria e limitação de taxa (rate limit).
Alto (71 a 100)Human-in-the-Loop obrigatórioO agente prepara o payload da ação e solicita autorização expressa do usuário humano antes de disparar a chamada.

4. Construindo Ações Pro-Code em Apex Blindadas para o Agentforce

Quando a lógica de negócio exige regras complexas dentro da própria org, o desenvolvimento pro-code em Apex continua sendo o pilar central. No entanto, para expor uma classe Apex como uma ação de agente sob o modelo do Enterprise Harness, o desenvolvedor deve aplicar padrões defensivos rigorosos.

Diretrizes para Ações Apex Seguras

  • Validação de FLS e Objeto: sempre aplique WITH USER_MODE ou verifique Schema.sObjectType para garantir que o contexto do agente não ignore as permissões do usuário logado.
  • Entradas Tipadas em DTOs: utilize classes internas com anotações @InvocableVariable contendo descrições claras para o grounding do LLM.
  • Respostas Estruturadas: nunca retorne strings concatenadas soltas; forneça objetos de resposta contendo status, mensagens de validação e identificadores criados.

Abaixo temos a implementação completa de uma ação Apex para liberação de limite emergencial de crédito com controle de transação e auditoria:

/**
 * @description Ação de agente para liberação de crédito emergencial em contas B2B.
 * Projetada para o Agentforce sob o modelo de segurança do Enterprise Harness.
 */
public with sharing class CreditLimitOverrideAction {

    public class RequestPayload {
        @InvocableVariable(
            label='ID da Conta'
            description='O ID de 18 dígitos da conta cliente no Salesforce.'
            required=true
        )
        public Id accountId;

        @InvocableVariable(
            label='Valor do Aumento Solicitado'
            description='O montante financeiro adicional solicitado para o limite.'
            required=true
        )
        public Decimal additionalLimitAmount;

        @InvocableVariable(
            label='Justificativa de Negócio'
            description='A razão apresentada pelo cliente ou calculada pelo agente para o aumento emergencial.'
            required=true
        )
        public String businessJustification;
    }

    public class ResponsePayload {
        @InvocableVariable(label='Operação Aprovada' description='Indica se o limite foi aprovado com sucesso.')
        public Boolean isSuccess;

        @InvocableVariable(label='Novo Limite Total' description='O valor atualizado do limite de crédito após a operação.')
        public Decimal updatedCreditLimit;

        @InvocableVariable(label='Mensagem de Retorno' description='Mensagem explicativa sobre o resultado da transação.')
        public String statusMessage;
    }

    @InvocableMethod(
        label='Aprovar Limite de Crédito Emergencial'
        description='Avalia e aplica um limite de crédito temporário para pedidos de varejo de alto volume. Deve ser acionado apenas com justificativa válida.'
        category='Finance'
    )
    public static List<ResponsePayload> evaluateCreditOverride(List<RequestPayload> requests) {
        List<ResponsePayload> results = new List<ResponsePayload>();

        for (RequestPayload request : requests) {
            ResponsePayload response = new ResponsePayload();

            // Validação de entrada defensiva
            if (request.accountId == null || request.additionalLimitAmount == null || request.additionalLimitAmount <= 0) {
                response.isSuccess = false;
                response.statusMessage = 'Parâmetros inválidos: O ID da conta e o valor positivo são obrigatórios.';
                results.add(response);
                continue;
            }

            try {
                // Consulta respeitando estritamente o modo do usuário e FLS
                Account targetAccount = [
                    SELECT Id, Name, AnnualRevenue, Description
                    FROM Account
                    WHERE Id = :request.accountId
                    WITH USER_MODE
                    LIMIT 1
                ];

                // Limite máximo de segurança estabelecido por política corporativa (Hard Limit)
                Decimal maxPermittedIncrease = (targetAccount.AnnualRevenue != null) ? targetAccount.AnnualRevenue * 0.10 : 50000.00;

                if (request.additionalLimitAmount > maxPermittedIncrease) {
                    response.isSuccess = false;
                    response.statusMessage = 'Solicitação rejeitada pelo Enterprise Harness: O valor ultrapassa o teto máximo permitido de 10% da receita anual cadastrada.';
                    results.add(response);
                    continue;
                }

                // Aplicação da alteração via DML seguro em USER_MODE
                targetAccount.Description = (targetAccount.Description != null ? targetAccount.Description + '\n' : '') +
                    '[' + Datetime.now().format() + ' - Agentforce Override]: ' +
                    request.businessJustification + ' (Valor: ' + request.additionalLimitAmount + ')';

                update as user targetAccount;

                response.isSuccess = true;
                response.updatedCreditLimit = request.additionalLimitAmount;
                response.statusMessage = 'Limite de crédito emergencial autorizado e registrado no histórico da conta com sucesso.';

            } catch (Exception ex) {
                response.isSuccess = false;
                response.statusMessage = 'Erro interno durante a execução da ação: ' + ex.getMessage();
            }

            results.add(response);
        }

        return results;
    }
}

5. Agent Observability: Auditoria de Sessões Sem Custo de Créditos Data 360

Um dos grandes obstáculos enfrentados pelos times de arquitetura na implantação de agentes em larga escala era o custo computacional e de licenças para auditar o fluxo de raciocínio. A gravação detalhada de telemetria muitas vezes concorria com o consumo de créditos de processamento de dados.

Com o recurso de Agent Observability, a Salesforce separou a camada de telemetria operacional da cobrança de créditos transacionais.

Capacidades Essenciais de Observabilidade

  • Context-Based Session Scoring: a plataforma avalia e pontua automaticamente a eficácia da sessão (se o objetivo do usuário foi concluído sem desvios excessivos ou voltas circulares de raciocínio).
  • Logging Aprofundado de Ações: registro estruturado de inputs recebidos, payloads enviados para servidores MCP ou Apex, tempo de resposta em milissegundos e eventuais exceções tratadas.
  • Detecção de Drift e Alucinações: alertas em tempo real caso um agente comece a acionar ferramentas fora do escopo semântico autorizado pelo seu perfil de trabalho.

Esses logs podem ser consultados diretamente no Agentforce Studio ou exportados para sistemas SIEM corporativos (como Splunk, Datadog ou AWS CloudWatch) através das APIs de telemetria da Salesforce.

6. O Papel do Arquiteto: Da Configuração Declarativa à Engenharia de Sistemas

A introdução do Headless 360 e do Enterprise Harness redefine definitivamente as prioridades do arquiteto Salesforce em 2026:

  • Modelagem de Intenções e Contratos: o foco deixa de ser apenas construir telas e passa a ser a definição de contratos de integração claros (esquemas JSON de MCP e assinaturas @InvocableMethod em Apex) que guiem os agentes sem ambiguidades.
  • Definição de Fronteiras de Confiança (Trust Boundaries): o arquiteto deve desenhar onde a autonomia do agente termina e onde a supervisão humana é estritamente necessária, implementando travas determinísticas no código Apex que nenhuma inferência de LLM possa burlar.
  • Governança Unificada de Ferramentas: estabelecer auditorias periódicas sobre os servidores MCP conectados à organização, revisando certificados, logs de acesso e índices de risco de cada conector.

Conclusão

O Agentforce deixa de ser uma interface conversacional isolada e consolida-se como o motor de orquestração de toda a estratégia digital corporativa. Ao adotar o Enterprise Harness, integrar ferramentas via Model Context Protocol (MCP) com validação de riscos e blindar as ações em Apex, sua equipe de tecnologia garante que a inovação autônoma ocorra sobre bases sólidas de segurança, desempenho e auditabilidade.

Como a sua organização está estruturando a governança e a segurança das ações dos seus agentes de IA? Compartilhe suas dúvidas técnicas nos comentários ou conecte-se conosco no LinkedIn para acompanhar as discussões sobre o futuro da arquitetura Salesforce.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *