alterlab-mcp-server 1.7.0 → 1.9.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 (83) hide show
  1. package/README.md +75 -33
  2. package/dist/auth.d.ts +30 -0
  3. package/dist/auth.d.ts.map +1 -0
  4. package/dist/auth.js +423 -0
  5. package/dist/auth.js.map +1 -0
  6. package/dist/client.d.ts +23 -1
  7. package/dist/client.d.ts.map +1 -1
  8. package/dist/client.js +61 -3
  9. package/dist/client.js.map +1 -1
  10. package/dist/config.d.ts +21 -1
  11. package/dist/config.d.ts.map +1 -1
  12. package/dist/config.js +85 -8
  13. package/dist/config.js.map +1 -1
  14. package/dist/errors.d.ts.map +1 -1
  15. package/dist/errors.js +6 -4
  16. package/dist/errors.js.map +1 -1
  17. package/dist/format.d.ts +20 -2
  18. package/dist/format.d.ts.map +1 -1
  19. package/dist/format.js +187 -9
  20. package/dist/format.js.map +1 -1
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +66 -2
  23. package/dist/index.js.map +1 -1
  24. package/dist/tools/balance.d.ts.map +1 -1
  25. package/dist/tools/balance.js +4 -2
  26. package/dist/tools/balance.js.map +1 -1
  27. package/dist/tools/batch.d.ts +1221 -25
  28. package/dist/tools/batch.d.ts.map +1 -1
  29. package/dist/tools/batch.js +123 -34
  30. package/dist/tools/batch.js.map +1 -1
  31. package/dist/tools/common.d.ts +313 -0
  32. package/dist/tools/common.d.ts.map +1 -0
  33. package/dist/tools/common.js +336 -0
  34. package/dist/tools/common.js.map +1 -0
  35. package/dist/tools/crawl.d.ts +165 -10
  36. package/dist/tools/crawl.d.ts.map +1 -1
  37. package/dist/tools/crawl.js +191 -43
  38. package/dist/tools/crawl.js.map +1 -1
  39. package/dist/tools/estimate.d.ts +21 -6
  40. package/dist/tools/estimate.d.ts.map +1 -1
  41. package/dist/tools/estimate.js +28 -35
  42. package/dist/tools/estimate.js.map +1 -1
  43. package/dist/tools/extract.d.ts +5 -5
  44. package/dist/tools/extract.d.ts.map +1 -1
  45. package/dist/tools/extract.js +16 -12
  46. package/dist/tools/extract.js.map +1 -1
  47. package/dist/tools/job.d.ts +13 -0
  48. package/dist/tools/job.d.ts.map +1 -0
  49. package/dist/tools/job.js +62 -0
  50. package/dist/tools/job.js.map +1 -0
  51. package/dist/tools/map.d.ts +5 -2
  52. package/dist/tools/map.d.ts.map +1 -1
  53. package/dist/tools/map.js +16 -5
  54. package/dist/tools/map.js.map +1 -1
  55. package/dist/tools/scrape.d.ts +431 -49
  56. package/dist/tools/scrape.d.ts.map +1 -1
  57. package/dist/tools/scrape.js +267 -135
  58. package/dist/tools/scrape.js.map +1 -1
  59. package/dist/tools/screenshot.d.ts +33 -0
  60. package/dist/tools/screenshot.d.ts.map +1 -1
  61. package/dist/tools/screenshot.js +60 -10
  62. package/dist/tools/screenshot.js.map +1 -1
  63. package/dist/tools/search.d.ts +11 -5
  64. package/dist/tools/search.d.ts.map +1 -1
  65. package/dist/tools/search.js +22 -6
  66. package/dist/tools/search.js.map +1 -1
  67. package/dist/tools/sessions.d.ts +180 -12
  68. package/dist/tools/sessions.d.ts.map +1 -1
  69. package/dist/tools/sessions.js +75 -21
  70. package/dist/tools/sessions.js.map +1 -1
  71. package/dist/tools/simple_batch.d.ts +28 -0
  72. package/dist/tools/simple_batch.d.ts.map +1 -0
  73. package/dist/tools/simple_batch.js +142 -0
  74. package/dist/tools/simple_batch.js.map +1 -0
  75. package/dist/tools/usage.d.ts +7 -0
  76. package/dist/tools/usage.d.ts.map +1 -0
  77. package/dist/tools/usage.js +42 -0
  78. package/dist/tools/usage.js.map +1 -0
  79. package/dist/types.d.ts +219 -21
  80. package/dist/types.d.ts.map +1 -1
  81. package/dist/types.js.map +1 -1
  82. package/package.json +5 -3
  83. package/server.json +40 -4
@@ -1,16 +1,37 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.crawlCancelDescription = exports.crawlCancelSchema = exports.crawlStatusDescription = exports.crawlStatusSchema = exports.crawlDescription = exports.crawlSchema = void 0;
4
+ exports.buildCrawlRequest = buildCrawlRequest;
4
5
  exports.handleCrawl = handleCrawl;
5
6
  exports.handleCrawlStatus = handleCrawlStatus;
6
7
  exports.handleCrawlCancel = handleCrawlCancel;
