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/README.md +19 -5
- package/dist/index.cjs +199 -66
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +199 -66
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -2,7 +2,21 @@
|
|
|
2
2
|
|
|
3
3
|
[Scavio](https://scavio.dev) real-time search tools for [Composio](https://composio.dev) (TypeScript).
|
|
4
4
|
|
|
5
|
-
Scavio is a single Search API over Google, YouTube, Amazon, Walmart, Reddit, TikTok, and
|
|
5
|
+
Scavio is a single Search API over Google, YouTube, Amazon, Walmart, Reddit, TikTok, TikTok Shop, Instagram, X and LinkedIn. This package exposes the Google, YouTube, Amazon, Walmart, Reddit, TikTok and Instagram endpoints as a Composio custom toolkit so your agents can pull structured, up-to-date results across any Composio-supported framework.
|
|
6
|
+
|
|
7
|
+
> **Amazon changed (breaking).** The upstream provider moved in 2026-07:
|
|
8
|
+
> `domain` is replaced by `country`, a two-letter marketplace code (`us`, `gb`
|
|
9
|
+
> -- the UK is `gb`, not `uk` -- `de`, `jp`, ...), and `sort_by`, `pages`,
|
|
10
|
+
> `category_id`, `merchant_id`, `language`, `currency`, `device`, `zip_code`
|
|
11
|
+
> and `autoselect_variant` are gone. The marketplace ignores all of them
|
|
12
|
+
> (`sort_by` returns the identical unordered set for every value), so they are
|
|
13
|
+
> removed rather than kept as silent no-ops. Rank and filter results yourself.
|
|
14
|
+
|
|
15
|
+
> **Reddit search has no filters.** `/reddit/search` accepts only `query` and
|
|
16
|
+
> `cursor`; the API strips anything else, so the old `type` and `sort` args
|
|
17
|
+
> narrowed nothing and are removed. It returns `data.results` with `next_cursor`
|
|
18
|
+
> and `has_more`. `REDDIT_POST` returns the post itself only -- comments are not
|
|
19
|
+
> included.
|
|
6
20
|
|
|
7
21
|
## Install
|
|
8
22
|
|
|
@@ -10,7 +24,7 @@ Scavio is a single Search API over Google, YouTube, Amazon, Walmart, Reddit, Tik
|
|
|
10
24
|
npm install composio-scavio
|
|
11
25
|
```
|
|
12
26
|
|
|
13
|
-
`@composio/core` and `zod` are dependencies. Get a Scavio API key from the [Scavio Dashboard](https://dashboard.scavio.dev) (50
|
|
27
|
+
`@composio/core` and `zod` are dependencies. Get a Scavio API key from the [Scavio Dashboard](https://dashboard.scavio.dev) (50 one-time signup credits, no credit card; the free plan does not refill monthly).
|
|
14
28
|
|
|
15
29
|
## Usage
|
|
16
30
|
|
|
@@ -36,7 +50,7 @@ const session = await composio.create("user_1", {
|
|
|
36
50
|
const tools = await session.tools();
|
|
37
51
|
const out = await session.execute("LOCAL_SCAVIO_GOOGLE_SEARCH", {
|
|
38
52
|
query: "best search API for AI agents",
|
|
39
|
-
|
|
53
|
+
countryCode: "us",
|
|
40
54
|
});
|
|
41
55
|
console.log(out);
|
|
42
56
|
```
|
|
@@ -45,11 +59,11 @@ Pass `all: true` to register every tool regardless of the individual flags.
|
|
|
45
59
|
|
|
46
60
|
## Tools
|
|
47
61
|
|
|
48
|
-
All tools are grouped under the `SCAVIO` custom toolkit; agent-facing slugs are prefixed `LOCAL_SCAVIO_` (Composio convention for custom tools). Providers: Google, Amazon (search, product), Walmart (search, product), YouTube (search, metadata), Reddit (search, post), TikTok (11 tools), Instagram (12 tools).
|
|
62
|
+
All tools are grouped under the `SCAVIO` custom toolkit; agent-facing slugs are prefixed `LOCAL_SCAVIO_` (Composio convention for custom tools). Providers: Google, Amazon (search, product, offers), Walmart (search, product), YouTube (16 tools: search, shorts, suggestions, video, metadata, comments, comment replies, transcript, related, channel search, channel, channel videos, channel shorts, channel community, channel resolve, streams), Reddit (search, post), TikTok (11 tools), Instagram (12 tools). 47 tools total.
|
|
49
63
|
|
|
50
64
|
## Credits
|
|
51
65
|
|
|
52
|
-
Most endpoints cost 1 credit
|
|
66
|
+
Most endpoints cost 1 credit, including Google (`/api/v2/google`), Reddit, TikTok, Amazon and Walmart. Instagram costs 10 credits per call, except post and comment replies (8) and user posts (2). YouTube search and shorts cost 2, YouTube streams 3, and YouTube transcript 8. See [scavio.dev/docs](https://scavio.dev/docs).
|
|
53
67
|
|
|
54
68
|
## Links
|
|
55
69
|
|
package/dist/index.cjs
CHANGED
|
@@ -31,6 +31,15 @@ var str = (d) => import_zod.z.string().describe(d);
|
|
|
31
31
|
var ostr = (d) => import_zod.z.string().optional().describe(d);
|
|
32
32
|
var onum = (d) => import_zod.z.number().optional().describe(d);
|
|
33
33
|
var obool = (d) => import_zod.z.boolean().optional().describe(d);
|
|
34
|
+
function googleSearchParams(i) {
|
|
35
|
+
const params = { query: i.query };
|
|
36
|
+
if (i.countryCode != null) params.gl = i.countryCode;
|
|
37
|
+
if (i.language != null) params.hl = i.language;
|
|
38
|
+
if (i.page != null && i.page > 1) params.start = (i.page - 1) * 10;
|
|
39
|
+
if (i.device != null) params.device = i.device;
|
|
40
|
+
if (i.nfpr != null) params.nfpr = i.nfpr;
|
|
41
|
+
return params;
|
|
42
|
+
}
|
|
34
43
|
function buildScavioToolkit(options = {}) {
|
|
35
44
|
const {
|
|
36
45
|
apiKey,
|
|
@@ -58,18 +67,16 @@ function buildScavioToolkit(options = {}) {
|
|
|
58
67
|
tool(
|
|
59
68
|
"GOOGLE_SEARCH",
|
|
60
69
|
"Scavio Google Search",
|
|
61
|
-
"Search Google for real-time web results (
|
|
70
|
+
"Search Google for real-time web results (organic_results, ads, and the AI Overview when present). Costs 1 credit.",
|
|
62
71
|
import_zod.z.object({
|
|
63
72
|
query: str("The search query."),
|
|
64
|
-
|
|
73
|
+
countryCode: ostr("Two-letter country code, e.g. 'us'."),
|
|
65
74
|
language: ostr("Two-letter language code, e.g. 'en'."),
|
|
66
75
|
page: onum("Result page number (1-based)."),
|
|
67
|
-
search_type: ostr("Search vertical, e.g. 'search', 'news', 'images'."),
|
|
68
76
|
device: ostr("Device profile: 'desktop' or 'mobile'."),
|
|
69
|
-
nfpr: obool("Disable auto-correction of the query when true.")
|
|
70
|
-
light_request: obool("Cheaper, lighter response (1 credit instead of 2) when true.")
|
|
77
|
+
nfpr: obool("Disable auto-correction of the query when true.")
|
|
71
78
|
}),
|
|
72
|
-
(i) => client.google.search(i)
|
|
79
|
+
(i) => client.google.search(googleSearchParams(i))
|
|
73
80
|
)
|
|
74
81
|
);
|
|
75
82
|
}
|
|
@@ -78,39 +85,33 @@ function buildScavioToolkit(options = {}) {
|
|
|
78
85
|
tool(
|
|
79
86
|
"AMAZON_SEARCH",
|
|
80
87
|
"Scavio Amazon Search",
|
|
81
|
-
"Search Amazon for products matching a query.",
|
|
88
|
+
"Search Amazon for products matching a query. Results are unsorted and cannot be filtered by category, merchant or price. Costs 1 credit.",
|
|
82
89
|
import_zod.z.object({
|
|
83
90
|
query: str("The product search query."),
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
language: ostr("Two-letter language code."),
|
|
87
|
-
currency: ostr("Currency code, e.g. 'USD'."),
|
|
88
|
-
device: ostr("Device profile: 'desktop' or 'mobile'."),
|
|
89
|
-
sort_by: ostr("Sort order for results."),
|
|
90
|
-
start_page: onum("First page to return."),
|
|
91
|
-
pages: onum("Number of pages to return."),
|
|
92
|
-
category_id: ostr("Restrict to an Amazon category id."),
|
|
93
|
-
merchant_id: ostr("Restrict to a merchant id."),
|
|
94
|
-
zip_code: ostr("Delivery ZIP/postal code."),
|
|
95
|
-
autoselect_variant: obool("Auto-select the best product variant when true.")
|
|
91
|
+
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."),
|
|
92
|
+
page: onum("Result page, 1-based. One page per call, 1 credit each.")
|
|
96
93
|
}),
|
|
97
94
|
(i) => client.amazon.search(i)
|
|
98
95
|
),
|
|
99
96
|
tool(
|
|
100
97
|
"AMAZON_PRODUCT",
|
|
101
98
|
"Scavio Amazon Product",
|
|
102
|
-
"Fetch full Amazon product details by ASIN.",
|
|
99
|
+
"Fetch full Amazon product details by ASIN. price is the buy-box price only. Costs 1 credit.",
|
|
103
100
|
import_zod.z.object({
|
|
104
101
|
asin: str("Amazon Standard Identification Number (ASIN) of the product."),
|
|
105
|
-
|
|
106
|
-
country: ostr("Two-letter country code."),
|
|
107
|
-
language: ostr("Two-letter language code."),
|
|
108
|
-
currency: ostr("Currency code, e.g. 'USD'."),
|
|
109
|
-
device: ostr("Device profile: 'desktop' or 'mobile'."),
|
|
110
|
-
zip_code: ostr("Delivery ZIP/postal code."),
|
|
111
|
-
autoselect_variant: obool("Auto-select the best product variant when true.")
|
|
102
|
+
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.")
|
|
112
103
|
}),
|
|
113
104
|
(i) => client.amazon.product(i)
|
|
105
|
+
),
|
|
106
|
+
tool(
|
|
107
|
+
"AMAZON_OFFERS",
|
|
108
|
+
"Scavio Amazon Offers",
|
|
109
|
+
"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.",
|
|
110
|
+
import_zod.z.object({
|
|
111
|
+
asin: str("Amazon Standard Identification Number (ASIN) of the product."),
|
|
112
|
+
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.")
|
|
113
|
+
}),
|
|
114
|
+
(i) => client.amazon.offers(i)
|
|
114
115
|
)
|
|
115
116
|
);
|
|
116
117
|
}
|
|
@@ -119,7 +120,7 @@ function buildScavioToolkit(options = {}) {
|
|
|
119
120
|
tool(
|
|
120
121
|
"WALMART_SEARCH",
|
|
121
122
|
"Scavio Walmart Search",
|
|
122
|
-
"Search Walmart for products matching a query.",
|
|
123
|
+
"Search Walmart for products matching a query. Costs 1 credit.",
|
|
123
124
|
import_zod.z.object({
|
|
124
125
|
query: str("The product search query."),
|
|
125
126
|
domain: ostr("Walmart domain."),
|
|
@@ -138,7 +139,7 @@ function buildScavioToolkit(options = {}) {
|
|
|
138
139
|
tool(
|
|
139
140
|
"WALMART_PRODUCT",
|
|
140
141
|
"Scavio Walmart Product",
|
|
141
|
-
"Fetch full Walmart product details by product id.",
|
|
142
|
+
"Fetch full Walmart product details by product id. Costs 1 credit.",
|
|
142
143
|
import_zod.z.object({
|
|
143
144
|
product_id: str("Walmart product id."),
|
|
144
145
|
domain: ostr("Walmart domain."),
|
|
@@ -155,13 +156,15 @@ function buildScavioToolkit(options = {}) {
|
|
|
155
156
|
tool(
|
|
156
157
|
"YOUTUBE_SEARCH",
|
|
157
158
|
"Scavio YouTube Search",
|
|
158
|
-
"Search YouTube for videos, channels, or playlists.",
|
|
159
|
+
"Search YouTube for videos, channels, or playlists. Costs 2 credits.",
|
|
159
160
|
import_zod.z.object({
|
|
160
161
|
query: str("The video search query."),
|
|
161
|
-
upload_date: ostr("Upload date filter,
|
|
162
|
-
type: ostr("Result type
|
|
163
|
-
duration: ostr("Duration filter
|
|
164
|
-
sort_by: ostr("Sort order
|
|
162
|
+
upload_date: ostr("Upload date filter: 'last_hour', 'today', 'this_week', 'this_month', 'this_year'."),
|
|
163
|
+
type: ostr("Result type: 'video', 'channel', 'playlist', or 'movie'."),
|
|
164
|
+
duration: ostr("Duration filter: 'short', 'medium', or 'long'."),
|
|
165
|
+
sort_by: ostr("Sort order: 'relevance', 'date', 'view_count', or 'rating'."),
|
|
166
|
+
features: import_zod.z.array(import_zod.z.string()).optional().describe("Feature filters, e.g. ['hd', '4k', 'subtitles', 'creative_commons', 'live', '360', '3d', 'hdr', 'vr180']."),
|
|
167
|
+
cursor: ostr("Pagination cursor from a prior response."),
|
|
165
168
|
hd: obool("Restrict to HD videos when true."),
|
|
166
169
|
subtitles: obool("Restrict to videos with subtitles when true."),
|
|
167
170
|
creative_commons: obool("Restrict to Creative Commons videos when true."),
|
|
@@ -169,12 +172,144 @@ function buildScavioToolkit(options = {}) {
|
|
|
169
172
|
}),
|
|
170
173
|
(i) => client.youtube.search(i)
|
|
171
174
|
),
|
|
175
|
+
tool(
|
|
176
|
+
"YOUTUBE_SHORTS",
|
|
177
|
+
"Scavio YouTube Shorts",
|
|
178
|
+
"Search YouTube Shorts. Costs 2 credits.",
|
|
179
|
+
import_zod.z.object({
|
|
180
|
+
query: str("The Shorts search query."),
|
|
181
|
+
sort_by: ostr("Sort order: 'relevance', 'date', 'view_count', or 'rating'."),
|
|
182
|
+
cursor: ostr("Pagination cursor from a prior response.")
|
|
183
|
+
}),
|
|
184
|
+
(i) => client.youtube.shorts(i)
|
|
185
|
+
),
|
|
186
|
+
tool(
|
|
187
|
+
"YOUTUBE_SUGGESTIONS",
|
|
188
|
+
"Scavio YouTube Suggestions",
|
|
189
|
+
"Get YouTube search autocomplete suggestions for a partial query. Costs 1 credit.",
|
|
190
|
+
import_zod.z.object({
|
|
191
|
+
query: str("The partial query to autocomplete."),
|
|
192
|
+
language: ostr("Suggestion language (ISO 639-1, default 'en')."),
|
|
193
|
+
region: ostr("Region code (ISO 3166-1 alpha-2, default 'US').")
|
|
194
|
+
}),
|
|
195
|
+
(i) => client.youtube.suggestions(i)
|
|
196
|
+
),
|
|
197
|
+
tool(
|
|
198
|
+
"YOUTUBE_VIDEO",
|
|
199
|
+
"Scavio YouTube Video",
|
|
200
|
+
"Fetch full metadata for a YouTube video by id or watch URL. Costs 1 credit.",
|
|
201
|
+
import_zod.z.object({ video_id: str("YouTube video id or a full watch URL.") }),
|
|
202
|
+
(i) => client.youtube.video(i)
|
|
203
|
+
),
|
|
172
204
|
tool(
|
|
173
205
|
"YOUTUBE_METADATA",
|
|
174
206
|
"Scavio YouTube Metadata",
|
|
175
|
-
"Fetch metadata for a YouTube video by id.",
|
|
176
|
-
import_zod.z.object({ video_id: str("YouTube video id.") }),
|
|
207
|
+
"Fetch metadata for a YouTube video by id. Deprecated alias of YOUTUBE_VIDEO.",
|
|
208
|
+
import_zod.z.object({ video_id: str("YouTube video id or a full watch URL.") }),
|
|
177
209
|
(i) => client.youtube.metadata(i)
|
|
210
|
+
),
|
|
211
|
+
tool(
|
|
212
|
+
"YOUTUBE_COMMENTS",
|
|
213
|
+
"Scavio YouTube Comments",
|
|
214
|
+
"List top-level comments on a YouTube video. Costs 1 credit.",
|
|
215
|
+
import_zod.z.object({
|
|
216
|
+
video_id: str("YouTube video id or a full watch URL."),
|
|
217
|
+
cursor: ostr("Pagination cursor from a prior response.")
|
|
218
|
+
}),
|
|
219
|
+
(i) => client.youtube.comments(i)
|
|
220
|
+
),
|
|
221
|
+
tool(
|
|
222
|
+
"YOUTUBE_COMMENT_REPLIES",
|
|
223
|
+
"Scavio YouTube Comment Replies",
|
|
224
|
+
"List replies to a YouTube comment using its reply cursor. Costs 1 credit.",
|
|
225
|
+
import_zod.z.object({
|
|
226
|
+
video_id: str("YouTube video id or a full watch URL."),
|
|
227
|
+
reply_cursor: str("Reply cursor from a parent comment's 'reply_cursor' field."),
|
|
228
|
+
cursor: ostr("Pagination cursor from a prior response.")
|
|
229
|
+
}),
|
|
230
|
+
(i) => client.youtube.commentReplies(i)
|
|
231
|
+
),
|
|
232
|
+
tool(
|
|
233
|
+
"YOUTUBE_TRANSCRIPT",
|
|
234
|
+
"Scavio YouTube Transcript",
|
|
235
|
+
"Fetch the transcript or timed captions for a YouTube video. Costs 8 credits.",
|
|
236
|
+
import_zod.z.object({
|
|
237
|
+
video_id: str("YouTube video id or a full watch URL."),
|
|
238
|
+
language: ostr("Caption language code (default 'en')."),
|
|
239
|
+
format: ostr("'text' for a plain transcript or 'srt' for timed subtitles (default 'text').")
|
|
240
|
+
}),
|
|
241
|
+
(i) => client.youtube.transcript(i)
|
|
242
|
+
),
|
|
243
|
+
tool(
|
|
244
|
+
"YOUTUBE_RELATED",
|
|
245
|
+
"Scavio YouTube Related",
|
|
246
|
+
"List videos related to a YouTube video. Costs 1 credit.",
|
|
247
|
+
import_zod.z.object({
|
|
248
|
+
video_id: str("YouTube video id or a full watch URL."),
|
|
249
|
+
cursor: ostr("Pagination cursor from a prior response.")
|
|
250
|
+
}),
|
|
251
|
+
(i) => client.youtube.related(i)
|
|
252
|
+
),
|
|
253
|
+
tool(
|
|
254
|
+
"YOUTUBE_CHANNEL_SEARCH",
|
|
255
|
+
"Scavio YouTube Channel Search",
|
|
256
|
+
"Search YouTube channels by keyword. Costs 1 credit.",
|
|
257
|
+
import_zod.z.object({
|
|
258
|
+
query: str("The channel search query."),
|
|
259
|
+
cursor: ostr("Pagination cursor from a prior response.")
|
|
260
|
+
}),
|
|
261
|
+
(i) => client.youtube.channelSearch(i)
|
|
262
|
+
),
|
|
263
|
+
tool(
|
|
264
|
+
"YOUTUBE_CHANNEL",
|
|
265
|
+
"Scavio YouTube Channel",
|
|
266
|
+
"Fetch YouTube channel details by id, @handle, or URL. Costs 1 credit.",
|
|
267
|
+
import_zod.z.object({ channel_id: str("YouTube channel id, @handle, or channel URL.") }),
|
|
268
|
+
(i) => client.youtube.channel(i)
|
|
269
|
+
),
|
|
270
|
+
tool(
|
|
271
|
+
"YOUTUBE_CHANNEL_VIDEOS",
|
|
272
|
+
"Scavio YouTube Channel Videos",
|
|
273
|
+
"List videos uploaded by a YouTube channel. Costs 1 credit.",
|
|
274
|
+
import_zod.z.object({
|
|
275
|
+
channel_id: str("YouTube channel id."),
|
|
276
|
+
cursor: ostr("Pagination cursor from a prior response.")
|
|
277
|
+
}),
|
|
278
|
+
(i) => client.youtube.channelVideos(i)
|
|
279
|
+
),
|
|
280
|
+
tool(
|
|
281
|
+
"YOUTUBE_CHANNEL_SHORTS",
|
|
282
|
+
"Scavio YouTube Channel Shorts",
|
|
283
|
+
"List Shorts posted by a YouTube channel. Costs 1 credit.",
|
|
284
|
+
import_zod.z.object({
|
|
285
|
+
channel_id: str("YouTube channel id."),
|
|
286
|
+
cursor: ostr("Pagination cursor from a prior response.")
|
|
287
|
+
}),
|
|
288
|
+
(i) => client.youtube.channelShorts(i)
|
|
289
|
+
),
|
|
290
|
+
tool(
|
|
291
|
+
"YOUTUBE_CHANNEL_COMMUNITY",
|
|
292
|
+
"Scavio YouTube Channel Community",
|
|
293
|
+
"List community posts from a YouTube channel. Costs 1 credit.",
|
|
294
|
+
import_zod.z.object({
|
|
295
|
+
channel_id: str("YouTube channel id."),
|
|
296
|
+
cursor: ostr("Pagination cursor from a prior response.")
|
|
297
|
+
}),
|
|
298
|
+
(i) => client.youtube.channelCommunity(i)
|
|
299
|
+
),
|
|
300
|
+
tool(
|
|
301
|
+
"YOUTUBE_CHANNEL_RESOLVE",
|
|
302
|
+
"Scavio YouTube Channel Resolve",
|
|
303
|
+
"Resolve a YouTube @handle or channel URL to a channel id. Costs 1 credit.",
|
|
304
|
+
import_zod.z.object({ channel: str("A channel @handle or channel URL to resolve to a channel id.") }),
|
|
305
|
+
(i) => client.youtube.channelResolve(i)
|
|
306
|
+
),
|
|
307
|
+
tool(
|
|
308
|
+
"YOUTUBE_STREAMS",
|
|
309
|
+
"Scavio YouTube Streams",
|
|
310
|
+
"Fetch playable or downloadable stream formats for a YouTube video. Costs 3 credits.",
|
|
311
|
+
import_zod.z.object({ video_id: str("YouTube video id or a full watch URL.") }),
|
|
312
|
+
(i) => client.youtube.streams(i)
|
|
178
313
|
)
|
|
179
314
|
);
|
|
180
315
|
}
|
|
@@ -183,20 +318,18 @@ function buildScavioToolkit(options = {}) {
|
|
|
183
318
|
tool(
|
|
184
319
|
"REDDIT_SEARCH",
|
|
185
320
|
"Scavio Reddit Search",
|
|
186
|
-
"Search Reddit posts
|
|
321
|
+
"Search Reddit posts. Returns data.results with next_cursor and has_more; page with cursor. Results cannot be filtered or sorted. Costs 1 credit.",
|
|
187
322
|
import_zod.z.object({
|
|
188
323
|
query: str("The Reddit search query."),
|
|
189
|
-
|
|
190
|
-
sort: ostr("Sort order, e.g. 'relevance', 'new', 'top'."),
|
|
191
|
-
cursor: ostr("Pagination cursor.")
|
|
324
|
+
cursor: ostr("Pagination cursor: pass 'next_cursor' from a prior response.")
|
|
192
325
|
}),
|
|
193
326
|
(i) => client.reddit.search(i)
|
|
194
327
|
),
|
|
195
328
|
tool(
|
|
196
329
|
"REDDIT_POST",
|
|
197
330
|
"Scavio Reddit Post",
|
|
198
|
-
"Fetch
|
|
199
|
-
import_zod.z.object({ url: str("Full URL of the Reddit post
|
|
331
|
+
"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.",
|
|
332
|
+
import_zod.z.object({ url: str("Full URL of the Reddit post.") }),
|
|
200
333
|
(i) => client.reddit.post(i)
|
|
201
334
|
)
|
|
202
335
|
);
|
|
@@ -206,7 +339,7 @@ function buildScavioToolkit(options = {}) {
|
|
|
206
339
|
tool(
|
|
207
340
|
"TIKTOK_PROFILE",
|
|
208
341
|
"Scavio TikTok Profile",
|
|
209
|
-
"Fetch a TikTok user profile by username or secUid.",
|
|
342
|
+
"Fetch a TikTok user profile by username or secUid. Costs 1 credit.",
|
|
210
343
|
import_zod.z.object({
|
|
211
344
|
username: ostr("TikTok username (without @). Provide this or sec_user_id."),
|
|
212
345
|
sec_user_id: ostr("TikTok secUid. Provide this or username.")
|
|
@@ -216,7 +349,7 @@ function buildScavioToolkit(options = {}) {
|
|
|
216
349
|
tool(
|
|
217
350
|
"TIKTOK_USER_POSTS",
|
|
218
351
|
"Scavio TikTok User Posts",
|
|
219
|
-
"List a TikTok user's posts by secUid.",
|
|
352
|
+
"List a TikTok user's posts by secUid. Costs 1 credit.",
|
|
220
353
|
import_zod.z.object({
|
|
221
354
|
sec_user_id: str("TikTok secUid of the user."),
|
|
222
355
|
cursor: ostr("Pagination cursor."),
|
|
@@ -228,14 +361,14 @@ function buildScavioToolkit(options = {}) {
|
|
|
228
361
|
tool(
|
|
229
362
|
"TIKTOK_VIDEO",
|
|
230
363
|
"Scavio TikTok Video",
|
|
231
|
-
"Fetch a TikTok video by id.",
|
|
364
|
+
"Fetch a TikTok video by id. Costs 1 credit.",
|
|
232
365
|
import_zod.z.object({ video_id: str("TikTok video id.") }),
|
|
233
366
|
(i) => client.tiktok.video(i)
|
|
234
367
|
),
|
|
235
368
|
tool(
|
|
236
369
|
"TIKTOK_VIDEO_COMMENTS",
|
|
237
370
|
"Scavio TikTok Video Comments",
|
|
238
|
-
"List comments on a TikTok video.",
|
|
371
|
+
"List comments on a TikTok video. Costs 1 credit.",
|
|
239
372
|
import_zod.z.object({
|
|
240
373
|
video_id: str("TikTok video id."),
|
|
241
374
|
cursor: ostr("Pagination cursor."),
|
|
@@ -246,7 +379,7 @@ function buildScavioToolkit(options = {}) {
|
|
|
246
379
|
tool(
|
|
247
380
|
"TIKTOK_COMMENT_REPLIES",
|
|
248
381
|
"Scavio TikTok Comment Replies",
|
|
249
|
-
"List replies to a TikTok video comment.",
|
|
382
|
+
"List replies to a TikTok video comment. Costs 1 credit.",
|
|
250
383
|
import_zod.z.object({
|
|
251
384
|
video_id: str("TikTok video id."),
|
|
252
385
|
comment_id: str("Parent comment id."),
|
|
@@ -258,7 +391,7 @@ function buildScavioToolkit(options = {}) {
|
|
|
258
391
|
tool(
|
|
259
392
|
"TIKTOK_SEARCH_VIDEOS",
|
|
260
393
|
"Scavio TikTok Search Videos",
|
|
261
|
-
"Search TikTok videos by keyword.",
|
|
394
|
+
"Search TikTok videos by keyword. Costs 1 credit.",
|
|
262
395
|
import_zod.z.object({
|
|
263
396
|
keyword: str("Search keyword."),
|
|
264
397
|
cursor: ostr("Pagination cursor."),
|
|
@@ -271,7 +404,7 @@ function buildScavioToolkit(options = {}) {
|
|
|
271
404
|
tool(
|
|
272
405
|
"TIKTOK_SEARCH_USERS",
|
|
273
406
|
"Scavio TikTok Search Users",
|
|
274
|
-
"Search TikTok users by keyword.",
|
|
407
|
+
"Search TikTok users by keyword. Costs 1 credit.",
|
|
275
408
|
import_zod.z.object({
|
|
276
409
|
keyword: str("Search keyword."),
|
|
277
410
|
cursor: ostr("Pagination cursor."),
|
|
@@ -282,7 +415,7 @@ function buildScavioToolkit(options = {}) {
|
|
|
282
415
|
tool(
|
|
283
416
|
"TIKTOK_HASHTAG",
|
|
284
417
|
"Scavio TikTok Hashtag",
|
|
285
|
-
"Fetch a TikTok hashtag by name or id.",
|
|
418
|
+
"Fetch a TikTok hashtag by name or id. Costs 1 credit.",
|
|
286
419
|
import_zod.z.object({
|
|
287
420
|
hashtag_name: ostr("Hashtag name (without #). Provide this or hashtag_id."),
|
|
288
421
|
hashtag_id: ostr("Hashtag id. Provide this or hashtag_name.")
|
|
@@ -292,7 +425,7 @@ function buildScavioToolkit(options = {}) {
|
|
|
292
425
|
tool(
|
|
293
426
|
"TIKTOK_HASHTAG_VIDEOS",
|
|
294
427
|
"Scavio TikTok Hashtag Videos",
|
|
295
|
-
"List videos for a TikTok hashtag by id.",
|
|
428
|
+
"List videos for a TikTok hashtag by id. Costs 1 credit.",
|
|
296
429
|
import_zod.z.object({
|
|
297
430
|
hashtag_id: str("Hashtag id."),
|
|
298
431
|
cursor: ostr("Pagination cursor."),
|
|
@@ -303,7 +436,7 @@ function buildScavioToolkit(options = {}) {
|
|
|
303
436
|
tool(
|
|
304
437
|
"TIKTOK_USER_FOLLOWERS",
|
|
305
438
|
"Scavio TikTok User Followers",
|
|
306
|
-
"List a TikTok user's followers by secUid.",
|
|
439
|
+
"List a TikTok user's followers by secUid. Costs 1 credit.",
|
|
307
440
|
import_zod.z.object({
|
|
308
441
|
sec_user_id: str("TikTok secUid of the user."),
|
|
309
442
|
count: onum("Number of followers to return."),
|
|
@@ -315,7 +448,7 @@ function buildScavioToolkit(options = {}) {
|
|
|
315
448
|
tool(
|
|
316
449
|
"TIKTOK_USER_FOLLOWINGS",
|
|
317
450
|
"Scavio TikTok User Followings",
|
|
318
|
-
"List the accounts a TikTok user follows, by secUid.",
|
|
451
|
+
"List the accounts a TikTok user follows, by secUid. Costs 1 credit.",
|
|
319
452
|
import_zod.z.object({
|
|
320
453
|
sec_user_id: str("TikTok secUid of the user."),
|
|
321
454
|
count: onum("Number of followings to return."),
|
|
@@ -331,7 +464,7 @@ function buildScavioToolkit(options = {}) {
|
|
|
331
464
|
tool(
|
|
332
465
|
"INSTAGRAM_PROFILE",
|
|
333
466
|
"Scavio Instagram Profile",
|
|
334
|
-
"Fetch an Instagram profile by username or user id.",
|
|
467
|
+
"Fetch an Instagram profile by username or user id. Costs 10 credits.",
|
|
335
468
|
import_zod.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.")
|
|
@@ -341,7 +474,7 @@ function buildScavioToolkit(options = {}) {
|
|
|
341
474
|
tool(
|
|
342
475
|
"INSTAGRAM_USER_POSTS",
|
|
343
476
|
"Scavio Instagram User Posts",
|
|
344
|
-
"List an Instagram user's posts.",
|
|
477
|
+
"List an Instagram user's posts. Costs 2 credits, the cheapest Instagram endpoint.",
|
|
345
478
|
import_zod.z.object({
|
|
346
479
|
username: ostr("Instagram username. Provide this or user_id."),
|
|
347
480
|
user_id: ostr("Instagram user id. Provide this or username."),
|
|
@@ -353,7 +486,7 @@ function buildScavioToolkit(options = {}) {
|
|
|
353
486
|
tool(
|
|
354
487
|
"INSTAGRAM_USER_REELS",
|
|
355
488
|
"Scavio Instagram User Reels",
|
|
356
|
-
"List an Instagram user's reels.",
|
|
489
|
+
"List an Instagram user's reels. Costs 10 credits.",
|
|
357
490
|
import_zod.z.object({
|
|
358
491
|
username: ostr("Instagram username. Provide this or user_id."),
|
|
359
492
|
user_id: ostr("Instagram user id. Provide this or username."),
|
|
@@ -365,7 +498,7 @@ function buildScavioToolkit(options = {}) {
|
|
|
365
498
|
tool(
|
|
366
499
|
"INSTAGRAM_USER_TAGGED",
|
|
367
500
|
"Scavio Instagram User Tagged",
|
|
368
|
-
"List posts an Instagram user is tagged in.",
|
|
501
|
+
"List posts an Instagram user is tagged in. Costs 10 credits.",
|
|
369
502
|
import_zod.z.object({
|
|
370
503
|
username: ostr("Instagram username. Provide this or user_id."),
|
|
371
504
|
user_id: ostr("Instagram user id. Provide this or username."),
|
|
@@ -377,7 +510,7 @@ function buildScavioToolkit(options = {}) {
|
|
|
377
510
|
tool(
|
|
378
511
|
"INSTAGRAM_USER_STORIES",
|
|
379
512
|
"Scavio Instagram User Stories",
|
|
380
|
-
"Fetch an Instagram user's current stories.",
|
|
513
|
+
"Fetch an Instagram user's current stories. Costs 10 credits.",
|
|
381
514
|
import_zod.z.object({
|
|
382
515
|
username: ostr("Instagram username. Provide this or user_id."),
|
|
383
516
|
user_id: ostr("Instagram user id. Provide this or username.")
|
|
@@ -387,7 +520,7 @@ function buildScavioToolkit(options = {}) {
|
|
|
387
520
|
tool(
|
|
388
521
|
"INSTAGRAM_POST",
|
|
389
522
|
"Scavio Instagram Post",
|
|
390
|
-
"Fetch an Instagram post by URL, media id, or shortcode.",
|
|
523
|
+
"Fetch an Instagram post by URL, media id, or shortcode. Costs 8 credits.",
|
|
391
524
|
import_zod.z.object({
|
|
392
525
|
url: ostr("Post URL. Provide one of url, media_id, or shortcode."),
|
|
393
526
|
media_id: ostr("Post media id. Provide one of url, media_id, or shortcode."),
|
|
@@ -398,7 +531,7 @@ function buildScavioToolkit(options = {}) {
|
|
|
398
531
|
tool(
|
|
399
532
|
"INSTAGRAM_POST_COMMENTS",
|
|
400
533
|
"Scavio Instagram Post Comments",
|
|
401
|
-
"List comments on an Instagram post by shortcode or URL.",
|
|
534
|
+
"List comments on an Instagram post by shortcode or URL. Costs 10 credits.",
|
|
402
535
|
import_zod.z.object({
|
|
403
536
|
shortcode: ostr("Post shortcode. Provide this or url."),
|
|
404
537
|
url: ostr("Post URL. Provide this or shortcode."),
|
|
@@ -410,7 +543,7 @@ function buildScavioToolkit(options = {}) {
|
|
|
410
543
|
tool(
|
|
411
544
|
"INSTAGRAM_COMMENT_REPLIES",
|
|
412
545
|
"Scavio Instagram Comment Replies",
|
|
413
|
-
"List replies to an Instagram post comment.",
|
|
546
|
+
"List replies to an Instagram post comment. Costs 8 credits.",
|
|
414
547
|
import_zod.z.object({
|
|
415
548
|
media_id: str("Post media id."),
|
|
416
549
|
comment_id: str("Parent comment id."),
|
|
@@ -421,7 +554,7 @@ function buildScavioToolkit(options = {}) {
|
|
|
421
554
|
tool(
|
|
422
555
|
"INSTAGRAM_SEARCH_USERS",
|
|
423
556
|
"Scavio Instagram Search Users",
|
|
424
|
-
"Search Instagram users by keyword.",
|
|
557
|
+
"Search Instagram users by keyword. Costs 10 credits.",
|
|
425
558
|
import_zod.z.object({
|
|
426
559
|
keyword: str("Search keyword."),
|
|
427
560
|
cursor: ostr("Pagination cursor.")
|
|
@@ -431,7 +564,7 @@ function buildScavioToolkit(options = {}) {
|
|
|
431
564
|
tool(
|
|
432
565
|
"INSTAGRAM_SEARCH_HASHTAGS",
|
|
433
566
|
"Scavio Instagram Search Hashtags",
|
|
434
|
-
"Search Instagram hashtags by keyword.",
|
|
567
|
+
"Search Instagram hashtags by keyword. Costs 10 credits.",
|
|
435
568
|
import_zod.z.object({
|
|
436
569
|
keyword: str("Search keyword."),
|
|
437
570
|
cursor: ostr("Pagination cursor.")
|
|
@@ -441,7 +574,7 @@ function buildScavioToolkit(options = {}) {
|
|
|
441
574
|
tool(
|
|
442
575
|
"INSTAGRAM_USER_FOLLOWERS",
|
|
443
576
|
"Scavio Instagram User Followers",
|
|
444
|
-
"List an Instagram user's followers.",
|
|
577
|
+
"List an Instagram user's followers. Costs 10 credits.",
|
|
445
578
|
import_zod.z.object({
|
|
446
579
|
username: ostr("Instagram username. Provide this or user_id."),
|
|
447
580
|
user_id: ostr("Instagram user id. Provide this or username."),
|
|
@@ -453,7 +586,7 @@ function buildScavioToolkit(options = {}) {
|
|
|
453
586
|
tool(
|
|
454
587
|
"INSTAGRAM_USER_FOLLOWINGS",
|
|
455
588
|
"Scavio Instagram User Followings",
|
|
456
|
-
"List the accounts an Instagram user follows.",
|
|
589
|
+
"List the accounts an Instagram user follows. Costs 10 credits.",
|
|
457
590
|
import_zod.z.object({
|
|
458
591
|
username: ostr("Instagram username. Provide this or user_id."),
|
|
459
592
|
user_id: ostr("Instagram user id. Provide this or username."),
|
|
@@ -466,7 +599,7 @@ function buildScavioToolkit(options = {}) {
|
|
|
466
599
|
}
|
|
467
600
|
return (0, import_core.experimental_createToolkit)("SCAVIO", {
|
|
468
601
|
name: "Scavio",
|
|
469
|
-
description: "Real-time structured search over Google, YouTube, Amazon, Walmart, Reddit, TikTok, and Instagram.",
|
|
602
|
+
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).",
|
|
470
603
|
tools
|
|
471
604
|
});
|
|
472
605
|
}
|