@darbotlabs/darbot-browser-mcp 0.2.0 → 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 +222 -161
  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 +28 -22
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,44 +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
50
  The extension **automatically configures the MCP server** when installed - just enable MCP in VS Code settings and start the server!
45
51
 
46
- [**📥 Install VS Code Extension**](https://marketplace.visualstudio.com/items?itemName=darbotlabs.darbot-browser-mcp)
52
+ [**Install VS Code Extension**](https://marketplace.visualstudio.com/items?itemName=darbotlabs.darbot-browser-mcp)
47
53
 
48
54
  **Quick Setup:**
55
+
49
56
  1. Install the extension from VS Code marketplace
50
57
  2. The extension will automatically prompt you to enable MCP and configure the server
51
- 3. Use Command Palette: "Darbot Browser MCP: Start Server"
58
+ 3. Use Command Palette: "Darbot Browser MCP: Start Server"
52
59
  4. Start chatting with GitHub Copilot using browser automation tools!
53
60
 
54
- ### 📚 NuGet Package (.NET)
61
+ ### NuGet Package (.NET)
62
+
55
63
  ```bash
56
64
  # Install for .NET projects
57
65
  dotnet add package DarbotLabs.Browser.MCP
58
66
  ```
59
67
 
60
- ### 🌐 Browser Extension
68
+ ### Browser Extension
69
+
61
70
  Install the **Browser MCP Bridge** extension from the Chrome Web Store to share browser tabs with the MCP server.
62
71
 
63
72
  ---
64
73
 
65
- ## 🎯 Why Choose Darbot Browser MCP?
74
+ ## Why Choose Darbot Browser MCP?
66
75
 
67
- | Traditional Browser Automation | 🤖 Darbot Browser MCP |
68
- |--------------------------------|------------------------|
69
- | Pixel-based, brittle selectors | AI-friendly accessibility snapshots |
70
- | Requires vision models | Pure structured data approach |
71
- | Complex setup and maintenance | Simple NPM install, ready in seconds |
72
- | Browser-specific code | Universal MCP protocol |
73
- | 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 |
74
83
 
75
- ### 🛠️ Complete Autonomous Toolkit (29 Tools)
84
+ ### Complete Autonomous Toolkit (52 Tools)
76
85
 
77
86
  <details>
78
- <summary><b>🔧 Core Autonomous Operations</b></summary>
87
+ <summary><b> Core Autonomous Operations</b></summary>
79
88
 
80
89
  - `browser_navigate` - Autonomously navigate to any URL
81
90
  - `browser_click` - Autonomous intelligent element clicking
@@ -86,12 +95,22 @@ Install the **Browser MCP Bridge** extension from the Chrome Web Store to share
86
95
  </details>
87
96
 
88
97
  <details>
89
- <summary><b>📁 Autonomous Work Profile Management</b></summary>
98
+ <summary><b>Autonomous Crawling & Intelligence</b></summary>
90
99
 
91
- - `browser_save_profile` - Autonomously save complete browser sessions
92
- - `browser_switch_profile` - Autonomously load saved profiles
93
- - `browser_list_profiles` - Autonomously manage all your profiles
94
- - `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
95
114
 
96
115
  </details>
97
116
 
@@ -105,7 +124,7 @@ Install the **Browser MCP Bridge** extension from the Chrome Web Store to share
105
124
  </details>
106
125
 
107
126
  <details>
108
- <summary><b>🗂️ Autonomous Tab Management</b></summary>
127
+ <summary><b>️ Autonomous Tab Management</b></summary>
109
128
 
110
129
  - `browser_tab_new` - Autonomously open new tabs
111
130
  - `browser_tab_list` - Autonomously get all open tabs
@@ -115,7 +134,7 @@ Install the **Browser MCP Bridge** extension from the Chrome Web Store to share
115
134
  </details>
116
135
 
117
136
  <details>
118
- <summary><b>🧪 Autonomous Testing & Development</b></summary>
137
+ <summary><b>Autonomous Testing & Development</b></summary>
119
138
 
120
139
  - `browser_generate_playwright_test` - Autonomously auto-generate test code
121
140
  - `browser_console_messages` - Autonomous debug with console access
@@ -123,24 +142,26 @@ Install the **Browser MCP Bridge** extension from the Chrome Web Store to share
123
142
 
124
143
  </details>
125
144
 
126
- [**📖 View All 29 Tools**](#tools)
145
+ [**View All 52 tools**](#tools)
127
146
 
128
147
  <!--
129
148
  // Generate using:
130
149
  node utils/generate-links.js
131
150
  -->
132
151
 
133
- ## 🚀 Getting Started
152
+ ## Getting Started
134
153
 
135
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.
136
155
 
137
- ### **🔌 VS Code (Automatic Setup)**
156
+ ### **VS Code (Automatic Setup)**
157
+
138
158
  1. Install the [VS Code Extension](https://marketplace.visualstudio.com/items?itemName=darbotlabs.darbot-browser-mcp)
139
159
  2. Extension auto-configures MCP settings
140
160
  3. Start the server via Command Palette
141
161
  4. Use with GitHub Copilot Chat!
142
162
 
143
- ### **⚙️ Manual Configuration (Other Clients)**
163
+ ### **Manual Configuration (Other Clients)**
164
+
144
165
  For Claude Desktop, Cursor, Windsurf, etc., add this configuration:
145
166
 
146
167
  ```js
@@ -156,18 +177,17 @@ For Claude Desktop, Cursor, Windsurf, etc., add this configuration:
156
177
  }
157
178
  ```
158
179
 
159
- ### 📱 Quick Install Buttons
180
+ ### Quick Install Buttons
160
181
 
161
- **🔌 VS Code (Automatic):**
182
+ **VS Code (Automatic):**
162
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)
163
184
 
164
- **⚙️ Manual Configuration:**
185
+ **Manual Configuration:**
165
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)
166
187
 
167
-
168
188
  <details><summary><b>Install in VS Code (Automatic Setup)</b></summary>
169
189
 
170
- **🚀 Recommended: Use the VS Code Extension for automatic setup!**
190
+ **Recommended: Use the VS Code Extension for automatic setup!**
171
191
 
172
192
  The [Darbot Browser MCP Extension](https://marketplace.visualstudio.com/items?itemName=darbotlabs.darbot-browser-mcp) automatically handles all configuration:
173
193
 
@@ -177,6 +197,7 @@ The [Darbot Browser MCP Extension](https://marketplace.visualstudio.com/items?it
177
197
  4. **Chat with Copilot**: Ask GitHub Copilot to "browse to example.com"
178
198
 
179
199
  **Manual CLI installation (if you prefer):**
200
+
180
201
  ```bash
181
202
  # For VS Code
182
203
  code --add-mcp '{"name":"browser","command":"npx","args":["@darbotlabs/darbot-browser-mcp@latest"]}'
@@ -208,6 +229,7 @@ Go to `Cursor Settings` -> `MCP` -> `Add new MCP Server`. Name to your liking, u
208
229
  }
