@weavetab/mcp 2.5.0-beta.5 → 2.5.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/LICENSE +216 -216
- package/README.md +269 -153
- package/dist/server.d.ts +1 -1
- package/dist/server.js +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/docs/PLUGINS.md +1 -1
- package/docs/TOOLS.md +1 -1
- package/docs/architecture/security.md +36 -36
- package/docs/architecture/transport.md +37 -37
- package/docs/cli/cli-commands.md +50 -50
- package/docs/cli/cli-flags.md +28 -28
- package/docs/cli/cli-scripting.md +35 -35
- package/docs/configuration/config-locations.md +23 -23
- package/docs/configuration/env-variables.md +19 -19
- package/docs/get-started/setup-wizard.md +27 -27
- package/docs/troubleshooting/trouble-browser.md +27 -27
- package/mcp.json +3 -3
- package/package.json +118 -118
- package/server.json +5 -5
- package/smithery.yaml +7 -11
package/README.md
CHANGED
|
@@ -1,153 +1,269 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
**
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
- **
|
|
139
|
-
- **
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
<img src="weavetab-banner.png" alt="Weavetab" /><br /><br />
|
|
4
|
+
|
|
5
|
+
<p>The open automation engine for AI agents.<br />Control live browsers and desktop apps locally with instant execution.</p>
|
|
6
|
+
|
|
7
|
+
<p>
|
|
8
|
+
<a href="https://github.com/weavetab/mcp/releases"><img src="https://img.shields.io/github/v/release/weavetab/mcp?label=version&style=flat-square&color=3b82f6" alt="version" /></a>
|
|
9
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/license-AGPL--3.0-8b5cf6?style=flat-square" alt="license" /></a>
|
|
10
|
+
<a href="https://modelcontextprotocol.io"><img src="https://img.shields.io/badge/MCP-compatible-10b981?style=flat-square" alt="MCP" /></a>
|
|
11
|
+
<img src="https://img.shields.io/badge/Node.js-%3E%3D18-green?style=flat-square" alt="Node" />
|
|
12
|
+
<a href="docs/tools/tools.md"><img src="https://img.shields.io/badge/tools-42-ec4899?style=flat-square" alt="tools" /></a>
|
|
13
|
+
<a href="https://github.com/sponsors/fy2ne"><img src="https://img.shields.io/badge/sponsor-fy2ne-ea4aaa?style=flat-square&logo=github-sponsors" alt="sponsor" /></a>
|
|
14
|
+
</p>
|
|
15
|
+
|
|
16
|
+
<p>
|
|
17
|
+
<a href="docs/tools/tools.md">Tool Reference</a> ·
|
|
18
|
+
<a href="docs/DOCUMENTATION.md">Documentation</a> ·
|
|
19
|
+
<a href="ARCHITECTURE.md">Architecture</a> ·
|
|
20
|
+
<a href="SUPPORT.md">Support</a> ·
|
|
21
|
+
<a href="SECURITY.md">Security</a>
|
|
22
|
+
</p>
|
|
23
|
+
|
|
24
|
+
</div>
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
Weavetab is the open automation engine for AI agents. It connects models directly to live Chromium browsers and Electron desktop applications via native **Chrome DevTools Protocol (CDP)** sockets — no WebDriver binaries, no cloud relay, zero telemetry.
|
|
29
|
+
|
|
30
|
+
Actions execute with **sub-10ms latency**. Web pages are translated into agent-readable semantic maps with turn-by-turn diffing that reduces token usage by **up to 95%**. Built-in security enforces local domain policies, role-based access control, and client-side credential injection.
|
|
31
|
+
|
|
32
|
+
Built and architected by [fy2ne](https://github.com/fy2ne).
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Why not Playwright or Puppeteer?
|
|
37
|
+
|
|
38
|
+
> The standard approach ΓÇö Playwright over MCP ΓÇö works. But it carries fundamental architectural costs that compound at scale.
|
|
39
|
+
|
|
40
|
+
| | Playwright / Puppeteer | **Weavetab** |
|
|
41
|
+
|---|---|---|
|
|
42
|
+
| **Protocol layer** | WebDriver BiDi or CDP via browser binary | Raw CDP WebSocket, Layer 0 |
|
|
43
|
+
| **Tool execution latency** | 50ΓÇô300 ms (binary + IPC overhead) | **3ΓÇô8 ms** |
|
|
44
|
+
| **Desktop app control** | Browser only | Chrome + any Electron app (Discord, VS Code, Figma…) |
|
|
45
|
+
| **DOM representation** | Full HTML dump to LLM | Semantic Map 3.0 with delta diffing |
|
|
46
|
+
| **Token cost per map** | ~2,000ΓÇô8,000 tokens | **~80ΓÇô400 tokens** (95% reduction via delta) |
|
|
47
|
+
| **CAPTCHA** | API service required | **Zero-API** via CDP mouse physics |
|
|
48
|
+
| **Credential safety** | Secrets passed in plaintext | **Blind Injection** ΓÇö never in LLM context |
|
|
49
|
+
| **Extension access** | Limited | Full Chrome Extension API surface |
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## Architecture
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
MCP Client (Claude / Cursor / Antigravity / Copilot / Windsurf)
|
|
57
|
+
|
|
|
58
|
+
| JSON-RPC 2.0 (stdio or WebSocket :3000)
|
|
59
|
+
v
|
|
60
|
+
+-------------------------------------------------------------+
|
|
61
|
+
| Weavetab MCP Server |
|
|
62
|
+
| |
|
|
63
|
+
| +-----------------+ +---------------------------------+ |
|
|
64
|
+
| | Security Layer |-->| Intelligence Engine | |
|
|
65
|
+
| | Rate ┬╖ RBAC | | Map 3.0 ┬╖ Delta ┬╖ Memory | |
|
|
66
|
+
| | Policy ┬╖ Audit | | Pruner ┬╖ Framework Detector | |
|
|
67
|
+
| +-----------------+ +----------------+----------------+ |
|
|
68
|
+
| | |
|
|
69
|
+
| +----------v----------------+ |
|
|
70
|
+
| | CDP Bridge | |
|
|
71
|
+
| | Ghost Cursor ┬╖ Typing | |
|
|
72
|
+
| | App Router ┬╖ Loop Guard | |
|
|
73
|
+
| +----------+----------------+ |
|
|
74
|
+
+-------------------------------------------------------------+
|
|
75
|
+
| CDP WebSocket (127.0.0.1)
|
|
76
|
+
+---------------------------+-----------------------------+
|
|
77
|
+
v v v
|
|
78
|
+
Chrome / Edge VS Code / Discord Your Electron App
|
|
79
|
+
(any tab) (Electron apps) (local dev)
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
No cloud. No external process. The CDP WebSocket connection is strictly bound to `127.0.0.1`.
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Quick Start
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
npx -y @weavetab/mcp
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Add to your MCP client config:
|
|
93
|
+
|
|
94
|
+
```json
|
|
95
|
+
{
|
|
96
|
+
"mcpServers": {
|
|
97
|
+
"weavetab": {
|
|
98
|
+
"command": "npx",
|
|
99
|
+
"args": ["-y", "@weavetab/mcp"]
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
| Client | Config path |
|
|
106
|
+
|---|---|
|
|
107
|
+
| Claude Desktop | `~/Library/Application Support/Claude/claude_desktop_config.json` |
|
|
108
|
+
| Claude Code | `claude mcp add weavetab -- npx -y @weavetab/mcp` |
|
|
109
|
+
| Cursor | `.cursor/mcp.json` |
|
|
110
|
+
| Antigravity | `~/.gemini/antigravity/mcp/weavetab/` |
|
|
111
|
+
| VS Code Copilot | `.vscode/mcp.json` |
|
|
112
|
+
| Windsurf | `~/.codeium/windsurf/mcp_config.json` |
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## Core Technology
|
|
117
|
+
|
|
118
|
+
### Semantic Map 3.0
|
|
119
|
+
|
|
120
|
+
The primary bottleneck in browser-based agents is DOM representation. Full HTML dumps are noisy, large, and structurally meaningless to language models. Weavetab's `browser_map` runs an in-browser CDP walker that produces a compact semantic map:
|
|
121
|
+
|
|
122
|
+
```
|
|
123
|
+
ΓòöΓòÉ ACTIVE DIALOG: "Confirm Payment" ΓòÉΓòù
|
|
124
|
+
[w:3] button "Confirm" [w:4] button "Cancel"
|
|
125
|
+
|
|
126
|
+
Γöî "Pro Plan ΓÇö $49/mo"
|
|
127
|
+
[w:12] button "Upgrade" [w:13] button "View Details"
|
|
128
|
+
[w:14] input val:"john@example.com" ph:"Email address" FOCUSED
|
|
129
|
+
|
|
130
|
+
[w:20...w:38] 18 nav links: "Dashboard" ... "Sign out"
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Key properties:
|
|
134
|
+
|
|
135
|
+
- **Ref IDs** (`w:N`) are stable within a session and used by all interaction tools
|
|
136
|
+
- **Container binding** ΓÇö buttons and inputs are grouped under their parent card, row, or section header
|
|
137
|
+
- **Modal hoisting** ΓÇö open dialogs are isolated at the top so agents cannot miss them
|
|
138
|
+
- **Link collapsing** ΓÇö repeated nav/footer runs of 4+ links compress into a single token line
|
|
139
|
+
- **Semantic delta** — on re-reads, only changed nodes are transmitted (`~` modified, `+` added, `−` removed), cutting re-read cost by up to 95%
|
|
140
|
+
|
|
141
|
+
### Ghost Cursor
|
|
142
|
+
|
|
143
|
+
Clicks are not dispatched as synthetic DOM events. They are delivered as a physical sequence of `Input.dispatchMouseEvent` CDP calls along a Bezier curve trajectory with randomized acceleration, natural jitter, and hold durations. Anti-bot fingerprinting that flags event-based automation does not trigger.
|
|
144
|
+
|
|
145
|
+
`browser_pointer` supports `hover_chain` for multi-level menu traversal in a single tool call:
|
|
146
|
+
|
|
147
|
+
```json
|
|
148
|
+
{
|
|
149
|
+
"hover_chain": ["File", "Export As", "PNG"],
|
|
150
|
+
"click_final": true
|
|
151
|
+
}
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### Blind Credential Injection
|
|
155
|
+
|
|
156
|
+
`browser_type_secret` resolves secrets server-side from `~/.weavetab/secrets.json`. The resolved value is never included in the MCP response, never appears in DOM snapshots, and is permanently masked as `[REDACTED]` in all audit logs. The LLM context never sees the credential.
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
weavetab secrets set GITHUB_TOKEN
|
|
160
|
+
# Stored. Never echoed, never logged, never surfaced to the agent.
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### Electron & Desktop App Automation
|
|
164
|
+
|
|
165
|
+
Any tool accepts an optional `app` parameter that routes the command to a registered Electron process instead of a browser tab:
|
|
166
|
+
|
|
167
|
+
```json
|
|
168
|
+
{ "app": "discord", "ref": "w:24", "text": "Hey, deploying now" }
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
Register apps in `~/.weavetab/config.json`:
|
|
172
|
+
|
|
173
|
+
```json
|
|
174
|
+
{
|
|
175
|
+
"electron": {
|
|
176
|
+
"discord": "C:\\Users\\<user>\\AppData\\Local\\Discord\\Discord.exe",
|
|
177
|
+
"vscode": "C:\\Users\\<user>\\AppData\\Local\\Programs\\Microsoft VS Code\\Code.exe",
|
|
178
|
+
"figma": "C:\\Users\\<user>\\AppData\\Local\\Figma\\Figma.exe"
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
Weavetab auto-attaches via CDP to the registered process. No code changes required in the target application.
|
|
184
|
+
|
|
185
|
+
### Zero-API CAPTCHA Solving
|
|
186
|
+
|
|
187
|
+
`browser_captcha` solves Cloudflare Turnstile, reCAPTCHA v2/v3, GeeTest, and hCaptcha by orchestrating CDP mouse events that replicate human behavioral signatures ΓÇö velocity curves, micro-pauses, scroll inertia ΓÇö with no third-party API, no external service, and no API key required.
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
## Tool Suite
|
|
192
|
+
|
|
193
|
+
42 tools across 9 categories. Full parameter reference: [`docs/tools/tools.md`](docs/tools/tools.md)
|
|
194
|
+
|
|
195
|
+
| Category | Tools |
|
|
196
|
+
|---|---|
|
|
197
|
+
| **Vision & DOM** | `browser_map` `browser_find` `browser_scrape` `browser_inspect` `browser_snapshot` `browser_screenshot` `browser_console` `browser_extract_design` |
|
|
198
|
+
| **Input & Interaction** | `browser_click` `browser_type` `browser_type_secret` `browser_key` `browser_pointer` `browser_select` `browser_fill` `browser_upload` `browser_scroll` |
|
|
199
|
+
| **Navigation & Environment** | `browser_navigate` `browser_tabs` `browser_detect` `browser_viewport` `browser_emulate` |
|
|
200
|
+
| **Mission & Automation** | `browser_burst` `browser_automation` `browser_recording` `browser_pattern_learn` |
|
|
201
|
+
| **Safety & Human Oversight** | `browser_dialog` `browser_thoughts` `browser_clipboard` `browser_wait` |
|
|
202
|
+
| **Autonomous CAPTCHA** | `browser_captcha` |
|
|
203
|
+
| **Network & Storage** | `browser_network_intercept` `browser_storage` `browser_cookies` `browser_checkpoint` `browser_performance` |
|
|
204
|
+
| **GitHub & Documents** | `browser_github` `browser_office` |
|
|
205
|
+
| **Canvas & Eval** | `browser_eval` `browser_pdf` `browser_canvas` `browser_highlight` |
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
## Security
|
|
210
|
+
|
|
211
|
+
- **Transport**: CDP WebSocket strictly bound to `127.0.0.1`. No listener on external interfaces.
|
|
212
|
+
- **Policy Engine**: Per-domain `allow` / `read-only` / `deny` / `audit` rules in `~/.weavetab/policy.json`
|
|
213
|
+
- **RBAC**: Four roles ΓÇö `admin`, `operator`, `viewer`, `automation` ΓÇö enforce tool-level permission gates
|
|
214
|
+
- **Blind Injection**: Credentials resolved server-side, masked in all outputs and audit logs
|
|
215
|
+
- **Loop Breaker**: Strike-based stuck-loop detector halts runaway autonomous sequences
|
|
216
|
+
- **Audit Log**: All tool invocations, policy decisions, and errors written to `~/.weavetab/logs/audit.log`
|
|
217
|
+
|
|
218
|
+
Security vulnerabilities: `security@fy2ne.me` (do not use public issues).
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
## CLI Reference
|
|
223
|
+
|
|
224
|
+
```bash
|
|
225
|
+
weavetab # Start in stdio mode (default)
|
|
226
|
+
weavetab --ws --port 3000 # WebSocket daemon mode
|
|
227
|
+
weavetab config # Interactive configuration wizard
|
|
228
|
+
weavetab secrets set KEY_NAME # Store a secret (never echoed)
|
|
229
|
+
weavetab secrets list # List stored secret keys (not values)
|
|
230
|
+
weavetab plugin add <name> # Install a plugin from npm
|
|
231
|
+
weavetab plugin list # List installed plugins
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
Configuration file: `~/.weavetab/config.json`
|
|
235
|
+
|
|
236
|
+
```json
|
|
237
|
+
{
|
|
238
|
+
"browserType": "chromium",
|
|
239
|
+
"headless": false,
|
|
240
|
+
"extension": true,
|
|
241
|
+
"maxActionsPerMinute": 60,
|
|
242
|
+
"role": "admin",
|
|
243
|
+
"electron": {
|
|
244
|
+
"discord": "...",
|
|
245
|
+
"vscode": "...",
|
|
246
|
+
"antigravity": "..."
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
---
|
|
252
|
+
|
|
253
|
+
## Extensibility
|
|
254
|
+
|
|
255
|
+
Weavetab exposes a typed Plugin SDK for authoring custom MCP tools, HUD overlays, and tool lifecycle hooks:
|
|
256
|
+
|
|
257
|
+
```bash
|
|
258
|
+
npx @weavetab/sdk init my-plugin
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
See [`docs/PLUGINS.md`](docs/PLUGINS.md) for architecture, manifest spec, and SDK API reference.
|
|
262
|
+
|
|
263
|
+
---
|
|
264
|
+
|
|
265
|
+
## License
|
|
266
|
+
|
|
267
|
+
AGPL-3.0-only. Client connections over stdio or WebSocket do not extend copyleft obligations to your client application or models.
|
|
268
|
+
|
|
269
|
+
[Sponsor development](https://github.com/sponsors/fy2ne) · [Discussions](https://github.com/weavetab/mcp/discussions) · [SUPPORT.md](SUPPORT.md)
|
package/dist/server.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Weavetab — server.ts
|
|
3
|
-
* MCP server:
|
|
3
|
+
* MCP server: 42 browser automation tools with security, rate limiting, and visual overlay.
|
|
4
4
|
* Weavetab by fy2ne
|
|
5
5
|
*/
|
|
6
6
|
import type { Config } from "./config/loader.js";
|
package/dist/server.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Weavetab — server.ts
|
|
3
|
-
* MCP server:
|
|
3
|
+
* MCP server: 42 browser automation tools with security, rate limiting, and visual overlay.
|
|
4
4
|
* Weavetab by fy2ne
|
|
5
5
|
*/
|
|
6
6
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
package/dist/version.d.ts
CHANGED
package/dist/version.js
CHANGED
package/docs/PLUGINS.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Weavetab Plugin System & SDK Specification
|
|
2
2
|
|
|
3
|
-
> **Version:** 2.5.0
|
|
3
|
+
> **Version:** 2.5.0 | **SDK:** @weavetab/sdk (MIT) | **Runtime:** AGPL-3.0-only
|
|
4
4
|
|
|
5
5
|
The **Weavetab Plugin System** allows developers to extend the MCP runtime with custom tools, visual HUD overlays, thought bubbles, lifecycle hooks, and tool overrides.
|
|
6
6
|
|
package/docs/TOOLS.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Weavetab MCP Tool Reference
|
|
2
2
|
|
|
3
|
-
> **Version:** 2.5.0
|
|
3
|
+
> **Version:** 2.5.0 | **Total Tools:** 42 | **Architecture:** Layer 0 Direct CDP
|
|
4
4
|
|
|
5
5
|
Weavetab provides 42 production-grade MCP tools organized into functional categories.
|
|
6
6
|
|
|
@@ -1,36 +1,36 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: "Security Model"
|
|
3
|
-
description: "Layered defenses that gate every tool invocation."
|
|
4
|
-
product: mcp
|
|
5
|
-
section: architecture
|
|
6
|
-
icon: ShieldCheck
|
|
7
|
-
slug: security
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# Security Model
|
|
11
|
-
|
|
12
|
-
Weavetab executes direct Layer 0 CDP commands — security is layered and **deny-by-default for risky surfaces**.
|
|
13
|
-
|
|
14
|
-
## Defense-in-Depth Mechanisms
|
|
15
|
-
|
|
16
|
-
| Mechanism | Description |
|
|
17
|
-
|---|---|
|
|
18
|
-
| **Domain Blacklist** | Hard-blocked high-risk domains (banking, IAM consoles, internal infrastructure). |
|
|
19
|
-
| **Domain Policy Engine** | Per-domain enforcement modes: `allow`, `read-only`, `deny`, `audit`. |
|
|
20
|
-
| **Localhost Binding** | WebSocket server and CDP endpoints strictly bound to `127.0.0.1`. |
|
|
21
|
-
| **Rate Limiting** | Mutex-enforced actions-per-minute rate limiter. |
|
|
22
|
-
| **RBAC Roles** | 5 roles gating tool access (`admin`, `operator`, `viewer`, `automation`, `system`). |
|
|
23
|
-
| **Root Guard** | Prevents execution as root/superuser on Unix systems. |
|
|
24
|
-
| **Blind Injection** | Credential injection from `secrets.json` without exposing raw text to LLM context. |
|
|
25
|
-
| **Shadow DOM Isolation** | All injected HUD and modal overlays run in isolated Shadow DOM trees. |
|
|
26
|
-
| **Path Traversal Guard** | File upload and download paths strictly validated against path traversal. |
|
|
27
|
-
|
|
28
|
-
## RBAC Role Matrix
|
|
29
|
-
|
|
30
|
-
| Tool Category | admin | operator | viewer | automation | system |
|
|
31
|
-
|---|:---:|:---:|:---:|:---:|:---:|
|
|
32
|
-
| Mutation tools (`click`, `type`, `fill`, etc.) | yes | yes | no | yes | no |
|
|
33
|
-
| Read-only tools (`map`, `find`, `scrape`, `screenshot`) | yes | yes | yes | yes | no |
|
|
34
|
-
| High-level orchestration (`burst`, `automation`, `wait`) | yes | yes | no | yes | no |
|
|
35
|
-
| Interactive HUD (`thoughts`) | yes | yes | no | no | yes |
|
|
36
|
-
| System introspection (`detect`, `performance`, `checkpoint`) | yes | yes | no | yes | yes |
|
|
1
|
+
---
|
|
2
|
+
title: "Security Model"
|
|
3
|
+
description: "Layered defenses that gate every tool invocation."
|
|
4
|
+
product: mcp
|
|
5
|
+
section: architecture
|
|
6
|
+
icon: ShieldCheck
|
|
7
|
+
slug: security
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Security Model
|
|
11
|
+
|
|
12
|
+
Weavetab executes direct Layer 0 CDP commands — security is layered and **deny-by-default for risky surfaces**.
|
|
13
|
+
|
|
14
|
+
## Defense-in-Depth Mechanisms
|
|
15
|
+
|
|
16
|
+
| Mechanism | Description |
|
|
17
|
+
|---|---|
|
|
18
|
+
| **Domain Blacklist** | Hard-blocked high-risk domains (banking, IAM consoles, internal infrastructure). |
|
|
19
|
+
| **Domain Policy Engine** | Per-domain enforcement modes: `allow`, `read-only`, `deny`, `audit`. |
|
|
20
|
+
| **Localhost Binding** | WebSocket server and CDP endpoints strictly bound to `127.0.0.1`. |
|
|
21
|
+
| **Rate Limiting** | Mutex-enforced actions-per-minute rate limiter. |
|
|
22
|
+
| **RBAC Roles** | 5 roles gating tool access (`admin`, `operator`, `viewer`, `automation`, `system`). |
|
|
23
|
+
| **Root Guard** | Prevents execution as root/superuser on Unix systems. |
|
|
24
|
+
| **Blind Injection** | Credential injection from `secrets.json` without exposing raw text to LLM context. |
|
|
25
|
+
| **Shadow DOM Isolation** | All injected HUD and modal overlays run in isolated Shadow DOM trees. |
|
|
26
|
+
| **Path Traversal Guard** | File upload and download paths strictly validated against path traversal. |
|
|
27
|
+
|
|
28
|
+
## RBAC Role Matrix
|
|
29
|
+
|
|
30
|
+
| Tool Category | admin | operator | viewer | automation | system |
|
|
31
|
+
|---|:---:|:---:|:---:|:---:|:---:|
|
|
32
|
+
| Mutation tools (`click`, `type`, `fill`, etc.) | yes | yes | no | yes | no |
|
|
33
|
+
| Read-only tools (`map`, `find`, `scrape`, `screenshot`) | yes | yes | yes | yes | no |
|
|
34
|
+
| High-level orchestration (`burst`, `automation`, `wait`) | yes | yes | no | yes | no |
|
|
35
|
+
| Interactive HUD (`thoughts`) | yes | yes | no | no | yes |
|
|
36
|
+
| System introspection (`detect`, `performance`, `checkpoint`) | yes | yes | no | yes | yes |
|
|
@@ -1,37 +1,37 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: "Transport Modes"
|
|
3
|
-
description: "stdio vs WebSocket — pick the right wire for your client."
|
|
4
|
-
product: mcp
|
|
5
|
-
section: architecture
|
|
6
|
-
icon: Cable
|
|
7
|
-
slug: transport
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# Transport Modes
|
|
11
|
-
|
|
12
|
-
| Mode | Flag | Protocol | Use Case |
|
|
13
|
-
|---|---|---|---|
|
|
14
|
-
| **stdio** | *(default)* | JSON-RPC 2.0 / stdio | Claude Desktop, Cursor, VS Code Copilot, Antigravity |
|
|
15
|
-
| **WebSocket** | `--ws [--port N]` | JSON-RPC 2.0 / WebSocket | Custom agents, Python/Go backends, remote daemons, n8n |
|
|
16
|
-
|
|
17
|
-
## stdio (Default)
|
|
18
|
-
|
|
19
|
-
The MCP client spawns Weavetab as a child process and pipes messages over stdin/stdout. No network port is opened:
|
|
20
|
-
|
|
21
|
-
```json
|
|
22
|
-
{
|
|
23
|
-
"mcpServers": {
|
|
24
|
-
"weavetab": {
|
|
25
|
-
"command": "weavetab"
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
## WebSocket
|
|
32
|
-
|
|
33
|
-
```bash
|
|
34
|
-
weavetab --ws --port 3000
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
Starts the daemon on `127.0.0.1:3000` (override with `--port <n>` / `--port=<n>`). The daemon binds strictly to loopback for local security — front it with your own TLS/auth layer if exposing across a private network.
|
|
1
|
+
---
|
|
2
|
+
title: "Transport Modes"
|
|
3
|
+
description: "stdio vs WebSocket — pick the right wire for your client."
|
|
4
|
+
product: mcp
|
|
5
|
+
section: architecture
|
|
6
|
+
icon: Cable
|
|
7
|
+
slug: transport
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Transport Modes
|
|
11
|
+
|
|
12
|
+
| Mode | Flag | Protocol | Use Case |
|
|
13
|
+
|---|---|---|---|
|
|
14
|
+
| **stdio** | *(default)* | JSON-RPC 2.0 / stdio | Claude Desktop, Cursor, VS Code Copilot, Antigravity |
|
|
15
|
+
| **WebSocket** | `--ws [--port N]` | JSON-RPC 2.0 / WebSocket | Custom agents, Python/Go backends, remote daemons, n8n |
|
|
16
|
+
|
|
17
|
+
## stdio (Default)
|
|
18
|
+
|
|
19
|
+
The MCP client spawns Weavetab as a child process and pipes messages over stdin/stdout. No network port is opened:
|
|
20
|
+
|
|
21
|
+
```json
|
|
22
|
+
{
|
|
23
|
+
"mcpServers": {
|
|
24
|
+
"weavetab": {
|
|
25
|
+
"command": "weavetab"
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## WebSocket
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
weavetab --ws --port 3000
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Starts the daemon on `127.0.0.1:3000` (override with `--port <n>` / `--port=<n>`). The daemon binds strictly to loopback for local security — front it with your own TLS/auth layer if exposing across a private network.
|