unbrowse 6.17.2 → 7.0.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/README.md CHANGED
@@ -1,8 +1,6 @@
1
1
  # Unbrowse
2
2
 
3
- > ## ⚠️ The Anthropic skill path retired in v6.15.0
4
- >
5
- > Agents should connect via the **MCP server**. The CLI (`unbrowse ...`) and SDK are unaffected. Add this to your MCP host config (Claude Desktop, Cursor, Codex, or any MCP-compatible client):
3
+ > Skill, MCP server, SDK, CLI four ways to use the same local runtime. `SKILL.md` is back in this package; the MCP block below still works as the canonical agent path. Pick what your host supports.
6
4
  >
7
5
  > ```json
8
6
  > {
@@ -15,17 +13,17 @@
15
13
  > }
16
14
  > ```
17
15
  >
18
- > Then run `npx unbrowse setup` once. The `SKILL.md` file from this package was retired in v6.15.0; the MCP block above replaces it.
16
+ > Then run `npx unbrowse setup` once. The SKILL.md in this directory is loadable via `find-skills` / `/find-skills`; reading it gives an agent the same map (resolve + execute + browse-session) without an MCP host.
19
17
 
20
18
  This package installs the `unbrowse` CLI.
21
19
 
22
- Unbrowse is a local Model Context Protocol (MCP) server and CLI that turns any website into a reusable API interface for agents. It captures network traffic, reverse-engineers the real endpoints underneath the UI, and stores what it learns in a shared marketplace so the next agent can reuse it instantly.
20
+ Unbrowse is a local Model Context Protocol (MCP) server and CLI that turns websites into reusable API routes for agents. It learns callable routes from explicit browsing sessions, keeps credentials local, and shares only sanitized route metadata when you publish.
23
21
 
24
22
  One agent learns a site once. Every later agent gets the fast path.
25
23
 
26
24
  Unbrowse is a drop-in replacement for OpenClaw / `agent-browser` browser flows for agents: on the API-native path it is typically ~30x faster, ~90% cheaper, and turns repeated browser work into reusable route assets.
27
25
 
28
- > Security note: capture and execution stay local by default. Credentials stay on your machine. Learned API contracts are published to the shared marketplace only after capture.
26
+ > Security note: capture and execution stay local by default. Credentials stay on your machine. Learned routes are published to the shared marketplace only after an explicit publish checkpoint.
29
27
  ## MCP server
30
28
 
31
29
  Unbrowse implements the Model Context Protocol over stdio. `unbrowse mcp` is the MCP server entrypoint.
@@ -65,12 +63,12 @@ curl -fsSL https://unbrowse.ai/install.sh | sh
65
63
  That installer now follows the Kuri pattern: detect platform, download the matching release tarball, install `unbrowse` into `~/.local/bin`, then run `unbrowse setup`.
66
64
 
67
65
  ```bash
68
- # Deterministic setup from a repo clone
69
- git clone --single-branch --depth 1 https://github.com/unbrowse-ai/unbrowse.git ~/unbrowse
70
- cd ~/unbrowse && ./setup --host off
66
+ # Deterministic npm setup
67
+ npm install -g unbrowse
68
+ unbrowse setup
71
69
  ```
72
70
 
73
- `./setup` installs repo dependencies, prebuilds the packaged CLI runtime, installs a stable `unbrowse` shim, and then runs the real first-time bootstrap: ToS acceptance, agent registration + API-key caching, and wallet detection when present.
71
+ `unbrowse setup` runs the first-time bootstrap: ToS acceptance, agent registration + API-key caching, and wallet detection when present.
74
72
 
75
73
  If a wallet is configured, that wallet address becomes the contributor/payment truth: it is synced onto your agent profile, used as the destination for contributor payouts when your routes earn, and used as the spending wallet for paid marketplace routes.
76
74
 
@@ -91,8 +89,7 @@ On supported platforms, install now fails fast if the matching GitHub release as
91
89
  For generic MCP hosts:
92
90
 
93
91
  ```bash
94
- git clone --single-branch --depth 1 https://github.com/unbrowse-ai/unbrowse.git ~/unbrowse
95
- cd ~/unbrowse && ./setup --host mcp
92
+ npx unbrowse setup --mcp
96
93
  ```