209
230
  }
210
231
  ```
232
+
211
233
  </details>
212
234
 
213
235
  <details>
@@ -227,6 +249,7 @@ Follow Windsuff MCP [documentation](https://docs.windsurf.com/windsurf/cascade/m
227
249
  }
228
250
  }
229
251
  ```
252
+
230
253
  </details>
231
254
 
232
255
  <details>
@@ -246,6 +269,7 @@ Follow the MCP install [guide](https://modelcontextprotocol.io/quickstart/user),
246
269
  }
247
270
  }
248
271
  ```
272
+
249
273
  </details>
250
274
 
251
275
  <details>
@@ -256,6 +280,7 @@ Use the Claude Code CLI to add the Browser MCP server:
256
280
  ```bash
257
281
  claude mcp add browser npx @darbotlabs/darbot-browser-mcp@latest
258
282
  ```
283
+
259
284
  </details>
260
285
 
261
286
  <details>
@@ -287,53 +312,69 @@ Browser MCP server supports following arguments. They can be provided in the JSO
287
312
 
288
313
  ```
289
314
  > npx darbot-browser-mcp@latest --help
290
- --allowed-origins <origins> semicolon-separated list of origins to allow the
291
- browser to request. Default is to allow all.
292
- --blocked-origins <origins> semicolon-separated list of origins to block the
293
- browser from requesting. Blocklist is evaluated
294
- before allowlist. If used without the allowlist,
295
- requests not matching the blocklist are still
296
- allowed.
297
- --block-service-workers block service workers
298
- --browser <browser> browser or chrome channel to use, possible
299
- values: msedge, chrome, firefox, webkit.
300
- --browser-agent <endpoint> Use browser agent (experimental).
301
- --caps <caps> comma-separated list of capabilities to enable,
302
- possible values: tabs, pdf, history, wait, files,
303
- install. Default is all.
304
- --cdp-endpoint <endpoint> CDP endpoint to connect to.
305
- --config <path> path to the configuration file.
306
- --device <device> device to emulate, for example: "iPhone 15"
307
- --executable-path <path> path to the browser executable.
308
- --headless run browser in headless mode, headed by default
309
- --host <host> host to bind server to. Default is localhost. Use
310
- 0.0.0.0 to bind to all interfaces.
311
- --ignore-https-errors ignore https errors
312
- --isolated keep the browser profile in memory, do not save
313
- it to disk.
314
- --image-responses <mode> whether to send image responses to the client.
315
- Can be "allow", "omit", or "auto". Defaults to
316
- "auto", which sends images if the client can
317
- display them.
318
- --no-sandbox disable the sandbox for all process types that
319
- are normally sandboxed.
320
- --output-dir <path> path to the directory for output files.
321
- --port <port> port to listen on for SSE transport.
322
- --proxy-bypass <bypass> comma-separated domains to bypass proxy, for
323
- example ".com,chromium.org,.domain.com"
324
- --proxy-server <proxy> specify proxy server, for example
325
- "http://myproxy:3128" or "socks5://myproxy:8080"
326
- --save-trace Whether to save the Playwright Trace of the
327
- session into the output directory.
328
- --storage-state <path> path to the storage state file for isolated
329
- sessions.
330
- --user-agent <ua string> specify user agent string
331
- --user-data-dir <path> path to the user data directory. If not
332
- specified, a temporary directory will be created.
333
- --viewport-size <size> specify browser viewport size in pixels, for
334
- example "1280, 720"
335
- --vision Run server that uses screenshots (Aria snapshots
336
- 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)
337
378
  ```
338
379
 
339
380
  <!--- End of options generated section -->
@@ -467,6 +508,7 @@ npx @darbotlabs/darbot-browser-mcp@latest --config path/to/config.json
467
508
  noImageResponses?: boolean;
468
509
  }
469
510
  ```
