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/docs/tools.md ADDED
@@ -0,0 +1,90 @@
1
+ # Tools, resources, and prompts
2
+
3
+ The public surface is locked in `src/server/catalog.ts` and
4
+ `tests/contract-snapshot.test.ts`. `tools/list` is 57 one-job tools.
5
+ Compatibility aliases and retired `browser_logs` are unlisted catalog maps.
6
+
7
+ Operations: cookies `get`/`set`/`delete`; storage and resource-blocking
8
+ `get`/`set`/`clear`; network and console logs
9
+ `enable`/`disable`/`read`/`clear`/`read_and_clear`; dialogs
10
+ `get_text`/`accept`/`dismiss`/`send_keys`. Element tools take exactly one of
11
+ `target`, `ref`, `selector`, or `index` and have no `operation`.
12
+ `browser_click`, `browser_move`, and `browser_press_and_hold` also accept
13
+ `coordinateX`/`coordinateY` (hold also start/end coordinates or a path).
14
+ `browser_challenge` is detect-only; solve is `browser_solve_challenge`.
15
+
16
+ Canonical tools: `browser_tabs`, `browser_snapshot`, `browser_input`,
17
+ `browser_back`, `browser_close`, `browser_extract`, `browser_wait`,
18
+ `browser_network_log`, `browser_challenge`, `browser_batch`.
19
+
20
+ ## Unlisted catalog maps
21
+
22
+ Compatibility aliases (`browser_list_tabs`, `browser_get_state`,
23
+ `browser_type`, `browser_extract_content`, `browser_go_back`,
24
+ `browser_close_all`, `browser_exec`) plus retired `browser_logs` are not in
25
+ `tools/list`.
26
+
27
+ | Unlisted name | Canonical call |
28
+ |---|---|
29
+ | `browser_list_tabs` | `browser_tabs` |
30
+ | `browser_get_state` | `browser_snapshot` |
31
+ | `browser_type` | `browser_input` |
32
+ | `browser_extract_content` | `browser_extract` |
33
+ | `browser_go_back` | `browser_back` |
34
+ | `browser_close_all` | `browser_close` |
35
+ | `browser_exec` | `browser_batch` (`actions` is a validated array, never a shell) |
36
+ | `browser_logs` | `browser_network_log` `{ operation: "read" }` |
37
+
38
+ ## Observation
39
+
40
+ `browser_snapshot`, `browser_tabs`, `browser_list_sessions`,
41
+ `browser_page_info`, `browser_interactive`, `browser_frames`,
42
+ `browser_accessibility_snapshot`, `browser_extract`,
43
+ `browser_find_text`, `browser_search_page`, `browser_find_elements`,
44
+ `browser_inspect_element`, `browser_dropdown_options`, `browser_computed_style`,
45
+ `browser_page_next`, `browser_get_html`, `browser_search_network_log`,
46
+ `browser_challenge`, `browser_doctor`, `server_health`.
47
+
48
+ Refs (`e5` / `ref:e5`), indexes, and coordinates are observation-bound. Refresh
49
+ them after navigation or DOM changes. Snapshot refs are page/frame/revision-bound.
50
+
51
+ ## Navigation and interaction
52
+
53
+ `browser_navigate`, `browser_back`, `browser_forward`,
54
+ `browser_reload`, `browser_switch_tab`, `browser_close_tab`, `browser_click`,
55
+ `browser_input`, `browser_select`, `browser_scroll`, `browser_scroll_to_bottom`,
56
+ `browser_key`, `browser_wait`, `browser_wait_for_element`,
57
+ `browser_wait_for_text`, `browser_wait_for_url`, `browser_wait_for_network_idle`,
58
+ `browser_hover`, `browser_move`, `browser_press_and_hold`, `browser_close`.
59
+
60
+ Also: `browser_upload`, `browser_screenshot`, `browser_pdf`, `browser_downloads`,
61
+ `browser_evaluate`, `browser_batch`, `browser_dialog`,
62
+ `browser_cookies`, `browser_storage`, `browser_network_log`,
63
+ `browser_console_log`, `browser_resource_blocking`, `browser_solve_challenge`,
64
+ `browser_wait_for_human`, `web_search`, `browser_close_session`.
65
+
66
+ `includeSnapshot=true` on a mutation returns one trailing snapshot. Destructive
67
+ batches require `confirmDestructive=true`. `browser_batch` accepts validated JSON
68
+ actions only.
69
+
70
+ ## Envelope
71
+
72
+ Success and error results set `content[0].text` to the JSON of `structuredContent`
73
+ (non-objects wrapped as `{ value }`). Errors are
74
+ `{ ok: false, error: { code, message, retryable, details?, recovery? } }`.
75
+ Truncation flags are explicit. Screenshot bytes travel as MCP image content,
76
+ not inside the JSON record.
77
+
78
+ ## Resources
79
+
80
+ - `smooth-operator://server/capabilities`
81
+ - `smooth-operator://browser/tabs`
82
+ - `smooth-operator://browser/page/current`
83
+ - `smooth-operator://browser/page/{pageId}`
84
+ - `smooth-operator://browser/downloads`
85
+ - `smooth-operator://browser/logs/network`
86
+ - `smooth-operator://browser/logs/console`
87
+
88
+ ## Prompts
89
+
90
+ `agent-chrome-setup`, `browser-workflow`, `extract-page`, `research-question`.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "smooth-operator-mcp",
3
- "version": "3.1.0",
3
+ "version": "3.3.0",
4
4
  "type": "module",
