@automatebrowser/mcp 0.3.0 → 1.0.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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "automate-browser",
3
3
  "displayName": "AutomateBrowser",
4
- "version": "0.3.0",
4
+ "version": "1.0.0",
5
5
  "description": "Drive your real, logged-in browser from your editor — 46 tools, plus the automate-browser skill covering tab ownership, page interaction, extraction, sessions, capture and troubleshooting.",
6
6
  "author": {
7
7
  "name": "AutomateBrowser"
package/CHANGELOG.md CHANGED
@@ -4,25 +4,31 @@ Notable changes to `@automatebrowser/mcp`. Format follows
4
4
  [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); versions follow
5
5
  [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
- **Nothing has been published to npm under this name yet.** `0.3.0` is cut and verified and is the
8
- version the first publish will carry; `0.2.0` was cut the same way on 2026-08-26 and held. Every
9
- version before those belongs to `@browsermcp/mcp`, the project this one was extracted from. That
10
- lineage is kept below rather than hidden, because an installed copy that predates the rebrand is
11
- still out there and its users need somewhere to see what changed. Until that publish happens,
12
- `[0.3.0]` is what you get by building from source.
7
+ **`1.0.0` is the first release on npm under this name**, published 2026-09-19. `0.2.0` and `0.3.0`
8
+ were cut the same way 2026-08-26 and 2026-09-17 — and held; `0.3.0` was published on the day of
9
+ the `1.0.0` release and withdrawn the same hour, so `1.0.0` is the only version the registry serves.
10
+ Its tag stays in the repository because the cut was real. Every version before those belongs to
11
+ `@browsermcp/mcp`, the project this one was extracted from. That lineage is kept below rather than
12
+ hidden, because an installed copy that predates the rebrand is still out there and its users need
13
+ somewhere to see what changed.
13
14
 
14
15
  Dates are the date of the work, not of a release.
15
16
 
16
17
  ## [Unreleased]
17
18
 
18
- Nothing yet. `0.3.0` was cut on 2026-09-17, and work after it lands here.
19
+ Nothing yet. `1.0.0` was published on 2026-09-19, and work after it lands here.
19
20
 
20
- ## [0.3.0] — 2026-09-17
21
+ ## [1.0.0] — 2026-09-19
21
22
 
22
- Cut and verified, **not yet published** the version the first publish will carry. This is the bulk
23
- of the current product, substantially more than `[0.2.0]` contains, so it is this section and not
24
- that one that describes what a user actually receives. `[0.2.0]` stays rather than being absorbed,
25
- because it names a real cut that the link block below points at.
23
+ The first release published to npm. This is the bulk of the current product, substantially more than
24
+ `[0.2.0]` contains, so it is this section and not that one that describes what a user actually
25
+ receives. `[0.2.0]` stays rather than being absorbed, because it names a real cut that the link block
26
+ below points at.
27
+
28
+ **Numbered `1.0.0`, not `0.3.0`.** The same content went up as `0.3.0` first and was withdrawn within
29
+ the hour. `0.x` was chosen in September on the grounds that stages were still being added; that
30
+ reasoning expired once the product was complete, gated and documented, and a first public release is
31
+ a statement about the interface being committed to rather than about how much work remains.
26
32
 
27
33
  ### Added
28
34
 
@@ -162,6 +168,6 @@ The last release of `@browsermcp/mcp`, the upstream project this was extracted f
162
168
  under that name. `0.1.0` through `0.1.2` precede it; this repository begins at the point the server
163
169
  was extracted from that monorepo on 2025-03-27, and no history before that is reproduced here.
164
170
 
165
- [Unreleased]: https://github.com/farazpawle/automatebrowser/compare/v0.3.0...HEAD
166
- [0.3.0]: https://github.com/farazpawle/automatebrowser/compare/cf28a4b...v0.3.0
171
+ [Unreleased]: https://github.com/farazpawle/automatebrowser/compare/v1.0.0...HEAD
172
+ [1.0.0]: https://github.com/farazpawle/automatebrowser/compare/cf28a4b...v1.0.0
167
173
  [0.2.0]: https://github.com/farazpawle/automatebrowser/commit/cf28a4b
package/README.md CHANGED
@@ -390,111 +390,111 @@ one client run **one at a time, in the order they were issued**, so a click can
390
390
  navigation that was meant to precede it. Different clients are not serialized against each other — that
391
391
  is what the per-tab claim is for.
392
392
 
393
- <!-- AUTO-GENERATED:tools START — do not edit by hand; run `npm run docs:generate` -->
394
-
395
- **Tool profiles** — `full` (46) · `core` (19) · `slim` (7). Set `AUTOMATE_BROWSER_TOOLS` to a profile name or a comma-separated category list to serve fewer schemas; `browser_status`, `browser_list_clients` and `browser_select_client` are always served.
396
-
397
- ### Navigation & history
398
- | Tool | Description |
399
- |------|-------------|
400
- | `browser_navigate` | Navigate to a URL in YOUR OWN tab, opened in the background if you have none |
401
- | `browser_go_back` | Go back to the previous page |
402
- | `browser_go_forward` | Go forward to the next page |
403
-
404
- ### Snapshot & interaction
405
- | Tool | Description |
406
- |------|-------------|
407
- | `browser_snapshot` | Capture accessibility snapshot of the current page |
408
- | `browser_click` | Click an element by ref, or a viewport point by x/y |
409
- | `browser_hover` | Hover over element on page |
410
- | `browser_type` | Type text into editable element |
411
- | `browser_select_option` | Select an option in a dropdown |
412
- | `browser_drag` | Perform drag and drop between two elements |
413
-
414
- ### Input & timing
415
- | Tool | Description |
416
- |------|-------------|
417
- | `browser_press_key` | Press a key or modifier combo (e.g. Enter, Tab, "Control+A", "Shift+Tab") on the focused element |
418
- | `browser_wait` | Wait for a specified time in seconds |
419
- | `browser_wait_for` | Wait for a page condition to become true (element appears/disappears, text appears, URL changes) |
420
-
421
- ### Reading content
422
- | Tool | Description |
423
- |------|-------------|
424
- | `browser_read_page` | Read the page's main content as clean text or Markdown (strips nav/scripts/styles) |
425
- | `browser_get_html` | Get the raw outerHTML of the page (or of a specific element by `ref`) |
426
- | `browser_find` | Find elements by text, role, and/or CSS selector and return fresh refs WITHOUT a full snapshot |
427
-
428
- ### Page-declared tools
429
- Actions the PAGE publishes about itself, which an agent can call directly instead of finding and clicking controls for. Forward-looking: the standard is a draft and almost no live site declares anything yet, so `list` normally comes back empty with the reason.
430
-
431
- | Tool | Description |
432
- |------|-------------|
433
- | `browser_page_tools` | List and call actions a page declares about itself (WebMCP) |
434
-
435
- ### Forms & scrolling
436
- | Tool | Description |
437
- |------|-------------|
438
- | `browser_fill_form` | Fill multiple form fields (inputs, textareas, selects, checkboxes, radios, contenteditable) in ONE call |
439
- | `browser_clear` | Clear the value of an input, textarea, or contenteditable element by `ref` |
440
- | `browser_scroll` | Scroll the page or an element |
441
-
442
- ### State: cookies, storage, network, downloads, dialogs
443
- | Tool | Description |
444
- |------|-------------|
445
- | `browser_get_cookies` | List cookies for the URL of the tab you are driving (optionally filter by `name`) |
446
- | `browser_set_cookie` | Set (create/overwrite) a cookie on the URL of the tab you are driving |
447
- | `browser_storage` | Read or write the page's localStorage/sessionStorage |
448
- | `browser_network_requests` | List network requests the tab you are driving made on the CURRENT page (method, URL, status, type, timing) — pass includePreserved for the pages before it |
449
- | `browser_handle_dialog` | Control JS dialogs (alert/confirm/prompt) |
450
- | `browser_downloads` | Recent downloads: final path on disk, URL, mime, size, state |
451
- | `browser_proxy` | Route the browser through a proxy |
452
-
453
- ### Performance
454
- `browser_perf_trace` measures THIS machine on THIS run and needs `browser_advanced_mode` — except `action: "memory"`, which samples the JS heap with no debugger and no banner. `browser_perf_field_data` needs no browser at all - it reads Google's Chrome UX Report for what real visitors experienced, and sends the URL you ask about to that public API.
455
-
456
- | Tool | Description |
457
- |------|-------------|
458
- | `browser_perf_field_data` | Real-user Core Web Vitals (p75 LCP/INP/CLS/FCP/TTFB) for a URL, from Google's Chrome UX Report |
459
-
460
- ### Capture & evaluation
461
- | Tool | Description |
462
- |------|-------------|
463
- | `browser_screenshot` | Capture the visible viewport of the tab you are driving — including a background tab, which is rendered via the debugger (brief banner) rather than refused |
464
- | `browser_get_console_logs` | Console logs, uncaught errors with stacks, and service-worker lifecycle (register/state/messages) |
465
- | `browser_issues` | Problems the browser detected that produce NO console error: blocked content (CSP), deprecated API use, browser interventions, and failed or 4xx/5xx network requests |
466
- | `browser_eval` | Evaluate JavaScript in the tab you are driving and return the result |
467
-
468
- ### Tabs
469
- | Tool | Description |
470
- |------|-------------|
471
- | `browser_list_tabs` | List the connected browser's open tabs |
472
- | `browser_new_tab` | Open a new tab IN THE BACKGROUND and drive it — no focus stealing |
473
- | `browser_switch_tab` | STEALS THE USER'S FOCUS: brings a tab to the front and drives it, by `tabId` (preferred) or `index` |
474
- | `browser_select_tab` | TAKE OVER a tab the user already has open, WITHOUT focusing it — the tool for "pick up the testing I started" |
475
- | `browser_close_tab` | Close a tab by `tabId` or `index` |
476
-
477
- ### Multi-IDE / clients
478
- | Tool | Description |
479
- |------|-------------|
480
- | `browser_list_clients` | List every browser connected to the shared AutomateBrowser relay (e.g. Chrome and Edge when both have the extension connected), across all IDEs |
481
- | `browser_select_client` | Choose which connected browser your subsequent tools act on |
482
- | `browser_force_claim` | Forcibly take over a browser that another agent is currently driving, and make it active for your tools |
483
- | `browser_release_client` | Release your claim on the browser you are currently driving so another agent can take it |
484
- | `browser_status` | Diagnostics for the AutomateBrowser relay |
485
-
486
- ### Advanced (opt-in CDP)
487
- Attach the Chrome debugger only when you need full-fidelity input or network bodies. Enable with
488
- `browser_advanced_mode` first; a debugging banner shows only while it's attached.
489
-
490
- | Tool | Description |
491
- |------|-------------|
492
- | `browser_advanced_mode` | Enable/disable opt-in debugger (CDP) mode for the tab you are driving |
493
- | `browser_upload_file` | Set files on a file input (real upload) |
494
- | `browser_get_network_request` | Get a network request's response BODY, status and headers by URL substring |
495
- | `browser_perf_trace` | Record a performance trace (requires advanced/debugger mode) |
496
- | `browser_emulate` | Emulate location, headers, colour scheme, viewport, user agent, network or CPU |
497
-
393
+ <!-- AUTO-GENERATED:tools START — do not edit by hand; run `npm run docs:generate` -->
394
+
395
+ **Tool profiles** — `full` (46) · `core` (19) · `slim` (7). Set `AUTOMATE_BROWSER_TOOLS` to a profile name or a comma-separated category list to serve fewer schemas; `browser_status`, `browser_list_clients` and `browser_select_client` are always served.
396
+
397
+ ### Navigation & history
398
+ | Tool | Description |
399
+ |------|-------------|
400
+ | `browser_navigate` | Navigate to a URL in YOUR OWN tab, opened in the background if you have none |
401
+ | `browser_go_back` | Go back to the previous page |
402
+ | `browser_go_forward` | Go forward to the next page |
403
+
404
+ ### Snapshot & interaction
405
+ | Tool | Description |
406
+ |------|-------------|
407
+ | `browser_snapshot` | Capture accessibility snapshot of the current page |
408
+ | `browser_click` | Click an element by ref, or a viewport point by x/y |
409
+ | `browser_hover` | Hover over element on page |
410
+ | `browser_type` | Type text into editable element |
411
+ | `browser_select_option` | Select an option in a dropdown |
412
+ | `browser_drag` | Perform drag and drop between two elements |
413
+
414
+ ### Input & timing
415
+ | Tool | Description |
416
+ |------|-------------|
417
+ | `browser_press_key` | Press a key or modifier combo (e.g. Enter, Tab, "Control+A", "Shift+Tab") on the focused element |
418
+ | `browser_wait` | Wait for a specified time in seconds |
419
+ | `browser_wait_for` | Wait for a page condition to become true (element appears/disappears, text appears, URL changes) |
420
+
421
+ ### Reading content
422
+ | Tool | Description |
423
+ |------|-------------|
424
+ | `browser_read_page` | Read the page's main content as clean text or Markdown (strips nav/scripts/styles) |
425
+ | `browser_get_html` | Get the raw outerHTML of the page (or of a specific element by `ref`) |
426
+ | `browser_find` | Find elements by text, role, and/or CSS selector and return fresh refs WITHOUT a full snapshot |
427
+
428
+ ### Page-declared tools
429
+ Actions the PAGE publishes about itself, which an agent can call directly instead of finding and clicking controls for. Forward-looking: the standard is a draft and almost no live site declares anything yet, so `list` normally comes back empty with the reason.
430
+
431
+ | Tool | Description |
432
+ |------|-------------|
433
+ | `browser_page_tools` | List and call actions a page declares about itself (WebMCP) |
434
+
435
+ ### Forms & scrolling
436
+ | Tool | Description |
437
+ |------|-------------|
438
+ | `browser_fill_form` | Fill multiple form fields (inputs, textareas, selects, checkboxes, radios, contenteditable) in ONE call |
439
+ | `browser_clear` | Clear the value of an input, textarea, or contenteditable element by `ref` |
440
+ | `browser_scroll` | Scroll the page or an element |
441
+
442
+ ### State: cookies, storage, network, downloads, dialogs
443
+ | Tool | Description |
444
+ |------|-------------|
445
+ | `browser_get_cookies` | List cookies for the URL of the tab you are driving (optionally filter by `name`) |
446
+ | `browser_set_cookie` | Set (create/overwrite) a cookie on the URL of the tab you are driving |
447
+ | `browser_storage` | Read or write the page's localStorage/sessionStorage |
448
+ | `browser_network_requests` | List network requests the tab you are driving made on the CURRENT page (method, URL, status, type, timing) — pass includePreserved for the pages before it |
449
+ | `browser_handle_dialog` | Control JS dialogs (alert/confirm/prompt) |
450
+ | `browser_downloads` | Recent downloads: final path on disk, URL, mime, size, state |
451
+ | `browser_proxy` | Route the browser through a proxy |
452
+
453
+ ### Performance
454
+ `browser_perf_trace` measures THIS machine on THIS run and needs `browser_advanced_mode` — except `action: "memory"`, which samples the JS heap with no debugger and no banner. `browser_perf_field_data` needs no browser at all - it reads Google's Chrome UX Report for what real visitors experienced, and sends the URL you ask about to that public API.
455
+
456
+ | Tool | Description |
457
+ |------|-------------|
458
+ | `browser_perf_field_data` | Real-user Core Web Vitals (p75 LCP/INP/CLS/FCP/TTFB) for a URL, from Google's Chrome UX Report |
459
+
460
+ ### Capture & evaluation
461
+ | Tool | Description |
462
+ |------|-------------|
463
+ | `browser_screenshot` | Capture the visible viewport of the tab you are driving — including a background tab, which is rendered via the debugger (brief banner) rather than refused |
464
+ | `browser_get_console_logs` | Console logs, uncaught errors with stacks, and service-worker lifecycle (register/state/messages) |
465
+ | `browser_issues` | Problems the browser detected that produce NO console error: blocked content (CSP), deprecated API use, browser interventions, and failed or 4xx/5xx network requests |
466
+ | `browser_eval` | Evaluate JavaScript in the tab you are driving and return the result |
467
+
468
+ ### Tabs
469
+ | Tool | Description |
470
+ |------|-------------|
471
+ | `browser_list_tabs` | List the connected browser's open tabs |
472
+ | `browser_new_tab` | Open a new tab IN THE BACKGROUND and drive it — no focus stealing |
473
+ | `browser_switch_tab` | STEALS THE USER'S FOCUS: brings a tab to the front and drives it, by `tabId` (preferred) or `index` |
474
+ | `browser_select_tab` | TAKE OVER a tab the user already has open, WITHOUT focusing it — the tool for "pick up the testing I started" |
475
+ | `browser_close_tab` | Close a tab by `tabId` or `index` |
476
+
477
+ ### Multi-IDE / clients
478
+ | Tool | Description |
479
+ |------|-------------|
480
+ | `browser_list_clients` | List every browser connected to the shared AutomateBrowser relay (e.g. Chrome and Edge when both have the extension connected), across all IDEs |
481
+ | `browser_select_client` | Choose which connected browser your subsequent tools act on |
482
+ | `browser_force_claim` | Forcibly take over a browser that another agent is currently driving, and make it active for your tools |
483
+ | `browser_release_client` | Release your claim on the browser you are currently driving so another agent can take it |
484
+ | `browser_status` | Diagnostics for the AutomateBrowser relay |
485
+
486
+ ### Advanced (opt-in CDP)
487
+ Attach the Chrome debugger only when you need full-fidelity input or network bodies. Enable with
488
+ `browser_advanced_mode` first; a debugging banner shows only while it's attached.
489
+
490
+ | Tool | Description |
491
+ |------|-------------|
492
+ | `browser_advanced_mode` | Enable/disable opt-in debugger (CDP) mode for the tab you are driving |
493
+ | `browser_upload_file` | Set files on a file input (real upload) |
494
+ | `browser_get_network_request` | Get a network request's response BODY, status and headers by URL substring |
495
+ | `browser_perf_trace` | Record a performance trace (requires advanced/debugger mode) |
496
+ | `browser_emulate` | Emulate location, headers, colour scheme, viewport, user agent, network or CPU |
497
+
498
498
  <!-- AUTO-GENERATED:tools END -->
499
499
 
500
500
  ## Terminal CLI
@@ -535,45 +535,45 @@ pays none.
535
535
 
536
536
  All settings are environment variables on the **server** side (set them in the MCP client's `env`):
537
537
 
538
- <!-- AUTO-GENERATED:config START — do not edit by hand; run `npm run docs:generate` -->
539
-
540
- | Variable | Purpose | Default |
541
- |----------|---------|---------|
542
- | `AUTOMATE_BROWSER_CLIENT_NAME` | Human name for this IDE in the relay roster | `mcp-<pid>` (CLI: `cli`) |
543
- | `AUTOMATE_BROWSER_TOKEN` | Optional auth token (set the same value in the extension popup) | unset |
544
- | `AUTOMATE_BROWSER_TOOLS` | Tool profile (`full`, `core`, `slim`) or a comma-separated category list | `full` |
545
- | `AUTOMATE_BROWSER_CONNECT_WAIT_MS` | How long a tool waits for a browser to appear | `30000` |
546
- | `AUTOMATE_BROWSER_LEASE_TTL_MS` | Soft-claim lease duration | `60000` |
547
- | `AUTOMATE_BROWSER_INSTANCE_ID` | Identity used to replace this agent's own previous roster entry when it restarts | derived from parent process + folder |
548
- | `AUTOMATE_BROWSER_CONTROLLER_STALE_MS` | Drop an agent that has sent nothing for this long | `45000` |
549
- | `AUTOMATE_BROWSER_WS_PORT_RANGE` | Port scan range (e.g. `9109-9116` to isolate) | `9009-9013` |
550
- | `AUTOMATE_BROWSER_RELAY_IDLE_MS` | Idle time before the relay exits | `300000` |
551
- | `AUTOMATE_BROWSER_RELAY_HOST` | Bind the relay past loopback so a browser on **another machine** can connect. Refuses to start without `AUTOMATE_BROWSER_TOKEN` | `127.0.0.1` |
552
- | `AUTOMATE_BROWSER_RELAY_FOREGROUND` | `1` also tees the relay's log to stderr instead of the file only | unset |
553
- | `AUTOMATE_BROWSER_SNAPSHOT_EACH_ACTION` | Bundle a snapshot after every interaction | unset |
554
- | `AUTOMATE_BROWSER_DELTA_FOOTER` | `off` disables the console-error footer below | on |
555
- | `AUTOMATE_BROWSER_DELTA_FOOTER_MS` | Hard ceiling on the footer's console probe | `2000` |
556
- | `AUTOMATE_BROWSER_NAV_CONFIRM_MS` | How long a navigation that reported no movement is re-checked before it is called a failure | `2000` |
557
- | `AUTOMATE_BROWSER_SCREENSHOT_MAX_WIDTH` | Widest an **inline** screenshot may come back. A `filePath` capture is never downscaled; `0` = off | `1536` |
558
- | `AUTOMATE_BROWSER_SCREENSHOT_MAX_HEIGHT` | Tallest an **inline** screenshot may come back, aspect ratio preserved; `0` = off | `4096` |
559
- | `AUTOMATE_BROWSER_ACTIONABILITY` | `off` disables the pre-action checks and post-action settle below | on |
560
- | `AUTOMATE_BROWSER_WS_MAX_PAYLOAD_BYTES` | Max WebSocket frame size. A whole Chrome trace is never under 1 MiB, and an oversized frame closes the socket rather than truncating | `67108864` (64 MiB) |
561
- | `AUTOMATE_BROWSER_WS_RATE_MAX` | Frames one socket may send per window before it is closed | `120` |
562
- | `AUTOMATE_BROWSER_WS_RATE_WINDOW_MS` | The window that ceiling is counted over | `1000` |
563
- | `AUTOMATE_BROWSER_EXTENSION_ORIGINS` | Comma-separated browser-extension origins allowed to open a socket | the AutomateBrowser extension |
564
- | `AUTOMATE_BROWSER_LOG_LEVEL` | `debug`, `info`, `warn` or `error`. Diagnostics go to stderr, never stdout | `info` |
565
- | `AUTOMATE_BROWSER_WORKSPACE` | Extra folders the file-path sandbox accepts, `;`-separated on Windows and `:`-separated elsewhere. Adds to the roots your client sends; never replaces them | unset (client roots, or the working directory when it sends none) |
566
- | `AUTOMATE_BROWSER_ALLOW_UNRESTRICTED_PATHS` | `1` disables the file-path sandbox below | unset |
567
- | `AUTOMATE_BROWSER_ALLOW_ORIGINS` | Comma-separated origin patterns; when set, **only** these may be driven | unset (unrestricted) |
568
- | `AUTOMATE_BROWSER_DENY_ORIGINS` | Origins that may never be driven, also blocked at the network layer | unset |
569
- | `AUTOMATE_BROWSER_SENSITIVE_ORIGINS` | Origins that stay readable but can never be acted on | unset |
570
- | `AUTOMATE_BROWSER_READ_ONLY` | `1` refuses every page-changing tool, everywhere | unset |
571
- | `AUTOMATE_BROWSER_NO_EVAL` | `1` refuses every tool that runs JavaScript you wrote — `browser_eval` and `browser_navigate`'s `initScript` | unset |
572
- | `AUTOMATE_BROWSER_AUDIT` | `off` stops the action audit log below | on |
573
- | `AUTOMATE_BROWSER_AUDIT_FILE` | Where the audit trail is written | `~/.automate-browser/automate-browser-audit.log` |
574
- | `AUTOMATE_BROWSER_NO_UPDATE_CHECK` | Any value stops the daily check for a newer release below | unset (check runs) |
575
- | `AUTOMATE_BROWSER_CRUX_KEY` | Google Chrome UX Report API key; `browser_perf_field_data` is inert without it | unset |
576
-
538
+ <!-- AUTO-GENERATED:config START — do not edit by hand; run `npm run docs:generate` -->
539
+
540
+ | Variable | Purpose | Default |
541
+ |----------|---------|---------|
542
+ | `AUTOMATE_BROWSER_CLIENT_NAME` | Human name for this IDE in the relay roster | `mcp-<pid>` (CLI: `cli`) |
543
+ | `AUTOMATE_BROWSER_TOKEN` | Optional auth token (set the same value in the extension popup) | unset |
544
+ | `AUTOMATE_BROWSER_TOOLS` | Tool profile (`full`, `core`, `slim`) or a comma-separated category list | `full` |
545
+ | `AUTOMATE_BROWSER_CONNECT_WAIT_MS` | How long a tool waits for a browser to appear | `30000` |
546
+ | `AUTOMATE_BROWSER_LEASE_TTL_MS` | Soft-claim lease duration | `60000` |
547
+ | `AUTOMATE_BROWSER_INSTANCE_ID` | Identity used to replace this agent's own previous roster entry when it restarts | derived from parent process + folder |
548
+ | `AUTOMATE_BROWSER_CONTROLLER_STALE_MS` | Drop an agent that has sent nothing for this long | `45000` |
549
+ | `AUTOMATE_BROWSER_WS_PORT_RANGE` | Port scan range (e.g. `9109-9116` to isolate) | `9009-9013` |
550
+ | `AUTOMATE_BROWSER_RELAY_IDLE_MS` | Idle time before the relay exits | `300000` |
551
+ | `AUTOMATE_BROWSER_RELAY_HOST` | Bind the relay past loopback so a browser on **another machine** can connect. Refuses to start without `AUTOMATE_BROWSER_TOKEN` | `127.0.0.1` |
552
+ | `AUTOMATE_BROWSER_RELAY_FOREGROUND` | `1` also tees the relay's log to stderr instead of the file only | unset |
553
+ | `AUTOMATE_BROWSER_SNAPSHOT_EACH_ACTION` | Bundle a snapshot after every interaction | unset |
554
+ | `AUTOMATE_BROWSER_DELTA_FOOTER` | `off` disables the console-error footer below | on |
555
+ | `AUTOMATE_BROWSER_DELTA_FOOTER_MS` | Hard ceiling on the footer's console probe | `2000` |
556
+ | `AUTOMATE_BROWSER_NAV_CONFIRM_MS` | How long a navigation that reported no movement is re-checked before it is called a failure | `2000` |
557
+ | `AUTOMATE_BROWSER_SCREENSHOT_MAX_WIDTH` | Widest an **inline** screenshot may come back. A `filePath` capture is never downscaled; `0` = off | `1536` |
558
+ | `AUTOMATE_BROWSER_SCREENSHOT_MAX_HEIGHT` | Tallest an **inline** screenshot may come back, aspect ratio preserved; `0` = off | `4096` |
559
+ | `AUTOMATE_BROWSER_ACTIONABILITY` | `off` disables the pre-action checks and post-action settle below | on |
560
+ | `AUTOMATE_BROWSER_WS_MAX_PAYLOAD_BYTES` | Max WebSocket frame size. A whole Chrome trace is never under 1 MiB, and an oversized frame closes the socket rather than truncating | `67108864` (64 MiB) |
561
+ | `AUTOMATE_BROWSER_WS_RATE_MAX` | Frames one socket may send per window before it is closed | `120` |
562
+ | `AUTOMATE_BROWSER_WS_RATE_WINDOW_MS` | The window that ceiling is counted over | `1000` |
563
+ | `AUTOMATE_BROWSER_EXTENSION_ORIGINS` | Comma-separated browser-extension origins allowed to open a socket | the AutomateBrowser extension |
564
+ | `AUTOMATE_BROWSER_LOG_LEVEL` | `debug`, `info`, `warn` or `error`. Diagnostics go to stderr, never stdout | `info` |
565
+ | `AUTOMATE_BROWSER_WORKSPACE` | Extra folders the file-path sandbox accepts, `;`-separated on Windows and `:`-separated elsewhere. Adds to the roots your client sends; never replaces them | unset (client roots, or the working directory when it sends none) |
566
+ | `AUTOMATE_BROWSER_ALLOW_UNRESTRICTED_PATHS` | `1` disables the file-path sandbox below | unset |
567
+ | `AUTOMATE_BROWSER_ALLOW_ORIGINS` | Comma-separated origin patterns; when set, **only** these may be driven | unset (unrestricted) |
568
+ | `AUTOMATE_BROWSER_DENY_ORIGINS` | Origins that may never be driven, also blocked at the network layer | unset |
569
+ | `AUTOMATE_BROWSER_SENSITIVE_ORIGINS` | Origins that stay readable but can never be acted on | unset |
570
+ | `AUTOMATE_BROWSER_READ_ONLY` | `1` refuses every page-changing tool, everywhere | unset |
571
+ | `AUTOMATE_BROWSER_NO_EVAL` | `1` refuses every tool that runs JavaScript you wrote — `browser_eval` and `browser_navigate`'s `initScript` | unset |
572
+ | `AUTOMATE_BROWSER_AUDIT` | `off` stops the action audit log below | on |
573
+ | `AUTOMATE_BROWSER_AUDIT_FILE` | Where the audit trail is written | `~/.automate-browser/automate-browser-audit.log` |
574
+ | `AUTOMATE_BROWSER_NO_UPDATE_CHECK` | Any value stops the daily check for a newer release below | unset (check runs) |
575
+ | `AUTOMATE_BROWSER_CRUX_KEY` | Google Chrome UX Report API key; `browser_perf_field_data` is inert without it | unset |
576
+
577
577
  <!-- AUTO-GENERATED:config END -->
578
578
 
579
579
  ### Console-error and issue footers
@@ -1637,7 +1637,7 @@ So, on startup, the server checks whether a newer release exists and prints one
1637
1637
  if there is:
1638
1638
 
1639
1639
  ```
1640
- A newer @automatebrowser/mcp is available: 0.3.0 -> 0.4.0. Update with `npm i -g @automatebrowser/mcp`.
1640
+ A newer @automatebrowser/mcp is available: 1.0.0 -> 1.1.0. Update with `npm i -g @automatebrowser/mcp`.
1641
1641
  Set AUTOMATE_BROWSER_NO_UPDATE_CHECK=1 to silence this.
1642
1642
  ```
1643
1643
 
@@ -11,7 +11,7 @@ import {
11
11
  probePort,
12
12
  signAuthChallenge,
13
13
  snapshotEachAction
14
- } from "./chunk-R5JREBXQ.js";
14
+ } from "./chunk-NRT623ZU.js";
15
15
 
16
16
  // src/tools/errors.ts
17
17
  var ERROR_CODES = [
@@ -5270,8 +5270,9 @@ async function runTool(context, tool, args, state) {
5270
5270
  // package.json
5271
5271
  var package_default = {
5272
5272
  name: "@automatebrowser/mcp",
5273
- version: "0.3.0",
5273
+ version: "1.0.0",
5274
5274
  description: "MCP server for browser automation using AutomateBrowser",
5275
+ license: "Apache-2.0",
5275
5276
  author: "AutomateBrowser",
5276
5277
  homepage: "https://farazpawle.github.io/automatebrowser/",
5277
5278
  bugs: "https://github.com/farazpawle/automatebrowser/issues",
@@ -1,10 +1,10 @@
1
1
  // src/vendor/config.ts
2
2
  var appConfig = {
3
3
  name: "@automatebrowser/mcp",
4
- version: "0.3.0",
4
+ version: "1.0.0",
5
5
  server: {
6
6
  name: "@automatebrowser/mcp",
7
- version: "0.3.0"
7
+ version: "1.0.0"
8
8
  }
9
9
  };
10
10
  function resolveWsPortRange() {
@@ -20,7 +20,7 @@ function resolveWsPortRange() {
20
20
  var mcpConfig = {
21
21
  server: {
22
22
  name: "@automatebrowser/mcp",
23
- version: "0.3.0"
23
+ version: "1.0.0"
24
24
  },
25
25
  transport: {
26
26
  type: "stdio"
package/dist/cli.js CHANGED
@@ -6,10 +6,10 @@ import {
6
6
  package_default,
7
7
  renderError,
8
8
  selectTools
9
- } from "./chunk-WAXVZKT5.js";
9
+ } from "./chunk-7POW4XPJ.js";
10
10
  import {
11
11
  debugLog
12
- } from "./chunk-R5JREBXQ.js";
12
+ } from "./chunk-NRT623ZU.js";
13
13
 
14
14
  // src/cli.ts
15
15
  import { randomUUID } from "crypto";
package/dist/index.js CHANGED
@@ -8,13 +8,13 @@ import {
8
8
  package_default,
9
9
  selectTools,
10
10
  setRoots
11
- } from "./chunk-WAXVZKT5.js";
11
+ } from "./chunk-7POW4XPJ.js";
12
12
  import {
13
13
  appConfig,
14
14
  debugLog,
15
15
  log,
16
16
  logPath
17
- } from "./chunk-R5JREBXQ.js";
17
+ } from "./chunk-NRT623ZU.js";
18
18
 
19
19
  // src/index.ts
20
20
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
package/dist/relay.js CHANGED
@@ -15,7 +15,7 @@ import {
15
15
  parseFrame,
16
16
  probePort,
17
17
  verifyAuthResponse
18
- } from "./chunk-R5JREBXQ.js";
18
+ } from "./chunk-NRT623ZU.js";
19
19
 
20
20
  // src/ws.ts
21
21
  import { WebSocketServer } from "ws";
package/package.json CHANGED
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "name": "@automatebrowser/mcp",
3
- "version": "0.3.0",
4
- "description": "MCP server for browser automation using AutomateBrowser",
3
+ "version": "1.0.0",
4
+ "description": "MCP server for browser automation using AutomateBrowser",
5
+ "license": "Apache-2.0",
5
6
  "author": "AutomateBrowser",
6
7
  "homepage": "https://farazpawle.github.io/automatebrowser/",
7
8
  "bugs": "https://github.com/farazpawle/automatebrowser/issues",