511
+
470
512
  </details>
471
513
 
472
514
  ### Standalone MCP server
@@ -478,13 +520,13 @@ run the MCP server from environment with the DISPLAY and pass the `--port` flag
478
520
  npx @darbotlabs/darbot-browser-mcp@latest --port 8931
479
521
  ```
480
522
 
481
- 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:
482
524
 
483
525
  ```js
484
526
  {
485
527
  "mcpServers": {
486
528
  "playwright": {
487
- "url": "http://localhost:8931/sse"
529
+ "url": "http://localhost:8931/mcp"
488
530
  }
489
531
  }
490
532
  }
@@ -511,6 +553,7 @@ You can build the Docker image yourself.
511
553
  ```
512
554
  docker build -t mcr.microsoft.com/playwright/mcp .
513
555
  ```
556
+
514
557
  </details>
515
558
 
516
559
  <details>
@@ -533,6 +576,7 @@ http.createServer(async (req, res) => {
533
576
  // ...
534
577
  });
535
578
  ```
579
+
536
580
  </details>
537
581
 
538
582
  ### Tools
@@ -569,16 +613,16 @@ X Y coordinate space, based on the provided screenshot.
569
613
  <!-- NOTE: This has been generated via update-readme.js -->
570
614
 
571
615
  - **browser_snapshot**
572
- - Title: Page snapshot
573
- - 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.
574
618
  - Parameters: None
575
619
  - Read-only: **true**
576
620
 
577
621
  <!-- NOTE: This has been generated via update-readme.js -->
578
622
 
579
623
  - **browser_click**
580
- - Title: Click
581
- - Description: Perform click on a web page
624
+ - Title: Autonomous click
625
+ - Description: Autonomously perform click interactions on web page elements
582
626
  - Parameters:
583
627
  - `element` (string): Human-readable element description used to obtain permission to interact with the element
584
628
  - `ref` (string): Exact target element reference from the page snapshot
@@ -588,8 +632,8 @@ X Y coordinate space, based on the provided screenshot.
588
632
  <!-- NOTE: This has been generated via update-readme.js -->
589
633
 
590
634
  - **browser_drag**
591
- - Title: Drag mouse
592
- - 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
593
637
  - Parameters:
594
638
  - `startElement` (string): Human-readable source element description used to obtain the permission to interact with the element
595
639
  - `startRef` (string): Exact source element reference from the page snapshot
@@ -600,8 +644,8 @@ X Y coordinate space, based on the provided screenshot.
600
644
  <!-- NOTE: This has been generated via update-readme.js -->
601
645
 
602
646
  - **browser_hover**
603
- - Title: Hover mouse
604
- - Description: Hover over element on page
647
+ - Title: Autonomous hover
648
+ - Description: Autonomously hover over specific elements on the web page
605
649
  - Parameters:
606
650
  - `element` (string): Human-readable element description used to obtain permission to interact with the element
607
651
  - `ref` (string): Exact target element reference from the page snapshot
@@ -610,8 +654,8 @@ X Y coordinate space, based on the provided screenshot.
610
654
  <!-- NOTE: This has been generated via update-readme.js -->
611
655
 
612
656
  - **browser_type**
613
- - Title: Type text
614
- - Description: Type text into editable element
657
+ - Title: Autonomous text input
658
+ - Description: Autonomously type text into editable elements on the web page
615
659
  - Parameters:
616
660
  - `element` (string): Human-readable element description used to obtain permission to interact with the element
617
661
  - `ref` (string): Exact target element reference from the page snapshot
@@ -623,8 +667,8 @@ X Y coordinate space, based on the provided screenshot.
623
667
  <!-- NOTE: This has been generated via update-readme.js -->
624
668
 
625
669
  - **browser_select_option**
626
- - Title: Select option
627
- - Description: Select an option in a dropdown
670
+ - Title: Autonomous dropdown selection
671
+ - Description: Autonomously select options in dropdown menus on the web page
628
672
  - Parameters:
629
673
  - `element` (string): Human-readable element description used to obtain permission to interact with the element
630
674
  - `ref` (string): Exact target element reference from the page snapshot
@@ -634,8 +678,8 @@ X Y coordinate space, based on the provided screenshot.
634
678
  <!-- NOTE: This has been generated via update-readme.js -->
635
679
 
636
680
  - **browser_press_key**
637
- - Title: Press a key
638
- - 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
639
683
  - Parameters:
640
684
  - `key` (string): Name of the key to press or a character to generate, such as `ArrowLeft` or `a`
641
685
  - Read-only: **false**
@@ -643,8 +687,8 @@ X Y coordinate space, based on the provided screenshot.
643
687
  <!-- NOTE: This has been generated via update-readme.js -->
644
688
 
645
689
  - **browser_wait_for**
646
- - Title: Wait for
647
- - 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
648
692
  - Parameters:
649
693
  - `time` (number, optional): The time to wait in seconds
650
694
  - `text` (string, optional): The text to wait for
@@ -654,8 +698,8 @@ X Y coordinate space, based on the provided screenshot.
654
698
  <!-- NOTE: This has been generated via update-readme.js -->
655
699
 
656
700
  - **browser_file_upload**
657
- - Title: Upload files
658
- - 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
659
703
  - Parameters:
660
704
  - `paths` (array): The absolute paths to the files to upload. Can be a single file or multiple files.
661
705
  - Read-only: **false**
@@ -663,8 +707,8 @@ X Y coordinate space, based on the provided screenshot.
663
707
  <!-- NOTE: This has been generated via update-readme.js -->
664
708
 
665
709
  - **browser_handle_dialog**
666
- - Title: Handle a dialog
667
- - Description: Handle a dialog
710
+ - Title: Autonomous dialog handling
711
+ - Description: Autonomously handle browser dialog boxes (alerts, confirmations, prompts)
668
712
  - Parameters:
669
713
  - `accept` (boolean): Whether to accept the dialog.
670
714
  - `promptText` (string, optional): The text of the prompt in case of a prompt dialog.
@@ -679,7 +723,7 @@ X Y coordinate space, based on the provided screenshot.
679
723
 
680
724
  - **browser_navigate**
681
725
  - Title: Navigate to a URL
682
- - 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.
683
727
  - Parameters:
684
728
  - `url` (string): The URL to navigate to
685
729
  - Read-only: **false**
@@ -688,7 +732,7 @@ X Y coordinate space, based on the provided screenshot.
688
732
 
689
733
  - **browser_navigate_back**
690
734
  - Title: Go back
691
- - Description: Go back to the previous page
735
+ - Description: Autonomously navigate back to the previous page in browser history
692
736
  - Parameters: None
693
737
  - Read-only: **true**
694
738
 
@@ -696,7 +740,7 @@ X Y coordinate space, based on the provided screenshot.
696
740
 
697
741
  - **browser_navigate_forward**
698
742
  - Title: Go forward
699
- - Description: Go forward to the next page
743
+ - Description: Autonomously navigate forward to the next page in browser history
700
744
  - Parameters: None
701
745
  - Read-only: **true**
702
746
 
@@ -708,8 +752,8 @@ X Y coordinate space, based on the provided screenshot.
708
752
  <!-- NOTE: This has been generated via update-readme.js -->
709
753
 
710
754
  - **browser_take_screenshot**
711
- - Title: Take a screenshot
712
- - 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.
713
757
  - Parameters:
714
758
  - `raw` (boolean, optional): Whether to return without compression (in PNG format). Default is false, which returns a JPEG image.
715
759
  - `filename` (string, optional): File name to save the screenshot to. Defaults to `page-{timestamp}.{png|jpeg}` if not specified.
@@ -720,8 +764,8 @@ X Y coordinate space, based on the provided screenshot.
720
764
  <!-- NOTE: This has been generated via update-readme.js -->
721
765
 
722
766
  - **browser_pdf_save**
723
- - Title: Save as PDF
724
- - 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
725
769
  - Parameters:
726
770
  - `filename` (string, optional): File name to save the pdf to. Defaults to `page-{timestamp}.pdf` if not specified.
727
771
  - Read-only: **true**
@@ -729,16 +773,16 @@ X Y coordinate space, based on the provided screenshot.
729
773
  <!-- NOTE: This has been generated via update-readme.js -->
730
774
 
731
775
  - **browser_network_requests**
732
- - Title: List network requests
733
- - 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
734
778
  - Parameters: None
735
779
  - Read-only: **true**
736
780
 
737
781
  <!-- NOTE: This has been generated via update-readme.js -->
738
782
 
739
783
  - **browser_console_messages**
740
- - Title: Get console messages
741
- - Description: Returns all console messages
784
+ - Title: Autonomous console monitoring
785
+ - Description: Autonomously retrieve all browser console messages for debugging and analysis
742
786
  - Parameters: None
743
787
  - Read-only: **true**
744
788
 
@@ -750,24 +794,24 @@ X Y coordinate space, based on the provided screenshot.
750
794
  <!-- NOTE: This has been generated via update-readme.js -->
751
795
 
752
796
  - **browser_install**
753
- - Title: Install the browser specified in the config
754
- - 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.
755
799
  - Parameters: None
756
800
  - Read-only: **false**
757
801
 
758
802
  <!-- NOTE: This has been generated via update-readme.js -->
759
803
 
760
804
  - **browser_close**
761
- - Title: Close browser
762
- - Description: Close the page
805
+ - Title: Autonomous browser closure
806
+ - Description: Autonomously close the browser session and terminate all operations
763
807
  - Parameters: None
764
808
  - Read-only: **true**
765
809
 
766
810
  <!-- NOTE: This has been generated via update-readme.js -->
767
811
 
768
812
  - **browser_resize**
769
- - Title: Resize browser window
770
- - Description: Resize the browser window
813
+ - Title: Autonomous window resizing
814
+ - Description: Autonomously resize the browser window to specific dimensions for optimal viewing
771
815
  - Parameters:
772
816
  - `width` (number): Width of the browser window
773
817
  - `height` (number): Height of the browser window
@@ -781,16 +825,16 @@ X Y coordinate space, based on the provided screenshot.
781
825
  <!-- NOTE: This has been generated via update-readme.js -->
782
826
 
783
827
  - **browser_tab_list**
784
- - Title: List tabs
785
- - Description: List browser tabs
828
+ - Title: Autonomous tab listing
829
+ - Description: Autonomously list all open browser tabs and their current status
786
830
  - Parameters: None
787
831
  - Read-only: **true**
788
832
 
789
833
  <!-- NOTE: This has been generated via update-readme.js -->
790
834
 
791
835
  - **browser_tab_new**
792
- - Title: Open a new tab
793
- - 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
794
838
  - Parameters:
795
839
  - `url` (string, optional): The URL to navigate to in the new tab. If not provided, the new tab will be blank.
796
840
  - Read-only: **true**
@@ -798,8 +842,8 @@ X Y coordinate space, based on the provided screenshot.
798
842
  <!-- NOTE: This has been generated via update-readme.js -->
799
843
 
800
844
  - **browser_tab_select**
801
- - Title: Select a tab
802
- - Description: Select a tab by index
845
+ - Title: Autonomous tab selection
846
+ - Description: Autonomously select and switch to a specific browser tab by index
803
847
  - Parameters:
804
848
  - `index` (number): The index of the tab to select
805
849
  - Read-only: **true**
@@ -807,8 +851,8 @@ X Y coordinate space, based on the provided screenshot.
807
851
  <!-- NOTE: This has been generated via update-readme.js -->
808
852
 
809
853
  - **browser_tab_close**
810
- - Title: Close a tab
811
- - 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
812
856
  - Parameters:
813
857
  - `index` (number, optional): The index of the tab to close. Closes current tab if not provided.
814
858
  - Read-only: **false**
@@ -816,42 +860,42 @@ X Y coordinate space, based on the provided screenshot.
816
860
  </details>
817
861
 
818
862
  <details>
819
- <summary><b>Work Profiles</b></summary>
863
+ <summary><b>Session States</b></summary>
820
864
 
821
865
  <!-- NOTE: This has been generated via update-readme.js -->
822
866
 
823
867
  - **browser_save_profile**
824
- - Title: Save Work Profile
825
- - 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.
826
870
  - Parameters:
827
- - `name` (string): Name for the work profile
828
- - `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
829
873
  - Read-only: **false**
