@weavetab/mcp 2.5.0-beta.5 → 2.5.1

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 (160) hide show
  1. package/AGENTS.md +49 -49
  2. package/ARCHITECTURE.md +590 -590
  3. package/README.md +216 -100
  4. package/SECURITY.md +207 -207
  5. package/TROUBLESHOOTING.md +373 -365
  6. package/dist/anticaptcha/detector.js +395 -395
  7. package/dist/anticaptcha/solver.js +130 -130
  8. package/dist/cdp/bridge.js +73 -73
  9. package/dist/cdp/connector.js +46 -22
  10. package/dist/cdp/extension.js +34 -34
  11. package/dist/cdp/helpers.js +174 -174
  12. package/dist/cdp/pruner.js +195 -195
  13. package/dist/cdp/ref_cache.js +66 -66
  14. package/dist/cdp/security.js +10 -10
  15. package/dist/cdp/verify.js +57 -57
  16. package/dist/cdp/walker.js +563 -525
  17. package/dist/cli/plugin.js +26 -3
  18. package/dist/config/loader.d.ts +0 -3
  19. package/dist/config/loader.js +0 -9
  20. package/dist/index.js +0 -4
  21. package/dist/intelligence/intent.js +81 -81
  22. package/dist/intelligence/sessionMemory.js +2 -2
  23. package/dist/overlay/ghost.js +22 -22
  24. package/dist/overlay/injector.js +89 -89
  25. package/dist/plugin/extension_bridge.js +54 -54
  26. package/dist/plugin/interface.d.ts +7 -0
  27. package/dist/plugin/loader.js +3 -4
  28. package/dist/plugin/schema.d.ts +11 -0
  29. package/dist/plugin/schema.js +59 -0
  30. package/dist/security/guard.js +18 -18
  31. package/dist/sensors/actionability.js +167 -167
  32. package/dist/sensors/guard.js +29 -29
  33. package/dist/sensors/network.js +15 -17
  34. package/dist/server.d.ts +1 -1
  35. package/dist/server.js +173 -144
  36. package/dist/state/delta.js +6 -7
  37. package/dist/tools/automation.js +85 -85
  38. package/dist/tools/canvas.js +48 -25
  39. package/dist/tools/checkpoint.js +94 -35
  40. package/dist/tools/click.js +52 -41
  41. package/dist/tools/clipboard.js +80 -74
  42. package/dist/tools/design_extract.js +441 -441
  43. package/dist/tools/dialog.js +13 -13
  44. package/dist/tools/emulation.d.ts +2 -0
  45. package/dist/tools/emulation.js +7 -0
  46. package/dist/tools/fill.js +344 -347
  47. package/dist/tools/find.js +78 -52
  48. package/dist/tools/highlight.js +67 -67
  49. package/dist/tools/inspect.js +54 -25
  50. package/dist/tools/key.js +42 -35
  51. package/dist/tools/navigate.d.ts +1 -1
  52. package/dist/tools/navigate.js +35 -35
  53. package/dist/tools/office/parse.js +62 -18
  54. package/dist/tools/pdf.d.ts +9 -0
  55. package/dist/tools/pdf.js +7 -4
  56. package/dist/tools/performance.d.ts +11 -4
  57. package/dist/tools/performance.js +94 -42
  58. package/dist/tools/performance_test.d.ts +2 -2
  59. package/dist/tools/performance_test.js +69 -69
  60. package/dist/tools/pointer.js +116 -116
  61. package/dist/tools/read.js +99 -67
  62. package/dist/tools/recording.js +9 -0
  63. package/dist/tools/scrape.js +146 -146
  64. package/dist/tools/screenshot.d.ts +2 -0
  65. package/dist/tools/screenshot.js +46 -4
  66. package/dist/tools/scroll.d.ts +3 -1
  67. package/dist/tools/scroll.js +13 -15
  68. package/dist/tools/select.d.ts +3 -0
  69. package/dist/tools/select.js +131 -124
  70. package/dist/tools/snapshot.js +8 -6
  71. package/dist/tools/storage.d.ts +5 -1
  72. package/dist/tools/storage.js +16 -0
  73. package/dist/tools/tabs.d.ts +7 -5
  74. package/dist/tools/tabs.js +79 -26
  75. package/dist/tools/thought.js +8 -8
  76. package/dist/tools/type.js +274 -274
  77. package/dist/tools/type_secret.js +23 -23
  78. package/dist/tools/upload.js +3 -3
  79. package/dist/tools/video_compiler.js +9 -0
  80. package/dist/tools/wait.js +35 -35
  81. package/dist/version.d.ts +1 -1
  82. package/dist/version.js +1 -1
  83. package/docs/DOCUMENTATION.md +583 -585
  84. package/docs/PLUGINS.md +139 -121
  85. package/docs/TOOLS.md +3 -4
  86. package/docs/architecture/blind-injection.md +83 -83
  87. package/docs/architecture/overview.md +49 -49
  88. package/docs/configuration/configuration.md +39 -27
  89. package/docs/configuration/folders.md +62 -55
  90. package/docs/desktop-automation/electron-apps.md +225 -214
  91. package/docs/get-started/installation.md +1 -1
  92. package/docs/get-started/introduction.md +60 -60
  93. package/docs/get-started/quickstart.md +2 -2
  94. package/docs/get-started/setup-wizard.md +1 -1
  95. package/docs/intelligence/site-profiles.md +151 -151
  96. package/docs/tools/tools.md +582 -631
  97. package/docs/troubleshooting/trouble-loop.md +31 -31
  98. package/ext-dist/background.js +415 -415
  99. package/ext-dist/content.js +2527 -2527
  100. package/ext-dist/dashboard.html +583 -583
  101. package/ext-dist/hud/hud.js +3 -3
  102. package/ext-dist/hud/index.html +20 -20
  103. package/ext-dist/manifest.json +73 -73
  104. package/ext-dist/styles.css +223 -223
  105. package/mcp.json +796 -805
  106. package/package.json +8 -8
  107. package/server.json +23 -23
  108. package/smithery.yaml +7 -11
  109. package/dist/cdp/walker.test.d.ts +0 -2
  110. package/dist/cdp/walker.test.js +0 -172
  111. package/dist/intelligence/sessionMemory.test.d.ts +0 -2
  112. package/dist/intelligence/sessionMemory.test.js +0 -62
  113. package/dist/intelligence/trail.test.d.ts +0 -2
  114. package/dist/intelligence/trail.test.js +0 -110
  115. package/dist/state/cache.test.d.ts +0 -2
  116. package/dist/state/cache.test.js +0 -76
  117. package/dist/state/delta.test.d.ts +0 -2
  118. package/dist/state/delta.test.js +0 -279
  119. package/dist/state/groups.d.ts +0 -15
  120. package/dist/state/groups.js +0 -80
  121. package/dist/tools/accessibility.d.ts +0 -14
  122. package/dist/tools/accessibility.js +0 -32
  123. package/dist/tools/ask.d.ts +0 -14
  124. package/dist/tools/ask.js +0 -49
  125. package/dist/tools/click_and_wait.d.ts +0 -33
  126. package/dist/tools/click_and_wait.js +0 -149
  127. package/dist/tools/drag.d.ts +0 -15
  128. package/dist/tools/drag.js +0 -29
  129. package/dist/tools/geo.d.ts +0 -19
  130. package/dist/tools/geo.js +0 -29
  131. package/dist/tools/github/analyze.d.ts +0 -4
  132. package/dist/tools/github/analyze.js +0 -113
  133. package/dist/tools/github/cache.d.ts +0 -21
  134. package/dist/tools/github/cache.js +0 -28
  135. package/dist/tools/github/index.d.ts +0 -19
  136. package/dist/tools/github/index.js +0 -40
  137. package/dist/tools/github/issues.d.ts +0 -9
  138. package/dist/tools/github/issues.js +0 -88
  139. package/dist/tools/github/pr.d.ts +0 -5
  140. package/dist/tools/github/pr.js +0 -88
  141. package/dist/tools/github/rateLimiter.d.ts +0 -4
  142. package/dist/tools/github/rateLimiter.js +0 -46
  143. package/dist/tools/github/read.d.ts +0 -34
  144. package/dist/tools/github/read.js +0 -74
  145. package/dist/tools/github/repoContext.d.ts +0 -20
  146. package/dist/tools/github/repoContext.js +0 -129
  147. package/dist/tools/hover.d.ts +0 -19
  148. package/dist/tools/hover.js +0 -57
  149. package/dist/tools/integration.test.d.ts +0 -2
  150. package/dist/tools/integration.test.js +0 -96
  151. package/dist/tools/macro_compiler.d.ts +0 -7
  152. package/dist/tools/macro_compiler.js +0 -82
  153. package/dist/tools/mouse.d.ts +0 -21
  154. package/dist/tools/mouse.js +0 -62
  155. package/dist/tools/response.d.ts +0 -129
  156. package/dist/tools/response.js +0 -5
  157. package/dist/tools/wait_for.d.ts +0 -23
  158. package/dist/tools/wait_for.js +0 -30
  159. package/dist/tools/windows.d.ts +0 -22
  160. package/dist/tools/windows.js +0 -57
