Pular para o conteúdo
NotHolyDocs

Chat

Ferramentas do harness

O que cada ferramenta do harness faz, quando roda, o que o resultado significa e seus limites no chat, CLI, MCP e Research API.

Ver em Markdown

O harness é o conjunto de ferramentas em volta dos modelos. No chat, o modelo decide quando chamá-las, e você vê cada chamada com o alvo e a duração. Os resultados chegam ao modelo entre marcadores com id aleatório, marcados como conteúdo não confiável.

As ferramentas do servidor só leem: páginas públicas, índices de busca, nossos espelhos e os arquivos que você anexa. Nenhuma faz scan, sondagem ou envia payload a um alvo. O agente da CLI é a única parte que roda comandos, na sua máquina e com a sua aprovação.

Quando o chat oferece cada ferramenta

FerramentaOferecida quando
web_search, read_urlWeb está ligada
darkweb_searchWeb está ligada e a sua mensagem pede explicitamente
cve_lookup, cve_search, advisory_lookupCVE está ligado
kb_search, kb_readSempre. Não existe chave
file_list, file_read, file_search, binary_info, archive_list, disassembleHá um arquivo anexado

Uma execução para em 12 passos do modelo, 5 chamadas de ferramenta por vez, 60 segundos por ferramenta e 10 minutos no total. Os resultados entram na conversa e são cobrados como tokens de entrada, no preço do modelo.

Busca na web

web_search(query, count?) recebe uma busca de até 400 caracteres e devolve títulos, URLs e trechos das páginas, 5 resultados por padrão e 10 no máximo. Resultados de NVD, cve.org, CISA, GitHub, Seclists, PortSwigger e OWASP vêm primeiro, e buscas idênticas ficam em cache por 15 minutos. Resultados podem estar errados ou velhos, então abra a fonte antes de confiar.

Leitura de página

read_url(url) devolve o texto de uma página pública. No chat, só abre URLs que você digitou ou que vieram de um resultado de busca, CVE, advisory ou base de conhecimento. Links dentro de uma página e resultados .onion não podem ser abertos.

Aceita http(s) nas portas 80 e 443 e HTML, texto, JSON ou XML, até 10 MB e 15 segundos. Cada endereço e redirecionamento é conferido, a conexão fica fixa no IP conferido e o robots.txt é respeitado. Recusa IP literal, strings de ataque, caminhos de arquivo exposto como /.git e /.env, e mais de 40 caminhos distintos num host em 10 minutos. Uma URL que carrega texto de um arquivo anexado é recusada.

Busca na dark web

darkweb_search(query, max_results?, engines?) recebe uma busca de até 200 caracteres e devolve até 30 entradas. Omita engines para usar todos os índices.

O chat só oferece essa ferramenta quando você pede explicitamente. A mensagem precisa conter dark web, deep web, darknet, .onion, onion site, serviços ocultos ou Tor, ou ser continuação direta de um turno que tinha isso. Citar um grupo de ransomware ou um vazamento não basta, e essas perguntas vão para web_search. Com Web desligada, a ferramenta fica desligada.

Cada resultado é um registro de índice de busca: título, URL .onion, trecho e o índice de origem. O harness lê as páginas de resultado dos índices por Tor e nunca abre, rastreia ou baixa uma página listada. Trate cada entrada como pista não verificada e possivelmente hostil.

O limite é de 5 buscas por minuto por usuário. Resultados patrocinados são descartados. Um filtro de segurança recusa buscas e descarta resultados sobre material de abuso sexual infantil. Sem rota Tor, a ferramenta avisa e pode usar um índice da web aberta.

No MCP, chamar darkweb_search já é o pedido explícito. A Research API e a CLI não têm rota de dark web.

Dados de CVE

cve_lookup(id) devolve um registro consolidado: descrição do NVD, score e vetor CVSS 3.1 ou 4.0, CWE, CPEs afetados com versão de correção quando o NVD tem, referências, score e percentil EPSS, e status no CISA KEV com data de entrada e uso conhecido em ransomware. Cada fonte mostra quando foi obtida. CVE sem CVSS aparece como não pontuado e nada é estimado. Um ID que o espelho não tem é buscado nas fontes uma vez.

cve_search(query?, vendor?, kev?, min_cvss?, min_epss?) devolve até 20 resultados ordenados por relevância do texto e EPSS. Só pergunta ao NVD por palavra-chave quando o espelho não acha nada.

Advisories de pacote

advisory_lookup(name, ecosystem, version?) devolve vulnerabilidades conhecidas do OSV, até 50. Informa o que o OSV lista para aquele nome e versão. Provar que o código vulnerável é alcançável no seu build continua com você. No MCP a ferramenta se chama advisory_query.

Base de conhecimento

kb_search(query, domain?, source?, tool?) busca na base de conhecimento curada e kb_read(id, from?, limit?) abre um documento seção por seção. Os domínios são web, api, mobile, offensive, tools, cloud, ir e attack. Cada resultado traz fonte, licença e atribuição. Uma técnica de nicho pode não estar lá, e a busca na web é o passo seguinte.

Arquivos

As ferramentas de arquivo leem o que o parser estático extraiu de um anexo. Nada do que você envia é executado, e não há análise dinâmica. Cada arquivo é analisado num contêiner gVisor descartável, sem rede, com raiz somente leitura e sem segredos. Um arquivo acima dos limites ou uma falha do parser termina como rejected, com o motivo.

FerramentaDevolve
file_listArquivos anexados com status, tipo, tamanho e avisos
file_read(file_id, from?, limit?)Texto extraído por trecho, com localizador de arquivo e linha
file_search(query)Trechos que contêm suas palavras, em todos os anexos
binary_info(file_id)SHA-256, tamanho, entropia, e formato, entry point, seções e imports para ELF e PE
archive_list(file_id)O índice do pacote
disassemble(file_id)Uma prévia: os primeiros 4 KB do arquivo decodificados como x86-64, no máximo 200 instruções

Não há decompilador nem grafo de fluxo. Pacotes param em profundidade 3, 10.000 entradas, 2 GB expandidos e razão de 100:1. O texto para em 5 milhões de caracteres por arquivo. Imagens dão só as dimensões. O aviso credentials_detected significa que o parser encontrou um padrão de chave ou token. Veja os tipos em Arquivos no chat.

Onde cada ferramenta existe

CapacidadeChatCLIMCPResearch API
Busca na webweb_searchagente web_searchweb_searchPOST /v1/web/search
Leitor de páginaread_urlread_urlPOST /v1/web/read
Busca na dark webdarkweb_searchdarkweb_search
Registro de CVEcve_lookupnotholy cve, agente cve_lookupcve_lookupGET /v1/cve/{id}
Busca de CVEcve_searchnotholy cve searchcve_searchGET /v1/cve/search
Advisories de pacoteadvisory_lookupadvisory_queryPOST /v1/advisories/query
Base de conhecimentokb_search, kb_readnotholy kb, agente kb_searchkb_search, kb_readGET /v1/kb/search, GET /v1/kb/{id}
Análise de arquivosFerramentas de arquivo acimanotholy analyzeanalyze_filePOST /v1/files
Arquivos locais e comandosAgente read, grep, glob, edit, write, bash
Escopo e log de engagementnotholy engage

POST /v1/chat/completions, /v1/responses e /v1/messages são os endpoints crus dos modelos e não têm ferramentas do harness. O modelo recebe só as function tools que você manda, e quem as executa é o seu código. Para usar esses dados no seu código, chame a Research API ou o MCP.

Próximos passos