830
874
 
831
875
  <!-- NOTE: This has been generated via update-readme.js -->
832
876
 
833
877
  - **browser_switch_profile**
834
- - Title: Switch Work Profile
835
- - 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
836
880
  - Parameters:
837
- - `name` (string): Name of the work profile to switch to
881
+ - `name` (string): Name of the session state to restore
838
882
  - Read-only: **false**
839
883
 
840
884
  <!-- NOTE: This has been generated via update-readme.js -->
841
885
 
842
886
  - **browser_list_profiles**
843
- - Title: List Work Profiles
844
- - 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
845
889
  - Parameters: None
846
890
  - Read-only: **true**
847
891
 
848
892
  <!-- NOTE: This has been generated via update-readme.js -->
849
893
 
850
894
  - **browser_delete_profile**
851
- - Title: Delete Work Profile
852
- - Description: Delete a saved work profile
895
+ - Title: Delete session state
896
+ - Description: Permanently delete a saved session state from storage
853
897
  - Parameters:
854
- - `name` (string): Name of the work profile to delete
898
+ - `name` (string): Name of the session state to delete
855
899
  - Read-only: **false**
856
900
 
857
901
  </details>
@@ -862,8 +906,8 @@ X Y coordinate space, based on the provided screenshot.
862
906
  <!-- NOTE: This has been generated via update-readme.js -->
