@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 +63 -16
- package/dist/lib/client.d.ts +2 -1
- package/dist/lib/client.js +11 -4
- package/dist/lib/client.js.map +1 -1
- package/dist/lib/errors.d.ts +5 -1
- package/dist/lib/errors.js +5 -1
- package/dist/lib/errors.js.map +1 -1
- package/dist/lib/tool-error.js +10 -2
- package/dist/lib/tool-error.js.map +1 -1
- package/dist/lib/web-jobs.d.ts +35 -0
- package/dist/lib/web-jobs.js +75 -0
- package/dist/lib/web-jobs.js.map +1 -0
- package/dist/tools/extract.js +192 -1
- package/dist/tools/extract.js.map +1 -1
- package/dist/tools/index.d.ts +7 -6
- package/dist/tools/index.js +20 -8
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/instagram.js +125 -13
- package/dist/tools/instagram.js.map +1 -1
- package/package.json +5 -2
package/README.md
CHANGED
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|

|
|
4
4
|

|
|
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.
|
|
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
|
|
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
|
|
211
|
-
roughly
|
|
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` — **
|
|
221
|
-
| `all` | every platform — **
|
|
222
|
-
| `extract,sec,g2` | just those platforms —
|
|
223
|
-
| `default,zillow,metaads` | the default set plus two more —
|
|
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
|
|
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` (
|
|
312
|
-
|
|
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
|
-
|
|
459
|
-
|
|
460
|
-
|
|
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
|
|
package/dist/lib/client.d.ts
CHANGED
|
@@ -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
|
}
|
package/dist/lib/client.js
CHANGED
|
@@ -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
|
package/dist/lib/client.js.map
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/lib/errors.d.ts
CHANGED
|
@@ -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
|
}
|
package/dist/lib/errors.js
CHANGED
|
@@ -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
|
}
|
package/dist/lib/errors.js.map
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/lib/tool-error.js
CHANGED
|
@@ -17,8 +17,16 @@ import { ApiError } from "./errors.js";
|
|
|
17
17
|
*/
|
|
18
18
|
export function handleApiError(err) {
|
|
19
19
|
if (err instanceof ApiError) {
|
|
20
|
-
|
|
21
|
-
|
|
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;
|
|
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":"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"}
|
package/dist/tools/extract.js
CHANGED
|
@@ -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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"}
|
package/dist/tools/index.d.ts
CHANGED
|
@@ -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
|
|
8
|
-
* tools, which serialises to
|
|
9
|
-
* `npm run toolslist`, not estimated) — roughly
|
|
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
|
|
12
|
-
* 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 (
|
|
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
|
*
|
package/dist/tools/index.js
CHANGED
|
@@ -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
|
|
109
|
-
* tools, which serialises to
|
|
110
|
-
* `npm run toolslist`, not estimated) — roughly
|
|
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
|
|
113
|
-
* 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 (
|
|
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
|
|
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
|
},
|
package/dist/tools/index.js.map
CHANGED
|
@@ -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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"}
|
package/dist/tools/instagram.js
CHANGED
|
@@ -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
|
|
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
|
|
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
|
|
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.
|
|
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
|
|
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.
|
|
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.
|
|
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.
|
|
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).
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
],
|