smooth-operator-mcp 3.2.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,90 +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 three focused questions: browser profile ownership,
31
- browser display, and the Chromium executable. Run `smooth-operator install`
32
- without a harness to choose one interactively (TTY only; piped and CI runs
33
- print usage and exit). `--yes` applies the recommended defaults, so give it a
34
- target: `smooth-operator install opencode --yes`. Personal Chrome mode launches
35
- a dedicated debugging profile on port `9222` and derives `browserUrl`
36
- automatically. Managed mode owns one private persistent profile; connected mode
37
- launches and attaches to a dedicated debugging profile and does not claim
38
- ownership of an operator's daily browser.
44
+ Requires Node.js 22.23.2+ and an installed Chromium-based browser.
39
45
 
40
- SmoothOperator requires Node.js 22.23.2 or newer and an installed
41
- Chromium-based browser. The default managed profile is
42
- `~/.smooth-operator/browser`; sign in once and reuse that private profile.
46
+ ```sh
47
+ smooth-operator --help
48
+ smooth-operator doctor
49
+ ```
43
50
 
44
- 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.
45
55
 
46
- For a local release check, run `npm run verify`; it covers lint, type safety,
47
- 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`.
48
59
 
49
60
  ## What it does
50
61
 
51
- - Navigate and interact with real websites: click, type, select, scroll, hover, and key input
52
- - Inspect pages with snapshots, accessibility trees, HTML, styles, text search, and bounded extraction
53
- - Work across tabs, frames, popups, shadow DOM, dialogs, cookies, storage, downloads, screenshots, and PDFs
54
- - Search the web through bounded DuckDuckGo retrieval
55
- - Search a bounded metadata-only network journal by request ID, URL, method, status, and resource type
56
- - Block page-scoped image, stylesheet, font, media, and script subresources; document and navigation requests are never selectable
57
- - Inspect a selected element's safe attributes, styles, animations, and shallow children without returning scripts, event source, form values, or arbitrary data attributes
58
- - Upload one file or up to 20 files from allowed roots; each file is capped at 50 MiB and the aggregate at 100 MiB
59
- - Read, set, and delete URL-scoped cookies with validated SameSite settings; cookie values are omitted from reads
60
-
61
- The MCP registry exposes 64 public tools. The surface includes bounded network
62
- search, safe element inspection, page-scoped resource blocking, and file and
63
- cookie controls alongside the navigation, extraction, and lifecycle tools.
64
-
65
- Ask: *“Scrape pricing into a table”*, *“Fill this form with ~/resume.pdf”*, or *“Download the monthly report as a PDF.”*
66
-
67
- ## How to use
68
-
69
- Talk to your harness normally. The preferred loop is `browser_navigate`/`browser_snapshot` → one mutation → verify. Element actions accept exactly one current `target`, `ref` (`e5`/`ref:e5`), CSS `selector`, or zero-based `index`; refresh these after navigation or DOM changes. Set `includeSnapshot: true` on a mutation to combine the mutation and its trailing verification snapshot. `browser_batch` is useful for short independent sequences; its `timeoutMs` is a whole-batch deadline (120 seconds by default, 600 seconds maximum).
70
-
71
- Prefer canonical tools such as `browser_tabs`, `browser_snapshot`, `browser_input`, `browser_back`, `browser_close`, and `browser_extract`. Browser-use compatibility aliases remain available and are labeled as aliases in `tools/list`. Deterministic stale-reference, frame, dialog, element, and browser-recovery errors include a compact recovery tool suggestion.
72
-
73
- For a challenge, `browser_solve_challenge` returns fresh bounded visual and
74
- state evidence with an attempt budget. The connected AI uses ordinary browser
75
- actions and calls it again until a fresh classification reports the challenge
76
- absent or the automation budget is exhausted. Human handoff remains available
77
- only as an explicit final option.
78
-
79
- Browser identity remains native, page JavaScript is available by default, and
80
- behavioral timing is off for fast deterministic input. Set the explicit
81
- environment flags to change those choices. See the [browser compatibility guide](docs/STEALTH-GUIDE.md) for
82
- details and responsible use.
83
-
84
- For the fastest supported operation, keep behavioral timing off with
85
- `SMOOTH_OPERATOR_BEHAVIOR_ENABLED=false`; the native browser remains bounded and
86
- cancellable. All local browser tools and page features are available by default;
87
- remote HTTP, private-network access, and file roots remain explicitly gated.
88
- Faster calls do not bypass challenges or grant permission to automate a site.
89
-
90
- Managed mode preflights a regular executable when it needs to launch, and
91
- launch mode does so before invoking Chromium. Both wait for browser launch
92
- readiness and a target-guard acknowledgement before returning a usable
93
- connection. The loopback DevTools `/json/version` probe is bounded to 64 KiB
94
- before JSON parsing. There is no arbitrary CDP or host-code tool; page
95
- evaluation remains an explicit page capability.
96
-
97
- ## Why
98
-
99
- - Zero setup — managed, headed, persistent browser by default
100
- - Secure by default — domain and file policy, bounded outputs, redaction, and explicit safety boundaries
101
- - Reliable — private profiles, stale-reference recovery, reconnect handling, and structured errors
102
- - Flexible — stdio by default, Streamable HTTP when you need it, plus connect and disabled modes
103
-
104
- For HTTP deployments, the configured MCP path also has a bounded readiness
105
- endpoint at `<path>/healthz` (normally `/mcp/healthz`), subject to the same
106
- HTTP authentication policy as the MCP endpoint.
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)