PreClick

Avaliar URLs de destino quanto a ameaças potenciais e alinhamento com a intenção de navegação do agente antes da navegação.

Documentação

PreClick MCP Server

smithery badge

PreClick — Um serviço de verificação prévia de URLs nativo do MCP para agentes autônomos. Ele verifica links em busca de ameaças e confirma que correspondem à tarefa pretendida antes da execução. Projetado para fluxos de trabalho agênticos, oferece governança de navegação de alta precisão e sensível ao contexto, com aprendizado adaptativo.

Publicador: CybrLab.ai | Serviço: PreClick

Camada de Teste Hospedada: Nenhuma chave de API necessária para até 100 solicitações/dia. Para limites maiores e cotas estáveis, use uma chave de API (contate contact@cybrlab.ai).


Visão Geral

PreClick é um scanner de segurança de URLs e servidor MCP que permite que agentes de IA e qualquer cliente analisem URLs em busca de phishing, malware e outras ameaças de segurança antes da navegação. Use-o como um scanner de URLs independente por meio das bibliotecas de cliente abaixo, ou conecte-se diretamente via protocolo MCP.

Integrações

Bibliotecas de Cliente (Recomendado)

A maneira mais rápida de adicionar verificação de segurança de URLs a qualquer agente de IA, pipeline de automação ou aplicação. Esses clientes de scanner de URLs independentes lidam com conexão, polling e recuperação de erros prontos para uso — sem necessidade de conhecimento ou conformidade com o protocolo MCP:

PacoteLinguagemInstalaçãoRepositório
preclickPython (assíncrono, 3.10+)pip install preclickpreclick-python
@cybrlab/preclick-mcp-clientJavaScript/Node.js (20+)npm install @cybrlab/preclick-mcp-clientpreclick-mcp-client

Ambas as bibliotecas fornecem uma API simples de verificação de segurança de URLs orientada a verificação (scan(url) / scanWithIntent(url, intent)) que retorna resultados diretamente — detecção de phishing, análise de ameaças e alinhamento de intenção em uma única chamada. Sem vocabulário de protocolo, sem código boilerplate connect(), sem polling manual para o caso comum.

Adaptadores de Framework

IntegraçãoRepositório
Plugin OpenClawpreclick-openclaw

Configuração Manual do MCP

Para clientes nativos do MCP que falam o protocolo diretamente, consulte Início Rápido abaixo.

Modos de Autenticação