97
94
 
98
95
  That writes a ready-to-import MCP config to `~/.config/unbrowse/mcp/unbrowse.json`. A generic template is also published at [`/mcp.json`](https://www.unbrowse.ai/mcp.json).
@@ -100,7 +97,7 @@ That writes a ready-to-import MCP config to `~/.config/unbrowse/mcp/unbrowse.jso
100
97
  If your agent host uses skills:
101
98
 
102
99
  ```bash
103
- npx skills add unbrowse-ai/unbrowse
100
+ npm install -g unbrowse
104
101
  ```
105
102
 
106
103
  ## Upgrading
@@ -181,7 +178,7 @@ The dependency graph is not just API-to-API. On JS-heavy checkout flows it also
181
178
 
182
179
  - First-time capture/indexing on a site can take 20-80 seconds. That is the slow path; repeats should be much faster.
183
180
  - For website tasks, keep the agent on Unbrowse instead of letting it drift into generic web search or ad hoc `curl`.
184
- - Reddit is still a harder target than most sites because of anti-bot protections. Prefer canonical `.json` routes when available.
181
+ - Some sites are harder targets than others. Prefer documented JSON routes when a site offers them.
185
182
 
186
183
  ## Help shape the next eval
187
184
 
@@ -191,20 +188,20 @@ If you tried Unbrowse on a site or API and could not get it to work, add it to [
191
188
 
192
189
  The synced skill repo also carries the public docs set:
193
190
 
194
- - [Quickstart](./docs/guides/quickstart.md)
195
- - [API reference](./docs/api.md)
196
- - [Deployment guide](./docs/deployment.md)
197
- - [Release checklist](./docs/RELEASING.md)
191
+ - [Quickstart](https://docs.unbrowse.ai/guides/quickstart)
192
+ - [Agent workflow](https://docs.unbrowse.ai/for-agents/how-an-agent-uses-unbrowse)
193
+ - [Integration surfaces](https://docs.unbrowse.ai/for-developers/integration-surfaces)
194
+ - [Payment model](https://docs.unbrowse.ai/HOW_UNBROWSE_PAYS)
198
195
 
199
196
  Whitepaper companion docs:
200
197
 
201
- - [Whitepaper companion index](./docs/whitepaper/README.md)
202
- - [For Technical Readers](./docs/whitepaper/for-technical-readers.md)
203
- - [For Investors](./docs/whitepaper/for-investors.md)
198
+ - [Whitepaper companion index](https://docs.unbrowse.ai/whitepaper/)
199
+ - [For Technical Readers](https://docs.unbrowse.ai/whitepaper/for-technical-readers)
200
+ - [For Investors](https://docs.unbrowse.ai/whitepaper/for-investors)
204
201
 
205
202
  ## How it works
206
203
 
207
- When an agent asks for something, Unbrowse first searches the marketplace for an existing skill. If one exists with enough confidence, it executes immediately. If not, Unbrowse captures the site, learns the APIs behind it, publishes a reusable skill, and executes that instead.
204
+ When an agent asks for something, Unbrowse first searches the marketplace for an existing skill. If one exists with enough confidence, it executes immediately. If not, Unbrowse can open a local browser session, learn reusable route metadata, and publish it only after the configured checkpoint.
208
205
 
209
206
  Every learned skill becomes discoverable by every future agent. Reliability scoring, feedback, schema drift, and verification keep the good paths hot and the broken ones out of the way.
210
207
 
@@ -214,7 +211,7 @@ When you call `POST /v1/intent/resolve`, the orchestrator follows this priority
214
211
 
215
212
  1. **Route cache** (5-min TTL) — instant hit if the same intent was recently resolved
216
213
  2. **Marketplace search** — semantic vector search ranked by composite score: 40% embedding similarity + 30% reliability + 15% freshness + 15% verification status
217
- 3. **Live capture** — headless browser records network traffic, reverse-engineers API endpoints, publishes a new skill
214
+ 3. **Local browser session** — the runtime observes allowed requests, indexes reusable route metadata, and can publish a new skill after review
218
215
  4. **DOM fallback** — if no API endpoints are found (static/SSR sites), structured data is extracted from rendered HTML
219
216
 
220
217
  Skills published by live capture become available to all agents on the network.
@@ -241,15 +238,15 @@ A background verification loop runs every 6 hours, executing safe (GET) endpoint
241
238
 
242
239
  ## Authentication for gated sites
243
240
 
244
- For most sites, auth is automatic. If you're logged into a site in Chrome or Firefox, Unbrowse reads your cookies directly from the browser's SQLite database no extra steps needed. Cookies are resolved fresh on every call, so sessions stay current. For Chromium-family apps and Electron shells, `/v1/auth/steal` also accepts a custom cookie DB path or user-data dir plus an optional macOS Safe Storage service name.
241
+ For most sites, sign-in works from your existing local browser session or from an interactive login window. Sessions stay on your machine and are reused only by your local runtime.
245
242
 
246
243
  | Strategy | How it works | When to use |
247
244
  | ------------------- | -------------------------------------------------- | ---------------------------------------------------- |
248
- | Auto cookie resolve | Reads cookie DBs from Chrome/Firefox automatically | Default — works if you're logged in via your browser |
245
+ | Local session reuse | Uses your existing local browser session | Default — works if you're logged in via your browser |
249
246
  | Yolo mode | Opens Chrome with your real profile | Sites with complex auth (OAuth popups, 2FA) |
250
247
  | Interactive login | Opens a headed browser for manual login | Fallback when auto-resolve has no cookies |
251
248
 
252
- Auth headers (CSRF tokens, API keys, authorization headers) are captured during browsing and stored in an encrypted vault (`~/.unbrowse/vault/`). Server-side fetches replay these headers automatically no browser launch needed. Cross-domain auth (e.g. lu.ma cookies working on api2.luma.com) is handled transparently. Stale credentials (401/403 responses) are auto-deleted.
249
+ Authentication material stays local, is stored encrypted, and is automatically refreshed or discarded when a site rejects it. The marketplace receives route metadata, not your private session.
253
250
 
254
251
  ## Mutation safety
255
252
 
@@ -270,7 +267,7 @@ See the public API reference below for endpoints, search, feedback, auth, and is
270
267
  | POST | `/v1/intent/resolve` | Search marketplace, capture if needed, execute |
271
268
  | POST | `/v1/skills/:id/execute` | Execute a specific skill |
272
269
  | POST | `/v1/auth/login` | Interactive browser login |
273
- | POST | `/v1/auth/steal` | Import cookies from browser/Electron storage |
270
+ | POST | `/v1/auth/import` | Import a local browser session |
274
271
  | POST | `/v1/search` | Semantic search across all domains |
275
272
  | POST | `/v1/search/domain` | Semantic search scoped to a domain |
276
273
  | POST | `/v1/feedback` | Submit feedback (affects reliability scores) |
@@ -284,11 +281,10 @@ See the public API reference below for endpoints, search, feedback, auth, and is
284
281
 
285
282
  The standalone skill repo also carries the core repo docs:
286
283
 
287
- - [Quickstart guide](./docs/guides/quickstart.md)
288
- - [API notes](./docs/api.md)
289
- - [Codex eval harness](./docs/codex-eval-harness.md)
290
- - [Deployment notes](./docs/deployment.md)
291
- - [Release checklist](./docs/RELEASING.md)
284
+ - [Quickstart guide](https://docs.unbrowse.ai/guides/quickstart)
285
+ - [Agent workflow](https://docs.unbrowse.ai/for-agents/how-an-agent-uses-unbrowse)
286
+ - [Integration surfaces](https://docs.unbrowse.ai/for-developers/integration-surfaces)
287
+ - [Payment model](https://docs.unbrowse.ai/HOW_UNBROWSE_PAYS)
292
288
 
293
289
  ## Configuration
294
290
 
@@ -296,8 +292,7 @@ The standalone skill repo also carries the core repo docs:
296
292
 
297
293
  ```
298
294
  ~/.unbrowse/config.json # API key, agent ID, registration
299
- ~/.unbrowse/vault/credentials.enc # Encrypted credential store
300
- ~/.unbrowse/vault/.key # Encryption key (mode 0o600)
295
+ ~/.unbrowse/vault/ # Encrypted local credential store
301
296
  ~/.unbrowse/skill-cache/ # Local skill manifest cache
302
297
  ~/.unbrowse/profiles/<domain>/ # Per-domain Chrome profiles
303
298
  ~/.unbrowse/logs/unbrowse-YYYY-MM-DD.log # Daily logs
@@ -323,13 +318,13 @@ src/
323
318
  ├── api/routes.ts # HTTP route definitions
324
319
  ├── orchestrator/ # Intent resolution pipeline
325
320
  ├── execution/ # Skill/endpoint execution + retry logic
326
- ├── capture/ # Headless browser traffic recording
327
- ├── reverse-engineer/ # HAR parsingendpoint extraction
321
+ ├── capture/ # Local browser session recording
322
+ ├── route-indexing/ # Captured requestsreusable route metadata
328
323
  ├── extraction/ # DOM structured data extraction
329
324
  ├── marketplace/ # Backend API client (beta-api.unbrowse.ai)
330
325
  ├── client/ # Agent registration & config management
331
- ├── auth/ # Interactive login + cookie extraction
332
- ├── vault/ # Encrypted credential storage (AES-256-CBC)
326
+ ├── auth/ # Interactive login + local session reuse
327
+ ├── vault/ # Encrypted credential storage
333
328
  ├── transform/ # Field projection + schema drift detection
334
329
  ├── verification/ # Periodic endpoint health checks
335
330
  ├── ratelimit/ # Request throttling
package/SKILL.md ADDED
@@ -0,0 +1,93 @@
1
+ ---
2
+ name: unbrowse
3
+ description: Capture once, replay everywhere — Unbrowse learns reusable route metadata from allowed browsing sessions and replays it as a fast, cheap, indexed route. Brings back the skill surface alongside the MCP server + SDK + CLI.
4
+ metadata:
5
+ type: integration
6
+ origin: unbrowse-ai/unbrowse
7
+ ---
8
+
9
+ # Unbrowse
10
+
11
+ Unbrowse turns websites into reusable API routes for agents. Teach a route once, store sanitized metadata, replay it on later calls. Typical run is 30× faster and 90× cheaper than a fresh browser session.
12
+
13
+ Three surfaces, one runtime:
14
+
15
+ | Surface | When to reach for it |
16
+ |---|---|
17
+ | **MCP server** | An MCP-host agent (Claude Desktop, Cursor, Codex, Claude Code). Tool calls like `unbrowse_resolve`, `unbrowse_execute`, `unbrowse_go` appear in the host. |
18
+ | **CLI** (`unbrowse`) | A shell session or a bash-script that wants the same surface as the MCP server, without an MCP host. |
19
+ | **SDK** (`@unbrowse/sdk`) | A TypeScript program that wants to embed Unbrowse. `npm i @unbrowse/sdk` is enough; the SDK spawns its own local binary. |
20
+
21
+ All three resolve to the same runtime workflow underneath:
22
+ - **resolve** asks "is there an indexed route for this intent + URL?" — returns a shortlist or a hard handoff.
23
+ - **execute** picks one endpoint from the shortlist and runs it — returns the real data.
24
+ - **browse-session** opens a managed browser when the API is too dynamic to predict; local capture indexes route metadata.
25
+
26
+ The two-tool flow (resolve + execute) is the agent UX north star: never one call, never three. The shortlist is structured so the calling LLM picks; execute is paid via x402 when the route is priced.
27
+
28
+ ## Quickstart
29
+
30
+ For an MCP host (Claude Desktop, Cursor, Claude Code, Codex):
31
+
32
+ ```json
33
+ {
34
+ "mcpServers": {
35
+ "unbrowse": {
36
+ "command": "npx",
37
+ "args": ["-y", "unbrowse", "mcp"]
38
+ }
39
+ }
40
+ }
41
+ ```
42
+
43
+ Then once:
44
+
45
+ ```bash
46
+ npx unbrowse setup
47
+ ```
48
+
49
+ For a shell:
50
+
51
+ ```bash
52
+ unbrowse resolve --intent "search hacker news for openai" --url https://news.ycombinator.com
53
+ unbrowse execute --skill-id <id-from-resolve> --endpoint-id <id-from-shortlist>
54
+ ```
55
+
56
+ For a Node program:
57
+
58
+ ```bash
59
+ npm i @unbrowse/sdk
60
+ ```
61
+
62
+ ```typescript
63
+ import { spawn } from '@unbrowse/sdk';
64
+ const client = await spawn();
65
+ const resolved = await client.resolve({ intent: 'search hn for openai', url: 'https://news.ycombinator.com' });
66
+ const result = await client.execute({ skillId: resolved.skill.id, endpointId: resolved.endpoints[0].id });
67
+ ```
68
+
69
+ ## /contract-shape (why three surfaces stay coherent)
70
+
71
+ Every tool call on every surface follows the same shape:
72
+
73
+ 1. **Declare** — the call carries an intent + URL.
74
+ 2. **Iterate** — the runtime tries cached → marketplace → first-pass browser → live capture, in that order. Each step appends one trace row.
75
+ 3. **Mark with proof** — the response carries a trace with `success`, `skill_id`, `endpoint_id`. The proof is the trace row.
76
+
77
+ Honest residue surfaces as a `next_step` field (`open_browse_session`, `abandon_or_authenticate`) instead of a one-word error.
78
+
79
+ ## What lives in the public docs
80
+
81
+ Every primitive Unbrowse depends on (pointer-not-payload, residential proxy fallback, interstitial shortcut, x402+Faremeter, never-leaked-fields list, domain opt-out, fair split + claim, deploy gate, dimensional bench, kuri first-principles roadmap) is documented at [`docs/public/primitives/`](../../docs/public/primitives/) in the public repo. The README index there is enforced by `scripts/check-primitives-doc-public.sh` so the folder cannot drift from the codebase.
82
+
83
+ ## Skill / MCP / SDK / CLI sync (the precommit gate)
84
+
85
+ When a shipping-surface signal changes (new top-level dir, new workspace member, new binary, new wrangler.toml target, new deploy workflow), the same commit must update a canonical doc. The gate at `scripts/precommit-doc-delta.sh` surfaces the delta as evidence on every iterate; full canonical wiring at `~/.claude/skills/meta-harness/scripts/gates/doc-delta.sh`.
86
+
87
+ The skill surface (this file) updates whenever the MCP tool catalog or the SDK API changes. The precommit gate flags it; the agent ships the update in the same commit.
88
+
89
+ ## Provenance
90
+
91
+ Source code: <https://github.com/unbrowse-ai/unbrowse-dev>
92
+ Public mirror: <https://github.com/unbrowse-ai/unbrowse>
93
+ MCP server, CLI, SDK published from this monorepo. Backend (`backend/`) is the Cloudflare Worker that handles marketplace + sponsor tier; frontend (`frontend/`) is the landing page; `packages/skill/` is this package (the npm-published CLI binary + the skill manifest you're reading).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "unbrowse",
3
- "version": "6.17.2",
3
+ "version": "7.0.0",
4
4
  "description": "Reverse-engineer any website into reusable API skills. Zero-dep single binary with embedded browser engine.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -14,6 +14,7 @@
14
14
  "scripts/postinstall-ping.mjs",
15
15
  "scripts/verify-release-assets.mjs",
16
16
  "README.md",
17
+ "SKILL.md",
17
18
  "LICENSE"
18
19
  ],
19
20
  "scripts": {
@@ -1,8 +1,8 @@
1
1
  {
2
- "repo_url": "https://github.com/lekt9/kuri.git",
3
- "branch": "feat/windows-port-wave-1",
2
+ "repo_url": "https://github.com/justrach/kuri.git",
3
+ "branch": "adding-extensions",
4
4
  "source_sha": "3cdc33c8507bd91f1ce499a69f567189e1284e4e",
5
- "built_at": "2026-05-23T13:52:07.751Z",
5
+ "built_at": "2026-05-22T07:18:34.843Z",
6
6
  "binaries": {
7
7
  "darwin-arm64": {
8
8
  "zig_target": "aarch64-macos",