smooth-operator-mcp 3.1.0 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,13 +1,15 @@
1
1
  # SmoothOperator
2
2
 
3
- Give your AI a real Chrome. SmoothOperator is a lightweight, production-grade MCP server for secure, reliable browser control. Your harness supplies the reasoning; SmoothOperator handles navigation, interaction, extraction, and browser lifecycle. No model keys. No hidden planner.
3
+ Give your AI a real Chrome. SmoothOperator is a production MCP server for
4
+ secure browser control. Your harness supplies the reasoning; SmoothOperator
5
+ handles navigation, interaction, extraction, and browser lifecycle. No model
6
+ keys. No hidden planner.
4
7
 
5
- ## Install — directly to your harness
6
-
7
- Choose your harness, add SmoothOperator directly to it, and restart the harness.
8
+ ## Install
8
9
 
9
10
  **From npm** (`smooth-operator-mcp`):
10
- ~~~sh
11
+
12
+ ```sh
11
13
  npm install -g smooth-operator-mcp && smooth-operator install opencode
12
14
  npm install -g smooth-operator-mcp && smooth-operator install claude-code
13
15
  npm install -g smooth-operator-mcp && smooth-operator install copilot
@@ -17,99 +19,86 @@ npm install -g smooth-operator-mcp && smooth-operator install vscode
17
19
  npm install -g smooth-operator-mcp && smooth-operator install cursor
18
20
  npm install -g smooth-operator-mcp && smooth-operator install windsurf
19
21
  npm install -g smooth-operator-mcp && smooth-operator install claude-desktop
20
- ~~~
22
+ ```
23
+
24
+ The plain-npm name `smooth-operator` is an unrelated library. Do **not** run
25
+ `npm install -g smooth-operator`.
21
26
 
22
- > Note: the plain-npm name `smooth-operator` is an unrelated library on the registry.
23
- > Do NOT use `npm install -g smooth-operator`.
27
+ From GitHub:
24
28
 
25
- Or straight from GitHub:
26
- ~~~sh
29
+ ```sh
27
30
  npm install -g github:Gitshop77/Smooth-Operator && smooth-operator install opencode
28
- ~~~
31
+ ```
32
+
33
+ The wizard asks exactly three questions: browser profile ownership, browser
34
+ display, and the Chromium executable. `smooth-operator install` without a
35
+ harness chooses one on a TTY (piped/CI prints usage). `--yes` applies
36
+ recommended defaults: `smooth-operator install opencode --yes`.
37
+
38
+ Managed mode owns one private persistent profile
39
+ (`~/.smooth-operator/browser`). Wizard Personal Chrome launches a dedicated
40
+ debugging profile on port `9222` and derives `browserUrl`; it does not take
41
+ over daily Chrome. Connect mode attaches to the configured `browserURL` /
42
+ `wsEndpoint`.
29
43
 
30
- The wizard asks exactly 3 focused questions: browser profile ownership, browser display, and the Chromium executable. Run `smooth-operator install` with no harness to pick one interactively (TTY only; piped/CI runs print usage and exit). `--yes` applies the recommended defaults, so give it a target: `smooth-operator install opencode --yes`. Personal Chrome mode launches a dedicated debugging profile on `9222` and derives `browserUrl` automatically. Managed mode owns one private persistent profile; connected mode launches and attaches to a dedicated debugging profile and does not claim ownership of an operator's daily browser.
44
+ Requires Node.js 22.23.2+ and an installed Chromium-based browser.
31
45
 
32
- Requires Node 22.23.2+ and an installed Chromium-based browser. Profile at `~/.smooth-operator/browser` — sign in once.
46
+ ```sh
47
+ smooth-operator --help
48
+ smooth-operator doctor
49
+ ```
33
50
 
34
- Verify: `smooth-operator --help` and `server_health` / `browser_doctor` appear after restart. `server_health` reports `ok` when the runtime is ready, `degraded` when browser recovery is required or its managed profile lease is not held, and `shutting_down` during teardown; an idle lazy browser is healthy.
51
+ After restart, ask the harness to run `server_health` and `browser_doctor`.
52
+ `server_health` reports `ok` when ready, `degraded` when recovery or the
53
+ profile lease is needed, and `shutting_down` during teardown. An idle lazy
54
+ browser is healthy.
35
55
 