5
5
  "packageManager": "npm@12.0.2",
6
6
  "description": "A lightweight, production-grade MCP server for secure browser automation.",
@@ -14,6 +14,10 @@
14
14
  "docs/mcp-server.md",
15
15
  "docs/harnesses.md",
16
16
  "docs/STEALTH-GUIDE.md",
17
+ "docs/architecture.md",
18
+ "docs/security.md",
19
+ "docs/tools.md",
20
+ "docs/config.md",
17
21
  "README.md",
18
22
  "LICENSE",
19
23
  ".env.example"
@@ -28,13 +32,13 @@
28
32
  "postbuild": "node scripts/set-executable.mjs dist/smooth-operator.mjs",
29
33
  "lint": "eslint . --ignore-pattern scripts/benchmark-network-journal.ts",
30
34
  "typecheck": "tsc --noEmit",
31
- "test": "vitest run",
35
+ "test": "vitest run --exclude tests/browser-live.test.ts",
32
36
  "test:unit": "vitest run --exclude tests/browser-live.test.ts",
33
37
  "benchmark:network": "tsx scripts/benchmark-network-journal.ts",
34
38
  "test:browser:live": "node scripts/test-browser-live.mjs",
35
- "test:watch": "vitest",
36
- "test:coverage": "vitest run --coverage",
37
- "verify": "npm run lint && npm run typecheck && npm test && npm run dead-code && npm run package:smoke",
39
+ "test:watch": "vitest --exclude tests/browser-live.test.ts",
40
+ "test:coverage": "vitest run --coverage --exclude tests/browser-live.test.ts",
41
+ "verify": "npm run lint && npm run typecheck && npm run test:coverage && npm run dead-code && npm run package:smoke",
38
42
  "dead-code": "knip --include files,exports,dependencies,unlisted --no-progress",
39
43
  "mcp:stdio": "npm run start -- --transport stdio",
40
44
  "mcp:http": "npm run start -- --transport http",
@@ -49,7 +53,7 @@
49
53
  "@modelcontextprotocol/server": "2.0.0",
50
54
  "ghost-cursor": "1.4.2",
51
55
  "puppeteer-core": "25.10.0",
52
- "zod": "4.5.4"
56
+ "zod": "4.6.2"
53
57
  },
54
58
  "devDependencies": {
55
59
  "@modelcontextprotocol/client": "^2.0.0",