Get started
Introduction
One call that gets your agent through any site, on any model.
Frankensurf is an open-source web layer for AI agents. Ask for a URL or a search, and it picks the right browsing tool for that page, climbs to a stronger one when the site pushes back, and returns clean page data with a receipt of how it got there.
- Every site. Plain HTTP, real browsers, stealth browsers, unblockers and, as a last resort, you. Six rungs, one call.
- Every agent. The same tools and the same results on Claude, GPT, Gemini or an open-weight model, through MCP, Python or the command line.
- Shows its work. Every result says which tools ran, how long each took and what it cost.
Get started
Section titled “Get started”Read your first page
Section titled “Read your first page”No account or key needed.
from frankensurf import Runtime
async with Runtime("state") as web: page = await web.read("https://developers.cloudflare.com/fundamentals/reference/markdown-for-agents/", policy_overrides={"prefer_markdown": True}) print(page["title"], page["receipt"]["method"])frankensurf read https://developers.cloudflare.com/fundamentals/reference/markdown-for-agents/ --markdown{ "tool": "read", "arguments": { "url": "https://developers.cloudflare.com/fundamentals/reference/markdown-for-agents/" } }{ "url": "https://developers.cloudflare.com/fundamentals/reference/markdown-for-agents/", "title": "Markdown for Agents", "content_type": "text/markdown; charset=utf-8", "text": "---\ndescription: Cloudflare's Markdown for Agents converts HTML to Markdown at the edge…", "structured": { "format": "markdown" }, "receipt": { "status": "observed", "method": "http", "latency_ms": 261, "cost_usd": 0.0, "attempts": [{ "provider": "http", "status": "observed", "latency_ms": 261 }] }}What you can do
Section titled “What you can do”Why Frankensurf
Section titled “Why Frankensurf”Every browsing tool breaks somewhere. A model’s built-in fetch skips JavaScript. A browser gets challenged. A stealth browser gets flagged. An unblocker costs money on pages that never needed it. Frankensurf stitches 30-plus tools together and routes each page to the cheapest one that works, so your agent stops dead-ending.
It returns raw page data, not answers. Your agent has a model; it decides what the page means.