composio-scavio 0.1.0 → 0.2.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/dist/index.js CHANGED
@@ -9,6 +9,15 @@ var str = (d) => z.string().describe(d);
9
9
  var ostr = (d) => z.string().optional().describe(d);
10
10
  var onum = (d) => z.number().optional().describe(d);
11
11
  var obool = (d) => z.boolean().optional().describe(d);
12
+ function googleSearchParams(i) {
13
+ const params = { query: i.query };
14
+ if (i.countryCode != null) params.gl = i.countryCode;
15
+ if (i.language != null) params.hl = i.language;
16
+ if (i.page != null && i.page > 1) params.start = (i.page - 1) * 10;
17
+ if (i.device != null) params.device = i.device;
18
+ if (i.nfpr != null) params.nfpr = i.nfpr;
19
+ return params;
20
+ }
12
21
  function buildScavioToolkit(options = {}) {
13
22
  const {
14
23
  apiKey,
@@ -36,18 +45,16 @@ function buildScavioToolkit(options = {}) {
36
45
  tool(
37
46
  "GOOGLE_SEARCH",
38
47
  "Scavio Google Search",
39
- "Search Google for real-time web results (organic, knowledge graph, news, and more).",
48
+ "Search Google for real-time web results (organic_results, ads, and the AI Overview when present). Costs 1 credit.",
40
49
  z.object({
41
50
  query: str("The search query."),
42
- country_code: ostr("Two-letter country code, e.g. 'us'."),
51
+ countryCode: ostr("Two-letter country code, e.g. 'us'."),
43
52
  language: ostr("Two-letter language code, e.g. 'en'."),
44
53
  page: onum("Result page number (1-based)."),
45
- search_type: ostr("Search vertical, e.g. 'search', 'news', 'images'."),
46
54
  device: ostr("Device profile: 'desktop' or 'mobile'."),
47
- nfpr: obool("Disable auto-correction of the query when true."),
48
- light_request: obool("Cheaper, lighter response (1 credit instead of 2) when true.")
55
+ nfpr: obool("Disable auto-correction of the query when true.")
49
56
  }),
50
- (i) => client.google.search(i)
57
+ (i) => client.google.search(googleSearchParams(i))
51
58
  )
52
59
  );
53
60
  }
@@ -56,39 +63,33 @@ function buildScavioToolkit(options = {}) {
56
63
  tool(
57
64
  "AMAZON_SEARCH",
58
65
  "Scavio Amazon Search",
59
- "Search Amazon for products matching a query.",
66
+ "Search Amazon for products matching a query. Results are unsorted and cannot be filtered by category, merchant or price. Costs 1 credit.",
60
67
  z.object({
61
68
  query: str("The product search query."),
62
- domain: ostr("Amazon domain, e.g. 'amazon.com'."),
63
- country: ostr("Two-letter country code."),
64
- language: ostr("Two-letter language code."),
65
- currency: ostr("Currency code, e.g. 'USD'."),
66
- device: ostr("Device profile: 'desktop' or 'mobile'."),
67
- sort_by: ostr("Sort order for results."),
68
- start_page: onum("First page to return."),
69
- pages: onum("Number of pages to return."),
70
- category_id: ostr("Restrict to an Amazon category id."),
71
- merchant_id: ostr("Restrict to a merchant id."),
72
- zip_code: ostr("Delivery ZIP/postal code."),
73
- autoselect_variant: obool("Auto-select the best product variant when true.")
69
+ country: ostr("Marketplace country code (ISO 3166-1 alpha-2), not a domain: 'us' (default), 'gb' (the UK is gb, not uk), 'ca', 'de', 'fr', 'es', 'it', 'jp', 'in', 'au', 'br', 'mx', 'nl', 'pl', 'se', 'sg', 'ae', 'sa', 'eg', 'cn', 'be', 'tr'. An unknown code falls back to us."),
70
+ page: onum("Result page, 1-based. One page per call, 1 credit each.")
74
71
  }),
75
72
  (i) => client.amazon.search(i)
76
73
  ),
77
74
  tool(
78
75
  "AMAZON_PRODUCT",
79
76
  "Scavio Amazon Product",
80
- "Fetch full Amazon product details by ASIN.",
77
+ "Fetch full Amazon product details by ASIN. price is the buy-box price only. Costs 1 credit.",
81
78
  z.object({
82
79
  asin: str("Amazon Standard Identification Number (ASIN) of the product."),
83
- domain: ostr("Amazon domain, e.g. 'amazon.com'."),
84
- country: ostr("Two-letter country code."),
85
- language: ostr("Two-letter language code."),
86
- currency: ostr("Currency code, e.g. 'USD'."),
87
- device: ostr("Device profile: 'desktop' or 'mobile'."),
88
- zip_code: ostr("Delivery ZIP/postal code."),
89
- autoselect_variant: obool("Auto-select the best product variant when true.")
80
+ country: ostr("Marketplace country code (ISO 3166-1 alpha-2), not a domain: 'us' (default), 'gb' (the UK is gb, not uk), 'ca', 'de', 'fr', 'es', 'it', 'jp', 'in', 'au', 'br', 'mx', 'nl', 'pl', 'se', 'sg', 'ae', 'sa', 'eg', 'cn', 'be', 'tr'. An unknown code falls back to us.")
90
81
  }),
91
82
  (i) => client.amazon.product(i)
83
+ ),
84
+ tool(
85
+ "AMAZON_OFFERS",
86
+ "Scavio Amazon Offers",
87
+ "List every seller offer for one Amazon ASIN: price, seller, condition, shipping, and which offer holds the buy box. Page 1 only. Use this instead of AMAZON_PRODUCT when comparing sellers or checking who owns the buy box. Costs 1 credit.",
88
+ z.object({
89
+ asin: str("Amazon Standard Identification Number (ASIN) of the product."),
90
+ country: ostr("Marketplace country code (ISO 3166-1 alpha-2), not a domain: 'us' (default), 'gb' (the UK is gb, not uk), 'ca', 'de', 'fr', 'es', 'it', 'jp', 'in', 'au', 'br', 'mx', 'nl', 'pl', 'se', 'sg', 'ae', 'sa', 'eg', 'cn', 'be', 'tr'. An unknown code falls back to us.")
91
+ }),
92
+ (i) => client.amazon.offers(i)
92
93
  )
93
94
  );
94
95
  }