ImplantaçãoRequisito X-API-KeyNotas
Hospedado (https://preclick.ai/mcp)Opcional até 100 solicitações/diaChave de API recomendada para limites maiores
Hospedado (https://preclick.ai/mcp)Necessária acima da cota de testeContate o suporte para chaves provisionadas

Aviso Importante

Esta ferramenta destina-se apenas a avaliação de segurança autorizada. Use-a somente em sistemas ou sites que você possui ou para os quais tenha permissão explícita de avaliação. Qualquer uso não autorizado, ilegal ou malicioso é estritamente proibido. Você é responsável por garantir a conformidade com todas as leis, regulamentos e obrigações contratuais aplicáveis.

Casos de Uso

  • Validação prévia de URLs para agentes de IA
  • Verificação automatizada de segurança de URLs em fluxos de trabalho
  • Detecção de links maliciosos em e-mails/mensagens

Início Rápido

1. Configure Seu Cliente MCP

Escolha uma opção:

Teste (hospedado, até 100 solicitações/dia sem chave de API):

{
  "mcpServers": {
    "preclick-mcp": {
      "transport": "streamable-http",
      "url": "https://preclick.ai/mcp"
    }
  }
}

Autenticado (recomendado para uso estável e de maior volume):

{
  "mcpServers": {
    "preclick-mcp": {
      "transport": "streamable-http",
      "url": "https://preclick.ai/mcp",
      "headers": {
        "X-API-Key": "YOUR_API_KEY"
      }
    }
  }
}

2. Opcional: Inicializar Sessão (somente modo com estado)

O uso hospedado padrão é sem estado. Os clientes enviam mensagens JSON-RPC com POST /mcp. Alguns clientes HTTP Streamable também podem sondar GET /mcp por um stream SSE. Na implantação hospedada sem estado, /mcp não oferece um stream SSE e retorna HTTP 405 Method Not Allowed. Os clientes devem tratar 405 como "sem stream SSE neste endpoint" e continuar usando POST /mcp.

Os clientes ainda devem enviar os cabeçalhos HTTP padrão do MCP:

  • Accept: application/json, text/event-stream em POST
  • MCP-Protocol-Version em todas as solicitações não-inicialização

A implantação hospedada atualmente normaliza cabeçalhos POST Accept ausentes ou incompletos para compatibilidade. Também permite ausência de MCP-Protocol-Version em solicitações POST de listagem somente descoberta (tools/list, resources/list, prompts/list) para compatibilidade com registro. Os clientes não devem depender de nenhum desses comportamentos.

# Only required if the server is running in stateful mode
curl -X POST https://preclick.ai/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "initialize",
    "params": {
      "protocolVersion": "2025-06-18",
      "capabilities": {},
      "clientInfo": {"name": "my-client", "version": "1.0"}
    }
  }'
# Response includes Mcp-Session-Id header - save it for subsequent requests

3. Iniciar uma Verificação

url_scanner_scan suporta dois modos de execução (os mesmos modos se aplicam a url_scanner_scan_with_intent):

  • Aumentado por Tarefa (recomendado): Inclua o parâmetro task para execução assíncrona
  • Direto: Omita o parâmetro task para execução síncrona
curl -X POST https://preclick.ai/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "MCP-Protocol-Version: 2025-06-18" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{
    "jsonrpc": "2.0",
    "id": 2,
    "method": "tools/call",
    "params": {
      "name": "url_scanner_scan",
      "arguments": {
        "url": "https://example.com"
      },
      "task": {
        "ttl": 720000
      }
    }
  }'
# If stateful mode is enabled, include: -H "Mcp-Session-Id: YOUR_SESSION_ID"

Resposta (tarefa enviada):

{
  "jsonrpc": "2.0",
  "id": 2,
  "result": {
    "task": {
      "taskId": "550e8400-e29b-41d4-a716-446655440000",
      "status": "working",
      "statusMessage": "Queued for processing",
      "createdAt": "2026-01-18T12:00:00Z",
      "lastUpdatedAt": "2026-01-18T12:00:00Z",
      "ttl": 720000,
      "pollInterval": 2000
    }
  }
}

Opcional: Forneça uma intenção de visita de URL para contexto adicional (recomendado, mas não obrigatório):

curl -X POST https://preclick.ai/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "MCP-Protocol-Version: 2025-06-18" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{
    "jsonrpc": "2.0",
    "id": 3,
    "method": "tools/call",
    "params": {
      "name": "url_scanner_scan_with_intent",
      "arguments": {
        "url": "https://example.com",
        "intent": "Book a hotel room"
      },
      "task": {
        "ttl": 720000
      }
    }
  }'

Recomendação: Use url_scanner_scan_with_intent quando você puder declarar seu propósito (login, compra, reserva, pagamentos, download de arquivo) para que a incompatibilidade intenção/conteúdo possa ser considerada como um sinal adicional. Caso contrário, use url_scanner_scan. Comprimento máximo da intenção: 248 caracteres. Strings de intenção com pouca informação ou semelhantes a instruções são tratadas como não fornecidas. O resultado inclui intent_alignment (misaligned, no_mismatch_detected, inconclusive ou not_provided). no_mismatch_detected só é retornado quando a análise de intenção teve evidências suficientes; se a análise de intenção não estiver disponível ou as evidências forem limitadas, o resultado é inconclusive. Quando intent_alignment é misaligned e confirmado por análise bem-sucedida de alta confiança, a diretiva de resposta é DENY com motivo intent_inconsistent_destination (portão de política; a pontuação de risco não é alterada). Quando a análise de alta confiança confirma uma alegação não verificada de serviço de alto impacto com corroboração fraca de identidade em um contexto de baixa confiança, a diretiva de resposta também é DENY com motivo insufficient_service_verification (portão de política; a pontuação de risco não é alterada). Em casos adicionais de política contextual com poucas evidências, as respostas podem retornar DENY com motivos como insufficient_service_verification ou insufficient_trust_signals (portão de política; a pontuação de risco não é alterada).