863
907
 
864
908
  - **browser_generate_playwright_test**
865
- - Title: Generate a Playwright test
866
- - 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
867
911
  - Parameters:
868
912
  - `name` (string): The name of the test
869
913
  - `description` (string): The description of the test
@@ -931,8 +975,8 @@ X Y coordinate space, based on the provided screenshot.
931
975
  <!-- NOTE: This has been generated via update-readme.js -->
932
976
 
933
977
  - **browser_press_key**
934
- - Title: Press a key
935
- - 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
936
980
  - Parameters:
937
981
  - `key` (string): Name of the key to press or a character to generate, such as `ArrowLeft` or `a`
938
982
  - Read-only: **false**
@@ -940,8 +984,8 @@ X Y coordinate space, based on the provided screenshot.
940
984
  <!-- NOTE: This has been generated via update-readme.js -->
941
985
 
942
986
  - **browser_wait_for**
943
- - Title: Wait for
944
- - 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
945
989
  - Parameters:
946
990
  - `time` (number, optional): The time to wait in seconds
947
991
  - `text` (string, optional): The text to wait for
@@ -951,8 +995,8 @@ X Y coordinate space, based on the provided screenshot.
951
995
  <!-- NOTE: This has been generated via update-readme.js -->
952
996
 
953
997
  - **browser_file_upload**
