lasso-mcp 1.2.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/README.de.md +399 -0
  2. package/README.en.md +407 -0
  3. package/README.es.md +399 -0
  4. package/README.fr.md +399 -0
  5. package/README.ja.md +399 -0
  6. package/README.md +355 -107
  7. package/README.pt.md +399 -0
  8. package/README.ru.md +399 -0
  9. package/dist/channels/MachineMcpSearchChannel.d.ts +72 -0
  10. package/dist/channels/MachineMcpSearchChannel.d.ts.map +1 -0
  11. package/dist/channels/MachineMcpSearchChannel.js +197 -0
  12. package/dist/channels/MachineMcpSearchChannel.js.map +1 -0
  13. package/dist/config/config.d.ts +54 -0
  14. package/dist/config/config.d.ts.map +1 -1
  15. package/dist/config/config.js +154 -5
  16. package/dist/config/config.js.map +1 -1
  17. package/dist/config/providers.d.ts +36 -0
  18. package/dist/config/providers.d.ts.map +1 -1
  19. package/dist/config/providers.js +53 -0
  20. package/dist/config/providers.js.map +1 -1
  21. package/dist/doctor/doctor.d.ts +1 -1
  22. package/dist/doctor/doctor.d.ts.map +1 -1
  23. package/dist/doctor/doctor.js +135 -1
  24. package/dist/doctor/doctor.js.map +1 -1
  25. package/dist/index.js +114 -5
  26. package/dist/index.js.map +1 -1
  27. package/dist/search/FallbackChain.d.ts +8 -4
  28. package/dist/search/FallbackChain.d.ts.map +1 -1
  29. package/dist/search/FallbackChain.js +9 -4
  30. package/dist/search/FallbackChain.js.map +1 -1
  31. package/dist/search/MachineMcpDetector.d.ts +39 -0
  32. package/dist/search/MachineMcpDetector.d.ts.map +1 -0
  33. package/dist/search/MachineMcpDetector.js +113 -0
  34. package/dist/search/MachineMcpDetector.js.map +1 -0
  35. package/dist/tools/search.d.ts +19 -2
  36. package/dist/tools/search.d.ts.map +1 -1
  37. package/dist/tools/search.js +40 -8
  38. package/dist/tools/search.js.map +1 -1
  39. package/doc/KEY-GUIDE.md +307 -0
  40. package/doc/support-alipay.jpg +0 -0
  41. package/doc/support-wechat.jpg +0 -0
  42. package/package.json +15 -8
  43. package/src/channels/MachineMcpSearchChannel.ts +223 -0
  44. package/src/config/config.ts +162 -5
  45. package/src/config/providers.ts +56 -0
  46. package/src/doctor/doctor.ts +141 -1
  47. package/src/index.ts +123 -4
  48. package/src/invariants/check-invariants.mjs +245 -0
  49. package/src/search/FallbackChain.ts +9 -4
  50. package/src/search/MachineMcpDetector.ts +132 -0
  51. package/src/tools/search.ts +40 -5
