Pular para o conteúdo principal
O ChatCLI inclui duas ferramentas web nativas — @webfetch e @websearch — que permitem ao agent buscar informações na internet e fazer fetch de páginas web sem depender de servidores MCP externos.
As web tools são ferramentas nativas do ChatCLI, disponíveis automaticamente nos modos agent e coder. Não e necessário configurar servidores MCP para usa-las.

@webfetch

Faz o fetch de uma URL, remove o HTML e retorna o conteúdo textual limpo. Ideal para ler documentações, artigos, READMEs e qualquer página web.

Como Funciona

1

Requisicao HTTP

O ChatCLI faz uma requisicao GET para a URL fornecida com headers padrão de navegador.
2

Parse HTML

O HTML recebido e parseado usando golang.org/x/net/html, extraindo apenas o conteúdo textual.
3

Limpeza

Tags de script, style, navegacao e elementos não-textuais são removidos. O texto resultante e limpo e formatado.
4

Retorno

O conteúdo textual e retornado ao agent como resultado da tool call.

Uso

O LLM invoca @webfetch automaticamente quando precisa acessar conteúdo de uma URL. Você também pode solicitar explicitamente:
Leia a documentação em https://pkg.go.dev/net/http e me explique o tipo Client

Formatos de Argumentos

{
  "tool": "webfetch",
  "args": {
    "url": "https://pkg.go.dev/net/http"
  }
}

Exemplo

User: Busque o conteúdo de https://go.dev/blog/error-handling-and-go

Agent: Vou buscar o conteúdo da página.

[tool_call: webfetch {"url": "https://go.dev/blog/error-handling-and-go"}]

Resultado: O artigo "Error handling and Go" explica os padroes de
tratamento de erros em Go, incluindo...
O @webfetch respeita redirects (até 10), timeouts (30s) e retorna erros claros para URLs inacessíveis ou com problemas de SSL.

Filtros para payloads grandes

Endpoints como Prometheus /metrics, dumps de configuração ou listagens longas podem facilmente exceder dezenas de milhares de caracteres. O @webfetch aceita um conjunto de parâmetros que aplicam filtragem por linha antes do truncamento, evitando que o miolo útil seja descartado:
ParâmetroTipoDescrição
filterstring (regex Go)Mantém apenas linhas que casam com o regex. Aplicado antes de exclude e from_line/to_line.
excludestring (regex Go)Descarta linhas que casam com o regex. Aplicado depois de filter.
from_lineintegerInício da janela na visão filtrada (1-based, inclusivo).
to_lineintegerFim da janela na visão filtrada (1-based, inclusivo).
save_to_filebooleanPersiste o corpo completo (pré-filtro) no scratch dir da sessão e retorna preview + caminho absoluto.
save_pathstringSobrescreve o nome do arquivo gerado por save_to_file (qualquer prefixo de diretório é descartado — escrita sempre confinada ao scratch).
max_lengthintegerTamanho máximo do conteúdo retornado inline (default: 50.000).
Exemplo — filtrar Prometheus por prefixo de métrica:
{
  "url": "http://payments.prod.svc:9090/metrics",
  "filter": "^chatcli_",
  "exclude": "^# HELP|^# TYPE"
}
Exemplo — paginar dentro do payload filtrado:
{
  "url": "http://svc/very-long-changelog",
  "filter": "^- ",
  "from_line": 50,
  "to_line": 80
}
Exemplo — salvar tudo no scratch dir e ler trechos sob demanda depois:
{
  "url": "http://svc/metrics",
  "save_to_file": true
}
Resposta:
[full response saved to /tmp/chatcli-agent-Xy7K3a/scratch/webfetch_1712...txt — 142_318 bytes.
Use read_file with start/end to examine specific ranges.]

[primeiros ~50K chars do conteúdo]
O agente pode então emitir um read_file apontando para o caminho absoluto retornado, escolhendo o intervalo exato de linhas que importa.
save_to_file sempre confina escritas a CHATCLI_AGENT_TMPDIR. Se save_path for um caminho absoluto ou contiver .., apenas o filepath.Base é usado, e a escrita é validada para garantir que o resultado fica dentro do scratch dir.

@websearch

Realiza uma busca web via DuckDuckGo e retorna os resultados com titulo, URL e snippet de cada resultado.

Como Funciona

1

Query

O agent envia a query de busca para a API do DuckDuckGo.
2

Parse de resultados

Os resultados são parseados e formatados com titulo, URL e snippet descritivo.
3

Retorno estruturado

Os resultados são retornados como texto formatado para o agent processar.

Uso

O LLM invoca @websearch quando precisa buscar informações atualizadas na web:
Pesquise as melhores praticas para rate limiting em Go em 2026

Formatos de Argumentos

{
  "tool": "websearch",
  "args": {
    "query": "golang rate limiting best practices 2026"
  }
}

Exemplo

User: Pesquise como configurar OpenTelemetry com Go

Agent: Vou buscar informações atualizadas sobre isso.

[tool_call: websearch {"query": "opentelemetry go setup tutorial"}]

Resultados:
1. Getting Started with OpenTelemetry in Go
   https://opentelemetry.io/docs/languages/go/getting-started/
   Official guide to instrumenting Go applications with OpenTelemetry...

2. OpenTelemetry Go SDK - Complete Guide
   https://example.com/otel-go-guide
   Step-by-step tutorial covering traces, metrics and logs...

3. Distributed Tracing in Go with OpenTelemetry
   https://example.com/distributed-tracing-go
   Learn how to implement distributed tracing across microservices...

Comparacao

Aspecto@webfetch@websearch
PropositoLer conteúdo de uma URL específicaBuscar na web por uma query
InputURLQuery de busca
OutputTexto limpo da páginaLista de resultados (titulo + URL + snippet)
Quando usarVocê sabe a URL exataVocê precisa encontrar informações
MotorHTTP GET + HTML parserDuckDuckGo API

Disponibilidade

As web tools estão disponíveis nos seguintes modos:
Modo@webfetch@websearch
ChatNãoNão
Agent (/agent)SimSim
Coder (/coder)SimSim
One-shot (-p)Sim (com --agent)Sim (com --agent)
No modo chat interativo, as web tools não estão disponíveis. Você precisa estar em agent ou coder mode para que o LLM possa invocá-las como tool calls.

Próximos Passos

MCP Integration

Integre ferramentas web adicionais via MCP servers.

Plugins Agenticos

Veja todas as ferramentas disponíveis para o agent.