954
- - Title: Upload files
955
- - 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
956
1000
  - Parameters:
957
1001
  - `paths` (array): The absolute paths to the files to upload. Can be a single file or multiple files.
958
1002
  - Read-only: **false**
@@ -960,8 +1004,8 @@ X Y coordinate space, based on the provided screenshot.
960
1004
  <!-- NOTE: This has been generated via update-readme.js -->
961
1005
 
962
1006
  - **browser_handle_dialog**
963
- - Title: Handle a dialog
964
- - Description: Handle a dialog
1007
+ - Title: Autonomous dialog handling
1008
+ - Description: Autonomously handle browser dialog boxes (alerts, confirmations, prompts)
965
1009
  - Parameters:
966
1010
  - `accept` (boolean): Whether to accept the dialog.
967
1011
  - `promptText` (string, optional): The text of the prompt in case of a prompt dialog.
@@ -975,29 +1019,46 @@ X Y coordinate space, based on the provided screenshot.
975
1019
  ## Package Formats
976
1020
 
977
1021
  ### NPM Package
1022
+
978
1023
  - **Name**: `@darbotlabs/darbot-browser-mcp`
979
1024
  - **Installation**: `npm install -g @darbotlabs/darbot-browser-mcp`
980
1025
  - **Usage**: `npx @darbotlabs/darbot-browser-mcp@latest`
