@darbotlabs/darbot-browser-mcp 0.1.1 → 1.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.
Files changed (80) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +249 -158
  3. package/cli.js +1 -1
  4. package/config.d.ts +77 -1
  5. package/index.d.ts +1 -1
  6. package/index.js +1 -1
  7. package/lib/ai/context.js +150 -0
  8. package/lib/ai/guardrails.js +382 -0
  9. package/lib/ai/integration.js +397 -0
  10. package/lib/ai/intent.js +237 -0
  11. package/lib/ai/manualPromise.js +111 -0
  12. package/lib/ai/memory.js +273 -0
  13. package/lib/ai/ml-scorer.js +265 -0
  14. package/lib/ai/orchestrator-tools.js +292 -0
  15. package/lib/ai/orchestrator.js +473 -0
  16. package/lib/ai/planner.js +300 -0
  17. package/lib/ai/reporter.js +493 -0
  18. package/lib/ai/workflow.js +407 -0
  19. package/lib/auth/apiKeyAuth.js +46 -0
  20. package/lib/auth/entraAuth.js +110 -0
  21. package/lib/auth/entraJwtVerifier.js +117 -0
  22. package/lib/auth/index.js +210 -0
  23. package/lib/auth/managedIdentityAuth.js +175 -0
  24. package/lib/auth/mcpOAuthProvider.js +186 -0
  25. package/lib/auth/tunnelAuth.js +120 -0
  26. package/lib/browserContextFactory.js +1 -1
  27. package/lib/browserServer.js +1 -1
  28. package/lib/cdpRelay.js +2 -2
  29. package/lib/common.js +68 -0
  30. package/lib/config.js +62 -3
  31. package/lib/connection.js +1 -1
  32. package/lib/context.js +1 -1
  33. package/lib/fileUtils.js +1 -1
  34. package/lib/guardrails.js +382 -0
  35. package/lib/health.js +178 -0
  36. package/lib/httpServer.js +1 -1
  37. package/lib/index.js +1 -1
  38. package/lib/javascript.js +1 -1
  39. package/lib/manualPromise.js +1 -1
  40. package/lib/memory.js +273 -0
  41. package/lib/openapi.js +373 -0
  42. package/lib/orchestrator.js +473 -0
  43. package/lib/package.js +1 -1
  44. package/lib/pageSnapshot.js +17 -2
  45. package/lib/planner.js +302 -0
  46. package/lib/program.js +17 -5
  47. package/lib/reporter.js +493 -0
  48. package/lib/resources/resource.js +1 -1
  49. package/lib/server.js +5 -3
  50. package/lib/tab.js +1 -1
  51. package/lib/tools/ai-native.js +298 -0
  52. package/lib/tools/autonomous.js +147 -0
  53. package/lib/tools/clock.js +183 -0
  54. package/lib/tools/common.js +1 -1
  55. package/lib/tools/console.js +1 -1
  56. package/lib/tools/diagnostics.js +132 -0
  57. package/lib/tools/dialogs.js +1 -1
  58. package/lib/tools/emulation.js +155 -0
  59. package/lib/tools/files.js +1 -1
  60. package/lib/tools/install.js +1 -1
  61. package/lib/tools/keyboard.js +1 -1
  62. package/lib/tools/navigate.js +1 -1
  63. package/lib/tools/network.js +1 -1
  64. package/lib/tools/pageSnapshot.js +58 -0
  65. package/lib/tools/pdf.js +1 -1
  66. package/lib/tools/profiles.js +76 -25
  67. package/lib/tools/screenshot.js +1 -1
  68. package/lib/tools/scroll.js +93 -0
  69. package/lib/tools/snapshot.js +1 -1
  70. package/lib/tools/storage.js +328 -0
  71. package/lib/tools/tab.js +16 -0
  72. package/lib/tools/tabs.js +1 -1
  73. package/lib/tools/testing.js +1 -1
  74. package/lib/tools/tool.js +1 -1
  75. package/lib/tools/utils.js +1 -1
  76. package/lib/tools/vision.js +1 -1
  77. package/lib/tools/wait.js +1 -1
  78. package/lib/tools.js +22 -1
  79. package/lib/transport.js +251 -31
  80. package/package.json +54 -21
package/README.md CHANGED
@@ -2,34 +2,39 @@
2
2
 
3
3
  ![Darbot Banner](./assets/darbot_logo_icon_pack/darbot-horizontal-banner-1500x500.png)
4
4
 
5
- **🤖 Your Autonomous Browser Companion - Powered by AI**
5
+ **Your Autonomous Browser Companion**
6
6
 
7
- A Model Context Protocol (MCP) server that provides intelligent autonomous browser capabilities. This server enables AI models to interact with web pages through structured accessibility snapshots, delivering autonomous browsing without requiring vision models. Optimized for Microsoft Edge with comprehensive work profile support.
7
+ Darbot Browser is a framework for autonomous web automation. This tool enables AI models to interact with UI through structured accessibility snapshots, delivering autonomous browsing without requiring vision models. Optimized for Microsoft Edge with comprehensive session state support.
8
8
 