package/README.md CHANGED
@@ -1,153 +1,269 @@
1
- # MCP Registry
1
+ <div align="center">
2
2
 
3
- The MCP registry provides MCP clients with a list of MCP servers, like an app store for MCP servers.
3
+ <img src="weavetab-banner.png" alt="Weavetab" /><br /><br />
4
4
 
5
- [**📤 Publish my MCP server**](docs/modelcontextprotocol-io/quickstart.mdx) | [**⚡️ Live API docs**](https://registry.modelcontextprotocol.io/docs) | [**👀 Ecosystem vision**](docs/design/ecosystem-vision.md) | 📖 **[Full documentation](./docs)**
5
+ <p>The open automation engine for AI agents.<br />Control live browsers and desktop apps locally with instant execution.</p>
6
6
 
7
- ## Development Status
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-41-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>
8
15
 
9
- **2025-10-24 update**: The Registry API has entered an **API freeze (v0.1)** 🎉. For the next month or more, the API will remain stable with no breaking changes, allowing integrators to confidently implement support. This freeze applies to v0.1 while development continues on v0. We'll use this period to validate the API in real-world integrations and gather feedback to shape v1 for general availability. Thank you to everyone for your contributions and patience—your involvement has been key to getting us here!
16
+ <p>
17
+ <a href="docs/tools/tools.md">Tool Reference</a> &nbsp;&middot;&nbsp;
18
+ <a href="docs/DOCUMENTATION.md">Documentation</a> &nbsp;&middot;&nbsp;
19
+ <a href="ARCHITECTURE.md">Architecture</a> &nbsp;&middot;&nbsp;
20
+ <a href="SUPPORT.md">Support</a> &nbsp;&middot;&nbsp;
21
+ <a href="SECURITY.md">Security</a>
22
+ </p>
10
23
 
11
- **2025-09-08 update**: The registry has launched in preview 🎉 ([announcement blog post](https://blog.modelcontextprotocol.io/posts/2025-09-08-mcp-registry-preview/)). While the system is now more stable, this is still a preview release and breaking changes or data resets may occur. A general availability (GA) release will follow later. We'd love your feedback in [GitHub discussions](https://github.com/modelcontextprotocol/registry/discussions/new?category=ideas) or in the [#registry-dev Discord](https://discord.com/channels/1358869848138059966/1369487942862504016) ([joining details here](https://modelcontextprotocol.io/community/communication)).
24
+ </div>
12
25
 
13
- Registry Working Group:
14
- - **Radoslav (Rado) Dimitrov** (Stacklok) [@rdimitrov](https://github.com/rdimitrov) - WG Lead
15
- - **Tadas Antanavicius** (PulseMCP) [@tadasant](https://github.com/tadasant)
16
- - **Bob Dickinson** (TeamSpark) [@BobDickinson](https://github.com/BobDickinson)
17
- - **Preeti (Pree) Dewani** (Ravenmail) [@pree-dew](https://github.com/pree-dew)
26
+ ---
18
27
 
19
- ## Contributing
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.
20
29
 
21
- We use multiple channels for collaboration - see [modelcontextprotocol.io/community/communication](https://modelcontextprotocol.io/community/communication).
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.
22
31
 
23
- Often (but not always) ideas flow through this pipeline:
32
+ Built and architected by [fy2ne](https://github.com/fy2ne).
24
33
 
25
- - **[Discord](https://modelcontextprotocol.io/community/communication)** - Real-time community discussions
26
- - **[Discussions](https://github.com/modelcontextprotocol/registry/discussions)** - Propose and discuss product/technical requirements
27
- - **[Issues](https://github.com/modelcontextprotocol/registry/issues)** - Track well-scoped technical work
28
- - **[Pull Requests](https://github.com/modelcontextprotocol/registry/pulls)** - Contribute work towards issues
34
+ ---
29
35
 
30
- ### Quick start:
36
+ ## Why not Playwright or Puppeteer?
31
37
 
32
- #### Pre-requisites
38
+ > The standard approach — Playwright over MCP — works. But it carries fundamental architectural costs that compound at scale.
33
39
 
34
- - **Docker**
35
- - **Go 1.24.x**
36
- - **ko** - Container image builder for Go ([installation instructions](https://ko.build/install/))
37
- - **golangci-lint v2.4.0**
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 |
38
50
 
39
- #### Running the server
51
+ ---
52
+
53
+ ## Architecture
40
54
 
41
- ```bash
42
- # Start full development environment
43
- make dev-compose
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)
44
80
  ```
45
81
 
46
- This starts the registry at [`localhost:8080`](http://localhost:8080) with PostgreSQL. The database uses ephemeral storage and is reset each time you restart the containers, ensuring a clean state for development and testing.
82
+ No cloud. No external process. The CDP WebSocket connection is strictly bound to `127.0.0.1`.
47
83
 
48
- **Note:** The registry uses [ko](https://ko.build) to build container images. The `make dev-compose` command automatically builds the registry image with ko and loads it into your local Docker daemon before starting the services.
84
+ ---
49
85
 
50
- By default, the registry seeds from the production API with a filtered subset of servers (to keep startup fast). This ensures your local environment mirrors production behavior and all seed data passes validation. For offline development you can seed from a file without validation with `MCP_REGISTRY_SEED_FROM=data/seed.json MCP_REGISTRY_ENABLE_REGISTRY_VALIDATION=false make dev-compose`.
86
+ ## Quick Start
51
87
 
52
- The setup can be configured with environment variables in [docker-compose.yml](./docker-compose.yml) - see [.env.example](./.env.example) for a reference.
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
+ ```
53
104
 
54
- <details>
55
- <summary>Alternative: Running a pre-built Docker image</summary>
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` |
56
113
 
57
- Pre-built Docker images are automatically published to GitHub Container Registry. Note that the image does not bundle PostgreSQL, so you need to run your own and point the registry at it via `MCP_REGISTRY_DATABASE_URL` (see [docker-compose.yml](./docker-compose.yml) for a working example):
114
+ ---
58
115
 
59
- ```bash
60
- # Run latest stable release
61
- docker run -p 8080:8080 ghcr.io/modelcontextprotocol/registry:latest
116
+ ## Core Technology
62
117
 
63
- # Run latest from main branch (continuous deployment)
64
- docker run -p 8080:8080 ghcr.io/modelcontextprotocol/registry:main
118
+ ### Semantic Map 3.0
65
119
 
66
- # Run specific release version
67
- docker run -p 8080:8080 ghcr.io/modelcontextprotocol/registry:v1.0.0
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:
68
121
 
69
- # Run development build from main branch
70
- docker run -p 8080:8080 ghcr.io/modelcontextprotocol/registry:main-20250906-abc123d
71
122
  ```
123
+ ╔═ ACTIVE DIALOG: "Confirm Payment" ═╗
124
+ [w:3] button "Confirm" [w:4] button "Cancel"
72
125
 
73
- **Available tags:**
74
- - **Releases**: `latest`, `v1.0.0`, `v1.1.0`, etc.
75
- - **Continuous**: `main` (latest main branch build)
76
- - **Development**: `main-<date>-<sha>` (specific commit builds)
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
77
129
 
78
- </details>
130
+ [w:20...w:38] 18 nav links: "Dashboard" ... "Sign out"
131
+ ```
79
132
 
80
- #### Publishing a server
133
+ Key properties:
81
134
 
82
- To publish a server, we've built a simple CLI. You can use it with:
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%
83
140
 
84
- ```bash
85
- # Build the latest CLI
86
- make publisher
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.
87
144
 
88
- # Use it!
89
- ./bin/mcp-publisher --help
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
+ }
90
152
  ```
91
153
 
92
- See [the publisher guide](./docs/modelcontextprotocol-io/quickstart.mdx) for more details.
154
+ ### Blind Credential Injection
93
155
 
94
- #### Other commands
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.
95
157
 
96
158
  ```bash
97
- # Run lint, unit tests and integration tests
98
- make check
159
+ weavetab secrets set GITHUB_TOKEN
160
+ # Stored. Never echoed, never logged, never surfaced to the agent.
99
161
  ```
100
162
 
101
- There are also a few more helpful commands for development. Run `make help` to learn more, or look in [Makefile](./Makefile).
163
+ ### Electron & Desktop App Automation
102
164
 
103
- <!--
104
- For Claude and other AI tools: Always prefer make targets over custom commands where possible.
105
- -->
165
+ Any tool accepts an optional `app` parameter that routes the command to a registered Electron process instead of a browser tab:
106
166
 
107
- ## Architecture
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
+ ```
108
182
 
109
- ### Project Structure
183
+ Weavetab auto-attaches via CDP to the registered process. No code changes required in the target application.
110
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
+ 41 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
+ | **Office Documents** | `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 under the top-level `policies` array in `~/.weavetab/config.json`
213
+ - **RBAC**: Five roles — `admin`, `operator`, `viewer`, `automation`, `system` — 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-system/logs/mission_<timestamp>.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
111
232
  ```
112
- ├── cmd/ # Application entry points
113
- │ └── publisher/ # Server publishing tool
114
- ├── data/ # Seed data
115
- ├── deploy/ # Deployment configuration (Pulumi)
116
- ├── docs/ # Documentation
117
- ├── internal/ # Private application code
118
- │ ├── api/ # HTTP handlers and routing
119
- │ ├── auth/ # Authentication (GitHub OAuth, JWT, namespace blocking)
120
- │ ├── config/ # Configuration management
121
- │ ├── database/ # Data persistence (PostgreSQL)
122
- │ ├── service/ # Business logic
123
- │ ├── telemetry/ # Metrics and monitoring
124
- │ └── validators/ # Input validation
125
- ├── pkg/ # Public packages
126
- │ ├── api/ # API types and structures
127
- │ │ └── v0/ # Version 0 API types
128
- │ └── model/ # Data models for server.json
129
- ├── scripts/ # Development and testing scripts
130
- ├── tests/ # Integration tests
131
- └── tools/ # CLI tools and utilities
132
- └── validate-*.sh # Schema validation tools
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
+ }
133
249
  ```
134
250
 
135
- ### Authentication
251
+ ---
136
252
 
137
- Publishing supports multiple authentication methods:
138
- - **GitHub OAuth** - For publishing by logging into GitHub
139
- - **GitHub OIDC** - For publishing from GitHub Actions
140
- - **DNS verification** - For proving ownership of a domain and its subdomains
141
- - **HTTP verification** - For proving ownership of a domain
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
+ ```
142
260
 
143
- The registry validates namespace ownership when publishing. E.g. to publish...:
144
- - `io.github.domdomegg/my-cool-mcp` you must login to GitHub as `domdomegg`, or be in a GitHub Action on domdomegg's repos
145
- - `me.adamjones/my-cool-mcp` you must prove ownership of `adamjones.me` via DNS or HTTP challenge
261
+ See [`docs/PLUGINS.md`](docs/PLUGINS.md) for architecture, manifest spec, and SDK API reference.
146
262
 
147
- ## Community Projects
263
+ ---
148
264
 
149
- Check out [community projects](docs/community-projects.md) to explore notable registry-related work created by the community.
265
+ ## License
150
266
 
151
- ## More documentation
267
+ AGPL-3.0-only. Client connections over stdio or WebSocket do not extend copyleft obligations to your client application or models.
152
268
 
153
- See the [documentation](./docs) for more details if your question has not been answered here!
269
+ [Sponsor development](https://github.com/sponsors/fy2ne) &nbsp;&middot;&nbsp; [Discussions](https://github.com/weavetab/mcp/discussions) &nbsp;&middot;&nbsp; [SUPPORT.md](SUPPORT.md)