36
- For a local release check, run `npm run verify`; it covers lint, type safety,
37
- tests, dead-code analysis, and the package smoke test.
56
+ Local check: `npm run verify` (lint, typecheck, coverage tests, knip, package
57
+ smoke/build). `npm test` and coverage exclude `tests/browser-live.test.ts`.
58
+ Live Chrome is only `npm run test:browser:live`.
38
59
 
39
60
  ## What it does
40
61
 
41
- - Navigate and interact with real websites: click, type, select, scroll, hover, and key input
42
- - Inspect pages with snapshots, accessibility trees, HTML, styles, text search, and bounded extraction
43
- - Work across tabs, frames, popups, shadow DOM, dialogs, cookies, storage, downloads, screenshots, and PDFs
44
- - Search the web through bounded DuckDuckGo retrieval
45
- - Search a bounded metadata-only network journal by request ID, URL, method, status, and resource type
46
- - Block page-scoped image, stylesheet, font, media, and script subresources; document and navigation requests are never selectable
47
- - Inspect a selected element's safe attributes, styles, animations, and shallow children without returning scripts, event source, form values, or arbitrary data attributes
48
- - Upload one file or up to 20 files from allowed roots; each file is capped at 50 MiB and the aggregate at 100 MiB
49
- - Read, set, and delete URL-scoped cookies with validated SameSite settings; cookie values are omitted from reads
50
-
51
- The MCP registry exposes 64 public tools. The surface includes bounded network
52
- search, safe element inspection, page-scoped resource blocking, and file and
53
- cookie controls alongside the navigation, extraction, and lifecycle tools.
54
-
55
- Ask: *“Scrape pricing into a table”*, *“Fill this form with ~/resume.pdf”*, or *“Download the monthly report as a PDF.”*
56
-
57
- ## How to use
58
-
59
- Talk to your harness normally. It can call `browser_navigate` → `browser_snapshot` → `browser_click` and the rest of the MCP surface as needed. For a challenge, `browser_solve_challenge` returns fresh bounded visual/state evidence and an attempt budget; the connected AI keeps using ordinary browser actions and calls it again until the final classification is clear or the budget is exhausted. Human handoff remains available only as an explicit final option.
60
-
61
- Browser identity remains native, page JavaScript is available by default, and
62
- behavioral timing is off for fast deterministic input. Set the explicit
63
- environment flags to change those choices. See the [browser compatibility guide](docs/STEALTH-GUIDE.md) for
64
- details and responsible use.
65
-
66
- For the fastest supported operation, keep behavioral timing off with
67
- `SMOOTH_OPERATOR_BEHAVIOR_ENABLED=false`; the native browser remains bounded and
68
- cancellable. All local browser tools and page features are available by default;
69
- remote HTTP, private-network access, and file roots remain explicitly gated.
70
- Faster calls do not bypass challenges or grant permission to automate a site.
71
-
72
- Managed mode preflights a regular executable when it needs to launch, and
73
- launch mode does so before invoking Chromium. Both wait for browser launch
74
- readiness and a target-guard acknowledgement before returning a usable
75
- connection. The loopback DevTools `/json/version` probe is bounded to 64 KiB
76
- before JSON parsing. There is no arbitrary CDP or host-code tool; page
77
- evaluation remains an explicit page capability.
78
-
79
- ## Why
80
-
81
- - Zero setup — managed, headed, persistent browser by default
82
- - Secure by default — domain and file policy, bounded outputs, redaction, and explicit safety boundaries
83
- - Reliable private profiles, stale-reference recovery, reconnect handling, and structured errors
84
- - Flexible — stdio by default, Streamable HTTP when you need it, plus connect and disabled modes
85
-
86
- For HTTP deployments, the configured MCP path also has a bounded readiness
87
- endpoint at `<path>/healthz` (normally `/mcp/healthz`), subject to the same
88
- HTTP authentication policy as the MCP endpoint.
89
-
90
- ## Benchmarks
91
-
92
- Compared with [Browser Use MCP](https://github.com/browser-use/browser-use) · [![Browser Use GitHub stars](https://img.shields.io/github/stars/browser-use/browser-use?style=social)](https://github.com/browser-use/browser-use)
93
-
94
- Tested: 26 August 2026
95
-
96
- | Benchmark | Metric | SmoothOperator | Browser Use MCP |
97
- | --- | --- | ---: | ---: |
98
- | Live Web (8 sites, 32 episodes) | URL success | **32/32** | 23/32 |
99
- | Live Web | Page-text quality | **26/32** | 21/32 |
100
- | Live Web | Combined success | **26/32** | 18/32 |
101
- | Live Web | Task latency mean / p95 | **1,358 / 2,957 ms** | 4,604 / 30,780 ms |
102
- | Live Web | Navigation p95 | **2,130 ms** | 4,320 ms |
103
- | Live Web | Click p95 | 920 ms | **142 ms** |
104
- | Live Web | MCP call p95 | **943 ms** | 2,095 ms |
105
- | Live Web | Trace errors | **0** | 10 |
106
- | MiniWoB++ 0.14.3 (125 tasks) | Reward = 1 | **124/125** | 89/125 |
107
- | MiniWoB++ | Attempts | **125** | 125 |
108
- | MiniWoB++ | MCP errors | **0** | 29 |
109
- | MiniWoB++ | Transport errors | **0** | **0** |
110
- | MiniWoB++ | Timeouts | **0** | **0** |
111
- | Browser Use benchmark | Muse Spark 1.2 · score | **64% · 100 tasks** | 12% · 60 tasks |
112
-
113
- *Task counts and scoring rules differ; comparison is directional.*
114
-
115
- [View the Browser Use benchmark](https://github.com/browser-use/benchmark)
62
+ The MCP registry exposes **57 public tools**. Each listed name does one job.
63
+ Navigate and interact; inspect with snapshots, accessibility, HTML, styles,
64
+ and bounded extraction; work across tabs, frames, popups, shadow DOM,
65
+ dialogs, cookies, storage, downloads, screenshots, and PDFs; search the web
66
+ through bounded DuckDuckGo retrieval; search a metadata-only network journal;
67
+ block page-scoped subresources; inspect elements without scripts, event
68
+ source, or form values; upload up to 20 files from allowed roots (50 MiB
69
+ each, 100 MiB aggregate). Cookie values are omitted from reads. Operations:
70
+ cookies `get`/`set`/`delete`; storage and resource-blocking `get`/`set`/`clear`;
71
+ network and console logs `enable`/`disable`/`read`/`clear`/`read_and_clear`;
72
+ dialogs `get_text`/`accept`/`dismiss`/`send_keys`.
73
+
74
+ Preferred loop: `browser_navigate` / `browser_snapshot` one mutation
75
+ verify. Element actions accept exactly one of `target`, `ref`
76
+ (`e5`/`ref:e5`), CSS `selector`, or zero-based `index`. `browser_click`,
77
+ `browser_move`, and `browser_press_and_hold` also accept
78
+ `coordinateX`/`coordinateY` (hold also start/end coordinates or a path).
79
+ Set `includeSnapshot: true` to combine a mutation with its trailing snapshot.
80
+
81
+ Canonical tools: `browser_tabs`, `browser_snapshot`, `browser_input`,
82
+ `browser_back`, `browser_close`, `browser_extract`, `browser_wait`,
83
+ `browser_network_log`, `browser_challenge`, `browser_batch`. Compatibility
84
+ aliases are not listed.
85
+
86
+ `browser_solve_challenge` returns fresh bounded evidence. The connected AI
87
+ uses ordinary browser actions until a fresh classification reports the
88
+ challenge **absent** or the attempt budget is exhausted. Human handoff
89
+ (`browser_wait_for_human`) is an explicit last option. There is no captcha
90
+ solver. Identity stays native: launch args do not fabricate UA,
91
+ platform, WebGL, canvas, client hints, or `navigator.webdriver`.
92
+
93
+ HTTP deployments expose `<path>/healthz` (normally `/mcp/healthz`) with the
94
+ same Host, Origin, and bearer policy as `/mcp`.
95
+
96
+ ## Docs
97
+
98
+ - [Architecture](docs/architecture.md)
99
+ - [Security](docs/security.md)
100
+ - [Tools](docs/tools.md)
101
+ - [Config](docs/config.md)
102
+ - [Harnesses](docs/harnesses.md)
103
+ - [Browser compatibility](docs/STEALTH-GUIDE.md)
104
+ - [MCP server operations](docs/mcp-server.md)