9
9
  [![NPM Version](https://img.shields.io/npm/v/@darbotlabs/darbot-browser-mcp?style=flat-square&color=0098FF)](https://www.npmjs.com/package/@darbotlabs/darbot-browser-mcp)
10
10
  [![Downloads](https://img.shields.io/npm/dm/@darbotlabs/darbot-browser-mcp?style=flat-square&color=0098FF)](https://www.npmjs.com/package/@darbotlabs/darbot-browser-mcp)
11
11
  [![VS Code Extension](https://img.shields.io/visual-studio-marketplace/v/darbotlabs.darbot-browser-mcp?style=flat-square&color=24bfa5&label=VS%20Code)](https://marketplace.visualstudio.com/items?itemName=darbotlabs.darbot-browser-mcp)
12
12
  [![License](https://img.shields.io/badge/license-Apache%202.0-blue?style=flat-square)](./LICENSE)
13
13
 
14
- ## Key Features
14
+ ## Key Features
15
15
 
16
- - **🚀 Fast and lightweight** - Uses accessibility tree, not pixel-based input
17
- - **🧠 AI-friendly** - No vision models needed, operates purely on structured data
18
- - **🎯 Deterministic** - Avoids ambiguity common with screenshot-based approaches
19
- - **🔄 Work Profiles** - Save and restore complete browser sessions
20
- - **🛠️ 29 Autonomous Tools** - Comprehensive autonomous browser capabilities
21
- - **⚡ Multi-Platform** - Available as NPM package, VS Code extension, NuGet package, and browser extension
16
+ - **Fast and lightweight** - Uses accessibility tree, not pixel-based input
17
+ - **DarbotLM framework** - No vision models needed, operates purely on structured data
18
+ - **Deterministic** - Avoids ambiguity common with screenshot-based approaches
19
+ - **Session States** - Save and restore complete browser sessions with Edge profile context
20
+ - **52 Autonomous Tools** - Comprehensive autonomous browser capabilities
21
+ - **Autonomous Crawling** - BFS strategy with memory, guardrails, and reporting
22
+ - **DarbotLabsMemory System** - State tracking and deduplication with darbot-memory-mcp integration
23
+ - **HTML Reports** - Comprehensive crawl reports with screenshots and statistics
24
+ - **Multi-Platform** - Available as NPM package, VS Code extension, NuGet package, and browser extension
22
25
 
23
- ## 📋 Requirements
24
- - **Node.js** 18 or newer
26
+ ## Requirements
27
+
28
+ - **Node.js** 23 or newer
25
29
  - **VS Code, Cursor, Windsurf, Claude Desktop** or any other MCP client
26
30
  - **Microsoft Edge** (recommended) or Chrome/Firefox/WebKit
27
31
 
28
- ## 📦 Installation Options
32
+ ## Installation Options
29
33
 
30
34
  Darbot Browser MCP is available in multiple package formats:
31
35
 
32
- ### 🔧 NPM Package
36
+ ### NPM Package
37
+
33
38
  ```bash
34
39
  # Install globally
35
40
  npm install -g @darbotlabs/darbot-browser-mcp
@@ -38,36 +43,48 @@ npm install -g @darbotlabs/darbot-browser-mcp
38
43
  npx @darbotlabs/darbot-browser-mcp@latest
39
44
  ```
40
45
 
41
- ### 🔌 VS Code Extension
46
+ ### VS Code Extension
47
+
42
48
  Install the **"Darbot Browser MCP"** extension from the VS Code marketplace or search for `darbotlabs.darbot-browser-mcp`.
43
49
 
44
- [**📥 Install VS Code Extension**](https://marketplace.visualstudio.com/items?itemName=darbotlabs.darbot-browser-mcp)
50
+ The extension **automatically configures the MCP server** when installed - just enable MCP in VS Code settings and start the server!
51
+
52
+ [**Install VS Code Extension**](https://marketplace.visualstudio.com/items?itemName=darbotlabs.darbot-browser-mcp)
53
+
54
+ **Quick Setup:**
55
+
56
+ 1. Install the extension from VS Code marketplace
57
+ 2. The extension will automatically prompt you to enable MCP and configure the server
58
+ 3. Use Command Palette: "Darbot Browser MCP: Start Server"
59
+ 4. Start chatting with GitHub Copilot using browser automation tools!
60
+
61
+ ### NuGet Package (.NET)
45
62
 
46
- ### 📚 NuGet Package (.NET)
47
63
  ```bash
48
64
  # Install for .NET projects
49
65
  dotnet add package DarbotLabs.Browser.MCP
50
66
  ```
51
67
 
52
- ### 🌐 Browser Extension
68
+ ### Browser Extension
69
+
53
70
  Install the **Browser MCP Bridge** extension from the Chrome Web Store to share browser tabs with the MCP server.
54
71
 
55
72
  ---
56
73
 
57
- ## 🎯 Why Choose Darbot Browser MCP?
74
+ ## Why Choose Darbot Browser MCP?
58
75
 
59
- | Traditional Browser Automation | 🤖 Darbot Browser MCP |
60
- |--------------------------------|------------------------|
61
- | Pixel-based, brittle selectors | AI-friendly accessibility snapshots |
62
- | Requires vision models | Pure structured data approach |
63
- | Complex setup and maintenance | Simple NPM install, ready in seconds |
64
- | Browser-specific code | Universal MCP protocol |
65
- | No session management | Advanced autonomous work profiles |
76
+ | Traditional Browser Automation | Darbot Browser MCP |
77
+ | ----------------------------- | -------------------- |
78
+ | ERROR Pixel-based, brittle selectors | AI-friendly accessibility snapshots |
79
+ | ERROR Requires vision models | Pure structured data approach |
80
+ | ERROR Complex setup and maintenance | Simple NPM install, ready in seconds |
81
+ | ERROR Browser-specific code | Universal MCP protocol |
82
+ | ERROR No session management | Advanced autonomous session states |
66
83
 
67
- ### 🛠️ Complete Autonomous Toolkit (29 Tools)
84
+ ### Complete Autonomous Toolkit (52 Tools)
68
85
 
69
86
  <details>
70
- <summary><b>🔧 Core Autonomous Operations</b></summary>
87
+ <summary><b> Core Autonomous Operations</b></summary>
71
88
 
72
89
  - `browser_navigate` - Autonomously navigate to any URL
73
90
  - `browser_click` - Autonomous intelligent element clicking
@@ -78,12 +95,22 @@ Install the **Browser MCP Bridge** extension from the Chrome Web Store to share
78
95
  </details>
79
96
 
80
97
  <details>
81
- <summary><b>📁 Autonomous Work Profile Management</b></summary>
98
+ <summary><b>Autonomous Crawling & Intelligence</b></summary>
82
99
 
83
- - `browser_save_profile` - Autonomously save complete browser sessions
84
- - `browser_switch_profile` - Autonomously load saved profiles
85
- - `browser_list_profiles` - Autonomously manage all your profiles
86
- - `browser_delete_profile` - Autonomous clean profile management
100
+ - `browser_start_autonomous_crawl` - Start intelligent BFS crawling with memory and reporting
101
+ - `browser_configure_memory` - Configure memory system with darbot-memory-mcp integration
102
+ - Built-in guardrail system for safe autonomous operation
103
+ - Comprehensive HTML reporting with screenshots and statistics
104
+
105
+ </details>
106
+
107
+ <details>
108
+ <summary><b>Autonomous Session State Management</b></summary>
109
+
110
+ - `browser_save_profile` - Save complete browser session states with Edge profile context
111
+ - `browser_switch_profile` - Restore saved session states
112
+ - `browser_list_profiles` - List all saved session states with Edge/workspace context
113
+ - `browser_delete_profile` - Delete session states from storage
87
114
 
88
115
  </details>
89
116
 
@@ -97,7 +124,7 @@ Install the **Browser MCP Bridge** extension from the Chrome Web Store to share
97
124
  </details>
98
125
 
99
126
  <details>
100
- <summary><b>🗂️ Autonomous Tab Management</b></summary>
127
+ <summary><b>️ Autonomous Tab Management</b></summary>
101
128
 
102
129
  - `browser_tab_new` - Autonomously open new tabs
103
130
  - `browser_tab_list` - Autonomously get all open tabs
@@ -107,7 +134,7 @@ Install the **Browser MCP Bridge** extension from the Chrome Web Store to share
107
134
  </details>
108
135
 
109
136
  <details>
110
- <summary><b>🧪 Autonomous Testing & Development</b></summary>
137
+ <summary><b>Autonomous Testing & Development</b></summary>
111
138
 
112
139
  - `browser_generate_playwright_test` - Autonomously auto-generate test code
113
140
  - `browser_console_messages` - Autonomous debug with console access
@@ -115,16 +142,27 @@ Install the **Browser MCP Bridge** extension from the Chrome Web Store to share
115
142
 
116
143
  </details>
117
144
 
118
- [**📖 View All 29 Tools**](#tools)
145
+ [**View All 52 tools**](#tools)
119
146
 
120
147
  <!--
121
148
  // Generate using:
122
149
  node utils/generate-links.js
123
150
  -->
124
151
 
125
- ## 🚀 Getting Started
152
+ ## Getting Started
153
+
154
+ The fastest way to get started is with the VS Code extension, which automatically configures everything for you. For other clients, you'll need to manually configure the MCP server.
126
155
 
127
- First, install the Browser MCP server with your client. A typical configuration looks like this:
156
+ ### **VS Code (Automatic Setup)**
157
+
158
+ 1. Install the [VS Code Extension](https://marketplace.visualstudio.com/items?itemName=darbotlabs.darbot-browser-mcp)
159
+ 2. Extension auto-configures MCP settings
160
+ 3. Start the server via Command Palette
161
+ 4. Use with GitHub Copilot Chat!
162
+
163
+ ### **Manual Configuration (Other Clients)**
164
+
165
+ For Claude Desktop, Cursor, Windsurf, etc., add this configuration:
128
166
 
129
167
  ```js
130
168
  {
@@ -139,14 +177,26 @@ First, install the Browser MCP server with your client. A typical configuration
139
177
  }
140
178
  ```
141
179
 
142
- ### 📱 Quick Install Buttons
180
+ ### Quick Install Buttons
181
+
182
+ **VS Code (Automatic):**
183
+ [<img src="https://img.shields.io/badge/VS_Code-Auto_Install_Extension-0098FF?style=for-the-badge&logo=visual-studio-code" alt="Install VS Code Extension">](https://marketplace.visualstudio.com/items?itemName=darbotlabs.darbot-browser-mcp)
184
+
185
+ **Manual Configuration:**
186
+ [<img src="https://img.shields.io/badge/VS_Code-Manual_Server_Config-0098FF?style=for-the-badge&logo=visual-studio-code" alt="Install in VS Code">](https://insiders.vscode.dev/redirect?url=vscode%3Amcp%2Finstall%3F%257B%2522name%2522%253A%2522browser%2522%252C%2522command%2522%253A%2522npx%2522%252C%2522args%2522%253A%255B%2522%2540darbotlabs%252Fdarbot-browser-mcp%2540latest%2522%255D%257D) [<img src="https://img.shields.io/badge/VS_Code_Insiders-Manual_Server_Config-24bfa5?style=for-the-badge&logo=visual-studio-code" alt="Install in VS Code Insiders">](https://insiders.vscode.dev/redirect?url=vscode-insiders%3Amcp%2Finstall%3F%257B%2522name%2522%253A%2522browser%2522%252C%2522command%2522%253A%2522npx%2522%252C%2522args%2522%253A%255B%2522%2540darbotlabs%252Fdarbot-browser-mcp%2540latest%2522%255D%257D)
143
187
 
144
- [<img src="https://img.shields.io/badge/VS_Code-Install_Server-0098FF?style=for-the-badge&logo=visual-studio-code" alt="Install in VS Code">](https://insiders.vscode.dev/redirect?url=vscode%3Amcp%2Finstall%3F%257B%2522name%2522%253A%2522browser%2522%252C%2522command%2522%253A%2522npx%2522%252C%2522args%2522%253A%255B%2522%2540darbotlabs%252Fdarbot-browser-mcp%2540latest%2522%255D%257D) [<img src="https://img.shields.io/badge/VS_Code_Insiders-Install_Server-24bfa5?style=for-the-badge&logo=visual-studio-code" alt="Install in VS Code Insiders">](https://insiders.vscode.dev/redirect?url=vscode-insiders%3Amcp%2Finstall%3F%257B%2522name%2522%253A%2522browser%2522%252C%2522command%2522%253A%2522npx%2522%252C%2522args%2522%253A%255B%2522%2540darbotlabs%252Fdarbot-browser-mcp%2540latest%2522%255D%257D)
188
+ <details><summary><b>Install in VS Code (Automatic Setup)</b></summary>
145
189
 
190
+ **Recommended: Use the VS Code Extension for automatic setup!**
146
191
 
147
- <details><summary><b>Install in VS Code</b></summary>
192
+ The [Darbot Browser MCP Extension](https://marketplace.visualstudio.com/items?itemName=darbotlabs.darbot-browser-mcp) automatically handles all configuration:
148
193
 
149
- You can also install the Browser MCP server using the VS Code CLI:
194
+ 1. **Install from marketplace**: Search "Darbot Browser MCP" in VS Code extensions
195
+ 2. **Auto-configuration**: Extension prompts to enable MCP and configures the server
196
+ 3. **Start & Use**: Use Command Palette → "Darbot Browser MCP: Start Server"
197
+ 4. **Chat with Copilot**: Ask GitHub Copilot to "browse to example.com"
198
+
199
+ **Manual CLI installation (if you prefer):**
150
200
 
151
201
  ```bash
152
202
  # For VS Code
@@ -179,6 +229,7 @@ Go to `Cursor Settings` -> `MCP` -> `Add new MCP Server`. Name to your liking, u
179
229
  }
180
230
  }
181
231
  ```
232
+
182
233
  </details>
183
234
 
184
235
  <details>
@@ -198,6 +249,7 @@ Follow Windsuff MCP [documentation](https://docs.windsurf.com/windsurf/cascade/m
198
249
  }
199
250
  }
200
251
  ```
252
+
201
253
  </details>
202
254
 
203
255
  <details>
@@ -217,6 +269,7 @@ Follow the MCP install [guide](https://modelcontextprotocol.io/quickstart/user),
217
269
  }
218
270
  }
219
271
  ```
272
+
220
273
  </details>
221
274
 
222
275
  <details>
@@ -227,6 +280,7 @@ Use the Claude Code CLI to add the Browser MCP server:
227
280
  ```bash
228
281
  claude mcp add browser npx @darbotlabs/darbot-browser-mcp@latest
229
282
  ```
283
+
230
284
  </details>
231
285
 
232
286
  <details>
@@ -258,53 +312,69 @@ Browser MCP server supports following arguments. They can be provided in the JSO
258
312
 
259
313
  ```
260
314
  > npx darbot-browser-mcp@latest --help
261
- --allowed-origins <origins> semicolon-separated list of origins to allow the
262
- browser to request. Default is to allow all.
263
- --blocked-origins <origins> semicolon-separated list of origins to block the
264
- browser from requesting. Blocklist is evaluated
265
- before allowlist. If used without the allowlist,
266
- requests not matching the blocklist are still
267
- allowed.
268
- --block-service-workers block service workers
269
- --browser <browser> browser or chrome channel to use, possible
270
- values: msedge, chrome, firefox, webkit.
271
- --browser-agent <endpoint> Use browser agent (experimental).
272
- --caps <caps> comma-separated list of capabilities to enable,
273
- possible values: tabs, pdf, history, wait, files,
274
- install. Default is all.
275
- --cdp-endpoint <endpoint> CDP endpoint to connect to.
276
- --config <path> path to the configuration file.
277
- --device <device> device to emulate, for example: "iPhone 15"
278
- --executable-path <path> path to the browser executable.
279
- --headless run browser in headless mode, headed by default
280
- --host <host> host to bind server to. Default is localhost. Use
281
- 0.0.0.0 to bind to all interfaces.
282
- --ignore-https-errors ignore https errors
283
- --isolated keep the browser profile in memory, do not save
284
- it to disk.
285
- --image-responses <mode> whether to send image responses to the client.
286
- Can be "allow", "omit", or "auto". Defaults to
287
- "auto", which sends images if the client can
288
- display them.
289
- --no-sandbox disable the sandbox for all process types that
290
- are normally sandboxed.
291
- --output-dir <path> path to the directory for output files.
292
- --port <port> port to listen on for SSE transport.
293
- --proxy-bypass <bypass> comma-separated domains to bypass proxy, for
294
- example ".com,chromium.org,.domain.com"
295
- --proxy-server <proxy> specify proxy server, for example
296
- "http://myproxy:3128" or "socks5://myproxy:8080"
297
- --save-trace Whether to save the Playwright Trace of the
298
- session into the output directory.
299
- --storage-state <path> path to the storage state file for isolated
300
- sessions.
301
- --user-agent <ua string> specify user agent string
302
- --user-data-dir <path> path to the user data directory. If not
303
- specified, a temporary directory will be created.
304
- --viewport-size <size> specify browser viewport size in pixels, for
305
- example "1280, 720"
306
- --vision Run server that uses screenshots (Aria snapshots
307
- are used by default)
315
+ --allowed-origins <origins> semicolon-separated list of origins to allow the
316
+ browser to request. Default is to allow all.
317
+ --blocked-origins <origins> semicolon-separated list of origins to block the
318
+ browser from requesting. Blocklist is evaluated
319
+ before allowlist. If used without the allowlist,
320
+ requests not matching the blocklist are still
321
+ allowed.
322
+ --block-service-workers block service workers
323
+ --browser <browser> browser or chrome channel to use, possible
324
+ values: msedge, chrome, firefox, webkit.
325
+ --browser-agent <endpoint> Use browser agent (experimental).
326
+ --caps <caps> comma-separated list of capabilities to enable,
327
+ possible values: tabs, pdf, history, wait,
328
+ files, install. Default is all.
329
+ --cdp-endpoint <endpoint> CDP endpoint to connect to.
330
+ --config <path> path to the configuration file.
331
+ --device <device> device to emulate, for example: "iPhone 15"
332
+ --executable-path <path> path to the browser executable.
333
+ --headless run browser in headless mode, headed by default
334
+ --host <host> host to bind server to. Default is localhost.
335
+ Use 0.0.0.0 to bind to all interfaces.
336
+ --ignore-https-errors ignore https errors
337
+ --isolated keep the browser profile in memory, do not save
338
+ it to disk.
339
+ --image-responses <mode> whether to send image responses to the client.
340
+ Can be "allow", "omit", or "auto". Defaults to
341
+ "auto", which sends images if the client can
342
+ display them.
343
+ --no-sandbox disable the sandbox for all process types that
344
+ are normally sandboxed.
345
+ --output-dir <path> path to the directory for output files.
346
+ --port <port> port to listen on for SSE transport.
347
+ --proxy-bypass <bypass> comma-separated domains to bypass proxy, for
348
+ example ".com,chromium.org,.domain.com"
349
+ --proxy-server <proxy> specify proxy server, for example
350
+ "http://myproxy:3128" or "socks5://myproxy:8080"
351
+ --save-trace Whether to save the Playwright Trace of the
352
+ session into the output directory.
353
+ --storage-state <path> path to the storage state file for isolated
354
+ sessions.
355
+ --user-agent <ua string> specify user agent string
356
+ --user-data-dir <path> path to the user data directory. If not
357
+ specified, a temporary directory will be
358
+ created.
359
+ --viewport-size <size> specify browser viewport size in pixels, for
360
+ example "1280, 720"
361
+ --vision Run server that uses screenshots (Aria snapshots
362
+ are used by default)
363
+ --edge-profile <name> Edge profile name to use (e.g., "Profile 1",
364
+ "Default"). This is recorded in saved session
365
+ states.
366
+ --edge-profile-email <email> Email associated with the Edge profile. This is
367
+ recorded in saved session states for context.
368
+ --auto-sign-in Auto sign in with work/school account (Edge
369
+ profile preference)
370
+ --profile-switching Enable automatic profile switching based on site
371
+ (Edge profile preference)
372
+ --intranet-switch Automatically switch to work profile for
373
+ intranet sites (Edge profile preference)
374
+ --ie-mode-switch Automatically switch profile for IE mode sites
375
+ (Edge profile preference)
376
+ --default-profile <name> Default Edge profile for external links (Edge
377
+ profile preference)
308
378
  ```
309
379
 
310
380
  <!--- End of options generated section -->
@@ -438,6 +508,7 @@ npx @darbotlabs/darbot-browser-mcp@latest --config path/to/config.json
438
508
  noImageResponses?: boolean;
439
509
  }
440
510
  ```
511
+
441
512
  </details>
442
513
 
443
514
  ### Standalone MCP server
@@ -449,13 +520,13 @@ run the MCP server from environment with the DISPLAY and pass the `--port` flag
449
520
  npx @darbotlabs/darbot-browser-mcp@latest --port 8931
450
521
  ```
451
522
 
452
- And then in MCP client config, set the `url` to the SSE endpoint:
523
+ And then in MCP client config, set the `url` to the MCP endpoint:
453
524
 
454
525
  ```js
455
526
  {
456
527
  "mcpServers": {
457
528
  "playwright": {
458
- "url": "http://localhost:8931/sse"
529
+ "url": "http://localhost:8931/mcp"
459
530
  }
460
531
  }
461
532
  }
@@ -482,6 +553,7 @@ You can build the Docker image yourself.
482
553
  ```
483
554
  docker build -t mcr.microsoft.com/playwright/mcp .
484
555
  ```
556
+
485
557
  </details>
486
558
 
487
559
  <details>
@@ -504,6 +576,7 @@ http.createServer(async (req, res) => {
504
576
  // ...
505
577
  });
506
578
  ```
579
+
507
580
  </details>
508
581
 
509
582
  ### Tools
@@ -540,26 +613,27 @@ X Y coordinate space, based on the provided screenshot.
540
613
  <!-- NOTE: This has been generated via update-readme.js -->
541
614
 
542
615
  - **browser_snapshot**
543
- - Title: Page snapshot
544
- - Description: Capture accessibility snapshot of the current page, this is better than screenshot
616
+ - Title: Autonomous page snapshot
617
+ - Description: Autonomously capture a detailed accessibility snapshot of the current page for analysis. This provides structured page content better than a screenshot.
545
618
  - Parameters: None
546
619
  - Read-only: **true**
547
620
 
548
621
  <!-- NOTE: This has been generated via update-readme.js -->
549
622
 
550
623
  - **browser_click**
551
- - Title: Click
552
- - Description: Perform click on a web page
624
+ - Title: Autonomous click
625
+ - Description: Autonomously perform click interactions on web page elements
553
626
  - Parameters:
554
627
  - `element` (string): Human-readable element description used to obtain permission to interact with the element
555
628
  - `ref` (string): Exact target element reference from the page snapshot
629
+ - `doubleClick` (boolean, optional): Whether to perform a double click instead of a single click
556
630
  - Read-only: **false**
557
631
 
558
632
  <!-- NOTE: This has been generated via update-readme.js -->
559
633
 
560
634
  - **browser_drag**
561
- - Title: Drag mouse
562
- - Description: Perform drag and drop between two elements
635
+ - Title: Autonomous drag & drop
636
+ - Description: Autonomously perform drag and drop operations between web page elements
563
637
  - Parameters:
564
638
  - `startElement` (string): Human-readable source element description used to obtain the permission to interact with the element
565
639
  - `startRef` (string): Exact source element reference from the page snapshot
@@ -570,8 +644,8 @@ X Y coordinate space, based on the provided screenshot.
570
644
  <!-- NOTE: This has been generated via update-readme.js -->
571
645
 
572
646
  - **browser_hover**
573
- - Title: Hover mouse
574
- - Description: Hover over element on page
647
+ - Title: Autonomous hover
648
+ - Description: Autonomously hover over specific elements on the web page
575
649
  - Parameters:
576
650
  - `element` (string): Human-readable element description used to obtain permission to interact with the element
577
651
  - `ref` (string): Exact target element reference from the page snapshot
@@ -580,8 +654,8 @@ X Y coordinate space, based on the provided screenshot.
580
654
  <!-- NOTE: This has been generated via update-readme.js -->
581
655
 
582
656
  - **browser_type**
583
- - Title: Type text
584
- - Description: Type text into editable element
657
+ - Title: Autonomous text input
658
+ - Description: Autonomously type text into editable elements on the web page
585
659
  - Parameters:
586
660
  - `element` (string): Human-readable element description used to obtain permission to interact with the element
587
661
  - `ref` (string): Exact target element reference from the page snapshot
@@ -593,8 +667,8 @@ X Y coordinate space, based on the provided screenshot.
593
667
  <!-- NOTE: This has been generated via update-readme.js -->
594
668
 
595
669
  - **browser_select_option**
596
- - Title: Select option
597
- - Description: Select an option in a dropdown
670
+ - Title: Autonomous dropdown selection
671
+ - Description: Autonomously select options in dropdown menus on the web page
598
672
  - Parameters:
599
673
  - `element` (string): Human-readable element description used to obtain permission to interact with the element
600
674
  - `ref` (string): Exact target element reference from the page snapshot
@@ -604,8 +678,8 @@ X Y coordinate space, based on the provided screenshot.
604
678
  <!-- NOTE: This has been generated via update-readme.js -->
605
679
 
606
680
  - **browser_press_key**
607
- - Title: Press a key
608
- - Description: Press a key on the keyboard
681
+ - Title: Autonomous keyboard input
682
+ - Description: Autonomously press keys on the keyboard to interact with the web page
609
683
  - Parameters:
610
684
  - `key` (string): Name of the key to press or a character to generate, such as `ArrowLeft` or `a`
611
685
  - Read-only: **false**
@@ -613,8 +687,8 @@ X Y coordinate space, based on the provided screenshot.
613
687
  <!-- NOTE: This has been generated via update-readme.js -->
614
688
 
615
689
  - **browser_wait_for**
616
- - Title: Wait for
617
- - Description: Wait for text to appear or disappear or a specified time to pass
690
+ - Title: Autonomous wait conditions
691
+ - Description: Autonomously wait for specific conditions: text appearance, text disappearance, or time duration
618
692
  - Parameters:
619
693
  - `time` (number, optional): The time to wait in seconds
620
694
  - `text` (string, optional): The text to wait for
@@ -624,8 +698,8 @@ X Y coordinate space, based on the provided screenshot.
624
698
  <!-- NOTE: This has been generated via update-readme.js -->
625
699
 
626
700
  - **browser_file_upload**
627
- - Title: Upload files
628
- - Description: Upload one or multiple files
701
+ - Title: Autonomous file upload
702
+ - Description: Autonomously upload one or multiple files when a file chooser dialog appears
629
703
  - Parameters:
630
704
  - `paths` (array): The absolute paths to the files to upload. Can be a single file or multiple files.
631
705
  - Read-only: **false**
@@ -633,8 +707,8 @@ X Y coordinate space, based on the provided screenshot.
633
707
  <!-- NOTE: This has been generated via update-readme.js -->
634
708
 
635
709
  - **browser_handle_dialog**
636
- - Title: Handle a dialog
637
- - Description: Handle a dialog
710
+ - Title: Autonomous dialog handling
711
+ - Description: Autonomously handle browser dialog boxes (alerts, confirmations, prompts)
638
712
  - Parameters:
639
713
  - `accept` (boolean): Whether to accept the dialog.
640
714
  - `promptText` (string, optional): The text of the prompt in case of a prompt dialog.
@@ -649,7 +723,7 @@ X Y coordinate space, based on the provided screenshot.
649
723
 
650
724
  - **browser_navigate**
651
725
  - Title: Navigate to a URL
652
- - Description: Navigate to a URL
726
+ - Description: Autonomously navigate the browser to any URL. Use this command to launch and direct the browser to websites.
653
727
  - Parameters:
654
728
  - `url` (string): The URL to navigate to
655
729
  - Read-only: **false**
@@ -658,7 +732,7 @@ X Y coordinate space, based on the provided screenshot.
658
732
 
659
733
  - **browser_navigate_back**
660
734
  - Title: Go back
661
- - Description: Go back to the previous page
735
+ - Description: Autonomously navigate back to the previous page in browser history
662
736
  - Parameters: None
663
737
  - Read-only: **true**
664
738
 
@@ -666,7 +740,7 @@ X Y coordinate space, based on the provided screenshot.
666
740
 
667
741
  - **browser_navigate_forward**
668
742
  - Title: Go forward
669
- - Description: Go forward to the next page
743
+ - Description: Autonomously navigate forward to the next page in browser history
670
744
  - Parameters: None
671
745
  - Read-only: **true**
672
746
 
@@ -678,8 +752,8 @@ X Y coordinate space, based on the provided screenshot.
678
752
  <!-- NOTE: This has been generated via update-readme.js -->
679
753
 
680
754
  - **browser_take_screenshot**
681
- - Title: Take a screenshot
682
- - Description: Take a screenshot of the current page. You can't perform actions based on the screenshot, use browser_snapshot for actions.
755
+ - Title: Autonomous screenshot capture
756
+ - Description: Autonomously take visual screenshots of the current page or specific elements. Use browser_snapshot for structured page data instead of visual screenshots.
683
757
  - Parameters:
684
758
  - `raw` (boolean, optional): Whether to return without compression (in PNG format). Default is false, which returns a JPEG image.
685
759
  - `filename` (string, optional): File name to save the screenshot to. Defaults to `page-{timestamp}.{png|jpeg}` if not specified.
@@ -690,8 +764,8 @@ X Y coordinate space, based on the provided screenshot.
690
764
  <!-- NOTE: This has been generated via update-readme.js -->
691
765
 
692
766
  - **browser_pdf_save**
693
- - Title: Save as PDF
694
- - Description: Save page as PDF
767
+ - Title: Autonomous PDF generation
768
+ - Description: Autonomously save the current web page as a PDF document for archival or sharing
695
769
  - Parameters:
696
770
  - `filename` (string, optional): File name to save the pdf to. Defaults to `page-{timestamp}.pdf` if not specified.
697
771
  - Read-only: **true**
@@ -699,16 +773,16 @@ X Y coordinate space, based on the provided screenshot.
699
773
  <!-- NOTE: This has been generated via update-readme.js -->
700
774
 
701
775
  - **browser_network_requests**
702
- - Title: List network requests
703
- - Description: Returns all network requests since loading the page
776
+ - Title: Autonomous network monitoring
777
+ - Description: Autonomously capture and analyze all network requests made since page load for debugging
704
778
  - Parameters: None
705
779
  - Read-only: **true**
706
780
 
707
781
  <!-- NOTE: This has been generated via update-readme.js -->
708
782
 
709
783
  - **browser_console_messages**
710
- - Title: Get console messages
711
- - Description: Returns all console messages
784
+ - Title: Autonomous console monitoring
785
+ - Description: Autonomously retrieve all browser console messages for debugging and analysis
712
786
  - Parameters: None
713
787
  - Read-only: **true**
714
788
 
@@ -720,24 +794,24 @@ X Y coordinate space, based on the provided screenshot.
720
794
  <!-- NOTE: This has been generated via update-readme.js -->
721
795
 
722
796
  - **browser_install**
723
- - Title: Install the browser specified in the config
724
- - Description: Install the browser specified in the config. Call this if you get an error about the browser not being installed.
797
+ - Title: Autonomous browser installation
798
+ - Description: Autonomously install the required browser engine specified in configuration. Use this to resolve browser installation errors.
725
799
  - Parameters: None
726
800
  - Read-only: **false**
727
801
 
728
802
  <!-- NOTE: This has been generated via update-readme.js -->
729
803
 
730
804
  - **browser_close**
731
- - Title: Close browser
732
- - Description: Close the page
805
+ - Title: Autonomous browser closure
806
+ - Description: Autonomously close the browser session and terminate all operations
733
807
  - Parameters: None
734
808
  - Read-only: **true**
735
809
 
736
810
  <!-- NOTE: This has been generated via update-readme.js -->
737
811
 
738
812
  - **browser_resize**
739
- - Title: Resize browser window
740
- - Description: Resize the browser window
813
+ - Title: Autonomous window resizing
814
+ - Description: Autonomously resize the browser window to specific dimensions for optimal viewing
741
815
  - Parameters:
742
816
  - `width` (number): Width of the browser window
743
817
  - `height` (number): Height of the browser window
@@ -751,16 +825,16 @@ X Y coordinate space, based on the provided screenshot.
751
825
  <!-- NOTE: This has been generated via update-readme.js -->
752
826
 
753
827
  - **browser_tab_list**
754
- - Title: List tabs
755
- - Description: List browser tabs
828
+ - Title: Autonomous tab listing
829
+ - Description: Autonomously list all open browser tabs and their current status
756
830
  - Parameters: None
757
831
  - Read-only: **true**
758
832
 
759
833
  <!-- NOTE: This has been generated via update-readme.js -->
760
834
 
761
835
  - **browser_tab_new**
762
- - Title: Open a new tab
763
- - Description: Open a new tab
836
+ - Title: Autonomous new tab creation
837
+ - Description: Autonomously open a new browser tab, optionally navigating to a specified URL
764
838
  - Parameters:
765
839
  - `url` (string, optional): The URL to navigate to in the new tab. If not provided, the new tab will be blank.
766
840
  - Read-only: **true**
@@ -768,8 +842,8 @@ X Y coordinate space, based on the provided screenshot.
768
842
  <!-- NOTE: This has been generated via update-readme.js -->
769
843
 
770
844
  - **browser_tab_select**
771
- - Title: Select a tab
772
- - Description: Select a tab by index
845
+ - Title: Autonomous tab selection
846
+ - Description: Autonomously select and switch to a specific browser tab by index
773
847
  - Parameters:
774
848
  - `index` (number): The index of the tab to select
775
849
  - Read-only: **true**
@@ -777,8 +851,8 @@ X Y coordinate space, based on the provided screenshot.
777
851
  <!-- NOTE: This has been generated via update-readme.js -->
778
852
 
779
853
  - **browser_tab_close**
780
- - Title: Close a tab
781
- - Description: Close a tab
854
+ - Title: Autonomous tab closure
855
+ - Description: Autonomously close a browser tab by index, or close the current tab if no index specified
782
856
  - Parameters:
783
857
  - `index` (number, optional): The index of the tab to close. Closes current tab if not provided.
784
858
  - Read-only: **false**
@@ -786,42 +860,42 @@ X Y coordinate space, based on the provided screenshot.
786
860
  </details>
787
861
 
788
862
  <details>
789
- <summary><b>Work Profiles</b></summary>
863
+ <summary><b>Session States</b></summary>
790
864
 
791
865
  <!-- NOTE: This has been generated via update-readme.js -->
792
866
 
793
867
  - **browser_save_profile**
794
- - Title: Save Work Profile
795
- - Description: Save the current browser state as a work profile
868
+ - Title: Save session state
869
+ - Description: Save the current browser session state (cookies, localStorage, URL) for later restoration. Includes Edge profile and VS Code workspace context.
796
870
  - Parameters:
797
- - `name` (string): Name for the work profile
798
- - `description` (string, optional): Optional description for the work profile
871
+ - `name` (string): Name for the session state
872
+ - `description` (string, optional): Optional description for the session state
799
873
  - Read-only: **false**
800
874
 
801
875
  <!-- NOTE: This has been generated via update-readme.js -->
802
876
 
803
877
  - **browser_switch_profile**
804
- - Title: Switch Work Profile
805
- - Description: Switch to a saved work profile
878
+ - Title: Restore session state
879
+ - Description: Restore a previously saved session state, including cookies, localStorage, and navigate to the saved URL
806
880
  - Parameters:
807
- - `name` (string): Name of the work profile to switch to
881
+ - `name` (string): Name of the session state to restore
808
882
  - Read-only: **false**
809
883
 
810
884
  <!-- NOTE: This has been generated via update-readme.js -->
811
885
 
812
886
  - **browser_list_profiles**
813
- - Title: List Work Profiles
814
- - Description: List all saved work profiles
887
+ - Title: List session states
888
+ - Description: List all saved Darbot session states with their Edge profile context and workspace information
815
889
  - Parameters: None
816
890
  - Read-only: **true**
817
891
 
818
892
  <!-- NOTE: This has been generated via update-readme.js -->
819
893
 
820
894
  - **browser_delete_profile**
821
- - Title: Delete Work Profile
822
- - Description: Delete a saved work profile
895
+ - Title: Delete session state
896
+ - Description: Permanently delete a saved session state from storage
823
897
  - Parameters:
824
- - `name` (string): Name of the work profile to delete
898
+ - `name` (string): Name of the session state to delete
825
899
  - Read-only: **false**
826
900
 
827
901
  </details>
@@ -832,8 +906,8 @@ X Y coordinate space, based on the provided screenshot.
832
906
  <!-- NOTE: This has been generated via update-readme.js -->
833
907
 
834
908
  - **browser_generate_playwright_test**
835
- - Title: Generate a Playwright test
836
- - Description: Generate a Playwright test for given scenario
909
+ - Title: Autonomous test generation
910
+ - Description: Autonomously generate Playwright test code for browser automation scenarios and user workflows
837
911
  - Parameters:
838
912
  - `name` (string): The name of the test
839
913
  - `description` (string): The description of the test
@@ -901,8 +975,8 @@ X Y coordinate space, based on the provided screenshot.
901
975
  <!-- NOTE: This has been generated via update-readme.js -->
902
976
 
903
977
  - **browser_press_key**
904
- - Title: Press a key
905
- - Description: Press a key on the keyboard
978
+ - Title: Autonomous keyboard input
979
+ - Description: Autonomously press keys on the keyboard to interact with the web page
906
980
  - Parameters:
907
981
  - `key` (string): Name of the key to press or a character to generate, such as `ArrowLeft` or `a`
908
982
  - Read-only: **false**
@@ -910,8 +984,8 @@ X Y coordinate space, based on the provided screenshot.
910
984
  <!-- NOTE: This has been generated via update-readme.js -->
911
985
 
912
986
  - **browser_wait_for**
913
- - Title: Wait for
914
- - Description: Wait for text to appear or disappear or a specified time to pass
987
+ - Title: Autonomous wait conditions
988
+ - Description: Autonomously wait for specific conditions: text appearance, text disappearance, or time duration
915
989
  - Parameters:
916
990
  - `time` (number, optional): The time to wait in seconds
917
991
  - `text` (string, optional): The text to wait for
@@ -921,8 +995,8 @@ X Y coordinate space, based on the provided screenshot.
921
995
  <!-- NOTE: This has been generated via update-readme.js -->
922
996
 
923
997
  - **browser_file_upload**
924
- - Title: Upload files
925
- - Description: Upload one or multiple files
998
+ - Title: Autonomous file upload
999
+ - Description: Autonomously upload one or multiple files when a file chooser dialog appears
926
1000
  - Parameters:
927
1001
  - `paths` (array): The absolute paths to the files to upload. Can be a single file or multiple files.
928
1002
  - Read-only: **false**
@@ -930,8 +1004,8 @@ X Y coordinate space, based on the provided screenshot.
930
1004
  <!-- NOTE: This has been generated via update-readme.js -->
931
1005
 
932
1006
  - **browser_handle_dialog**
933
- - Title: Handle a dialog
934
- - Description: Handle a dialog
1007
+ - Title: Autonomous dialog handling
1008
+ - Description: Autonomously handle browser dialog boxes (alerts, confirmations, prompts)
935
1009
  - Parameters:
936
1010
  - `accept` (boolean): Whether to accept the dialog.
937
1011
  - `promptText` (string, optional): The text of the prompt in case of a prompt dialog.
@@ -945,29 +1019,46 @@ X Y coordinate space, based on the provided screenshot.
945
1019
  ## Package Formats
946
1020
 
947
1021
  ### NPM Package
1022
+
948
1023
  - **Name**: `@darbotlabs/darbot-browser-mcp`
949
1024
  - **Installation**: `npm install -g @darbotlabs/darbot-browser-mcp`
950
1025
  - **Usage**: `npx @darbotlabs/darbot-browser-mcp@latest`
951
1026
 
952
1027
  ### VS Code Extension
1028
+
953
1029
  - **Name**: Darbot Browser MCP
954
1030
  - **Publisher**: darbotlabs
955
1031
  - **Installation**: Search for "Darbot Browser MCP" in VS Code Extensions marketplace
956
1032
  - **Features**: Start/stop MCP server, status monitoring, configuration management
957
1033
 
958
1034
  ### NuGet Package (.NET)
1035
+
959
1036
  - **Name**: `DarbotLabs.Browser.MCP`
960
1037
  - **Installation**: `dotnet add package DarbotLabs.Browser.MCP`
961
1038
  - **Usage**: Host the Browser MCP server in .NET applications
962
1039
 
963
1040
  ### Browser Extension
1041
+
964
1042
  - **Name**: Browser MCP Bridge
965
1043
  - **Installation**: Available in Chrome Web Store (coming soon)
966
1044
  - **Features**: Share browser tabs with MCP server via CDP bridge
967
1045
 
968
1046
  ## Repository Structure
1047
+
969
1048
  - `/vscode-extension/` - VS Code extension source
970
1049
  - `/dotnet/` - .NET NuGet package source
971
1050
  - `/extension/` - Browser extension source
972
1051
  - `/src/` - Main MCP server source code
973
1052
  - `/tests/` - Test suite
1053
+
1054
+ ## Autonomous Features
1055
+
1056
+ For detailed information about the autonomous crawling capabilities, including memory system, BFS planner, guardrails, and reporting, see [AUTONOMOUS_FEATURES.md](./AUTONOMOUS_FEATURES.md).
1057
+
1058
+ **Key Autonomous Capabilities:**
1059
+
1060
+ - Intelligent BFS crawling with memory and state tracking
1061
+ - Darbot-memory-mcp integration for persistent memory
1062
+ - HTML report generation with screenshots and statistics
1063
+ - Configurable domain filtering and safety policies
1064
+