
Lets AI agents browse the web as short, numbered text instead of screenshots.
perzian.dev/mantis · by Perzian
It works with Claude Code, Codex, Cursor or your own agent as an MCP server. Install in two commands.
npx -y -p mantis-browser mantis install
claude mcp add mantis -- npx -y -p mantis-browser mantis-mcp
npx -y -p mantis-browser mantis read https://example.com
Windows, Linux servers and other agents: SETUP.

One real task (Luna, logged runs replayed): about a third less time, over 2x fewer input tokens, about half the calls. This is a selected example from 16 long tasks; medians across all 16 are in Results. Full video.
Security and threat model: SECURITY.md.
How it works

What the agent sees

Results
Mantis vs the accessibility tree (Playwright MCP) on public sites, gpt-6-luna and claude-haiku-5-5. Every cell is a per-run median; time is end-to-end wall time per run:
Long tasks (correct: 14 keyed tasks, 42 runs per cell; medians: all 16 tasks, 48 runs per cell; both approaches run in the same session):
| Correct | 35/42 | 34/42 | 40/42 | 40/42 |
| Input tokens (median) | 244k | 345k | 268k | 506k |
| Tool calls (median) | 17 | 24 | 19 | 30 |
| Time (median) | 42s | 66s | 54s | 85s |
Short tasks (30 tasks, 90 runs per cell; tree and screenshot columns are the earlier 20261026 run):
| Correct | 88/90 | 86/90 | 90/90 | 90/90 | 88/90 | 88/90 |
| Input tokens (median) | 64k | 99k | 104k | 38k | 88k | 33k |
| Tool calls (median) | 3 | 4 | 7 | 3 | 5 | 6 |
| Time (median) | 16s | 31s | 35s | 19s | 30s | 23s |
Long tasks: accuracy within one run, 29-47% fewer input tokens, 29-37% fewer calls and about a third less time than the tree. Short tasks: accuracy equal or better than the tree, 35-57% fewer input tokens. Short-task times compare a newer Mantis build with the earlier tree and screenshot run, so treat that gap as indicative. Screenshots score 2 runs higher on Luna but use more tokens and time there; on Haiku they use fewer tokens.
Scores come from deterministic answer keys on the final page state. Two long iframe/tab tasks can't be keyed and are left out of the long-task counts. Method, screenshot baseline and caveats: bench/RESULTS.md.
Limitations
- No canvas input: canvas, WebGL, maps and drawing apps are described only as canvas, with no coordinate click or draw tool.
- Login and bot walls need
ask_human, which needs a display.
- Benchmarked only on read, navigate and form-fill tasks on public sites, with two models. The screenshot baseline is this project's own tool, and a few tasks were swapped after results (disclosed).
- Page content is untrusted data; see SECURITY.md.
- Small v0.1.x beta.
Learn more
License
MIT