@raultov/browser-control-mcp 0.3.6-beta.6 → 0.4.0-beta.7

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/CHANGELOG.md CHANGED
@@ -10,6 +10,147 @@ from a copy of its code: entries describe the differences from that release.
10
10
 
11
11
  ## [Unreleased]
12
12
 
13
+ ## [0.4.0-beta.7] - 2026-10-31
14
+
15
+ Public **BETA**. Closes the gaps a comparison with Playwright MCP showed:
16
+ `snapshot` and `find_in_snapshot` outline the page with refs every
17
+ selector accepts, selectors reach into shadow roots and iframes with `>>>`,
18
+ and new tools wait for content (`wait_for`), fill forms (`fill_form`),
19
+ upload files, press keys, hover, read and change cookies and web storage,
20
+ and emulate viewports. A click into a breakpoint or a dialog answers at once.
21
+ Some behaviour changes: the `raw`, `perf`, `storage`, `files` and
22
+ `emulation` tools are listed only with the new `--tool-groups` (start the
23
+ server with `--tool-groups raw,perf` or `all` to keep `send_cdp_command`,
24
+ `get_custom_events` and the performance tools), tool descriptions are about
25
+ half as long, and `click_element` succeeds (noting it) when the click opens
26
+ a dialog or hits a breakpoint.
27
+
28
+ ### Added
29
+
30
+ - `--tool-groups` lists opt-in tool groups, comma separated: `storage`
31
+ (`cookies`, `web_storage`), `files` (`upload_file`), `raw`
32
+ (`send_cdp_command`, `send_bidi_command`, `send_rdp_request`,
33
+ `get_custom_events`), `perf` (`get_performance_metrics`,
34
+ `profile_page_performance`), `emulation` (`emulate`), or `all`. A tool of
35
+ a group that is off fails naming the flag. The tool list stays fixed for
36
+ the server's life (MCP 2026-07-28 forbids it to change as a side effect of
37
+ a call), so there is no tool to switch groups on during a session.
38
+
39
+ - `emulate`: the tab's viewport (`width`, `height`, `device_scale_factor`,
40
+ and on Chrome `mobile` with touch) and, on Chrome, CSS media features
41
+ (`color_scheme`, `reduced_motion`, `forced_colors`, `media: print`);
42
+ `reset` removes them. It answers what the page now sees, measured in it
43
+ (size, pixel ratio, media queries). Firefox emulates the viewport and
44
+ pixel ratio through `browsingContext.setViewport`; its WebDriver BiDi has
45
+ no media or touch emulation yet, so those options fail there naming
46
+ them. Responsive and dark-mode checks needed raw protocol commands. (#9)
47
+
48
+ - `cookies` and `web_storage` (Chrome and Firefox). `cookies` gets, sets
49
+ and deletes cookies: those the page's URL (or `url`) would be sent, or
50
+ those of a `domain`, optionally by `name` (Chrome `Network.*Cookie*`,
51
+ Firefox BiDi `storage.*` in the tab's partition, with the same filters
52
+ and replies). `web_storage` gets, sets, deletes and clears the page's
53
+ `localStorage` or `sessionStorage`. Both hide values (often session
54
+ tokens), giving their length, unless `show_values: true`. Cookies could
55
+ only be imported from your Chrome before. (#8)
56
+
57
+ - `press_key` and `hover` (Chrome and Firefox), and `button`,
58
+ `click_count` and `modifiers` for `click_element`. `press_key` presses
59
+ one key (a character, Enter, Tab, Escape, Backspace, Delete, the arrows,
60
+ Home, End, PageUp, PageDown, Insert, Space, F1 to F12) with Control,
61
+ Shift, Alt or Meta held, in `selector` (focused first) or the focused
62
+ element, as a user (Chrome `Input.dispatchKeyEvent`, Firefox key
63
+ actions); a shortcut types nothing, and a dialog or debugger pause the key
64
+ causes is noted like for a click. `hover` moves the mouse over an element
65
+ after the same visibility checks as `click_element`. A right click opens
66
+ context menus and `click_count: 2` double-clicks. These needed raw
67
+ protocol commands or synthetic JavaScript events, which many pages
68
+ ignore. (#7)
69
+
70
+ - `upload_file` (Chrome and Firefox): sets the files of an
71
+ `<input type=file>` as a user picking them (Chrome
72
+ `DOM.setFileInputFiles`, Firefox `input.setFiles`); the page gets `input`
73
+ and `change`. Only files under the upload roots are accepted: the
74
+ server's working directory and the system temp directory, or the
75
+ directories of the new repeatable `--upload-root` flag, checked once `..`
76
+ and symlinks are resolved, so the agent cannot hand a page any file of
77
+ the machine. Uploads needed three raw CDP commands, on Chrome only. (#6)
78
+
79
+ - `fill_form` (Chrome and Firefox): fills several fields in one call, in
80
+ order. Text fields, textareas, contenteditable elements and `<select>`s
81
+ go through `fill_input`; a checkbox or radio takes `true` or `false` and
82
+ is clicked only when its state differs. It answers
83
+ `Filled N fields.` with each field's outcome (`filled`, `selected`,
84
+ `checked`, `unchecked`, `unchanged`), never the values, and stops at the
85
+ first field that fails, naming it and what was done before. A login form
86
+ took one call per field. (#5)
87
+
88
+ - `snapshot` and `find_in_snapshot` (Chrome and Firefox): an outline of the
89
+ page with one line per element with a role (`button "Sign in" [ref=e7]`,
90
+ `textbox "Username" [ref=e3]`, `heading "Cart" [level=2] [ref=e1]`...),
91
+ its name, states and value, indented under its parent, through open
92
+ shadow roots and same-origin iframes, hidden elements left out; and a
93
+ search over that outline that returns only the matching lines under their
94
+ ancestors (a 1500-row page: 143 characters to find a button instead of a
95
+ 50 000-character snapshot). The `selector` of `click_element`,
96
+ `fill_input`, `scroll` and `wait_for` accepts the refs, so agents no
97
+ longer write CSS from raw HTML. Computed in the page with the same
98
+ JavaScript on both browsers (one outline, refs that resolve the same
99
+ way); refs are kept per element while it is in the page and end when the
100
+ page navigates; password values are never shown. (#4)
101
+
102
+ - Selectors of `click_element`, `fill_input`, `scroll` and `wait_for` reach
103
+ into open shadow roots and same-origin iframes with `>>>`
104
+ (`my-widget >>> button`, `#frame >>> #email`, chainable), on both
105
+ browsers. `inspect_dom` showed those elements but no tool could act on
106
+ them. A click inside iframes is checked for overlays in each document and
107
+ lands at the right point of the top window; a part that is neither an
108
+ open shadow host nor a same-origin iframe fails naming it. `fill_input`
109
+ also recognises fields of another frame (they failed as "not an input").
110
+ (#3)
111
+
112
+ - `wait_for` (Chrome and Firefox): waits until the page's visible text
113
+ contains `text` or no longer contains `text_gone`, the first element
114
+ matching `selector` is `visible`, `hidden`, `attached` or `detached`
115
+ (`state`), and/or the tab's URL contains `url`, checking every 100 ms up
116
+ to `timeout_ms` (default 5000, at most 30000). It answers
117
+ `Waited N ms for ...` with `{elapsed_ms, url}`, or fails naming what is
118
+ still missing and where the page is. Text includes open shadow roots and
119
+ same-origin iframes; a check the page did not answer (a navigation) is
120
+ retried; a JavaScript dialog or a debugger pause ends the wait at once.
121
+ Agents no longer have to write polling promises in `evaluate_js`. (#2)
122
+
123
+ ### Changed
124
+
125
+ - The `raw`, `perf`, `storage`, `files` and `emulation` tools are no longer
126
+ listed by default: 33 tools are (plus `enable_proxy_auth` and the WebMCP
127
+ tools behind their flags). Start the server with `--tool-groups raw,perf`
128
+ (or `all`) to keep `send_cdp_command`, `get_custom_events` and the
129
+ performance tools.
130
+ - Tool and argument descriptions are about half as long (the tool list of
131
+ every tool went from 72 986 to 35 568 characters, about 18 000 to 9 000
132
+ tokens; the 33 default tools take 23 555), and `instance_id` / `tab_id` no longer say "Chrome".
133
+
134
+ - `click_element` succeeds when the click opens a JavaScript dialog or its
135
+ handler pauses in the debugger: the click happened, so the reply says so
136
+ (`... The page opened a JavaScript confirm dialog ("Delete?"), which
137
+ blocks it: call handle_dialog ...`), followed by `{"dialog": {...}}` or
138
+ `{"paused": true, "location": ...}`. It was an error, which invited
139
+ agents to click again. Calls whose answer is missing (`evaluate_js`) or
140
+ that may have stopped half way (`fill_input`) still fail. (#11)
141
+
142
+ ### Fixed
143
+
144
+ - A call whose own code hits a breakpoint (`click_element` on a button whose
145
+ handler has one, `fill_input`, `scroll`, `evaluate_js`, `navigate`,
146
+ `reload`) fails at once on both browsers with where the page paused and
147
+ how to go on (`evaluate_on_call_frame`, `resume`, `step_over`). It waited
148
+ for the 10 s command timeout and failed with `Input.dispatchMouseEvent`
149
+ (Chrome) or `input.performActions` (Firefox) "timed out". On Chrome a
150
+ pause must last 200 ms to count, so a page's own `debugger;` the server
151
+ resumes does not fail the call. A Chrome click interrupted on the press
152
+ still sends the release, so the button is not left held. (#1)
153
+
13
154
  ## [0.3.6-beta.6] - 2026-10-29
14
155
 
15
156
  Public **BETA**. `fill_input` types the same way on both browsers,
package/README.md CHANGED
@@ -11,7 +11,7 @@ It is the successor of
11
11
  from a copy of its code) and complements Playwright MCP or
12
12
  chrome-devtools-mcp with runtime JavaScript debugging on both browsers.
13
13
 
14
- > **Status: BETA (0.3.6-beta.6).** This version contains known bugs and differences
14
+ > **Status: BETA (0.4.0-beta.7).** This version contains known bugs and differences
15
15
  > between Chrome and Firefox (see [Limitations and TODO](#limitations-and-todo))
16
16
  > and parts that have not been verified (see [Untested](#untested)). Tool
17
17
  > replies may change in incompatible ways before 1.0. Please report problems
@@ -29,6 +29,25 @@ life: start the server with `--browser firefox`, or pass
29
29
  `"browser": "firefox"` to `open_instance`. If Chrome is not installed but Firefox
30
30
  is, the launch error says so and tells the agent to ask you before switching.
31
31
 
32
+ ## Tool groups
33
+
34
+ Every tool listed costs the agent context on every turn, so niche and risky
35
+ tools are off by default and listed only with `--tool-groups`:
36
+
37
+ | Group | Tools | Why it is opt-in |
38
+ | --- | --- | --- |
39
+ | `storage` | `cookies`, `web_storage` | reads and changes session tokens |
40
+ | `files` | `upload_file` | hands a page files of the machine |
41
+ | `raw` | `send_cdp_command`, `send_bidi_command`, `send_rdp_request`, `get_custom_events` | anything the protocol allows |
42
+ | `perf` | `get_performance_metrics`, `profile_page_performance` | niche |
43
+ | `emulation` | `emulate` | niche |
44
+
45
+ `--tool-groups all` lists every group. The page, input, observation and
46
+ debugger tools are always listed (33 tools), plus `enable_proxy_auth` with
47
+ `--proxy-server` and the WebMCP tools with `--enable-webmcp`. A tool of a
48
+ group that is off fails naming the flag. The list is fixed for the server's
49
+ life: it never changes during a session, so clients can cache it.
50
+
32
51
  ## Feature matrix
33
52
 
34
53
  ✓ supported, ✗ not available (the tool answers a capability error naming the
@@ -49,17 +68,27 @@ see the note.
49
68
  | `navigate` | ✓ | ✓ | |
50
69
  | `reload` | ✓ | ✓ | |
51
70
  | `scroll` | ✓ | ✓ | reports the window positions before and after |
71
+ | `emulate` | ✓ | partial | `emulation` group; `width`/`height`, `device_scale_factor`, `mobile` (touch), `color_scheme`, `reduced_motion`, `forced_colors`, `media` (`print`), `reset`; answers what the page now sees; Firefox: viewport and device pixel ratio only (BiDi has no media or touch emulation yet; those options fail naming them) |
72
+ | `wait_for` | ✓ | ✓ | waits (checking every 100 ms, at most 30 s) until a visible text appears or is gone, a selector is `visible` / `hidden` / `attached` / `detached`, or the URL contains a text; a dialog or debugger pause ends the wait at once |
52
73
  | `inspect_dom` | ✓ | ✓ | includes open shadow roots and same-origin iframes (cross-origin ones are noted); at most 100 000 characters without `query` (cut in the page) |
74
+ | `snapshot` | ✓ | ✓ | outline of the page: role, name, states, value and a ref (`e12`) per element, through open shadow roots and same-origin iframes; at most 50 000 characters (`selector` and `depth` narrow it); the same JavaScript on both browsers |
75
+ | `find_in_snapshot` | ✓ | ✓ | `text` (case-insensitive) or `regex` over the whole outline; matching lines under their ancestors, at most 20 |
53
76
  | `capture_screenshot` | ✓ | ✓ | `format` `png`, `jpeg` (or `jpg`) or `webp`; `full_page` at most 16 384 px per side (a text note says when cut) |
54
- | `click_element` | ✓ | ✓ | scrolls the element into view; fails without clicking when it is hidden or covered |
77
+ | `click_element` | ✓ | ✓ | scrolls the element into view; `button` (left/right/middle), `click_count` (2 = double click) and `modifiers`; fails without clicking when it is hidden or covered; `host >>> inner` selectors reach open shadow roots and same-origin iframes (also in `fill_input`, `scroll`, `wait_for`); a dialog or debugger pause the click causes is noted in a successful reply (`{dialog}` or `{paused, location}`) |
55
78
  | `fill_input` | ✓ | ✓ | picks `<select>` options; fails without typing on elements that cannot take the text; types key by key on both (key handlers run; newlines and tabs inserted as text), about 1 ms per character; `change` on leaving the field, or at the end when the window has no focus |
79
+ | `press_key` | ✓ | ✓ | one key (a character, Enter, Tab, Escape, arrows, F1–F12...) with Control / Shift / Alt / Meta held, in `selector` (focused first) or the focused element; a shortcut types nothing |
80
+ | `hover` | ✓ | ✓ | moves the mouse over the element (scrolled into view; fails when hidden or covered) |
81
+ | `fill_form` | ✓ | ✓ | several fields in one call: text and `<select>` as `fill_input`, a checkbox or radio takes `true`/`false` and is clicked only when its state differs; stops at the first failing field naming what was done; never echoes values |
82
+ | `upload_file` | ✓ | ✓ | `files` group; sets the files of an `<input type=file>` (Chrome `DOM.setFileInputFiles`, Firefox `input.setFiles`); files must be under the upload roots (`--upload-root`, default the working and temp directories) |
56
83
  | `handle_dialog` | ✓ | ✓ | accepts or dismisses the open `alert` / `confirm` / `prompt` / `beforeunload` dialog |
57
84
  | `evaluate_js` | ✓ | ✓ | `value` at most 100 000 characters (`truncated: true`); Chrome stops a script after 8 s, Firefox cannot (a looping tab is closed with `close_tab`) |
85
+ | `cookies` | ✓ | ✓ | `storage` group; `get` / `set` / `delete`: the cookies sent to the page (or `url`) or of a `domain`; values hidden unless `show_values: true` (Chrome `Network.*Cookie*`, Firefox BiDi `storage.*` in the tab's partition) |
86
+ | `web_storage` | ✓ | ✓ | `storage` group; `get` / `set` / `delete` / `clear` on the page's `localStorage` or `sessionStorage`; values hidden unless `show_values: true` |
58
87
  | `get_console_logs` | ✓ | ✓ | a message keeps at most 10 000 characters; Firefox: page errors, CSS warnings and platform messages need the debugger port |
59
88
  | `get_network_logs` | ✓ | ✓ | a failed request has `error`, a binary body `response_body_encoding: "base64"`; bodies at most 64 000 characters, none over 2 MB; a WebSocket payload keeps 64 000 (`payload_len` is the whole); Firefox: WebSocket frames need the debugger port |
60
- | `get_custom_events` | ✓ | partial | `{events, total, truncated}`, the newest `limit` events; `clear` removes the returned ones; params over 64 000 characters of JSON are replaced by `{truncated, characters}`; Firefox: events of the modules subscribed with `send_bidi_command` |
61
- | `get_performance_metrics` | ✓ | partial | Firefox: `Nodes`, `Frames`, `Resources`, `TransferSize` from the Web Performance APIs (no Performance domain), plus a note |
62
- | `profile_page_performance` | ✓ | partial | Firefox: FCP, LCP, DCL and Load from the Web Performance APIs; no trace, so `total_blocking_time_ms` and `top_long_tasks` are `null` |
89
+ | `get_custom_events` | ✓ | partial | `raw` group; `{events, total, truncated}`, the newest `limit` events; `clear` removes the returned ones; params over 64 000 characters of JSON are replaced by `{truncated, characters}`; Firefox: events of the modules subscribed with `send_bidi_command` |
90
+ | `get_performance_metrics` | ✓ | partial | `perf` group; Firefox: `Nodes`, `Frames`, `Resources`, `TransferSize` from the Web Performance APIs (no Performance domain), plus a note |
91
+ | `profile_page_performance` | ✓ | partial | `perf` group; Firefox: FCP, LCP, DCL and Load from the Web Performance APIs; no trace, so `total_blocking_time_ms` and `top_long_tasks` are `null` |
63
92
  | `set_breakpoint` | ✓ | partial | Firefox: by URL only (no `script_id` / `script_hash`) |
64
93
  | `remove_breakpoint` | ✓ | ✓ | |
65
94
  | `resume` | ✓ | ✓ | |
@@ -68,9 +97,9 @@ see the note.
68
97
  | `search_scripts` | ✓ | ✓ | a long line's preview is 100 characters on each side of the match |
69
98
  | `pause_on_load` | ✓ | ✗ | TODO on Firefox, see [Limitations and TODO](#limitations-and-todo) |
70
99
  | `enable_proxy_auth` | ✓ | partial | needs `--proxy-server`; a request the proxy rejects twice is cancelled; untested on Firefox against a real proxy |
71
- | `send_cdp_command` | ✓ | ✗ | raw Chrome DevTools Protocol; refuses `Network`/`Page`/`Runtime`/`Log`/`Debugger.disable` and `Browser.close`; `Fetch.enable` comes with a note |
72
- | `send_bidi_command` | ✗ | ✓ | raw WebDriver BiDi; refuses `session.new`, `session.end`, `browser.close` |
73
- | `send_rdp_request` | ✗ | ✓ | raw Firefox RDP request to an actor (`thread`, `console`, `root` shortcuts) |
100
+ | `send_cdp_command` | ✓ | ✗ | `raw` group; raw Chrome DevTools Protocol; refuses `Network`/`Page`/`Runtime`/`Log`/`Debugger.disable` and `Browser.close`; `Fetch.enable` comes with a note |
101
+ | `send_bidi_command` | ✗ | ✓ | `raw` group; raw WebDriver BiDi; refuses `session.new`, `session.end`, `browser.close` |
102
+ | `send_rdp_request` | ✗ | ✓ | `raw` group; raw Firefox RDP request to an actor (`thread`, `console`, `root` shortcuts) |
74
103
  | `webmcp_list_tools` | ✓ | ✗ | needs `--enable-webmcp`; WebMCP is a Chrome testing feature; every annotation Chrome reports is listed (`readOnly`, `consequential`, `untrustedContent`, `debugging`, `autosubmit`, newer ones as they are) |
75
104
  | `webmcp_invoke_tool` | ✓ | ✗ | needs `--enable-webmcp`; the output of an `untrustedContent` tool comes with a note to treat it as data |
76
105
  | `webmcp_get_invocation` | ✓ | ✗ | needs `--enable-webmcp` |
@@ -305,6 +334,18 @@ claude mcp add browser-control-mcp -- npx -y @raultov/browser-control-mcp
305
334
  A `value` over 100 000 characters is not returned whole: a string keeps
306
335
  its first 100 000, an object or array is measured in the page and only
307
336
  described; the reply then carries `"truncated": true`.
337
+ - **Acting on elements.** `snapshot` outlines the page, one line per
338
+ element with a role, e.g. `textbox "Username" [ref=e3]`,
339
+ `button "Sign in" [ref=e7]`, `iframe [ref=e9]` with the frame's elements
340
+ under it; `find_in_snapshot` returns only the lines that match, under
341
+ their ancestors. The `selector` of `click_element`, `fill_input`,
342
+ `scroll` and `wait_for` takes such a ref, a CSS selector, or
343
+ `host >>> inner` to reach into an open shadow root or a same-origin
344
+ iframe (`#checkout >>> #card-number`, chainable). An element keeps its ref
345
+ in later snapshots while it is in the page; refs end when the page
346
+ navigates (a stale ref fails saying so). Roles and names are computed in
347
+ the page, an approximation of the browser's accessibility tree that is
348
+ the same on both browsers; password values never appear.
308
349
  - **Per-tab state.** Console logs, network traffic, breakpoints and custom
309
350
  events are kept per tab, in bounded buffers. A tab's console buffer (last
310
351
  1000 messages) is cleared when the tab moves to another site (registrable
@@ -338,6 +379,8 @@ claude mcp add browser-control-mcp -- npx -y @raultov/browser-control-mcp
338
379
  | `--enable-automation` | off | shows the automation infobar | ignored; `list_instances` shows a warning |
339
380
  | `--user-profile` | off | your default profile (no `--user-data-dir`) | only with `--firefox-port` (attach to your running Firefox) |
340
381
  | `--allow-cookie-import` | off | exposes `copy_cookies` | capability error |
382
+ | `--tool-groups <GROUPS>` | none | lists the opt-in tool groups, comma separated: `storage`, `files`, `raw`, `perf`, `emulation` or `all` (see [Tool groups](#tool-groups)) | same |
383
+ | `--upload-root <DIR>` | working + temp dir | directory `upload_file` may read files from (repeatable; replaces the defaults) | same |
341
384
  | `--enable-webmcp` | off | WebMCP switches and `webmcp_*` tools | capability error |
342
385
  | `--proxy-server <URL>` | none | proxy for every instance; exposes `enable_proxy_auth` | `http://` and `socks5://` proxies |
343
386
  | `--proxy-username <USER>` | none | answers proxy (407) challenges | same (untested) |
@@ -390,7 +433,13 @@ Chrome and Firefox take the same calls:
390
433
  2. `search_scripts` with a needle to find the script URL and line.
391
434
  3. `set_breakpoint` with `url` and `line_number` (0-based).
392
435
  4. Trigger the code (`click_element`, `evaluate_js` with a `setTimeout`, a
393
- reload...). The page pauses.
436
+ reload...). The page pauses. A `click_element` whose handler hits the
437
+ breakpoint answers at once, as a success: the click happened, and the
438
+ reply adds `The page paused in the debugger at <url> line N, column M
439
+ (0-based)` (the URL when the browser gives it) and
440
+ `{"paused": true, "location": ...}`. Any other call the pause leaves
441
+ unfinished (`evaluate_js`, `fill_input`, `navigate`...) fails at once
442
+ with that location.
394
443
  5. `evaluate_on_call_frame` reads locals of the paused frame; `step_over`
395
444
  moves one statement; `resume` continues.
396
445
  6. `remove_breakpoint` with the id `set_breakpoint` returned.
@@ -503,6 +552,12 @@ incompatible:
503
552
 
504
553
  - `--allow-cookie-import` copies your real Chrome cookies into an isolated
505
554
  profile; the agent must ask you before using `copy_cookies`.
555
+ - `cookies` and `web_storage` hide values (often session tokens) unless
556
+ `show_values: true`; values never reach the logs.
557
+ - `upload_file` hands the page a file's contents: it only reads files under
558
+ the upload roots (the server's working directory and the system temp
559
+ directory, or the `--upload-root` directories), resolved so `..` and
560
+ symlinks cannot leave them. Paths are never logged.
506
561
  - The proxy password is never logged and is given only to proxy (407)
507
562
  challenges, never to a site's own authentication.
508
563
  - The Firefox debugger port needs `devtools.chrome.enabled`: any local
@@ -19,7 +19,7 @@
19
19
  "hasInstallScript": true,
20
20
  "license": "MIT",
21
21
  "name": "@raultov/browser-control-mcp",
22
- "version": "0.3.6-beta.6"
22
+ "version": "0.4.0-beta.7"
23
23
  },
24
24
  "node_modules/detect-libc": {
25
25
  "engines": {
@@ -48,5 +48,5 @@
48
48
  }
49
49
  },
50
50
  "requires": true,
51
- "version": "0.3.6-beta.6"
51
+ "version": "0.4.0-beta.7"
52
52
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "artifactDownloadUrls": [
3
- "https://github.com/raultov/browser-control-mcp/releases/download/v0.3.6-beta.6"
3
+ "https://github.com/raultov/browser-control-mcp/releases/download/v0.4.0-beta.7"
4
4
  ],
5
5
  "author": "raultov <raultov@protonmail.com>",
6
6
  "bin": {
@@ -92,7 +92,7 @@
92
92
  "zipExt": ".tar.xz"
93
93
  }
94
94
  },
95
- "version": "0.3.6-beta.6",
95
+ "version": "0.4.0-beta.7",
96
96
  "volta": {
97
97
  "node": "18.14.1",
98
98
  "npm": "9.5.0"