Nota de timeout de chamada direta: chamadas síncronas de ferramentas usam uma janela de espera limitada do servidor dimensionada para clientes somente diretos (padrão hospedado 90s). Se o timeout for atingido, o servidor retorna JSON-RPC -32603 com error.data.taskId e error.data.pollInterval para que você possa continuar via tasks/get / tasks/result.

Nota de compatibilidade: se o seu cliente MCP não puder chamar métodos nativos de Tasks (tasks/get / tasks/result), use url_scanner_async_scan ou url_scanner_async_scan_with_intent para enviar trabalho e depois faça polling com url_scanner_async_task_status / url_scanner_async_task_result. Chame essas ferramentas de compatibilidade apenas como ferramentas comuns; não inclua um parâmetro MCP nativo task.

4. Fazer Polling de Resultados

tasks/result usa uma espera de bloqueio hospedada mais curta (padrão 30s). Se essa espera for excedida, o servidor retorna JSON-RPC -32603 com error.data.taskId e error.data.pollInterval. Clientes nativos de Tasks devem preferir fazer polling com tasks/get até que o status seja completed, então chamar tasks/result para recuperar o resultado final imediatamente.

curl -X POST https://preclick.ai/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "MCP-Protocol-Version: 2025-06-18" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{
    "jsonrpc": "2.0",
    "id": 3,
    "method": "tasks/result",
    "params": {
      "taskId": "550e8400-e29b-41d4-a716-446655440000"
    }
  }'
# If stateful mode is enabled, include: -H "Mcp-Session-Id: YOUR_SESSION_ID"

Resposta (tarefa concluída — formato CallToolResult, igual ao síncrono tools/call):

{
  "jsonrpc": "2.0",
  "id": 3,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "{\"risk_score\":0.05,\"confidence\":0.95,\"analysis_complete\":true,\"agent_access_directive\":\"ALLOW\",\"agent_access_reason\":\"no_immediate_risk_detected\",\"intent_alignment\":\"not_provided\"}"
      }
    ],
    "isError": false
  }
}

Ferramentas Disponíveis

FerramentaDescriçãoModos de Execução
url_scanner_scanAnalisar URL em busca de ameaças de segurançaDireto (síncrono), Tarefa (assíncrono)
url_scanner_scan_with_intentAnalisar URL com contexto de intenção opcionalDireto (síncrono), Tarefa (assíncrono)
url_scanner_async_scanFerramenta de envio assíncrono de compatibilidadeAssíncrono baseado em ferramenta
url_scanner_async_scan_with_intentEnvio assíncrono de compatibilidade com intençãoAssíncrono baseado em ferramenta
url_scanner_async_task_statusFerramenta de polling de status de compatibilidadeAssíncrono baseado em ferramenta
url_scanner_async_task_resultFerramenta de polling de resultado de compatibilidadeAssíncrono baseado em ferramenta

Consulte a Documentação Completa da API para esquemas e exemplos detalhados.


Autenticação

Os requisitos de autenticação dependem do modo de implantação:

  • Endpoint hospedado (https://preclick.ai/mcp): a chave de API é opcional para até 100 solicitações/dia.
  • Endpoint hospedado acima da cota de teste: chave de API necessária.

Consulte o Guia de Autenticação para obter detalhes sobre como obter chaves de API.


Especificações Técnicas

PropriedadeValor
ID de Registroai.preclick/preclick-mcp
Especificação MCP2025-06-18
Protocolo do Cliente2025-06-18
TransporteHTTP Streamable
Endpointhttps://preclick.ai/mcp
Tempo Típico de VerificaçãoVaria conforme o alvo
Esquemas SuportadosHTTP, HTTPS
Comprimento Máximo de URLImposto pelo servidor

Suporte


Licença

Licença Apache 2.0 - Consulte LICENSE para obter detalhes.

Direitos autorais CybrLab.ai