Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add rules/ofershap/real-browser-mcp/projectgit clone --depth 1 https://github.com/ofershap/real-browser-mcpWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00739 | $0.00739 |
| Opus 5 | $0.00369 | $0.00369 |
| Sonnet 5 | $0.00148 | $0.00148 |
| Haiku 4.5 | $0.00074 | $0.00074 |
Grade A, and why
project scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 68 lines — stays where its author put it; the contents beside it link to each section on GitHub.
real-browser-mcp
MCP server (TypeScript) + Chrome extension (plain JS) that talk over WebSocket on localhost:7225.
Versioning
Bump minor versions: 1.0.0 -> 1.1.0 -> 1.2.0. Three places must stay in sync:
package.json"version"extension/manifest.json"version"mcp-server/src/index.tsSERVER_VERSION
Adding a Tool
Four files to touch:
mcp-server/src/tools/<name>.ts- ToolDefinition with Zod schemamcp-server/src/tools/index.ts- add to allTools arrayextension/background.js- add handler in dispatch() map + handler functiontests/tools/- add test
The schema type MUST be z.ZodObject<z.ZodRawShape>, not z.ZodType. The MCP SDK calls .shape on it.
Tool inventory (18 tools)
Navigation: browser_navigate, browser_tabs Interaction: browser_click (ref OR selector), browser_click_text (by visible text, CSP-safe), browser_type, browser_press_key, browser_scroll, browser_hover, browser_select Reading: browser_snapshot (compact mode default), browser_screenshot, browser_text, browser_find JS execution: browser_evaluate (via chrome.debugger CDP - bypasses CSP but shows debugger banner) Dialogs: browser_handle_dialog (override alert/confirm/prompt) Wait: browser_wait Debug: browser_console (read-only), browser_network
CSP and browser_evaluate
browser_evaluate uses chrome.debugger API (CDP Runtime.evaluate). This bypasses CSP but:
- Shows "is being debugged" infobar
- Attaching/detaching the debugger can steal focus and close open popups/dropdowns
- Requires
debuggerpermission in manifest.json
For DOM interactions (clicking dropdown options, etc.), prefer browser_click with CSS selectors or browser_click_text instead. These use chrome.scripting.executeScript with compiled functions — no eval, no CSP issues.
Previous attempts using new Function() in MAIN world failed on GitHub/Google/strict-CSP sites. Sandbox/offscreen approaches can't access page DOM. chrome.debugger is the only universal eval but has the focus-stealing side effect.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2d ago First seen · 68 lines · 739 tokens per session scan A c810130e6dca
project is a cursor rule published in the GitHub repository ofershap/real-browser-mcp (49 stars, last pushed 9d ago), licensed MIT. It adds 739 tokens to every session, about $0.0037 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other cursor rules, from other repositories
invictum-browser
Use Invictum Browser Bridge whenever the user requests IBB, IBG, Invictum Browser Bridge, or Invictum Browser Gate.
browser
Browser automation - always use NPC + Brave, never Cursor internal browser.
angular-20
This rule provides comprehensive best practices and coding standards for Angular development, focusing on modern TypeScript, standalone components, signals, and performance optimizations.
dev-standard
Apache Superset development standards and guidelines for Cursor IDE.
cli-error-handling
CLI command error handling patterns.
prefer-direct-imports-over-module-mocks
Prefer extracting a testable core over vi.mock / vi.resetModules when unit tests need to reach production logic entangled with config, env, or singletons.