981
1026
 
982
1027
  ### VS Code Extension
1028
+
983
1029
  - **Name**: Darbot Browser MCP
984
1030
  - **Publisher**: darbotlabs
985
1031
  - **Installation**: Search for "Darbot Browser MCP" in VS Code Extensions marketplace
986
1032
  - **Features**: Start/stop MCP server, status monitoring, configuration management
987
1033
 
988
1034
  ### NuGet Package (.NET)
1035
+
989
1036
  - **Name**: `DarbotLabs.Browser.MCP`
990
1037
  - **Installation**: `dotnet add package DarbotLabs.Browser.MCP`
991
1038
  - **Usage**: Host the Browser MCP server in .NET applications
992
1039
 
993
1040
  ### Browser Extension
1041
+
994
1042
  - **Name**: Browser MCP Bridge
995
1043
  - **Installation**: Available in Chrome Web Store (coming soon)
996
1044
  - **Features**: Share browser tabs with MCP server via CDP bridge
997
1045
 
998
1046
  ## Repository Structure
1047
+
999
1048
  - `/vscode-extension/` - VS Code extension source
1000
1049
  - `/dotnet/` - .NET NuGet package source
1001
1050
  - `/extension/` - Browser extension source
1002
1051
  - `/src/` - Main MCP server source code
1003
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
+