The agent learns to use the internet
Most "AI assistants" know what was on the web up to a point in time. A real agent goes and looks when it needs to.
Three layers, in order of preference
- Web Fetch — direct GETs of known URLs. Cheap, fast, no JS.
- Search APIs — Brave Search and Perplexity. Cheap and structured.
- Browser automation — Playwright. Slowest, most expensive, but handles JS-heavy pages and login walls.
Web Fetch Skill
name: web_fetch
description: GET a URL and return cleaned text content (no JS).
input_schema:
url: { type: string, required: true }
format: { type: string, default: "markdown" }
exec: ./bin/fetch.py
Internally, fetch + readability extraction + markdown conversion. Returns under 30k characters.
Brave Search Skill
name: web_search
exec: ./bin/brave.py
input_schema:
q: { type: string, required: true }
count: { type: integer, default: 5 }
Perplexity for synthesis
Where Brave returns links, Perplexity returns synthesized answers with citations. Use it for "what is the current state of X" questions.
Playwright as the heavy hammer
Reach for Playwright only when:
- The page is rendered by JavaScript and Web Fetch returns empty
- A login is needed (with credentials in your secrets file)
- You need to click, scroll, or fill forms
Most students never need Playwright. Layers 1–2 cover 90% of the work.
Try it
Build a deep-research Skill that, given a topic, runs Brave for 5 results, web-fetches each, summarizes, and writes a single markdown report. That single Skill replaces an hour of manual research per use.