Build in Public · June 7, 2026 · Vlad

Day 7: MCP tool extract_text — 10x cheaper than screenshot for LLM context

Agents asking “what does this page say” no longer get a 500 KB PNG stuffed into their context window. New dedicated endpoint and MCP tool return markdown, HTML, or plain text — 5–10x faster, 100x cheaper to feed an LLM.

✍️ What shipped

GET /extract and a new extract_text MCP tool. Both use the existing Puppeteer browser pool but skip the screenshot step entirely — services/extract.ts:extractContent() renders the page and returns content in the requested format. Zod-validated params, SSRF protection, and quota charge all in place.

# Get page content as markdown
curl "https://api.snapshotflow.com/extract?url=https://stripe.com&format=markdown&max_chars=4000" \
  -H "X-Api-Key: $KEY"

📊 Numbers

  • 11 tests added (__tests__/extract.test.ts): 3 formats, SSRF, quota, edge cases — all passing
  • First user (me): asked Claude “what does stripe.com say” — got clean markdown in <1 s, no PNG in context

🤯 What went wrong / lesson

Should’ve shipped this with the very first MCP server. Every agent call to capture_screenshot that only needed text was paying 100x the token cost and waiting 5–10x longer. The lesson: always ask “does the agent actually need a pixel, or just the text?”

⏭️ Next

Day 8: extract_metadata MCP tool — title, Open Graph tags, and favicon in ~200 ms, no full page render needed.

Try extract_text now

200 free screenshots (and extractions) for the lifetime of the account. No credit card required.

All news