package/README.en.md ADDED
@@ -0,0 +1,407 @@
1
+ <h1 align="center">Lasso</h1>
2
+
3
+ > Claude Code's "grab handle for everything outside" — search, scrape the web, scrape logged-in pages, drive the desktop, all in one sentence.
4
+ > Cowboy lasso — rope any interface.
5
+
6
+ <p align="center">
7
+ <img src="https://img.shields.io/npm/v/lasso-mcp">
8
+ <img src="https://img.shields.io/badge/license-MIT-green">
9
+ <img src="https://img.shields.io/badge/MCP-compatible-purple">
10
+ </p>
11
+
12
+ **Install Lasso once for Claude Code, and from then on searching, scraping, scraping logged-in pages, and driving the desktop are all a single sentence.** If you search, grab a page, or click around desktop apps every week — and don't want a separate tool for each — install this once and hand it all to Claude.
13
+
14
+ Twin star of [media-gen-mcp](https://github.com/wangdong233/media-gen-mcp) (the image grab handle): "every image operation in one MCP" ↔ "every external interaction in one MCP".
15
+
16
+ <div align="center">
17
+
18
+ [简体中文](README.md) | **English** | [Deutsch](README.de.md) | [Español](README.es.md) | [Français](README.fr.md) | [日本語](README.ja.md) | [Português](README.pt.md) | [Русский](README.ru.md)
19
+
20
+ </div>
21
+
22
+ ## Table of Contents
23
+
24
+ - [What You Say, What You Get](#what-you-say-what-you-get)
25
+ - [💰 Cost at a Glance](#-cost-at-a-glance)
26
+ - [60-Second Start](#60-second-start)
27
+ - [What It Can Do for You](#what-it-can-do-for-you)
28
+ - [Install](#install)
29
+ - [Configure](#configure)
30
+ - [Privacy & Security](#privacy--security)
31
+ - [Troubleshooting](#troubleshooting)
32
+ - [Who It's For / Not For](#who-its-for--not-for)
33
+ - [Support the Author](#support-the-author)
34
+ - [License](#license)
35
+
36
+ ---
37
+
38
+ ## What You Say, What You Get
39
+
40
+ | You say …… | You get |
41
+ |---|---|
42
+ | "Search for the latest on the rust async ecosystem" | Structured search results (auto-switches to the next engine if one is down — you don't feel a thing) |
43
+ | "Grab the text of the github.com homepage" | Clean article text (nav bars / ads / clutter stripped — saves 30–70% on tokens) |
44
+ | "Open my logged-in Jira and show my to-dos" | A snapshot of the logged-in page (reuses your local Chrome; you handle 2FA yourself) |
45
+ | "This link is dead, find an archive" | The most recent snapshot from the Internet Archive |
46
+ | "List the files in my current Finder window" | A list of desktop windows and controls (a semantic tree, not a screenshot) |
47
+ | "Take a full-page screenshot of this page" / "Save as PDF" | A file path on disk (no giant blob of image data dumped into the chat) |
48
+ | "What third-party trackers did this page load?" | A resource list with tracker-domain counts |
49
+ | "List everything I can control right now" | One unified list (web pages and desktop windows all in it) |
50
+ | "Turn off dark mode" | Auto click / type / hotkey (with result verification — it confirms it actually happened) |
51
+ | "Just fetch this JSON endpoint" | Raw bytes (fastest, cheapest) |
52
+ | "This site has Cloudflare, I can't scrape it" | Cloud Chrome anti-bot bypass (off by default; you explicitly opt in) |
53
+ | "Is Lasso set up correctly?" | A health-check report (tells you what's missing) |
54
+
55
+ > You don't need to memorize any capability names. Just say what you want — Claude picks the right way to get it done.
56
+
57
+ ---
58
+
59
+ ## 💰 Cost at a Glance
60
+
61
+ Lasso itself is **completely free + MIT open source**. Here's what each capability actually costs:
62
+
63
+ | Capability | Cost | Notes |
64
+ |---|---|---|
65
+ | Lasso itself (MCP server + all core capabilities) | ✅ Free | MIT open source, free forever |
66
+ | Search (Zhipu + Brave + Bing) | ✅ Free tier available | Zhipu billed by token; Brave **2,000 queries/mo free**, Bing **1,000 queries/mo free** — usable without paying. **Already configured Zhipu's `web-search-prime` MCP on your machine? Lasso auto-detects and reuses it — no need to configure a separate ZHIPU_API_KEY** |
67
+ | Scrape public pages / screenshots / PDF / network audit / raw bytes | ✅ Free | Runs locally, no key, no payment |
68
+ | Scrape logged-in pages (reuse local Chrome) | ✅ Free | Runs locally, no key, no payment |
69
+ | Drive desktop (macOS / Windows / Linux) | ✅ Free | Built and run locally, only OS authorization needed; **optional** Apple Developer account \$99/yr for signed persistent authorization (works without signing too — just re-authorize each time) |
70
+ | Cloud browser (browserbase / stagehand) | ⚠️ Paid, off by default | Paid after trial; **costs nothing if you don't configure it** — Lasso's only paid item |
71
+
72
+ > In one sentence: **as long as you don't turn on the cloud browser, Lasso costs zero** — search has free tiers enough for daily use, and everything else is completely free.
73
+
74
+ ---
75
+
76
+ ## 60-Second Start
77
+
78
+ ### 30 seconds · One-line install (zero config)
79
+
80
+ ```bash
81
+ claude mcp add lasso -- npx -y lasso-mcp
82
+ ```
83
+
84
+ Restart Claude Code → type `/mcp` → see `lasso ✓ Connected`. Done. **No keys in the install command** — configuration is a separate step (next tier).
85
+
86
+ ### 30 seconds · With nothing configured, you can already do all this
87
+
88
+ No keys needed right after install (this is **Tier 1: zero config**):
89
+
90
+ - Scrape the text of any **public web page**, converted to clean markdown
91
+ - **Full-page screenshots** and **save-as-PDF**, returning a file path
92
+ - See **what third-party trackers a page loads**
93
+ - Fetch raw bytes from a JSON API or file directly
94
+ - Control native macOS apps (Finder / Mail / System Settings, etc. — requires a one-time tick in System Settings)
95
+
96
+ Your first output — just say to Claude:
97
+
98
+ > "Grab the text of example.com and turn it into markdown"
99
+
100
+ ### Want more? Add it in the config file (Tier 2)
101
+
102
+ - **Search** → run `lasso config init` to create `~/.lasso/config.json`, then fill in a Zhipu key (see [Configure](#configure))
103
+ - **Scrape logged-in pages** (Jira / private GitHub / company intranet) → run `lasso launch-chrome` once
104
+ - **Control the macOS desktop** → run `lasso doctor` once to be guided through authorization
105
+
106
+ How to obtain each key, what free tiers exist — see the [**Key Configuration Guide**](./doc/KEY-GUIDE.md).
107
+
108
+ ---
109
+
110
+ ## What It Can Do for You
111
+
112
+ Grouped by **what you want to do**, not by tool name. Each is one sentence in, one sentence out.
113
+
114
+ ### Search
115
+
116
+ > You: "Search for X" → structured search results
117
+
118
+ Defaults to Zhipu (strong for Chinese); you can add Brave and Bing for multi-source. **If any single source is rate-limited or down, it auto-switches to the next — you don't feel a thing.** Hitting one provider's free quota doesn't break the whole.
119
+
120
+ ### Scrape Public Pages (no login)
121
+
122
+ > You: "Grab the text of example.com" → clean article text, three granularities available
123
+
124
+ Auto-strips nav bars, ads, sidebars and other clutter — **saves 30–70% on tokens** (and money). Need citation markers (great for research, feeding RAG)? One sentence switches modes.
125
+
126
+ ### Scrape Logged-in Pages (even with 2FA)
127
+
128
+ > You: "Show me my Jira to-dos" → snapshot of the logged-in page
129
+
130
+ Reuses **your locally-logged-in Chrome** — you handle 2FA once; Lasso takes over the rest. Works for private GitHub repos, company intranets, paid-subscription content, etc.
131
+
132
+ > 🔴 **Red line**: Lasso **never solves 2FA / SMS codes / CAPTCHA / magic links for you**. You must manually pass these once in your local Chrome.
133
+
134
+ ### Fetch Raw Bytes (fastest, cheapest)
135
+
136
+ > You: "GET this JSON endpoint" → raw bytes
137
+
138
+ When you don't need to render a full page, direct HTTP is **~4× faster and ~4× cheaper** than going through a browser. Auto-detects content type (JSON / text / binary).
139
+
140
+ ### Screenshot / Archive
141
+
142
+ > You: "Take a full-page screenshot" / "Save as PDF" → file path on disk
143
+
144
+ All images and PDFs are **saved to disk and a path is returned** — no giant blob dumped into your chat to waste context.
145
+
146
+ ### See What a Page Loads
147
+
148
+ > You: "What third-party trackers did this page load?" → resource list with tracker-domain counts
149
+
150
+ Auto-identifies every resource the page loads, grouped by third-party domain — handy for spotting privacy risk and performance bottlenecks.
151
+
152
+ ### Drive Native Desktop Apps
153
+
154
+ > You: "Turn off dark mode" / "Read the first item in my Mail inbox" → automated action (with verification)
155
+
156
+ On macOS you can drive Finder / Mail / Safari / Notes / System Settings and any native app. **Windows and Linux work too** (see honest boundary below). Every action is verified — it confirms "it actually happened", never fakes success.
157
+
158
+ > **Honest boundary**: macOS is verified on real hardware; Windows / Linux pass compile-time and contract-level self-checks, but full real-machine manual testing is still in progress. **We don't fake "fully verified on Win/Linux".**
159
+
160
+ ### Unified Scheduling Across Web and Desktop
161
+
162
+ > You: "List everything I can control right now" → one unified list
163
+
164
+ Web pages and desktop windows share one list — you don't have to distinguish "this is in the browser" vs "this is on the desktop". Claude picks what to act on, and everything flows from there.
165
+
166
+ ### Revive Dead Links
167
+
168
+ > You: "This link 404s" → the most recent Internet Archive snapshot
169
+
170
+ Goes to the Internet Archive (Wayback Machine) to find the last archived copy of that URL. **It never treats a live link as dead** — only looks when you say "this is gone".
171
+
172
+ ### Anti-Bot Bypass (off by default)
173
+
174
+ > You: "This site has Cloudflare, I can't scrape it" → cloud Chrome anti-bot
175
+
176
+ **Completely off by default.** Only activates when you explicitly turn it on AND have configured a cloud-browser key. You don't need it for normal pages.
177
+
178
+ ---
179
+
180
+ ## Install
181
+
182
+ **Prerequisites**: Node.js ≥ 20; Claude Code (or any MCP-capable client).
183
+
184
+ ```bash
185
+ # Claude Code (recommended)
186
+ claude mcp add lasso -- npx -y lasso-mcp
187
+ ```
188
+
189
+ Restart Claude Code → `/mcp` → `lasso ✓ Connected`. **That's it — no keys in the install command.** Browsing / screenshots / PDF / desktop control work immediately (search is the only exception — see [Configure](#configure)).
190
+
191
+ **macOS users wanting desktop control**: run `lasso doctor` once and follow the prompts to tick `lasso-rust-helper` under "System Settings → Privacy & Security" for both Accessibility and Screen Recording (`doctor` guides you — no need to hunt for the path yourself).
192
+
193
+ ---
194
+
195
+ ## Configure
196
+
197
+ **Install is zero-config** — the install command above already enables browsing / fetching / screenshots / PDF / third-party resource inspection / desktop control. **Only search requires a key.**
198
+
199
+ ### Look up by what you want to do
200
+
201
+ | What you want | What to configure | What it unlocks |
202
+ |---|---|---|
203
+ | Scrape public pages / screenshots / PDF / see trackers / fetch raw bytes / drive desktop | **Nothing** | Works right after install |
204
+ | Search | One Zhipu key (free to apply) | The main search entry |
205
+ | Near-zero search failures (multi-source) | Add Brave / Bing keys (both have free tiers) | Auto-fails-over if one is down — you don't feel a thing |
206
+ | Scrape logged-in pages | Run `lasso launch-chrome` once | Reuses your local Chrome session |
207
+ | Drive the macOS desktop | Run `lasso doctor` once | Drive native apps |
208
+ | Scrape Cloudflare-protected sites | Double confirmation + a cloud key | Off by default; needs your explicit opt-in |
209
+
210
+ Below, each of the four modules is broken out with the shortest path to "it just works".
211
+
212
+ ### 1. Search (✅ Free · free tier; one key to start, three for near-zero failures)
213
+
214
+ **What it does**: Searches anything, returns structured results (title, snippet, link).
215
+
216
+ **Does it need a key**: Yes — but if your machine already has Zhipu's `web-search-prime` MCP configured (in your local `~/.claude.json` under `mcpServers` with type=http + Authorization), **Lasso auto-detects and reuses that key as the first-choice source at startup — no need to set a separate ZHIPU_API_KEY**. If the machine MCP is rate-limited or fails, Lasso falls back to its own configured key (fill it in below). Run `lasso doctor` and check whether `#36 machine_search_mcp` is `pass` (host=open.bigmodel.cn) or `warn` (not detected).
217
+
218
+ > Zero-config priority order: machine MCP reuse → Lasso's own `ZHIPU_API_KEY` → Brave → Bing → `browse_headless` fallback. The first one that fails auto-switches to the next; you don't feel a thing.
219
+
220
+ **How to configure** (only needed if you don't have the machine MCP / want an independent key):
221
+
222
+ ```bash
223
+ lasso config init # creates the ~/.lasso/config.json template
224
+ ```
225
+
226
+ Open `~/.lasso/config.json` and fill in:
227
+
228
+ ```json
229
+ {
230
+ "ZHIPU_API_KEY": "your_zhipu_key"
231
+ }
232
+ ```
233
+
234
+ **Want it more robust** (highly recommended): add Brave and Bing too — both have free tiers. If any single source is rate-limited or down, it auto-switches to the next and you don't feel a thing:
235
+
236
+ ```json
237
+ {
238
+ "ZHIPU_API_KEY": "your_zhipu_key",
239
+ "BRAVE_API_KEYS": "bravekey1,bravekey2,bravekey3",
240
+ "BING_API_KEYS": "bingkey1,bingkey2"
241
+ }
242
+ ```
243
+
244
+ > Separate multiple keys with commas — N keys give you N× the free quota, auto-rotated.
245
+
246
+ Key names match what's written in the table above — just fill them in. Save the file; Lasso picks it up on next start.
247
+
248
+ **How to apply for keys, free-tier quotas, multi-key rotation details** → see the [Key Configuration Guide · Search](./doc/KEY-GUIDE.md#a-搜索).
249
+
250
+ ### 2. Scrape Logged-in Pages (✅ Free · no key, run one command)
251
+
252
+ **What it does**: Scrapes pages you're logged into — Jira to-dos, private GitHub repos, company intranets, paid-subscription content.
253
+
254
+ **Does it need a key**: No.
255
+
256
+ **How to configure**: Run the command below once. It auto-detects your local Chrome and reuses every session you've already logged into (including the ones where you've already passed 2FA yourself):
257
+
258
+ ```bash
259
+ lasso launch-chrome
260
+ ```
261
+
262
+ After that, say "open my logged-in Jira" to Claude and it'll connect automatically.
263
+
264
+ > 🔴 **Red line**: 2FA / SMS codes / CAPTCHA / magic links — Lasso never solves these for you. You must manually pass them once in your local Chrome.
265
+
266
+ **Details** → [Key Configuration Guide · Logged-in Browsing](./doc/KEY-GUIDE.md#b-登录态浏览命令行配置无-key).
267
+
268
+ ### 3. Drive the Desktop (✅ Free · no key, authorize once in your OS)
269
+
270
+ **What it does**: Drives native apps on macOS / Windows / Linux (click, type, read window contents, run hotkeys).
271
+
272
+ **Does it need a key**: No.
273
+
274
+ **How to configure** (pick your OS):
275
+
276
+ - **macOS**: Run `lasso doctor` once and follow the prompts to tick `lasso-rust-helper` under "System Settings → Privacy & Security" for both **Accessibility** and **Screen Recording**. `doctor` walks you through it — no need to hunt for the path.
277
+ - **Windows**: The first time you ask Claude to do a desktop action, the system pops an authorization prompt — click "Allow" (equivalent to macOS Accessibility).
278
+ - **Linux**: Make sure the accessibility interface is installed (most GNOME / MATE desktops have it by default; if not, `sudo apt install at-spi2-core`).
279
+
280
+ > **Honest boundary**: macOS is verified on real hardware; Windows / Linux pass compile-time and contract-level self-checks, but full real-machine manual testing is still in progress. **We don't fake "fully verified on Win/Linux".**
281
+
282
+ **Details** → [Key Configuration Guide · Desktop Control](./doc/KEY-GUIDE.md#c-桌面控制系统授权无-key).
283
+
284
+ ### 4. Cloud Anti-Bot (⚠️ Paid, off by default · needs double confirmation)
285
+
286
+ **What it does**: Scrapes sites guarded by Cloudflare or heavy anti-bot protection.
287
+
288
+ **Does it need a key**: Yes — and it only activates when **you explicitly turn it on**.
289
+
290
+ **How to configure**: Both conditions must be met at the same time:
291
+
292
+ 1. Master switch: set `LASSO_ALLOW_CLOUD_BROWSER` to `true`
293
+ 2. At least one cloud key (browserbase or stagehand — pick one)
294
+
295
+ Write it into `~/.lasso/config.json`:
296
+
297
+ ```json
298
+ {
299
+ "LASSO_ALLOW_CLOUD_BROWSER": true,
300
+ "BROWSERBASE_API_KEY": "your_browserbase_key"
301
+ }
302
+ ```
303
+
304
+ > Off by default — no config means no such capability. You don't need it for normal pages, **and it only activates when you explicitly opt in**.
305
+
306
+ **How to apply for cloud keys, trial quotas** → see the [Key Configuration Guide · Cloud Browser](./doc/KEY-GUIDE.md#d-云浏览器反爬默认关双重解锁).
307
+
308
+ <details>
309
+ <summary><b>Advanced tuning (optional — ordinary users can skip)</b></summary>
310
+
311
+ You can **completely ignore** the below for daily use. These are only for special scenarios, and most can be set via `lasso config init` into `~/.lasso/config.json` or overridden via environment variables (env vars take precedence over the config file, handy for temporary swaps):
312
+
313
+ - Change the logged-in Chrome's debug port (when the default `9222` is taken)
314
+ - Move the cache / state files to a different location
315
+ - Restrict to free search sources only
316
+ - Allow company intranet / special proxy ranges
317
+ - Set your own passphrase to encrypt login cookies (if unset, macOS Keychain is used)
318
+ - Save search-result snapshots to disk (for regression testing)
319
+
320
+ Full variable list and defaults: [Key Configuration Guide · Advanced Tuning](./doc/KEY-GUIDE.md#e-高级调优可选全不配). **Surge / Clash TUN proxy networks (fake-ip) are already allowed out of the box.**
321
+
322
+ > **Backward compatible**: if you previously installed with `claude mcp add -e KEY=VAL`, those env variables **still work** and **override** the config file. The config file is just an additional, friendlier path — it does not replace env.
323
+
324
+ </details>
325
+
326
+ ---
327
+
328
+ ## Privacy & Security
329
+
330
+ Your data is yours.
331
+
332
+ - **Login cookies are never exported**, unless you explicitly opt in and have them encrypted to disk. Lasso never secretly ships your login state anywhere.
333
+ - **Desktop action logs stay local** — zero remote reporting. Lasso doesn't phone home about what you do.
334
+ - **Cloud browser is off by default** — requires your **explicit double confirmation** (master switch + key) to activate. Without it, the capability effectively doesn't exist.
335
+ - **No 2FA / CAPTCHA / verification-code solving** (red line). These always require you, in person, to pass once in your local browser.
336
+ - **Strangers can't poke at your internal services** — internal-network access is denied by default; Surge / Clash TUN proxy networks are already allowed out of the box.
337
+ - **Search results are not written to disk by default** — only if you explicitly enable recording mode (for regression testing).
338
+
339
+ ---
340
+
341
+ ## Troubleshooting
342
+
343
+ **For any problem, step one is always `lasso doctor`.** It self-checks and tells you what's misconfigured.
344
+
345
+ | Symptom | What to do |
346
+ |---|---|
347
+ | macOS desktop control doesn't work | Tick `lasso-rust-helper` under "System Settings → Privacy & Security → Accessibility / Screen Recording" (`lasso doctor` guides you) |
348
+ | Logged-in page scrape fails | Log in once manually in your local Chrome (handle 2FA too), then say "open my logged-in X" |
349
+ | Save-as-PDF fails | Say "take a full-page screenshot of this page" instead |
350
+ | Search keeps returning nothing | Check whether the key expired / quota is exhausted; adding multiple providers (Zhipu + Brave + Bing) dramatically lowers the failure rate |
351
+ | A link won't open | Say "this link is dead, find an archive" to check the Internet Archive |
352
+ | Prompted that internal-network access was blocked | Double-check the URL; TUN proxy networks are allowed by default, other internal networks need explicit permission |
353
+
354
+ Full FAQ and debugging tips in [`doc/TROUBLESHOOTING.md`](./doc/TROUBLESHOOTING.md).
355
+
356
+ ---
357
+
358
+ ## Who It's For / Not For
359
+
360
+ **For**
361
+
362
+ - **Heavy Claude Code users** — search, scrape, and drive the desktop every week, and don't want to install a separate MCP for each
363
+ - **Researchers / report writers / data folks** — search, grab clean text, revive dead links, end to end
364
+ - **People building RAG / knowledge bases** — web pages to clean markdown, with citation markers, saving tokens and money
365
+ - **Automation / DevOps folks** — drive macOS native apps, scrape logged-in internal dashboards
366
+ - **Anyone who scrapes logged-in pages often** — reuse the local Chrome session, no need to re-store credentials in config
367
+
368
+ **Not for**
369
+
370
+ - **People not using Claude Code or another MCP client** — Lasso is an MCP service and needs an MCP client to drive it
371
+ - **People who need only a single capability and already have a dedicated solution** — the all-in-one may be redundant
372
+ - **People looking to bypass 2FA / CAPTCHA** — red line; we don't do it, and won't.
373
+
374
+ ---
375
+
376
+ ## Support the Author
377
+
378
+ If Lasso helps you, buy the author a coffee ☕
379
+
380
+ <div align="center">
381
+
382
+ WeChat | Alipay
383
+ :-: | :-:
384
+ <img src="doc/support-wechat.jpg" height="200" alt="WeChat sponsor QR"> | <img src="doc/support-alipay.jpg" height="200" alt="Alipay sponsor QR">
385
+
386
+ </div>
387
+
388
+ Or ⭐ [Star this repo](../../stargazers), [open an Issue](../../issues), or [send a PR](../../pulls) — every one of them encourages the author.
389
+
390
+ ---
391
+
392
+ ## More Docs
393
+
394
+ - Deep architecture? See [Feature Architecture](doc/08-media-interact-功能架构.md)
395
+ - Version roadmap? See [Implementation Roadmap](doc/09-media-interact-实施排期.md)
396
+ - Key setup? See [Key Configuration Guide](doc/KEY-GUIDE.md)
397
+
398
+ ## License
399
+
400
+ **MIT** © wangdong233. The desktop helper process and browser-engine dependencies are all MIT / Apache-2.0 — safe for enterprise use.
401
+
402
+ > Want the internal architecture, design principles, cross-platform boundaries, and dev commands? See [ARCHITECTURE.md](./ARCHITECTURE.md) and [`doc/TROUBLESHOOTING.md`](./doc/TROUBLESHOOTING.md).
403
+
404
+ <p align="center">
405
+ <sub>Built for everyone who'd rather <strong>say it</strong> than <strong>script it</strong>.</sub><br>
406
+ <sub>Install once — search, scrape, scrape logged-in, drive desktop, all in one sentence.</sub>
407
+ </p>