@@ -97,7 +98,7 @@ function buildScavioToolkit(options = {}) {
97
98
  tool(
98
99
  "WALMART_SEARCH",
99
100
  "Scavio Walmart Search",
100
- "Search Walmart for products matching a query.",
101
+ "Search Walmart for products matching a query. Costs 1 credit.",
101
102
  z.object({
102
103
  query: str("The product search query."),
103
104
  domain: ostr("Walmart domain."),
@@ -116,7 +117,7 @@ function buildScavioToolkit(options = {}) {
116
117
  tool(
117
118
  "WALMART_PRODUCT",
118
119
  "Scavio Walmart Product",
119
- "Fetch full Walmart product details by product id.",
120
+ "Fetch full Walmart product details by product id. Costs 1 credit.",
120
121
  z.object({
121
122
  product_id: str("Walmart product id."),
122
123
  domain: ostr("Walmart domain."),
@@ -133,13 +134,15 @@ function buildScavioToolkit(options = {}) {
133
134
  tool(
134
135
  "YOUTUBE_SEARCH",
135
136
  "Scavio YouTube Search",
136
- "Search YouTube for videos, channels, or playlists.",
137
+ "Search YouTube for videos, channels, or playlists. Costs 2 credits.",
137
138
  z.object({
138
139
  query: str("The video search query."),
139
- upload_date: ostr("Upload date filter, e.g. 'today', 'week', 'month'."),
140
- type: ostr("Result type, e.g. 'video', 'channel', 'playlist'."),
141
- duration: ostr("Duration filter, e.g. 'short', 'long'."),
142
- sort_by: ostr("Sort order for results."),
140
+ upload_date: ostr("Upload date filter: 'last_hour', 'today', 'this_week', 'this_month', 'this_year'."),
141
+ type: ostr("Result type: 'video', 'channel', 'playlist', or 'movie'."),
142
+ duration: ostr("Duration filter: 'short', 'medium', or 'long'."),
143
+ sort_by: ostr("Sort order: 'relevance', 'date', 'view_count', or 'rating'."),
144
+ features: z.array(z.string()).optional().describe("Feature filters, e.g. ['hd', '4k', 'subtitles', 'creative_commons', 'live', '360', '3d', 'hdr', 'vr180']."),
145
+ cursor: ostr("Pagination cursor from a prior response."),
143
146
  hd: obool("Restrict to HD videos when true."),
144
147
  subtitles: obool("Restrict to videos with subtitles when true."),
145
148
  creative_commons: obool("Restrict to Creative Commons videos when true."),
@@ -147,12 +150,144 @@ function buildScavioToolkit(options = {}) {
147
150
  }),
148
151
  (i) => client.youtube.search(i)
149
152
  ),
153
+ tool(
154
+ "YOUTUBE_SHORTS",
155
+ "Scavio YouTube Shorts",
156
+ "Search YouTube Shorts. Costs 2 credits.",
157
+ z.object({
158
+ query: str("The Shorts search query."),
159
+ sort_by: ostr("Sort order: 'relevance', 'date', 'view_count', or 'rating'."),
160
+ cursor: ostr("Pagination cursor from a prior response.")
161
+ }),
162
+ (i) => client.youtube.shorts(i)
163
+ ),
164
+ tool(
165
+ "YOUTUBE_SUGGESTIONS",
166
+ "Scavio YouTube Suggestions",
167
+ "Get YouTube search autocomplete suggestions for a partial query. Costs 1 credit.",
168
+ z.object({
169
+ query: str("The partial query to autocomplete."),
170
+ language: ostr("Suggestion language (ISO 639-1, default 'en')."),
171
+ region: ostr("Region code (ISO 3166-1 alpha-2, default 'US').")
172
+ }),
173
+ (i) => client.youtube.suggestions(i)
174
+ ),
175
+ tool(
176
+ "YOUTUBE_VIDEO",
177
+ "Scavio YouTube Video",
178
+ "Fetch full metadata for a YouTube video by id or watch URL. Costs 1 credit.",
179
+ z.object({ video_id: str("YouTube video id or a full watch URL.") }),
180
+ (i) => client.youtube.video(i)
181
+ ),
150
182
  tool(
151
183
  "YOUTUBE_METADATA",
152
184
  "Scavio YouTube Metadata",
153
- "Fetch metadata for a YouTube video by id.",
154
- z.object({ video_id: str("YouTube video id.") }),
185
+ "Fetch metadata for a YouTube video by id. Deprecated alias of YOUTUBE_VIDEO.",
186
+ z.object({ video_id: str("YouTube video id or a full watch URL.") }),
155
187
  (i) => client.youtube.metadata(i)
188
+ ),
189
+ tool(
190
+ "YOUTUBE_COMMENTS",
191
+ "Scavio YouTube Comments",
192
+ "List top-level comments on a YouTube video. Costs 1 credit.",
193
+ z.object({
194
+ video_id: str("YouTube video id or a full watch URL."),
195
+ cursor: ostr("Pagination cursor from a prior response.")
196
+ }),
197
+ (i) => client.youtube.comments(i)
198
+ ),
199
+ tool(
200
+ "YOUTUBE_COMMENT_REPLIES",
201
+ "Scavio YouTube Comment Replies",
202
+ "List replies to a YouTube comment using its reply cursor. Costs 1 credit.",
203
+ z.object({
204
+ video_id: str("YouTube video id or a full watch URL."),
205
+ reply_cursor: str("Reply cursor from a parent comment's 'reply_cursor' field."),
206
+ cursor: ostr("Pagination cursor from a prior response.")
207
+ }),
208
+ (i) => client.youtube.commentReplies(i)
209
+ ),
210
+ tool(
211
+ "YOUTUBE_TRANSCRIPT",
212
+ "Scavio YouTube Transcript",
213
+ "Fetch the transcript or timed captions for a YouTube video. Costs 8 credits.",
214
+ z.object({
215
+ video_id: str("YouTube video id or a full watch URL."),
216
+ language: ostr("Caption language code (default 'en')."),
217
+ format: ostr("'text' for a plain transcript or 'srt' for timed subtitles (default 'text').")
218
+ }),
219
+ (i) => client.youtube.transcript(i)
220
+ ),
221
+ tool(
222
+ "YOUTUBE_RELATED",
223
+ "Scavio YouTube Related",
224
+ "List videos related to a YouTube video. Costs 1 credit.",
225
+ z.object({
226
+ video_id: str("YouTube video id or a full watch URL."),
227
+ cursor: ostr("Pagination cursor from a prior response.")
228
+ }),
229
+ (i) => client.youtube.related(i)
230
+ ),
231
+ tool(
232
+ "YOUTUBE_CHANNEL_SEARCH",
233
+ "Scavio YouTube Channel Search",
234
+ "Search YouTube channels by keyword. Costs 1 credit.",
235
+ z.object({
236
+ query: str("The channel search query."),
237
+ cursor: ostr("Pagination cursor from a prior response.")
238
+ }),
239
+ (i) => client.youtube.channelSearch(i)
240
+ ),
241
+ tool(
242
+ "YOUTUBE_CHANNEL",
243
+ "Scavio YouTube Channel",
244
+ "Fetch YouTube channel details by id, @handle, or URL. Costs 1 credit.",
245
+ z.object({ channel_id: str("YouTube channel id, @handle, or channel URL.") }),
246
+ (i) => client.youtube.channel(i)
247
+ ),
248
+ tool(
249
+ "YOUTUBE_CHANNEL_VIDEOS",
250
+ "Scavio YouTube Channel Videos",
251
+ "List videos uploaded by a YouTube channel. Costs 1 credit.",
252
+ z.object({
253
+ channel_id: str("YouTube channel id."),
254
+ cursor: ostr("Pagination cursor from a prior response.")
255
+ }),
256
+ (i) => client.youtube.channelVideos(i)
257
+ ),
258
+ tool(
259
+ "YOUTUBE_CHANNEL_SHORTS",
260
+ "Scavio YouTube Channel Shorts",
261
+ "List Shorts posted by a YouTube channel. Costs 1 credit.",
262
+ z.object({
263
+ channel_id: str("YouTube channel id."),
264
+ cursor: ostr("Pagination cursor from a prior response.")
265
+ }),
266
+ (i) => client.youtube.channelShorts(i)
267
+ ),
268
+ tool(
269
+ "YOUTUBE_CHANNEL_COMMUNITY",
270
+ "Scavio YouTube Channel Community",
271
+ "List community posts from a YouTube channel. Costs 1 credit.",
272
+ z.object({
273
+ channel_id: str("YouTube channel id."),
274
+ cursor: ostr("Pagination cursor from a prior response.")
275
+ }),
276
+ (i) => client.youtube.channelCommunity(i)
277
+ ),
278
+ tool(
279
+ "YOUTUBE_CHANNEL_RESOLVE",
280
+ "Scavio YouTube Channel Resolve",
281
+ "Resolve a YouTube @handle or channel URL to a channel id. Costs 1 credit.",
282
+ z.object({ channel: str("A channel @handle or channel URL to resolve to a channel id.") }),
283
+ (i) => client.youtube.channelResolve(i)
284
+ ),
285
+ tool(
286
+ "YOUTUBE_STREAMS",
287
+ "Scavio YouTube Streams",
288
+ "Fetch playable or downloadable stream formats for a YouTube video. Costs 3 credits.",
289
+ z.object({ video_id: str("YouTube video id or a full watch URL.") }),
290
+ (i) => client.youtube.streams(i)
156
291
  )
157
292
  );
158
293
  }
@@ -161,20 +296,18 @@ function buildScavioToolkit(options = {}) {
161
296
  tool(
162
297
  "REDDIT_SEARCH",
163
298
  "Scavio Reddit Search",
164
- "Search Reddit posts, subreddits, or users.",
299
+ "Search Reddit posts. Returns data.results with next_cursor and has_more; page with cursor. Results cannot be filtered or sorted. Costs 1 credit.",
165
300
  z.object({
166
301
  query: str("The Reddit search query."),
167
- type: ostr("Search type, e.g. 'posts', 'subreddits', 'users'."),
168
- sort: ostr("Sort order, e.g. 'relevance', 'new', 'top'."),
169
- cursor: ostr("Pagination cursor.")
302
+ cursor: ostr("Pagination cursor: pass 'next_cursor' from a prior response.")
170
303
  }),
171
304
  (i) => client.reddit.search(i)
172
305
  ),
173
306
  tool(
174
307
  "REDDIT_POST",
175
308
  "Scavio Reddit Post",
176
- "Fetch a Reddit post and its comment thread by URL.",
177
- z.object({ url: str("Full URL of the Reddit post to fetch with its comments.") }),
309
+ "Fetch one Reddit post by URL. Returns a flat post object under data (post_id, title, text, url, subreddit, author, score, upvote_ratio, num_comments, created_at, is_nsfw, is_video, thumbnail, media); comments are NOT included. Costs 1 credit.",
310
+ z.object({ url: str("Full URL of the Reddit post.") }),
178
311
  (i) => client.reddit.post(i)
179
312
  )
180
313
  );
@@ -184,7 +317,7 @@ function buildScavioToolkit(options = {}) {
184
317
  tool(
185
318
  "TIKTOK_PROFILE",
186
319
  "Scavio TikTok Profile",
187
- "Fetch a TikTok user profile by username or secUid.",
320
+ "Fetch a TikTok user profile by username or secUid. Costs 1 credit.",
188
321
  z.object({
189
322
  username: ostr("TikTok username (without @). Provide this or sec_user_id."),
190
323
  sec_user_id: ostr("TikTok secUid. Provide this or username.")
@@ -194,7 +327,7 @@ function buildScavioToolkit(options = {}) {
194
327
  tool(
195
328
  "TIKTOK_USER_POSTS",
196
329
  "Scavio TikTok User Posts",
197
- "List a TikTok user's posts by secUid.",
330
+ "List a TikTok user's posts by secUid. Costs 1 credit.",
198
331
  z.object({
199
332
  sec_user_id: str("TikTok secUid of the user."),
200
333
  cursor: ostr("Pagination cursor."),
@@ -206,14 +339,14 @@ function buildScavioToolkit(options = {}) {
206
339
  tool(
207
340
  "TIKTOK_VIDEO",
208
341
  "Scavio TikTok Video",
209
- "Fetch a TikTok video by id.",
342
+ "Fetch a TikTok video by id. Costs 1 credit.",
210
343
  z.object({ video_id: str("TikTok video id.") }),
211
344
  (i) => client.tiktok.video(i)
212
345
  ),
213
346
  tool(
214
347
  "TIKTOK_VIDEO_COMMENTS",
215
348
  "Scavio TikTok Video Comments",
216
- "List comments on a TikTok video.",
349
+ "List comments on a TikTok video. Costs 1 credit.",
217
350
  z.object({
218
351
  video_id: str("TikTok video id."),
219
352
  cursor: ostr("Pagination cursor."),
@@ -224,7 +357,7 @@ function buildScavioToolkit(options = {}) {
224
357
  tool(
225
358
  "TIKTOK_COMMENT_REPLIES",
226
359
  "Scavio TikTok Comment Replies",
227
- "List replies to a TikTok video comment.",
360
+ "List replies to a TikTok video comment. Costs 1 credit.",
228
361
  z.object({
229
362
  video_id: str("TikTok video id."),
230
363
  comment_id: str("Parent comment id."),
@@ -236,7 +369,7 @@ function buildScavioToolkit(options = {}) {
236
369
  tool(
237
370
  "TIKTOK_SEARCH_VIDEOS",
238
371
  "Scavio TikTok Search Videos",
239
- "Search TikTok videos by keyword.",
372
+ "Search TikTok videos by keyword. Costs 1 credit.",
240
373
  z.object({
241
374
  keyword: str("Search keyword."),
242
375
  cursor: ostr("Pagination cursor."),
@@ -249,7 +382,7 @@ function buildScavioToolkit(options = {}) {
249
382
  tool(
250
383
  "TIKTOK_SEARCH_USERS",
251
384
  "Scavio TikTok Search Users",
252
- "Search TikTok users by keyword.",
385
+ "Search TikTok users by keyword. Costs 1 credit.",
253
386
  z.object({
254
387
  keyword: str("Search keyword."),
255
388
  cursor: ostr("Pagination cursor."),
@@ -260,7 +393,7 @@ function buildScavioToolkit(options = {}) {
260
393
  tool(
261
394
  "TIKTOK_HASHTAG",
262
395
  "Scavio TikTok Hashtag",
263
- "Fetch a TikTok hashtag by name or id.",
396
+ "Fetch a TikTok hashtag by name or id. Costs 1 credit.",
264
397
  z.object({
265
398
  hashtag_name: ostr("Hashtag name (without #). Provide this or hashtag_id."),
266
399
  hashtag_id: ostr("Hashtag id. Provide this or hashtag_name.")
@@ -270,7 +403,7 @@ function buildScavioToolkit(options = {}) {
270
403
  tool(
271
404
  "TIKTOK_HASHTAG_VIDEOS",
272
405
  "Scavio TikTok Hashtag Videos",
273
- "List videos for a TikTok hashtag by id.",
406
+ "List videos for a TikTok hashtag by id. Costs 1 credit.",
274
407
  z.object({
275
408
  hashtag_id: str("Hashtag id."),
276
409
  cursor: ostr("Pagination cursor."),
@@ -281,7 +414,7 @@ function buildScavioToolkit(options = {}) {
281
414
  tool(
282
415
  "TIKTOK_USER_FOLLOWERS",
283
416
  "Scavio TikTok User Followers",
284
- "List a TikTok user's followers by secUid.",
417
+ "List a TikTok user's followers by secUid. Costs 1 credit.",
285
418
  z.object({
286
419
  sec_user_id: str("TikTok secUid of the user."),
287
420
  count: onum("Number of followers to return."),
@@ -293,7 +426,7 @@ function buildScavioToolkit(options = {}) {
293
426
  tool(
294
427
  "TIKTOK_USER_FOLLOWINGS",
295
428
  "Scavio TikTok User Followings",
296
- "List the accounts a TikTok user follows, by secUid.",
429
+ "List the accounts a TikTok user follows, by secUid. Costs 1 credit.",
297
430
  z.object({
298
431
  sec_user_id: str("TikTok secUid of the user."),
299
432
  count: onum("Number of followings to return."),
@@ -309,7 +442,7 @@ function buildScavioToolkit(options = {}) {
309
442
  tool(
310
443
  "INSTAGRAM_PROFILE",
311
444
  "Scavio Instagram Profile",
312
- "Fetch an Instagram profile by username or user id.",
445
+ "Fetch an Instagram profile by username or user id. Costs 10 credits.",
313
446
  z.object({
314
447
  username: ostr("Instagram username. Provide this or user_id."),
315
448
  user_id: ostr("Instagram user id. Provide this or username.")
@@ -319,7 +452,7 @@ function buildScavioToolkit(options = {}) {
319
452
  tool(
320
453
  "INSTAGRAM_USER_POSTS",
321
454
  "Scavio Instagram User Posts",
322
- "List an Instagram user's posts.",
455
+ "List an Instagram user's posts. Costs 2 credits, the cheapest Instagram endpoint.",
323
456
  z.object({
324
457
  username: ostr("Instagram username. Provide this or user_id."),
325
458
  user_id: ostr("Instagram user id. Provide this or username."),
@@ -331,7 +464,7 @@ function buildScavioToolkit(options = {}) {
331
464
  tool(
332
465
  "INSTAGRAM_USER_REELS",
333
466
  "Scavio Instagram User Reels",
334
- "List an Instagram user's reels.",
467
+ "List an Instagram user's reels. Costs 10 credits.",
335
468
  z.object({
336
469
  username: ostr("Instagram username. Provide this or user_id."),
337
470
  user_id: ostr("Instagram user id. Provide this or username."),
@@ -343,7 +476,7 @@ function buildScavioToolkit(options = {}) {
343
476
  tool(
344
477
  "INSTAGRAM_USER_TAGGED",
345
478
  "Scavio Instagram User Tagged",
346
- "List posts an Instagram user is tagged in.",
479
+ "List posts an Instagram user is tagged in. Costs 10 credits.",
347
480
  z.object({
348
481
  username: ostr("Instagram username. Provide this or user_id."),
349
482
  user_id: ostr("Instagram user id. Provide this or username."),
@@ -355,7 +488,7 @@ function buildScavioToolkit(options = {}) {
355
488
  tool(
356
489
  "INSTAGRAM_USER_STORIES",
357
490
  "Scavio Instagram User Stories",
358
- "Fetch an Instagram user's current stories.",
491
+ "Fetch an Instagram user's current stories. Costs 10 credits.",
359
492
  z.object({
360
493
  username: ostr("Instagram username. Provide this or user_id."),
361
494
  user_id: ostr("Instagram user id. Provide this or username.")
@@ -365,7 +498,7 @@ function buildScavioToolkit(options = {}) {
365
498
  tool(
366
499
  "INSTAGRAM_POST",
367
500
  "Scavio Instagram Post",
368
- "Fetch an Instagram post by URL, media id, or shortcode.",
501
+ "Fetch an Instagram post by URL, media id, or shortcode. Costs 8 credits.",
369
502
  z.object({
370
503
  url: ostr("Post URL. Provide one of url, media_id, or shortcode."),
371
504
  media_id: ostr("Post media id. Provide one of url, media_id, or shortcode."),
@@ -376,7 +509,7 @@ function buildScavioToolkit(options = {}) {
376
509
  tool(
377
510
  "INSTAGRAM_POST_COMMENTS",
378
511
  "Scavio Instagram Post Comments",
379
- "List comments on an Instagram post by shortcode or URL.",
512
+ "List comments on an Instagram post by shortcode or URL. Costs 10 credits.",
380
513
  z.object({
381
514
  shortcode: ostr("Post shortcode. Provide this or url."),
382
515
  url: ostr("Post URL. Provide this or shortcode."),
@@ -388,7 +521,7 @@ function buildScavioToolkit(options = {}) {
388
521
  tool(
389
522
  "INSTAGRAM_COMMENT_REPLIES",
390
523
  "Scavio Instagram Comment Replies",
391
- "List replies to an Instagram post comment.",
524
+ "List replies to an Instagram post comment. Costs 8 credits.",
392
525
  z.object({
393
526
  media_id: str("Post media id."),
394
527
  comment_id: str("Parent comment id."),
@@ -399,7 +532,7 @@ function buildScavioToolkit(options = {}) {
399
532
  tool(
400
533
  "INSTAGRAM_SEARCH_USERS",
401
534
  "Scavio Instagram Search Users",
402
- "Search Instagram users by keyword.",
535
+ "Search Instagram users by keyword. Costs 10 credits.",
403
536
  z.object({
404
537
  keyword: str("Search keyword."),
405
538
  cursor: ostr("Pagination cursor.")
@@ -409,7 +542,7 @@ function buildScavioToolkit(options = {}) {
409
542
  tool(
410
543
  "INSTAGRAM_SEARCH_HASHTAGS",
411
544
  "Scavio Instagram Search Hashtags",
412
- "Search Instagram hashtags by keyword.",
545
+ "Search Instagram hashtags by keyword. Costs 10 credits.",
413
546
  z.object({
414
547
  keyword: str("Search keyword."),
415
548
  cursor: ostr("Pagination cursor.")
@@ -419,7 +552,7 @@ function buildScavioToolkit(options = {}) {
419
552
  tool(
420
553
  "INSTAGRAM_USER_FOLLOWERS",
421
554
  "Scavio Instagram User Followers",
422
- "List an Instagram user's followers.",
555
+ "List an Instagram user's followers. Costs 10 credits.",
423
556
  z.object({
424
557
  username: ostr("Instagram username. Provide this or user_id."),
425
558
  user_id: ostr("Instagram user id. Provide this or username."),
@@ -431,7 +564,7 @@ function buildScavioToolkit(options = {}) {
431
564
  tool(
432
565
  "INSTAGRAM_USER_FOLLOWINGS",
433
566
  "Scavio Instagram User Followings",
434
- "List the accounts an Instagram user follows.",
567
+ "List the accounts an Instagram user follows. Costs 10 credits.",
435
568
  z.object({
436
569
  username: ostr("Instagram username. Provide this or user_id."),
437
570
  user_id: ostr("Instagram user id. Provide this or username."),
@@ -444,7 +577,7 @@ function buildScavioToolkit(options = {}) {
444
577
  }
445
578
  return experimental_createToolkit("SCAVIO", {
446
579
  name: "Scavio",
447
- description: "Real-time structured search over Google, YouTube, Amazon, Walmart, Reddit, TikTok, and Instagram.",
580
+ description: "Real-time structured search over Google, YouTube, Amazon, Walmart, Reddit, TikTok, and Instagram (part of the Scavio API, which also covers TikTok Shop, X and LinkedIn).",
448
581
  tools
449
582
  });
450
583
  }