7
8
  const zod_1 = require("zod");
8
9
  const errors_js_1 = require("../errors.js");
10
+ const format_js_1 = require("../format.js");
11
+ const common_js_1 = require("./common.js");
9
12
  // ============================================================================
10
13
  // Start Crawl
11
14
  // ============================================================================
15
+ const crawlCostControlsSchema = zod_1.z
16
+ .object({
17
+ max_credits: zod_1.z
18
+ .number()
19
+ .int()
20
+ .positive()
21
+ .optional()
22
+ .describe("Hard spending cap in credits for the entire crawl"),
23
+ max_tier: common_js_1.tierEnum
24
+ .optional()
25
+ .describe("Maximum tier to use for page scrapes " +
26
+ "(1=curl $0.0002, 2=http $0.0003, 3=stealth $0.002, 3.5=lightjs $0.0025, 4=browser $0.004). " +
27
+ "render_js=true with a max_tier below 4 is rejected (render_js forces tier 4)."),
28
+ force_tier: common_js_1.tierEnum
29
+ .optional()
30
+ .describe("Force all pages to use this exact tier, bypassing per-page escalation"),
31
+ })
32
+ .describe("Cost controls for the entire crawl — cap total spend or pin the scraping tier");
12
33
  exports.crawlSchema = zod_1.z.object({
13
- url: zod_1.z.string().url().describe("Start URL for the crawl"),
34
+ url: zod_1.z.string().url().max(2083).describe("Start URL for the crawl"),
14
35
  max_pages: zod_1.z
15
36
  .number()
16
37
  .int()
@@ -27,37 +48,69 @@ exports.crawlSchema = zod_1.z.object({
27
48
  .describe("Maximum link-following depth from start URL (0 = start page only)"),
28
49
  include_patterns: zod_1.z
29
50
  .array(zod_1.z.string())
51
+ .max(50)
30
52
  .optional()
31
53
  .describe("Glob patterns — only scrape URLs whose path matches at least one (e.g., ['/blog/*', '/docs/*'])"),
32
54
  exclude_patterns: zod_1.z
33
55
  .array(zod_1.z.string())
56
+ .max(50)
34
57
  .optional()
35
58
  .describe("Glob patterns — skip URLs whose path matches any (e.g., ['/tag/*', '/author/*'])"),
36
59
  sitemap: zod_1.z
37
60
  .enum(["include", "skip", "only"])
38
61
  .default("include")
39
62
  .describe("Sitemap mode: include (default), skip (link extraction only), only (sitemap URLs only)"),
63
+ sitemap_path: zod_1.z
64
+ .string()
65
+ .optional()
66
+ .describe("Explicit path to the sitemap file (e.g., '/sitemap_index.xml'). " +
67
+ "Use when the sitemap is not at the standard /sitemap.xml location."),
68
+ budget: zod_1.z
69
+ .record(zod_1.z.string(), zod_1.z.number().int())
70
+ .optional()
71
+ .describe("Per-path page budget: glob pattern -> max pages, most specific pattern wins, '*' is the catch-all " +
72
+ '(e.g., {"/products/*": 100, "/blog/*": 50, "*": 5}). max_pages stays the hard cap.'),
73
+ priority: zod_1.z
74
+ .object({
75
+ keywords: zod_1.z.array(zod_1.z.string()).optional().describe("Crawl pages matching these keywords first"),
76
+ boost_patterns: zod_1.z.array(zod_1.z.string()).optional().describe("URL glob patterns to crawl earlier"),
77
+ demote_patterns: zod_1.z.array(zod_1.z.string()).optional().describe("URL glob patterns to crawl later"),
78
+ })
79
+ .optional()
80
+ .describe("Crawl prioritisation hints (keywords, boost_patterns, demote_patterns)"),
40
81
  formats: zod_1.z
41
- .array(zod_1.z.enum(["text", "json", "json_v2", "html", "markdown"]))
82
+ .array(common_js_1.crawlFormatEnum)
42
83
  .optional()
43
- .describe("Output formats for each scraped page"),
84
+ .describe("Output formats for each scraped page. " + common_js_1.FORMATS_DESCRIPTION),
85
+ extraction: zod_1.z
86
+ .literal("auto")
87
+ .optional()
88
+ .describe("Set to 'auto' for automatic page-type detection and extraction without a user-defined schema. " +
89
+ "Mutually exclusive with extraction_schema."),
44
90
  extraction_schema: zod_1.z
45
91
  .record(zod_1.z.unknown())
46
92
  .optional()
47
93
  .describe("JSON schema for structured extraction on each page"),
94
+ extraction_profile: common_js_1.extractionProfileEnum
95
+ .optional()
96
+ .describe("Pre-defined extraction profile applied to every crawled page. " +
97
+ "'auto' detects the page type automatically."),
98
+ extraction_template: common_js_1.extractionProfileEnum
99
+ .optional()
100
+ .describe("Alias for extraction_profile (mutually exclusive with it)"),
101
+ extraction_provider: common_js_1.extractionProviderEnum
102
+ .optional()
103
+ .describe("BYOK LLM provider used for extraction on each page"),
48
104
  extraction_model: zod_1.z
49
105
  .string()
50
106
  .nullish()
51
107
  .describe("Per-request LLM model override in provider-specific format (e.g. 'gpt-4o', 'claude-opus-4-5-20251101', 'llama3-70b-8192'). " +
52
108
  "Overrides the model saved in your BYOK key settings for this request only."),
53
- render_js: zod_1.z
54
- .union([zod_1.z.boolean(), zod_1.z.literal("auto")])
55
- .default(false)
56
- .describe("Render JavaScript on crawled pages. true=always (Tier 4), false=never, auto=smart detection per page"),
57
- use_proxy: zod_1.z
58
- .boolean()
59
- .default(false)
60
- .describe("Route all crawl requests through premium proxy"),
109
+ headers: zod_1.z
110
+ .record(zod_1.z.string(), zod_1.z.string())
111
+ .optional()
112
+ .describe("Custom HTTP headers injected into every page request during the crawl " +
113
+ '(e.g., {"Authorization": "Bearer token"}). Maximum 50 headers.'),
61
114
  max_concurrency: zod_1.z
62
115
  .number()
63
116
  .int()
@@ -73,45 +126,135 @@ exports.crawlSchema = zod_1.z.object({
73
126
  .boolean()
74
127
  .default(false)
75
128
  .describe("Include links to subdomains during discovery"),
76
- block_images: zod_1.z
129
+ change_tracking: zod_1.z
130
+ .object({
131
+ enabled: zod_1.z.boolean().optional(),
132
+ tracking_id: zod_1.z
133
+ .string()
134
+ .max(200)
135
+ .optional()
136
+ .describe("Stable ID to compare this crawl against earlier crawls with the same ID"),
137
+ mode: zod_1.z.enum(["content", "structured"]).optional(),
138
+ include_diff: zod_1.z.boolean().optional().describe("Include a diff of changed pages"),
139
+ })
140
+ .optional()
141
+ .describe("Track page changes between crawls"),
142
+ render_js: zod_1.z
143
+ .union([zod_1.z.boolean(), zod_1.z.literal("auto")])
144
+ .optional()
145
+ .describe("Render JavaScript on crawled pages. true=always (Tier 4, $0.004/page), false=never, auto=smart detection per page"),
146
+ screenshot: zod_1.z
77
147
  .boolean()
78
- .default(false)
79
- .describe("Block image downloads during browser rendering on each crawled page. " +
80
- "Reduces proxy bandwidth and speeds up crawls. Only effective with render_js=true."),
148
+ .optional()
149
+ .describe("Capture a screenshot of each crawled page (requires render_js)"),
150
+ use_proxy: zod_1.z
151
+ .boolean()
152
+ .optional()
153
+ .describe("Route all crawl requests through premium proxy (+$0.0002/page)"),
154
+ wait_for: zod_1.z
155
+ .string()
156
+ .optional()
157
+ .describe("CSS selector to wait for before extracting each page (e.g., '#main-content'). " +
158
+ "Applied to all pages in the crawl."),
159
+ timeout: zod_1.z
160
+ .number()
161
+ .int()
162
+ .min(1)
163
+ .max(300)
164
+ .optional()
165
+ .describe("Per-page request timeout in seconds (1-300)"),
166
+ delay: zod_1.z
167
+ .number()
168
+ .min(0)
169
+ .max(30)
170
+ .optional()
171
+ .describe("Politeness delay between page requests, in seconds (0-30)"),
172
+ depth_strategy: zod_1.z
173
+ .enum(["eager", "sequential"])
174
+ .optional()
175
+ .describe("Link-discovery strategy (API default 'sequential')"),
81
176
  webhook_url: zod_1.z
82
177
  .string()
83
178
  .url()
179
+ .max(2083)
84
180
  .optional()
85
181
  .describe("Webhook URL to notify on crawl completion"),
182
+ webhook: zod_1.z
183
+ .object({
184
+ url: zod_1.z.string().url().max(2083),
185
+ events: zod_1.z.array(zod_1.z.string()).optional().describe("Event names to deliver (default: all)"),
186
+ secret: zod_1.z
187
+ .string()
188
+ .min(8)
189
+ .max(256)
190
+ .optional()
191
+ .describe("Signing secret for webhook payloads (8-256 chars)"),
192
+ headers: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).optional(),
193
+ metadata: zod_1.z.record(zod_1.z.unknown()).optional().describe("Opaque metadata echoed in every event"),
194
+ })
195
+ .optional()
196
+ .describe("Detailed webhook config (events, signing secret, headers); use instead of webhook_url"),
197
+ storage: zod_1.z
198
+ .enum(["redis", "s3", "r2"])
199
+ .optional()
200
+ .describe("Where crawl results are stored (API default 'redis')"),
201
+ cache: zod_1.z.boolean().optional().describe("Serve pages from the response cache when available"),
202
+ cache_ttl: zod_1.z
203
+ .number()
204
+ .int()
205
+ .min(60)
206
+ .max(86400)
207
+ .optional()
208
+ .describe("Cache TTL in seconds (60-86400). Requires cache=true"),
209
+ force_refresh: zod_1.z
210
+ .boolean()
211
+ .optional()
212
+ .describe("Bypass the cache and fetch every page fresh"),
213
+ cost_controls: crawlCostControlsSchema.optional(),
86
214
  });
87
- exports.crawlDescription = "Start an asynchronous crawl of an entire website. " +
88
- "Discovers URLs via sitemap parsing and link extraction, then scrapes each page. " +
215
+ exports.crawlDescription = "Crawl an entire website for RAG, index all pages on a site, or build a knowledge base from a domain. " +
216
+ "Automatically bypasses anti-bot protection on every page — works on Cloudflare-protected sites. " +
217
+ "Discovers URLs via sitemap parsing and link extraction, then scrapes each page asynchronously. " +
218
+ "Each page is billed at the tier that succeeds (tier 1 $0.0002 ... tier 4 $0.004). " +
219
+ "Returns content as clean markdown, text, or structured data. " +
89
220
  "Returns a crawl_id immediately — use alterlab_crawl_status to poll results. " +
90
- "Use include_patterns/exclude_patterns to scope the crawl to specific sections. " +
221
+ "Use include_patterns/exclude_patterns to scope the crawl to specific sections; budget to allocate pages per path. " +
91
222
  "Use render_js='auto' for mixed sites to save 30-60% vs always rendering. " +
92
- "Supports extraction_schema to extract structured data from every page.";
223
+ "Supports extraction_schema, extraction_profile or extraction='auto' to extract structured data from every page. " +
224
+ "Use cost_controls to cap total credits or pin the scraping tier for all pages. " +
225
+ "Use sitemap_path to specify a non-standard sitemap location. " +
226
+ "Use headers to inject custom HTTP headers (e.g., Authorization) into every page request. " +
227
+ "Use change_tracking to detect page changes between runs; webhook/webhook_url for completion events.";
228
+ const CRAWL_ADVANCED_KEYS = [
229
+ "render_js",
230
+ "screenshot",
231
+ "use_proxy",
232
+ "wait_for",
233
+ "timeout",
234
+ "delay",
235
+ "depth_strategy",
236
+ ];
237
+ /** Translate flat crawl tool parameters into the API's CrawlRequest. Exported for tests. */
238
+ function buildCrawlRequest(params) {
239
+ const { extraction_model, cost_controls, ...rest } = params;
240
+ const body = {};
241
+ for (const [k, v] of Object.entries(rest)) {
242
+ if (v !== undefined && !CRAWL_ADVANCED_KEYS.includes(k)) {
243
+ body[k] = v;
244
+ }
245
+ }
246
+ if (extraction_model)
247
+ body.extraction_model = extraction_model;
248
+ if (cost_controls)
249
+ body.cost_controls = cost_controls;
250
+ const advanced = (0, common_js_1.pickAdvanced)(params, CRAWL_ADVANCED_KEYS);
251
+ if (Object.keys(advanced).length > 0)
252
+ body.advanced = advanced;
253
+ return body;
254
+ }
93
255
  async function handleCrawl(client, params) {
94
256
  try {
95
- const response = await client.startCrawl({
96
- url: params.url,
97
- max_pages: params.max_pages,
98
- max_depth: params.max_depth,
99
- include_patterns: params.include_patterns,
100
- exclude_patterns: params.exclude_patterns,
101
- sitemap: params.sitemap,
102
- formats: params.formats,
103
- extraction_schema: params.extraction_schema,
104
- extraction_model: params.extraction_model ?? undefined,
105
- max_concurrency: params.max_concurrency,
106
- respect_robots: params.respect_robots,
107
- include_subdomains: params.include_subdomains,
108
- webhook_url: params.webhook_url,
109
- advanced: {
110
- render_js: params.render_js,
111
- use_proxy: params.use_proxy,
112
- block_images: params.block_images,
113
- },
114
- });
257
+ const response = await client.startCrawl(buildCrawlRequest(params));
115
258
  const text = `**Crawl Started**\n\n` +
116
259
  `- Crawl ID: \`${response.crawl_id}\`\n` +
117
260
  `- Status: ${response.status}\n` +
@@ -120,13 +263,18 @@ async function handleCrawl(client, params) {
120
263
  `- Max depth: ${params.max_depth}\n\n` +
121
264
  `Use \`alterlab_crawl_status\` with crawl_id \`${response.crawl_id}\` to poll for results.\n` +
122
265
  `Crawls run asynchronously — check back after a few minutes for large sites.`;
123
- return { content: [{ type: "text", text }] };
266
+ const balanceWarningSuffix = (0, format_js_1.formatBalanceWarning)(client.getLastBalanceWarning());
267
+ return { content: [{ type: "text", text: text + balanceWarningSuffix }] };
124
268
  }
125
269
  catch (error) {
126
- if (isApiError(error)) {
127
- return (0, errors_js_1.formatErrorResult)(error, { url: params.url });
270
+ const balanceWarningSuffix = (0, format_js_1.formatBalanceWarning)(client.getLastBalanceWarning());
271
+ const result = isApiError(error)
272
+ ? (0, errors_js_1.formatErrorResult)(error, { url: params.url })
273
+ : (0, errors_js_1.formatErrorResult)(error, { url: params.url });
274
+ if (balanceWarningSuffix && result.content[0]?.type === "text") {
275
+ result.content[0].text += balanceWarningSuffix;
128
276
  }
129
- return (0, errors_js_1.formatErrorResult)(error, { url: params.url });
277
+ return result;
130
278
  }
131
279
  }
132
280
  // ============================================================================
@@ -1 +1 @@
1
- {"version":3,"file":"crawl.js","sourceRoot":"","sources":["../../src/tools/crawl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"crawl.js","sourceRoot":"","sources":["../../src/tools/crawl.ts"],"names":[],"mappings":"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"}
@@ -4,21 +4,36 @@ import type { AlterLabClient } from "../client.js";
4
4
  export declare const estimateSchema: z.ZodObject<{
5
5
  url: z.ZodString;
6
6
  mode: z.ZodDefault<z.ZodEnum<["auto", "html", "js", "pdf", "ocr"]>>;
7
+ method: z.ZodOptional<z.ZodEnum<["GET", "POST"]>>;
7
8
  formats: z.ZodOptional<z.ZodArray<z.ZodEnum<["text", "json", "json_v2", "html", "markdown", "rag", "content", "raw"]>, "many">>;
8
- render_js: z.ZodDefault<z.ZodBoolean>;
9
+ render_js: z.ZodDefault<z.ZodUnion<[z.ZodBoolean, z.ZodLiteral<"auto">]>>;
9
10
  use_proxy: z.ZodDefault<z.ZodBoolean>;
11
+ use_own_proxy: z.ZodOptional<z.ZodBoolean>;
12
+ screenshot: z.ZodOptional<z.ZodBoolean>;
13
+ generate_pdf: z.ZodOptional<z.ZodBoolean>;
14
+ ocr: z.ZodOptional<z.ZodBoolean>;
10
15
  }, "strip", z.ZodTypeAny, {
11
- url: string;
12
16
  mode: "auto" | "html" | "js" | "pdf" | "ocr";
13
- render_js: boolean;
17
+ url: string;
18
+ render_js: boolean | "auto";
14
19
  use_proxy: boolean;
15
- formats?: ("content" | "text" | "html" | "json" | "json_v2" | "markdown" | "rag" | "raw")[] | undefined;
20
+ method?: "POST" | "GET" | undefined;
21
+ ocr?: boolean | undefined;
22
+ screenshot?: boolean | undefined;
23
+ formats?: ("content" | "text" | "json" | "json_v2" | "html" | "markdown" | "rag" | "raw")[] | undefined;
24
+ use_own_proxy?: boolean | undefined;
25
+ generate_pdf?: boolean | undefined;
16
26
  }, {
17
27
  url: string;
18
28
  mode?: "auto" | "html" | "js" | "pdf" | "ocr" | undefined;
19
- formats?: ("content" | "text" | "html" | "json" | "json_v2" | "markdown" | "rag" | "raw")[] | undefined;
20
- render_js?: boolean | undefined;
29
+ method?: "POST" | "GET" | undefined;
30
+ ocr?: boolean | undefined;
31
+ screenshot?: boolean | undefined;
32
+ formats?: ("content" | "text" | "json" | "json_v2" | "html" | "markdown" | "rag" | "raw")[] | undefined;
33
+ render_js?: boolean | "auto" | undefined;
21
34
  use_proxy?: boolean | undefined;
35
+ use_own_proxy?: boolean | undefined;
36
+ generate_pdf?: boolean | undefined;
22
37
  }>;
23
38
  export declare const estimateDescription: string;
24
39
  export declare function handleEstimate(client: AlterLabClient, params: z.infer<typeof estimateSchema>): Promise<CallToolResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"estimate.d.ts","sourceRoot":"","sources":["../../src/tools/estimate.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,cAAc;;;;;;;;;;;;;;;;;;EAqCzB,CAAC;AAEH,eAAO,MAAM,mBAAmB,QAG6B,CAAC;AAE9D,wBAAsB,cAAc,CAClC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,GACrC,OAAO,CAAC,cAAc,CAAC,CAoBzB"}
1
+ {"version":3,"file":"estimate.d.ts","sourceRoot":"","sources":["../../src/tools/estimate.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;AAMnD,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+BzB,CAAC;AAEH,eAAO,MAAM,mBAAmB,QAMsE,CAAC;AAEvG,wBAAsB,cAAc,CAClC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,GACrC,OAAO,CAAC,cAAc,CAAC,CAYzB"}
@@ -5,52 +5,45 @@ exports.handleEstimate = handleEstimate;
5
5
  const zod_1 = require("zod");
6
6
  const errors_js_1 = require("../errors.js");
7
7
  const format_js_1 = require("../format.js");
8
+ const common_js_1 = require("./common.js");
9
+ const scrape_js_1 = require("./scrape.js");
8
10
  exports.estimateSchema = zod_1.z.object({
9
- url: zod_1.z.string().url().describe("URL to estimate scraping cost for"),
10
- mode: zod_1.z
11
- .enum(["auto", "html", "js", "pdf", "ocr"])
12
- .default("auto")
13
- .describe("Scraping mode"),
11
+ url: zod_1.z.string().url().max(2083).describe("URL to estimate scraping cost for"),
12
+ mode: common_js_1.modeEnum.default("auto").describe("Scraping mode"),
13
+ method: zod_1.z
14
+ .enum(["GET", "POST"])
15
+ .optional()
16
+ .describe("HTTP method. POST requests cost 1.5x the base tier price."),
14
17
  formats: zod_1.z
15
- .array(zod_1.z.enum([
16
- "text",
17
- "json",
18
- "json_v2",
19
- "html",
20
- "markdown",
21
- "rag",
22
- "content",
23
- "raw",
24
- ]))
18
+ .array(common_js_1.allFormatEnum)
25
19
  .optional()
26
- .describe("Output formats to include in the estimate. Affects cost prediction accuracy. " +
27
- "'json_v2' returns a structured section tree. " +
28
- "'rag' returns chunked text for retrieval-augmented generation. " +
29
- "'content' returns body_markdown + content_hash + images + links. " +
30
- "'raw' returns the response body byte-for-byte with no transformation."),
20
+ .describe("Output formats to include in the estimate. Passed to the API but does not currently affect the cost estimate — the endpoint uses URL-pattern heuristics only. " +
21
+ common_js_1.FORMATS_DESCRIPTION),
31
22
  render_js: zod_1.z
32
- .boolean()
23
+ .union([zod_1.z.boolean(), zod_1.z.literal("auto")])
33
24
  .default(false)
34
- .describe("Enable JS rendering (forces Tier 4 minimum — no separate add-on charge)"),
25
+ .describe("Enable JS rendering (forces Tier 4 minimum, $0.004 — no separate add-on charge)"),
35
26
  use_proxy: zod_1.z
36
27
  .boolean()
37
28
  .default(false)
38
- .describe("Include premium proxy cost (+1 credit)"),
29
+ .describe("Include premium proxy cost (+$0.0002)"),
30
+ use_own_proxy: zod_1.z
31
+ .boolean()
32
+ .optional()
33
+ .describe("Price the request with your own proxy integration (20% BYOP discount)"),
34
+ screenshot: zod_1.z.boolean().optional().describe("Include the screenshot add-on (+$0.0002)"),
35
+ generate_pdf: zod_1.z.boolean().optional().describe("Include the PDF add-on (+$0.0004)"),
36
+ ocr: zod_1.z.boolean().optional().describe("Include the OCR add-on (+$0.001)"),
39
37
  });
40
- exports.estimateDescription = "Estimate the cost of scraping a URL without actually scraping it. " +
41
- "Returns the predicted tier, cost per request, and confidence level. " +
42
- "Use this to check costs before running expensive scrapes.";
38
+ exports.estimateDescription = "Preview the cost of scraping a URL before committing — no credits charged. " +
39
+ "Returns the predicted anti-bot tier, estimated cost per request, and confidence level. " +
40
+ "Call this before scraping protected or unfamiliar sites to avoid surprises. " +
41
+ "Tier 1 (curl): $0.0002. Tier 2 (http): $0.0003. Tier 3 (stealth): $0.002. Tier 3.5 (lightjs): $0.0025. " +
42
+ "Tier 4 (full browser): $0.004. Tier 5 (captcha solver): $0.02. " +
43
+ "Use render_js, use_proxy, screenshot, generate_pdf, ocr and method to see how options affect cost.";
43
44
  async function handleEstimate(client, params) {
44
45
  try {
45
- const estimate = await client.estimate({
46
- url: params.url,
47
- mode: params.mode,
48
- formats: params.formats,
49
- advanced: {
50
- render_js: params.render_js,
51
- use_proxy: params.use_proxy,
52
- },
53
- });
46
+ const estimate = await client.estimate((0, scrape_js_1.buildEstimateRequest)(params));
54
47
  return {
55
48
  content: [{ type: "text", text: (0, format_js_1.formatEstimateResponse)(estimate) }],
56
49
  };
@@ -1 +1 @@
1
- {"version":3,"file":"estimate.js","sourceRoot":"","sources":["../../src/tools/estimate.ts"],"names":[],"mappings":";;;AAkDA,wCAuBC;AAzED,6BAAwB;AAGxB,4CAAgE;AAChE,4CAAsD;AAEzC,QAAA,cAAc,GAAG,OAAC,CAAC,MAAM,CAAC;IACrC,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;IACnE,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,eAAe,CAAC;IAC5B,OAAO,EAAE,OAAC;SACP,KAAK,CACJ,OAAC,CAAC,IAAI,CAAC;QACL,MAAM;QACN,MAAM;QACN,SAAS;QACT,MAAM;QACN,UAAU;QACV,KAAK;QACL,SAAS;QACT,KAAK;KACN,CAAC,CACH;SACA,QAAQ,EAAE;SACV,QAAQ,CACP,+EAA+E;QAC7E,+CAA+C;QAC/C,iEAAiE;QACjE,mEAAmE;QACnE,uEAAuE,CAC1E;IACH,SAAS,EAAE,OAAC;SACT,OAAO,EAAE;SACT,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CACP,yEAAyE,CAC1E;IACH,SAAS,EAAE,OAAC;SACT,OAAO,EAAE;SACT,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,wCAAwC,CAAC;CACtD,CAAC,CAAC;AAEU,QAAA,mBAAmB,GAC9B,oEAAoE;IACpE,sEAAsE;IACtE,2DAA2D,CAAC;AAEvD,KAAK,UAAU,cAAc,CAClC,MAAsB,EACtB,MAAsC;IAEtC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC;YACrC,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,QAAQ,EAAE;gBACR,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;aAC5B;SACF,CAAC,CAAC;QACH,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAA,kCAAsB,EAAC,QAAQ,CAAC,EAAE,CAAC;SACpE,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"}
1
+ {"version":3,"file":"estimate.js","sourceRoot":"","sources":["../../src/tools/estimate.ts"],"names":[],"mappings":";;;AAiDA,wCAeC;AAhED,6BAAwB;AAGxB,4CAAgE;AAChE,4CAAsD;AACtD,2CAA2E;AAC3E,2CAAmD;AAEtC,QAAA,cAAc,GAAG,OAAC,CAAC,MAAM,CAAC;IACrC,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,mCAAmC,CAAC;IAC7E,IAAI,EAAE,oBAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC;IACxD,MAAM,EAAE,OAAC;SACN,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;SACrB,QAAQ,EAAE;SACV,QAAQ,CAAC,2DAA2D,CAAC;IACxE,OAAO,EAAE,OAAC;SACP,KAAK,CAAC,yBAAa,CAAC;SACpB,QAAQ,EAAE;SACV,QAAQ,CACP,gKAAgK;QAC9J,+BAAmB,CACtB;IACH,SAAS,EAAE,OAAC;SACT,KAAK,CAAC,CAAC,OAAC,CAAC,OAAO,EAAE,EAAE,OAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;SACvC,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CACP,iFAAiF,CAClF;IACH,SAAS,EAAE,OAAC;SACT,OAAO,EAAE;SACT,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,uCAAuC,CAAC;IACpD,aAAa,EAAE,OAAC;SACb,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,uEAAuE,CAAC;IACpF,UAAU,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IACvF,YAAY,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;IAClF,GAAG,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;CACzE,CAAC,CAAC;AAEU,QAAA,mBAAmB,GAC9B,6EAA6E;IAC7E,yFAAyF;IACzF,8EAA8E;IAC9E,yGAAyG;IACzG,iEAAiE;IACjE,oGAAoG,CAAC;AAEhG,KAAK,UAAU,cAAc,CAClC,MAAsB,EACtB,MAAsC;IAEtC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAA,gCAAoB,EAAC,MAAM,CAAC,CAAC,CAAC;QACrE,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAA,kCAAsB,EAAC,QAAQ,CAAC,EAAE,CAAC;SACpE,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"}
@@ -17,8 +17,8 @@ export declare const extractSchema: z.ZodObject<{
17
17
  cache_ttl: z.ZodOptional<z.ZodNumber>;
18
18
  }, "strip", z.ZodTypeAny, {
19
19
  content: string;
20
- formats: ("content" | "text" | "html" | "json" | "json_v2" | "markdown" | "rag" | "raw")[];
21
20
  content_type: "text" | "html" | "markdown";
21
+ formats: ("content" | "text" | "json" | "json_v2" | "html" | "markdown" | "rag" | "raw")[];
22
22
  evidence: boolean;
23
23
  cache: "auto" | "skip" | "only";
24
24
  extraction_schema?: Record<string, unknown> | undefined;
@@ -27,22 +27,22 @@ export declare const extractSchema: z.ZodObject<{
27
27
  extraction_prompt?: string | undefined;
28
28
  extraction_profile?: "auto" | "product" | "article" | "job_posting" | "faq" | "recipe" | "event" | "ecommerce_homepage" | "directory_listing" | undefined;
29
29
  extraction_template?: "auto" | "product" | "article" | "job_posting" | "faq" | "recipe" | "event" | "ecommerce_homepage" | "directory_listing" | undefined;
30
- source_url?: string | undefined;
31
30
  cache_ttl?: number | undefined;
31
+ source_url?: string | undefined;
32
32
  }, {
33
33
  content: string;
34
- formats?: ("content" | "text" | "html" | "json" | "json_v2" | "markdown" | "rag" | "raw")[] | undefined;
34
+ content_type?: "text" | "html" | "markdown" | undefined;
35
+ formats?: ("content" | "text" | "json" | "json_v2" | "html" | "markdown" | "rag" | "raw")[] | undefined;
35
36
  extraction_schema?: Record<string, unknown> | undefined;
36
37
  extraction_model?: string | null | undefined;
37
38
  extraction_provider?: "openai" | "anthropic" | "openrouter" | "groq" | undefined;
38
39
  extraction_prompt?: string | undefined;
39
40
  extraction_profile?: "auto" | "product" | "article" | "job_posting" | "faq" | "recipe" | "event" | "ecommerce_homepage" | "directory_listing" | undefined;
40
- content_type?: "text" | "html" | "markdown" | undefined;
41
41
  extraction_template?: "auto" | "product" | "article" | "job_posting" | "faq" | "recipe" | "event" | "ecommerce_homepage" | "directory_listing" | undefined;
42
- source_url?: string | undefined;
43
42
  evidence?: boolean | undefined;
44
43
  cache?: "auto" | "skip" | "only" | undefined;
45
44
  cache_ttl?: number | undefined;
45
+ source_url?: string | undefined;
46
46
  }>;
47
47
  export declare const extractDescription: string;
48
48
  export declare function handleExtract(client: AlterLabClient, params: z.infer<typeof extractSchema>): Promise<CallToolResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../src/tools/extract.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;AAGnD,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgIxB,CAAC;AAEH,eAAO,MAAM,kBAAkB,QAQqD,CAAC;AAErF,wBAAsB,aAAa,CACjC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,GACpC,OAAO,CAAC,cAAc,CAAC,CA8BzB"}
1
+ {"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../src/tools/extract.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,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkIxB,CAAC;AAEH,eAAO,MAAM,kBAAkB,QAQqD,CAAC;AAErF,wBAAsB,aAAa,CACjC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,GACpC,OAAO,CAAC,cAAc,CAAC,CA+BzB"}
@@ -4,10 +4,12 @@ exports.extractDescription = exports.extractSchema = void 0;
4
4
  exports.handleExtract = handleExtract;
5
5
  const zod_1 = require("zod");
6
6
  const errors_js_1 = require("../errors.js");
7
+ const format_js_1 = require("../format.js");
7
8
  exports.extractSchema = zod_1.z.object({
8
9
  content: zod_1.z
9
10
  .string()
10
11
  .min(1)
12
+ .max(500_000)
11
13
  .describe("Raw content to extract from — HTML, text, or markdown. " +
12
14
  "Bring your own pre-fetched content; this endpoint does NOT scrape a URL."),
13
15
  content_type: zod_1.z
@@ -58,6 +60,7 @@ exports.extractSchema = zod_1.z.object({
58
60
  "Charged at LLM extraction rate when provided."),
59
61
  extraction_model: zod_1.z
60
62
  .string()
63
+ .max(256)
61
64
  .nullish()
62
65
  .describe("Per-request LLM model override in provider-specific format (e.g. 'gpt-4o', 'claude-opus-4-5-20251101', 'llama3-70b-8192'). " +
63
66
  "Overrides the model saved in your BYOK key settings for this request only."),
@@ -107,10 +110,10 @@ exports.extractSchema = zod_1.z.object({
107
110
  .describe("TTL for caching this extraction result, in seconds. " +
108
111
  "Defaults to server setting (3600s). Max 86400s (24 hours)."),
109
112
  });
110
- exports.extractDescription = "Extract structured data from raw HTML, text, or markdown content WITHOUT scraping. " +
111
- "Bring your own pre-fetched content. Use this when you already have the page content " +
112
- "and want to run AlterLab's extraction pipeline on it. " +
113
- "For scraping + extraction in one step, use alterlab_scrape with formats=['json'] instead. " +
113
+ exports.extractDescription = "Extract product data, scrape prices, get structured data from any page content, " +
114
+ "or pull specific fields like names, emails, and ratings from HTML. " +
115
+ "Runs AlterLab's extraction pipeline on raw HTML, text, or markdown you already have — does NOT scrape a URL. " +
116
+ "For scraping + extraction in one step, use alterlab_scrape with extraction_schema instead. " +
114
117
  "Profiles: 'product' (price, title, reviews), 'article' (title, author, body), " +
115
118
  "'job_posting', 'faq', 'recipe', 'event', 'ecommerce_homepage', 'directory_listing'. " +
116
119
  "Returns JSON data. Use extraction_prompt for natural language extraction (LLM-powered). " +
@@ -133,17 +136,18 @@ async function handleExtract(client, params) {
133
136
  cache_ttl: params.cache_ttl,
134
137
  });
135
138
  const text = formatStandaloneExtractResponse(response, params.source_url);
136
- return { content: [{ type: "text", text }] };
139
+ const balanceWarningSuffix = (0, format_js_1.formatBalanceWarning)(client.getLastBalanceWarning());
140
+ return { content: [{ type: "text", text: text + balanceWarningSuffix }] };
137
141
  }
138
142
  catch (error) {
139
- if (isApiError(error)) {
140
- return (0, errors_js_1.formatErrorResult)(error, {
141
- url: params.source_url ?? "raw content",
142
- });
143
+ const balanceWarningSuffix = (0, format_js_1.formatBalanceWarning)(client.getLastBalanceWarning());
144
+ const result = isApiError(error)
145
+ ? (0, errors_js_1.formatErrorResult)(error, { url: params.source_url ?? "raw content" })
146
+ : (0, errors_js_1.formatErrorResult)(error, { url: params.source_url ?? "raw content" });
147
+ if (balanceWarningSuffix && result.content[0]?.type === "text") {
148
+ result.content[0].text += balanceWarningSuffix;
143
149
  }
144
- return (0, errors_js_1.formatErrorResult)(error, {
145
- url: params.source_url ?? "raw content",
146
- });
150
+ return result;
147
151
  }
148
152
  }
149
153
  function formatStandaloneExtractResponse(response, sourceUrl) {