@scavio/mcp-server 0.20.0 → 0.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -3,9 +3,9 @@
3
3
  ![GitHub Repo stars](https://img.shields.io/github/stars/scavio-ai/scavio-mcp?style=social)
4
4
  ![License](https://img.shields.io/github/license/scavio-ai/scavio-mcp)
5
5
 
6
- [Scavio](https://scavio.dev?utm_source=npm-mcp&utm_medium=package&utm_campaign=readme) is a unified [Web Search API](https://scavio.dev/docs/search-api?utm_source=npm-mcp&utm_medium=package&utm_campaign=readme) and MCP server that gives AI agents web search, page extraction, and structured data from e-commerce, social, travel, jobs, real-estate, app-store, ad-library and company-filing sources. 229 tools across 36 platforms plus Extract, one API key.
6
+ [Scavio](https://scavio.dev?utm_source=npm-mcp&utm_medium=package&utm_campaign=readme) is a unified [Web Search API](https://scavio.dev/docs/search-api?utm_source=npm-mcp&utm_medium=package&utm_campaign=readme) and MCP server that gives AI agents web search, page extraction, and structured data from e-commerce, social, travel, jobs, real-estate, app-store, ad-library and company-filing sources. 263 tools across 36 platforms plus Extract, map, crawl and batch, one API key.
7
7
 
8
- **The 22 platforms added in 0.13.0 are opt-in.** Registering all 248 tools puts 234KB of tool definitions — roughly 58k tokens — into every session before you type anything. So the default is the platform set 0.12.x already had, plus Extract: 126 tools, 96KB. Upgrading never removes a tool you were using. Everything else is one env var away: see [Choosing which tools load](#choosing-which-tools-load).
8
+ **The 22 platforms added in 0.13.0 are opt-in.** Registering all 263 tools puts 249KB of tool definitions — roughly 62k tokens — into every session before you type anything. So the default is the platform set 0.12.x already had, plus Extract: 141 tools, 110KB. Upgrading never removes a tool you were using. Everything else is one env var away: see [Choosing which tools load](#choosing-which-tools-load).
9
9
 
10
10
  ## Remote MCP Server
11
11
 
@@ -207,8 +207,8 @@ Add to settings (`Cmd+,`):
207
207
 
208
208
  ## Choosing which tools load
209
209
 
210
- Scavio exposes 248 tools. Loading all of them costs 234KB of `tools/list` —
211
- roughly 58k tokens of context in every session before the user has said anything,
210
+ Scavio exposes 263 tools. Loading all of them costs 249KB of `tools/list` —
211
+ roughly 62k tokens of context in every session before the user has said anything,
212
212
  and more tools than some clients will accept at all. So the server registers a
213
213
  curated subset by default and lets you pick the rest. The sizes below are
214
214
  measured, not estimated: `npm run toolslist` reproduces them.
@@ -217,10 +217,10 @@ measured, not estimated: `npm run toolslist` reproduces them.
217
217
 
218
218
  | Value | Registers |
219
219
  |-------|-----------|
220
- | *(unset)* or `default` | Every platform 0.12.x had, plus `extract` — **126 tools, 96KB** |
221
- | `all` | every platform — **248 tools, 234KB** |
222
- | `extract,sec,g2` | just those platforms — 11 tools, 12KB |
223
- | `default,zillow,metaads` | the default set plus two more — 132 tools, 103KB |
220
+ | *(unset)* or `default` | Every platform 0.12.x had, plus `extract` — **141 tools, 110KB** |
221
+ | `all` | every platform — **263 tools, 249KB** |
222
+ | `extract,sec,g2` | just those platforms — 18 tools, 21KB |
223
+ | `default,zillow,metaads` | the default set plus two more — 147 tools, 118KB |
224
224
  | `none` | no platform tools, only `get_usage` |
225
225
 
226
226
  Keys are matched case- and punctuation-insensitively, so `meta-ads`, `metaads`
@@ -279,8 +279,8 @@ https://mcp.scavio.dev/mcp?platforms=all
279
279
 
280
280
  Nothing to do. The default set is exactly the 10 platforms 0.12.x registered,
281
281
  plus Extract — every tool you were using still loads. Those platforms keep gaining
282
- tools (Walmart grew from 2 to 7; TikTok, YouTube, Reddit and X gained 19 in 0.20.0),
283
- which is why the default count is now 126.
282
+ tools (Walmart grew from 2 to 7; TikTok, YouTube, Reddit and X gained 19 in 0.20.0;
283
+ Extract gained map, crawl and batch in 0.21.0; Instagram gained 8 in 0.22.0), which is why the default count is now 141.
284
284
 
285
285
  The 22 platforms added in 0.13.0 are opt-in. Add them additively:
286
286
 
@@ -306,14 +306,50 @@ are free.
306
306
  | Tool | Description |
307
307
  |------|-------------|
308
308
  | `extract_url` | Read any web page and return it as clean Markdown, plain text, or raw HTML |
309
+ | `map_website` | List a site's page URLs from its sitemaps and start page, path-filtered, with `lastmod` when known |
310
+ | `crawl_website` | Crawl a site from one URL and extract every same-site page; waits up to `wait_seconds` and returns results, or the job id |
311
+ | `get_crawl_status` | A crawl's status, page counts, credits used and page results, paged by cursor; can wait for completion |
312
+ | `cancel_crawl` | Stop a running crawl; nothing more is billed, results so far stay readable |
313
+ | `batch_extract` | Extract a list of URLs in one job, results in input order; waits up to `wait_seconds` |
314
+ | `get_batch_status` | A batch's status and results, paged by cursor; can wait for completion |
315
+ | `cancel_batch` | Stop a running batch |
309
316
 
310
317
  Extract is tier-priced by the `mode` parameter, not flat: `normal` (the default)
311
- and `advanced` (full JavaScript rendering) cost 1 credit, `ultra` (for pages that
312
- block the other two) costs 2. Start at `normal` and escalate only when the
318
+ and `advanced` (renders JavaScript) cost 1 credit, `ultra` (for the hardest pages)
319
+ costs 2. Start at `normal` and escalate only when the
313
320
  content comes back empty or blocked. You are billed only on a successful
314
321
  extraction — a dead link, a bot wall or a timeout costs nothing. There is no
315
322
  pagination: the whole page comes back in one call.
316
323
 
324
+ **Map, crawl and batch** (new in 0.21.0) are the multi-page operations:
325
+
326
+ - **Pricing.** `map_website` costs 1 credit. Crawl and batch bill per
327
+ *successful* page at Extract's price for the tier (normal 1, advanced 1,
328
+ ultra 2); failed and skipped pages are free, and status and cancel calls are
329
+ free. Credits are taken page by page, and a job stops cleanly with
330
+ `stopped_reason: "insufficient_credits"` if the balance runs out.
331
+ - **Plan limits** (max pages per crawl / active jobs / URLs per batch): Free
332
+ 10 / 1 / 10, PAYG 100 / 1 / 50, Project 500 / 2 / 100, Bootstrap 2,000 / 3 / 500,
333
+ Startup 5,000 / 5 / 1,000, Growth 10,000 / 10 / 1,000. Starting a job past the
334
+ active-job limit returns a 429 that names the running jobs.
335
+ - **Behaviour.** Robots.txt is always obeyed for map and crawl. A crawl stays on
336
+ the start URL's site (subdomains optional) and visits pages under the start
337
+ path first. Results are kept for 3 days; a job runs for at most 6 hours.
338
+ - **Built for tool-call time limits.** MCP clients usually cancel a tool call
339
+ after about 60 seconds, so a crawl is a job, not one long call.
340
+ `crawl_website` / `batch_extract` start the job and wait up to `wait_seconds`
341
+ (default 30, max 50): a small job comes back finished with its first page of
342
+ results; a large one returns the job id (and `webhook_secret`, shown only
343
+ once, if you set `webhook_url`). `get_crawl_status` / `get_batch_status` take
344
+ the same `wait_seconds` to long-poll, and `cursor` to page.
345
+ - **Output stays small.** Status calls return 10 results per call by default
346
+ (`limit` up to 100) and clip each page's content to `max_content_chars`
347
+ (default 4,000); clipped pages carry `content_clipped: true` next to the full
348
+ `content_length`. `map_website` asks for 200 links when you set no `limit`
349
+ (the API default is 1,000). Every response that has more to read carries a
350
+ `_hint` naming the exact next call. Repeat a start call with the same
351
+ `idempotency_key` and you get the original job back instead of a second one.
352
+
317
353
  ### [Google Search API](https://scavio.dev/docs/search-api?utm_source=npm-mcp&utm_medium=package&utm_campaign=readme)
318
354
 
319
355
  | Tool | Description |
@@ -454,10 +490,21 @@ a billed 404 on `get_tiktok_user_live` and an unbilled 404 on `get_tiktok_user_r
454
490
  | `search_instagram_hashtags` | Search hashtags by keyword |
455
491
  | `get_instagram_user_followers` | Get a user's follower list |
456
492
  | `get_instagram_user_followings` | Get a user's following list |
457
-
458
- Instagram is priced per endpoint, not at a flat rate: `get_instagram_user_posts`
459
- costs 2, `get_instagram_post` and `get_instagram_comment_replies` cost 8, and the
460
- other nine tools cost 10.
493
+ | `get_instagram_user_highlights` | List a user's story highlights (id, title, cover, item count) |
494
+ | `get_instagram_highlight_stories` | Get every story in one highlight, with media URLs |
495
+ | `search_instagram_reels` | Search Reels by keyword with pagination |
496
+ | `search_instagram_music` | Search audio tracks by song or artist |
497
+ | `get_instagram_music_posts` | List the Reels that use an audio track, plus its total reel count |
498
+ | `search_instagram_locations` | Search places by name (id, address, coordinates) |
499
+ | `get_instagram_user_similar` | Get accounts similar to a creator |
500
+ | `get_instagram_post_likers` | Get accounts that liked a post, plus its total like count |
501
+
502
+ Instagram is priced per endpoint: `get_instagram_profile`, `get_instagram_user_reels`,
503
+ `get_instagram_user_tagged` and `get_instagram_music_posts` cost 1 credit (reels and
504
+ tagged cost 2 the first time a username is looked up), and the other tools cost 2.
505
+ `search_instagram_users` and `search_instagram_hashtags` cost 8 when you pass a
506
+ `cursor` for the next page. Any request can cost up to 10 when it needs extra work;
507
+ `credits_used` in the response is always the exact charge.
461
508
 
462
509
  ### [Reddit API](https://scavio.dev/docs/reddit-api?utm_source=npm-mcp&utm_medium=package&utm_campaign=readme)
463
510
 
@@ -10,5 +10,6 @@ export declare class ScavioClient {
10
10
  constructor(apiKey: string);
11
11
  private request;
12
12
  get<T>(path: string): Promise<T>;
13
- post<T>(path: string, body?: unknown): Promise<T>;
13
+ post<T>(path: string, body?: unknown, headers?: Record<string, string>): Promise<T>;
14
+ delete<T>(path: string): Promise<T>;
14
15
  }
@@ -14,7 +14,7 @@ export class ScavioClient {
14
14
  this.baseUrl = env.SCAVIO_API_BASE_URL;
15
15
  this.apiKey = apiKey;
16
16
  }
17
- async request(method, path, body) {
17
+ async request(method, path, body, extraHeaders) {
18
18
  const response = await fetch(`${this.baseUrl}${path}`, {
19
19
  method,
20
20
  headers: {
@@ -22,6 +22,7 @@ export class ScavioClient {
22
22
  "Authorization": `Bearer ${this.apiKey}`,
23
23
  "User-Agent": USER_AGENT,
24
24
  "X-Client-Source": CLIENT_SOURCE,
25
+ ...extraHeaders,
25
26
  },
26
27
  ...(body !== undefined ? { body: JSON.stringify(body) } : {}),
27
28
  });
@@ -29,24 +30,30 @@ export class ScavioClient {
29
30
  const text = await response.text();
30
31
  let message;
31
32
  let billingUrl;
33
+ let body;
32
34
  try {
33
35
  const json = JSON.parse(text);
34
36
  message = json.error ?? json.message ?? text;
35
37
  if (typeof json.billing_url === "string")
36
38
  billingUrl = json.billing_url;
39
+ if (json && typeof json === "object" && !Array.isArray(json))
40
+ body = json;
37
41
  }
38
42
  catch {
39
43
  message = text;
40
44
  }
41
- throw new ApiError(response.status, message, undefined, billingUrl);
45
+ throw new ApiError(response.status, message, undefined, billingUrl, body);
42
46
  }
43
47
  return response.json();
44
48
  }
45
49
  async get(path) {
46
50
  return this.request("GET", path);
47
51
  }
48
- async post(path, body) {
49
- return this.request("POST", path, body);
52
+ async post(path, body, headers) {
53
+ return this.request("POST", path, body, headers);
54
+ }
55
+ async delete(path) {
56
+ return this.request("DELETE", path);
50
57
  }
51
58
  }
52
59
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/lib/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,CAAC,MAAM,UAAU,GAAG,cAAc,cAAc,EAAE,CAAC;AAEzD;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,YAAY,CAAC;AAE3F,MAAM,OAAO,YAAY;IACf,OAAO,CAAS;IAChB,MAAM,CAAS;IAEvB,YAAY,MAAc;QACxB,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,mBAAmB,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAEO,KAAK,CAAC,OAAO,CAAI,MAAc,EAAE,IAAY,EAAE,IAAc;QACnE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,EAAE;YACrD,MAAM;YACN,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,eAAe,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;gBACxC,YAAY,EAAE,UAAU;gBACxB,iBAAiB,EAAE,aAAa;aACjC;YACD,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9D,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,IAAI,OAAe,CAAC;YACpB,IAAI,UAA8B,CAAC;YACnC,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC9B,OAAO,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC;gBAC7C,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ;oBAAE,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;YAC1E,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,GAAG,IAAI,CAAC;YACjB,CAAC;YACD,MAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QACtE,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,EAAgB,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,GAAG,CAAI,IAAY;QACvB,OAAO,IAAI,CAAC,OAAO,CAAI,KAAK,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,IAAI,CAAI,IAAY,EAAE,IAAc;QACxC,OAAO,IAAI,CAAC,OAAO,CAAI,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;CACF"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/lib/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,CAAC,MAAM,UAAU,GAAG,cAAc,cAAc,EAAE,CAAC;AAEzD;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,YAAY,CAAC;AAE3F,MAAM,OAAO,YAAY;IACf,OAAO,CAAS;IAChB,MAAM,CAAS;IAEvB,YAAY,MAAc;QACxB,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,mBAAmB,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAEO,KAAK,CAAC,OAAO,CAAI,MAAc,EAAE,IAAY,EAAE,IAAc,EAAE,YAAqC;QAC1G,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,EAAE;YACrD,MAAM;YACN,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,eAAe,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;gBACxC,YAAY,EAAE,UAAU;gBACxB,iBAAiB,EAAE,aAAa;gBAChC,GAAG,YAAY;aAChB;YACD,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9D,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,IAAI,OAAe,CAAC;YACpB,IAAI,UAA8B,CAAC;YACnC,IAAI,IAAyC,CAAC;YAC9C,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC9B,OAAO,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC;gBAC7C,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ;oBAAE,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;gBACxE,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;oBAAE,IAAI,GAAG,IAAI,CAAC;YAC5E,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,GAAG,IAAI,CAAC;YACjB,CAAC;YACD,MAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;QAC5E,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,EAAgB,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,GAAG,CAAI,IAAY;QACvB,OAAO,IAAI,CAAC,OAAO,CAAI,KAAK,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,IAAI,CAAI,IAAY,EAAE,IAAc,EAAE,OAAgC;QAC1E,OAAO,IAAI,CAAC,OAAO,CAAI,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,MAAM,CAAI,IAAY;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAI,QAAQ,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC;CACF"}
@@ -3,7 +3,11 @@ export declare class ApiError extends Error {
3
3
  readonly code?: string | undefined;
4
4
  /** Where to top up, when the API sent one (402 responses do). */
5
5
  readonly billingUrl?: string | undefined;
6
+ /** The parsed JSON error body, when there was one. */
7
+ readonly body?: Record<string, unknown> | undefined;
6
8
  constructor(status: number, message: string, code?: string | undefined,
7
9
  /** Where to top up, when the API sent one (402 responses do). */
8
- billingUrl?: string | undefined);
10
+ billingUrl?: string | undefined,
11
+ /** The parsed JSON error body, when there was one. */
12
+ body?: Record<string, unknown> | undefined);
9
13
  }
@@ -2,13 +2,17 @@ export class ApiError extends Error {
2
2
  status;
3
3
  code;
4
4
  billingUrl;
5
+ body;
5
6
  constructor(status, message, code,
6
7
  /** Where to top up, when the API sent one (402 responses do). */
7
- billingUrl) {
8
+ billingUrl,
9
+ /** The parsed JSON error body, when there was one. */
10
+ body) {
8
11
  super(message);
9
12
  this.status = status;
10
13
  this.code = code;
11
14
  this.billingUrl = billingUrl;
15
+ this.body = body;
12
16
  this.name = "ApiError";
13
17
  }
14
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,QAAS,SAAQ,KAAK;IAEf;IAEA;IAEA;IALlB,YACkB,MAAc,EAC9B,OAAe,EACC,IAAa;IAC7B,iEAAiE;IACjD,UAAmB;QAEnC,KAAK,CAAC,OAAO,CAAC,CAAC;QANC,WAAM,GAAN,MAAM,CAAQ;QAEd,SAAI,GAAJ,IAAI,CAAS;QAEb,eAAU,GAAV,UAAU,CAAS;QAGnC,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;CACF"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,QAAS,SAAQ,KAAK;IAEf;IAEA;IAEA;IAEA;IAPlB,YACkB,MAAc,EAC9B,OAAe,EACC,IAAa;IAC7B,iEAAiE;IACjD,UAAmB;IACnC,sDAAsD;IACtC,IAA8B;QAE9C,KAAK,CAAC,OAAO,CAAC,CAAC;QARC,WAAM,GAAN,MAAM,CAAQ;QAEd,SAAI,GAAJ,IAAI,CAAS;QAEb,eAAU,GAAV,UAAU,CAAS;QAEnB,SAAI,GAAJ,IAAI,CAA0B;QAG9C,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;CACF"}
@@ -17,8 +17,16 @@ import { ApiError } from "./errors.js";
17
17
  */
18
18
  export function handleApiError(err) {
19
19
  if (err instanceof ApiError) {
20
- if (err.status === 429)
21
- return { isError: true, content: [{ type: "text", text: "Rate limited. Wait and retry." }] };
20
+ // The API's 429 message says which limit was hit (per-plan concurrency, or
21
+ // the active crawl/batch job cap, which names the running jobs to wait on).
22
+ if (err.status === 429) {
23
+ const b = err.body ?? {};
24
+ const parts = [err.message, typeof b.message === "string" ? b.message : ""].filter((p) => p && p !== "Too Many Requests");
25
+ if (Array.isArray(b.running_jobs) && b.running_jobs.length)
26
+ parts.push(`Running jobs: ${b.running_jobs.join(", ")}`);
27
+ const detail = parts.map((p) => ` ${/[.!?]$/.test(p) ? p : `${p}.`}`).join("");
28
+ return { isError: true, content: [{ type: "text", text: `Rate limited (429).${detail} Wait and retry.` }] };
29
+ }
22
30
  // The API's 402 body carries billing_url; the bare "Insufficient credits"
23
31
  // string used to be all the model saw, so it could not tell the user where
24
32
  // to go. Surface the link, and say that nothing needs reconfiguring.
@@ -1 +1 @@
1
- {"version":3,"file":"tool-error.js","sourceRoot":"","sources":["../../src/lib/tool-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,cAAc,CAAC,GAAY;IACzC,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;QAC5B,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,+BAA+B,EAAE,CAAC,EAAE,CAAC;QACrH,0EAA0E;QAC1E,2EAA2E;QAC3E,qEAAqE;QACrE,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,GAAG,CAAC,UAAU,IAAI,sCAAsC,CAAC;YACrE,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,qDAAqD,GAAG,mEAAmE,EAAE,CAAC;aAC/J,CAAC;QACJ,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;YAAE,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,aAAa,EAAE,mDAAmD,CAAC,CAAC;QACzH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,GAAG,CAAC,MAAM,MAAM,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC;IAClH,CAAC;IACD,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3D,CAAC"}
1
+ {"version":3,"file":"tool-error.js","sourceRoot":"","sources":["../../src/lib/tool-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,cAAc,CAAC,GAAY;IACzC,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;QAC5B,2EAA2E;QAC3E,4EAA4E;QAC5E,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACvB,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,mBAAmB,CAAC,CAAC;YAC1H,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM;gBAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACrH,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,sBAAsB,MAAM,kBAAkB,EAAE,CAAC,EAAE,CAAC;QAC9G,CAAC;QACD,0EAA0E;QAC1E,2EAA2E;QAC3E,qEAAqE;QACrE,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,GAAG,CAAC,UAAU,IAAI,sCAAsC,CAAC;YACrE,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,qDAAqD,GAAG,mEAAmE,EAAE,CAAC;aAC/J,CAAC;QACJ,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;YAAE,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,aAAa,EAAE,mDAAmD,CAAC,CAAC;QACzH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,GAAG,CAAC,MAAM,MAAM,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC;IAClH,CAAC;IACD,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3D,CAAC"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * MCP-side shaping for website map, crawl and batch (the Extract family's
3
+ * multi-page operations). The REST API is untouched; this only decides how much
4
+ * of a response lands in a model's context and what the model is told to do
5
+ * next.
6
+ *
7
+ * - map: a site can list 5,000 URLs. When the caller sets no `limit` the tool
8
+ * asks for MCP_MAP_DEFAULT_LIMIT, and a truncated list carries a hint.
9
+ * - crawl/batch status: a result page can hold up to 100 pages of up to 2 MB
10
+ * each. The tool asks for MCP_RESULTS_DEFAULT_LIMIT results per call and
11
+ * clips each page's content to `max_content_chars`, flagging the clip, so a
12
+ * status call stays inside a context window. `next_cursor` always survives.
13
+ *
14
+ * Deterministic and offline. Exported for scripts/trim-check.mjs.
15
+ */
16
+ import { type JsonValue } from "./trim-response.js";
17
+ export declare const MCP_MAP_DEFAULT_LIMIT = 200;
18
+ export declare const MCP_RESULTS_DEFAULT_LIMIT = 10;
19
+ export declare const MCP_DEFAULT_CONTENT_CHARS = 4000;
20
+ /** MCP clients commonly cancel a tool call at 60 s; stay well inside it. */
21
+ export declare const MAX_WAIT_SECONDS = 50;
22
+ export declare const CRAWL_DEFAULT_WAIT_SECONDS = 30;
23
+ export declare const POLL_INTERVAL_MS = 3000;
24
+ export declare const TERMINAL_STATUSES: Set<string>;
25
+ /** Shape a map response: add a hint when the link list was cut. */
26
+ export declare function shapeMap(raw: unknown): JsonValue;
27
+ export interface JobShapeOptions {
28
+ type: "crawl" | "batch";
29
+ maxContentChars?: number;
30
+ }
31
+ /**
32
+ * Shape a crawl/batch status response: clip page content, then drop nulls, then
33
+ * tell the model what to call next (more results, or wait for a running job).
34
+ */
35
+ export declare function shapeJobStatus(raw: unknown, opts: JobShapeOptions): JsonValue;
@@ -0,0 +1,75 @@
1
+ /**
2
+ * MCP-side shaping for website map, crawl and batch (the Extract family's
3
+ * multi-page operations). The REST API is untouched; this only decides how much
4
+ * of a response lands in a model's context and what the model is told to do
5
+ * next.
6
+ *
7
+ * - map: a site can list 5,000 URLs. When the caller sets no `limit` the tool
8
+ * asks for MCP_MAP_DEFAULT_LIMIT, and a truncated list carries a hint.
9
+ * - crawl/batch status: a result page can hold up to 100 pages of up to 2 MB
10
+ * each. The tool asks for MCP_RESULTS_DEFAULT_LIMIT results per call and
11
+ * clips each page's content to `max_content_chars`, flagging the clip, so a
12
+ * status call stays inside a context window. `next_cursor` always survives.
13
+ *
14
+ * Deterministic and offline. Exported for scripts/trim-check.mjs.
15
+ */
16
+ import { shapeResponse } from "./trim-response.js";
17
+ export const MCP_MAP_DEFAULT_LIMIT = 200;
18
+ export const MCP_RESULTS_DEFAULT_LIMIT = 10;
19
+ export const MCP_DEFAULT_CONTENT_CHARS = 4000;
20
+ /** MCP clients commonly cancel a tool call at 60 s; stay well inside it. */
21
+ export const MAX_WAIT_SECONDS = 50;
22
+ export const CRAWL_DEFAULT_WAIT_SECONDS = 30;
23
+ export const POLL_INTERVAL_MS = 3000;
24
+ export const TERMINAL_STATUSES = new Set(["completed", "failed", "cancelled"]);
25
+ function isObject(v) {
26
+ return typeof v === "object" && v !== null && !Array.isArray(v);
27
+ }
28
+ /** Shape a map response: add a hint when the link list was cut. */
29
+ export function shapeMap(raw) {
30
+ const out = shapeResponse(raw);
31
+ if (isObject(out) && isObject(out.data) && out.data.truncated === true) {
32
+ const d = out.data;
33
+ return {
34
+ ...out,
35
+ _hint: `${d.returned} of ${d.total_found} URLs returned. Raise limit (up to 5,000, or your plan's cap) or narrow with search / include_paths / exclude_paths.`,
36
+ };
37
+ }
38
+ return out;
39
+ }
40
+ /**
41
+ * Shape a crawl/batch status response: clip page content, then drop nulls, then
42
+ * tell the model what to call next (more results, or wait for a running job).
43
+ */
44
+ export function shapeJobStatus(raw, opts) {
45
+ const max = opts.maxContentChars ?? MCP_DEFAULT_CONTENT_CHARS;
46
+ const copy = structuredClone(raw ?? {});
47
+ let clipped = 0;
48
+ if (isObject(copy) && isObject(copy.data) && Array.isArray(copy.data.results)) {
49
+ for (const r of copy.data.results) {
50
+ if (isObject(r) && typeof r.content === "string" && r.content.length > max) {
51
+ r.content = r.content.slice(0, max);
52
+ r.content_clipped = true;
53
+ clipped++;
54
+ }
55
+ }
56
+ }
57
+ const out = shapeResponse(copy);
58
+ if (!isObject(out) || !isObject(out.data))
59
+ return out;
60
+ const d = out.data;
61
+ const tool = `get_${opts.type}_status`;
62
+ const hints = [];
63
+ const status = typeof d.status === "string" ? d.status : "";
64
+ if (status && !TERMINAL_STATUSES.has(status)) {
65
+ hints.push(`The ${opts.type} is ${status}: call ${tool} with id="${d.id}" and wait_seconds (up to ${MAX_WAIT_SECONDS}) to wait for it.`);
66
+ }
67
+ if (typeof d.next_cursor === "string") {
68
+ hints.push(`More results: call ${tool} with id="${d.id}" and cursor="${d.next_cursor}".`);
69
+ }
70
+ if (clipped > 0) {
71
+ hints.push(`${clipped} page(s) clipped to ${max} characters (content_clipped: true; content_length is the full size). Raise max_content_chars, or filter with status, to read more.`);
72
+ }
73
+ return hints.length ? { ...out, _hint: hints.join(" ") } : out;
74
+ }
75
+ //# sourceMappingURL=web-jobs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-jobs.js","sourceRoot":"","sources":["../../src/lib/web-jobs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,aAAa,EAAmC,MAAM,oBAAoB,CAAC;AAEpF,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AACzC,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,CAAC;AAC5C,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,CAAC;AAC9C,4EAA4E;AAC5E,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAC;AACnC,MAAM,CAAC,MAAM,0BAA0B,GAAG,EAAE,CAAC;AAC7C,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAErC,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;AAE/E,SAAS,QAAQ,CAAC,CAAU;IAC1B,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,QAAQ,CAAC,GAAY;IACnC,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;QACvE,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;QACnB,OAAO;YACL,GAAG,GAAG;YACN,KAAK,EAAE,GAAG,CAAC,CAAC,QAAQ,OAAO,CAAC,CAAC,WAAW,sHAAsH;SAC/J,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAOD;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,GAAY,EAAE,IAAqB;IAChE,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,IAAI,yBAAyB,CAAC;IAC9D,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,IAAI,EAAE,CAAc,CAAC;IACrD,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9E,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gBAC3E,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBACpC,CAAC,CAAC,eAAe,GAAG,IAAI,CAAC;gBACzB,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,GAAG,CAAC;IAEtD,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;IACnB,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,IAAI,SAAS,CAAC;IACvC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5D,IAAI,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,OAAO,MAAM,UAAU,IAAI,aAAa,CAAC,CAAC,EAAE,6BAA6B,gBAAgB,mBAAmB,CAAC,CAAC;IAC3I,CAAC;IACD,IAAI,OAAO,CAAC,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,sBAAsB,IAAI,aAAa,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC;IAC5F,CAAC;IACD,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,uBAAuB,GAAG,qIAAqI,CAAC,CAAC;IACxL,CAAC;IACD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;AACjE,CAAC"}
@@ -1,6 +1,103 @@
1
1
  import { z } from "zod";
2
2
  import { handleApiError } from "../lib/tool-error.js";
3
- import { trimResponse } from "../lib/trim-response.js";
3
+ import { shapeResponse, trimResponse } from "../lib/trim-response.js";
4
+ import { CRAWL_DEFAULT_WAIT_SECONDS, MAX_WAIT_SECONDS, MCP_DEFAULT_CONTENT_CHARS, MCP_MAP_DEFAULT_LIMIT, MCP_RESULTS_DEFAULT_LIMIT, POLL_INTERVAL_MS, TERMINAL_STATUSES, shapeJobStatus, shapeMap, } from "../lib/web-jobs.js";
5
+ // Schemas mirror backend/src/routes/extract-web.ts field for field: same names,
6
+ // enums, ranges and optionality, and no .default() -- an omitted field is
7
+ // omitted on the wire and the API's own default applies. The MCP-only knobs
8
+ // (wait_seconds, max_content_chars) are stripped before the request.
9
+ const MAX_GLOBS = 50;
10
+ const MAX_GLOB_LENGTH = 200;
11
+ const PRICING = "Per successful page: normal 1cr, advanced 1cr, ultra 2cr; failed/skipped pages free. Obeys robots.txt.";
12
+ const mode = z.enum(["normal", "advanced", "ultra"]).optional()
13
+ .describe("PRICE-BEARING. 'normal'=1cr (default), 'advanced'=renders JavaScript 1cr, 'ultra'=hardest pages 2cr.");
14
+ const format = z.enum(["html", "markdown", "text"]).optional()
15
+ .describe("Page format: 'markdown' (default), 'text', or 'html'.");
16
+ const globs = (what) => z.array(z.string().max(MAX_GLOB_LENGTH)).max(MAX_GLOBS).optional()
17
+ .describe(`Path globs to ${what} (* one segment, ** any depth), e.g. ["/blog/**"].`);
18
+ const webhookUrl = z.string().max(2048).optional()
19
+ .describe("Optional https URL that gets a signed POST when the job ends; secret returned once as webhook_secret.");
20
+ const idempotencyKey = z.string().max(255).optional()
21
+ .describe("Optional; the same key within 24h returns the original job.");
22
+ const jobId = z.string().min(1).max(64).describe("Job id from the start call.");
23
+ const statusQuery = {
24
+ cursor: z.string().max(20).optional().describe("next_cursor from the previous call."),
25
+ limit: z.number().int().min(1).max(100).optional()
26
+ .describe(`Results per call (default ${MCP_RESULTS_DEFAULT_LIMIT} here).`),
27
+ status: z.enum(["succeeded", "failed", "skipped"]).optional().describe("Only results with this status."),
28
+ include_content: z.boolean().optional().describe("false = results without content. Default true."),
29
+ max_content_chars: z.number().int().min(200).max(200000).optional()
30
+ .describe(`Clip each page's content to this many chars (default ${MCP_DEFAULT_CONTENT_CHARS}).`),
31
+ };
32
+ const waitSeconds = (dflt) => z.number().int().min(0).max(MAX_WAIT_SECONDS).optional()
33
+ .describe(`Seconds to wait for the job to finish (default ${dflt}).`);
34
+ function statusPath(type, id, q) {
35
+ const p = new URLSearchParams();
36
+ if (q.cursor !== undefined)
37
+ p.set("cursor", q.cursor);
38
+ p.set("limit", String(q.limit ?? MCP_RESULTS_DEFAULT_LIMIT));
39
+ if (q.status !== undefined)
40
+ p.set("status", q.status);
41
+ if (q.include_content !== undefined)
42
+ p.set("include_content", String(q.include_content));
43
+ return `/api/v1/extract/${type}/${encodeURIComponent(id)}?${p.toString()}`;
44
+ }
45
+ const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
46
+ /** Poll (content-free) until the job is terminal or the wait runs out. */
47
+ async function waitFor(client, type, id, seconds) {
48
+ const deadline = Date.now() + seconds * 1000;
49
+ for (;;) {
50
+ const s = await client.get(statusPath(type, id, { limit: 1, include_content: false }));
51
+ const progress = { status: s.data?.status, pages: s.data?.pages, credits_used: s.data?.credits_used };
52
+ if (TERMINAL_STATUSES.has(progress.status ?? ""))
53
+ return { done: true, progress };
54
+ const left = deadline - Date.now();
55
+ if (left <= 0)
56
+ return { done: false, progress };
57
+ await sleep(Math.min(POLL_INTERVAL_MS, left));
58
+ }
59
+ }
60
+ function text(value) {
61
+ return { content: [{ type: "text", text: JSON.stringify(value) }] };
62
+ }
63
+ function strip(params, keys) {
64
+ const out = {};
65
+ for (const [k, v] of Object.entries(params))
66
+ if (!keys.includes(k) && v !== undefined)
67
+ out[k] = v;
68
+ return out;
69
+ }
70
+ /**
71
+ * Start a crawl/batch, then wait up to wait_seconds. Finished in time: the
72
+ * first page of results. Still running: the job as created (id, status_url,
73
+ * webhook_secret, which is shown only once) plus a hint to poll.
74
+ */
75
+ async function startJob(client, type, params, defaultWait) {
76
+ const { wait_seconds, max_content_chars, idempotency_key } = params;
77
+ const body = strip(params, ["wait_seconds", "max_content_chars", "idempotency_key"]);
78
+ const headers = idempotency_key ? { "Idempotency-Key": idempotency_key } : undefined;
79
+ const created = await client.post(`/api/v1/extract/${type}`, body, headers);
80
+ const id = created.data.id;
81
+ const wait = wait_seconds ?? defaultWait;
82
+ const waited = wait > 0 ? await waitFor(client, type, id, wait) : null;
83
+ if (waited?.done) {
84
+ const status = await client.get(statusPath(type, id, {}));
85
+ const shaped = shapeJobStatus(status, { type, maxContentChars: max_content_chars });
86
+ return text(created.data.webhook_secret ? { ...shaped, webhook_secret: created.data.webhook_secret } : shaped);
87
+ }
88
+ return text({
89
+ ...shapeResponse(created),
90
+ ...(waited ? { progress: shapeResponse(waited.progress) } : {}),
91
+ _hint: `Job ${id} is still running. Call get_${type}_status with id="${id}" (add wait_seconds up to ${MAX_WAIT_SECONDS} to wait) for progress and results.`,
92
+ });
93
+ }
94
+ async function jobStatus(client, type, params) {
95
+ const { id, wait_seconds, max_content_chars, ...q } = params;
96
+ if (wait_seconds && wait_seconds > 0)
97
+ await waitFor(client, type, id, wait_seconds);
98
+ const status = await client.get(statusPath(type, id, q));
99
+ return text(shapeJobStatus(status, { type, maxContentChars: max_content_chars }));
100
+ }
4
101
  export function registerExtractTool(server, getClient) {
5
102
  server.tool("extract_url", `Read any web page as Markdown, text, or HTML. Tier-priced: normal=1cr, advanced(JS render)=1cr, ultra(hardest pages)=2cr. Start normal, escalate on empty/blocked. Only billed on success.`, {
6
103
  url: z.string().min(1).max(2048)
@@ -18,5 +115,99 @@ export function registerExtractTool(server, getClient) {
18
115
  return handleApiError(err);
19
116
  }
20
117
  });
118
+ server.tool("map_website", `List a site's page URLs from its sitemaps and start page (deduplicated, path-filtered, with lastmod when known). Obeys robots.txt. 1 credit (normal). Use to pick pages for batch_extract.`, {
119
+ url: z.string().min(1).max(2048).describe("Site to map, e.g. https://example.com."),
120
+ search: z.string().max(200).optional().describe("Only URLs containing every word of this text (case-insensitive)."),
121
+ limit: z.number().int().min(1).max(5000).optional()
122
+ .describe(`Max links (default ${MCP_MAP_DEFAULT_LIMIT} here). Plan caps: Free 500, PAYG 1,000, paid 5,000.`),
123
+ sitemap: z.enum(["include", "only", "skip"]).optional()
124
+ .describe("'include' (default) sitemaps + page links; 'only' sitemaps; 'skip' page links."),
125
+ include_subdomains: z.boolean().optional().describe("Include subdomains. Default false."),
126
+ include_paths: globs("keep"),
127
+ exclude_paths: globs("drop"),
128
+ ignore_query_parameters: z.boolean().optional().describe("Merge URLs differing only by query. Default true."),
129
+ mode,
130
+ }, async (params) => {
131
+ try {
132
+ const body = { ...strip(params, []), limit: params.limit ?? MCP_MAP_DEFAULT_LIMIT };
133
+ const data = await getClient().post("/api/v1/extract/map", body);
134
+ return text(shapeMap(data));
135
+ }
136
+ catch (err) {
137
+ return handleApiError(err);
138
+ }
139
+ });
140
+ server.tool("crawl_website", `Crawl a site from one URL and extract its same-site pages as Markdown/text/HTML. Starts a job and waits up to wait_seconds: returns results if done, else the job id for get_crawl_status. ${PRICING} Max pages: Free 10, PAYG 100, Project 500, Bootstrap 2k, Startup 5k, Growth 10k. Results kept 3 days.`, {
141
+ url: z.string().min(1).max(2048).describe("Start URL; pages under its path are crawled first."),
142
+ max_pages: z.number().int().min(1).max(10000).optional().describe("Max pages (default 100, capped by plan)."),
143
+ max_depth: z.number().int().min(0).max(10).optional().describe("Link depth to follow (default 3; 0 = start page only)."),
144
+ include_paths: globs("crawl"),
145
+ exclude_paths: globs("skip"),
146
+ allow_subdomains: z.boolean().optional().describe("Include subdomains. Default false."),
147
+ ignore_query_parameters: z.boolean().optional().describe("Merge URLs differing only by query. Default true."),
148
+ sitemap: z.enum(["include", "skip", "only"]).optional()
149
+ .describe("'include' (default) also seeds from the sitemap; 'skip' links only; 'only' sitemap pages, no link following."),
150
+ format,
151
+ mode,
152
+ webhook_url: webhookUrl,
153
+ idempotency_key: idempotencyKey,
154
+ wait_seconds: waitSeconds(CRAWL_DEFAULT_WAIT_SECONDS),
155
+ max_content_chars: statusQuery.max_content_chars,
156
+ }, async (params) => {
157
+ try {
158
+ return await startJob(getClient(), "crawl", params, CRAWL_DEFAULT_WAIT_SECONDS);
159
+ }
160
+ catch (err) {
161
+ return handleApiError(err);
162
+ }
163
+ });
164
+ server.tool("get_crawl_status", `A crawl's status, page counts, credits used and page results (paged by cursor). Can wait for it to finish. Free.`, { id: jobId, ...statusQuery, wait_seconds: waitSeconds(0) }, async (params) => {
165
+ try {
166
+ return await jobStatus(getClient(), "crawl", params);
167
+ }
168
+ catch (err) {
169
+ return handleApiError(err);
170
+ }
171
+ });
172
+ server.tool("cancel_crawl", `Stop a running crawl; nothing more is billed and results so far stay readable. 409 if already finished. Free.`, { id: jobId }, async ({ id }) => {
173
+ try {
174
+ return trimResponse(await getClient().delete(`/api/v1/extract/crawl/${encodeURIComponent(id)}`));
175
+ }
176
+ catch (err) {
177
+ return handleApiError(err);
178
+ }
179
+ });
180
+ server.tool("batch_extract", `Extract a list of URLs in one job, each as Markdown/text/HTML, results in input order; invalid URLs are reported, never billed. Waits up to wait_seconds: returns results if done, else the job id for get_batch_status. ${PRICING} Max URLs: Free 10, PAYG 50, Project 100, Bootstrap 500, Startup/Growth 1k.`, {
181
+ urls: z.array(z.string().max(2048)).min(1).max(1000).describe("Pages to extract (duplicates removed)."),
182
+ format,
183
+ mode,
184
+ webhook_url: webhookUrl,
185
+ idempotency_key: idempotencyKey,
186
+ wait_seconds: waitSeconds(CRAWL_DEFAULT_WAIT_SECONDS),
187
+ max_content_chars: statusQuery.max_content_chars,
188
+ }, async (params) => {
189
+ try {
190
+ return await startJob(getClient(), "batch", params, CRAWL_DEFAULT_WAIT_SECONDS);
191
+ }
192
+ catch (err) {
193
+ return handleApiError(err);
194
+ }
195
+ });
196
+ server.tool("get_batch_status", `A batch's status, page counts, credits used and results in input order (paged by cursor). Can wait for it to finish. Free.`, { id: jobId, ...statusQuery, wait_seconds: waitSeconds(0) }, async (params) => {
197
+ try {
198
+ return await jobStatus(getClient(), "batch", params);
199
+ }
200
+ catch (err) {
201
+ return handleApiError(err);
202
+ }
203
+ });
204
+ server.tool("cancel_batch", `Stop a running batch; nothing more is billed and results so far stay readable. 409 if already finished. Free.`, { id: jobId }, async ({ id }) => {
205
+ try {
206
+ return trimResponse(await getClient().delete(`/api/v1/extract/batch/${encodeURIComponent(id)}`));
207
+ }
208
+ catch (err) {
209
+ return handleApiError(err);
210
+ }
211
+ });
21
212
  }
22
213
  //# sourceMappingURL=extract.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"extract.js","sourceRoot":"","sources":["../../src/tools/extract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,MAAM,UAAU,mBAAmB,CAAC,MAAiB,EAAE,SAA6B;IAClF,MAAM,CAAC,IAAI,CACT,aAAa,EACb,4LAA4L,EAC5L;QACE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;aAC7B,QAAQ,CAAC,uEAAuE,CAAC;QACpF,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE;aACpD,QAAQ,CAAC,0CAA0C,CAAC;QACvD,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE;aACrD,QAAQ,CAAC,6FAA6F,CAAC;KAC3G,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,SAAS,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;YAC/D,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"extract.js","sourceRoot":"","sources":["../../src/tools/extract.ts"],"names":[],"mappings":"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"}
@@ -4,12 +4,13 @@ export declare const PLATFORM_KEYS: string[];
4
4
  /**
5
5
  * What registers when SCAVIO_PLATFORMS is unset.
6
6
  *
7
- * Registering everything is not an option any more. The full surface is 248
8
- * tools, which serialises to 234KB of tools/list (measured with
9
- * `npm run toolslist`, not estimated) — roughly 58k tokens pushed into the
7
+ * Registering everything is not an option any more. The full surface is 263
8
+ * tools, which serialises to 249KB of tools/list (measured with
9
+ * `npm run toolslist`, not estimated) — roughly 62k tokens pushed into the
10
10
  * context of EVERY session before the user has typed anything, and past the
11
- * hard tool-count ceiling some clients enforce. The default set below is 126
12
- * tools, 96KB (0.20.0: TikTok, YouTube, Reddit and X gained 19 tools).
11
+ * hard tool-count ceiling some clients enforce. The default set below is 141
12
+ * tools, 110KB (0.20.0: TikTok, YouTube, Reddit and X gained 19 tools; 0.21.0:
13
+ * Extract gained map, crawl and batch, 7 tools; 0.22.0: Instagram gained 8).
13
14
  *
14
15
  * The default is therefore exactly what 0.12.x registered, plus extract:
15
16
  * upgrading must never silently remove a tool someone already depends on. A
@@ -26,7 +27,7 @@ export declare const DEFAULT_PLATFORMS: string[];
26
27
  * Turn a SCAVIO_PLATFORMS value into the canonical platform keys to register.
27
28
  *
28
29
  * Accepts a comma-separated list of platform keys, plus three keywords:
29
- * all — every platform (248 tools)
30
+ * all — every platform (263 tools)
30
31
  * default — expands to DEFAULT_PLATFORMS, so `default,sec,g2` is additive
31
32
  * none — no platform tools at all, leaving only get_usage
32
33
  *
@@ -105,12 +105,13 @@ export const PLATFORM_KEYS = Object.keys(PLATFORMS);
105
105
  /**
106
106
  * What registers when SCAVIO_PLATFORMS is unset.
107
107
  *
108
- * Registering everything is not an option any more. The full surface is 248
109
- * tools, which serialises to 234KB of tools/list (measured with
110
- * `npm run toolslist`, not estimated) — roughly 58k tokens pushed into the
108
+ * Registering everything is not an option any more. The full surface is 263
109
+ * tools, which serialises to 249KB of tools/list (measured with
110
+ * `npm run toolslist`, not estimated) — roughly 62k tokens pushed into the
111
111
  * context of EVERY session before the user has typed anything, and past the
112
- * hard tool-count ceiling some clients enforce. The default set below is 126
113
- * tools, 96KB (0.20.0: TikTok, YouTube, Reddit and X gained 19 tools).
112
+ * hard tool-count ceiling some clients enforce. The default set below is 141
113
+ * tools, 110KB (0.20.0: TikTok, YouTube, Reddit and X gained 19 tools; 0.21.0:
114
+ * Extract gained map, crawl and batch, 7 tools; 0.22.0: Instagram gained 8).
114
115
  *
115
116
  * The default is therefore exactly what 0.12.x registered, plus extract:
116
117
  * upgrading must never silently remove a tool someone already depends on. A
@@ -162,7 +163,7 @@ function warnOnce(message) {
162
163
  * Turn a SCAVIO_PLATFORMS value into the canonical platform keys to register.
163
164
  *
164
165
  * Accepts a comma-separated list of platform keys, plus three keywords:
165
- * all — every platform (248 tools)
166
+ * all — every platform (263 tools)
166
167
  * default — expands to DEFAULT_PLATFORMS, so `default,sec,g2` is additive
167
168
  * none — no platform tools at all, leaving only get_usage
168
169
  *
@@ -239,9 +240,20 @@ const READ_ONLY_ANNOTATIONS = {
239
240
  destructiveHint: false,
240
241
  openWorldHint: true,
241
242
  };
243
+ /**
244
+ * The exceptions to "reads and changes nothing": starting a crawl or batch
245
+ * creates a server-side job (not idempotent unless idempotency_key is set), and
246
+ * cancelling one stops it for good. Still no change to any external site.
247
+ */
248
+ const ANNOTATION_OVERRIDES = {
249
+ crawl_website: { readOnlyHint: false, destructiveHint: false, idempotentHint: false },
250
+ batch_extract: { readOnlyHint: false, destructiveHint: false, idempotentHint: false },
251
+ cancel_crawl: { readOnlyHint: false, destructiveHint: true, idempotentHint: true },
252
+ cancel_batch: { readOnlyHint: false, destructiveHint: true, idempotentHint: true },
253
+ };
242
254
  /**
243
255
  * Wrap the server so every tool() call is annotated at registration, instead
244
- * of editing 248 call sites. A tool added later picks this up automatically.
256
+ * of editing 263 call sites. A tool added later picks this up automatically.
245
257
  */
246
258
  function annotating(server) {
247
259
  return new Proxy(server, {
@@ -251,7 +263,7 @@ function annotating(server) {
251
263
  return (name, ...rest) => {
252
264
  const registered = Reflect.apply(target.tool, target, [name, ...rest]);
253
265
  const title = toolTitle(name);
254
- registered.update({ title, annotations: { title, ...READ_ONLY_ANNOTATIONS } });
266
+ registered.update({ title, annotations: { title, ...READ_ONLY_ANNOTATIONS, ...ANNOTATION_OVERRIDES[name] } });
255
267
  return registered;
256
268
  };
257
269
  },
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
@@ -8,10 +8,14 @@ import { trimResponse } from "../lib/trim-response.js";
8
8
  * records projected to agent-useful fields, see src/lib/trim-platforms.ts.
9
9
  * get_instagram_profile is deliberately left unprojected. The REST API
10
10
  * response is unchanged.
11
+ *
12
+ * Credits: the per-tool cost in each description is the usual charge. Any
13
+ * request can cost up to 10 when it needs extra work; credits_used in the
14
+ * response is the exact charge.
11
15
  */
12
16
  const IG_LISTS = ["items", "edges", "users"];
13
17
  export function registerInstagramTools(server, getClient) {
14
- server.tool("get_instagram_profile", `Get an Instagram user's profile. Usually 8 credits (2-10).`, {
18
+ server.tool("get_instagram_profile", `Get an Instagram user's profile: bio, follower/following/post counts, verification and user_id. 1 credit.`, {
15
19
  username: z.string().optional()
16
20
  .describe("Handle without @, e.g. 'instagram'."),
17
21
  user_id: z.string().optional()
@@ -25,7 +29,7 @@ export function registerInstagramTools(server, getClient) {
25
29
  return handleApiError(err);
26
30
  }
27
31
  });
28
- server.tool("get_instagram_user_posts", `List an Instagram user's posts. Pass pagination_token or next_max_id as cursor. Usually 2 credits (up to 10).`, {
32
+ server.tool("get_instagram_user_posts", `List an Instagram user's posts, about 12 per page. Pass pagination_token from the previous response as cursor. 2 credits per page.`, {
29
33
  username: z.string().optional()
30
34
  .describe("Handle without @."),
31
35
  user_id: z.string().optional()
@@ -33,7 +37,7 @@ export function registerInstagramTools(server, getClient) {
33
37
  count: z.number().int().min(1).max(50).default(12)
34
38
  .describe("Max posts returned; upstream may fetch more, extras are trimmed."),
35
39
  cursor: z.string().optional()
36
- .describe("pagination_token or next_max_id from previous response."),
40
+ .describe("pagination_token from previous response."),
37
41
  }, async (params) => {
38
42
  try {
39
43
  const data = await getClient().post("/api/v1/instagram/user/posts", params);
@@ -43,7 +47,7 @@ export function registerInstagramTools(server, getClient) {
43
47
  return handleApiError(err);
44
48
  }
45
49
  });
46
- server.tool("get_instagram_user_reels", `List an Instagram user's Reels. Paginate with next_max_id. Usually 8 credits (2-10).`, {
50
+ server.tool("get_instagram_user_reels", `List an Instagram user's Reels. Paginate with next_max_id. 1 credit (2 the first time a username is looked up).`, {
47
51
  username: z.string().optional()
48
52
  .describe("Handle without @."),
49
53
  user_id: z.string().optional()
@@ -61,7 +65,7 @@ export function registerInstagramTools(server, getClient) {
61
65
  return handleApiError(err);
62
66
  }
63
67
  });
64
- server.tool("get_instagram_user_tagged", `List posts an Instagram user is tagged in. Paginate with next_max_id/more_available. Usually 8 credits (2-10).`, {
68
+ server.tool("get_instagram_user_tagged", `List posts an Instagram user is tagged in. Paginate with next_max_id. 1 credit (2 the first time a username is looked up).`, {
65
69
  username: z.string().optional()
66
70
  .describe("Handle without @."),
67
71
  user_id: z.string().optional()
@@ -79,7 +83,7 @@ export function registerInstagramTools(server, getClient) {
79
83
  return handleApiError(err);
80
84
  }
81
85
  });
82
- server.tool("get_instagram_user_stories", `Get an Instagram user's active stories. Not paginated. Usually 8 credits (2-10).`, {
86
+ server.tool("get_instagram_user_stories", `Get an Instagram user's active stories. Not paginated. 2 credits.`, {
83
87
  username: z.string().optional()
84
88
  .describe("Handle without @."),
85
89
  user_id: z.string().optional()
@@ -93,7 +97,7 @@ export function registerInstagramTools(server, getClient) {
93
97
  return handleApiError(err);
94
98
  }
95
99
  });
96
- server.tool("get_instagram_post", `Get a single Instagram post/reel. Provide url, media_id, or shortcode. media_type: 1=image, 2=video, 8=carousel. 8 credits.`, {
100
+ server.tool("get_instagram_post", `Get a single Instagram post/reel. Provide url, media_id, or shortcode. media_type: 1=image, 2=video, 8=carousel. 2 credits.`, {
97
101
  url: z.string().optional()
98
102
  .describe("Post URL."),
99
103
  media_id: z.string().optional()
@@ -109,7 +113,7 @@ export function registerInstagramTools(server, getClient) {
109
113
  return handleApiError(err);
110
114
  }
111
115
  });
112
- server.tool("get_instagram_post_comments", `Get comments on an Instagram post. Provide shortcode or url (not media_id). Paginate with next_min_id. Usually 8 credits (2-10).`, {
116
+ server.tool("get_instagram_post_comments", `Get comments on an Instagram post. Provide shortcode or url (not media_id). Paginate with next_min_id. 2 credits per page.`, {
113
117
  shortcode: z.string().optional()
114
118
  .describe("Post shortcode."),
115
119
  url: z.string().optional()
@@ -127,7 +131,7 @@ export function registerInstagramTools(server, getClient) {
127
131
  return handleApiError(err);
128
132
  }
129
133
  });
130
- server.tool("get_instagram_comment_replies", `Get replies to an Instagram comment. Requires media_id (from get_instagram_post) and comment_id (pk from get_instagram_post_comments). 8 credits.`, {
134
+ server.tool("get_instagram_comment_replies", `Get replies to an Instagram comment. Requires media_id (from get_instagram_post) and comment_id (pk from get_instagram_post_comments). 2 credits.`, {
131
135
  media_id: z.string()
132
136
  .describe("Post media ID (from get_instagram_post)."),
133
137
  comment_id: z.string()
@@ -143,7 +147,7 @@ export function registerInstagramTools(server, getClient) {
143
147
  return handleApiError(err);
144
148
  }
145
149
  });
146
- server.tool("search_instagram_users", `Search Instagram users by keyword. Pagination via rank_token is best effort. Usually 8 credits (2-10).`, {
150
+ server.tool("search_instagram_users", `Search Instagram users by keyword. 2 credits; a request with a cursor (rank_token, next page) costs 8.`, {
147
151
  keyword: z.string().min(1).max(500)
148
152
  .describe("Search query."),
149
153
  cursor: z.string().optional()
@@ -157,7 +161,7 @@ export function registerInstagramTools(server, getClient) {
157
161
  return handleApiError(err);
158
162
  }
159
163
  });
160
- server.tool("search_instagram_hashtags", `Search Instagram hashtags by keyword. Pagination via rank_token is best effort. Usually 8 credits (2-10).`, {
164
+ server.tool("search_instagram_hashtags", `Search Instagram hashtags by keyword. 2 credits; a request with a cursor (rank_token, next page) costs 8.`, {
161
165
  keyword: z.string().min(1).max(500)
162
166
  .describe("Search query."),
163
167
  cursor: z.string().optional()
@@ -171,7 +175,7 @@ export function registerInstagramTools(server, getClient) {
171
175
  return handleApiError(err);
172
176
  }
173
177
  });
174
- server.tool("get_instagram_user_followers", `Get an Instagram user's followers. Paginate with next_max_id/has_more. Usually 8 credits (2-10).`, {
178
+ server.tool("get_instagram_user_followers", `Get an Instagram user's followers. Paginate with next_max_id/has_more. 2 credits per page.`, {
175
179
  username: z.string().optional()
176
180
  .describe("Handle without @."),
177
181
  user_id: z.string().optional()
@@ -189,7 +193,7 @@ export function registerInstagramTools(server, getClient) {
189
193
  return handleApiError(err);
190
194
  }
191
195
  });
192
- server.tool("get_instagram_user_followings", `Get accounts an Instagram user follows. Paginate with next_max_id/has_more. Usually 8 credits (2-10).`, {
196
+ server.tool("get_instagram_user_followings", `Get accounts an Instagram user follows. Paginate with next_max_id/has_more. 2 credits per page.`, {
193
197
  username: z.string().optional()
194
198
  .describe("Handle without @."),
195
199
  user_id: z.string().optional()
@@ -207,5 +211,113 @@ export function registerInstagramTools(server, getClient) {
207
211
  return handleApiError(err);
208
212
  }
209
213
  });
214
+ server.tool("get_instagram_user_highlights", `List an Instagram user's story highlights: highlight id, title, cover and media_count. Pass an id to get_instagram_highlight_stories. 2 credits.`, {
215
+ username: z.string().optional()
216
+ .describe("Handle without @."),
217
+ user_id: z.string().optional()
218
+ .describe("Numeric user ID."),
219
+ }, async (params) => {
220
+ try {
221
+ const data = await getClient().post("/api/v1/instagram/user/highlights", params);
222
+ return trimResponse(data, { platform: "instagram" });
223
+ }
224
+ catch (err) {
225
+ return handleApiError(err);
226
+ }
227
+ });
228
+ server.tool("get_instagram_highlight_stories", `Get every story saved in one Instagram highlight, with image and video URLs and posting time. 2 credits.`, {
229
+ highlight_id: z.string().regex(/^(highlight:)?\d{5,25}$/, "highlight_id must be an id from get_instagram_user_highlights")
230
+ .describe("Highlight id from get_instagram_user_highlights, e.g. 'highlight:18149897764550869' (prefix optional)."),
231
+ }, async (params) => {
232
+ try {
233
+ const data = await getClient().post("/api/v1/instagram/highlight/stories", params);
234
+ return trimResponse(data, { platform: "instagram" });
235
+ }
236
+ catch (err) {
237
+ return handleApiError(err);
238
+ }
239
+ });
240
+ server.tool("search_instagram_reels", `Search Instagram Reels by keyword: caption, author, play/like/comment counts and video URL. Paginate with pagination_token. 2 credits per page.`, {
241
+ keyword: z.string().min(1).max(500)
242
+ .describe("Search query, e.g. 'latte art'."),
243
+ cursor: z.string().optional()
244
+ .describe("pagination_token from previous response."),
245
+ }, async (params) => {
246
+ try {
247
+ const data = await getClient().post("/api/v1/instagram/search/reels", params);
248
+ return trimResponse(data, { platform: "instagram" });
249
+ }
250
+ catch (err) {
251
+ return handleApiError(err);
252
+ }
253
+ });
254
+ server.tool("search_instagram_music", `Search Instagram audio tracks by song or artist: title, artist, duration and the id get_instagram_music_posts takes. 2 credits.`, {
255
+ keyword: z.string().min(1).max(500)
256
+ .describe("Song or artist, e.g. 'espresso'."),
257
+ }, async (params) => {
258
+ try {
259
+ const data = await getClient().post("/api/v1/instagram/search/music", params);
260
+ return trimResponse(data, { platform: "instagram" });
261
+ }
262
+ catch (err) {
263
+ return handleApiError(err);
264
+ }
265
+ });
266
+ server.tool("get_instagram_music_posts", `List the Reels that use an Instagram audio track, plus the track's total reel count. Paginate with paging_info.max_id. 1 credit per page.`, {
267
+ music_id: z.string().regex(/^\d{5,25}$/, "music_id must be numeric")
268
+ .describe("Audio id (the id field from search_instagram_music), e.g. '1747512212697470'."),
269
+ cursor: z.string().optional()
270
+ .describe("paging_info.max_id from previous response."),
271
+ }, async (params) => {
272
+ try {
273
+ const data = await getClient().post("/api/v1/instagram/music/posts", params);
274
+ return trimResponse(data, { platform: "instagram" });
275
+ }
276
+ catch (err) {
277
+ return handleApiError(err);
278
+ }
279
+ });
280
+ server.tool("search_instagram_locations", `Search Instagram places by name: location id, name, address, city and coordinates. 2 credits.`, {
281
+ keyword: z.string().min(1).max(500)
282
+ .describe("Place name, e.g. 'eiffel tower'."),
283
+ }, async (params) => {
284
+ try {
285
+ const data = await getClient().post("/api/v1/instagram/search/locations", params);
286
+ return trimResponse(data, { platform: "instagram" });
287
+ }
288
+ catch (err) {
289
+ return handleApiError(err);
290
+ }
291
+ });
292
+ server.tool("get_instagram_user_similar", `Get accounts similar to an Instagram user. Available for most creator accounts; some brand accounts return none. 2 credits.`, {
293
+ username: z.string().optional()
294
+ .describe("Handle without @."),
295
+ user_id: z.string().optional()
296
+ .describe("Numeric user ID."),
297
+ }, async (params) => {
298
+ try {
299
+ const data = await getClient().post("/api/v1/instagram/user/similar", params);
300
+ return trimResponse(data, { platform: "instagram" });
301
+ }
302
+ catch (err) {
303
+ return handleApiError(err);
304
+ }
305
+ });
306
+ server.tool("get_instagram_post_likers", `Get accounts that liked an Instagram post (up to about 1,000 per post) and the post's total like count. Provide shortcode or url. 2 credits.`, {
307
+ shortcode: z.string().optional()
308
+ .describe("Post shortcode, e.g. 'DeJ28eTxo4s'."),
309
+ url: z.string().optional()
310
+ .describe("Post URL."),
311
+ count: z.number().int().min(1).max(1000).default(100)
312
+ .describe("Max likers returned to you; the call fetches the full list either way, extras are trimmed."),
313
+ }, async ({ count, ...params }) => {
314
+ try {
315
+ const data = await getClient().post("/api/v1/instagram/post/likers", params);
316
+ return trimResponse(data, { platform: "instagram", limit: count, listKeys: IG_LISTS });
317
+ }
318
+ catch (err) {
319
+ return handleApiError(err);
320
+ }
321
+ });
210
322
  }
211
323
  //# sourceMappingURL=instagram.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"instagram.js","sourceRoot":"","sources":["../../src/tools/instagram.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"instagram.js","sourceRoot":"","sources":["../../src/tools/instagram.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@scavio/mcp-server",
3
- "version": "0.20.0",
3
+ "version": "0.22.0",
4
4
  "mcpName": "io.github.scavio-ai/scavio-mcp",
5
- "description": "MCP server connecting AI agents to Scavio: web search, page extraction, and structured e-commerce, social, travel, jobs, real-estate, app-store, ad-library and company-filing data. 248 tools across 36 platforms plus Extract, one API key.",
5
+ "description": "MCP server connecting AI agents to Scavio: web search, page extraction, and structured e-commerce, social, travel, jobs, real-estate, app-store, ad-library and company-filing data. 263 tools across 36 platforms plus Extract, site map, crawl and batch extraction, one API key.",
6
6
  "type": "module",
7
7
  "license": "MIT",
8
8
  "author": "Scavio",
@@ -43,6 +43,9 @@
43
43
  "sec-filings",
44
44
  "web-scraping",
45
45
  "url-extraction",
46
+ "web-crawler",
47
+ "website-crawler",
48
+ "sitemap",
46
49
  "tavily-alternative",
47
50
  "serpapi-alternative"
48
51
  ],