alterlab-mcp-server 1.0.0 → 1.1.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.
- package/README.md +103 -0
- package/dist/client.d.ts +10 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +22 -1
- package/dist/client.js.map +1 -1
- package/dist/format.d.ts +25 -1
- package/dist/format.d.ts.map +1 -1
- package/dist/format.js +128 -2
- package/dist/format.js.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +26 -4
- package/dist/index.js.map +1 -1
- package/dist/tools/scrape.d.ts +6 -0
- package/dist/tools/scrape.d.ts.map +1 -1
- package/dist/tools/scrape.js +17 -1
- package/dist/tools/scrape.js.map +1 -1
- package/dist/tools/sessions.d.ts +91 -0
- package/dist/tools/sessions.d.ts.map +1 -0
- package/dist/tools/sessions.js +249 -0
- package/dist/tools/sessions.js.map +1 -0
- package/dist/types.d.ts +68 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +28 -6
- package/server.json +89 -0
package/README.md
CHANGED
|
@@ -167,6 +167,8 @@ Scrape a URL and return its content as markdown, text, HTML, or JSON. Automatica
|
|
|
167
167
|
| `wait_for` | string | — | CSS selector to wait for before extraction |
|
|
168
168
|
| `timeout` | number | `90` | Timeout in seconds (1-300) |
|
|
169
169
|
| `include_raw_html` | boolean | `false` | Include raw HTML alongside formatted content |
|
|
170
|
+
| `session_id` | string (UUID) | — | Stored session ID for authenticated scraping |
|
|
171
|
+
| `cookies` | `Record<string, string>` | — | Inline cookies for one-off authenticated requests |
|
|
170
172
|
|
|
171
173
|
### `alterlab_extract` — Extract Structured Data
|
|
172
174
|
|
|
@@ -231,6 +233,80 @@ Check your account balance, total deposited, and total spent. No parameters need
|
|
|
231
233
|
"Check my AlterLab balance"
|
|
232
234
|
```
|
|
233
235
|
|
|
236
|
+
### `alterlab_list_sessions` — List Stored Sessions
|
|
237
|
+
|
|
238
|
+
List all stored sessions for authenticated scraping. Sessions contain cookies for specific domains, allowing you to scrape content behind login walls.
|
|
239
|
+
|
|
240
|
+
```
|
|
241
|
+
"List my stored sessions"
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
### `alterlab_create_session` — Create a Session
|
|
245
|
+
|
|
246
|
+
Create a new stored session with cookies from a logged-in browser. The session is stored securely and can be reused across multiple scrape requests.
|
|
247
|
+
|
|
248
|
+
```
|
|
249
|
+
"Create an Amazon session with these cookies: session-id=abc123, session-token=xyz789"
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
| Parameter | Type | Default | Description |
|
|
253
|
+
|---|---|---|---|
|
|
254
|
+
| `name` | string | required | Human-readable name (e.g., "My Amazon Account") |
|
|
255
|
+
| `domain` | string | required | Domain (e.g., "amazon.com") |
|
|
256
|
+
| `cookies` | `Record<string, string>` | required | Cookie key-value pairs |
|
|
257
|
+
| `user_agent` | string | — | Browser User-Agent to use with this session |
|
|
258
|
+
|
|
259
|
+
### `alterlab_validate_session` — Validate a Session
|
|
260
|
+
|
|
261
|
+
Check whether a stored session is still active and its cookies are valid.
|
|
262
|
+
|
|
263
|
+
```
|
|
264
|
+
"Is my Amazon session still valid?"
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
| Parameter | Type | Default | Description |
|
|
268
|
+
|---|---|---|---|
|
|
269
|
+
| `session_id` | string (UUID) | required | Session ID to validate |
|
|
270
|
+
|
|
271
|
+
### `alterlab_delete_session` — Delete a Session
|
|
272
|
+
|
|
273
|
+
Permanently delete a stored session and its cookies.
|
|
274
|
+
|
|
275
|
+
```
|
|
276
|
+
"Delete session abc-123-def"
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
| Parameter | Type | Default | Description |
|
|
280
|
+
|---|---|---|---|
|
|
281
|
+
| `session_id` | string (UUID) | required | Session ID to delete |
|
|
282
|
+
|
|
283
|
+
---
|
|
284
|
+
|
|
285
|
+
## Authenticated Scraping
|
|
286
|
+
|
|
287
|
+
AlterLab MCP supports scraping pages that require authentication. This enables AI agents to access user-specific content like order histories, account dashboards, and member-only pricing.
|
|
288
|
+
|
|
289
|
+
### How It Works
|
|
290
|
+
|
|
291
|
+
1. **Create a session** with cookies from a logged-in browser using `alterlab_create_session`
|
|
292
|
+
2. **Scrape authenticated pages** by passing the `session_id` to `alterlab_scrape`
|
|
293
|
+
3. **Manage sessions** with list, validate, and delete tools
|
|
294
|
+
|
|
295
|
+
### Example: Check Amazon Prime Pricing
|
|
296
|
+
|
|
297
|
+
```
|
|
298
|
+
User: "What's my Prime member price for this product?"
|
|
299
|
+
|
|
300
|
+
Claude: [calls alterlab_list_sessions → finds Amazon session]
|
|
301
|
+
Claude: [calls alterlab_scrape with session_id for authenticated pricing]
|
|
302
|
+
Claude: "The Prime member price is $24.99 (public price: $34.99)"
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
### Inline Cookies vs Stored Sessions
|
|
306
|
+
|
|
307
|
+
- **Stored sessions** (`session_id`): Best for repeated access to the same domain. Create once, reuse across requests.
|
|
308
|
+
- **Inline cookies** (`cookies`): Best for one-off authenticated requests where you don't need to save the session.
|
|
309
|
+
|
|
234
310
|
---
|
|
235
311
|
|
|
236
312
|
## What Can You Do with AlterLab MCP?
|
|
@@ -363,6 +439,33 @@ The MCP server returns helpful error messages with suggested next actions:
|
|
|
363
439
|
|
|
364
440
|
---
|
|
365
441
|
|
|
442
|
+
## Agentic Workflows — AI Agents That Scrape the Web
|
|
443
|
+
|
|
444
|
+
AlterLab MCP turns any AI agent into a web-capable agent. Instead of relying on stale training data, your agent can fetch live information from any website during execution.
|
|
445
|
+
|
|
446
|
+
### Use Cases for AI Agents
|
|
447
|
+
|
|
448
|
+
- **Research agents** — scrape multiple sources, cross-reference facts, generate reports with citations
|
|
449
|
+
- **Data pipeline agents** — extract structured product/pricing/job data on a schedule
|
|
450
|
+
- **Competitive intelligence** — monitor competitor pages, track pricing changes, detect new features
|
|
451
|
+
- **Content generation** — scrape real data to ground LLM output in facts, not hallucinations
|
|
452
|
+
- **Lead enrichment** — scrape company websites to enrich CRM records with live data
|
|
453
|
+
- **Compliance monitoring** — check regulatory pages, terms of service, and policy updates
|
|
454
|
+
|
|
455
|
+
### Compatible AI Frameworks and Clients
|
|
456
|
+
|
|
457
|
+
Works with any tool that supports MCP (Model Context Protocol):
|
|
458
|
+
|
|
459
|
+
- **Claude Desktop** / **Claude Code** — Anthropic's AI assistant
|
|
460
|
+
- **Cursor** — AI-powered code editor
|
|
461
|
+
- **Windsurf** — Codeium's AI IDE
|
|
462
|
+
- **Cline** — VS Code AI assistant
|
|
463
|
+
- **GitHub Copilot** — via MCP configuration
|
|
464
|
+
- **Custom agents** — any framework using the MCP SDK (Python, TypeScript, Go)
|
|
465
|
+
- **n8n** — workflow automation via [n8n-nodes-alterlab](https://www.npmjs.com/package/n8n-nodes-alterlab)
|
|
466
|
+
|
|
467
|
+
---
|
|
468
|
+
|
|
366
469
|
## Contributing
|
|
367
470
|
|
|
368
471
|
```bash
|
package/dist/client.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type Config } from "./config.js";
|
|
2
|
-
import { type BalanceResponse, type CostEstimate, type UnifiedScrapeRequest, type UnifiedScrapeResponse } from "./types.js";
|
|
2
|
+
import { type BalanceResponse, type CostEstimate, type SessionCreateRequest, type SessionCreateResponse, type SessionDetailResponse, type SessionListResponse, type SessionRefreshRequest, type SessionUpdateRequest, type SessionValidateResponse, type UnifiedScrapeRequest, type UnifiedScrapeResponse } from "./types.js";
|
|
3
3
|
export declare class AlterLabClient {
|
|
4
4
|
private apiKey;
|
|
5
5
|
private apiUrl;
|
|
@@ -9,6 +9,15 @@ export declare class AlterLabClient {
|
|
|
9
9
|
scrape(params: UnifiedScrapeRequest): Promise<UnifiedScrapeResponse>;
|
|
10
10
|
estimate(params: UnifiedScrapeRequest): Promise<CostEstimate>;
|
|
11
11
|
getBalance(): Promise<BalanceResponse>;
|
|
12
|
+
listSessions(): Promise<SessionListResponse>;
|
|
13
|
+
createSession(params: SessionCreateRequest): Promise<SessionCreateResponse>;
|
|
14
|
+
validateSession(sessionId: string): Promise<SessionValidateResponse>;
|
|
15
|
+
getSession(sessionId: string): Promise<SessionDetailResponse>;
|
|
16
|
+
updateSession(sessionId: string, params: SessionUpdateRequest): Promise<SessionDetailResponse>;
|
|
17
|
+
refreshSession(sessionId: string, params: SessionRefreshRequest): Promise<SessionDetailResponse>;
|
|
18
|
+
deleteSession(sessionId: string): Promise<{
|
|
19
|
+
deleted: boolean;
|
|
20
|
+
}>;
|
|
12
21
|
fetchScreenshotAsBase64(screenshotUrl: string): Promise<string>;
|
|
13
22
|
}
|
|
14
23
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,YAAY,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,YAAY,EAEjB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC3B,MAAM,YAAY,CAAC;AAOpB,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAS;gBAEd,MAAM,EAAE,MAAM;YAMZ,OAAO;IAkDf,MAAM,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAQpE,QAAQ,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,YAAY,CAAC;IAQ7D,UAAU,IAAI,OAAO,CAAC,eAAe,CAAC;IAItC,YAAY,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAI5C,aAAa,CACjB,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,qBAAqB,CAAC;IAQ3B,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAOpE,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAO7D,aAAa,CACjB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,qBAAqB,CAAC;IAQ3B,cAAc,CAClB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,qBAAqB,CAAC;IAQ3B,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAO/D,uBAAuB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAsBtE"}
|
package/dist/client.js
CHANGED
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.AlterLabClient = void 0;
|
|
4
4
|
// Read version from package.json at build time is complex with ESM,
|
|
5
5
|
// so we hardcode it and keep in sync with package.json.
|
|
6
|
-
const VERSION = "1.
|
|
6
|
+
const VERSION = "1.1.0";
|
|
7
7
|
const MAX_RETRIES = 2;
|
|
8
8
|
class AlterLabClient {
|
|
9
9
|
apiKey;
|
|
@@ -62,6 +62,27 @@ class AlterLabClient {
|
|
|
62
62
|
async getBalance() {
|
|
63
63
|
return this.request("GET", "/api/v1/billing/balance");
|
|
64
64
|
}
|
|
65
|
+
async listSessions() {
|
|
66
|
+
return this.request("GET", "/api/v1/sessions/");
|
|
67
|
+
}
|
|
68
|
+
async createSession(params) {
|
|
69
|
+
return this.request("POST", "/api/v1/sessions/", params);
|
|
70
|
+
}
|
|
71
|
+
async validateSession(sessionId) {
|
|
72
|
+
return this.request("POST", `/api/v1/sessions/${sessionId}/validate`);
|
|
73
|
+
}
|
|
74
|
+
async getSession(sessionId) {
|
|
75
|
+
return this.request("GET", `/api/v1/sessions/${sessionId}`);
|
|
76
|
+
}
|
|
77
|
+
async updateSession(sessionId, params) {
|
|
78
|
+
return this.request("PATCH", `/api/v1/sessions/${sessionId}`, params);
|
|
79
|
+
}
|
|
80
|
+
async refreshSession(sessionId, params) {
|
|
81
|
+
return this.request("POST", `/api/v1/sessions/${sessionId}/refresh`, params);
|
|
82
|
+
}
|
|
83
|
+
async deleteSession(sessionId) {
|
|
84
|
+
return this.request("DELETE", `/api/v1/sessions/${sessionId}`);
|
|
85
|
+
}
|
|
65
86
|
async fetchScreenshotAsBase64(screenshotUrl) {
|
|
66
87
|
// screenshot_url is a relative path like /downloads/screenshots/...
|
|
67
88
|
const fullUrl = screenshotUrl.startsWith("http")
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/format.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type BalanceResponse, type CostEstimate, type UnifiedScrapeResponse } from "./types.js";
|
|
1
|
+
import { type BalanceResponse, type CostEstimate, type SessionCreateResponse, type SessionDetailResponse, type SessionListResponse, type SessionValidateResponse, type UnifiedScrapeResponse } from "./types.js";
|
|
2
2
|
/**
|
|
3
3
|
* Format a scrape response as LLM-optimized markdown.
|
|
4
4
|
* Returns primary content + a compact metadata footer.
|
|
@@ -16,4 +16,28 @@ export declare function formatEstimateResponse(estimate: CostEstimate): string;
|
|
|
16
16
|
* Format a balance response as readable text.
|
|
17
17
|
*/
|
|
18
18
|
export declare function formatBalanceResponse(balance: BalanceResponse): string;
|
|
19
|
+
/**
|
|
20
|
+
* Format a session list response as readable text.
|
|
21
|
+
*/
|
|
22
|
+
export declare function formatSessionListResponse(response: SessionListResponse): string;
|
|
23
|
+
/**
|
|
24
|
+
* Format a session create response.
|
|
25
|
+
*/
|
|
26
|
+
export declare function formatSessionCreateResponse(response: SessionCreateResponse): string;
|
|
27
|
+
/**
|
|
28
|
+
* Format a session validation response.
|
|
29
|
+
*/
|
|
30
|
+
export declare function formatSessionValidateResponse(response: SessionValidateResponse): string;
|
|
31
|
+
/**
|
|
32
|
+
* Format a session detail response (get session).
|
|
33
|
+
*/
|
|
34
|
+
export declare function formatSessionDetailResponse(response: SessionDetailResponse): string;
|
|
35
|
+
/**
|
|
36
|
+
* Format a session update response.
|
|
37
|
+
*/
|
|
38
|
+
export declare function formatSessionUpdateResponse(response: SessionDetailResponse): string;
|
|
39
|
+
/**
|
|
40
|
+
* Format a session refresh response.
|
|
41
|
+
*/
|
|
42
|
+
export declare function formatSessionRefreshResponse(response: SessionDetailResponse): string;
|
|
19
43
|
//# sourceMappingURL=format.d.ts.map
|
package/dist/format.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,qBAAqB,EAC3B,MAAM,YAAY,CAAC;AAEpB;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,qBAAqB,GAAG,MAAM,CAwD5E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,qBAAqB,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC3B,MAAM,YAAY,CAAC;AAEpB;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,qBAAqB,GAAG,MAAM,CAwD5E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,qBAAqB,GAAG,MAAM,CA2C7E;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CAarE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAWtE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,mBAAmB,GAC5B,MAAM,CAkCR;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,qBAAqB,GAC9B,MAAM,CASR;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,uBAAuB,GAChC,MAAM,CAsBR;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,qBAAqB,GAC9B,MAAM,CA4CR;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,qBAAqB,GAC9B,MAAM,CAUR;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,qBAAqB,GAC9B,MAAM,CAWR"}
|
package/dist/format.js
CHANGED
|
@@ -4,6 +4,12 @@ exports.formatScrapeResponse = formatScrapeResponse;
|
|
|
4
4
|
exports.formatExtractResponse = formatExtractResponse;
|
|
5
5
|
exports.formatEstimateResponse = formatEstimateResponse;
|
|
6
6
|
exports.formatBalanceResponse = formatBalanceResponse;
|
|
7
|
+
exports.formatSessionListResponse = formatSessionListResponse;
|
|
8
|
+
exports.formatSessionCreateResponse = formatSessionCreateResponse;
|
|
9
|
+
exports.formatSessionValidateResponse = formatSessionValidateResponse;
|
|
10
|
+
exports.formatSessionDetailResponse = formatSessionDetailResponse;
|
|
11
|
+
exports.formatSessionUpdateResponse = formatSessionUpdateResponse;
|
|
12
|
+
exports.formatSessionRefreshResponse = formatSessionRefreshResponse;
|
|
7
13
|
const types_js_1 = require("./types.js");
|
|
8
14
|
/**
|
|
9
15
|
* Format a scrape response as LLM-optimized markdown.
|
|
@@ -71,7 +77,8 @@ function formatExtractResponse(response) {
|
|
|
71
77
|
if (response.filtered_content) {
|
|
72
78
|
jsonData = response.filtered_content;
|
|
73
79
|
}
|
|
74
|
-
else if (typeof response.content === "object" &&
|
|
80
|
+
else if (typeof response.content === "object" &&
|
|
81
|
+
response.content !== null) {
|
|
75
82
|
const contentMap = response.content;
|
|
76
83
|
jsonData = contentMap.json || contentMap;
|
|
77
84
|
}
|
|
@@ -82,7 +89,9 @@ function formatExtractResponse(response) {
|
|
|
82
89
|
parts.push(`# Extracted: ${response.title}\n`);
|
|
83
90
|
}
|
|
84
91
|
parts.push("```json\n" +
|
|
85
|
-
(typeof jsonData === "string"
|
|
92
|
+
(typeof jsonData === "string"
|
|
93
|
+
? jsonData
|
|
94
|
+
: JSON.stringify(jsonData, null, 2)) +
|
|
86
95
|
"\n```");
|
|
87
96
|
// Metadata
|
|
88
97
|
const tier = response.billing.tier_used;
|
|
@@ -119,4 +128,121 @@ function formatBalanceResponse(balance) {
|
|
|
119
128
|
`- Total spent: $${spent}\n\n` +
|
|
120
129
|
`Add funds: https://alterlab.io/dashboard/billing`);
|
|
121
130
|
}
|
|
131
|
+
/**
|
|
132
|
+
* Format a session list response as readable text.
|
|
133
|
+
*/
|
|
134
|
+
function formatSessionListResponse(response) {
|
|
135
|
+
if (response.sessions.length === 0) {
|
|
136
|
+
return ("**No sessions found.**\n\n" +
|
|
137
|
+
"Create a session with `alterlab_create_session` to enable authenticated scraping.\n" +
|
|
138
|
+
"You'll need cookies from a logged-in browser session for the target domain.");
|
|
139
|
+
}
|
|
140
|
+
const parts = [`**Stored Sessions** (${response.total} total)\n`];
|
|
141
|
+
for (const session of response.sessions) {
|
|
142
|
+
const status = session.status === "active"
|
|
143
|
+
? "Active"
|
|
144
|
+
: session.status === "expired"
|
|
145
|
+
? "Expired"
|
|
146
|
+
: "Invalid";
|
|
147
|
+
const lastUsed = session.last_used_at
|
|
148
|
+
? `Last used: ${session.last_used_at}`
|
|
149
|
+
: "Never used";
|
|
150
|
+
parts.push(`- **${session.name}** (\`${session.id}\`)\n` +
|
|
151
|
+
` Domain: ${session.domain} | Status: ${status} | ` +
|
|
152
|
+
`Cookies: ${session.cookie_count} | ${lastUsed}`);
|
|
153
|
+
}
|
|
154
|
+
parts.push("\nUse a session_id with `alterlab_scrape` to scrape authenticated pages.");
|
|
155
|
+
return parts.join("\n");
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Format a session create response.
|
|
159
|
+
*/
|
|
160
|
+
function formatSessionCreateResponse(response) {
|
|
161
|
+
return (`**Session Created**\n\n` +
|
|
162
|
+
`- Name: **${response.name}**\n` +
|
|
163
|
+
`- ID: \`${response.id}\`\n` +
|
|
164
|
+
`- Domain: ${response.domain}\n` +
|
|
165
|
+
`- Status: ${response.status}\n\n` +
|
|
166
|
+
`Use this session_id with \`alterlab_scrape\` to scrape authenticated pages on ${response.domain}.`);
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Format a session validation response.
|
|
170
|
+
*/
|
|
171
|
+
function formatSessionValidateResponse(response) {
|
|
172
|
+
const statusIcon = response.valid ? "Valid" : "Invalid";
|
|
173
|
+
const parts = [
|
|
174
|
+
`**Session Validation: ${statusIcon}**\n`,
|
|
175
|
+
`- Name: **${response.name}**`,
|
|
176
|
+
`- ID: \`${response.id}\``,
|
|
177
|
+
`- Domain: ${response.domain}`,
|
|
178
|
+
`- Status: ${response.status}`,
|
|
179
|
+
];
|
|
180
|
+
if (response.reason) {
|
|
181
|
+
parts.push(`- Reason: ${response.reason}`);
|
|
182
|
+
}
|
|
183
|
+
if (!response.valid) {
|
|
184
|
+
parts.push("\nThis session can no longer be used for authenticated scraping. " +
|
|
185
|
+
"Create a new session with fresh cookies using `alterlab_create_session`.");
|
|
186
|
+
}
|
|
187
|
+
return parts.join("\n");
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Format a session detail response (get session).
|
|
191
|
+
*/
|
|
192
|
+
function formatSessionDetailResponse(response) {
|
|
193
|
+
const parts = [
|
|
194
|
+
`**Session: ${response.name}**\n`,
|
|
195
|
+
`- ID: \`${response.id}\``,
|
|
196
|
+
`- Domain: ${response.domain}`,
|
|
197
|
+
`- Status: ${response.status}`,
|
|
198
|
+
`- Cookies: ${response.cookie_names.length} (${response.cookie_names.join(", ")})`,
|
|
199
|
+
];
|
|
200
|
+
if (response.header_names && response.header_names.length > 0) {
|
|
201
|
+
parts.push(`- Custom headers: ${response.header_names.length} (${response.header_names.join(", ")})`);
|
|
202
|
+
}
|
|
203
|
+
if (response.expires_at) {
|
|
204
|
+
const expiryLabel = response.expiry_status
|
|
205
|
+
? ` (${response.expiry_status})`
|
|
206
|
+
: "";
|
|
207
|
+
parts.push(`- Expires: ${response.expires_at}${expiryLabel}`);
|
|
208
|
+
}
|
|
209
|
+
parts.push(`\n**Usage Stats**`, `- Total requests: ${response.total_requests}`, `- Successful: ${response.successful_requests}`, `- Success rate: ${(response.success_rate * 100).toFixed(1)}%`, `- Consecutive failures: ${response.consecutive_failures}`);
|
|
210
|
+
if (response.last_used_at) {
|
|
211
|
+
parts.push(`- Last used: ${response.last_used_at}`);
|
|
212
|
+
}
|
|
213
|
+
if (response.last_validated_at) {
|
|
214
|
+
parts.push(`- Last validated: ${response.last_validated_at}`);
|
|
215
|
+
}
|
|
216
|
+
if (response.notes) {
|
|
217
|
+
parts.push(`\n**Notes**: ${response.notes}`);
|
|
218
|
+
}
|
|
219
|
+
parts.push(`\n- Created: ${response.created_at}`);
|
|
220
|
+
parts.push(`- Updated: ${response.updated_at}`);
|
|
221
|
+
return parts.join("\n");
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Format a session update response.
|
|
225
|
+
*/
|
|
226
|
+
function formatSessionUpdateResponse(response) {
|
|
227
|
+
return (`**Session Updated**\n\n` +
|
|
228
|
+
`- Name: **${response.name}**\n` +
|
|
229
|
+
`- ID: \`${response.id}\`\n` +
|
|
230
|
+
`- Domain: ${response.domain}\n` +
|
|
231
|
+
`- Status: ${response.status}\n` +
|
|
232
|
+
`- Cookies: ${response.cookie_names.length}\n\n` +
|
|
233
|
+
`Session has been updated successfully.`);
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Format a session refresh response.
|
|
237
|
+
*/
|
|
238
|
+
function formatSessionRefreshResponse(response) {
|
|
239
|
+
return (`**Session Cookies Refreshed**\n\n` +
|
|
240
|
+
`- Name: **${response.name}**\n` +
|
|
241
|
+
`- ID: \`${response.id}\`\n` +
|
|
242
|
+
`- Domain: ${response.domain}\n` +
|
|
243
|
+
`- Status: ${response.status}\n` +
|
|
244
|
+
`- Cookies: ${response.cookie_names.length}\n\n` +
|
|
245
|
+
`Cookies have been rotated and failure counters reset. ` +
|
|
246
|
+
`The session is ready for authenticated scraping.`);
|
|
247
|
+
}
|
|
122
248
|
//# sourceMappingURL=format.js.map
|
package/dist/format.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
2
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
3
|
+
/**
|
|
4
|
+
* Smithery sandbox: allows registry to scan tools without real credentials.
|
|
5
|
+
*/
|
|
6
|
+
export declare function createSandboxServer(): McpServer;
|
|
3
7
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAsJpE;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,SAAS,CAK/C"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
"use strict";
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.createSandboxServer = createSandboxServer;
|
|
4
5
|
const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
|
|
5
6
|
const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
|
|
6
7
|
const client_js_1 = require("./client.js");
|
|
@@ -10,12 +11,12 @@ const extract_js_1 = require("./tools/extract.js");
|
|
|
10
11
|
const screenshot_js_1 = require("./tools/screenshot.js");
|
|
11
12
|
const estimate_js_1 = require("./tools/estimate.js");
|
|
12
13
|
const balance_js_1 = require("./tools/balance.js");
|
|
13
|
-
|
|
14
|
-
|
|
14
|
+
const sessions_js_1 = require("./tools/sessions.js");
|
|
15
|
+
function createServer(config) {
|
|
15
16
|
const client = new client_js_1.AlterLabClient(config);
|
|
16
17
|
const server = new mcp_js_1.McpServer({
|
|
17
18
|
name: "alterlab",
|
|
18
|
-
version: "1.
|
|
19
|
+
version: "1.1.1",
|
|
19
20
|
});
|
|
20
21
|
// Register tools
|
|
21
22
|
server.tool("alterlab_scrape", scrape_js_1.scrapeDescription, scrape_js_1.scrapeSchema.shape, (params) => (0, scrape_js_1.handleScrape)(client, params));
|
|
@@ -23,7 +24,28 @@ async function main() {
|
|
|
23
24
|
server.tool("alterlab_screenshot", screenshot_js_1.screenshotDescription, screenshot_js_1.screenshotSchema.shape, (params) => (0, screenshot_js_1.handleScreenshot)(client, params));
|
|
24
25
|
server.tool("alterlab_estimate_cost", estimate_js_1.estimateDescription, estimate_js_1.estimateSchema.shape, (params) => (0, estimate_js_1.handleEstimate)(client, params));
|
|
25
26
|
server.tool("alterlab_check_balance", balance_js_1.balanceDescription, balance_js_1.balanceSchema.shape, () => (0, balance_js_1.handleBalance)(client));
|
|
26
|
-
//
|
|
27
|
+
// Session management tools
|
|
28
|
+
server.tool("alterlab_list_sessions", sessions_js_1.listSessionsDescription, sessions_js_1.listSessionsSchema.shape, () => (0, sessions_js_1.handleListSessions)(client));
|
|
29
|
+
server.tool("alterlab_create_session", sessions_js_1.createSessionDescription, sessions_js_1.createSessionSchema.shape, (params) => (0, sessions_js_1.handleCreateSession)(client, params));
|
|
30
|
+
server.tool("alterlab_get_session", sessions_js_1.getSessionDescription, sessions_js_1.getSessionSchema.shape, (params) => (0, sessions_js_1.handleGetSession)(client, params));
|
|
31
|
+
server.tool("alterlab_update_session", sessions_js_1.updateSessionDescription, sessions_js_1.updateSessionSchema.shape, (params) => (0, sessions_js_1.handleUpdateSession)(client, params));
|
|
32
|
+
server.tool("alterlab_refresh_session", sessions_js_1.refreshSessionDescription, sessions_js_1.refreshSessionSchema.shape, (params) => (0, sessions_js_1.handleRefreshSession)(client, params));
|
|
33
|
+
server.tool("alterlab_validate_session", sessions_js_1.validateSessionDescription, sessions_js_1.validateSessionSchema.shape, (params) => (0, sessions_js_1.handleValidateSession)(client, params));
|
|
34
|
+
server.tool("alterlab_delete_session", sessions_js_1.deleteSessionDescription, sessions_js_1.deleteSessionSchema.shape, (params) => (0, sessions_js_1.handleDeleteSession)(client, params));
|
|
35
|
+
return server;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Smithery sandbox: allows registry to scan tools without real credentials.
|
|
39
|
+
*/
|
|
40
|
+
function createSandboxServer() {
|
|
41
|
+
return createServer({
|
|
42
|
+
apiKey: "sandbox-key",
|
|
43
|
+
apiUrl: "https://api.alterlab.io",
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
async function main() {
|
|
47
|
+
const config = (0, config_js_1.loadConfig)();
|
|
48
|
+
const server = createServer(config);
|
|
27
49
|
const transport = new stdio_js_1.StdioServerTransport();
|
|
28
50
|
await server.connect(transport);
|
|
29
51
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/scrape.d.ts
CHANGED
|
@@ -11,6 +11,8 @@ export declare const scrapeSchema: z.ZodObject<{
|
|
|
11
11
|
wait_for: z.ZodOptional<z.ZodString>;
|
|
12
12
|
timeout: z.ZodDefault<z.ZodNumber>;
|
|
13
13
|
include_raw_html: z.ZodDefault<z.ZodBoolean>;
|
|
14
|
+
session_id: z.ZodOptional<z.ZodString>;
|
|
15
|
+
cookies: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
14
16
|
}, "strip", z.ZodTypeAny, {
|
|
15
17
|
url: string;
|
|
16
18
|
timeout: number;
|
|
@@ -21,6 +23,8 @@ export declare const scrapeSchema: z.ZodObject<{
|
|
|
21
23
|
include_raw_html: boolean;
|
|
22
24
|
proxy_country?: string | undefined;
|
|
23
25
|
wait_for?: string | undefined;
|
|
26
|
+
session_id?: string | undefined;
|
|
27
|
+
cookies?: Record<string, string> | undefined;
|
|
24
28
|
}, {
|
|
25
29
|
url: string;
|
|
26
30
|
timeout?: number | undefined;
|
|
@@ -31,6 +35,8 @@ export declare const scrapeSchema: z.ZodObject<{
|
|
|
31
35
|
proxy_country?: string | undefined;
|
|
32
36
|
wait_for?: string | undefined;
|
|
33
37
|
include_raw_html?: boolean | undefined;
|
|
38
|
+
session_id?: string | undefined;
|
|
39
|
+
cookies?: Record<string, string> | undefined;
|
|
34
40
|
}>;
|
|
35
41
|
export declare const scrapeDescription: string;
|
|
36
42
|
export declare function handleScrape(client: AlterLabClient, params: z.infer<typeof scrapeSchema>): Promise<CallToolResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scrape.d.ts","sourceRoot":"","sources":["../../src/tools/scrape.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAInD,eAAO,MAAM,YAAY
|
|
1
|
+
{"version":3,"file":"scrape.d.ts","sourceRoot":"","sources":["../../src/tools/scrape.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAInD,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqDvB,CAAC;AAEH,eAAO,MAAM,iBAAiB,QAMwD,CAAC;AAEvF,wBAAsB,YAAY,CAChC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,GACnC,OAAO,CAAC,cAAc,CAAC,CA6BzB"}
|
package/dist/tools/scrape.js
CHANGED
|
@@ -41,12 +41,26 @@ exports.scrapeSchema = zod_1.z.object({
|
|
|
41
41
|
.boolean()
|
|
42
42
|
.default(false)
|
|
43
43
|
.describe("Include raw HTML in the response alongside formatted content"),
|
|
44
|
+
session_id: zod_1.z
|
|
45
|
+
.string()
|
|
46
|
+
.uuid()
|
|
47
|
+
.optional()
|
|
48
|
+
.describe("UUID of a stored session for authenticated scraping. " +
|
|
49
|
+
"Use alterlab_list_sessions to find available sessions. " +
|
|
50
|
+
"The session's cookies will be injected into the request."),
|
|
51
|
+
cookies: zod_1.z
|
|
52
|
+
.record(zod_1.z.string(), zod_1.z.string())
|
|
53
|
+
.optional()
|
|
54
|
+
.describe("Inline cookies as key-value pairs for authenticated scraping " +
|
|
55
|
+
"(e.g., {\"session_token\": \"abc123\"}). " +
|
|
56
|
+
"Use this for one-off requests; use session_id for reusable sessions."),
|
|
44
57
|
});
|
|
45
58
|
exports.scrapeDescription = "Scrape a URL and return its content as markdown, text, HTML, or JSON. " +
|
|
46
59
|
"Automatically handles anti-bot protection with tier escalation. " +
|
|
47
60
|
"Returns markdown by default — optimized for LLM context. " +
|
|
48
61
|
"Use render_js=true for JavaScript-heavy sites (React, Angular, SPAs). " +
|
|
49
|
-
"Use use_proxy=true for geo-restricted or heavily protected sites."
|
|
62
|
+
"Use use_proxy=true for geo-restricted or heavily protected sites. " +
|
|
63
|
+
"Supports authenticated scraping via session_id (stored session) or inline cookies.";
|
|
50
64
|
async function handleScrape(client, params) {
|
|
51
65
|
try {
|
|
52
66
|
const response = await client.scrape({
|
|
@@ -57,6 +71,8 @@ async function handleScrape(client, params) {
|
|
|
57
71
|
timeout: params.timeout,
|
|
58
72
|
include_raw_html: params.include_raw_html,
|
|
59
73
|
wait_for: params.wait_for,
|
|
74
|
+
session_id: params.session_id,
|
|
75
|
+
cookies: params.cookies,
|
|
60
76
|
advanced: {
|
|
61
77
|
render_js: params.render_js,
|
|
62
78
|
use_proxy: params.use_proxy,
|
package/dist/tools/scrape.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scrape.js","sourceRoot":"","sources":["../../src/tools/scrape.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"scrape.js","sourceRoot":"","sources":["../../src/tools/scrape.ts"],"names":[],"mappings":";;;AAqEA,oCAgCC;AArGD,6BAAwB;AAGxB,4CAAgE;AAChE,4CAAoD;AAEvC,QAAA,YAAY,GAAG,OAAC,CAAC,MAAM,CAAC;IACnC,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;IAC/C,IAAI,EAAE,OAAC;SACJ,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;SAC1C,OAAO,CAAC,MAAM,CAAC;SACf,QAAQ,CAAC,6EAA6E,CAAC;IAC1F,OAAO,EAAE,OAAC;SACP,KAAK,CAAC,OAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;SACnD,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC;SACrB,QAAQ,CAAC,wDAAwD,CAAC;IACrE,SAAS,EAAE,OAAC;SACT,OAAO,EAAE;SACT,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,oFAAoF,CAAC;IACjG,SAAS,EAAE,OAAC;SACT,OAAO,EAAE;SACT,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,qFAAqF,CAAC;IAClG,aAAa,EAAE,OAAC;SACb,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,gFAAgF,CAAC;IAC7F,QAAQ,EAAE,OAAC;SACR,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,4EAA4E,CAAC;IACzF,OAAO,EAAE,OAAC;SACP,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,OAAO,CAAC,EAAE,CAAC;SACX,QAAQ,CAAC,oCAAoC,CAAC;IACjD,gBAAgB,EAAE,OAAC;SAChB,OAAO,EAAE;SACT,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,8DAA8D,CAAC;IAC3E,UAAU,EAAE,OAAC;SACV,MAAM,EAAE;SACR,IAAI,EAAE;SACN,QAAQ,EAAE;SACV,QAAQ,CACP,uDAAuD;QACvD,yDAAyD;QACzD,0DAA0D,CAC3D;IACH,OAAO,EAAE,OAAC;SACP,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC;SAC9B,QAAQ,EAAE;SACV,QAAQ,CACP,+DAA+D;QAC/D,2CAA2C;QAC3C,sEAAsE,CACvE;CACJ,CAAC,CAAC;AAEU,QAAA,iBAAiB,GAC5B,wEAAwE;IACxE,kEAAkE;IAClE,2DAA2D;IAC3D,wEAAwE;IACxE,oEAAoE;IACpE,oFAAoF,CAAC;AAEhF,KAAK,UAAU,YAAY,CAChC,MAAsB,EACtB,MAAoC;IAEpC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;YACnC,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,QAAQ,EAAE;gBACR,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,aAAa,EAAE,MAAM,CAAC,aAAa;gBACnC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;aAC9C;SACF,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAA,gCAAoB,EAAC,QAAQ,CAAC,EAAE,CAAC;SAClE,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,IAAA,6BAAiB,EAAC,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,IAAA,6BAAiB,EAAC,KAAc,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;IAChE,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IAChC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,QAAQ,IAAI,KAAK;QACjB,OAAQ,KAAkB,CAAC,MAAM,KAAK,QAAQ,CAC/C,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import type { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
|
|
3
|
+
import type { AlterLabClient } from "../client.js";
|
|
4
|
+
export declare const listSessionsSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
|
|
5
|
+
export declare const listSessionsDescription: string;
|
|
6
|
+
export declare function handleListSessions(client: AlterLabClient): Promise<CallToolResult>;
|
|
7
|
+
export declare const createSessionSchema: z.ZodObject<{
|
|
8
|
+
name: z.ZodString;
|
|
9
|
+
domain: z.ZodString;
|
|
10
|
+
cookies: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
11
|
+
user_agent: z.ZodOptional<z.ZodString>;
|
|
12
|
+
}, "strip", z.ZodTypeAny, {
|
|
13
|
+
name: string;
|
|
14
|
+
cookies: Record<string, string>;
|
|
15
|
+
domain: string;
|
|
16
|
+
user_agent?: string | undefined;
|
|
17
|
+
}, {
|
|
18
|
+
name: string;
|
|
19
|
+
cookies: Record<string, string>;
|
|
20
|
+
domain: string;
|
|
21
|
+
user_agent?: string | undefined;
|
|
22
|
+
}>;
|
|
23
|
+
export declare const createSessionDescription: string;
|
|
24
|
+
export declare function handleCreateSession(client: AlterLabClient, params: z.infer<typeof createSessionSchema>): Promise<CallToolResult>;
|
|
25
|
+
export declare const validateSessionSchema: z.ZodObject<{
|
|
26
|
+
session_id: z.ZodString;
|
|
27
|
+
}, "strip", z.ZodTypeAny, {
|
|
28
|
+
session_id: string;
|
|
29
|
+
}, {
|
|
30
|
+
session_id: string;
|
|
31
|
+
}>;
|
|
32
|
+
export declare const validateSessionDescription: string;
|
|
33
|
+
export declare function handleValidateSession(client: AlterLabClient, params: z.infer<typeof validateSessionSchema>): Promise<CallToolResult>;
|
|
34
|
+
export declare const getSessionSchema: z.ZodObject<{
|
|
35
|
+
session_id: z.ZodString;
|
|
36
|
+
}, "strip", z.ZodTypeAny, {
|
|
37
|
+
session_id: string;
|
|
38
|
+
}, {
|
|
39
|
+
session_id: string;
|
|
40
|
+
}>;
|
|
41
|
+
export declare const getSessionDescription: string;
|
|
42
|
+
export declare function handleGetSession(client: AlterLabClient, params: z.infer<typeof getSessionSchema>): Promise<CallToolResult>;
|
|
43
|
+
export declare const updateSessionSchema: z.ZodObject<{
|
|
44
|
+
session_id: z.ZodString;
|
|
45
|
+
name: z.ZodOptional<z.ZodString>;
|
|
46
|
+
cookies: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
47
|
+
headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
48
|
+
expires_at: z.ZodOptional<z.ZodString>;
|
|
49
|
+
notes: z.ZodOptional<z.ZodString>;
|
|
50
|
+
}, "strip", z.ZodTypeAny, {
|
|
51
|
+
session_id: string;
|
|
52
|
+
name?: string | undefined;
|
|
53
|
+
headers?: Record<string, string> | undefined;
|
|
54
|
+
cookies?: Record<string, string> | undefined;
|
|
55
|
+
expires_at?: string | undefined;
|
|
56
|
+
notes?: string | undefined;
|
|
57
|
+
}, {
|
|
58
|
+
session_id: string;
|
|
59
|
+
name?: string | undefined;
|
|
60
|
+
headers?: Record<string, string> | undefined;
|
|
61
|
+
cookies?: Record<string, string> | undefined;
|
|
62
|
+
expires_at?: string | undefined;
|
|
63
|
+
notes?: string | undefined;
|
|
64
|
+
}>;
|
|
65
|
+
export declare const updateSessionDescription: string;
|
|
66
|
+
export declare function handleUpdateSession(client: AlterLabClient, params: z.infer<typeof updateSessionSchema>): Promise<CallToolResult>;
|
|
67
|
+
export declare const refreshSessionSchema: z.ZodObject<{
|
|
68
|
+
session_id: z.ZodString;
|
|
69
|
+
cookies: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
70
|
+
headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
71
|
+
}, "strip", z.ZodTypeAny, {
|
|
72
|
+
session_id: string;
|
|
73
|
+
headers?: Record<string, string> | undefined;
|
|
74
|
+
cookies?: Record<string, string> | undefined;
|
|
75
|
+
}, {
|
|
76
|
+
session_id: string;
|
|
77
|
+
headers?: Record<string, string> | undefined;
|
|
78
|
+
cookies?: Record<string, string> | undefined;
|
|
79
|
+
}>;
|
|
80
|
+
export declare const refreshSessionDescription: string;
|
|
81
|
+
export declare function handleRefreshSession(client: AlterLabClient, params: z.infer<typeof refreshSessionSchema>): Promise<CallToolResult>;
|
|
82
|
+
export declare const deleteSessionSchema: z.ZodObject<{
|
|
83
|
+
session_id: z.ZodString;
|
|
84
|
+
}, "strip", z.ZodTypeAny, {
|
|
85
|
+
session_id: string;
|
|
86
|
+
}, {
|
|
87
|
+
session_id: string;
|
|
88
|
+
}>;
|
|
89
|
+
export declare const deleteSessionDescription: string;
|
|
90
|
+
export declare function handleDeleteSession(client: AlterLabClient, params: z.infer<typeof deleteSessionSchema>): Promise<CallToolResult>;
|
|
91
|
+
//# sourceMappingURL=sessions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/tools/sessions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAenD,eAAO,MAAM,kBAAkB,gDAAe,CAAC;AAE/C,eAAO,MAAM,uBAAuB,QAI+C,CAAC;AAEpF,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,cAAc,CAAC,CAYzB;AAMD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;EAsB9B,CAAC;AAEH,eAAO,MAAM,wBAAwB,QAIc,CAAC;AAEpD,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,GAC1C,OAAO,CAAC,cAAc,CAAC,CAiBzB;AAMD,eAAO,MAAM,qBAAqB;;;;;;EAEhC,CAAC;AAEH,eAAO,MAAM,0BAA0B,QAGgB,CAAC;AAExD,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,GAC5C,OAAO,CAAC,cAAc,CAAC,CAczB;AAMD,eAAO,MAAM,gBAAgB;;;;;;EAE3B,CAAC;AAEH,eAAO,MAAM,qBAAqB,QAIqB,CAAC;AAExD,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,GACvC,OAAO,CAAC,cAAc,CAAC,CAYzB;AAMD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;EA8B9B,CAAC;AAEH,eAAO,MAAM,wBAAwB,QAIuC,CAAC;AAE7E,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,GAC1C,OAAO,CAAC,cAAc,CAAC,CAazB;AAMD,eAAO,MAAM,oBAAoB;;;;;;;;;;;;EAa/B,CAAC;AAEH,eAAO,MAAM,yBAAyB,QAIW,CAAC;AAElD,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,GAC3C,OAAO,CAAC,cAAc,CAAC,CAazB;AAMD,eAAO,MAAM,mBAAmB;;;;;;EAE9B,CAAC;AAEH,eAAO,MAAM,wBAAwB,QAE4C,CAAC;AAElF,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,GAC1C,OAAO,CAAC,cAAc,CAAC,CAiBzB"}
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.deleteSessionDescription = exports.deleteSessionSchema = exports.refreshSessionDescription = exports.refreshSessionSchema = exports.updateSessionDescription = exports.updateSessionSchema = exports.getSessionDescription = exports.getSessionSchema = exports.validateSessionDescription = exports.validateSessionSchema = exports.createSessionDescription = exports.createSessionSchema = exports.listSessionsDescription = exports.listSessionsSchema = void 0;
|
|
4
|
+
exports.handleListSessions = handleListSessions;
|
|
5
|
+
exports.handleCreateSession = handleCreateSession;
|
|
6
|
+
exports.handleValidateSession = handleValidateSession;
|
|
7
|
+
exports.handleGetSession = handleGetSession;
|
|
8
|
+
exports.handleUpdateSession = handleUpdateSession;
|
|
9
|
+
exports.handleRefreshSession = handleRefreshSession;
|
|
10
|
+
exports.handleDeleteSession = handleDeleteSession;
|
|
11
|
+
const zod_1 = require("zod");
|
|
12
|
+
const errors_js_1 = require("../errors.js");
|
|
13
|
+
const format_js_1 = require("../format.js");
|
|
14
|
+
// ============================================================================
|
|
15
|
+
// List Sessions
|
|
16
|
+
// ============================================================================
|
|
17
|
+
exports.listSessionsSchema = zod_1.z.object({});
|
|
18
|
+
exports.listSessionsDescription = "List all stored sessions for authenticated scraping. " +
|
|
19
|
+
"Sessions contain cookies for specific domains, allowing you to scrape " +
|
|
20
|
+
"content that requires login (e.g., Amazon order history, LinkedIn profiles). " +
|
|
21
|
+
"Use the returned session_id with alterlab_scrape to scrape authenticated pages.";
|
|
22
|
+
async function handleListSessions(client) {
|
|
23
|
+
try {
|
|
24
|
+
const response = await client.listSessions();
|
|
25
|
+
return {
|
|
26
|
+
content: [{ type: "text", text: (0, format_js_1.formatSessionListResponse)(response) }],
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
if (isApiError(error)) {
|
|
31
|
+
return (0, errors_js_1.formatErrorResult)(error);
|
|
32
|
+
}
|
|
33
|
+
return (0, errors_js_1.formatErrorResult)(error);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
// ============================================================================
|
|
37
|
+
// Create Session
|
|
38
|
+
// ============================================================================
|
|
39
|
+
exports.createSessionSchema = zod_1.z.object({
|
|
40
|
+
name: zod_1.z
|
|
41
|
+
.string()
|
|
42
|
+
.min(1)
|
|
43
|
+
.max(100)
|
|
44
|
+
.describe("Human-readable name for this session (e.g., 'My Amazon Account')"),
|
|
45
|
+
domain: zod_1.z
|
|
46
|
+
.string()
|
|
47
|
+
.min(1)
|
|
48
|
+
.describe("Domain this session is for (e.g., 'amazon.com')"),
|
|
49
|
+
cookies: zod_1.z
|
|
50
|
+
.record(zod_1.z.string(), zod_1.z.string())
|
|
51
|
+
.describe("Cookie key-value pairs for authentication " +
|
|
52
|
+
'(e.g., {"session-id": "abc123", "session-token": "xyz789"})'),
|
|
53
|
+
user_agent: zod_1.z
|
|
54
|
+
.string()
|
|
55
|
+
.optional()
|
|
56
|
+
.describe("Browser User-Agent string to use with this session"),
|
|
57
|
+
});
|
|
58
|
+
exports.createSessionDescription = "Create a new stored session for authenticated scraping. " +
|
|
59
|
+
"Provide cookies from a logged-in browser session to enable scraping " +
|
|
60
|
+
"behind login walls. The session is stored securely and can be reused " +
|
|
61
|
+
"across multiple scrape requests via session_id.";
|
|
62
|
+
async function handleCreateSession(client, params) {
|
|
63
|
+
try {
|
|
64
|
+
const response = await client.createSession({
|
|
65
|
+
name: params.name,
|
|
66
|
+
domain: params.domain,
|
|
67
|
+
cookies: params.cookies,
|
|
68
|
+
user_agent: params.user_agent,
|
|
69
|
+
});
|
|
70
|
+
return {
|
|
71
|
+
content: [{ type: "text", text: (0, format_js_1.formatSessionCreateResponse)(response) }],
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
if (isApiError(error)) {
|
|
76
|
+
return (0, errors_js_1.formatErrorResult)(error);
|
|
77
|
+
}
|
|
78
|
+
return (0, errors_js_1.formatErrorResult)(error);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
// ============================================================================
|
|
82
|
+
// Validate Session
|
|
83
|
+
// ============================================================================
|
|
84
|
+
exports.validateSessionSchema = zod_1.z.object({
|
|
85
|
+
session_id: zod_1.z.string().uuid().describe("UUID of the session to validate"),
|
|
86
|
+
});
|
|
87
|
+
exports.validateSessionDescription = "Validate whether a stored session is still active and its cookies are valid. " +
|
|
88
|
+
"Run this before scraping if you suspect a session may have expired. " +
|
|
89
|
+
"Returns the session status and a reason if invalid.";
|
|
90
|
+
async function handleValidateSession(client, params) {
|
|
91
|
+
try {
|
|
92
|
+
const response = await client.validateSession(params.session_id);
|
|
93
|
+
return {
|
|
94
|
+
content: [
|
|
95
|
+
{ type: "text", text: (0, format_js_1.formatSessionValidateResponse)(response) },
|
|
96
|
+
],
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
if (isApiError(error)) {
|
|
101
|
+
return (0, errors_js_1.formatErrorResult)(error);
|
|
102
|
+
}
|
|
103
|
+
return (0, errors_js_1.formatErrorResult)(error);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
// ============================================================================
|
|
107
|
+
// Get Session
|
|
108
|
+
// ============================================================================
|
|
109
|
+
exports.getSessionSchema = zod_1.z.object({
|
|
110
|
+
session_id: zod_1.z.string().uuid().describe("UUID of the session to retrieve"),
|
|
111
|
+
});
|
|
112
|
+
exports.getSessionDescription = "Get detailed information about a specific stored session. " +
|
|
113
|
+
"Returns session status, cookie names, usage statistics (total requests, " +
|
|
114
|
+
"success rate), expiry info, and notes. Use this to inspect a session " +
|
|
115
|
+
"before deciding to validate, refresh, or delete it.";
|
|
116
|
+
async function handleGetSession(client, params) {
|
|
117
|
+
try {
|
|
118
|
+
const response = await client.getSession(params.session_id);
|
|
119
|
+
return {
|
|
120
|
+
content: [{ type: "text", text: (0, format_js_1.formatSessionDetailResponse)(response) }],
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
if (isApiError(error)) {
|
|
125
|
+
return (0, errors_js_1.formatErrorResult)(error);
|
|
126
|
+
}
|
|
127
|
+
return (0, errors_js_1.formatErrorResult)(error);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
// ============================================================================
|
|
131
|
+
// Update Session
|
|
132
|
+
// ============================================================================
|
|
133
|
+
exports.updateSessionSchema = zod_1.z.object({
|
|
134
|
+
session_id: zod_1.z.string().uuid().describe("UUID of the session to update"),
|
|
135
|
+
name: zod_1.z
|
|
136
|
+
.string()
|
|
137
|
+
.min(1)
|
|
138
|
+
.max(100)
|
|
139
|
+
.optional()
|
|
140
|
+
.describe("New name for the session"),
|
|
141
|
+
cookies: zod_1.z
|
|
142
|
+
.record(zod_1.z.string(), zod_1.z.string())
|
|
143
|
+
.optional()
|
|
144
|
+
.describe("New cookie key-value pairs — replaces ALL existing cookies " +
|
|
145
|
+
'(e.g., {"session-id": "new123", "session-token": "newxyz"})'),
|
|
146
|
+
headers: zod_1.z
|
|
147
|
+
.record(zod_1.z.string(), zod_1.z.string())
|
|
148
|
+
.optional()
|
|
149
|
+
.describe("New custom headers — replaces ALL existing headers"),
|
|
150
|
+
expires_at: zod_1.z
|
|
151
|
+
.string()
|
|
152
|
+
.optional()
|
|
153
|
+
.describe("New expiration date in ISO 8601 format (e.g., '2026-12-31T23:59:59Z')"),
|
|
154
|
+
notes: zod_1.z
|
|
155
|
+
.string()
|
|
156
|
+
.max(1000)
|
|
157
|
+
.optional()
|
|
158
|
+
.describe("Notes or description for this session"),
|
|
159
|
+
});
|
|
160
|
+
exports.updateSessionDescription = "Update a stored session's properties. You can change the name, rotate " +
|
|
161
|
+
"cookies, update custom headers, set a new expiration, or add notes. " +
|
|
162
|
+
"When cookies are provided, they replace ALL existing cookies (not merged). " +
|
|
163
|
+
"Use this instead of delete+recreate when you need to rotate credentials.";
|
|
164
|
+
async function handleUpdateSession(client, params) {
|
|
165
|
+
try {
|
|
166
|
+
const { session_id, ...updateFields } = params;
|
|
167
|
+
const response = await client.updateSession(session_id, updateFields);
|
|
168
|
+
return {
|
|
169
|
+
content: [{ type: "text", text: (0, format_js_1.formatSessionUpdateResponse)(response) }],
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
catch (error) {
|
|
173
|
+
if (isApiError(error)) {
|
|
174
|
+
return (0, errors_js_1.formatErrorResult)(error);
|
|
175
|
+
}
|
|
176
|
+
return (0, errors_js_1.formatErrorResult)(error);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
// ============================================================================
|
|
180
|
+
// Refresh Session
|
|
181
|
+
// ============================================================================
|
|
182
|
+
exports.refreshSessionSchema = zod_1.z.object({
|
|
183
|
+
session_id: zod_1.z.string().uuid().describe("UUID of the session to refresh"),
|
|
184
|
+
cookies: zod_1.z
|
|
185
|
+
.record(zod_1.z.string(), zod_1.z.string())
|
|
186
|
+
.optional()
|
|
187
|
+
.describe("New cookie key-value pairs to replace the old ones. " +
|
|
188
|
+
"If omitted, only failure counters are reset."),
|
|
189
|
+
headers: zod_1.z
|
|
190
|
+
.record(zod_1.z.string(), zod_1.z.string())
|
|
191
|
+
.optional()
|
|
192
|
+
.describe("Updated custom headers to include with the session"),
|
|
193
|
+
});
|
|
194
|
+
exports.refreshSessionDescription = "Refresh a session by rotating its cookies and resetting failure counters. " +
|
|
195
|
+
"This is the preferred way to update cookies after re-authenticating in " +
|
|
196
|
+
"your browser. The session status is reset to active. If cookies are " +
|
|
197
|
+
"omitted, only the failure counters are reset.";
|
|
198
|
+
async function handleRefreshSession(client, params) {
|
|
199
|
+
try {
|
|
200
|
+
const { session_id, ...refreshFields } = params;
|
|
201
|
+
const response = await client.refreshSession(session_id, refreshFields);
|
|
202
|
+
return {
|
|
203
|
+
content: [{ type: "text", text: (0, format_js_1.formatSessionRefreshResponse)(response) }],
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
catch (error) {
|
|
207
|
+
if (isApiError(error)) {
|
|
208
|
+
return (0, errors_js_1.formatErrorResult)(error);
|
|
209
|
+
}
|
|
210
|
+
return (0, errors_js_1.formatErrorResult)(error);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
// ============================================================================
|
|
214
|
+
// Delete Session
|
|
215
|
+
// ============================================================================
|
|
216
|
+
exports.deleteSessionSchema = zod_1.z.object({
|
|
217
|
+
session_id: zod_1.z.string().uuid().describe("UUID of the session to delete"),
|
|
218
|
+
});
|
|
219
|
+
exports.deleteSessionDescription = "Delete a stored session. This permanently removes the session and its " +
|
|
220
|
+
"cookies. Use this when a session is no longer needed or has been compromised.";
|
|
221
|
+
async function handleDeleteSession(client, params) {
|
|
222
|
+
try {
|
|
223
|
+
await client.deleteSession(params.session_id);
|
|
224
|
+
return {
|
|
225
|
+
content: [
|
|
226
|
+
{
|
|
227
|
+
type: "text",
|
|
228
|
+
text: `Session \`${params.session_id}\` has been deleted.`,
|
|
229
|
+
},
|
|
230
|
+
],
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
catch (error) {
|
|
234
|
+
if (isApiError(error)) {
|
|
235
|
+
return (0, errors_js_1.formatErrorResult)(error);
|
|
236
|
+
}
|
|
237
|
+
return (0, errors_js_1.formatErrorResult)(error);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
// ============================================================================
|
|
241
|
+
// Helpers
|
|
242
|
+
// ============================================================================
|
|
243
|
+
function isApiError(error) {
|
|
244
|
+
return (typeof error === "object" &&
|
|
245
|
+
error !== null &&
|
|
246
|
+
"status" in error &&
|
|
247
|
+
typeof error.status === "number");
|
|
248
|
+
}
|
|
249
|
+
//# sourceMappingURL=sessions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/tools/sessions.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -21,6 +21,74 @@ export interface UnifiedScrapeRequest {
|
|
|
21
21
|
wait_for?: string;
|
|
22
22
|
screenshot?: boolean;
|
|
23
23
|
wait_until?: string;
|
|
24
|
+
session_id?: string;
|
|
25
|
+
cookies?: Record<string, string>;
|
|
26
|
+
}
|
|
27
|
+
export interface Session {
|
|
28
|
+
id: string;
|
|
29
|
+
name: string;
|
|
30
|
+
domain: string;
|
|
31
|
+
status: "active" | "expired" | "invalid";
|
|
32
|
+
created_at: string;
|
|
33
|
+
updated_at: string;
|
|
34
|
+
last_used_at?: string;
|
|
35
|
+
expires_at?: string;
|
|
36
|
+
cookie_count: number;
|
|
37
|
+
}
|
|
38
|
+
export interface SessionListResponse {
|
|
39
|
+
sessions: Session[];
|
|
40
|
+
total: number;
|
|
41
|
+
}
|
|
42
|
+
export interface SessionCreateRequest {
|
|
43
|
+
name: string;
|
|
44
|
+
domain: string;
|
|
45
|
+
cookies: Record<string, string>;
|
|
46
|
+
user_agent?: string;
|
|
47
|
+
}
|
|
48
|
+
export interface SessionCreateResponse {
|
|
49
|
+
id: string;
|
|
50
|
+
name: string;
|
|
51
|
+
domain: string;
|
|
52
|
+
status: "active";
|
|
53
|
+
created_at: string;
|
|
54
|
+
}
|
|
55
|
+
export interface SessionValidateResponse {
|
|
56
|
+
id: string;
|
|
57
|
+
name: string;
|
|
58
|
+
domain: string;
|
|
59
|
+
status: "active" | "expired" | "invalid";
|
|
60
|
+
valid: boolean;
|
|
61
|
+
reason?: string;
|
|
62
|
+
}
|
|
63
|
+
export interface SessionDetailResponse {
|
|
64
|
+
id: string;
|
|
65
|
+
name: string;
|
|
66
|
+
domain: string;
|
|
67
|
+
cookie_names: string[];
|
|
68
|
+
header_names?: string[];
|
|
69
|
+
status: string;
|
|
70
|
+
expires_at?: string;
|
|
71
|
+
last_validated_at?: string;
|
|
72
|
+
consecutive_failures: number;
|
|
73
|
+
last_used_at?: string;
|
|
74
|
+
total_requests: number;
|
|
75
|
+
successful_requests: number;
|
|
76
|
+
success_rate: number;
|
|
77
|
+
notes?: string;
|
|
78
|
+
expiry_status?: string;
|
|
79
|
+
created_at: string;
|
|
80
|
+
updated_at: string;
|
|
81
|
+
}
|
|
82
|
+
export interface SessionUpdateRequest {
|
|
83
|
+
name?: string;
|
|
84
|
+
cookies?: Record<string, string>;
|
|
85
|
+
headers?: Record<string, string>;
|
|
86
|
+
expires_at?: string;
|
|
87
|
+
notes?: string;
|
|
88
|
+
}
|
|
89
|
+
export interface SessionRefreshRequest {
|
|
90
|
+
cookies?: Record<string, string>;
|
|
91
|
+
headers?: Record<string, string>;
|
|
24
92
|
}
|
|
25
93
|
export interface TierEscalationDetail {
|
|
26
94
|
tier: string;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC;IAC9C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,OAAO,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC,EAAE,CAAC;IACpD,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kBAAkB,CAAC,EACf,MAAM,GACN,SAAS,GACT,SAAS,GACT,aAAa,GACb,KAAK,GACL,QAAQ,GACR,OAAO,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAMD,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,oBAAoB,EAAE,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,OAAO,EAAE,cAAc,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACtC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAMD,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAO7C,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAO9C,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;;;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;;;AAgL/E,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAElE,QAAA,UAAU,GAA2B;IAChD,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,SAAS;IACd,KAAK,EAAE,SAAS;IAChB,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,SAAS;CACf,CAAC;AAEW,QAAA,WAAW,GAA2B;IACjD,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,SAAS;IACd,KAAK,EAAE,SAAS;IAChB,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,OAAO;CACb,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "alterlab-mcp-server",
|
|
3
|
-
"
|
|
4
|
-
"
|
|
3
|
+
"mcpName": "io.alterlab/mcp-server",
|
|
4
|
+
"version": "1.1.1",
|
|
5
|
+
"description": "MCP server for web scraping, structured data extraction, and screenshots — give Claude, Cursor, Windsurf, and AI agents the ability to scrape any website with automatic anti-bot bypass",
|
|
5
6
|
"main": "dist/index.js",
|
|
6
7
|
"types": "dist/index.d.ts",
|
|
7
8
|
"bin": {
|
|
@@ -14,16 +15,36 @@
|
|
|
14
15
|
},
|
|
15
16
|
"keywords": [
|
|
16
17
|
"mcp",
|
|
17
|
-
"
|
|
18
|
-
"web-scraping",
|
|
19
|
-
"alterlab",
|
|
18
|
+
"mcp-server",
|
|
20
19
|
"model-context-protocol",
|
|
20
|
+
"web-scraping",
|
|
21
|
+
"scraping",
|
|
22
|
+
"scraper",
|
|
23
|
+
"crawler",
|
|
24
|
+
"crawling",
|
|
25
|
+
"data-extraction",
|
|
26
|
+
"structured-data",
|
|
27
|
+
"screenshot",
|
|
28
|
+
"ai-agent",
|
|
29
|
+
"agentic",
|
|
30
|
+
"llm",
|
|
31
|
+
"llm-tools",
|
|
21
32
|
"claude",
|
|
22
33
|
"cursor",
|
|
23
|
-
"windsurf"
|
|
34
|
+
"windsurf",
|
|
35
|
+
"cline",
|
|
36
|
+
"copilot",
|
|
37
|
+
"anti-bot",
|
|
38
|
+
"headless-browser",
|
|
39
|
+
"proxy",
|
|
40
|
+
"alterlab"
|
|
24
41
|
],
|
|
25
42
|
"author": "AlterLab",
|
|
26
43
|
"license": "MIT",
|
|
44
|
+
"repository": {
|
|
45
|
+
"type": "git",
|
|
46
|
+
"url": "https://github.com/RapierCraft/alterlab-mcp-server.git"
|
|
47
|
+
},
|
|
27
48
|
"dependencies": {
|
|
28
49
|
"@modelcontextprotocol/sdk": "^1.12.1",
|
|
29
50
|
"zod": "^3.24.2"
|
|
@@ -37,6 +58,7 @@
|
|
|
37
58
|
},
|
|
38
59
|
"files": [
|
|
39
60
|
"dist",
|
|
61
|
+
"server.json",
|
|
40
62
|
"README.md",
|
|
41
63
|
"LICENSE"
|
|
42
64
|
]
|
package/server.json
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://registry.modelcontextprotocol.io/schemas/server.json",
|
|
3
|
+
"name": "io.alterlab/mcp-server",
|
|
4
|
+
"description": "Web scraping and structured data extraction MCP server. Scrape any website with automatic anti-bot bypass (Cloudflare, DataDome, Akamai), extract structured JSON with AI, take screenshots, and manage authenticated sessions. Works with Claude, Cursor, Windsurf, Cline, and any MCP-compatible AI agent.",
|
|
5
|
+
"repository": {
|
|
6
|
+
"url": "https://github.com/RapierCraft/alterlab-mcp-server",
|
|
7
|
+
"source": "github"
|
|
8
|
+
},
|
|
9
|
+
"version_detail": {
|
|
10
|
+
"version": "1.1.1",
|
|
11
|
+
"release_date": "2026-03-31",
|
|
12
|
+
"is_latest": true
|
|
13
|
+
},
|
|
14
|
+
"packages": [
|
|
15
|
+
{
|
|
16
|
+
"registry_type": "npm",
|
|
17
|
+
"name": "alterlab-mcp-server",
|
|
18
|
+
"version": "1.1.1",
|
|
19
|
+
"runtime": "node",
|
|
20
|
+
"runtime_arguments": [],
|
|
21
|
+
"package_arguments": [],
|
|
22
|
+
"environment_variables": [
|
|
23
|
+
{
|
|
24
|
+
"name": "ALTERLAB_API_KEY",
|
|
25
|
+
"description": "Your AlterLab API key (starts with sk_live_). Get one at https://alterlab.io",
|
|
26
|
+
"required": true,
|
|
27
|
+
"is_secret": true
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"name": "ALTERLAB_API_URL",
|
|
31
|
+
"description": "API base URL (defaults to https://api.alterlab.io)",
|
|
32
|
+
"required": false,
|
|
33
|
+
"is_secret": false
|
|
34
|
+
}
|
|
35
|
+
]
|
|
36
|
+
}
|
|
37
|
+
],
|
|
38
|
+
"tools": [
|
|
39
|
+
{
|
|
40
|
+
"name": "alterlab_scrape",
|
|
41
|
+
"description": "Scrape any website with anti-bot bypass and proxy rotation. Returns clean text, HTML, markdown, or JSON."
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"name": "alterlab_extract",
|
|
45
|
+
"description": "Extract structured data from any URL using AI. Define a schema and get back typed JSON."
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"name": "alterlab_screenshot",
|
|
49
|
+
"description": "Take a screenshot of any webpage with configurable viewport and format."
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"name": "alterlab_estimate_cost",
|
|
53
|
+
"description": "Estimate the credit cost of a scrape before running it."
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"name": "alterlab_check_balance",
|
|
57
|
+
"description": "Check your current account balance and credit usage."
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"name": "alterlab_list_sessions",
|
|
61
|
+
"description": "List all active authenticated browser sessions."
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"name": "alterlab_create_session",
|
|
65
|
+
"description": "Create a new authenticated browser session with cookies for logged-in scraping."
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"name": "alterlab_get_session",
|
|
69
|
+
"description": "Get details of a specific authenticated session."
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"name": "alterlab_update_session",
|
|
73
|
+
"description": "Update cookies or settings on an existing session."
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"name": "alterlab_refresh_session",
|
|
77
|
+
"description": "Refresh an authenticated session to extend its lifetime."
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"name": "alterlab_validate_session",
|
|
81
|
+
"description": "Validate that a session's cookies are still active and working."
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"name": "alterlab_delete_session",
|
|
85
|
+
"description": "Delete an authenticated browser session."
|
|
86
|
+
}
|
|
87
|
+
],
|
|
88
|
+
"remotes": []
|
|
89
|
+
}
|