A language model pays for every token of nav, ads, and footer it reads.
That one sentence is the whole reason tearsheet exists. I do a lot of research work inside Claude Code, and a huge chunk of it is "go read this page and tell me what it says." Firecrawl-style tools are genuinely great at that — but they're SaaS. API keys, quotas, a bill, and your URLs leaving your machine to get there. I wanted the same toolset, running entirely on my own laptop, feeding my agent clean content without any of that.
So I built it. It's called tearsheet, it's MIT-licensed, and this is the story of why.
tearsheet (n.): a page torn from a publication and filed as proof it ran.
That definition is on the repo for a reason. The whole tool is built around the idea that what it hands back should be trustworthy enough to file as evidence. More on that below — it's the part I care about most.
Why I built it
Two things pushed me over the edge.
Tokens are money. When you scrape a page and dump the raw HTML — or even a naive "readable" conversion — into a model's context, you're paying for the cookie banner, the mega-menu, the newsletter modal, and the six-deep footer. On a research run that fans out across dozens of pages, that waste compounds fast. I wanted a tool whose first principle was "return the least text that fully answers the question."
I didn't want a middleman. No API key to manage, no service to trust with my browsing, no telemetry, no rate limit that isn't mine. Just a thing on my machine that Claude Code can call. Everything tearsheet does — fetch, extract, cache, crawl — happens locally.
What it is
tearsheet is an MCP server exposing five tools. If you've used Firecrawl, these will feel familiar:
scrape— one URL in, clean main-content markdown out.
search— keyless metasearch (no search API key required).
map— list every URL on a site without scraping it.
crawl— walk a site and write each page to disk as markdown.
extract— pull structured data (JSON-LD, OpenGraph, tables) as JSON, no LLM involved.
The intended flow is deliberately cheap: map → pick the URLs that matter → scrape those, or crawl → read the files it wrote. You never blast a whole site into context to find the three pages you actually needed.
Three design choices do the token-saving work:
Main-content only. Extraction runs through
License: MIT
Status: early, git-clone-only, not on PyPI yet
If you try it, I genuinely want the feedback — issues and bug reports especially. The whole point of the guards is that failures make the tool better, so if it breaks on a page, that's a finding, not a bug I'm embarrassed by.
Go tear some pages out of the internet.
SOCIAL SHARE CARD GENERATOR