A poor agent, asking for more — pen-and-ink in the Cruikshank style.
Sir — can I just read all web pages, and get all the text and actions, reliably?

— a poor agent, somewhere

OK. (alms for real web-page use.)

somehow, this web-fetcher is better than all the rest.

5 free a day · ~$0.001 per fetch · $5 buys ~5,400 fetches · or self-host (MIT)

Paste a URL. Read it.

or try one:

Free 5 fetches a day from your address. No signup. No card.

Past the free five? A $5 spoonful of gruel buys ~5,400 fetches.
Mint a key ›

What comes back

Rendered page text plus a typed list of actions your agent can call back. That second part is the differentiator — no other fetcher gives you the page’s affordances ready-to-invoke. Latency typical ~3 s, capped at 30 s.

{
  "content": "Contents of https://www.roche.com/solutions/pipeline:
              Title: Roche | Product Development Pipeline
              [49,277 chars of rendered text, Shadow DOM and all]

              --- Available actions on this page: ---
              click: \"button:has-text('Download current view as CSV')\"
              click: \"button:has-text('Phase')\"
              click: \"button:has-text('Therapeutic Area')\"
              fill:  \"input[name='search']\"
              click: \"a:has-text('Pipeline')\" -> /solutions/pipeline
              ..."
}

Receipt headers:
  X-Compute-Seconds: 6.436
  X-Charge-USD:      0.000593
  X-Balance-USD:     4.999407

Pick an action, send it back as the actions array, and your agent drives the page. how it works · all response headers.

Hand it to your agent — eh, urchin. Paste this. ›
Add pithy.bot — an MCP that reads any web page (JS, Shadow DOM, past bot walls, even Google) and hands back clean text + clickable actions.

Add to your MCP config (e.g. ~/.mcp.json) — transport http:
{"mcpServers":{"pithy":{"type":"http","url":"https://pithy.bot/mcp/","headers":{"Authorization":"Bearer <key>"}}}}

Then call read_webpage("https://…"). Reconnect MCP (no full restart). Full skill: https://pithy.bot/skill.md
No key? POST https://pithy.bot/demo/fetch {"url":"…"} — 5 free/day, no signup. Or POST /signup {"email":"…"} for a key + $0.10 trial.

Claude Code, Cursor, Windsurf, your own — it’ll do the rest.

The Roche test, run.

roche.com/solutions/pipeline hides 131 drugs behind Shadow DOM. The drug data lives inside web components; curl sees an empty shell. We click Download CSV and bring home the whole pipeline.

toolcharsdrug namescost
curl / httpxempty shell0
crawl4ai (50K stars)7,2200
Readability extraction~3,0000
Firecrawl (JS rendering)partialpartial~$0.006
ScrapingBee (JS rendering)partialpartial~$0.001
pithy.bot 49,277 131 $0.000593

Compute time: 6.4 s (Chromium launch + page render + click + CSV download). No live-fetch button here — visitors shouldn’t pay for the demo. How it works.

peek at the actual CSV we brought back ›
Downloaded: Roche_Pipeline_Final_2026-05-11.csv (49,277 chars)

Compound,Generic Name,Trade name,Combination,Therapeutic area,Project type,Indication,Phase,Filing date,Partner,Managed by,Description
"RG7716","faricimab","Vabysmo","","Ophthalmology","ai","neovascular age related macular degeneration (wAMD)","Approved",...
"RG6330","divarasib (KRAS G12C)","","plus combinations","Oncology/Hematology","ai","solid tumors","Phase 1",...
"RG6171","glofitamab","Columvi","","Hematology","ai","relapsed/refractory follicular lymphoma","Approved",...
"RG6234","forimtamig","","","Hematology","ai","relapsed/refractory multiple myeloma","Phase II",...
"RG6919","B7H3-ADC","","","Oncology/Hematology","nme","solid tumors","Phase 1",...
…127 more rows, full CSV in your response…

For an agent on a research run

A new kind of customer is reading this page: the AI agent that just needs to read the web. Reliably. Cheaply. With the buttons it can click. Designed for that customer specifically. Built so the page doesn’t lie about what it contains.

We render the page the way your agent wants to read it: better performance, smaller context, the buttons already typed. (built for agents. used by agents. served from Darien, CT.)

What’s in the kit

read_webpage is the entry point. The deeper primitives — SEC filings + earnings transcripts — are the same research toolbelt, hosted at the same per-second meter. Signing up today gets you first access as each lands.

LIVE

read_webpage

any URL, real stealth browser, Shadow DOM, action discovery

  • read_webpage(url, actions, max_length, start_index, raw)

~$0.001 per typical fetch · capped at $0.003

SOON

read_filing

SEC EDGAR — 10-K, 10-Q, 8-K, S-1, every form

  • list_filings(ticker, form?, date_from?, date_to?)
  • get_filing(accession, offset?, limit?)
  • search_filing(accession, pattern)
  • get_facts(ticker) — XBRL fundamentals

file-grep on the server — pull only the lines you need

SOON

read_transcript

earnings calls — our corpus, 4,117 tickers, 175K transcripts, 2005–present

  • list_transcripts(ticker, year?, max?)
  • get_transcript(ticker, year, quarter, offset?, limit?)
  • search_transcripts(pattern, ticker?, date_from?, date_to?)

pre-compressed (~45% smaller, dependency-parsed) — pithy by design. Cross-corpus grep across the whole market.

Mint a key now for read_webpage; the filings and transcripts tools land on the same key, same balance, same meter. No re-onboarding.

Keep going

Free $0.10 trial — about 100 typical fetches. No card. Top up later in $5 packs. Your key stays in your browser; see it at /login.

pithy
/ˈpɪθi/ adjective
concise and forcefully expressive.

“Please, sir, I want some more.”

OK.

(this was, of course, unheard of.)