@weavetab/mcp 2.5.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +48 -0
- package/ARCHITECTURE.md +590 -0
- package/LICENSE +631 -0
- package/README.md +909 -0
- package/SECURITY.md +196 -0
- package/TROUBLESHOOTING.md +365 -0
- package/dist/anticaptcha/detector.d.ts +49 -0
- package/dist/anticaptcha/detector.js +465 -0
- package/dist/anticaptcha/integration.d.ts +36 -0
- package/dist/anticaptcha/integration.js +123 -0
- package/dist/anticaptcha/solver.d.ts +27 -0
- package/dist/anticaptcha/solver.js +552 -0
- package/dist/audit/logger.d.ts +13 -0
- package/dist/audit/logger.js +177 -0
- package/dist/audit/telemetry.d.ts +36 -0
- package/dist/audit/telemetry.js +162 -0
- package/dist/cdp/bridge.d.ts +16 -0
- package/dist/cdp/bridge.js +826 -0
- package/dist/cdp/confirm.d.ts +26 -0
- package/dist/cdp/confirm.js +79 -0
- package/dist/cdp/connector.d.ts +37 -0
- package/dist/cdp/connector.js +661 -0
- package/dist/cdp/extension.d.ts +36 -0
- package/dist/cdp/extension.js +118 -0
- package/dist/cdp/finder.d.ts +1 -0
- package/dist/cdp/finder.js +2 -0
- package/dist/cdp/helpers.d.ts +11 -0
- package/dist/cdp/helpers.js +195 -0
- package/dist/cdp/label_cache.d.ts +12 -0
- package/dist/cdp/label_cache.js +51 -0
- package/dist/cdp/lock.d.ts +33 -0
- package/dist/cdp/lock.js +206 -0
- package/dist/cdp/omni_broker.d.ts +17 -0
- package/dist/cdp/omni_broker.js +119 -0
- package/dist/cdp/profiles.d.ts +1 -0
- package/dist/cdp/profiles.js +87 -0
- package/dist/cdp/pruner.d.ts +41 -0
- package/dist/cdp/pruner.js +263 -0
- package/dist/cdp/ref_cache.d.ts +101 -0
- package/dist/cdp/ref_cache.js +234 -0
- package/dist/cdp/retry.d.ts +5 -0
- package/dist/cdp/retry.js +39 -0
- package/dist/cdp/retry_enhanced.d.ts +44 -0
- package/dist/cdp/retry_enhanced.js +102 -0
- package/dist/cdp/security.d.ts +50 -0
- package/dist/cdp/security.js +237 -0
- package/dist/cdp/verify.d.ts +39 -0
- package/dist/cdp/verify.js +143 -0
- package/dist/cdp/walker.d.ts +91 -0
- package/dist/cdp/walker.js +896 -0
- package/dist/cdp/walker.test.d.ts +2 -0
- package/dist/cdp/walker.test.js +172 -0
- package/dist/cdp/websocket_transport.d.ts +15 -0
- package/dist/cdp/websocket_transport.js +118 -0
- package/dist/cli/plugin.d.ts +9 -0
- package/dist/cli/plugin.js +1134 -0
- package/dist/cli/updater.d.ts +1 -0
- package/dist/cli/updater.js +72 -0
- package/dist/config/loader.d.ts +120 -0
- package/dist/config/loader.js +704 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1248 -0
- package/dist/intelligence/hints.d.ts +11 -0
- package/dist/intelligence/hints.js +39 -0
- package/dist/intelligence/intent.d.ts +33 -0
- package/dist/intelligence/intent.js +171 -0
- package/dist/intelligence/sessionMemory.d.ts +66 -0
- package/dist/intelligence/sessionMemory.js +284 -0
- package/dist/intelligence/sessionMemory.test.d.ts +2 -0
- package/dist/intelligence/sessionMemory.test.js +62 -0
- package/dist/intelligence/trail.d.ts +64 -0
- package/dist/intelligence/trail.js +233 -0
- package/dist/intelligence/trail.test.d.ts +2 -0
- package/dist/intelligence/trail.test.js +110 -0
- package/dist/intelligence/vision.d.ts +24 -0
- package/dist/intelligence/vision.js +151 -0
- package/dist/lifecycle/mission_manager.d.ts +16 -0
- package/dist/lifecycle/mission_manager.js +44 -0
- package/dist/overlay/bubble.d.ts +16 -0
- package/dist/overlay/bubble.js +37 -0
- package/dist/overlay/ghost.d.ts +35 -0
- package/dist/overlay/ghost.js +508 -0
- package/dist/overlay/injector.d.ts +22 -0
- package/dist/overlay/injector.js +198 -0
- package/dist/plugin/interface.d.ts +134 -0
- package/dist/plugin/interface.js +1 -0
- package/dist/plugin/loader.d.ts +18 -0
- package/dist/plugin/loader.js +155 -0
- package/dist/plugin/registry.d.ts +50 -0
- package/dist/plugin/registry.js +234 -0
- package/dist/security/blacklist.d.ts +24 -0
- package/dist/security/blacklist.js +80 -0
- package/dist/security/filter.d.ts +2 -0
- package/dist/security/filter.js +20 -0
- package/dist/security/guard.d.ts +8 -0
- package/dist/security/guard.js +35 -0
- package/dist/security/ratelimit.d.ts +11 -0
- package/dist/security/ratelimit.js +57 -0
- package/dist/security/secrets.d.ts +75 -0
- package/dist/security/secrets.js +365 -0
- package/dist/sensors/actionability.d.ts +81 -0
- package/dist/sensors/actionability.js +303 -0
- package/dist/sensors/guard.d.ts +25 -0
- package/dist/sensors/guard.js +168 -0
- package/dist/sensors/mutations.d.ts +23 -0
- package/dist/sensors/mutations.js +93 -0
- package/dist/sensors/network.d.ts +67 -0
- package/dist/sensors/network.js +193 -0
- package/dist/sensors/operation_monitor.d.ts +80 -0
- package/dist/sensors/operation_monitor.js +203 -0
- package/dist/sensors/pacing.d.ts +44 -0
- package/dist/sensors/pacing.js +111 -0
- package/dist/sensors/thoughts.d.ts +2 -0
- package/dist/sensors/thoughts.js +59 -0
- package/dist/sensors/wait.d.ts +12 -0
- package/dist/sensors/wait.js +44 -0
- package/dist/server.d.ts +7 -0
- package/dist/server.js +1687 -0
- package/dist/state/agent.d.ts +36 -0
- package/dist/state/agent.js +101 -0
- package/dist/state/cache.d.ts +16 -0
- package/dist/state/cache.js +92 -0
- package/dist/state/cache.test.d.ts +2 -0
- package/dist/state/cache.test.js +76 -0
- package/dist/state/delta.d.ts +71 -0
- package/dist/state/delta.js +234 -0
- package/dist/state/delta.test.d.ts +2 -0
- package/dist/state/delta.test.js +279 -0
- package/dist/state/groups.d.ts +15 -0
- package/dist/state/groups.js +80 -0
- package/dist/state/session.d.ts +30 -0
- package/dist/state/session.js +155 -0
- package/dist/tools/accessibility.d.ts +14 -0
- package/dist/tools/accessibility.js +32 -0
- package/dist/tools/ask.d.ts +14 -0
- package/dist/tools/ask.js +49 -0
- package/dist/tools/automation.d.ts +36 -0
- package/dist/tools/automation.js +218 -0
- package/dist/tools/browser_detect.d.ts +13 -0
- package/dist/tools/browser_detect.js +73 -0
- package/dist/tools/burst.d.ts +35 -0
- package/dist/tools/burst.js +344 -0
- package/dist/tools/canvas.d.ts +25 -0
- package/dist/tools/canvas.js +132 -0
- package/dist/tools/captcha.d.ts +38 -0
- package/dist/tools/captcha.js +209 -0
- package/dist/tools/click.d.ts +36 -0
- package/dist/tools/click.js +561 -0
- package/dist/tools/click_and_wait.d.ts +33 -0
- package/dist/tools/click_and_wait.js +149 -0
- package/dist/tools/clipboard.d.ts +29 -0
- package/dist/tools/clipboard.js +279 -0
- package/dist/tools/console.d.ts +21 -0
- package/dist/tools/console.js +107 -0
- package/dist/tools/cookies.d.ts +67 -0
- package/dist/tools/cookies.js +121 -0
- package/dist/tools/design_extract.d.ts +109 -0
- package/dist/tools/design_extract.js +641 -0
- package/dist/tools/dialog.d.ts +24 -0
- package/dist/tools/dialog.js +109 -0
- package/dist/tools/drag.d.ts +15 -0
- package/dist/tools/drag.js +29 -0
- package/dist/tools/emulation.d.ts +33 -0
- package/dist/tools/emulation.js +69 -0
- package/dist/tools/eval.d.ts +20 -0
- package/dist/tools/eval.js +92 -0
- package/dist/tools/fill.d.ts +41 -0
- package/dist/tools/fill.js +667 -0
- package/dist/tools/find.d.ts +30 -0
- package/dist/tools/find.js +60 -0
- package/dist/tools/geo.d.ts +19 -0
- package/dist/tools/geo.js +29 -0
- package/dist/tools/github/analyze.d.ts +4 -0
- package/dist/tools/github/analyze.js +113 -0
- package/dist/tools/github/cache.d.ts +21 -0
- package/dist/tools/github/cache.js +28 -0
- package/dist/tools/github/index.d.ts +4 -0
- package/dist/tools/github/index.js +4 -0
- package/dist/tools/github/issues.d.ts +9 -0
- package/dist/tools/github/issues.js +88 -0
- package/dist/tools/github/pr.d.ts +5 -0
- package/dist/tools/github/pr.js +88 -0
- package/dist/tools/github/rateLimiter.d.ts +4 -0
- package/dist/tools/github/rateLimiter.js +46 -0
- package/dist/tools/github/read.d.ts +34 -0
- package/dist/tools/github/read.js +74 -0
- package/dist/tools/github/repoContext.d.ts +20 -0
- package/dist/tools/github/repoContext.js +129 -0
- package/dist/tools/highlight.d.ts +20 -0
- package/dist/tools/highlight.js +140 -0
- package/dist/tools/hover.d.ts +19 -0
- package/dist/tools/hover.js +57 -0
- package/dist/tools/inspect.d.ts +17 -0
- package/dist/tools/inspect.js +125 -0
- package/dist/tools/integration.test.d.ts +2 -0
- package/dist/tools/integration.test.js +96 -0
- package/dist/tools/key.d.ts +25 -0
- package/dist/tools/key.js +173 -0
- package/dist/tools/macro_compiler.d.ts +7 -0
- package/dist/tools/macro_compiler.js +82 -0
- package/dist/tools/mouse.d.ts +21 -0
- package/dist/tools/mouse.js +62 -0
- package/dist/tools/navigate.d.ts +16 -0
- package/dist/tools/navigate.js +188 -0
- package/dist/tools/network_intercept.d.ts +17 -0
- package/dist/tools/network_intercept.js +151 -0
- package/dist/tools/office/index.d.ts +9 -0
- package/dist/tools/office/index.js +7 -0
- package/dist/tools/office/list.d.ts +15 -0
- package/dist/tools/office/list.js +41 -0
- package/dist/tools/office/parse.d.ts +20 -0
- package/dist/tools/office/parse.js +172 -0
- package/dist/tools/pdf.d.ts +22 -0
- package/dist/tools/pdf.js +42 -0
- package/dist/tools/performance.d.ts +12 -0
- package/dist/tools/performance.js +47 -0
- package/dist/tools/performance_test.d.ts +70 -0
- package/dist/tools/performance_test.js +128 -0
- package/dist/tools/plan.d.ts +39 -0
- package/dist/tools/plan.js +161 -0
- package/dist/tools/pointer.d.ts +35 -0
- package/dist/tools/pointer.js +522 -0
- package/dist/tools/read.d.ts +30 -0
- package/dist/tools/read.js +488 -0
- package/dist/tools/recording.d.ts +45 -0
- package/dist/tools/recording.js +124 -0
- package/dist/tools/response.d.ts +129 -0
- package/dist/tools/response.js +5 -0
- package/dist/tools/scrape.d.ts +24 -0
- package/dist/tools/scrape.js +140 -0
- package/dist/tools/screenshot.d.ts +40 -0
- package/dist/tools/screenshot.js +79 -0
- package/dist/tools/scroll.d.ts +23 -0
- package/dist/tools/scroll.js +196 -0
- package/dist/tools/select.d.ts +13 -0
- package/dist/tools/select.js +217 -0
- package/dist/tools/snapshot.d.ts +27 -0
- package/dist/tools/snapshot.js +99 -0
- package/dist/tools/storage.d.ts +18 -0
- package/dist/tools/storage.js +29 -0
- package/dist/tools/tabs.d.ts +77 -0
- package/dist/tools/tabs.js +342 -0
- package/dist/tools/thought.d.ts +16 -0
- package/dist/tools/thought.js +79 -0
- package/dist/tools/type.d.ts +65 -0
- package/dist/tools/type.js +1061 -0
- package/dist/tools/type_secret.d.ts +23 -0
- package/dist/tools/type_secret.js +229 -0
- package/dist/tools/upload.d.ts +19 -0
- package/dist/tools/upload.js +103 -0
- package/dist/tools/video_compiler.d.ts +24 -0
- package/dist/tools/video_compiler.js +199 -0
- package/dist/tools/viewport.d.ts +44 -0
- package/dist/tools/viewport.js +230 -0
- package/dist/tools/wait.d.ts +19 -0
- package/dist/tools/wait.js +202 -0
- package/dist/tools/wait_for.d.ts +23 -0
- package/dist/tools/wait_for.js +30 -0
- package/dist/tools/windows.d.ts +22 -0
- package/dist/tools/windows.js +57 -0
- package/dist/ui/index.d.ts +1 -0
- package/dist/ui/index.js +12 -0
- package/docs/DEV_MODE.md +68 -0
- package/docs/DOCUMENTATION.md +532 -0
- package/docs/PLUGINS.md +538 -0
- package/docs/TOOLS.md +104 -0
- package/docs/dev_plugin.md +310 -0
- package/ext-dist/background.js +467 -0
- package/ext-dist/content.js +3089 -0
- package/ext-dist/dashboard.html +583 -0
- package/ext-dist/hud/hud.js +73 -0
- package/ext-dist/hud/index.html +20 -0
- package/ext-dist/manifest.json +77 -0
- package/ext-dist/sidepanel/sidepanel.js +25 -0
- package/ext-dist/sidepanel.html +547 -0
- package/ext-dist/styles.css +218 -0
- package/icon.png +0 -0
- package/mcp.json +796 -0
- package/package.json +113 -0
- package/server.json +23 -0
- package/smithery.yaml +11 -0
package/docs/PLUGINS.md
ADDED
|
@@ -0,0 +1,538 @@
|
|
|
1
|
+
# Weavetab Plugin System Architecture & Developer Guide
|
|
2
|
+
|
|
3
|
+
The **Weavetab Plugin System** is an enterprise-grade extension platform designed for the Model Context Protocol (MCP). It allows developers and enterprises to seamlessly extend, customize, and harden Weavetab's browser automation runtime.
|
|
4
|
+
|
|
5
|
+
Unlike rigid toolkits, Weavetab plugins can:
|
|
6
|
+
1. **Add New Tools**: Expose custom domain tools (e.g., Notion synchronization, Jira automation, SEO audits).
|
|
7
|
+
2. **Override & Wrap Built-in Tools**: Intercept and augment native Weavetab tools (e.g., `eval_plus` upgrading `browser_eval` with a sandboxed TypeScript engine and calling `originalHandler`).
|
|
8
|
+
3. **Remove & Disable Built-in Tools**: Enforce zero-trust enterprise lockdown by stripping dangerous or redundant tools (e.g., disabling `browser_inspect`, `browser_cookies`, or `browser_eval` in restricted production environments).
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## 1. 3-Tier Security & Trust Hierarchy
|
|
13
|
+
|
|
14
|
+
Weavetab enforces a strict, defense-in-depth trust model across all installed plugins.
|
|
15
|
+
|
|
16
|
+
```mermaid
|
|
17
|
+
flowchart TD
|
|
18
|
+
subgraph Tiers ["Weavetab Trust Tiers"]
|
|
19
|
+
direction TB
|
|
20
|
+
T1[" ✚ Official Tier\n(@weavetab/plugin-*)"]
|
|
21
|
+
T2[" ✔ Verified Community Tier\n(Listed in verified.json)"]
|
|
22
|
+
T3[" ⚠ Unverified Community Tier\n(Arbitrary NPM packages)"]
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
T1 -->|Full Trust| R1["Instant Activation · Audited Code · Zero Warnings"]
|
|
26
|
+
T2 -->|Vetted Trust| R2["Safe Installation · Verified by Weavetab Maintainers"]
|
|
27
|
+
T3 -->|Zero Trust| R3["Security Warning Banner · Interactive Confirmation · Tool Audit"]
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
| Trust Tier | Scope / Criteria | Security Status | CLI Badge |
|
|
31
|
+
| :--- | :--- | :--- | :--- |
|
|
32
|
+
| **Official** | Published under `@weavetab/plugin-*` | Built, maintained, and cryptographically verified by the Weavetab Core Team. | `✚ [Official]` |
|
|
33
|
+
| **Verified Community** | Any NPM package listed in [`registry/verified.json`](file:///c:/Users/fy2ne/Music/Weavetab/registry/verified.json) | Community package reviewed and audited by Weavetab maintainers. | `✔ [Verified]` |
|
|
34
|
+
| **Unverified Community** | Any arbitrary NPM package containing a `weavetab.json` manifest | Unvetted third-party package. Prompts the operator with an interactive security audit before installation. | `⚠ [Unverified]` |
|
|
35
|
+
|
|
36
|
+
> [!IMPORTANT]
|
|
37
|
+
> **Universal Package Naming**: Plugins are **not** restricted to `weavetab-plugin-*` naming. Any NPM package containing a valid `weavetab.json` manifest at its root is automatically recognized, parsed, and registered by Weavetab.
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## 2. Candidate Disambiguation Engine
|
|
42
|
+
|
|
43
|
+
When installing a plugin via short name (e.g., `wt plugin add n8n-wt`), Weavetab queries both official scoped shortcuts and community packages in parallel:
|
|
44
|
+
|
|
45
|
+
* **Official Candidate**: `@weavetab/plugin-<name>` (First-party team package)
|
|
46
|
+
* **Community Candidate**: `<name>` (Community NPM package)
|
|
47
|
+
|
|
48
|
+
```mermaid
|
|
49
|
+
flowchart TD
|
|
50
|
+
A["wt plugin add n8n-wt"] --> B{Explicit Scope (@...)?}
|
|
51
|
+
B -->|Yes| C["Direct Installation"]
|
|
52
|
+
B -->|No| D["Query Candidates in Parallel"]
|
|
53
|
+
|
|
54
|
+
D --> E["1. @weavetab/plugin-n8n-wt (Official)"]
|
|
55
|
+
D --> F["2. n8n-wt (Community Registry / NPM)"]
|
|
56
|
+
|
|
57
|
+
E & F --> G{Both exist on NPM?}
|
|
58
|
+
|
|
59
|
+
G -->|Yes| H["Interactive Disambiguation Prompt"]
|
|
60
|
+
G -->|Only Official| I["Install @weavetab/plugin-n8n-wt"]
|
|
61
|
+
G -->|Only Community| J["Install n8n-wt"]
|
|
62
|
+
|
|
63
|
+
H -->|Selects Official| I
|
|
64
|
+
H -->|Selects Community| J
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Disambiguation CLI Selector
|
|
68
|
+
```text
|
|
69
|
+
╭────────────────────────────────────────────────────────────────────────╮
|
|
70
|
+
│ Multiple packages found for "n8n-wt". Which one do you want to install?│
|
|
71
|
+
╰────────────────────────────────────────────────────────────────────────╯
|
|
72
|
+
|
|
73
|
+
● @weavetab/plugin-n8n-wt [Official] (Made by the Weavetab team)
|
|
74
|
+
○ n8n-wt [Verified] (Community plugin in verified registry)
|
|
75
|
+
○ n8n-wt [Unverified] (Third-party community package on npm)
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
> [!TIP]
|
|
79
|
+
> **CI/CD Automation Flags**:
|
|
80
|
+
> * `wt plugin add <name> --official` (or `-O`): Forces installation of `@weavetab/plugin-<name>`.
|
|
81
|
+
> * `wt plugin add <name> --community` (or `-C`): Forces installation of community package `<name>`.
|
|
82
|
+
> * `wt plugin add <name> --yes` (or `-y`): Bypasses interactive confirmation for unverified plugins in CI environments.
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## 3. Tool Lifecycle & Capabilities
|
|
87
|
+
|
|
88
|
+
Weavetab plugins provide full programmatic control over the MCP tool registry.
|
|
89
|
+
|
|
90
|
+
```mermaid
|
|
91
|
+
flowchart LR
|
|
92
|
+
P["Plugin Runtime"] --> A["1. Add New Tools\n(plugin.tools)"]
|
|
93
|
+
P --> B["2. Override Tools\n(plugin.overrides)"]
|
|
94
|
+
P --> C["3. Remove Tools\n(plugin.removeTools)"]
|
|
95
|
+
|
|
96
|
+
A --> M["MCP Tool Registry"]
|
|
97
|
+
B --> M
|
|
98
|
+
C --> M
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### A. Tool Additions (`tools`)
|
|
102
|
+
Plugins can introduce brand new capabilities with full Zod schema validation:
|
|
103
|
+
|
|
104
|
+
```typescript
|
|
105
|
+
import { z } from "zod";
|
|
106
|
+
import type { WeavetabPlugin } from "./interface.js";
|
|
107
|
+
|
|
108
|
+
const plugin: WeavetabPlugin = {
|
|
109
|
+
name: "notion_sync",
|
|
110
|
+
version: "1.0.0",
|
|
111
|
+
tools: [
|
|
112
|
+
{
|
|
113
|
+
name: "notion_create_page",
|
|
114
|
+
description: "Creates a new structured documentation page in Notion",
|
|
115
|
+
schema: {
|
|
116
|
+
title: z.string().describe("The title of the Notion page"),
|
|
117
|
+
content: z.string().describe("Markdown content for the body"),
|
|
118
|
+
},
|
|
119
|
+
handler: async (args, session, config) => {
|
|
120
|
+
// Full access to Chrome DevTools Protocol session and Weavetab config
|
|
121
|
+
return { success: true, url: "https://notion.so/my-page" };
|
|
122
|
+
},
|
|
123
|
+
},
|
|
124
|
+
],
|
|
125
|
+
};
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
### B. Tool Overrides & Wrapping (`overrides`)
|
|
131
|
+
A plugin can intercept, augment, or completely replace built-in tools. When overriding, the plugin receives an optional `originalHandler` function to chain or wrap the base tool execution:
|
|
132
|
+
|
|
133
|
+
```typescript
|
|
134
|
+
import { z } from "zod";
|
|
135
|
+
import type { WeavetabPlugin } from "./interface.js";
|
|
136
|
+
|
|
137
|
+
const evalPlusPlugin: WeavetabPlugin = {
|
|
138
|
+
name: "eval_plus",
|
|
139
|
+
version: "2.1.0",
|
|
140
|
+
overrides: [
|
|
141
|
+
{
|
|
142
|
+
name: "browser_eval",
|
|
143
|
+
description: "High-performance TypeScript & Sandboxed JavaScript runtime for browser evaluation",
|
|
144
|
+
schema: {
|
|
145
|
+
code: z.string().describe("TypeScript or JS code to evaluate"),
|
|
146
|
+
sandbox: z.boolean().optional().describe("Execute in isolated sandbox"),
|
|
147
|
+
},
|
|
148
|
+
handler: async (args, session, config, originalHandler) => {
|
|
149
|
+
// Pre-processing: transpile TypeScript to JavaScript
|
|
150
|
+
const transpiledCode = transpileTypeScript(args.code);
|
|
151
|
+
|
|
152
|
+
if (!args.sandbox && originalHandler) {
|
|
153
|
+
// Pass execution down to Weavetab's native browser_eval handler
|
|
154
|
+
return await originalHandler({ code: transpiledCode }, session, config);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
// Custom sandboxed execution via isolated CDP execution context
|
|
158
|
+
const result = await runInIsolatedWorld(session, transpiledCode);
|
|
159
|
+
return { success: true, sandboxed: true, result };
|
|
160
|
+
},
|
|
161
|
+
},
|
|
162
|
+
],
|
|
163
|
+
};
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
### C. Tool Removals (`removeTools`)
|
|
169
|
+
For enterprise compliance, zero-trust environments, or locked-down production agents, plugins can completely unregister built-in tools:
|
|
170
|
+
|
|
171
|
+
```typescript
|
|
172
|
+
import type { WeavetabPlugin } from "./interface.js";
|
|
173
|
+
|
|
174
|
+
const enterpriseLockdown: WeavetabPlugin = {
|
|
175
|
+
name: "enterprise_security_lockdown",
|
|
176
|
+
version: "1.0.0",
|
|
177
|
+
removeTools: [
|
|
178
|
+
"browser_eval", // Disable arbitrary script evaluation
|
|
179
|
+
"browser_cookies", // Prevent cookie extraction
|
|
180
|
+
"browser_storage", // Prevent storage inspection
|
|
181
|
+
"browser_inspect", // Prevent raw source tree dumps
|
|
182
|
+
],
|
|
183
|
+
};
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
> [!CAUTION]
|
|
187
|
+
> When a tool is removed by a plugin, it is permanently deleted from the MCP Server tool registry during that session. Any agent attempting to invoke a removed tool will receive a tool-not-found error.
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
## 4. Manifest Specification (`weavetab.json`)
|
|
192
|
+
|
|
193
|
+
Every plugin package must include a `weavetab.json` file in its root directory. This manifest acts as the security contract for the plugin.
|
|
194
|
+
|
|
195
|
+
### Complete Manifest Schema
|
|
196
|
+
```json
|
|
197
|
+
{
|
|
198
|
+
"$schema": "https://weavetab.dev/schema/plugin.json",
|
|
199
|
+
"name": "eval_plus",
|
|
200
|
+
"version": "2.1.0",
|
|
201
|
+
"description": "Enterprise TypeScript evaluation engine and runtime sandbox for Weavetab",
|
|
202
|
+
"authors": [
|
|
203
|
+
{
|
|
204
|
+
"name": "Acme Security Labs",
|
|
205
|
+
"role": "Lead Architect",
|
|
206
|
+
"url": "https://github.com/acme"
|
|
207
|
+
}
|
|
208
|
+
],
|
|
209
|
+
"logo": "images/logo.svg",
|
|
210
|
+
"banner": "images/banner.svg",
|
|
211
|
+
"license": "MIT",
|
|
212
|
+
"tags": ["Security", "Sandbox", "TypeScript", "MCP"],
|
|
213
|
+
"compatibility": {
|
|
214
|
+
"weavetab": "^2.5.0",
|
|
215
|
+
"node": ">=18.0.0"
|
|
216
|
+
},
|
|
217
|
+
"tools": [
|
|
218
|
+
{
|
|
219
|
+
"name": "browser_eval_ts",
|
|
220
|
+
"description": "Evaluates pure TypeScript files in browser context",
|
|
221
|
+
"inputSchema": {
|
|
222
|
+
"type": "object",
|
|
223
|
+
"properties": {
|
|
224
|
+
"code": {
|
|
225
|
+
"type": "string",
|
|
226
|
+
"description": "TypeScript code string to transpile and evaluate"
|
|
227
|
+
}
|
|
228
|
+
},
|
|
229
|
+
"required": ["code"]
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
],
|
|
233
|
+
"permissions": {
|
|
234
|
+
"network": {
|
|
235
|
+
"domains": ["*.acme.corp"],
|
|
236
|
+
"reason": "Required to transpile TypeScript compiler modules on-demand"
|
|
237
|
+
},
|
|
238
|
+
"cdp": {
|
|
239
|
+
"evaluate": true,
|
|
240
|
+
"click": true,
|
|
241
|
+
"reason": "Required to inject transpiled bytecode into isolated CDP contexts"
|
|
242
|
+
},
|
|
243
|
+
"fs": {
|
|
244
|
+
"read": ["./types/*"],
|
|
245
|
+
"reason": "Reads local TypeScript declaration definitions"
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
### Manifest Fields Reference
|
|
252
|
+
|
|
253
|
+
| Field | Type | Required | Description |
|
|
254
|
+
| :--- | :--- | :--- | :--- |
|
|
255
|
+
| `name` | `string` | **Yes** | Display or package name. |
|
|
256
|
+
| `version` | `string` | **Yes** | Semantic version string (`1.0.0`). |
|
|
257
|
+
| `description` | `string` | Recommended | Human-readable description of plugin capabilities. |
|
|
258
|
+
| `authors` | `array` | **Yes** | Authors array with custom roles ($\ge 3$ chars) and optional GitHub/NPM profile URLs for auto avatar resolution. |
|
|
259
|
+
| `logo` | `string` | Optional | Path to local logo asset (e.g. `images/logo.svg`). |
|
|
260
|
+
| `banner` | `string` | Optional | Path to local banner asset (e.g. `images/banner.svg`). |
|
|
261
|
+
| `compatibility` | `object` | Optional | Runtime version compatibility (`weavetab` and `node`). |
|
|
262
|
+
| `tools` | `array` | Optional | List of exposed MCP tools registered by this plugin. |
|
|
263
|
+
| `permissions` | `object` | Optional | Explicit security scopes and human-readable justification reasons. |
|
|
264
|
+
|
|
265
|
+
> [!TIP]
|
|
266
|
+
> For a full step-by-step tutorial on building plugins from scratch, see [Developer Plugin Guide](file:///c:/Users/fy2ne/Music/Weavetab/docs/dev_plugin.md).
|
|
267
|
+
|
|
268
|
+
---
|
|
269
|
+
|
|
270
|
+
## 5. CLI Plugin Command Suite
|
|
271
|
+
|
|
272
|
+
Weavetab provides a dedicated CLI suite (`wt plugin`) for managing plugins, discovering packages, auditing security, and generating manifests.
|
|
273
|
+
|
|
274
|
+
### 1. `wt plugin add <package>`
|
|
275
|
+
Installs a plugin into the local environment with automatic candidate resolution and trust auditing.
|
|
276
|
+
|
|
277
|
+
```bash
|
|
278
|
+
# Install via short name (resolves official @weavetab/plugin-vision or vision)
|
|
279
|
+
wt plugin add vision
|
|
280
|
+
|
|
281
|
+
# Install explicit community package
|
|
282
|
+
wt plugin add eval_plus
|
|
283
|
+
|
|
284
|
+
# Non-interactive installation for CI/CD
|
|
285
|
+
wt plugin add eval_plus --yes
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
If an unverified package requests tool modifications, a security warning is displayed:
|
|
289
|
+
|
|
290
|
+
```text
|
|
291
|
+
╭───────────────────────────────────────────────────────────────────╮
|
|
292
|
+
│ ⚠️ SECURITY WARNING: UNVERIFIED COMMUNITY PLUGIN │
|
|
293
|
+
│ │
|
|
294
|
+
│ Package "eval_plus" is NOT verified by Weavetab. │
|
|
295
|
+
│ It is an unvetted third-party package and may potentially contain:│
|
|
296
|
+
│ • Arbitrary code execution during installation or runtime │
|
|
297
|
+
│ • CDP browser control (evaluating scripts, session access) │
|
|
298
|
+
│ • Tool overrides / removals │
|
|
299
|
+
│ │
|
|
300
|
+
│ Install and run this plugin strictly at your own risk! │
|
|
301
|
+
╰───────────────────────────────────────────────────────────────────╯
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
---
|
|
305
|
+
|
|
306
|
+
### 2. `wt plugin browse`
|
|
307
|
+
Opens an interactive, terminal-based marketplace explorer to discover official and verified community plugins with 1-click installation.
|
|
308
|
+
|
|
309
|
+
```bash
|
|
310
|
+
wt plugin browse
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
---
|
|
314
|
+
|
|
315
|
+
### 3. `wt plugin search [query]`
|
|
316
|
+
Live search across both the Weavetab Verified Registry and NPM for plugins matching the search query.
|
|
317
|
+
|
|
318
|
+
```bash
|
|
319
|
+
wt plugin search accessibility
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
---
|
|
323
|
+
|
|
324
|
+
### 4. `wt plugin verify <package>`
|
|
325
|
+
Audits the trust tier, verification status, and declared permissions of any package before installation.
|
|
326
|
+
|
|
327
|
+
```bash
|
|
328
|
+
wt plugin verify @weavetab/plugin-n8n-wt
|
|
329
|
+
wt plugin verify eval_plus
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
---
|
|
333
|
+
|
|
334
|
+
### 5. `wt plugin list`
|
|
335
|
+
Lists all installed plugins in the active Weavetab environment, displaying versions, trust tiers, and exposed/overridden tools.
|
|
336
|
+
|
|
337
|
+
```bash
|
|
338
|
+
wt plugin list
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
---
|
|
342
|
+
|
|
343
|
+
### 6. `wt plugin remove <package>`
|
|
344
|
+
Uninstalls a plugin from `node_modules`.
|
|
345
|
+
|
|
346
|
+
```bash
|
|
347
|
+
wt plugin remove eval_plus
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
---
|
|
351
|
+
|
|
352
|
+
### 7. `wt plugin init`
|
|
353
|
+
Interactive CLI wizard that introspects your plugin source code and generates a standardized `weavetab.json` manifest.
|
|
354
|
+
|
|
355
|
+
```bash
|
|
356
|
+
wt plugin init
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
The wizard prompts for:
|
|
360
|
+
1. Plugin ID and package metadata
|
|
361
|
+
2. Network, CDP, and File System access requirements
|
|
362
|
+
3. Tool override and removal specifications
|
|
363
|
+
|
|
364
|
+
---
|
|
365
|
+
|
|
366
|
+
## 6. Step-by-Step Plugin Authoring Guide
|
|
367
|
+
|
|
368
|
+
### Step 1: Initialize Project
|
|
369
|
+
```bash
|
|
370
|
+
mkdir wt-eval-plus
|
|
371
|
+
cd wt-eval-plus
|
|
372
|
+
npm init -y
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
### Step 2: Configure `package.json`
|
|
376
|
+
```json
|
|
377
|
+
{
|
|
378
|
+
"name": "eval_plus",
|
|
379
|
+
"version": "1.0.0",
|
|
380
|
+
"type": "module",
|
|
381
|
+
"main": "dist/index.js",
|
|
382
|
+
"scripts": {
|
|
383
|
+
"build": "tsc"
|
|
384
|
+
},
|
|
385
|
+
"dependencies": {
|
|
386
|
+
"zod": "^3.23.8"
|
|
387
|
+
},
|
|
388
|
+
"devDependencies": {
|
|
389
|
+
"typescript": "^5.4.0",
|
|
390
|
+
"@types/node": "^20.0.0"
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
```
|
|
394
|
+
|
|
395
|
+
### Step 3: Implement Plugin Entry (`src/index.ts`)
|
|
396
|
+
```typescript
|
|
397
|
+
import { z } from "zod";
|
|
398
|
+
|
|
399
|
+
export default {
|
|
400
|
+
name: "eval_plus",
|
|
401
|
+
version: "1.0.0",
|
|
402
|
+
description: "Enhanced evaluation with TypeScript and sandbox support",
|
|
403
|
+
|
|
404
|
+
// 1. Tool Additions
|
|
405
|
+
tools: [
|
|
406
|
+
{
|
|
407
|
+
name: "browser_eval_ts",
|
|
408
|
+
description: "Compile and evaluate TypeScript code in page context",
|
|
409
|
+
schema: {
|
|
410
|
+
code: z.string().describe("TypeScript code string"),
|
|
411
|
+
},
|
|
412
|
+
handler: async (args, session, config) => {
|
|
413
|
+
// Compile TypeScript to JS
|
|
414
|
+
const js = compileTS(args.code);
|
|
415
|
+
const { result } = await session.Runtime.evaluate({
|
|
416
|
+
expression: js,
|
|
417
|
+
returnByValue: true,
|
|
418
|
+
});
|
|
419
|
+
return { value: result.value };
|
|
420
|
+
},
|
|
421
|
+
},
|
|
422
|
+
],
|
|
423
|
+
|
|
424
|
+
// 2. Tool Overrides (Wrapping built-in browser_eval)
|
|
425
|
+
overrides: [
|
|
426
|
+
{
|
|
427
|
+
name: "browser_eval",
|
|
428
|
+
description: "Enhanced browser_eval with pre-execution safety filters",
|
|
429
|
+
schema: {
|
|
430
|
+
expression: z.string().describe("JavaScript expression"),
|
|
431
|
+
},
|
|
432
|
+
handler: async (args, session, config, originalHandler) => {
|
|
433
|
+
if (args.expression.includes("localStorage.clear()")) {
|
|
434
|
+
throw new Error("[SECURITY] localStorage wiping blocked by eval_plus");
|
|
435
|
+
}
|
|
436
|
+
if (originalHandler) {
|
|
437
|
+
return await originalHandler(args, session, config);
|
|
438
|
+
}
|
|
439
|
+
return { success: true };
|
|
440
|
+
},
|
|
441
|
+
},
|
|
442
|
+
],
|
|
443
|
+
|
|
444
|
+
// 3. Tool Removals
|
|
445
|
+
removeTools: ["browser_inspect"],
|
|
446
|
+
|
|
447
|
+
// 4. Lifecycle Hooks
|
|
448
|
+
onLoad: async () => {
|
|
449
|
+
process.stderr.write("[eval_plus] Initialized sandbox engine successfully.\n");
|
|
450
|
+
},
|
|
451
|
+
onUnload: async () => {
|
|
452
|
+
process.stderr.write("[eval_plus] Sandbox engine cleaned up.\n");
|
|
453
|
+
},
|
|
454
|
+
};
|
|
455
|
+
|
|
456
|
+
function compileTS(tsCode: string): string {
|
|
457
|
+
// Simple transpile logic or compiler integration
|
|
458
|
+
return tsCode;
|
|
459
|
+
}
|
|
460
|
+
```
|
|
461
|
+
|
|
462
|
+
### Step 4: Generate Manifest
|
|
463
|
+
Run `npx weavetab init` or create `weavetab.json`:
|
|
464
|
+
```json
|
|
465
|
+
{
|
|
466
|
+
"$schema": "https://weavetab.dev/schema/plugin.json",
|
|
467
|
+
"name": "eval_plus",
|
|
468
|
+
"version": "1.0.0",
|
|
469
|
+
"description": "Enhanced evaluation with TypeScript and sandbox support",
|
|
470
|
+
"authors": [
|
|
471
|
+
{
|
|
472
|
+
"name": "Acme Security Labs",
|
|
473
|
+
"role": "Lead Architect",
|
|
474
|
+
"url": "https://github.com/acme"
|
|
475
|
+
}
|
|
476
|
+
],
|
|
477
|
+
"permissions": {
|
|
478
|
+
"network": {
|
|
479
|
+
"domains": ["*.acme.corp"],
|
|
480
|
+
"reason": "Required to transpile TypeScript compiler modules on-demand"
|
|
481
|
+
},
|
|
482
|
+
"cdp": {
|
|
483
|
+
"evaluate": true,
|
|
484
|
+
"click": true,
|
|
485
|
+
"reason": "Required to inject transpiled bytecode into isolated CDP contexts"
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
```
|
|
490
|
+
|
|
491
|
+
### Step 5: Build and Validate Plugin
|
|
492
|
+
```bash
|
|
493
|
+
npx weavetab build
|
|
494
|
+
```
|
|
495
|
+
This runs TypeScript compilation, introspects exported MCP tools, audits permissions, and verifies manifest integrity.
|
|
496
|
+
|
|
497
|
+
In your Weavetab project directory:
|
|
498
|
+
```bash
|
|
499
|
+
npm link eval_plus
|
|
500
|
+
wt plugin list
|
|
501
|
+
```
|
|
502
|
+
|
|
503
|
+
---
|
|
504
|
+
|
|
505
|
+
## 7. Performance Profiling via `devMode`
|
|
506
|
+
|
|
507
|
+
To benchmark plugin performance and ensure sub-millisecond execution overhead:
|
|
508
|
+
|
|
509
|
+
1. Enable Developer Mode: `WEAVETAB_DEV=1 wt start` (or set `"devMode": true` in `~/.weavetab/config.json`).
|
|
510
|
+
2. Run your tool.
|
|
511
|
+
3. Weavetab measures and records execution duration in real time:
|
|
512
|
+
```json
|
|
513
|
+
{
|
|
514
|
+
"success": true,
|
|
515
|
+
"execution_ms": 14,
|
|
516
|
+
"result": { ... }
|
|
517
|
+
}
|
|
518
|
+
```
|
|
519
|
+
4. Check real-time HUD telemetry inside the attached Chrome browser to inspect WebSocket latency, DOM mutation counts, and memory footprint.
|
|
520
|
+
|
|
521
|
+
---
|
|
522
|
+
|
|
523
|
+
## 8. Publishing & Verification
|
|
524
|
+
|
|
525
|
+
1. **Publish to NPM**:
|
|
526
|
+
```bash
|
|
527
|
+
npm publish --access public
|
|
528
|
+
```
|
|
529
|
+
2. **Submit for Community Verification**:
|
|
530
|
+
Submit a Pull Request to [Weavetab Community Registry](https://github.com/weavetab/registry) adding your package name to `verified.json`:
|
|
531
|
+
```json
|
|
532
|
+
[
|
|
533
|
+
"eval_plus",
|
|
534
|
+
"github-automation",
|
|
535
|
+
"vision-accessibility"
|
|
536
|
+
]
|
|
537
|
+
```
|
|
538
|
+
3. Once reviewed and merged by the Weavetab maintainers, your plugin will automatically receive the `✔ [Verified]` badge across all Weavetab CLI installations worldwide.
|
package/docs/TOOLS.md
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# Weavetab MCP Tool Reference
|
|
2
|
+
|
|
3
|
+
> **Version:** 2.5.0 | **Total Registered Tools:** 45 | **Architecture:** Layer 0 Direct CDP & Extension Bridge
|
|
4
|
+
|
|
5
|
+
Weavetab provides 45 production-grade MCP tools engineered for browser automation, GitHub repository analysis, Office document parsing, and deep web inspection.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Tool Directory
|
|
10
|
+
|
|
11
|
+
| # | Tool Name | Category | Description | Key Capabilities & Parameters |
|
|
12
|
+
| :--- | :--- | :--- | :--- | :--- |
|
|
13
|
+
| 1 | `browser_map` | `vision` | DOM tree snapshotter with volatile ref IDs (`w:NN`). For complex SPAs, supports delta diffing, semantic pruning, and AX tree fallback. | `delta: boolean` (up to 97% token reduction), `scope: string`, `query: string`, `force: boolean` |
|
|
14
|
+
| 2 | `browser_navigate` | `navigation` | Navigates to a URL with blocklist checks, network idle wait, and `weavetab://` scheme support. | `url: string`, `timeoutMs?: number` |
|
|
15
|
+
| 3 | `browser_click` | `input` | Physical click engine using Bézier curve kinematics (Ghost Cursor) and multi-stage fallback targeting (`ref` -> `selector` -> `label` -> `intent` -> `coords`). | `ref?: string`, `selector?: string`, `label?: string`, `coords?: [number, number]` |
|
|
16
|
+
| 4 | `browser_type` | `input` | Keystroke dispatch with humanized temporal jitter, stuck-input monitoring, and `clearFirst` support. | `ref?: string`, `text: string`, `clearFirst?: boolean` |
|
|
17
|
+
| 5 | `browser_type_secret` | `input` | Blind credential injection from environment variables or secrets store without exposing values to LLM context (`[REDACTED]`). | `envVar: string`, `ref?: string`, `selector?: string` |
|
|
18
|
+
| 6 | `browser_key` | `input` | Presses native key combinations (Ctrl, Alt, Shift, Meta, Enter, Tab, Escape, etc.). | `key: string`, `modifiers?: string[]` |
|
|
19
|
+
| 7 | `browser_scroll` | `input` | Smooth directional scrolling or scroll-to-element centering via CDP wheel events. | `direction?: "down" \| "up" \| "left" \| "right"`, `amount?: number`, `ref?: string` |
|
|
20
|
+
| 8 | `browser_dialog` | `dialog` | Accepts, dismisses, or responds to JS `alert`, `confirm`, and `prompt` dialogs. | `action: "accept" \| "dismiss"`, `promptText?: string` |
|
|
21
|
+
| 9 | `browser_burst` | `execution` | Atomic multi-step action pipeline execution in a single JSON-RPC round-trip. | `steps: Array<MacroStep>` (`navigate_and_read`, `type_and_send`, `click_and_wait`, etc.) |
|
|
22
|
+
| 10 | `browser_tabs` | `tabs` | Full tab and window CRUD lifecycle management (open, switch, close, list, consolidate, heal). | `action: "list" \| "open" \| "switch" \| "close" \| "consolidate" \| "heal" \| "list_windows" \| "focus_window"`, `url?: string`, `tabId?: number` |
|
|
23
|
+
| 11 | `browser_wait` | `navigation` | Pause until DOM element, text, URL, network idle, or DOM stability condition is met. | `condition: "element" \| "text" \| "url" \| "stable" \| "network" \| "auto"`, `target?: string`, `timeoutMs?: number` |
|
|
24
|
+
| 12 | `browser_captcha` | `security` | Autonomous detection and solving of turnstile, reCAPTCHA, and hCaptcha challenges. | `action: "detect" \| "solve" \| "status"`, `timeoutMs?: number` |
|
|
25
|
+
| 13 | `browser_thoughts` | `overlay` | Visual agent-to-user status HUD overlay (feedback banner or interactive question box). | `mode: "feedback" \| "question"`, `message: string`, `options?: string[]` |
|
|
26
|
+
| 14 | `browser_pointer` | `input` | Precision mouse pointer control including hover flyout triggers and drag-and-drop. | `action: "hover" \| "click" \| "double_click" \| "drag_and_drop"`, `ref?: string`, `targetRef?: string`, `waitForChild?: boolean` |
|
|
27
|
+
| 15 | `browser_select` | `input` | Selects native dropdown options by text or value, firing framework-safe synthetic events. | `ref?: string`, `value?: string`, `label?: string` |
|
|
28
|
+
| 16 | `browser_fill` | `input` | Smart multi-field form completion across text inputs, radios, checkboxes, and dropdowns. | `fields: Array<{ ref?: string, selector?: string, value: string }>` |
|
|
29
|
+
| 17 | `browser_plan` | `overlay` | Real-time task dashboard HUD panel rendered inside isolated Shadow DOM overlay. | `action: "create" \| "update" \| "clear"`, `tasks?: Array<{ id: string, title: string, status: "pending" \| "in_progress" \| "done" \| "failed" }>` |
|
|
30
|
+
| 18 | `browser_highlight` | `overlay` | Temporary visual CDP overlay highlights over target elements without DOM mutations. | `ref?: string`, `selector?: string`, `color?: string`, `durationMs?: number` |
|
|
31
|
+
| 19 | `browser_upload` | `input` | Direct file input upload bypassing OS file pickers via CDP `DOM.setFileInputFiles`. | `ref?: string`, `selector?: string`, `files: string[]` |
|
|
32
|
+
| 20 | `browser_find` | `vision` | Sub-5ms CDP text search without full DOM walk overhead. Zero token waste. | `query: string`, `caseSensitive?: boolean` |
|
|
33
|
+
| 21 | `browser_storage` | `storage` | Key-value store management for `localStorage` and `sessionStorage`. | `action: "get" \| "set" \| "clear" \| "remove"`, `type: "local" \| "session"`, `key?: string`, `value?: string` |
|
|
34
|
+
| 22 | `browser_network_intercept` | `network` | Request mocking, URL pattern blocking, and network timing/TLS diagnostic extraction. | `action: "mock" \| "block" \| "clear" \| "get_logs"`, `pattern?: string`, `response?: object` |
|
|
35
|
+
| 23 | `browser_console` | `inspection` | Sub-5ms access to buffered console API outputs, exceptions, and network errors. | `action: "get" \| "clear"`, `minLevel?: "log" \| "warn" \| "error"` |
|
|
36
|
+
| 24 | `browser_pdf` | `output` | Generates a PDF printout of the active page with layout and page range controls. | `landscape?: boolean`, `printBackground?: boolean`, `pageRanges?: string`, `outputPath?: string` |
|
|
37
|
+
| 25 | `browser_eval` | `evaluation` | Evaluates arbitrary JavaScript expressions directly in the main frame JS context. | `expression: string`, `awaitPromise?: boolean` |
|
|
38
|
+
| 26 | `browser_cookies` | `storage` | Full CRUD operations for browser cookies via CDP Network domain. | `action: "get" \| "set" \| "clear" \| "remove"`, `name?: string`, `value?: string`, `domain?: string` |
|
|
39
|
+
| 27 | `browser_canvas` | `vision` | Export canvas pixel data as Base64 PNG or execute coordinate gesture paths on charts/games. | `action: "get_image" \| "draw"`, `ref?: string`, `path?: Array<[number, number]>` |
|
|
40
|
+
| 28 | `browser_scrape` | `vision` | High-speed structured data extraction via CSS or XPath selectors in a single evaluation step. | `selector: string`, `attributes?: string[]`, `isXpath?: boolean` |
|
|
41
|
+
| 29 | `browser_snapshot` | `vision` | Capture or restore an MHTML snapshot (DOM + inline assets) for offline archival or verification. | `action: "capture" \| "restore"`, `filePath?: string` |
|
|
42
|
+
| 30 | `browser_screenshot` | `vision` | Visual screenshot capture in PNG or JPEG format with full-page and bounding box support. | `fullPage?: boolean`, `format?: "png" \| "jpeg"`, `quality?: number`, `clip?: object` |
|
|
43
|
+
| 31 | `browser_viewport` | `emulation` | Viewport dimensions, device scale factor, touch support, geolocation, and locale overrides. | `width?: number`, `height?: number`, `deviceScaleFactor?: number`, `isMobile?: boolean` |
|
|
44
|
+
| 32 | `browser_clipboard` | `interaction` | Plaintext and Base64 image reading/writing to the system clipboard. | `action: "read" \| "write"`, `text?: string` |
|
|
45
|
+
| 33 | `browser_inspect` | `inspection` | Deep DOM element inspection returning computed styles, box model, and attached event listeners. | `ref?: string`, `selector?: string` |
|
|
46
|
+
| 34 | `browser_automation` | `execution` | Injects self-running background tracking scripts into the page context. | `action: "inject" \| "remove" \| "list"`, `scriptName: string`, `code?: string` |
|
|
47
|
+
| 35 | `browser_recording` | `output` | Records browser session video screencasts into `.webp`, `.gif`, `.webm`, or `.mp4`. | `action: "start" \| "stop" \| "status"`, `fps?: number`, `format?: "webp" \| "gif" \| "webm" \| "mp4"` |
|
|
48
|
+
| 36 | `browser_reset_loop_counter` | `safety` | Resets the repetitive action strike counter to zero for long-running workflows. | `reason: string` |
|
|
49
|
+
| 37 | `browser_detect` | `system` | Detects installed local browsers and reports CDP feature support matrices across engines. | `target?: "chromium" \| "firefox" \| "webkit" \| "all"` |
|
|
50
|
+
| 38 | `browser_performance` | `performance` | Retrieves Core Web Vitals (FCP, LCP, CLS) and network resource timing breakdowns. | `includeResourceTimings?: boolean` |
|
|
51
|
+
| 39 | `browser_macro_compile` | `macro` | Compiles recent action trails into reusable `browser_burst` macro sequences. | `maxSteps?: number`, `macroName?: string` |
|
|
52
|
+
| 40 | `github_analyze` | `github` | Analyzes GitHub repository structure, file trees, and README content without API rate limits. | `owner: string`, `repo: string`, `branch?: string` |
|
|
53
|
+
| 41 | `github_read` | `github` | Reads raw file contents from public or private GitHub repositories. | `owner: string`, `repo: string`, `path: string`, `ref?: string` |
|
|
54
|
+
| 42 | `github_issues` | `github` | Lists, searches, and fetches GitHub issue details and discussion threads. | `owner: string`, `repo: string`, `action: "list" \| "get" \| "search"`, `issueNumber?: number` |
|
|
55
|
+
| 43 | `github_get_pr` | `github` | Inspects GitHub Pull Requests including changed files, diffs, and review comments. | `owner: string`, `repo: string`, `prNumber: number` |
|
|
56
|
+
| 44 | `browser_office` | `office` | Parses and extracts structured content/tables from Word (`.docx`), Excel (`.xlsx`), and PDF documents. | `action: "parse" \| "list" \| "search"`, `filePath: string` |
|
|
57
|
+
| 45 | `browser_emulate` | `emulation` | Advanced network throttling, offline mode, user-agent spoofing, and CPU throttling. | `networkProfile?: "offline" \| "3g_slow" \| "3g_fast" \| "4g"`, `cpuThrottlingRate?: number`, `userAgent?: string` |
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## Detailed Tool Guidance & Examples
|
|
62
|
+
|
|
63
|
+
### 1. High-Efficiency Data Extraction
|
|
64
|
+
When extracting tabular data or structured text from a webpage, prefer **`browser_scrape`** or **`browser_find`** over `browser_map` to save 95%+ context tokens:
|
|
65
|
+
```json
|
|
66
|
+
{
|
|
67
|
+
"name": "browser_scrape",
|
|
68
|
+
"arguments": {
|
|
69
|
+
"selector": "table.pricing-table tr",
|
|
70
|
+
"attributes": ["innerText", "data-plan-id"]
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### 2. Multi-Action Pipeline Chaining
|
|
76
|
+
To reduce JSON-RPC transport overhead, chain repetitive form inputs and navigations into a single **`browser_burst`** request:
|
|
77
|
+
```json
|
|
78
|
+
{
|
|
79
|
+
"name": "browser_burst",
|
|
80
|
+
"arguments": {
|
|
81
|
+
"steps": [
|
|
82
|
+
{ "action": "navigate_and_read", "url": "https://example.com/login" },
|
|
83
|
+
{ "action": "type_and_send", "ref": "w:12", "text": "user@example.com" },
|
|
84
|
+
{ "action": "click_and_wait", "ref": "w:15" }
|
|
85
|
+
]
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### 3. Blind Credential Injection
|
|
91
|
+
For enterprise security, inject secrets without exposing raw password text to the AI model logs or context stream:
|
|
92
|
+
```json
|
|
93
|
+
{
|
|
94
|
+
"name": "browser_type_secret",
|
|
95
|
+
"arguments": {
|
|
96
|
+
"envVar": "WORKFLOW_AUTH_TOKEN",
|
|
97
|
+
"selector": "#api-key-input"
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
*Updated & verified for Weavetab v2.5.0.*
|