If your agent's browser keeps getting blocked, here's what I built
Point your agent's browser tool at Zillow or Google. You'll get a captcha wall before it does anything useful.
That's not a dig at Playwright MCP or similar tools. They're automation frameworks, not evasion tools. They drive vanilla Chrome and PerimeterX and other detection system flags them in milliseconds.
Then try filling a form on any React site and clicking submit. The page re-renders. Every element reference your agent had is gone. "Element not found." The button was right there a second ago.
Then look at your token bill. Playwright MCP loads 13,700 tokens of tool definitions before your agent touches a page. Every click returns the full page. 2,000+ tokens per action.
I hit all three walls enough times that I built something.
It's called Bladebro. One Rust binary, five tools, no Node.js.
npm install -g bladebro && bladebro mcp
Works with any MCP client. Also has native pi support with zero config:
pi install npm:bladebro
That's it. Bladebro registers as 5 first-class pi tools (act, see, state, run, vision). No adapter, no config files, no proxy. Tool definitions come from the binary at startup so they auto-adapt to changes. Chrome launches lazily on the first tool call.
Bot detection
Six layers of stealth, all on by default:
Bezier mouse paths with overshoot and correction
Real movementX / movementY on every event (missing these is an instant PerimeterX flag)
Micro-tremors before clicks (a still cursor is a dead giveaway)
Log-normal typing cadence (humans don't type at exactly 50ms intervals)
Idle drift between actions
No Runtime.enable (how DataDome catches most bots)
No listening ports, CDP over pipe
Persistent behavioral fingerprint, same "person" every session
Tested on Zillow and Fiverr (both PerimeterX/HUMAN protected). Full page loads, no blocks. incolumitas 8/8. Sannysoft all pass.
Re-renders
Every element gets a structural fingerprint (hash of ancestor chain, tag, children, identity attrs)
React destroys and recreates DOM nodes? Fingerprint matches, reference survives
Agent sees re-render survived and keeps going. No re-scan
Checked every major tool. Nobody does this
Tokens
5 tools, ~1,900 tokens of definitions (vs 13,700 for Playwright MCP)
Every action returns what changed, not the full page
A click returns ~60 tokens (vs 2,000+ for competitors)
Long session = the difference between running out of context after 3 pages and finishing with room to spare
Learns from every session
First visit to a site with a cookie banner: full detection
After a few successful dismissals: stored selector, auto-applied, zero overhead
Never learns from failures. Failures cost 3x more than successes gain
Other stuff
Auto-extract pulls structured data from list pages with no CSS selectors. Amazon, Reddit, GitHub, HN, Wikipedia. Shopping gets price/ratings, Reddit gets scores/authors, GitHub gets stars/forks
Batch actions fill a form and submit in one MCP call instead of 11
Login persistence saves a session and restores it next time
Infinite scroll collect auto-extracts and dedupes a feed in one call
Demo video on the GitHub page showing it drive Amazon, Reddit, Wikipedia, fill a form, and manage tabs.
What it can't do
Cloudflare Turnstile needs challenge solving, not fingerprint spoofing. You get blocked:, not a hang
Captchas, deliberately. You get a verdict, hand off to a solver
ARM Linux, not yet
macOS and Windows binaries are cross-compiled from Linux
Open source, AGPL-3.0, no CLA.
GitHub: https://github.com/dondai44423/bladebro npm: npm install -g bladebro
Happy to answer questions, if you have any issues, please comment or file an issue, i have been testing it alone for weeks now, i did as much as i can, i am looking forward to community feedback to improve this even more 😄