@scrapeatlas/cli 0.1.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/catalog.json ADDED
@@ -0,0 +1,4609 @@
1
+ [
2
+ {
3
+ "platform": "amazon",
4
+ "action": "shop",
5
+ "operation": "amazonShop",
6
+ "method": "GET",
7
+ "path": "/v1/amazon/shop",
8
+ "description": "Read a public amazon.com/shop/{handle} storefront: profile, idea lists and shoppable photos (lists), shoppable videos, trending picks, curations and the feed page token. Mirrors the ScrapeCreators /v1/amazon/shop contract. With pageToken the storefront getItems feed is read instead and only lists, videos, pageToken and hasMore are returned. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed on 2026-09-12 through the shared US residential proxy (image 2026-09-12-all-r7); Amazon answers the deployment host's own address with its bot-manager holding page",
9
+ "inputSchema": {
10
+ "type": "object",
11
+ "properties": {
12
+ "url": {
13
+ "type": "string",
14
+ "minLength": 1,
15
+ "maxLength": 2048,
16
+ "x-runtime-refinement": true,
17
+ "description": "Public storefront URL (amazon.com/shop/{handle}, extra path segments are ignored)."
18
+ },
19
+ "pageToken": {
20
+ "type": "string",
21
+ "pattern": "^[A-Za-z0-9._:-]{1,512}$",
22
+ "description": "Token for the next feed page; pass back as pageToken."
23
+ }
24
+ },
25
+ "required": ["url"],
26
+ "additionalProperties": false
27
+ }
28
+ },
29
+ {
30
+ "platform": "amazon",
31
+ "action": "product",
32
+ "operation": "amazonProduct",
33
+ "method": "GET",
34
+ "path": "/v1/amazon/product",
35
+ "description": "Read a public product page by ASIN: title, brand, feature bullets, buy-box merchant, price, rating, image gallery and availability, in SocialCrawl's canonical product shape. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed on 2026-09-12 through the shared US residential proxy (image 2026-09-12-all-r7); Amazon answers the deployment host's own address with its bot-manager holding page",
36
+ "inputSchema": {
37
+ "type": "object",
38
+ "properties": {
39
+ "asin": {
40
+ "type": "string",
41
+ "pattern": "^[A-Z0-9]{10}$",
42
+ "description": "10-character ASIN."
43
+ },
44
+ "country": {
45
+ "type": "string",
46
+ "enum": ["US", "GB", "CA", "DE", "FR", "IT", "ES", "JP", "IN", "MX", "BR", "AU", "NL"],
47
+ "default": "US",
48
+ "description": "Marketplace as ISO 3166-1 alpha-2: US (default), GB, CA, DE, FR, IT, ES, JP, IN, MX, BR, AU or NL. Prices come in that marketplace's currency and numbers are parsed with its locale."
49
+ }
50
+ },
51
+ "required": ["asin"],
52
+ "additionalProperties": false
53
+ }
54
+ },
55
+ {
56
+ "platform": "amazon",
57
+ "action": "reviews",
58
+ "operation": "amazonReviews",
59
+ "method": "GET",
60
+ "path": "/v1/amazon/reviews",
61
+ "description": "Read the customer reviews embedded in the public product page (typically the top reviews, about eight). Each row carries id, title, text, stars, author, verified flag, helpful votes, images and the review date. Sibling variants can contribute reviews; entity_id is always the requested ASIN. Amazon serves the page with or without the review list, so up to five equivalent mobile and desktop views are read; when none carries reviews the response is partial with reviews_not_embedded. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed on 2026-09-12 through the shared US residential proxy (image 2026-09-12-all-r7); Amazon answers the deployment host's own address with its bot-manager holding page",
62
+ "inputSchema": {
63
+ "type": "object",
64
+ "properties": {
65
+ "asin": {
66
+ "type": "string",
67
+ "pattern": "^[A-Z0-9]{10}$",
68
+ "description": "10-character ASIN."
69
+ },
70
+ "country": {
71
+ "type": "string",
72
+ "enum": ["US", "GB", "CA", "DE", "FR", "IT", "ES", "JP", "IN", "MX", "BR", "AU", "NL"],
73
+ "default": "US",
74
+ "description": "Marketplace as ISO 3166-1 alpha-2: US (default), GB, CA, DE, FR, IT, ES, JP, IN, MX, BR, AU or NL. Prices come in that marketplace's currency and numbers are parsed with its locale."
75
+ }
76
+ },
77
+ "required": ["asin"],
78
+ "additionalProperties": false
79
+ }
80
+ },
81
+ {
82
+ "platform": "amazon",
83
+ "action": "sellers",
84
+ "operation": "amazonSellers",
85
+ "method": "GET",
86
+ "path": "/v1/amazon/sellers",
87
+ "description": "Read the buy-box offer shown on the public product page: merchant id and name, price, the product rating and availability. Amazon loads the full all-offers panel through a session-bound client call that answers 404 to plain requests, so further offers are not read. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed on 2026-09-12 through the shared US residential proxy (image 2026-09-12-all-r7); Amazon answers the deployment host's own address with its bot-manager holding page",
88
+ "inputSchema": {
89
+ "type": "object",
90
+ "properties": {
91
+ "asin": {
92
+ "type": "string",
93
+ "pattern": "^[A-Z0-9]{10}$",
94
+ "description": "10-character ASIN."
95
+ },
96
+ "country": {
97
+ "type": "string",
98
+ "enum": ["US", "GB", "CA", "DE", "FR", "IT", "ES", "JP", "IN", "MX", "BR", "AU", "NL"],
99
+ "default": "US",
100
+ "description": "Marketplace as ISO 3166-1 alpha-2: US (default), GB, CA, DE, FR, IT, ES, JP, IN, MX, BR, AU or NL. Prices come in that marketplace's currency and numbers are parsed with its locale."
101
+ }
102
+ },
103
+ "required": ["asin"],
104
+ "additionalProperties": false
105
+ }
106
+ },
107
+ {
108
+ "platform": "amazon",
109
+ "action": "product-search",
110
+ "operation": "amazonProductSearch",
111
+ "method": "GET",
112
+ "path": "/v1/amazon/product-search",
113
+ "description": "Read organic keyword search results (sponsored cards are skipped), 16-48 per page with page/cursor continuation, or up to 300 products in one call with depth. Result order and sponsored slots vary per request on Amazon itself. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed on 2026-09-12 through the shared US residential proxy (image 2026-09-12-all-r7); Amazon answers the deployment host's own address with its bot-manager holding page",
114
+ "inputSchema": {
115
+ "type": "object",
116
+ "properties": {
117
+ "query": {
118
+ "type": "string",
119
+ "minLength": 1,
120
+ "maxLength": 200,
121
+ "description": "Search keyword or phrase."
122
+ },
123
+ "country": {
124
+ "type": "string",
125
+ "enum": ["US", "GB", "CA", "DE", "FR", "IT", "ES", "JP", "IN", "MX", "BR", "AU", "NL"],
126
+ "default": "US",
127
+ "description": "Marketplace as ISO 3166-1 alpha-2: US (default), GB, CA, DE, FR, IT, ES, JP, IN, MX, BR, AU or NL. Prices come in that marketplace's currency and numbers are parsed with its locale."
128
+ },
129
+ "page": {
130
+ "type": "string",
131
+ "pattern": "^[1-9]\\d{0,2}$",
132
+ "default": "1",
133
+ "description": "1-based page number (default 1)."
134
+ },
135
+ "cursor": {
136
+ "type": "string",
137
+ "pattern": "^[1-9]\\d{0,2}$",
138
+ "description": "pagination.next_cursor from the previous response; overrides page."
139
+ },
140
+ "depth": {
141
+ "type": "string",
142
+ "pattern": "^(?:[1-9]\\d?|[12]\\d\\d|300)$",
143
+ "description": "Products to return in one call, 1-300, read from consecutive result pages (up to eight page reads within the deadline); omit it for a single page."
144
+ }
145
+ },
146
+ "required": ["query"],
147
+ "additionalProperties": false
148
+ }
149
+ },
150
+ {
151
+ "platform": "amazon",
152
+ "action": "best-sellers",
153
+ "operation": "amazonBestSellers",
154
+ "method": "GET",
155
+ "path": "/v1/amazon/best-sellers",
156
+ "description": "Read a zeitgeist list page: 50 ranks per page, two pages. The page renders 30 cards and defers the rest to a client call that the worker replays, so all 50 ranks are populated; when that call fails the remaining ranks carry id and url only and the response is partial. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed on 2026-09-12 through the shared US residential proxy (image 2026-09-12-all-r7); Amazon answers the deployment host's own address with its bot-manager holding page",
157
+ "inputSchema": {
158
+ "type": "object",
159
+ "properties": {
160
+ "category": {
161
+ "type": "string",
162
+ "pattern": "^[a-z0-9][a-z0-9-]{0,79}$",
163
+ "description": "Category slug from the Best Sellers URL, e.g. electronics or books."
164
+ },
165
+ "country": {
166
+ "type": "string",
167
+ "enum": ["US", "GB", "CA", "DE", "FR", "IT", "ES", "JP", "IN", "MX", "BR", "AU", "NL"],
168
+ "default": "US",
169
+ "description": "Marketplace as ISO 3166-1 alpha-2: US (default), GB, CA, DE, FR, IT, ES, JP, IN, MX, BR, AU or NL. Prices come in that marketplace's currency and numbers are parsed with its locale."
170
+ },
171
+ "type": {
172
+ "type": "string",
173
+ "enum": [
174
+ "BEST_SELLERS",
175
+ "NEW_RELEASES",
176
+ "MOVERS_AND_SHAKERS",
177
+ "MOST_WISHED_FOR",
178
+ "GIFT_IDEAS"
179
+ ],
180
+ "default": "BEST_SELLERS",
181
+ "description": "BEST_SELLERS (default), NEW_RELEASES, MOVERS_AND_SHAKERS, MOST_WISHED_FOR or GIFT_IDEAS."
182
+ },
183
+ "page": {
184
+ "type": "string",
185
+ "pattern": "^[1-9]\\d{0,2}$",
186
+ "default": "1",
187
+ "description": "1-based page number (default 1)."
188
+ },
189
+ "cursor": {
190
+ "type": "string",
191
+ "pattern": "^[1-9]\\d{0,2}$",
192
+ "description": "pagination.next_cursor from the previous response; overrides page."
193
+ }
194
+ },
195
+ "required": ["category"],
196
+ "additionalProperties": false
197
+ }
198
+ },
199
+ {
200
+ "platform": "amazon",
201
+ "action": "deals",
202
+ "operation": "amazonDeals",
203
+ "method": "GET",
204
+ "path": "/v1/amazon/deals",
205
+ "description": "Read the deal grid embedded in the public Today's Deals page: ASIN, title, deal price, list price and image for the first grid batch (30 or more). The set changes continuously on Amazon. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed on 2026-09-12 through the shared US residential proxy (image 2026-09-12-all-r7); Amazon answers the deployment host's own address with its bot-manager holding page",
206
+ "inputSchema": {
207
+ "type": "object",
208
+ "properties": {
209
+ "country": {
210
+ "type": "string",
211
+ "enum": ["US", "GB", "CA", "DE", "FR", "IT", "ES", "JP", "IN", "MX", "BR", "AU", "NL"],
212
+ "default": "US",
213
+ "description": "Marketplace as ISO 3166-1 alpha-2: US (default), GB, CA, DE, FR, IT, ES, JP, IN, MX, BR, AU or NL. Prices come in that marketplace's currency and numbers are parsed with its locale."
214
+ }
215
+ },
216
+ "required": [],
217
+ "additionalProperties": false
218
+ }
219
+ },
220
+ {
221
+ "platform": "amazon",
222
+ "action": "seller",
223
+ "operation": "amazonSeller",
224
+ "method": "GET",
225
+ "path": "/v1/amazon/seller",
226
+ "description": "Read a public seller profile page: name, profile URL and the lifetime feedback rating and count. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed on 2026-09-12 through the shared US residential proxy (image 2026-09-12-all-r7); Amazon answers the deployment host's own address with its bot-manager holding page",
227
+ "inputSchema": {
228
+ "type": "object",
229
+ "properties": {
230
+ "seller_id": {
231
+ "type": "string",
232
+ "pattern": "^[A-Z0-9]{10,16}$",
233
+ "description": "Seller id, the seller= value of a seller profile URL."
234
+ },
235
+ "country": {
236
+ "type": "string",
237
+ "enum": ["US", "GB", "CA", "DE", "FR", "IT", "ES", "JP", "IN", "MX", "BR", "AU", "NL"],
238
+ "default": "US",
239
+ "description": "Marketplace as ISO 3166-1 alpha-2: US (default), GB, CA, DE, FR, IT, ES, JP, IN, MX, BR, AU or NL. Prices come in that marketplace's currency and numbers are parsed with its locale."
240
+ }
241
+ },
242
+ "required": ["seller_id"],
243
+ "additionalProperties": false
244
+ }
245
+ },
246
+ {
247
+ "platform": "bluesky",
248
+ "action": "profile",
249
+ "operation": "blueskyProfile",
250
+ "method": "GET",
251
+ "path": "/v1/bluesky/profile",
252
+ "description": "Retrieve a public Bluesky profile by handle, including DID, display name, bio, avatar, banner, follower/following/post counts and available source extensions. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
253
+ "inputSchema": {
254
+ "type": "object",
255
+ "properties": {
256
+ "handle": {
257
+ "type": "string",
258
+ "minLength": 3,
259
+ "maxLength": 253,
260
+ "pattern": "^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z](?:[a-z0-9-]{0,61}[a-z0-9])?$",
261
+ "description": "Required domain-style Bluesky handle, without @ or a profile URL. Custom domain handles are supported."
262
+ }
263
+ },
264
+ "required": ["handle"],
265
+ "additionalProperties": false
266
+ }
267
+ },
268
+ {
269
+ "platform": "bluesky",
270
+ "action": "posts",
271
+ "operation": "blueskyPosts",
272
+ "method": "GET",
273
+ "path": "/v1/bluesky/user/posts",
274
+ "description": "Retrieve one author-feed page of up to 30 posts and reposts, including replies. Provide exactly one of handle or user_id. Pass the opaque response cursor unchanged to retrieve the next page. Each feed item is the complete source post view; feed wrappers such as repost reasons are not included. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
275
+ "inputSchema": {
276
+ "type": "object",
277
+ "properties": {
278
+ "handle": {
279
+ "type": "string",
280
+ "minLength": 3,
281
+ "maxLength": 253,
282
+ "pattern": "^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z](?:[a-z0-9-]{0,61}[a-z0-9])?$",
283
+ "description": "One Bluesky handle; mutually exclusive with user_id."
284
+ },
285
+ "user_id": {
286
+ "type": "string",
287
+ "maxLength": 2048,
288
+ "pattern": "^did:(?:plc:[a-z2-7]{24}|web:[a-zA-Z0-9._:%-]+(?::[a-zA-Z0-9._:%-]+)*)$",
289
+ "description": "One did:plc or did:web account identifier, mutually exclusive with handle."
290
+ },
291
+ "cursor": {
292
+ "type": "string",
293
+ "minLength": 1,
294
+ "maxLength": 2048,
295
+ "x-runtime-refinement": true,
296
+ "description": "Opaque next-page cursor. Absence means the source provided no continuation; do not invent a cursor."
297
+ }
298
+ },
299
+ "required": [],
300
+ "additionalProperties": false,
301
+ "x-runtime-refinement": true
302
+ }
303
+ },
304
+ {
305
+ "platform": "bluesky",
306
+ "action": "post",
307
+ "operation": "blueskyPost",
308
+ "method": "GET",
309
+ "path": "/v1/bluesky/post",
310
+ "description": "Retrieve a public post and a bounded nested reply tree by HTTPS bsky.app URL. The profile segment accepts a handle or DID. Handles are resolved through the public profile API. Up to six reply levels and 100 visited reply nodes are included; ancestors are not fetched. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
311
+ "inputSchema": {
312
+ "type": "object",
313
+ "properties": {
314
+ "url": {
315
+ "type": "string",
316
+ "maxLength": 4096,
317
+ "x-runtime-refinement": true,
318
+ "description": "Required HTTPS bsky.app/profile/<handle-or-did>/post/<record-key> URL. No credentials, ports or encoded path segments. Tracking query and fragment are discarded."
319
+ }
320
+ },
321
+ "required": ["url"],
322
+ "additionalProperties": false
323
+ }
324
+ },
325
+ {
326
+ "platform": "couchsurfing",
327
+ "action": "profile",
328
+ "operation": "couchsurfingProfile",
329
+ "method": "GET",
330
+ "path": "/v1/couchsurfing/profile",
331
+ "description": "Retrieve one public member profile by handle: identity, about text, home and travel locations, languages, interests, photos, legacy profile answers, friend count and published prompt answers. References, hosting availability and friend lists require login and are not returned. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
332
+ "inputSchema": {
333
+ "type": "object",
334
+ "properties": {
335
+ "handle": {
336
+ "type": "string",
337
+ "maxLength": 100,
338
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9_.-]{0,99}$",
339
+ "description": "Required member handle as it appears in couchsurfing.com/c/users/<handle>; letters, digits, dot, underscore and hyphen, matched case-insensitively."
340
+ }
341
+ },
342
+ "required": ["handle"],
343
+ "additionalProperties": false
344
+ }
345
+ },
346
+ {
347
+ "platform": "couchsurfing",
348
+ "action": "event",
349
+ "operation": "couchsurfingEvent",
350
+ "method": "GET",
351
+ "path": "/v1/couchsurfing/event",
352
+ "description": "Retrieve one public community event (hangout) by URL: title, description, schedule, activity, venue with coordinates and map link, cover image, recurrence, organizer summaries, participation counters and the public interested/attending previews. No joining, posting or discussion retrieval is performed. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
353
+ "inputSchema": {
354
+ "type": "object",
355
+ "properties": {
356
+ "url": {
357
+ "type": "string",
358
+ "maxLength": 500,
359
+ "pattern": "^https:\\/\\/(?:www\\.)?couchsurfing\\.com\\/c\\/events\\/(?:[A-Za-z0-9]+(?:-[A-Za-z0-9]+)*-)?[A-Za-z0-9]{16,64}_ho\\/?$",
360
+ "description": "Required HTTPS couchsurfing.com/c/events/<slug>-<id>_ho URL; the trailing _ho identifier alone is also accepted. No query, fragment or credentials."
361
+ }
362
+ },
363
+ "required": ["url"],
364
+ "additionalProperties": false
365
+ }
366
+ },
367
+ {
368
+ "platform": "couchsurfing",
369
+ "action": "events",
370
+ "operation": "couchsurfingEvents",
371
+ "method": "GET",
372
+ "path": "/v1/couchsurfing/events",
373
+ "description": "List the upcoming public events embedded in a Couchsurfing location page, together with the location's published summary, statistics and FAQ. Returns only the first source page of events with the source total. Cursor input is not supported. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
374
+ "inputSchema": {
375
+ "type": "object",
376
+ "properties": {
377
+ "location": {
378
+ "type": "string",
379
+ "maxLength": 160,
380
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
381
+ "description": "Required location slug as it appears in couchsurfing.com/c/locations/<slug>, for example berlin-state-of-berlin-germany or tokyo-japan; lowercase letters, digits and single hyphens."
382
+ }
383
+ },
384
+ "required": ["location"],
385
+ "additionalProperties": false
386
+ }
387
+ },
388
+ {
389
+ "platform": "depop",
390
+ "action": "shop",
391
+ "operation": "depopShop",
392
+ "method": "GET",
393
+ "path": "/v1/depop/shop",
394
+ "description": "Read a public seller profile from Depop's shop endpoint: identity, name, bio, verification, website, avatar sizes, follower and following counts, review rating and count, seller and buyer rating counts, last activity and items sold, plus the shop's inventory facet counts from the aggregates endpoint. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Implemented; local acceptance",
395
+ "inputSchema": {
396
+ "type": "object",
397
+ "properties": {
398
+ "handle": {
399
+ "type": "string",
400
+ "pattern": "^[A-Za-z0-9_.]{1,40}$",
401
+ "x-runtime-refinement": true,
402
+ "description": "Depop username as it appears in depop.com/{handle}/ (letters, digits, underscore, full stop; matched in lowercase); provide exactly one of handle, url or user_id."
403
+ },
404
+ "url": {
405
+ "type": "string",
406
+ "maxLength": 2048,
407
+ "x-runtime-refinement": true,
408
+ "description": "Full shop URL: https://www.depop.com/{handle}/."
409
+ }
410
+ },
411
+ "required": [],
412
+ "additionalProperties": false,
413
+ "x-runtime-refinement": true
414
+ }
415
+ },
416
+ {
417
+ "platform": "depop",
418
+ "action": "shop-products",
419
+ "operation": "depopShopProducts",
420
+ "method": "GET",
421
+ "path": "/v1/depop/shop/products",
422
+ "description": "Return one page of a seller's items currently for sale in Depop's own order (newest first), up to 100 product cards with cursor pagination. A handle or url costs one profile read to resolve the seller ID; user_id skips it. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Implemented; local acceptance",
423
+ "inputSchema": {
424
+ "type": "object",
425
+ "properties": {
426
+ "handle": {
427
+ "type": "string",
428
+ "pattern": "^[A-Za-z0-9_.]{1,40}$",
429
+ "x-runtime-refinement": true,
430
+ "description": "Depop username as it appears in depop.com/{handle}/ (letters, digits, underscore, full stop; matched in lowercase); provide exactly one of handle, url or user_id."
431
+ },
432
+ "url": {
433
+ "type": "string",
434
+ "maxLength": 2048,
435
+ "x-runtime-refinement": true,
436
+ "description": "Full shop URL: https://www.depop.com/{handle}/."
437
+ },
438
+ "user_id": {
439
+ "type": "string",
440
+ "pattern": "^[1-9][0-9]{0,15}$",
441
+ "description": "Numeric seller ID (skips the profile read; shop.username is then null)."
442
+ },
443
+ "limit": {
444
+ "type": "integer",
445
+ "minimum": 1,
446
+ "maximum": 100,
447
+ "default": 24,
448
+ "description": "Items per page, 1-100 (default 24)."
449
+ },
450
+ "cursor": {
451
+ "type": "string",
452
+ "pattern": "^[A-Za-z0-9_.=-]{1,200}$",
453
+ "description": "Opaque caller-carried cursor from a previous nextCursor."
454
+ }
455
+ },
456
+ "required": [],
457
+ "additionalProperties": false,
458
+ "x-runtime-refinement": true
459
+ }
460
+ },
461
+ {
462
+ "platform": "depop",
463
+ "action": "shop-sold",
464
+ "operation": "depopShopSold",
465
+ "method": "GET",
466
+ "path": "/v1/depop/shop/sold",
467
+ "description": "Return one page of a seller's sold items (most recent first) with cursor pagination; sold cards additionally carry the category path and sold-out size variants. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Implemented; local acceptance",
468
+ "inputSchema": {
469
+ "type": "object",
470
+ "properties": {
471
+ "handle": {
472
+ "type": "string",
473
+ "pattern": "^[A-Za-z0-9_.]{1,40}$",
474
+ "x-runtime-refinement": true,
475
+ "description": "Depop username as it appears in depop.com/{handle}/ (letters, digits, underscore, full stop; matched in lowercase); provide exactly one of handle, url or user_id."
476
+ },
477
+ "url": {
478
+ "type": "string",
479
+ "maxLength": 2048,
480
+ "x-runtime-refinement": true,
481
+ "description": "Full shop URL: https://www.depop.com/{handle}/."
482
+ },
483
+ "user_id": {
484
+ "type": "string",
485
+ "pattern": "^[1-9][0-9]{0,15}$",
486
+ "description": "Numeric seller ID (skips the profile read; shop.username is then null)."
487
+ },
488
+ "limit": {
489
+ "type": "integer",
490
+ "minimum": 1,
491
+ "maximum": 100,
492
+ "default": 24,
493
+ "description": "Items per page, 1-100 (default 24)."
494
+ },
495
+ "cursor": {
496
+ "type": "string",
497
+ "pattern": "^[A-Za-z0-9_.=-]{1,200}$",
498
+ "description": "Opaque caller-carried cursor from a previous nextCursor."
499
+ }
500
+ },
501
+ "required": [],
502
+ "additionalProperties": false,
503
+ "x-runtime-refinement": true
504
+ }
505
+ },
506
+ {
507
+ "platform": "depop",
508
+ "action": "shop-reviews",
509
+ "operation": "depopShopReviews",
510
+ "method": "GET",
511
+ "path": "/v1/depop/shop/reviews",
512
+ "description": "Return one page of the feedback a user received as a seller (default) or as a buyer, newest first, with offset pagination (Depop caps a page at 50). Depop's own backend times out on buyer feedback for a few very large accounts; that is reported as upstream_error. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Implemented; local acceptance",
513
+ "inputSchema": {
514
+ "type": "object",
515
+ "properties": {
516
+ "handle": {
517
+ "type": "string",
518
+ "pattern": "^[A-Za-z0-9_.]{1,40}$",
519
+ "x-runtime-refinement": true,
520
+ "description": "Depop username as it appears in depop.com/{handle}/ (letters, digits, underscore, full stop; matched in lowercase); provide exactly one of handle, url or user_id."
521
+ },
522
+ "url": {
523
+ "type": "string",
524
+ "maxLength": 2048,
525
+ "x-runtime-refinement": true,
526
+ "description": "Full shop URL: https://www.depop.com/{handle}/."
527
+ },
528
+ "user_id": {
529
+ "type": "string",
530
+ "pattern": "^[1-9][0-9]{0,15}$",
531
+ "description": "Numeric seller ID (skips the profile read; shop.username is then null)."
532
+ },
533
+ "role": {
534
+ "type": "string",
535
+ "enum": ["seller", "buyer"],
536
+ "default": "seller",
537
+ "description": "Echo of the requested role."
538
+ },
539
+ "limit": { "type": "integer", "minimum": 1, "maximum": 50, "default": 24 },
540
+ "offset": { "type": "integer", "minimum": 0, "maximum": 10000, "default": 0 }
541
+ },
542
+ "required": [],
543
+ "additionalProperties": false,
544
+ "x-runtime-refinement": true
545
+ }
546
+ },
547
+ {
548
+ "platform": "depop",
549
+ "action": "product",
550
+ "operation": "depopProduct",
551
+ "method": "GET",
552
+ "path": "/v1/depop/product",
553
+ "description": "Read one listing by numeric id, URL slug or product URL, merging Depop's catalogue object (category, timestamps, pricing), page object (seller, variants, shipping method) and extended object (likes, attribute names, size availability, seller reviews and activity). Secondary reads that fail are reported as warnings. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Implemented; local acceptance",
554
+ "inputSchema": {
555
+ "type": "object",
556
+ "properties": {
557
+ "id": {
558
+ "type": "string",
559
+ "pattern": "^[1-9][0-9]{0,15}$",
560
+ "description": "Numeric product ID; provide exactly one of id, slug or url."
561
+ },
562
+ "slug": {
563
+ "type": "string",
564
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
565
+ "maxLength": 200,
566
+ "description": "URL slug from depop.com/products/{slug}/ (lowercase letters, digits and hyphens)."
567
+ },
568
+ "url": {
569
+ "type": "string",
570
+ "maxLength": 2048,
571
+ "x-runtime-refinement": true,
572
+ "description": "Full product URL: https://www.depop.com/products/{slug}/."
573
+ }
574
+ },
575
+ "required": [],
576
+ "additionalProperties": false,
577
+ "x-runtime-refinement": true
578
+ }
579
+ },
580
+ {
581
+ "platform": "depop",
582
+ "action": "product-similar",
583
+ "operation": "depopProductSimilar",
584
+ "method": "GET",
585
+ "path": "/v1/depop/product/similar",
586
+ "description": "Return Depop's similar-item recommendations for a product (unsold items only, likes included), up to 100 cards priced for the chosen market. The product is confirmed to exist first so unknown IDs fail not_found instead of returning an empty list. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Implemented; local acceptance",
587
+ "inputSchema": {
588
+ "type": "object",
589
+ "properties": {
590
+ "id": { "type": "string", "pattern": "^[1-9][0-9]{0,15}$" },
591
+ "slug": { "type": "string", "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$", "maxLength": 200 },
592
+ "url": { "type": "string", "maxLength": 2048, "x-runtime-refinement": true },
593
+ "limit": {
594
+ "type": "integer",
595
+ "minimum": 1,
596
+ "maximum": 100,
597
+ "default": 24,
598
+ "description": "Items to return, 1-100 (default 24)."
599
+ },
600
+ "country": {
601
+ "type": "string",
602
+ "enum": ["us", "gb", "au", "ca", "nz", "ie", "de", "fr", "it"],
603
+ "default": "us",
604
+ "description": "Market for pricing and availability: us, gb, au, ca, nz, ie, de, fr or it (default us)."
605
+ }
606
+ },
607
+ "required": [],
608
+ "additionalProperties": false,
609
+ "x-runtime-refinement": true
610
+ }
611
+ },
612
+ {
613
+ "platform": "depop",
614
+ "action": "search",
615
+ "operation": "depopSearch",
616
+ "method": "GET",
617
+ "path": "/v1/depop/search",
618
+ "description": "Search Depop's product index through the same-origin proxy the site paginates with: keyword (optional, so a category can be browsed by filters alone), relevance or price sorting, price range, condition, colour, brand, category group, product type, gender, kids and sale filters, one of nine markets with its display currency, up to 100 cards per page and cursor pagination. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Implemented; local acceptance",
619
+ "inputSchema": {
620
+ "type": "object",
621
+ "properties": {
622
+ "query": {
623
+ "type": "string",
624
+ "maxLength": 200,
625
+ "pattern": "^[^\\p{Cc}]*$",
626
+ "default": "",
627
+ "description": "Search text, 0-200 characters (empty browses everything the filters admit)."
628
+ },
629
+ "sort": {
630
+ "type": "string",
631
+ "enum": ["relevance", "price_low", "price_high"],
632
+ "default": "relevance",
633
+ "description": "relevance (default), price_low or price_high. Depop's \"newly listed\" order is refused by its edge and is not offered."
634
+ },
635
+ "price_min": { "type": "number", "minimum": 0, "maximum": 1000000 },
636
+ "price_max": { "type": "number", "minimum": 0, "maximum": 1000000 },
637
+ "condition": {
638
+ "type": "string",
639
+ "maxLength": 400,
640
+ "pattern": "^(?:brand_new|used_like_new|used_excellent|used_good|used_fair)(?:,(?:brand_new|used_like_new|used_excellent|used_good|used_fair))*$"
641
+ },
642
+ "colour": {
643
+ "type": "string",
644
+ "maxLength": 400,
645
+ "pattern": "^(?:black|grey|white|brown|tan|cream|yellow|red|burgundy|orange|pink|purple|blue|navy|green|khaki|multi|silver|gold)(?:,(?:black|grey|white|brown|tan|cream|yellow|red|burgundy|orange|pink|purple|blue|navy|green|khaki|multi|silver|gold))*$"
646
+ },
647
+ "brand_id": {
648
+ "type": "string",
649
+ "maxLength": 400,
650
+ "pattern": "^[1-9][0-9]{0,15}(?:,[1-9][0-9]{0,15})*$"
651
+ },
652
+ "group": {
653
+ "type": "string",
654
+ "maxLength": 400,
655
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*(?:,[a-z0-9]+(?:-[a-z0-9]+)*)*$"
656
+ },
657
+ "product_type": {
658
+ "type": "string",
659
+ "maxLength": 400,
660
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*(?:,[a-z0-9]+(?:-[a-z0-9]+)*)*$"
661
+ },
662
+ "gender": { "type": "string", "enum": ["male", "female"] },
663
+ "is_kids": { "type": "string", "enum": ["true", "false"], "x-runtime-refinement": true },
664
+ "on_sale": { "type": "string", "enum": ["true", "false"], "x-runtime-refinement": true },
665
+ "country": {
666
+ "type": "string",
667
+ "enum": ["us", "gb", "au", "ca", "nz", "ie", "de", "fr", "it"],
668
+ "default": "us",
669
+ "description": "Market: us (USD), gb (GBP), au (AUD), ca (CAD), nz (NZD), ie, de, fr, it (EUR). Prices are converted to that currency (default us)."
670
+ },
671
+ "limit": { "type": "integer", "minimum": 1, "maximum": 100, "default": 24 },
672
+ "cursor": { "type": "string", "pattern": "^[A-Za-z0-9_.=-]{1,200}$" }
673
+ },
674
+ "required": [],
675
+ "additionalProperties": false,
676
+ "x-runtime-refinement": true
677
+ }
678
+ },
679
+ {
680
+ "platform": "depop",
681
+ "action": "search-users",
682
+ "operation": "depopSearchUsers",
683
+ "method": "GET",
684
+ "path": "/v1/depop/search/users",
685
+ "description": "Return the seller matches Depop's search box offers for a term: at most five users with ID, username, shop URL and avatar (the source is not paginated). Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Implemented; local acceptance",
686
+ "inputSchema": {
687
+ "type": "object",
688
+ "properties": {
689
+ "query": {
690
+ "type": "string",
691
+ "minLength": 1,
692
+ "maxLength": 200,
693
+ "pattern": "^[^\\p{Cc}]+$",
694
+ "description": "Search text, 1-200 characters."
695
+ }
696
+ },
697
+ "required": ["query"],
698
+ "additionalProperties": false
699
+ }
700
+ },
701
+ {
702
+ "platform": "depop",
703
+ "action": "search-suggestions",
704
+ "operation": "depopSearchSuggestions",
705
+ "method": "GET",
706
+ "path": "/v1/depop/search/suggestions",
707
+ "description": "Return Depop's search-box suggestions for a partial query in source order (at most ten): the completed term, the typed part marked with ** as Depop highlights it, and the category group, gender and label when a suggestion targets a category. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Implemented; local acceptance",
708
+ "inputSchema": {
709
+ "type": "object",
710
+ "properties": {
711
+ "query": {
712
+ "type": "string",
713
+ "minLength": 1,
714
+ "maxLength": 200,
715
+ "pattern": "^[^\\p{Cc}]+$",
716
+ "description": "Partial search text, 1-200 characters."
717
+ },
718
+ "country": {
719
+ "type": "string",
720
+ "enum": ["us", "gb", "au", "ca", "nz", "ie", "de", "fr", "it"],
721
+ "default": "us",
722
+ "description": "Market the suggestions are ranked for (default us)."
723
+ }
724
+ },
725
+ "required": ["query"],
726
+ "additionalProperties": false
727
+ }
728
+ },
729
+ {
730
+ "platform": "depop",
731
+ "action": "filters",
732
+ "operation": "depopFilters",
733
+ "method": "GET",
734
+ "path": "/v1/depop/filters",
735
+ "description": "Return the category tree and attribute vocabularies the search filters accept: departments with their category groups, the product types of every group, and the condition and colour ids with their names, descriptions and swatches. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Implemented; local acceptance",
736
+ "inputSchema": {
737
+ "type": "object",
738
+ "properties": {},
739
+ "required": [],
740
+ "additionalProperties": false
741
+ }
742
+ },
743
+ {
744
+ "platform": "etsy",
745
+ "action": "shop",
746
+ "operation": "etsyShop",
747
+ "method": "GET",
748
+ "path": "/v1/etsy/shop",
749
+ "description": "Read a public Etsy shop home page: identity, headline, location, images, sales and admirer counts, star seller status, aggregate rating, item sections with counts, the announcement, latest activity, shop members, FAQ, policy date and the featured listing cards. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live private service · production acceptance 2026-09-12: 8 of 10 page reads through the residential proxy (7–9 s typical, up to about 35 s with fresh-exit retries), 2 failed upstream_challenged when three exits stalled in a row; search suggestions always answer",
750
+ "inputSchema": {
751
+ "type": "object",
752
+ "properties": {
753
+ "handle": {
754
+ "type": "string",
755
+ "pattern": "^[A-Za-z0-9]{1,40}$",
756
+ "description": "Etsy shop name as it appears in etsy.com/shop/{handle} (letters and digits); provide either handle or url."
757
+ },
758
+ "url": {
759
+ "type": "string",
760
+ "maxLength": 2048,
761
+ "x-runtime-refinement": true,
762
+ "description": "Full shop URL: https://www.etsy.com/shop/{handle}, a regional prefix such as /uk/shop/{handle}, or https://{handle}.etsy.com."
763
+ },
764
+ "currency": {
765
+ "type": "string",
766
+ "enum": [
767
+ "AUD",
768
+ "BRL",
769
+ "CAD",
770
+ "CHF",
771
+ "CNY",
772
+ "CZK",
773
+ "DKK",
774
+ "EUR",
775
+ "GBP",
776
+ "HKD",
777
+ "HUF",
778
+ "IDR",
779
+ "ILS",
780
+ "INR",
781
+ "JPY",
782
+ "MAD",
783
+ "MXN",
784
+ "MYR",
785
+ "NOK",
786
+ "NZD",
787
+ "PHP",
788
+ "PLN",
789
+ "SEK",
790
+ "SGD",
791
+ "THB",
792
+ "TRY",
793
+ "TWD",
794
+ "USD",
795
+ "VND",
796
+ "ZAR"
797
+ ],
798
+ "default": "USD",
799
+ "description": "Display currency pinned through Etsy's own locale override (default USD). One of the 30 currencies Etsy offers; language and region stay en-US / US."
800
+ }
801
+ },
802
+ "required": [],
803
+ "additionalProperties": false,
804
+ "x-runtime-refinement": true
805
+ }
806
+ },
807
+ {
808
+ "platform": "etsy",
809
+ "action": "shop-listings",
810
+ "operation": "etsyShopListings",
811
+ "method": "GET",
812
+ "path": "/v1/etsy/shop/listings",
813
+ "description": "Read one page of a shop's public item grid: 36 listing cards with canonical URLs, prices, discounts, images and badges, plus the shop section, sort, page and total pages. Mirrors SocialCrawl's /v1/etsy/shop/products rows with tracking parameters removed. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live private service · production acceptance 2026-09-12: 8 of 10 page reads through the residential proxy (7–9 s typical, up to about 35 s with fresh-exit retries), 2 failed upstream_challenged when three exits stalled in a row; search suggestions always answer",
814
+ "inputSchema": {
815
+ "type": "object",
816
+ "properties": {
817
+ "handle": {
818
+ "type": "string",
819
+ "pattern": "^[A-Za-z0-9]{1,40}$",
820
+ "description": "Etsy shop name as it appears in etsy.com/shop/{handle} (letters and digits); provide either handle or url."
821
+ },
822
+ "url": {
823
+ "type": "string",
824
+ "maxLength": 2048,
825
+ "x-runtime-refinement": true,
826
+ "description": "Full shop URL: https://www.etsy.com/shop/{handle}, a regional prefix such as /uk/shop/{handle}, or https://{handle}.etsy.com."
827
+ },
828
+ "page": {
829
+ "type": "integer",
830
+ "minimum": 1,
831
+ "maximum": 250,
832
+ "default": 1,
833
+ "description": "Page number starting at 1 (36 items per page, at most 250 pages)."
834
+ },
835
+ "sort": {
836
+ "type": "string",
837
+ "enum": ["most_recent", "price_low", "price_high", "custom"],
838
+ "default": "most_recent",
839
+ "description": "most_recent (default, Etsy date_desc), price_low, price_high or custom (the shop owner's arrangement)."
840
+ },
841
+ "section_id": {
842
+ "type": "string",
843
+ "pattern": "^[0-9]{1,20}$",
844
+ "description": "Numeric shop section ID from the shop endpoint; omit for all items."
845
+ },
846
+ "currency": {
847
+ "type": "string",
848
+ "enum": [
849
+ "AUD",
850
+ "BRL",
851
+ "CAD",
852
+ "CHF",
853
+ "CNY",
854
+ "CZK",
855
+ "DKK",
856
+ "EUR",
857
+ "GBP",
858
+ "HKD",
859
+ "HUF",
860
+ "IDR",
861
+ "ILS",
862
+ "INR",
863
+ "JPY",
864
+ "MAD",
865
+ "MXN",
866
+ "MYR",
867
+ "NOK",
868
+ "NZD",
869
+ "PHP",
870
+ "PLN",
871
+ "SEK",
872
+ "SGD",
873
+ "THB",
874
+ "TRY",
875
+ "TWD",
876
+ "USD",
877
+ "VND",
878
+ "ZAR"
879
+ ],
880
+ "default": "USD",
881
+ "description": "Display currency pinned through Etsy's own locale override (default USD). One of the 30 currencies Etsy offers; language and region stay en-US / US."
882
+ }
883
+ },
884
+ "required": [],
885
+ "additionalProperties": false,
886
+ "x-runtime-refinement": true
887
+ }
888
+ },
889
+ {
890
+ "platform": "etsy",
891
+ "action": "shop-reviews",
892
+ "operation": "etsyShopReviews",
893
+ "method": "GET",
894
+ "path": "/v1/etsy/shop/reviews",
895
+ "description": "Read one page of a shop's public reviews (14 per page, newest first): reviewer, date, star rating, text, the purchased listing and any seller response, with the shop's aggregate rating and total page count. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live private service · production acceptance 2026-09-12: 8 of 10 page reads through the residential proxy (7–9 s typical, up to about 35 s with fresh-exit retries), 2 failed upstream_challenged when three exits stalled in a row; search suggestions always answer",
896
+ "inputSchema": {
897
+ "type": "object",
898
+ "properties": {
899
+ "handle": {
900
+ "type": "string",
901
+ "pattern": "^[A-Za-z0-9]{1,40}$",
902
+ "description": "Etsy shop name as it appears in etsy.com/shop/{handle} (letters and digits); provide either handle or url."
903
+ },
904
+ "url": {
905
+ "type": "string",
906
+ "maxLength": 2048,
907
+ "x-runtime-refinement": true,
908
+ "description": "Full shop URL: https://www.etsy.com/shop/{handle}, a regional prefix such as /uk/shop/{handle}, or https://{handle}.etsy.com."
909
+ },
910
+ "page": {
911
+ "type": "integer",
912
+ "minimum": 1,
913
+ "maximum": 250,
914
+ "default": 1,
915
+ "description": "Page number starting at 1 (14 reviews per page)."
916
+ }
917
+ },
918
+ "required": [],
919
+ "additionalProperties": false,
920
+ "x-runtime-refinement": true
921
+ }
922
+ },
923
+ {
924
+ "platform": "etsy",
925
+ "action": "listing",
926
+ "operation": "etsyListing",
927
+ "method": "GET",
928
+ "path": "/v1/etsy/listing",
929
+ "description": "Read a public listing page: title, description, seller, prices and discounts, price range across variations, rating and review counts, gallery, availability and quantity, favourites, categories, item highlights and materials, variations with option prices, shipping origin and cost, returns policy, the embedded reviews and FAQ. Matches SocialCrawl's /v1/etsy/product fields where both exist. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live private service · production acceptance 2026-09-12: 8 of 10 page reads through the residential proxy (7–9 s typical, up to about 35 s with fresh-exit retries), 2 failed upstream_challenged when three exits stalled in a row; search suggestions always answer",
930
+ "inputSchema": {
931
+ "type": "object",
932
+ "properties": {
933
+ "id": {
934
+ "type": "string",
935
+ "pattern": "^[1-9][0-9]{0,15}$",
936
+ "description": "Numeric listing ID from etsy.com/listing/{id}; provide either id or url."
937
+ },
938
+ "url": {
939
+ "type": "string",
940
+ "maxLength": 2048,
941
+ "x-runtime-refinement": true,
942
+ "description": "Full listing URL (https://www.etsy.com/listing/{id}/{slug}, regional prefixes accepted)."
943
+ },
944
+ "currency": {
945
+ "type": "string",
946
+ "enum": [
947
+ "AUD",
948
+ "BRL",
949
+ "CAD",
950
+ "CHF",
951
+ "CNY",
952
+ "CZK",
953
+ "DKK",
954
+ "EUR",
955
+ "GBP",
956
+ "HKD",
957
+ "HUF",
958
+ "IDR",
959
+ "ILS",
960
+ "INR",
961
+ "JPY",
962
+ "MAD",
963
+ "MXN",
964
+ "MYR",
965
+ "NOK",
966
+ "NZD",
967
+ "PHP",
968
+ "PLN",
969
+ "SEK",
970
+ "SGD",
971
+ "THB",
972
+ "TRY",
973
+ "TWD",
974
+ "USD",
975
+ "VND",
976
+ "ZAR"
977
+ ],
978
+ "default": "USD",
979
+ "description": "Display currency pinned through Etsy's own locale override (default USD). One of the 30 currencies Etsy offers; language and region stay en-US / US."
980
+ }
981
+ },
982
+ "required": [],
983
+ "additionalProperties": false,
984
+ "x-runtime-refinement": true
985
+ }
986
+ },
987
+ {
988
+ "platform": "etsy",
989
+ "action": "search",
990
+ "operation": "etsySearch",
991
+ "method": "GET",
992
+ "path": "/v1/etsy/search",
993
+ "description": "Read one Etsy search results page for a query: the ordered organic listing IDs (up to 48), the organic products embedded in the page's structured data, every promoted listing card and the total page count. The remaining organic cards are loaded by page scripts the worker never runs, so results are explicitly partial. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live private service · production acceptance 2026-09-12: 8 of 10 page reads through the residential proxy (7–9 s typical, up to about 35 s with fresh-exit retries), 2 failed upstream_challenged when three exits stalled in a row; search suggestions always answer",
994
+ "inputSchema": {
995
+ "type": "object",
996
+ "properties": {
997
+ "query": {
998
+ "type": "string",
999
+ "minLength": 1,
1000
+ "maxLength": 200,
1001
+ "pattern": "^[^\\p{Cc}]+$",
1002
+ "description": "Search text (1-200 characters)."
1003
+ },
1004
+ "page": {
1005
+ "type": "integer",
1006
+ "minimum": 1,
1007
+ "maximum": 250,
1008
+ "default": 1,
1009
+ "description": "Results page starting at 1."
1010
+ },
1011
+ "sort": {
1012
+ "type": "string",
1013
+ "enum": ["most_relevant", "price_low", "price_high", "highest_reviews", "most_recent"],
1014
+ "default": "most_relevant",
1015
+ "description": "most_relevant (default), price_low, price_high, highest_reviews or most_recent."
1016
+ },
1017
+ "min_price": { "type": "number", "minimum": 0, "maximum": 1000000 },
1018
+ "max_price": { "type": "number", "minimum": 0, "maximum": 1000000 },
1019
+ "currency": {
1020
+ "type": "string",
1021
+ "enum": [
1022
+ "AUD",
1023
+ "BRL",
1024
+ "CAD",
1025
+ "CHF",
1026
+ "CNY",
1027
+ "CZK",
1028
+ "DKK",
1029
+ "EUR",
1030
+ "GBP",
1031
+ "HKD",
1032
+ "HUF",
1033
+ "IDR",
1034
+ "ILS",
1035
+ "INR",
1036
+ "JPY",
1037
+ "MAD",
1038
+ "MXN",
1039
+ "MYR",
1040
+ "NOK",
1041
+ "NZD",
1042
+ "PHP",
1043
+ "PLN",
1044
+ "SEK",
1045
+ "SGD",
1046
+ "THB",
1047
+ "TRY",
1048
+ "TWD",
1049
+ "USD",
1050
+ "VND",
1051
+ "ZAR"
1052
+ ],
1053
+ "default": "USD",
1054
+ "description": "Display currency pinned through Etsy's own locale override (default USD). One of the 30 currencies Etsy offers; language and region stay en-US / US."
1055
+ }
1056
+ },
1057
+ "required": ["query"],
1058
+ "additionalProperties": false,
1059
+ "x-runtime-refinement": true
1060
+ }
1061
+ },
1062
+ {
1063
+ "platform": "etsy",
1064
+ "action": "search-suggestions",
1065
+ "operation": "etsySearchSuggestions",
1066
+ "method": "GET",
1067
+ "path": "/v1/etsy/search/suggestions",
1068
+ "description": "Return Etsy's search autocomplete terms for a partial query from the public autosuggest endpoint, in source order (at most 20). Mirrors SocialCrawl's /v1/etsy/search/suggestions items. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live private service · production acceptance 2026-09-12: 8 of 10 page reads through the residential proxy (7–9 s typical, up to about 35 s with fresh-exit retries), 2 failed upstream_challenged when three exits stalled in a row; search suggestions always answer",
1069
+ "inputSchema": {
1070
+ "type": "object",
1071
+ "properties": {
1072
+ "query": {
1073
+ "type": "string",
1074
+ "minLength": 1,
1075
+ "maxLength": 200,
1076
+ "pattern": "^[^\\p{Cc}]+$",
1077
+ "description": "Partial search text (1-200 characters)."
1078
+ }
1079
+ },
1080
+ "required": ["query"],
1081
+ "additionalProperties": false
1082
+ }
1083
+ },
1084
+ {
1085
+ "platform": "github",
1086
+ "action": "user",
1087
+ "operation": "githubUser",
1088
+ "method": "GET",
1089
+ "path": "/v1/github/user",
1090
+ "description": "Public user or organization identity, biography, public email, company, location, website, account timestamps and repository, gist and follower counts. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
1091
+ "inputSchema": {
1092
+ "type": "object",
1093
+ "properties": {
1094
+ "handle": {
1095
+ "type": "string",
1096
+ "pattern": "^@?[A-Za-z0-9](?:[A-Za-z0-9]|-(?=[A-Za-z0-9])){0,38}$",
1097
+ "description": "GitHub handle, optionally beginning with @; 1–39 characters excluding @."
1098
+ },
1099
+ "url": {
1100
+ "type": "string",
1101
+ "maxLength": 2048,
1102
+ "x-runtime-refinement": true,
1103
+ "description": "Canonical HTTPS github.com URL of the user, repository or issue required by this route."
1104
+ }
1105
+ },
1106
+ "required": [],
1107
+ "additionalProperties": false,
1108
+ "x-runtime-refinement": true
1109
+ }
1110
+ },
1111
+ {
1112
+ "platform": "github",
1113
+ "action": "user-repositories",
1114
+ "operation": "githubUserRepositories",
1115
+ "method": "GET",
1116
+ "path": "/v1/github/user/repositories",
1117
+ "description": "One page of public repositories with owner, description, stars, forks, watchers, topics, license, visibility, branch, size and timestamps. Default sort is updated; page size is 30. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
1118
+ "inputSchema": {
1119
+ "type": "object",
1120
+ "properties": {
1121
+ "handle": {
1122
+ "type": "string",
1123
+ "pattern": "^@?[A-Za-z0-9](?:[A-Za-z0-9]|-(?=[A-Za-z0-9])){0,38}$",
1124
+ "description": "GitHub handle, optionally beginning with @; 1–39 characters excluding @."
1125
+ },
1126
+ "url": {
1127
+ "type": "string",
1128
+ "maxLength": 2048,
1129
+ "x-runtime-refinement": true,
1130
+ "description": "Canonical HTTPS github.com URL of the user, repository or issue required by this route."
1131
+ },
1132
+ "cursor": {
1133
+ "type": "string",
1134
+ "pattern": "^[1-9]\\d{0,3}$",
1135
+ "description": "One-based page cursor; activity cursors step backward by month."
1136
+ },
1137
+ "page": {
1138
+ "type": "string",
1139
+ "pattern": "^[1-9]\\d{0,3}$",
1140
+ "description": "Native one-based API page, alternative to cursor."
1141
+ },
1142
+ "limit": {
1143
+ "type": "string",
1144
+ "pattern": "^(?:[1-9]\\d?|100)$",
1145
+ "description": "Page size 1–100, alternative to per_page."
1146
+ },
1147
+ "per_page": {
1148
+ "type": "string",
1149
+ "pattern": "^(?:[1-9]\\d?|100)$",
1150
+ "description": "Native page size 1–100."
1151
+ },
1152
+ "type": {
1153
+ "type": "string",
1154
+ "enum": ["owner", "all", "member"],
1155
+ "description": "Endpoint-specific repository or issue type filter."
1156
+ },
1157
+ "sort": {
1158
+ "type": "string",
1159
+ "enum": ["created", "updated", "pushed", "full_name"],
1160
+ "description": "Endpoint-specific native sort key."
1161
+ },
1162
+ "direction": {
1163
+ "type": "string",
1164
+ "enum": ["asc", "desc"],
1165
+ "description": "Ascending or descending order."
1166
+ }
1167
+ },
1168
+ "required": [],
1169
+ "additionalProperties": false,
1170
+ "x-runtime-refinement": true
1171
+ }
1172
+ },
1173
+ {
1174
+ "platform": "github",
1175
+ "action": "pull-requests",
1176
+ "operation": "githubPullRequests",
1177
+ "method": "GET",
1178
+ "path": "/v1/github/user/pull-requests",
1179
+ "description": "Authored public pull requests from the search index: title, repository, state, creation time and URL. Optional inclusive since/until creation dates. Search enumeration stops at GitHub’s 1,000-result ceiling. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
1180
+ "inputSchema": {
1181
+ "type": "object",
1182
+ "properties": {
1183
+ "handle": {
1184
+ "type": "string",
1185
+ "pattern": "^@?[A-Za-z0-9](?:[A-Za-z0-9]|-(?=[A-Za-z0-9])){0,38}$",
1186
+ "description": "GitHub handle, optionally beginning with @; 1–39 characters excluding @."
1187
+ },
1188
+ "url": {
1189
+ "type": "string",
1190
+ "maxLength": 2048,
1191
+ "x-runtime-refinement": true,
1192
+ "description": "Canonical HTTPS github.com URL of the user, repository or issue required by this route."
1193
+ },
1194
+ "cursor": {
1195
+ "type": "string",
1196
+ "pattern": "^[1-9]\\d{0,3}$",
1197
+ "description": "One-based page cursor; activity cursors step backward by month."
1198
+ },
1199
+ "since": {
1200
+ "type": "string",
1201
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
1202
+ "x-runtime-refinement": true,
1203
+ "description": "Inclusive date/timestamp filter, or trending daily/weekly/monthly range."
1204
+ },
1205
+ "until": {
1206
+ "type": "string",
1207
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
1208
+ "x-runtime-refinement": true,
1209
+ "description": "Inclusive PR creation end date."
1210
+ }
1211
+ },
1212
+ "required": [],
1213
+ "additionalProperties": false,
1214
+ "x-runtime-refinement": true
1215
+ }
1216
+ },
1217
+ {
1218
+ "platform": "github",
1219
+ "action": "activity",
1220
+ "operation": "githubActivity",
1221
+ "method": "GET",
1222
+ "path": "/v1/github/user/activity",
1223
+ "description": "One month of contribution activity groups with summaries, detail text, repository links, other links, language and displayed dates. Cursor 1 starts at December for historical years, or the current UTC month for the current year. Subsequent cursors move backward within that year. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
1224
+ "inputSchema": {
1225
+ "type": "object",
1226
+ "properties": {
1227
+ "handle": {
1228
+ "type": "string",
1229
+ "pattern": "^@?[A-Za-z0-9](?:[A-Za-z0-9]|-(?=[A-Za-z0-9])){0,38}$",
1230
+ "description": "GitHub handle, optionally beginning with @; 1–39 characters excluding @."
1231
+ },
1232
+ "url": {
1233
+ "type": "string",
1234
+ "maxLength": 2048,
1235
+ "x-runtime-refinement": true,
1236
+ "description": "Canonical HTTPS github.com URL of the user, repository or issue required by this route."
1237
+ },
1238
+ "year": {
1239
+ "type": "string",
1240
+ "pattern": "^\\d{4}$",
1241
+ "x-runtime-refinement": true,
1242
+ "description": "Calendar year 2007 through the current UTC year."
1243
+ },
1244
+ "cursor": {
1245
+ "type": "string",
1246
+ "pattern": "^(?:[1-9]|1[0-2])$",
1247
+ "description": "One-based page cursor; activity cursors step backward by month."
1248
+ }
1249
+ },
1250
+ "required": [],
1251
+ "additionalProperties": false,
1252
+ "x-runtime-refinement": true
1253
+ }
1254
+ },
1255
+ {
1256
+ "platform": "github",
1257
+ "action": "followers",
1258
+ "operation": "githubFollowers",
1259
+ "method": "GET",
1260
+ "path": "/v1/github/user/followers",
1261
+ "description": "One page of follower identities: numeric ID, node ID, login, avatar, public profile URL, account type and site-admin flag. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
1262
+ "inputSchema": {
1263
+ "type": "object",
1264
+ "properties": {
1265
+ "handle": {
1266
+ "type": "string",
1267
+ "pattern": "^@?[A-Za-z0-9](?:[A-Za-z0-9]|-(?=[A-Za-z0-9])){0,38}$",
1268
+ "description": "GitHub handle, optionally beginning with @; 1–39 characters excluding @."
1269
+ },
1270
+ "url": {
1271
+ "type": "string",
1272
+ "maxLength": 2048,
1273
+ "x-runtime-refinement": true,
1274
+ "description": "Canonical HTTPS github.com URL of the user, repository or issue required by this route."
1275
+ },
1276
+ "cursor": {
1277
+ "type": "string",
1278
+ "pattern": "^[1-9]\\d{0,3}$",
1279
+ "description": "One-based page cursor; activity cursors step backward by month."
1280
+ }
1281
+ },
1282
+ "required": [],
1283
+ "additionalProperties": false,
1284
+ "x-runtime-refinement": true
1285
+ }
1286
+ },
1287
+ {
1288
+ "platform": "github",
1289
+ "action": "following",
1290
+ "operation": "githubFollowing",
1291
+ "method": "GET",
1292
+ "path": "/v1/github/user/following",
1293
+ "description": "One page of followed account identities with the same fields as followers. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
1294
+ "inputSchema": {
1295
+ "type": "object",
1296
+ "properties": {
1297
+ "handle": {
1298
+ "type": "string",
1299
+ "pattern": "^@?[A-Za-z0-9](?:[A-Za-z0-9]|-(?=[A-Za-z0-9])){0,38}$",
1300
+ "description": "GitHub handle, optionally beginning with @; 1–39 characters excluding @."
1301
+ },
1302
+ "url": {
1303
+ "type": "string",
1304
+ "maxLength": 2048,
1305
+ "x-runtime-refinement": true,
1306
+ "description": "Canonical HTTPS github.com URL of the user, repository or issue required by this route."
1307
+ },
1308
+ "cursor": {
1309
+ "type": "string",
1310
+ "pattern": "^[1-9]\\d{0,3}$",
1311
+ "description": "One-based page cursor; activity cursors step backward by month."
1312
+ }
1313
+ },
1314
+ "required": [],
1315
+ "additionalProperties": false,
1316
+ "x-runtime-refinement": true
1317
+ }
1318
+ },
1319
+ {
1320
+ "platform": "github",
1321
+ "action": "contributions",
1322
+ "operation": "githubContributions",
1323
+ "method": "GET",
1324
+ "path": "/v1/github/user/contributions",
1325
+ "description": "Calendar contribution total and daily date, exact tooltip count, color when supplied and intensity level. Counts are not inferred from colors or intensity. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
1326
+ "inputSchema": {
1327
+ "type": "object",
1328
+ "properties": {
1329
+ "handle": {
1330
+ "type": "string",
1331
+ "pattern": "^@?[A-Za-z0-9](?:[A-Za-z0-9]|-(?=[A-Za-z0-9])){0,38}$",
1332
+ "description": "GitHub handle, optionally beginning with @; 1–39 characters excluding @."
1333
+ },
1334
+ "url": {
1335
+ "type": "string",
1336
+ "maxLength": 2048,
1337
+ "x-runtime-refinement": true,
1338
+ "description": "Canonical HTTPS github.com URL of the user, repository or issue required by this route."
1339
+ },
1340
+ "year": {
1341
+ "type": "string",
1342
+ "pattern": "^\\d{4}$",
1343
+ "x-runtime-refinement": true,
1344
+ "description": "Calendar year 2007 through the current UTC year."
1345
+ }
1346
+ },
1347
+ "required": [],
1348
+ "additionalProperties": false,
1349
+ "x-runtime-refinement": true
1350
+ }
1351
+ },
1352
+ {
1353
+ "platform": "github",
1354
+ "action": "repository",
1355
+ "operation": "githubRepository",
1356
+ "method": "GET",
1357
+ "path": "/v1/github/repository",
1358
+ "description": "Public repository metadata with the same repository fields as user/repositories. Private repositories are unavailable. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
1359
+ "inputSchema": {
1360
+ "type": "object",
1361
+ "properties": {
1362
+ "url": {
1363
+ "type": "string",
1364
+ "maxLength": 2048,
1365
+ "x-runtime-refinement": true,
1366
+ "description": "Canonical HTTPS github.com URL of the user, repository or issue required by this route."
1367
+ }
1368
+ },
1369
+ "required": ["url"],
1370
+ "additionalProperties": false
1371
+ }
1372
+ },
1373
+ {
1374
+ "platform": "github",
1375
+ "action": "trending-repositories",
1376
+ "operation": "githubTrendingRepositories",
1377
+ "method": "GET",
1378
+ "path": "/v1/github/trending/repositories",
1379
+ "description": "Ranked public trending repositories with language and color, total stars and forks, stars gained in the selected daily/weekly/monthly range, and credited contributors. Includes both snake_case top-level results and SocialFetch-style camelCase data results because the competitor paths overlap. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
1380
+ "inputSchema": {
1381
+ "type": "object",
1382
+ "properties": {
1383
+ "language": {
1384
+ "type": "string",
1385
+ "minLength": 1,
1386
+ "maxLength": 80,
1387
+ "pattern": "^[a-zA-Z0-9#+. -]+$",
1388
+ "description": "Programming language filter for trending."
1389
+ },
1390
+ "since": {
1391
+ "type": "string",
1392
+ "enum": ["daily", "weekly", "monthly"],
1393
+ "description": "Inclusive date/timestamp filter, or trending daily/weekly/monthly range."
1394
+ },
1395
+ "spoken_language_code": {
1396
+ "type": "string",
1397
+ "pattern": "^[a-z]{2,3}(?:-[A-Z]{2})?$",
1398
+ "description": "Optional spoken language filter for trending repositories."
1399
+ },
1400
+ "spokenLanguageCode": {
1401
+ "type": "string",
1402
+ "pattern": "^[a-z]{2,3}(?:-[A-Z]{2})?$",
1403
+ "description": "SocialFetch spelling of spoken_language_code."
1404
+ }
1405
+ },
1406
+ "required": [],
1407
+ "additionalProperties": false,
1408
+ "x-runtime-refinement": true
1409
+ }
1410
+ },
1411
+ {
1412
+ "platform": "github",
1413
+ "action": "trending-developers",
1414
+ "operation": "githubTrendingDevelopers",
1415
+ "method": "GET",
1416
+ "path": "/v1/github/trending/developers",
1417
+ "description": "Ranked public trending developers with login, name, avatar and the highlighted popular repository. Includes both documented payload formats on this shared competitor path. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
1418
+ "inputSchema": {
1419
+ "type": "object",
1420
+ "properties": {
1421
+ "language": {
1422
+ "type": "string",
1423
+ "minLength": 1,
1424
+ "maxLength": 80,
1425
+ "pattern": "^[a-zA-Z0-9#+. -]+$",
1426
+ "description": "Programming language filter for trending."
1427
+ },
1428
+ "since": {
1429
+ "type": "string",
1430
+ "enum": ["daily", "weekly", "monthly"],
1431
+ "description": "Inclusive date/timestamp filter, or trending daily/weekly/monthly range."
1432
+ },
1433
+ "spoken_language_code": {
1434
+ "type": "string",
1435
+ "pattern": "^[a-z]{2,3}(?:-[A-Z]{2})?$",
1436
+ "description": "Optional spoken language filter for trending repositories."
1437
+ },
1438
+ "spokenLanguageCode": {
1439
+ "type": "string",
1440
+ "pattern": "^[a-z]{2,3}(?:-[A-Z]{2})?$",
1441
+ "description": "SocialFetch spelling of spoken_language_code."
1442
+ }
1443
+ },
1444
+ "required": [],
1445
+ "additionalProperties": false,
1446
+ "x-runtime-refinement": true
1447
+ }
1448
+ },
1449
+ {
1450
+ "platform": "github",
1451
+ "action": "profile",
1452
+ "operation": "githubProfile",
1453
+ "method": "GET",
1454
+ "path": "/v1/github/profile",
1455
+ "description": "SocialCrawl profile route: normalized author identity, biography, follower counts, repository and gist counts, location, website and creation date. Its verified field maps to GitHub site_admin, not a general verification status. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
1456
+ "inputSchema": {
1457
+ "type": "object",
1458
+ "properties": {
1459
+ "handle": {
1460
+ "type": "string",
1461
+ "pattern": "^@?[A-Za-z0-9](?:[A-Za-z0-9]|-(?=[A-Za-z0-9])){0,38}$",
1462
+ "description": "GitHub handle, optionally beginning with @; 1–39 characters excluding @."
1463
+ },
1464
+ "url": {
1465
+ "type": "string",
1466
+ "maxLength": 2048,
1467
+ "x-runtime-refinement": true,
1468
+ "description": "Canonical HTTPS github.com URL of the user, repository or issue required by this route."
1469
+ }
1470
+ },
1471
+ "required": [],
1472
+ "additionalProperties": false,
1473
+ "x-runtime-refinement": true
1474
+ }
1475
+ },
1476
+ {
1477
+ "platform": "github",
1478
+ "action": "repo",
1479
+ "operation": "githubRepo",
1480
+ "method": "GET",
1481
+ "path": "/v1/github/repo",
1482
+ "description": "SocialCrawl repository route: author-shaped repository identity, description, owner avatar, stars as followers, forks as following, open issues as posts_count and subscribers as likes_count. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
1483
+ "inputSchema": {
1484
+ "type": "object",
1485
+ "properties": {
1486
+ "url": {
1487
+ "type": "string",
1488
+ "maxLength": 2048,
1489
+ "x-runtime-refinement": true,
1490
+ "description": "Canonical HTTPS github.com URL of the user, repository or issue required by this route."
1491
+ }
1492
+ },
1493
+ "required": ["url"],
1494
+ "additionalProperties": false
1495
+ }
1496
+ },
1497
+ {
1498
+ "platform": "github",
1499
+ "action": "profile-repos",
1500
+ "operation": "githubProfileRepos",
1501
+ "method": "GET",
1502
+ "path": "/v1/github/profile/repos",
1503
+ "description": "SocialCrawl repository listing route with items, next_cursor and dropped. Default sort is full_name. Accepts cursor/limit or native page/per_page, but not both aliases for one parameter. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
1504
+ "inputSchema": {
1505
+ "type": "object",
1506
+ "properties": {
1507
+ "handle": {
1508
+ "type": "string",
1509
+ "pattern": "^@?[A-Za-z0-9](?:[A-Za-z0-9]|-(?=[A-Za-z0-9])){0,38}$",
1510
+ "description": "GitHub handle, optionally beginning with @; 1–39 characters excluding @."
1511
+ },
1512
+ "url": {
1513
+ "type": "string",
1514
+ "maxLength": 2048,
1515
+ "x-runtime-refinement": true,
1516
+ "description": "Canonical HTTPS github.com URL of the user, repository or issue required by this route."
1517
+ },
1518
+ "cursor": {
1519
+ "type": "string",
1520
+ "pattern": "^[1-9]\\d{0,3}$",
1521
+ "description": "One-based page cursor; activity cursors step backward by month."
1522
+ },
1523
+ "page": {
1524
+ "type": "string",
1525
+ "pattern": "^[1-9]\\d{0,3}$",
1526
+ "description": "Native one-based API page, alternative to cursor."
1527
+ },
1528
+ "limit": {
1529
+ "type": "string",
1530
+ "pattern": "^(?:[1-9]\\d?|100)$",
1531
+ "description": "Page size 1–100, alternative to per_page."
1532
+ },
1533
+ "per_page": {
1534
+ "type": "string",
1535
+ "pattern": "^(?:[1-9]\\d?|100)$",
1536
+ "description": "Native page size 1–100."
1537
+ },
1538
+ "type": {
1539
+ "type": "string",
1540
+ "enum": ["owner", "all", "member"],
1541
+ "description": "Endpoint-specific repository or issue type filter."
1542
+ },
1543
+ "sort": {
1544
+ "type": "string",
1545
+ "enum": ["created", "updated", "pushed", "full_name"],
1546
+ "description": "Endpoint-specific native sort key."
1547
+ },
1548
+ "direction": {
1549
+ "type": "string",
1550
+ "enum": ["asc", "desc"],
1551
+ "description": "Ascending or descending order."
1552
+ }
1553
+ },
1554
+ "required": [],
1555
+ "additionalProperties": false,
1556
+ "x-runtime-refinement": true
1557
+ }
1558
+ },
1559
+ {
1560
+ "platform": "github",
1561
+ "action": "readme",
1562
+ "operation": "githubReadme",
1563
+ "method": "GET",
1564
+ "path": "/v1/github/repo/readme",
1565
+ "description": "README file text under data.content.text, decoded by the source raw-content API. No Markdown or embedded scripts are executed. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
1566
+ "inputSchema": {
1567
+ "type": "object",
1568
+ "properties": {
1569
+ "url": {
1570
+ "type": "string",
1571
+ "maxLength": 2048,
1572
+ "x-runtime-refinement": true,
1573
+ "description": "Canonical HTTPS github.com URL of the user, repository or issue required by this route."
1574
+ }
1575
+ },
1576
+ "required": ["url"],
1577
+ "additionalProperties": false
1578
+ }
1579
+ },
1580
+ {
1581
+ "platform": "github",
1582
+ "action": "releases",
1583
+ "operation": "githubReleases",
1584
+ "method": "GET",
1585
+ "path": "/v1/github/repo/releases",
1586
+ "description": "One source page of releases including tags, names, Markdown notes, publication dates, prerelease flags, author and release assets. Asset URLs are returned without downloading files. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
1587
+ "inputSchema": {
1588
+ "type": "object",
1589
+ "properties": {
1590
+ "url": {
1591
+ "type": "string",
1592
+ "maxLength": 2048,
1593
+ "x-runtime-refinement": true,
1594
+ "description": "Canonical HTTPS github.com URL of the user, repository or issue required by this route."
1595
+ },
1596
+ "cursor": {
1597
+ "type": "string",
1598
+ "pattern": "^[1-9]\\d{0,3}$",
1599
+ "description": "One-based page cursor; activity cursors step backward by month."
1600
+ },
1601
+ "page": {
1602
+ "type": "string",
1603
+ "pattern": "^[1-9]\\d{0,3}$",
1604
+ "description": "Native one-based API page, alternative to cursor."
1605
+ },
1606
+ "limit": {
1607
+ "type": "string",
1608
+ "pattern": "^(?:[1-9]\\d?|100)$",
1609
+ "description": "Page size 1–100, alternative to per_page."
1610
+ },
1611
+ "per_page": {
1612
+ "type": "string",
1613
+ "pattern": "^(?:[1-9]\\d?|100)$",
1614
+ "description": "Native page size 1–100."
1615
+ }
1616
+ },
1617
+ "required": ["url"],
1618
+ "additionalProperties": false,
1619
+ "x-runtime-refinement": true
1620
+ }
1621
+ },
1622
+ {
1623
+ "platform": "github",
1624
+ "action": "issues",
1625
+ "operation": "githubIssues",
1626
+ "method": "GET",
1627
+ "path": "/v1/github/repo/issues",
1628
+ "description": "One page of issues and pull requests with title, body, author, labels, state, reactions, comment counts and timestamps. type filters the returned source page to issue, pr or all; pagination still follows the upstream page. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
1629
+ "inputSchema": {
1630
+ "type": "object",
1631
+ "properties": {
1632
+ "url": {
1633
+ "type": "string",
1634
+ "maxLength": 2048,
1635
+ "x-runtime-refinement": true,
1636
+ "description": "Canonical HTTPS github.com URL of the user, repository or issue required by this route."
1637
+ },
1638
+ "cursor": {
1639
+ "type": "string",
1640
+ "pattern": "^[1-9]\\d{0,3}$",
1641
+ "description": "One-based page cursor; activity cursors step backward by month."
1642
+ },
1643
+ "page": {
1644
+ "type": "string",
1645
+ "pattern": "^[1-9]\\d{0,3}$",
1646
+ "description": "Native one-based API page, alternative to cursor."
1647
+ },
1648
+ "limit": {
1649
+ "type": "string",
1650
+ "pattern": "^(?:[1-9]\\d?|100)$",
1651
+ "description": "Page size 1–100, alternative to per_page."
1652
+ },
1653
+ "per_page": {
1654
+ "type": "string",
1655
+ "pattern": "^(?:[1-9]\\d?|100)$",
1656
+ "description": "Native page size 1–100."
1657
+ },
1658
+ "type": {
1659
+ "type": "string",
1660
+ "enum": ["issue", "pr", "all"],
1661
+ "description": "Endpoint-specific repository or issue type filter."
1662
+ },
1663
+ "state": {
1664
+ "type": "string",
1665
+ "enum": ["open", "closed", "all"],
1666
+ "description": "open, closed or all."
1667
+ },
1668
+ "labels": {
1669
+ "type": "string",
1670
+ "minLength": 1,
1671
+ "maxLength": 500,
1672
+ "description": "Comma-separated issue labels."
1673
+ },
1674
+ "sort": {
1675
+ "type": "string",
1676
+ "enum": ["created", "updated", "comments"],
1677
+ "description": "Endpoint-specific native sort key."
1678
+ },
1679
+ "direction": {
1680
+ "type": "string",
1681
+ "enum": ["asc", "desc"],
1682
+ "description": "Ascending or descending order."
1683
+ },
1684
+ "since": {
1685
+ "type": "string",
1686
+ "format": "date-time",
1687
+ "description": "Inclusive date/timestamp filter, or trending daily/weekly/monthly range."
1688
+ }
1689
+ },
1690
+ "required": ["url"],
1691
+ "additionalProperties": false,
1692
+ "x-runtime-refinement": true
1693
+ }
1694
+ },
1695
+ {
1696
+ "platform": "github",
1697
+ "action": "issue",
1698
+ "operation": "githubIssue",
1699
+ "method": "GET",
1700
+ "path": "/v1/github/issue",
1701
+ "description": "Issue or pull-request details. Both /issues/N and /pull/N URLs use GitHub’s public issue resource. Source fields and a type marker are retained. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
1702
+ "inputSchema": {
1703
+ "type": "object",
1704
+ "properties": {
1705
+ "url": {
1706
+ "type": "string",
1707
+ "maxLength": 2048,
1708
+ "x-runtime-refinement": true,
1709
+ "description": "Canonical HTTPS github.com URL of the user, repository or issue required by this route."
1710
+ }
1711
+ },
1712
+ "required": ["url"],
1713
+ "additionalProperties": false
1714
+ }
1715
+ },
1716
+ {
1717
+ "platform": "github",
1718
+ "action": "comments",
1719
+ "operation": "githubComments",
1720
+ "method": "GET",
1721
+ "path": "/v1/github/issue/comments",
1722
+ "description": "One page of issue discussion comments, ordered by source creation time, with text, author, reaction count and timestamps. Review-thread comments are a separate GitHub resource and are not included. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
1723
+ "inputSchema": {
1724
+ "type": "object",
1725
+ "properties": {
1726
+ "url": {
1727
+ "type": "string",
1728
+ "maxLength": 2048,
1729
+ "x-runtime-refinement": true,
1730
+ "description": "Canonical HTTPS github.com URL of the user, repository or issue required by this route."
1731
+ },
1732
+ "cursor": {
1733
+ "type": "string",
1734
+ "pattern": "^[1-9]\\d{0,3}$",
1735
+ "description": "One-based page cursor; activity cursors step backward by month."
1736
+ },
1737
+ "page": {
1738
+ "type": "string",
1739
+ "pattern": "^[1-9]\\d{0,3}$",
1740
+ "description": "Native one-based API page, alternative to cursor."
1741
+ },
1742
+ "limit": {
1743
+ "type": "string",
1744
+ "pattern": "^(?:[1-9]\\d?|100)$",
1745
+ "description": "Page size 1–100, alternative to per_page."
1746
+ },
1747
+ "per_page": {
1748
+ "type": "string",
1749
+ "pattern": "^(?:[1-9]\\d?|100)$",
1750
+ "description": "Native page size 1–100."
1751
+ },
1752
+ "since": {
1753
+ "type": "string",
1754
+ "format": "date-time",
1755
+ "description": "Inclusive date/timestamp filter, or trending daily/weekly/monthly range."
1756
+ }
1757
+ },
1758
+ "required": ["url"],
1759
+ "additionalProperties": false,
1760
+ "x-runtime-refinement": true
1761
+ }
1762
+ },
1763
+ {
1764
+ "platform": "github",
1765
+ "action": "search",
1766
+ "operation": "githubSearch",
1767
+ "method": "GET",
1768
+ "path": "/v1/github/search",
1769
+ "description": "Public issue and pull-request search with native qualifier syntax. Returns items, total_count, incomplete_results and pagination. Incomplete results and the search ceiling produce explicit coverage warnings. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
1770
+ "inputSchema": {
1771
+ "type": "object",
1772
+ "properties": {
1773
+ "cursor": {
1774
+ "type": "string",
1775
+ "pattern": "^[1-9]\\d{0,3}$",
1776
+ "description": "One-based page cursor; activity cursors step backward by month."
1777
+ },
1778
+ "page": {
1779
+ "type": "string",
1780
+ "pattern": "^[1-9]\\d{0,3}$",
1781
+ "description": "Native one-based API page, alternative to cursor."
1782
+ },
1783
+ "limit": {
1784
+ "type": "string",
1785
+ "pattern": "^(?:[1-9]\\d?|100)$",
1786
+ "description": "Page size 1–100, alternative to per_page."
1787
+ },
1788
+ "per_page": {
1789
+ "type": "string",
1790
+ "pattern": "^(?:[1-9]\\d?|100)$",
1791
+ "description": "Native page size 1–100."
1792
+ },
1793
+ "query": {
1794
+ "type": "string",
1795
+ "minLength": 1,
1796
+ "maxLength": 500,
1797
+ "description": "GitHub issue/PR search query, up to 500 characters."
1798
+ },
1799
+ "sort": {
1800
+ "type": "string",
1801
+ "enum": ["reactions", "comments", "created", "updated"],
1802
+ "description": "Endpoint-specific native sort key."
1803
+ },
1804
+ "order": {
1805
+ "type": "string",
1806
+ "enum": ["asc", "desc"],
1807
+ "description": "Search ascending or descending order."
1808
+ }
1809
+ },
1810
+ "required": ["query"],
1811
+ "additionalProperties": false,
1812
+ "x-runtime-refinement": true
1813
+ }
1814
+ },
1815
+ {
1816
+ "platform": "github",
1817
+ "action": "top-issues",
1818
+ "operation": "githubTopIssues",
1819
+ "method": "GET",
1820
+ "path": "/v1/github/repo/top-issues",
1821
+ "description": "Top open enhancement issue by reactions, falling back to the top open issue when no enhancement matches, plus the most-discussed open issue. Empty matches return null. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
1822
+ "inputSchema": {
1823
+ "type": "object",
1824
+ "properties": {
1825
+ "url": {
1826
+ "type": "string",
1827
+ "maxLength": 2048,
1828
+ "x-runtime-refinement": true,
1829
+ "description": "Canonical HTTPS github.com URL of the user, repository or issue required by this route."
1830
+ }
1831
+ },
1832
+ "required": ["url"],
1833
+ "additionalProperties": false
1834
+ }
1835
+ },
1836
+ {
1837
+ "platform": "github",
1838
+ "action": "dossier",
1839
+ "operation": "githubDossier",
1840
+ "method": "GET",
1841
+ "path": "/v1/github/repo/dossier",
1842
+ "description": "Repository info, README text, latest three releases and top issues in one bounded response. Missing or failed auxiliary sections return null and explicit partial coverage. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
1843
+ "inputSchema": {
1844
+ "type": "object",
1845
+ "properties": {
1846
+ "url": {
1847
+ "type": "string",
1848
+ "maxLength": 2048,
1849
+ "x-runtime-refinement": true,
1850
+ "description": "Canonical HTTPS github.com URL of the user, repository or issue required by this route."
1851
+ }
1852
+ },
1853
+ "required": ["url"],
1854
+ "additionalProperties": false
1855
+ }
1856
+ },
1857
+ {
1858
+ "platform": "github",
1859
+ "action": "velocity",
1860
+ "operation": "githubVelocity",
1861
+ "method": "GET",
1862
+ "path": "/v1/github/user/profile-velocity",
1863
+ "description": "Authored and merged PR totals plus sampled contributed and owned repository dossiers. quick selects at most 5 external and 3 owned repositories; default 10/5; deep 15/5. External candidates come from the latest 100 indexed PRs. Competitor time-window semantics are unspecified, so this implementation reports all-time search totals with an explicit warning and does not claim exact velocity parity. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
1864
+ "inputSchema": {
1865
+ "type": "object",
1866
+ "properties": {
1867
+ "handle": {
1868
+ "type": "string",
1869
+ "pattern": "^@?[A-Za-z0-9](?:[A-Za-z0-9]|-(?=[A-Za-z0-9])){0,38}$",
1870
+ "description": "GitHub handle, optionally beginning with @; 1–39 characters excluding @."
1871
+ },
1872
+ "depth": {
1873
+ "type": "string",
1874
+ "enum": ["quick", "default", "deep"],
1875
+ "description": "quick, default or deep; controls repository enrichment width."
1876
+ }
1877
+ },
1878
+ "required": ["handle"],
1879
+ "additionalProperties": false
1880
+ }
1881
+ },
1882
+ {
1883
+ "platform": "hackernews",
1884
+ "action": "search",
1885
+ "operation": "hackernewsSearch",
1886
+ "method": "GET",
1887
+ "path": "/v1/hackernews/search",
1888
+ "description": "Search the public Hacker News index by relevance. Results default to stories; use tags to select comments, polls, Show HN, Ask HN, front-page items or one author, and numericFilters to bound created_at_i, points or num_comments. Each request returns one page of at most 100 hits with source paging metadata. The source exposes at most 1,000 hits per query. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
1889
+ "inputSchema": {
1890
+ "type": "object",
1891
+ "properties": {
1892
+ "query": {
1893
+ "type": "string",
1894
+ "minLength": 1,
1895
+ "maxLength": 500,
1896
+ "description": "Required free-text search term, 1–500 characters."
1897
+ },
1898
+ "tags": {
1899
+ "type": "string",
1900
+ "maxLength": 400,
1901
+ "pattern": "^(?:(?:story|comment|poll|pollopt|job|show_hn|ask_hn|launch_hn|front_page|author_[A-Za-z0-9_-]{2,15}|story_[1-9]\\d{0,11})|\\((?:story|comment|poll|pollopt|job|show_hn|ask_hn|launch_hn|front_page|author_[A-Za-z0-9_-]{2,15}|story_[1-9]\\d{0,11})(?:,(?:story|comment|poll|pollopt|job|show_hn|ask_hn|launch_hn|front_page|author_[A-Za-z0-9_-]{2,15}|story_[1-9]\\d{0,11}))+\\))(?:,(?:(?:story|comment|poll|pollopt|job|show_hn|ask_hn|launch_hn|front_page|author_[A-Za-z0-9_-]{2,15}|story_[1-9]\\d{0,11})|\\((?:story|comment|poll|pollopt|job|show_hn|ask_hn|launch_hn|front_page|author_[A-Za-z0-9_-]{2,15}|story_[1-9]\\d{0,11})(?:,(?:story|comment|poll|pollopt|job|show_hn|ask_hn|launch_hn|front_page|author_[A-Za-z0-9_-]{2,15}|story_[1-9]\\d{0,11}))+\\)))*$",
1902
+ "x-runtime-refinement": true,
1903
+ "description": "Comma-separated source tags: story, comment, poll, pollopt, job, show_hn, ask_hn, launch_hn, front_page, author_<username> or story_<id>. Top-level commas are AND; a parenthesised group such as (story,comment) is OR. Defaults to story. At most 10 tags."
1904
+ },
1905
+ "numericFilters": {
1906
+ "type": "string",
1907
+ "maxLength": 400,
1908
+ "pattern": "^(?:created_at_i|points|num_comments)(?:<=|>=|<|>|=)\\d{1,12}(?:,(?:created_at_i|points|num_comments)(?:<=|>=|<|>|=)\\d{1,12})*$",
1909
+ "x-runtime-refinement": true,
1910
+ "description": "Comma-separated conditions on created_at_i, points or num_comments using <, <=, =, >= or > with an integer, for example created_at_i>1700000000,points>=100. At most 10 conditions. No filter by default."
1911
+ },
1912
+ "hitsPerPage": {
1913
+ "type": "string",
1914
+ "pattern": "^(?:[1-9]\\d?|100)$",
1915
+ "description": "Hits per page, 1–100; defaults to 30. The response echoes the page size applied by the source."
1916
+ },
1917
+ "page": {
1918
+ "type": "string",
1919
+ "pattern": "^(?:0|[1-9]\\d{0,2})$",
1920
+ "description": "Zero-based page number, 0–999; defaults to 0. The response echoes the page returned by the source."
1921
+ }
1922
+ },
1923
+ "required": ["query"],
1924
+ "additionalProperties": false
1925
+ }
1926
+ },
1927
+ {
1928
+ "platform": "hackernews",
1929
+ "action": "story",
1930
+ "operation": "hackernewsStory",
1931
+ "method": "GET",
1932
+ "path": "/v1/hackernews/story",
1933
+ "description": "Retrieve one Hacker News item by numeric ID: title, submitted URL, author, points, self-post text, poll options and creation time, with the IDs of its direct child comments. The item type is returned; comment IDs are accepted and return that comment. Use the comments endpoint for the nested discussion. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
1934
+ "inputSchema": {
1935
+ "type": "object",
1936
+ "properties": {
1937
+ "id": {
1938
+ "type": "string",
1939
+ "pattern": "^[1-9]\\d{0,11}$",
1940
+ "description": "Required numeric Hacker News item ID, as shown after item?id= on news.ycombinator.com."
1941
+ }
1942
+ },
1943
+ "required": ["id"],
1944
+ "additionalProperties": false
1945
+ }
1946
+ },
1947
+ {
1948
+ "platform": "hackernews",
1949
+ "action": "story-comments",
1950
+ "operation": "hackernewsStoryComments",
1951
+ "method": "GET",
1952
+ "path": "/v1/hackernews/story/comments",
1953
+ "description": "Retrieve the complete nested comment tree of a Hacker News item in one request. Each comment keeps its source fields and its own children. The source serves the whole thread at once, so there is no cursor; at most 5,000 comment nodes are returned, and larger threads are truncated with explicit partial coverage. Deleted comments appear with null author and text. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
1954
+ "inputSchema": {
1955
+ "type": "object",
1956
+ "properties": {
1957
+ "id": {
1958
+ "type": "string",
1959
+ "pattern": "^[1-9]\\d{0,11}$",
1960
+ "description": "Required numeric Hacker News item ID; a comment ID returns that comment’s subtree."
1961
+ }
1962
+ },
1963
+ "required": ["id"],
1964
+ "additionalProperties": false
1965
+ }
1966
+ },
1967
+ {
1968
+ "platform": "hackernews",
1969
+ "action": "profile",
1970
+ "operation": "hackernewsProfile",
1971
+ "method": "GET",
1972
+ "path": "/v1/hackernews/profile",
1973
+ "description": "Retrieve a public Hacker News user from the official API by case-sensitive username: karma, account creation time, the about text when present, and the count of submitted items. Hacker News has no follower, following or verification concepts, so none are invented. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
1974
+ "inputSchema": {
1975
+ "type": "object",
1976
+ "properties": {
1977
+ "handle": {
1978
+ "type": "string",
1979
+ "pattern": "^[A-Za-z0-9_-]{2,15}$",
1980
+ "description": "Required case-sensitive Hacker News username: 2–15 letters, digits, underscores or hyphens, as shown after user?id= on news.ycombinator.com."
1981
+ }
1982
+ },
1983
+ "required": ["handle"],
1984
+ "additionalProperties": false
1985
+ }
1986
+ },
1987
+ {
1988
+ "platform": "kick",
1989
+ "action": "clip",
1990
+ "operation": "kickClip",
1991
+ "method": "GET",
1992
+ "path": "/v1/kick/clip",
1993
+ "description": "Retrieve one public Kick clip from the public player metadata API for current counters. Media and thumbnail URLs are returned without downloading their contents. No channel discovery, clip listing, or video transcription is performed. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
1994
+ "inputSchema": {
1995
+ "type": "object",
1996
+ "properties": {
1997
+ "url": {
1998
+ "type": "string",
1999
+ "maxLength": 2048,
2000
+ "x-runtime-refinement": true,
2001
+ "description": "Required HTTPS Kick clip URL. Canonical /<channel>/clips/<clip_id> and legacy /<channel>?clip=<clip_id> forms are supported. Duplicate/conflicting clip IDs are rejected."
2002
+ }
2003
+ },
2004
+ "required": ["url"],
2005
+ "additionalProperties": false
2006
+ }
2007
+ },
2008
+ {
2009
+ "platform": "komi",
2010
+ "action": "profile",
2011
+ "operation": "komiProfile",
2012
+ "method": "GET",
2013
+ "path": "/v1/komi",
2014
+ "description": "Pass one public Komi profile URL. Tracking parameters and fragments are removed. Returned URLs are data; their destinations are never fetched. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
2015
+ "inputSchema": {
2016
+ "type": "object",
2017
+ "properties": {
2018
+ "url": {
2019
+ "type": "string",
2020
+ "maxLength": 2048,
2021
+ "x-runtime-refinement": true,
2022
+ "description": "Required. An HTTPS <username>.komi.io profile URL. Custom domains and paths are unsupported."
2023
+ }
2024
+ },
2025
+ "required": ["url"],
2026
+ "additionalProperties": false
2027
+ }
2028
+ },
2029
+ {
2030
+ "platform": "kwai",
2031
+ "action": "profile",
2032
+ "operation": "kwaiProfile",
2033
+ "method": "GET",
2034
+ "path": "/v1/kwai/profile",
2035
+ "description": "Read public account metadata and counts from Kwai’s logged-out web API. Supply exactly one of handle or url. A private profile can expose public metadata with is_private=true; private feed retrieval is refused. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
2036
+ "inputSchema": {
2037
+ "type": "object",
2038
+ "properties": {
2039
+ "handle": {
2040
+ "type": "string",
2041
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9_.-]{0,99}$",
2042
+ "description": "Kwai handle without @. Exactly one of handle or url is required. ASCII letters, digits, underscore, hyphen and dot; starts with a letter or digit, at most 100 characters."
2043
+ },
2044
+ "url": {
2045
+ "type": "string",
2046
+ "maxLength": 300,
2047
+ "x-runtime-refinement": true,
2048
+ "description": "Canonical HTTPS kwai.com or www.kwai.com /@handle URL. Queries, fragments, short links, credentials and nonstandard ports are rejected."
2049
+ }
2050
+ },
2051
+ "required": [],
2052
+ "additionalProperties": false,
2053
+ "x-runtime-refinement": true
2054
+ }
2055
+ },
2056
+ {
2057
+ "platform": "kwai",
2058
+ "action": "posts",
2059
+ "operation": "kwaiPosts",
2060
+ "method": "GET",
2061
+ "path": "/v1/kwai/user/posts",
2062
+ "description": "Retrieve one public feed page after verifying profile identity and privacy. Pass data.cursor back as cursor for continuation. Source order, albums, exact post IDs and optional media metadata are preserved. This does not enumerate album contents. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
2063
+ "inputSchema": {
2064
+ "type": "object",
2065
+ "properties": {
2066
+ "handle": {
2067
+ "type": "string",
2068
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9_.-]{0,99}$",
2069
+ "description": "Kwai handle without @. Exactly one of handle or url is required. ASCII letters, digits, underscore, hyphen and dot; starts with a letter or digit, at most 100 characters."
2070
+ },
2071
+ "url": {
2072
+ "type": "string",
2073
+ "maxLength": 300,
2074
+ "x-runtime-refinement": true,
2075
+ "description": "Canonical HTTPS kwai.com or www.kwai.com /@handle URL. Queries, fragments, short links, credentials and nonstandard ports are rejected."
2076
+ },
2077
+ "count": {
2078
+ "type": "string",
2079
+ "pattern": "^(?:[1-9]|[1-4]\\d|50)$",
2080
+ "description": "Posts per page, 1–50; defaults to 20."
2081
+ },
2082
+ "cursor": {
2083
+ "type": "string",
2084
+ "pattern": "^\\d{1,32}$",
2085
+ "description": "Previous data.cursor, a numeric source token up to 32 characters. Bound to the same profile by the caller; do not alter it."
2086
+ }
2087
+ },
2088
+ "required": [],
2089
+ "additionalProperties": false,
2090
+ "x-runtime-refinement": true
2091
+ }
2092
+ },
2093
+ {
2094
+ "platform": "kwai",
2095
+ "action": "post",
2096
+ "operation": "kwaiPost",
2097
+ "method": "GET",
2098
+ "path": "/v1/kwai/post",
2099
+ "description": "Retrieve a single public video post at /@handle/photo/id. The requested string ID and author must match the source record; recommended posts are never substituted. The detail source can omit music and tags; these are null with explicit partial coverage. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
2100
+ "inputSchema": {
2101
+ "type": "object",
2102
+ "properties": {
2103
+ "url": {
2104
+ "type": "string",
2105
+ "maxLength": 350,
2106
+ "x-runtime-refinement": true,
2107
+ "description": "Required canonical HTTPS Kwai /@handle/photo/numeric-id URL. Short/share links, other URL formats and query strings are unsupported."
2108
+ }
2109
+ },
2110
+ "required": ["url"],
2111
+ "additionalProperties": false
2112
+ }
2113
+ },
2114
+ {
2115
+ "platform": "linkbio",
2116
+ "action": "profile",
2117
+ "operation": "linkbioProfile",
2118
+ "method": "GET",
2119
+ "path": "/v1/linkbio",
2120
+ "description": "Accepts one HTTPS lnk.bio page URL. Tracking parameters and fragments are removed. Custom domains, duplicate parameters, additional pages of a multi-page profile, and cache_max_age are unsupported. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
2121
+ "inputSchema": {
2122
+ "type": "object",
2123
+ "properties": {
2124
+ "url": {
2125
+ "type": "string",
2126
+ "maxLength": 2048,
2127
+ "x-runtime-refinement": true,
2128
+ "description": "Required. A public HTTPS lnk.bio page URL."
2129
+ }
2130
+ },
2131
+ "required": ["url"],
2132
+ "additionalProperties": false
2133
+ }
2134
+ },
2135
+ {
2136
+ "platform": "linkedin-ads",
2137
+ "action": "search",
2138
+ "operation": "linkedinAdsSearch",
2139
+ "method": "GET",
2140
+ "path": "/v1/linkedin/ads/search",
2141
+ "description": "Search one page by company, keyword, company ID, countries and date pair. Each card is enriched from its detail page. Pass the returned token with the same filters for continuation. Individual source failures are explicit partial results. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed once with partial ad details and timed out once at the 45 s deadline",
2142
+ "inputSchema": {
2143
+ "type": "object",
2144
+ "properties": {
2145
+ "company": {
2146
+ "type": "string",
2147
+ "minLength": 1,
2148
+ "maxLength": 500,
2149
+ "x-runtime-refinement": true,
2150
+ "description": "Company or advertiser name; combined with other filters."
2151
+ },
2152
+ "keyword": {
2153
+ "type": "string",
2154
+ "minLength": 1,
2155
+ "maxLength": 500,
2156
+ "x-runtime-refinement": true,
2157
+ "description": "Keyword in the public library."
2158
+ },
2159
+ "companyId": {
2160
+ "type": "string",
2161
+ "pattern": "^[1-9]\\d{0,24}$",
2162
+ "description": "Exact company ID as a string."
2163
+ },
2164
+ "countries": {
2165
+ "type": "string",
2166
+ "pattern": "^[A-Z]{2}(?:,[A-Z]{2}){0,49}$",
2167
+ "description": "Comma-separated uppercase country codes, for example US,DE."
2168
+ },
2169
+ "startDate": {
2170
+ "type": "string",
2171
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
2172
+ "x-runtime-refinement": true,
2173
+ "description": "Real YYYY-MM-DD calendar date; requires endDate."
2174
+ },
2175
+ "endDate": {
2176
+ "type": "string",
2177
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
2178
+ "x-runtime-refinement": true,
2179
+ "description": "Real YYYY-MM-DD date on or after startDate. LinkedIn applies its retained-ad date window."
2180
+ },
2181
+ "paginationToken": {
2182
+ "type": "string",
2183
+ "pattern": "^[1-9]\\d{0,24}-\\d{10,16}$",
2184
+ "description": "Source continuation token. Reuse the same filters."
2185
+ },
2186
+ "cursor": {
2187
+ "type": "string",
2188
+ "pattern": "^[1-9]\\d{0,24}-\\d{10,16}$",
2189
+ "description": "Alias of paginationToken. Supply one, never both."
2190
+ }
2191
+ },
2192
+ "required": [],
2193
+ "additionalProperties": false,
2194
+ "x-runtime-refinement": true
2195
+ }
2196
+ },
2197
+ {
2198
+ "platform": "linkedin-ads",
2199
+ "action": "ad",
2200
+ "operation": "linkedinAdsAd",
2201
+ "method": "GET",
2202
+ "path": "/v1/linkedin/ad",
2203
+ "description": "Retrieve a public ad by exact ID or canonical URL. Includes creative media, payer, advertiser, disclosed targeting, dates and impressions. Image, video, carousel, messages, InMail, article and event creatives have dedicated extraction. Native documents expose limited previews; unsupported formats return explicit partial coverage. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed once with partial ad details and timed out once at the 45 s deadline",
2204
+ "inputSchema": {
2205
+ "type": "object",
2206
+ "properties": {
2207
+ "url": {
2208
+ "type": "string",
2209
+ "maxLength": 4096,
2210
+ "x-runtime-refinement": true,
2211
+ "description": "Public HTTPS linkedin.com/ad-library/detail/ID URL."
2212
+ },
2213
+ "adId": {
2214
+ "type": "string",
2215
+ "pattern": "^[1-9]\\d{0,24}$",
2216
+ "description": "Exact numeric ad ID as a string. Supply adId or url."
2217
+ }
2218
+ },
2219
+ "required": [],
2220
+ "additionalProperties": false,
2221
+ "x-runtime-refinement": true
2222
+ }
2223
+ },
2224
+ {
2225
+ "platform": "linkedin-ads",
2226
+ "action": "library-search",
2227
+ "operation": "linkedinAdsLibrarySearch",
2228
+ "method": "GET",
2229
+ "path": "/v1/linkedin/ad-library/ads/search",
2230
+ "description": "Search one page by company, keyword, company ID, countries and date pair. Each card is enriched from its detail page. Pass the returned token with the same filters for continuation. Individual source failures are explicit partial results. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed once with partial ad details and timed out once at the 45 s deadline",
2231
+ "inputSchema": {
2232
+ "type": "object",
2233
+ "properties": {
2234
+ "company": {
2235
+ "type": "string",
2236
+ "minLength": 1,
2237
+ "maxLength": 500,
2238
+ "x-runtime-refinement": true,
2239
+ "description": "Company or advertiser name; combined with other filters."
2240
+ },
2241
+ "keyword": {
2242
+ "type": "string",
2243
+ "minLength": 1,
2244
+ "maxLength": 500,
2245
+ "x-runtime-refinement": true,
2246
+ "description": "Keyword in the public library."
2247
+ },
2248
+ "companyId": {
2249
+ "type": "string",
2250
+ "pattern": "^[1-9]\\d{0,24}$",
2251
+ "description": "Exact company ID as a string."
2252
+ },
2253
+ "countries": {
2254
+ "type": "string",
2255
+ "pattern": "^[A-Z]{2}(?:,[A-Z]{2}){0,49}$",
2256
+ "description": "Comma-separated uppercase country codes, for example US,DE."
2257
+ },
2258
+ "startDate": {
2259
+ "type": "string",
2260
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
2261
+ "x-runtime-refinement": true,
2262
+ "description": "Real YYYY-MM-DD calendar date; requires endDate."
2263
+ },
2264
+ "endDate": {
2265
+ "type": "string",
2266
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
2267
+ "x-runtime-refinement": true,
2268
+ "description": "Real YYYY-MM-DD date on or after startDate. LinkedIn applies its retained-ad date window."
2269
+ },
2270
+ "paginationToken": {
2271
+ "type": "string",
2272
+ "pattern": "^[1-9]\\d{0,24}-\\d{10,16}$",
2273
+ "description": "Source continuation token. Reuse the same filters."
2274
+ },
2275
+ "cursor": {
2276
+ "type": "string",
2277
+ "pattern": "^[1-9]\\d{0,24}-\\d{10,16}$",
2278
+ "description": "Alias of paginationToken. Supply one, never both."
2279
+ }
2280
+ },
2281
+ "required": [],
2282
+ "additionalProperties": false,
2283
+ "x-runtime-refinement": true
2284
+ }
2285
+ },
2286
+ {
2287
+ "platform": "linkedin-ads",
2288
+ "action": "library-ad",
2289
+ "operation": "linkedinAdsLibraryAd",
2290
+ "method": "GET",
2291
+ "path": "/v1/linkedin/ad-library/ads",
2292
+ "description": "Retrieve a public ad by exact ID or canonical URL. Includes creative media, payer, advertiser, disclosed targeting, dates and impressions. Image, video, carousel, messages, InMail, article and event creatives have dedicated extraction. Native documents expose limited previews; unsupported formats return explicit partial coverage. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed once with partial ad details and timed out once at the 45 s deadline",
2293
+ "inputSchema": {
2294
+ "type": "object",
2295
+ "properties": {
2296
+ "url": {
2297
+ "type": "string",
2298
+ "maxLength": 4096,
2299
+ "x-runtime-refinement": true,
2300
+ "description": "Public HTTPS linkedin.com/ad-library/detail/ID URL."
2301
+ },
2302
+ "adId": {
2303
+ "type": "string",
2304
+ "pattern": "^[1-9]\\d{0,24}$",
2305
+ "description": "Exact numeric ad ID as a string. Supply adId or url."
2306
+ }
2307
+ },
2308
+ "required": [],
2309
+ "additionalProperties": false,
2310
+ "x-runtime-refinement": true
2311
+ }
2312
+ },
2313
+ {
2314
+ "platform": "linkedin",
2315
+ "action": "profile",
2316
+ "operation": "linkedinProfile",
2317
+ "method": "GET",
2318
+ "path": "/v1/linkedin/profile",
2319
+ "description": "Public profile as LinkedIn shows it logged out: name, photo, location, follower count, connection bucket, about text, recent posts, experience, articles, education, publications, projects, recommendations and similar profiles. LinkedIn masks job titles and descriptions with asterisks for logged-out readers; that masking is returned as-is. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
2320
+ "inputSchema": {
2321
+ "type": "object",
2322
+ "properties": {
2323
+ "url": {
2324
+ "type": "string",
2325
+ "minLength": 1,
2326
+ "maxLength": 500,
2327
+ "description": "Public profile URL such as https://www.linkedin.com/in/handle. Regional hosts and trailing slashes are accepted; query strings are dropped."
2328
+ }
2329
+ },
2330
+ "required": ["url"],
2331
+ "additionalProperties": false
2332
+ }
2333
+ },
2334
+ {
2335
+ "platform": "linkedin",
2336
+ "action": "company",
2337
+ "operation": "linkedinCompany",
2338
+ "method": "GET",
2339
+ "path": "/v1/linkedin/company",
2340
+ "description": "Public company, school or showcase page: identity, description, location, follower and employee counts, website, logo, cover image, slogan, similar pages, about details, specialties, employees shown on the page, the first page of posts and the guest-feed pagination token. Funding is a stable empty shape because public pages no longer embed Crunchbase data. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
2341
+ "inputSchema": {
2342
+ "type": "object",
2343
+ "properties": {
2344
+ "url": {
2345
+ "type": "string",
2346
+ "minLength": 1,
2347
+ "maxLength": 500,
2348
+ "description": "Canonical LinkedIn URL from structured data, possibly on a regional host."
2349
+ }
2350
+ },
2351
+ "required": ["url"],
2352
+ "additionalProperties": false
2353
+ }
2354
+ },
2355
+ {
2356
+ "platform": "linkedin",
2357
+ "action": "company-posts",
2358
+ "operation": "linkedinCompanyPosts",
2359
+ "method": "GET",
2360
+ "path": "/v1/linkedin/company/posts",
2361
+ "description": "Numbered pages of a company's public posts. Page 1 is the structured-data list on the company page; later pages read the logged-out guest feed ten posts at a time, where datePublished is derived from the activity id. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
2362
+ "inputSchema": {
2363
+ "type": "object",
2364
+ "properties": {
2365
+ "url": {
2366
+ "type": "string",
2367
+ "minLength": 1,
2368
+ "maxLength": 500,
2369
+ "description": "Public company URL."
2370
+ },
2371
+ "page": {
2372
+ "type": "string",
2373
+ "pattern": "^[1-9]\\d{0,2}$",
2374
+ "default": "1",
2375
+ "description": "1–999; default 1. Pages after the first cost one extra upstream request."
2376
+ }
2377
+ },
2378
+ "required": ["url"],
2379
+ "additionalProperties": false
2380
+ }
2381
+ },
2382
+ {
2383
+ "platform": "linkedin",
2384
+ "action": "search-posts",
2385
+ "operation": "linkedinSearchPosts",
2386
+ "method": "GET",
2387
+ "path": "/v1/linkedin/search/posts",
2388
+ "description": "Keyword search over public LinkedIn posts. LinkedIn has no logged-out search, so matching post URLs come from a web search index restricted to linkedin.com/posts, and every result is then read from its public post page with the same fields as the post endpoint. Requires a configured search key; otherwise search_unavailable. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
2389
+ "inputSchema": {
2390
+ "type": "object",
2391
+ "properties": {
2392
+ "query": {
2393
+ "type": "string",
2394
+ "minLength": 1,
2395
+ "maxLength": 200,
2396
+ "description": "Keyword or phrase, 1–200 characters."
2397
+ },
2398
+ "date_posted": {
2399
+ "type": "string",
2400
+ "enum": ["last-hour", "last-day", "last-week", "last-month", "last-year"],
2401
+ "description": "last-hour, last-day, last-week, last-month or last-year. last-hour is applied at day granularity with a warning."
2402
+ },
2403
+ "cursor": {
2404
+ "type": "string",
2405
+ "pattern": "^(?:[1-9]|10)$",
2406
+ "description": "Next page number when another page may exist."
2407
+ }
2408
+ },
2409
+ "required": ["query"],
2410
+ "additionalProperties": false
2411
+ }
2412
+ },
2413
+ {
2414
+ "platform": "linkedin",
2415
+ "action": "post",
2416
+ "operation": "linkedinPost",
2417
+ "method": "GET",
2418
+ "path": "/v1/linkedin/post",
2419
+ "description": "A public post (linkedin.com/posts/…) or article (linkedin.com/pulse/…). Posts return text, images (including document carousel pages), author, embedded comments and counters; video posts add name, thumbnailUrl, uploadDate, transcript and the video media URL; articles return name, headline, full body text and more articles by the author. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
2420
+ "inputSchema": {
2421
+ "type": "object",
2422
+ "properties": {
2423
+ "url": {
2424
+ "type": "string",
2425
+ "minLength": 1,
2426
+ "maxLength": 500,
2427
+ "description": "Public post or article URL."
2428
+ }
2429
+ },
2430
+ "required": ["url"],
2431
+ "additionalProperties": false
2432
+ }
2433
+ },
2434
+ {
2435
+ "platform": "linkedin",
2436
+ "action": "post-transcript",
2437
+ "operation": "linkedinPostTranscript",
2438
+ "method": "GET",
2439
+ "path": "/v1/linkedin/post/transcript",
2440
+ "description": "Transcript LinkedIn publishes with a public video post. Posts without a video, or videos without published captions, return transcript null and transcriptNotAvailable true. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
2441
+ "inputSchema": {
2442
+ "type": "object",
2443
+ "properties": {
2444
+ "url": {
2445
+ "type": "string",
2446
+ "minLength": 1,
2447
+ "maxLength": 500,
2448
+ "description": "Public post URL."
2449
+ }
2450
+ },
2451
+ "required": ["url"],
2452
+ "additionalProperties": false
2453
+ }
2454
+ },
2455
+ {
2456
+ "platform": "linkme",
2457
+ "action": "profile",
2458
+ "operation": "linkmeProfile",
2459
+ "method": "GET",
2460
+ "path": "/v1/linkme",
2461
+ "description": "Accepts one public Linkme profile URL. The result is nested under profile, matching the reference API. Image paths and linkValue strings are returned as published; no destination is visited. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
2462
+ "inputSchema": {
2463
+ "type": "object",
2464
+ "properties": {
2465
+ "url": {
2466
+ "type": "string",
2467
+ "maxLength": 2048,
2468
+ "x-runtime-refinement": true,
2469
+ "description": "Required. An HTTPS link.me/<username> URL. www, case, tracking parameters, and fragments are canonicalized."
2470
+ }
2471
+ },
2472
+ "required": ["url"],
2473
+ "additionalProperties": false
2474
+ }
2475
+ },
2476
+ {
2477
+ "platform": "linktree",
2478
+ "action": "profile",
2479
+ "operation": "linktreeProfile",
2480
+ "method": "GET",
2481
+ "path": "/v1/linktree",
2482
+ "description": "Accepts one HTTPS linktr.ee profile URL. Tracking parameters and fragments are removed. Custom domains, duplicate parameters, and cache_max_age are unsupported. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
2483
+ "inputSchema": {
2484
+ "type": "object",
2485
+ "properties": {
2486
+ "url": {
2487
+ "type": "string",
2488
+ "maxLength": 2048,
2489
+ "x-runtime-refinement": true,
2490
+ "description": "Required. A public HTTPS linktr.ee profile URL."
2491
+ }
2492
+ },
2493
+ "required": ["url"],
2494
+ "additionalProperties": false
2495
+ }
2496
+ },
2497
+ {
2498
+ "platform": "meetup",
2499
+ "action": "group",
2500
+ "operation": "meetupGroup",
2501
+ "method": "GET",
2502
+ "path": "/v1/meetup/group",
2503
+ "description": "Retrieve one public group by canonical URL, including community metadata and embedded upcoming/past event previews. This is not a full event history or member directory. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
2504
+ "inputSchema": {
2505
+ "type": "object",
2506
+ "properties": {
2507
+ "url": {
2508
+ "type": "string",
2509
+ "maxLength": 500,
2510
+ "pattern": "^https:\\/\\/(?:www\\.)?meetup\\.com\\/[A-Za-z0-9][A-Za-z0-9_-]{0,119}\\/?$",
2511
+ "description": "Required HTTPS meetup.com or www.meetup.com group URL; no query, fragment, credentials or extra path."
2512
+ }
2513
+ },
2514
+ "required": ["url"],
2515
+ "additionalProperties": false
2516
+ }
2517
+ },
2518
+ {
2519
+ "platform": "meetup",
2520
+ "action": "event",
2521
+ "operation": "meetupEvent",
2522
+ "method": "GET",
2523
+ "path": "/v1/meetup/event",
2524
+ "description": "Retrieve one public event with its group, dates, venue, photos, fees, hosts, RSVP totals and published settings. Private groups are rejected. No joining, RSVPing, attendee export or private meeting link retrieval is performed. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
2525
+ "inputSchema": {
2526
+ "type": "object",
2527
+ "properties": {
2528
+ "url": {
2529
+ "type": "string",
2530
+ "maxLength": 500,
2531
+ "pattern": "^https:\\/\\/(?:www\\.)?meetup\\.com\\/[A-Za-z0-9][A-Za-z0-9_-]{0,119}\\/events\\/[1-9]\\d{0,19}\\/?$",
2532
+ "description": "Required HTTPS meetup.com or www.meetup.com/<group>/events/<numeric-id>/ URL; no query or fragment."
2533
+ }
2534
+ },
2535
+ "required": ["url"],
2536
+ "additionalProperties": false
2537
+ }
2538
+ },
2539
+ {
2540
+ "platform": "meetup",
2541
+ "action": "search",
2542
+ "operation": "meetupSearch",
2543
+ "method": "GET",
2544
+ "path": "/v1/meetup/search",
2545
+ "description": "Search public events by keyword and explicit location. Returns only the first source page, at most 100 events, with totalCount and hasNextPage where supplied. Cursor input is not supported. Search summaries contain fewer fields than event details. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
2546
+ "inputSchema": {
2547
+ "type": "object",
2548
+ "properties": {
2549
+ "query": {
2550
+ "type": "string",
2551
+ "minLength": 1,
2552
+ "maxLength": 200,
2553
+ "description": "Required keyword query, 1–200 characters."
2554
+ },
2555
+ "location": {
2556
+ "type": "string",
2557
+ "pattern": "^[a-z]{2}--[a-z0-9]+(?:-[a-z0-9]+)*$",
2558
+ "maxLength": 120,
2559
+ "description": "Required Meetup location slug, such as gb--london or us--new-york, matching two lowercase country letters, double hyphen, and a city slug."
2560
+ }
2561
+ },
2562
+ "required": ["query", "location"],
2563
+ "additionalProperties": false
2564
+ }
2565
+ },
2566
+ {
2567
+ "platform": "meetup",
2568
+ "action": "profile",
2569
+ "operation": "meetupProfile",
2570
+ "method": "GET",
2571
+ "path": "/v1/meetup/profile",
2572
+ "description": "Retrieve a limited member summary from a public group or event page. Only members reachable through the page’s supported public records are eligible. This is not a standalone profile lookup: bios, interests, location, memberships and email are not returned. A member absent from this page returns member_not_on_page, which says nothing about account existence. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
2573
+ "inputSchema": {
2574
+ "type": "object",
2575
+ "properties": {
2576
+ "url": {
2577
+ "anyOf": [
2578
+ {
2579
+ "type": "string",
2580
+ "maxLength": 500,
2581
+ "pattern": "^https:\\/\\/(?:www\\.)?meetup\\.com\\/[A-Za-z0-9][A-Za-z0-9_-]{0,119}\\/?$"
2582
+ },
2583
+ {
2584
+ "type": "string",
2585
+ "maxLength": 500,
2586
+ "pattern": "^https:\\/\\/(?:www\\.)?meetup\\.com\\/[A-Za-z0-9][A-Za-z0-9_-]{0,119}\\/events\\/[1-9]\\d{0,19}\\/?$"
2587
+ }
2588
+ ],
2589
+ "description": "Required canonical public group or event URL. Standalone /members/<id>/ URLs are rejected."
2590
+ },
2591
+ "member_id": {
2592
+ "type": "string",
2593
+ "pattern": "^[1-9]\\d{0,19}$",
2594
+ "description": "Required numeric Meetup member ID, 1–20 digits and nonzero. IDs appear in public organizer, host and attendee records."
2595
+ }
2596
+ },
2597
+ "required": ["url", "member_id"],
2598
+ "additionalProperties": false
2599
+ }
2600
+ },
2601
+ {
2602
+ "platform": "meta-ads",
2603
+ "action": "search-get",
2604
+ "operation": "metaAdsSearchGet",
2605
+ "method": "GET",
2606
+ "path": "/v1/facebook/adLibrary/search/ads",
2607
+ "description": "Retrieve one public page with the documented filters and an opaque continuation cursor. Page 1 bootstraps the live query document; continuation uses one GraphQL POST with fresh proxy-session egress. Lowercase /adlibrary/ aliases return canonical Post/Author data. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
2608
+ "inputSchema": {
2609
+ "type": "object",
2610
+ "properties": {
2611
+ "query": {
2612
+ "type": "string",
2613
+ "minLength": 1,
2614
+ "maxLength": 4096,
2615
+ "description": "Keyword or advertiser name."
2616
+ },
2617
+ "search_type": {
2618
+ "type": "string",
2619
+ "enum": ["keyword_unordered", "keyword_exact_phrase"],
2620
+ "default": "keyword_unordered",
2621
+ "description": "keyword_unordered (default) or keyword_exact_phrase."
2622
+ },
2623
+ "ad_type": {
2624
+ "type": "string",
2625
+ "enum": ["all", "political_and_issue_ads"],
2626
+ "default": "all",
2627
+ "description": "all (default) or political_and_issue_ads."
2628
+ },
2629
+ "country": {
2630
+ "type": "string",
2631
+ "pattern": "^(?:ALL|[A-Z]{2})$",
2632
+ "default": "ALL",
2633
+ "description": "Two uppercase letters or ALL. Defaults to ALL."
2634
+ },
2635
+ "status": {
2636
+ "type": "string",
2637
+ "enum": ["ALL", "ACTIVE", "INACTIVE"],
2638
+ "default": "ACTIVE",
2639
+ "description": "Query filter: ACTIVE (default), INACTIVE or ALL. Response: success, partial, failed or challenged."
2640
+ },
2641
+ "media_type": {
2642
+ "type": "string",
2643
+ "enum": ["ALL", "IMAGE", "VIDEO", "MEME", "IMAGE_AND_MEME", "NONE"],
2644
+ "default": "ALL",
2645
+ "description": "ALL (default), IMAGE, VIDEO, MEME, IMAGE_AND_MEME or NONE."
2646
+ },
2647
+ "sort_by": {
2648
+ "type": "string",
2649
+ "enum": ["total_impressions", "relevancy_monthly_grouped"],
2650
+ "default": "total_impressions",
2651
+ "description": "total_impressions (default) or relevancy_monthly_grouped."
2652
+ },
2653
+ "language": {
2654
+ "type": "string",
2655
+ "pattern": "^[A-Za-z]{2}$",
2656
+ "description": "Optional two-letter content language."
2657
+ },
2658
+ "start_date": {
2659
+ "type": "string",
2660
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
2661
+ "x-runtime-refinement": true,
2662
+ "description": "Optional real calendar date YYYY-MM-DD."
2663
+ },
2664
+ "end_date": {
2665
+ "type": "string",
2666
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
2667
+ "x-runtime-refinement": true,
2668
+ "description": "Optional real calendar date YYYY-MM-DD, on or after start_date."
2669
+ },
2670
+ "trim": {
2671
+ "type": "string",
2672
+ "enum": ["true", "false"],
2673
+ "description": "Use the competitor’s smaller field projection while preserving creative snapshots and regional transparency."
2674
+ },
2675
+ "cursor": {
2676
+ "type": "string",
2677
+ "minLength": 1,
2678
+ "maxLength": 65536,
2679
+ "description": "Opaque continuation token bound to the operation and filters. POST supports long cursor values."
2680
+ }
2681
+ },
2682
+ "required": ["query"],
2683
+ "additionalProperties": false,
2684
+ "x-runtime-refinement": true
2685
+ }
2686
+ },
2687
+ {
2688
+ "platform": "meta-ads",
2689
+ "action": "search-post",
2690
+ "operation": "metaAdsSearchPost",
2691
+ "method": "POST",
2692
+ "path": "/v1/facebook/adLibrary/search/ads",
2693
+ "description": "Retrieve one public page with the documented filters and an opaque continuation cursor. Page 1 bootstraps the live query document; continuation uses one GraphQL POST with fresh proxy-session egress. Lowercase /adlibrary/ aliases return canonical Post/Author data. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
2694
+ "inputSchema": {
2695
+ "type": "object",
2696
+ "properties": {
2697
+ "query": {
2698
+ "type": "string",
2699
+ "minLength": 1,
2700
+ "maxLength": 4096,
2701
+ "description": "Keyword or advertiser name."
2702
+ },
2703
+ "search_type": {
2704
+ "type": "string",
2705
+ "enum": ["keyword_unordered", "keyword_exact_phrase"],
2706
+ "default": "keyword_unordered",
2707
+ "description": "keyword_unordered (default) or keyword_exact_phrase."
2708
+ },
2709
+ "ad_type": {
2710
+ "type": "string",
2711
+ "enum": ["all", "political_and_issue_ads"],
2712
+ "default": "all",
2713
+ "description": "all (default) or political_and_issue_ads."
2714
+ },
2715
+ "country": {
2716
+ "type": "string",
2717
+ "pattern": "^(?:ALL|[A-Z]{2})$",
2718
+ "default": "ALL",
2719
+ "description": "Two uppercase letters or ALL. Defaults to ALL."
2720
+ },
2721
+ "status": {
2722
+ "type": "string",
2723
+ "enum": ["ALL", "ACTIVE", "INACTIVE"],
2724
+ "default": "ACTIVE",
2725
+ "description": "Query filter: ACTIVE (default), INACTIVE or ALL. Response: success, partial, failed or challenged."
2726
+ },
2727
+ "media_type": {
2728
+ "type": "string",
2729
+ "enum": ["ALL", "IMAGE", "VIDEO", "MEME", "IMAGE_AND_MEME", "NONE"],
2730
+ "default": "ALL",
2731
+ "description": "ALL (default), IMAGE, VIDEO, MEME, IMAGE_AND_MEME or NONE."
2732
+ },
2733
+ "sort_by": {
2734
+ "type": "string",
2735
+ "enum": ["total_impressions", "relevancy_monthly_grouped"],
2736
+ "default": "total_impressions",
2737
+ "description": "total_impressions (default) or relevancy_monthly_grouped."
2738
+ },
2739
+ "language": {
2740
+ "type": "string",
2741
+ "pattern": "^[A-Za-z]{2}$",
2742
+ "description": "Optional two-letter content language."
2743
+ },
2744
+ "start_date": {
2745
+ "type": "string",
2746
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
2747
+ "x-runtime-refinement": true,
2748
+ "description": "Optional real calendar date YYYY-MM-DD."
2749
+ },
2750
+ "end_date": {
2751
+ "type": "string",
2752
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
2753
+ "x-runtime-refinement": true,
2754
+ "description": "Optional real calendar date YYYY-MM-DD, on or after start_date."
2755
+ },
2756
+ "trim": {
2757
+ "type": "string",
2758
+ "enum": ["true", "false"],
2759
+ "description": "Use the competitor’s smaller field projection while preserving creative snapshots and regional transparency."
2760
+ },
2761
+ "cursor": {
2762
+ "type": "string",
2763
+ "minLength": 1,
2764
+ "maxLength": 65536,
2765
+ "description": "Opaque continuation token bound to the operation and filters. POST supports long cursor values."
2766
+ }
2767
+ },
2768
+ "required": ["query"],
2769
+ "additionalProperties": false,
2770
+ "x-runtime-refinement": true
2771
+ }
2772
+ },
2773
+ {
2774
+ "platform": "meta-ads",
2775
+ "action": "ad-get",
2776
+ "operation": "metaAdsAdGet",
2777
+ "method": "GET",
2778
+ "path": "/v1/facebook/adLibrary/ad",
2779
+ "description": "Retrieve one ad with its creative variants, payer/beneficiary information and available EU, UK or Brazil transparency. Set includeTranscript=true to recognize speech in its first video. Unavailable auxiliary data is marked partial. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
2780
+ "inputSchema": {
2781
+ "type": "object",
2782
+ "properties": {
2783
+ "id": {
2784
+ "type": "string",
2785
+ "pattern": "^\\d{1,30}$",
2786
+ "description": "Exact numeric archive ID, supplied as a string. Use id or url, not both."
2787
+ },
2788
+ "url": {
2789
+ "type": "string",
2790
+ "maxLength": 4096,
2791
+ "x-runtime-refinement": true,
2792
+ "description": "Canonical HTTPS facebook.com/ads/library/?id= URL."
2793
+ },
2794
+ "trim": {
2795
+ "type": "string",
2796
+ "enum": ["true", "false"],
2797
+ "description": "Use the competitor’s smaller field projection while preserving creative snapshots and regional transparency."
2798
+ },
2799
+ "includeTranscript": {
2800
+ "type": "string",
2801
+ "enum": ["true", "false"],
2802
+ "description": "Recognize speech in the first available primary or carousel video. Requires configured local Whisper and FFmpeg."
2803
+ },
2804
+ "cache_max_age": {
2805
+ "type": "string",
2806
+ "enum": ["1d", "3d", "7d", "14d", "30d"],
2807
+ "description": "Accepted freshness hint for ad/detail transcript lookups. This stateless worker always fetches live and returns cached=false."
2808
+ }
2809
+ },
2810
+ "required": [],
2811
+ "additionalProperties": false,
2812
+ "x-runtime-refinement": true
2813
+ }
2814
+ },
2815
+ {
2816
+ "platform": "meta-ads",
2817
+ "action": "companies-get",
2818
+ "operation": "metaAdsCompaniesGet",
2819
+ "method": "GET",
2820
+ "path": "/v1/facebook/adLibrary/search/companies",
2821
+ "description": "Retrieve public advertiser suggestions by name. Company-ad lookup by name requires one case-insensitive exact match; use pageId when names are ambiguous. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
2822
+ "inputSchema": {
2823
+ "type": "object",
2824
+ "properties": {
2825
+ "query": {
2826
+ "type": "string",
2827
+ "minLength": 1,
2828
+ "maxLength": 4096,
2829
+ "description": "Keyword or advertiser name."
2830
+ }
2831
+ },
2832
+ "required": ["query"],
2833
+ "additionalProperties": false
2834
+ }
2835
+ },
2836
+ {
2837
+ "platform": "meta-ads",
2838
+ "action": "company-ads-get",
2839
+ "operation": "metaAdsCompanyAdsGet",
2840
+ "method": "GET",
2841
+ "path": "/v1/facebook/adLibrary/company/ads",
2842
+ "description": "Retrieve public advertiser suggestions or one page of an advertiser’s ads. Page 1 bootstraps the live query document; continuation uses one GraphQL POST with fresh proxy-session egress. Company-name lookup requires a unique exact match; use pageId when ambiguous. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
2843
+ "inputSchema": {
2844
+ "type": "object",
2845
+ "properties": {
2846
+ "pageId": {
2847
+ "type": "string",
2848
+ "pattern": "^\\d{1,30}$",
2849
+ "description": "Exact numeric advertiser page ID. Use pageId or companyName."
2850
+ },
2851
+ "companyName": {
2852
+ "type": "string",
2853
+ "minLength": 1,
2854
+ "maxLength": 4096,
2855
+ "description": "Requires exactly one case-insensitive exact advertiser-name match. Prefer pageId to avoid ambiguity."
2856
+ },
2857
+ "country": {
2858
+ "type": "string",
2859
+ "pattern": "^(?:ALL|[A-Z]{2})$",
2860
+ "default": "ALL",
2861
+ "description": "Two uppercase letters or ALL. Defaults to ALL."
2862
+ },
2863
+ "status": {
2864
+ "type": "string",
2865
+ "enum": ["ALL", "ACTIVE", "INACTIVE"],
2866
+ "default": "ACTIVE",
2867
+ "description": "Query filter: ACTIVE (default), INACTIVE or ALL. Response: success, partial, failed or challenged."
2868
+ },
2869
+ "media_type": {
2870
+ "type": "string",
2871
+ "enum": ["ALL", "IMAGE", "VIDEO", "MEME", "IMAGE_AND_MEME", "NONE"],
2872
+ "default": "ALL",
2873
+ "description": "ALL (default), IMAGE, VIDEO, MEME, IMAGE_AND_MEME or NONE."
2874
+ },
2875
+ "sort_by": {
2876
+ "type": "string",
2877
+ "enum": ["total_impressions", "relevancy_monthly_grouped"],
2878
+ "default": "total_impressions",
2879
+ "description": "total_impressions (default) or relevancy_monthly_grouped."
2880
+ },
2881
+ "language": {
2882
+ "type": "string",
2883
+ "pattern": "^[A-Za-z]{2}$",
2884
+ "description": "Optional two-letter content language."
2885
+ },
2886
+ "start_date": {
2887
+ "type": "string",
2888
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
2889
+ "x-runtime-refinement": true,
2890
+ "description": "Optional real calendar date YYYY-MM-DD."
2891
+ },
2892
+ "end_date": {
2893
+ "type": "string",
2894
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
2895
+ "x-runtime-refinement": true,
2896
+ "description": "Optional real calendar date YYYY-MM-DD, on or after start_date."
2897
+ },
2898
+ "trim": {
2899
+ "type": "string",
2900
+ "enum": ["true", "false"],
2901
+ "description": "Use the competitor’s smaller field projection while preserving creative snapshots and regional transparency."
2902
+ },
2903
+ "cursor": {
2904
+ "type": "string",
2905
+ "minLength": 1,
2906
+ "maxLength": 65536,
2907
+ "description": "Opaque continuation token bound to the operation and filters. POST supports long cursor values."
2908
+ }
2909
+ },
2910
+ "required": [],
2911
+ "additionalProperties": false,
2912
+ "x-runtime-refinement": true
2913
+ }
2914
+ },
2915
+ {
2916
+ "platform": "meta-ads",
2917
+ "action": "company-ads-post",
2918
+ "operation": "metaAdsCompanyAdsPost",
2919
+ "method": "POST",
2920
+ "path": "/v1/facebook/adLibrary/company/ads",
2921
+ "description": "Retrieve public advertiser suggestions or one page of an advertiser’s ads. Page 1 bootstraps the live query document; continuation uses one GraphQL POST with fresh proxy-session egress. Company-name lookup requires a unique exact match; use pageId when ambiguous. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
2922
+ "inputSchema": {
2923
+ "type": "object",
2924
+ "properties": {
2925
+ "pageId": {
2926
+ "type": "string",
2927
+ "pattern": "^\\d{1,30}$",
2928
+ "description": "Exact numeric advertiser page ID. Use pageId or companyName."
2929
+ },
2930
+ "companyName": {
2931
+ "type": "string",
2932
+ "minLength": 1,
2933
+ "maxLength": 4096,
2934
+ "description": "Requires exactly one case-insensitive exact advertiser-name match. Prefer pageId to avoid ambiguity."
2935
+ },
2936
+ "country": {
2937
+ "type": "string",
2938
+ "pattern": "^(?:ALL|[A-Z]{2})$",
2939
+ "default": "ALL",
2940
+ "description": "Two uppercase letters or ALL. Defaults to ALL."
2941
+ },
2942
+ "status": {
2943
+ "type": "string",
2944
+ "enum": ["ALL", "ACTIVE", "INACTIVE"],
2945
+ "default": "ACTIVE",
2946
+ "description": "Query filter: ACTIVE (default), INACTIVE or ALL. Response: success, partial, failed or challenged."
2947
+ },
2948
+ "media_type": {
2949
+ "type": "string",
2950
+ "enum": ["ALL", "IMAGE", "VIDEO", "MEME", "IMAGE_AND_MEME", "NONE"],
2951
+ "default": "ALL",
2952
+ "description": "ALL (default), IMAGE, VIDEO, MEME, IMAGE_AND_MEME or NONE."
2953
+ },
2954
+ "sort_by": {
2955
+ "type": "string",
2956
+ "enum": ["total_impressions", "relevancy_monthly_grouped"],
2957
+ "default": "total_impressions",
2958
+ "description": "total_impressions (default) or relevancy_monthly_grouped."
2959
+ },
2960
+ "language": {
2961
+ "type": "string",
2962
+ "pattern": "^[A-Za-z]{2}$",
2963
+ "description": "Optional two-letter content language."
2964
+ },
2965
+ "start_date": {
2966
+ "type": "string",
2967
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
2968
+ "x-runtime-refinement": true,
2969
+ "description": "Optional real calendar date YYYY-MM-DD."
2970
+ },
2971
+ "end_date": {
2972
+ "type": "string",
2973
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
2974
+ "x-runtime-refinement": true,
2975
+ "description": "Optional real calendar date YYYY-MM-DD, on or after start_date."
2976
+ },
2977
+ "trim": {
2978
+ "type": "string",
2979
+ "enum": ["true", "false"],
2980
+ "description": "Use the competitor’s smaller field projection while preserving creative snapshots and regional transparency."
2981
+ },
2982
+ "cursor": {
2983
+ "type": "string",
2984
+ "minLength": 1,
2985
+ "maxLength": 65536,
2986
+ "description": "Opaque continuation token bound to the operation and filters. POST supports long cursor values."
2987
+ }
2988
+ },
2989
+ "required": [],
2990
+ "additionalProperties": false,
2991
+ "x-runtime-refinement": true
2992
+ }
2993
+ },
2994
+ {
2995
+ "platform": "meta-ads",
2996
+ "action": "transcript-get",
2997
+ "operation": "metaAdsTranscriptGet",
2998
+ "method": "GET",
2999
+ "path": "/v1/facebook/adLibrary/ad/transcript",
3000
+ "description": "Return plain speech text from the first available primary or carousel video. Image-only ads and videos without detected speech return transcript_available=false. Local Whisper recognition can differ in wording from competitors. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
3001
+ "inputSchema": {
3002
+ "type": "object",
3003
+ "properties": {
3004
+ "id": {
3005
+ "type": "string",
3006
+ "pattern": "^\\d{1,30}$",
3007
+ "description": "Exact numeric archive ID, supplied as a string. Use id or url, not both."
3008
+ },
3009
+ "url": {
3010
+ "type": "string",
3011
+ "maxLength": 4096,
3012
+ "x-runtime-refinement": true,
3013
+ "description": "Canonical HTTPS facebook.com/ads/library/?id= URL."
3014
+ },
3015
+ "trim": {
3016
+ "type": "string",
3017
+ "enum": ["true", "false"],
3018
+ "description": "Use the competitor’s smaller field projection while preserving creative snapshots and regional transparency."
3019
+ },
3020
+ "includeTranscript": {
3021
+ "type": "string",
3022
+ "enum": ["true", "false"],
3023
+ "description": "Recognize speech in the first available primary or carousel video. Requires configured local Whisper and FFmpeg."
3024
+ },
3025
+ "cache_max_age": {
3026
+ "type": "string",
3027
+ "enum": ["1d", "3d", "7d", "14d", "30d"],
3028
+ "description": "Accepted freshness hint for ad/detail transcript lookups. This stateless worker always fetches live and returns cached=false."
3029
+ }
3030
+ },
3031
+ "required": [],
3032
+ "additionalProperties": false,
3033
+ "x-runtime-refinement": true
3034
+ }
3035
+ },
3036
+ {
3037
+ "platform": "pillar",
3038
+ "action": "profile",
3039
+ "operation": "pillarProfile",
3040
+ "method": "GET",
3041
+ "path": "/v1/pillar",
3042
+ "description": "Accepts a public Pillar profile URL. Returns profile fields, links, and products at the top level, matching the reference API's data shape. Outbound URLs are returned as data and never visited. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
3043
+ "inputSchema": {
3044
+ "type": "object",
3045
+ "properties": {
3046
+ "url": {
3047
+ "type": "string",
3048
+ "maxLength": 2048,
3049
+ "x-runtime-refinement": true,
3050
+ "description": "Required. An HTTPS pillar.io/<username> URL. www, case, tracking parameters, and fragments are canonicalized; nested paths and custom domains are unsupported."
3051
+ }
3052
+ },
3053
+ "required": ["url"],
3054
+ "additionalProperties": false
3055
+ }
3056
+ },
3057
+ {
3058
+ "platform": "pinterest",
3059
+ "action": "search",
3060
+ "operation": "pinterestSearch",
3061
+ "method": "GET",
3062
+ "path": "/v1/pinterest/search",
3063
+ "description": "Discover public pins for a keyword. Retrieves one page with a requested page size of 25; Pinterest controls the actual result count and ranking. Pass cursor to continue. Full records retain available image, destination, board, author, counter and media fields. Trimmed pins contain id, url, description, created_at, pinner and images when supplied. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
3064
+ "inputSchema": {
3065
+ "type": "object",
3066
+ "properties": {
3067
+ "query": {
3068
+ "type": "string",
3069
+ "minLength": 1,
3070
+ "maxLength": 500,
3071
+ "description": "Required keyword, 1–500 characters after trimming."
3072
+ },
3073
+ "cursor": {
3074
+ "type": "string",
3075
+ "minLength": 1,
3076
+ "maxLength": 16384,
3077
+ "pattern": "^[A-Za-z0-9_~+/=|.*%-]+$",
3078
+ "description": "Optional source bookmark returned by the previous response. Reuse with the same query, handle, or board. Null means end of results unless coverage warns pagination_unavailable. Source cursors can expire. Maximum 16,384 characters."
3079
+ },
3080
+ "trim": {
3081
+ "type": "string",
3082
+ "enum": ["true", "false"],
3083
+ "description": "Optional true or false (default false). True selects the documented compact fields; false preserves the public source record and nested extensions. Missing source fields remain absent."
3084
+ }
3085
+ },
3086
+ "required": ["query"],
3087
+ "additionalProperties": false
3088
+ }
3089
+ },
3090
+ {
3091
+ "platform": "pinterest",
3092
+ "action": "pin",
3093
+ "operation": "pinterestPin",
3094
+ "method": "GET",
3095
+ "path": "/v1/pinterest/pin",
3096
+ "description": "Read a public pin’s page data without executing page scripts. Full responses expose Pinterest’s camelCase fields at the top level, preserving nested media and author data. imageSpec_orig aliases images_orig when needed. Trimmed fields: entityId, seoAltText, originPinner, pinner, imageSpec_orig, description, shareCount, nativeCreator, createdAt, repinCount and totalReactionCount. Counts are never guessed; missing required pin fields fail explicitly. cache_max_age is unsupported. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
3097
+ "inputSchema": {
3098
+ "type": "object",
3099
+ "properties": {
3100
+ "url": {
3101
+ "type": "string",
3102
+ "maxLength": 2048,
3103
+ "x-runtime-refinement": true,
3104
+ "description": "Required HTTPS pinterest.com or www.pinterest.com pin URL (/pin/<numeric-id>/). No credentials, explicit ports, short links, regional domains or encoded path segments. Tracking query parameters and fragments are removed."
3105
+ },
3106
+ "trim": {
3107
+ "type": "string",
3108
+ "enum": ["true", "false"],
3109
+ "description": "Optional true or false (default false). True selects the documented compact fields; false preserves the public source record and nested extensions. Missing source fields remain absent."
3110
+ }
3111
+ },
3112
+ "required": ["url"],
3113
+ "additionalProperties": false
3114
+ }
3115
+ },
3116
+ {
3117
+ "platform": "pinterest",
3118
+ "action": "boards",
3119
+ "operation": "pinterestBoards",
3120
+ "method": "GET",
3121
+ "path": "/v1/pinterest/user/boards",
3122
+ "description": "List one page of public boards, preserving order, source counts and nested metadata. Requests 25 boards. Cursor input is supported as an extension to the competitor’s documented request contract. Trimmed boards retain id, url, description, follower_count, pin_count, name, image_cover_hd_url and created_at when present. Pinterest does not supply every field for every board; absent timestamps and cover fields are not invented. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
3123
+ "inputSchema": {
3124
+ "type": "object",
3125
+ "properties": {
3126
+ "handle": {
3127
+ "type": "string",
3128
+ "pattern": "^[a-zA-Z0-9_]{1,60}$",
3129
+ "x-runtime-refinement": true,
3130
+ "description": "Required Pinterest username, 1–60 letters, digits or underscores; normalized to lowercase."
3131
+ },
3132
+ "cursor": {
3133
+ "type": "string",
3134
+ "minLength": 1,
3135
+ "maxLength": 16384,
3136
+ "pattern": "^[A-Za-z0-9_~+/=|.*%-]+$",
3137
+ "description": "Optional source bookmark returned by the previous response. Reuse with the same query, handle, or board. Null means end of results unless coverage warns pagination_unavailable. Source cursors can expire. Maximum 16,384 characters."
3138
+ },
3139
+ "trim": {
3140
+ "type": "string",
3141
+ "enum": ["true", "false"],
3142
+ "description": "Optional true or false (default false). True selects the documented compact fields; false preserves the public source record and nested extensions. Missing source fields remain absent."
3143
+ }
3144
+ },
3145
+ "required": ["handle"],
3146
+ "additionalProperties": false
3147
+ }
3148
+ },
3149
+ {
3150
+ "platform": "pinterest",
3151
+ "action": "board",
3152
+ "operation": "pinterestBoard",
3153
+ "method": "GET",
3154
+ "path": "/v1/pinterest/board",
3155
+ "description": "Resolve a public board and retrieve one page of its pins, requesting 25 items. Each returned pin’s board ID must match. All board sections are included where Pinterest supplies them. Pass cursor for the next page. Full records preserve source fields; trim=true uses the same compact pin fields as search. Media files and destination links are never downloaded. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
3156
+ "inputSchema": {
3157
+ "type": "object",
3158
+ "properties": {
3159
+ "url": {
3160
+ "type": "string",
3161
+ "maxLength": 2048,
3162
+ "x-runtime-refinement": true,
3163
+ "description": "Required HTTPS pinterest.com or www.pinterest.com board URL (/<handle>/<slug>/). Board slugs currently accept ASCII letters, digits, underscores and hyphens. No credentials, explicit ports, short links, regional domains or encoded path segments. Tracking query parameters and fragments are removed."
3164
+ },
3165
+ "cursor": {
3166
+ "type": "string",
3167
+ "minLength": 1,
3168
+ "maxLength": 16384,
3169
+ "pattern": "^[A-Za-z0-9_~+/=|.*%-]+$",
3170
+ "description": "Optional source bookmark returned by the previous response. Reuse with the same query, handle, or board. Null means end of results unless coverage warns pagination_unavailable. Source cursors can expire. Maximum 16,384 characters."
3171
+ },
3172
+ "trim": {
3173
+ "type": "string",
3174
+ "enum": ["true", "false"],
3175
+ "description": "Optional true or false (default false). True selects the documented compact fields; false preserves the public source record and nested extensions. Missing source fields remain absent."
3176
+ }
3177
+ },
3178
+ "required": ["url"],
3179
+ "additionalProperties": false
3180
+ }
3181
+ },
3182
+ {
3183
+ "platform": "reddit",
3184
+ "action": "search",
3185
+ "operation": "redditSearch",
3186
+ "method": "POST",
3187
+ "path": "/v1/search",
3188
+ "description": "RSS keyword discovery with optional subreddit, ranking, time-window, and result bounds. Unknown scores and metrics remain null. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · RSS reads reopen a stalled residential proxy tunnel on the same session (image 2026-09-12-all-r2, host sample 8/8 on 2026-09-12)",
3189
+ "inputSchema": {
3190
+ "type": "object",
3191
+ "properties": {
3192
+ "query": {
3193
+ "type": "string",
3194
+ "minLength": 1,
3195
+ "maxLength": 200,
3196
+ "description": "Required. Search text, 1–200 characters."
3197
+ },
3198
+ "subreddits": {
3199
+ "type": "array",
3200
+ "items": { "type": "string", "pattern": "^[A-Za-z0-9_]{2,21}$" },
3201
+ "maxItems": 5,
3202
+ "default": [],
3203
+ "description": "Up to five subreddit names; defaults to an empty list."
3204
+ },
3205
+ "sort": {
3206
+ "type": "string",
3207
+ "enum": ["top", "new", "relevance"],
3208
+ "default": "relevance",
3209
+ "description": "top, new, or relevance; defaults to relevance."
3210
+ },
3211
+ "timeWindow": {
3212
+ "type": "string",
3213
+ "enum": ["day", "week", "month", "year"],
3214
+ "default": "month",
3215
+ "description": "day, week, month, or year; defaults to month."
3216
+ },
3217
+ "maxPosts": {
3218
+ "type": "integer",
3219
+ "minimum": 1,
3220
+ "maximum": 50,
3221
+ "default": 25,
3222
+ "description": "1–50 posts; defaults to 25."
3223
+ }
3224
+ },
3225
+ "required": ["query"],
3226
+ "additionalProperties": false
3227
+ }
3228
+ },
3229
+ {
3230
+ "platform": "reddit",
3231
+ "action": "threads",
3232
+ "operation": "redditThreads",
3233
+ "method": "POST",
3234
+ "path": "/v1/threads",
3235
+ "description": "Retrieve posts and nested comments from canonical HTTPS www.reddit.com post permalinks. Reaching a cap or leaving unloaded comments returns partial. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · RSS reads reopen a stalled residential proxy tunnel on the same session (image 2026-09-12-all-r2, host sample 8/8 on 2026-09-12)",
3236
+ "inputSchema": {
3237
+ "type": "object",
3238
+ "properties": {
3239
+ "permalinks": {
3240
+ "type": "array",
3241
+ "items": {
3242
+ "type": "string",
3243
+ "maxLength": 2048,
3244
+ "format": "uri",
3245
+ "x-runtime-refinement": true
3246
+ },
3247
+ "minItems": 1,
3248
+ "maxItems": 10,
3249
+ "description": "Required. 1–10 canonical HTTPS Reddit post permalinks, without query parameters or fragments."
3250
+ },
3251
+ "maxCommentsPerThread": {
3252
+ "type": "integer",
3253
+ "minimum": 1,
3254
+ "maximum": 100,
3255
+ "default": 50,
3256
+ "description": "1–100 comments per thread; defaults to 50."
3257
+ },
3258
+ "maxDepth": {
3259
+ "type": "integer",
3260
+ "minimum": 1,
3261
+ "maximum": 5,
3262
+ "default": 5,
3263
+ "description": "1–5 reply levels; defaults to 5."
3264
+ }
3265
+ },
3266
+ "required": ["permalinks"],
3267
+ "additionalProperties": false
3268
+ }
3269
+ },
3270
+ {
3271
+ "platform": "reddit",
3272
+ "action": "details",
3273
+ "operation": "redditDetails",
3274
+ "method": "GET",
3275
+ "path": "/v1/reddit/subreddit/details",
3276
+ "description": "Read community metadata, rendered rules, images, dates and weekly metrics. A matching community search header can fill a missing subscriber count; unavailable required metadata stays null with explicit partial coverage. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · RSS reads reopen a stalled residential proxy tunnel on the same session (image 2026-09-12-all-r2, host sample 8/8 on 2026-09-12)",
3277
+ "inputSchema": {
3278
+ "type": "object",
3279
+ "properties": {
3280
+ "subreddit": { "type": "string", "pattern": "^[A-Za-z0-9_]{2,21}$" },
3281
+ "url": { "type": "string", "maxLength": 2048, "format": "uri" },
3282
+ "cache_max_age": {
3283
+ "type": "string",
3284
+ "enum": ["1d", "3d", "7d", "14d", "30d"],
3285
+ "description": "Accepted only on competitor-documented routes; always fetches live. No retained cache, credit balance or billing fields."
3286
+ }
3287
+ },
3288
+ "required": [],
3289
+ "additionalProperties": false,
3290
+ "x-runtime-refinement": true
3291
+ }
3292
+ },
3293
+ {
3294
+ "platform": "reddit",
3295
+ "action": "posts",
3296
+ "operation": "redditPosts",
3297
+ "method": "GET",
3298
+ "path": "/v1/reddit/subreddit",
3299
+ "description": "Read one rendered page of up to 50 public posts with sort, timeframe, signed after continuation and optional trimmed records. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · RSS reads reopen a stalled residential proxy tunnel on the same session (image 2026-09-12-all-r2, host sample 8/8 on 2026-09-12)",
3300
+ "inputSchema": {
3301
+ "type": "object",
3302
+ "properties": {
3303
+ "subreddit": { "type": "string", "pattern": "^[A-Za-z0-9_]{2,21}$" },
3304
+ "sort": {
3305
+ "type": "string",
3306
+ "enum": ["best", "hot", "new", "top", "rising"],
3307
+ "default": "hot"
3308
+ },
3309
+ "timeframe": {
3310
+ "type": "string",
3311
+ "enum": ["all", "day", "week", "month", "year"],
3312
+ "default": "all"
3313
+ },
3314
+ "after": { "type": "string", "maxLength": 5000, "pattern": "^[A-Za-z0-9_.=-]+$" },
3315
+ "trim": {
3316
+ "anyOf": [
3317
+ { "type": "boolean" },
3318
+ { "type": "string", "enum": ["true", "false"], "x-runtime-refinement": true }
3319
+ ],
3320
+ "default": false
3321
+ },
3322
+ "cache_max_age": {
3323
+ "type": "string",
3324
+ "enum": ["1d", "3d", "7d", "14d", "30d"],
3325
+ "description": "Accepted only on competitor-documented routes; always fetches live. No retained cache, credit balance or billing fields."
3326
+ }
3327
+ },
3328
+ "required": ["subreddit"],
3329
+ "additionalProperties": false
3330
+ }
3331
+ },
3332
+ {
3333
+ "platform": "reddit",
3334
+ "action": "subreddit-search",
3335
+ "operation": "redditSubredditSearch",
3336
+ "method": "GET",
3337
+ "path": "/v1/reddit/subreddit/search",
3338
+ "description": "Read public post, comment and media search sections. One signed cursor tracks each section independently and skips exhausted sections. A section failure retains usable results with explicit partial coverage. Ranking and page sizes can differ from the competitor. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · RSS reads reopen a stalled residential proxy tunnel on the same session (image 2026-09-12-all-r2, host sample 8/8 on 2026-09-12)",
3339
+ "inputSchema": {
3340
+ "type": "object",
3341
+ "properties": {
3342
+ "subreddit": { "type": "string", "pattern": "^[A-Za-z0-9_]{2,21}$" },
3343
+ "query": { "type": "string", "maxLength": 500, "default": "" },
3344
+ "sort": {
3345
+ "type": "string",
3346
+ "enum": ["relevance", "hot", "top", "new", "comments"],
3347
+ "default": "relevance"
3348
+ },
3349
+ "timeframe": {
3350
+ "type": "string",
3351
+ "enum": ["all", "year", "month", "week", "day", "hour"],
3352
+ "default": "all"
3353
+ },
3354
+ "cursor": {
3355
+ "type": "string",
3356
+ "minLength": 1,
3357
+ "maxLength": 50000,
3358
+ "pattern": "^[A-Za-z0-9_.-]+$"
3359
+ }
3360
+ },
3361
+ "required": ["subreddit"],
3362
+ "additionalProperties": false
3363
+ }
3364
+ },
3365
+ {
3366
+ "platform": "reddit",
3367
+ "action": "post",
3368
+ "operation": "redditPost",
3369
+ "method": "GET",
3370
+ "path": "/v1/reddit/post",
3371
+ "description": "Read one post and omit comments from the response. Canonical Reddit URLs and bounded same-origin mobile share-link redirects are supported. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · RSS reads reopen a stalled residential proxy tunnel on the same session (image 2026-09-12-all-r2, host sample 8/8 on 2026-09-12)",
3372
+ "inputSchema": {
3373
+ "type": "object",
3374
+ "properties": { "url": { "type": "string", "format": "uri", "maxLength": 2048 } },
3375
+ "required": ["url"],
3376
+ "additionalProperties": false
3377
+ }
3378
+ },
3379
+ {
3380
+ "platform": "reddit",
3381
+ "action": "get-comments",
3382
+ "operation": "redditGetComments",
3383
+ "method": "GET",
3384
+ "path": "/v1/reddit/post/comments",
3385
+ "description": "Read a post and up to 100 comments with nested replies (depth 8). Truncation is explicit. Pass the returned signed continuation unchanged with the same post URL to retrieve native comment fragments or visible focused replies. Source POST controls retain their hidden form cursor; hidden fallback links are excluded. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · RSS reads reopen a stalled residential proxy tunnel on the same session (image 2026-09-12-all-r2, host sample 8/8 on 2026-09-12)",
3386
+ "inputSchema": {
3387
+ "type": "object",
3388
+ "properties": {
3389
+ "url": { "type": "string", "format": "uri", "maxLength": 2048 },
3390
+ "cursor": {
3391
+ "type": "string",
3392
+ "minLength": 1,
3393
+ "maxLength": 50000,
3394
+ "pattern": "^[A-Za-z0-9_.-]+$"
3395
+ },
3396
+ "trim": {
3397
+ "anyOf": [
3398
+ { "type": "boolean" },
3399
+ { "type": "string", "enum": ["true", "false"], "x-runtime-refinement": true }
3400
+ ],
3401
+ "default": false
3402
+ }
3403
+ },
3404
+ "required": ["url"],
3405
+ "additionalProperties": false
3406
+ }
3407
+ },
3408
+ {
3409
+ "platform": "reddit",
3410
+ "action": "post-comments",
3411
+ "operation": "redditPostComments",
3412
+ "method": "POST",
3413
+ "path": "/v1/reddit/post/comments",
3414
+ "description": "The same comments operation accepts JSON when a continuation is too large for a URL. Body limit 64 KiB; cursor limit 50,000 characters. Query/body mixing and cursor batching are rejected. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · RSS reads reopen a stalled residential proxy tunnel on the same session (image 2026-09-12-all-r2, host sample 8/8 on 2026-09-12)",
3415
+ "inputSchema": {
3416
+ "type": "object",
3417
+ "properties": {
3418
+ "url": { "type": "string", "format": "uri", "maxLength": 2048 },
3419
+ "cursor": {
3420
+ "type": "string",
3421
+ "minLength": 1,
3422
+ "maxLength": 50000,
3423
+ "pattern": "^[A-Za-z0-9_.-]+$"
3424
+ },
3425
+ "trim": {
3426
+ "anyOf": [
3427
+ { "type": "boolean" },
3428
+ { "type": "string", "enum": ["true", "false"], "x-runtime-refinement": true }
3429
+ ],
3430
+ "default": false
3431
+ }
3432
+ },
3433
+ "required": ["url"],
3434
+ "additionalProperties": false
3435
+ }
3436
+ },
3437
+ {
3438
+ "platform": "reddit",
3439
+ "action": "transcript",
3440
+ "operation": "redditTranscript",
3441
+ "method": "GET",
3442
+ "path": "/v1/reddit/post/transcript",
3443
+ "description": "Read published WebVTT captions by post/share or direct v.redd.it video URL. Preserve raw_vtt and parse rolling captions into plain text. A source without published captions returns transcriptNotAvailable; challenges and failed retrieval remain failures. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · RSS reads reopen a stalled residential proxy tunnel on the same session (image 2026-09-12-all-r2, host sample 8/8 on 2026-09-12)",
3444
+ "inputSchema": {
3445
+ "type": "object",
3446
+ "properties": {
3447
+ "url": { "type": "string", "format": "uri", "maxLength": 2048 },
3448
+ "language": { "type": "string", "pattern": "^[a-z]{2}$", "default": "en" },
3449
+ "cache_max_age": {
3450
+ "type": "string",
3451
+ "enum": ["1d", "3d", "7d", "14d", "30d"],
3452
+ "description": "Accepted only on competitor-documented routes; always fetches live. No retained cache, credit balance or billing fields."
3453
+ }
3454
+ },
3455
+ "required": ["url"],
3456
+ "additionalProperties": false
3457
+ }
3458
+ },
3459
+ {
3460
+ "platform": "reddit",
3461
+ "action": "global-search",
3462
+ "operation": "redditGlobalSearch",
3463
+ "method": "GET",
3464
+ "path": "/v1/reddit/search",
3465
+ "description": "Search public posts or comments with signed after continuation. Comment search supports relevance/new/top and no timeframe. Unknown card fields, including post bodies and comment parent identities, remain null. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · RSS reads reopen a stalled residential proxy tunnel on the same session (image 2026-09-12-all-r2, host sample 8/8 on 2026-09-12)",
3466
+ "inputSchema": {
3467
+ "type": "object",
3468
+ "properties": {
3469
+ "query": { "type": "string", "minLength": 1, "maxLength": 500 },
3470
+ "filter": { "type": "string", "enum": ["posts", "comments"], "default": "posts" },
3471
+ "sort": {
3472
+ "type": "string",
3473
+ "enum": ["relevance", "new", "top", "comment_count"],
3474
+ "default": "relevance"
3475
+ },
3476
+ "timeframe": {
3477
+ "type": "string",
3478
+ "enum": ["all", "day", "week", "month", "year"],
3479
+ "default": "all"
3480
+ },
3481
+ "after": { "type": "string", "maxLength": 5000, "pattern": "^[A-Za-z0-9_.=-]+$" },
3482
+ "trim": {
3483
+ "anyOf": [
3484
+ { "type": "boolean" },
3485
+ { "type": "string", "enum": ["true", "false"], "x-runtime-refinement": true }
3486
+ ],
3487
+ "default": false
3488
+ }
3489
+ },
3490
+ "required": ["query"],
3491
+ "additionalProperties": false,
3492
+ "x-runtime-refinement": true
3493
+ }
3494
+ },
3495
+ {
3496
+ "platform": "rumble",
3497
+ "action": "search",
3498
+ "operation": "rumbleSearch",
3499
+ "method": "GET",
3500
+ "path": "/v1/rumble/search",
3501
+ "description": "Read one page of the public Videos search tab by keyword. Channels, playlists, dedicated Shorts and live-search tabs are not queried. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed on 2026-09-12 with the headed browser routed through the shared US residential proxy (image 2026-09-12-all-r2); Cloudflare challenges the deployment host's own address on about one read in three",
3502
+ "inputSchema": {
3503
+ "type": "object",
3504
+ "properties": {
3505
+ "query": {
3506
+ "type": "string",
3507
+ "minLength": 1,
3508
+ "maxLength": 200,
3509
+ "description": "Required trimmed keyword query, 1–200 characters."
3510
+ },
3511
+ "cursor": {
3512
+ "type": "string",
3513
+ "pattern": "^[1-9][0-9]{0,2}$",
3514
+ "description": "Optional next page number, or null. Input is a decimal integer from 1 through 999; one page per request."
3515
+ }
3516
+ },
3517
+ "required": ["query"],
3518
+ "additionalProperties": false
3519
+ }
3520
+ },
3521
+ {
3522
+ "platform": "rumble",
3523
+ "action": "channel-videos",
3524
+ "operation": "rumbleChannelVideos",
3525
+ "method": "GET",
3526
+ "path": "/v1/rumble/channel-videos",
3527
+ "description": "Read embedded video grids from a public channel or user page. Featured cards and separately loaded Shorts shelves are omitted with explicit partial coverage. No scripts or media are downloaded. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed on 2026-09-12 with the headed browser routed through the shared US residential proxy (image 2026-09-12-all-r2); Cloudflare challenges the deployment host's own address on about one read in three",
3528
+ "inputSchema": {
3529
+ "type": "object",
3530
+ "properties": {
3531
+ "url": {
3532
+ "type": "string",
3533
+ "maxLength": 300,
3534
+ "pattern": "^https:\\/\\/(?:www\\.)?rumble\\.com\\/(?:c|user)\\/[A-Za-z0-9_-]{1,100}\\/?$",
3535
+ "description": "Required HTTPS rumble.com/c/<handle> or /user/<handle> URL. www and a trailing slash are accepted; no credentials, port, query or fragment."
3536
+ },
3537
+ "cursor": {
3538
+ "type": "string",
3539
+ "pattern": "^[1-9][0-9]{0,2}$",
3540
+ "description": "Optional next page number, or null. Input is a decimal integer from 1 through 999; one page per request."
3541
+ }
3542
+ },
3543
+ "required": ["url"],
3544
+ "additionalProperties": false
3545
+ }
3546
+ },
3547
+ {
3548
+ "platform": "skool",
3549
+ "action": "community",
3550
+ "operation": "skoolCommunity",
3551
+ "method": "GET",
3552
+ "path": "/v1/skool/community",
3553
+ "description": "Public about-page metadata, member/post/course counts, landing-page copy, displayed pricing and owner summary. Public about pages of private communities are supported; interior content is not. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
3554
+ "inputSchema": {
3555
+ "type": "object",
3556
+ "properties": {
3557
+ "group": {
3558
+ "type": "string",
3559
+ "pattern": "^[a-z0-9][a-z0-9-]{0,119}$",
3560
+ "x-runtime-refinement": true,
3561
+ "description": "Canonical community slug, e.g. ai-automation-society. No URL, credentials, slash, query or fragment."
3562
+ }
3563
+ },
3564
+ "required": ["group"],
3565
+ "additionalProperties": false
3566
+ }
3567
+ },
3568
+ {
3569
+ "platform": "skool",
3570
+ "action": "discovery",
3571
+ "operation": "skoolDiscovery",
3572
+ "method": "GET",
3573
+ "path": "/v1/skool/discovery",
3574
+ "description": "Search by keyword, filter by the category ID returned by categories, or omit both to browse ranked communities. One source page per request; use nextPage when supplied. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
3575
+ "inputSchema": {
3576
+ "type": "object",
3577
+ "properties": {
3578
+ "query": {
3579
+ "type": "string",
3580
+ "minLength": 1,
3581
+ "maxLength": 200,
3582
+ "description": "Optional keyword, 1–200 characters."
3583
+ },
3584
+ "category": {
3585
+ "type": "string",
3586
+ "pattern": "^[A-Za-z0-9_-]{1,80}$",
3587
+ "description": "Optional discovery category id returned by categories, not its name or slug."
3588
+ },
3589
+ "page": {
3590
+ "type": "string",
3591
+ "pattern": "^[1-9]\\d{0,3}$",
3592
+ "default": "1",
3593
+ "description": "Numbered source page, 1–9999; default 1. No automatic crawling."
3594
+ }
3595
+ },
3596
+ "required": [],
3597
+ "additionalProperties": false
3598
+ }
3599
+ },
3600
+ {
3601
+ "platform": "skool",
3602
+ "action": "categories",
3603
+ "operation": "skoolCategories",
3604
+ "method": "GET",
3605
+ "path": "/v1/skool/categories",
3606
+ "description": "Return the discovery category IDs, names and slugs. Pass the id, not the slug, to the discovery category parameter. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
3607
+ "inputSchema": {
3608
+ "type": "object",
3609
+ "properties": {},
3610
+ "required": [],
3611
+ "additionalProperties": false
3612
+ }
3613
+ },
3614
+ {
3615
+ "platform": "skool",
3616
+ "action": "profile",
3617
+ "operation": "skoolProfile",
3618
+ "method": "GET",
3619
+ "path": "/v1/skool/profile",
3620
+ "description": "Read a public profile by its @handle without the @ prefix: names, bio, location, images, social links and published profile counters. Email and presence timestamps are excluded. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
3621
+ "inputSchema": {
3622
+ "type": "object",
3623
+ "properties": {
3624
+ "handle": {
3625
+ "type": "string",
3626
+ "pattern": "^[a-z0-9][a-z0-9-]{0,119}$",
3627
+ "x-runtime-refinement": true,
3628
+ "description": "Public profile handle without @, from skool.com/@handle."
3629
+ }
3630
+ },
3631
+ "required": ["handle"],
3632
+ "additionalProperties": false
3633
+ }
3634
+ },
3635
+ {
3636
+ "platform": "skool",
3637
+ "action": "user-groups",
3638
+ "operation": "skoolUserGroups",
3639
+ "method": "GET",
3640
+ "path": "/v1/skool/user/groups",
3641
+ "description": "Return the public groups embedded in a profile, separated into memberships and created communities. This is a preview, not a complete membership export. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
3642
+ "inputSchema": {
3643
+ "type": "object",
3644
+ "properties": {
3645
+ "handle": {
3646
+ "type": "string",
3647
+ "pattern": "^[a-z0-9][a-z0-9-]{0,119}$",
3648
+ "x-runtime-refinement": true,
3649
+ "description": "Public profile handle without @, from skool.com/@handle."
3650
+ }
3651
+ },
3652
+ "required": ["handle"],
3653
+ "additionalProperties": false
3654
+ }
3655
+ },
3656
+ {
3657
+ "platform": "skool",
3658
+ "action": "posts",
3659
+ "operation": "skoolPosts",
3660
+ "method": "GET",
3661
+ "path": "/v1/skool/posts",
3662
+ "description": "Read a numbered page of public posts with text, authors, counts and image previews. Typically 30 posts plus pinned entries. Pinned posts may repeat; deduplicate by id. Page 2 was live-validated. hasMore and nextPage are null because the feed does not publish an unambiguous continuation flag. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
3663
+ "inputSchema": {
3664
+ "type": "object",
3665
+ "properties": {
3666
+ "group": {
3667
+ "type": "string",
3668
+ "pattern": "^[a-z0-9][a-z0-9-]{0,119}$",
3669
+ "x-runtime-refinement": true,
3670
+ "description": "Canonical community slug, e.g. ai-automation-society. No URL, credentials, slash, query or fragment."
3671
+ },
3672
+ "page": {
3673
+ "type": "string",
3674
+ "pattern": "^[1-9]\\d{0,3}$",
3675
+ "default": "1",
3676
+ "description": "Numbered source page, 1–9999; default 1. No automatic crawling."
3677
+ }
3678
+ },
3679
+ "required": ["group"],
3680
+ "additionalProperties": false
3681
+ }
3682
+ },
3683
+ {
3684
+ "platform": "skool",
3685
+ "action": "post",
3686
+ "operation": "skoolPost",
3687
+ "method": "GET",
3688
+ "path": "/v1/skool/post",
3689
+ "description": "Get a public post by group and post slug (from posts[].name), with only comments embedded in the logged-out page. Comments can be empty while the source comment counter is positive. No comment pagination or complete thread claim. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
3690
+ "inputSchema": {
3691
+ "type": "object",
3692
+ "properties": {
3693
+ "group": {
3694
+ "type": "string",
3695
+ "pattern": "^[a-z0-9][a-z0-9-]{0,119}$",
3696
+ "x-runtime-refinement": true,
3697
+ "description": "Canonical community slug, e.g. ai-automation-society. No URL, credentials, slash, query or fragment."
3698
+ },
3699
+ "slug": {
3700
+ "type": "string",
3701
+ "pattern": "^[a-z0-9][a-z0-9-]{0,119}$",
3702
+ "x-runtime-refinement": true,
3703
+ "description": "Post URL slug from posts[].name; not the internal post id."
3704
+ }
3705
+ },
3706
+ "required": ["group", "slug"],
3707
+ "additionalProperties": false
3708
+ }
3709
+ },
3710
+ {
3711
+ "platform": "skool",
3712
+ "action": "courses",
3713
+ "operation": "skoolCourses",
3714
+ "method": "GET",
3715
+ "path": "/v1/skool/courses",
3716
+ "description": "Read classroom catalog entries, titles, descriptions, covers, module counts and access flags. Locked course summaries may be visible. Lessons, modules, videos and downloads are not retrieved; a tested course-detail URL redirected. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
3717
+ "inputSchema": {
3718
+ "type": "object",
3719
+ "properties": {
3720
+ "group": {
3721
+ "type": "string",
3722
+ "pattern": "^[a-z0-9][a-z0-9-]{0,119}$",
3723
+ "x-runtime-refinement": true,
3724
+ "description": "Canonical community slug, e.g. ai-automation-society. No URL, credentials, slash, query or fragment."
3725
+ }
3726
+ },
3727
+ "required": ["group"],
3728
+ "additionalProperties": false
3729
+ }
3730
+ },
3731
+ {
3732
+ "platform": "skool",
3733
+ "action": "calendar",
3734
+ "operation": "skoolCalendar",
3735
+ "method": "GET",
3736
+ "path": "/v1/skool/calendar",
3737
+ "description": "Read the default calendar window supplied by the public page, with event names, descriptions, dates, timezone and access flags. No arbitrary date-range input or full-history claim. Event location is omitted unless hasAccess is 1. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
3738
+ "inputSchema": {
3739
+ "type": "object",
3740
+ "properties": {
3741
+ "group": {
3742
+ "type": "string",
3743
+ "pattern": "^[a-z0-9][a-z0-9-]{0,119}$",
3744
+ "x-runtime-refinement": true,
3745
+ "description": "Canonical community slug, e.g. ai-automation-society. No URL, credentials, slash, query or fragment."
3746
+ }
3747
+ },
3748
+ "required": ["group"],
3749
+ "additionalProperties": false
3750
+ }
3751
+ },
3752
+ {
3753
+ "platform": "skool",
3754
+ "action": "members",
3755
+ "operation": "skoolMembers",
3756
+ "method": "GET",
3757
+ "path": "/v1/skool/members",
3758
+ "description": "Read a numbered page of public community members with profiles and social links. Typically 30 records. Use nextPage for continuation; counts can change between requests. Private-community rosters are unavailable. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
3759
+ "inputSchema": {
3760
+ "type": "object",
3761
+ "properties": {
3762
+ "group": {
3763
+ "type": "string",
3764
+ "pattern": "^[a-z0-9][a-z0-9-]{0,119}$",
3765
+ "x-runtime-refinement": true,
3766
+ "description": "Canonical community slug, e.g. ai-automation-society. No URL, credentials, slash, query or fragment."
3767
+ },
3768
+ "page": {
3769
+ "type": "string",
3770
+ "pattern": "^[1-9]\\d{0,3}$",
3771
+ "default": "1",
3772
+ "description": "Numbered source page, 1–9999; default 1. No automatic crawling."
3773
+ }
3774
+ },
3775
+ "required": ["group"],
3776
+ "additionalProperties": false
3777
+ }
3778
+ },
3779
+ {
3780
+ "platform": "skool",
3781
+ "action": "leaderboards",
3782
+ "operation": "skoolLeaderboards",
3783
+ "method": "GET",
3784
+ "path": "/v1/skool/leaderboards",
3785
+ "description": "Read the published all-time, past-7-day and past-30-day top-member boards with rank, points and public profiles. Typically ten members per board; no full ranking enumeration. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
3786
+ "inputSchema": {
3787
+ "type": "object",
3788
+ "properties": {
3789
+ "group": {
3790
+ "type": "string",
3791
+ "pattern": "^[a-z0-9][a-z0-9-]{0,119}$",
3792
+ "x-runtime-refinement": true,
3793
+ "description": "Canonical community slug, e.g. ai-automation-society. No URL, credentials, slash, query or fragment."
3794
+ }
3795
+ },
3796
+ "required": ["group"],
3797
+ "additionalProperties": false
3798
+ }
3799
+ },
3800
+ {
3801
+ "platform": "telegram",
3802
+ "action": "channel",
3803
+ "operation": "telegramChannel",
3804
+ "method": "GET",
3805
+ "path": "/v1/telegram/channel",
3806
+ "description": "Read public Telegram channel/group metadata. The channel and profile routes are equivalent. Only the public landing page is read; no media inventory counters or posts. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
3807
+ "inputSchema": {
3808
+ "type": "object",
3809
+ "properties": {
3810
+ "handle": {
3811
+ "type": "string",
3812
+ "maxLength": 128,
3813
+ "x-runtime-refinement": true,
3814
+ "description": "Required public handle, @handle or exact HTTPS t.me/handle URL. No invite links, query strings or post URLs."
3815
+ }
3816
+ },
3817
+ "required": ["handle"],
3818
+ "additionalProperties": false
3819
+ }
3820
+ },
3821
+ {
3822
+ "platform": "telegram",
3823
+ "action": "profile",
3824
+ "operation": "telegramProfile",
3825
+ "method": "GET",
3826
+ "path": "/v1/telegram/profile",
3827
+ "description": "Read public Telegram channel/group metadata. The channel and profile routes are equivalent. Only the public landing page is read; no media inventory counters or posts. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
3828
+ "inputSchema": {
3829
+ "type": "object",
3830
+ "properties": {
3831
+ "handle": {
3832
+ "type": "string",
3833
+ "maxLength": 128,
3834
+ "x-runtime-refinement": true,
3835
+ "description": "Required public handle, @handle or exact HTTPS t.me/handle URL. No invite links, query strings or post URLs."
3836
+ }
3837
+ },
3838
+ "required": ["handle"],
3839
+ "additionalProperties": false
3840
+ }
3841
+ },
3842
+ {
3843
+ "platform": "tiktok-shop",
3844
+ "action": "product",
3845
+ "operation": "tiktokShopProduct",
3846
+ "method": "GET",
3847
+ "path": "/v1/tiktok/product",
3848
+ "description": "Read a public product page and its detail feed: identity, categories, seller summary, title, gallery, description blocks, specifications, sold count, unmasked sale and list prices, sale properties, every SKU with stock, price and package, the selected delivery option, rating and review counts, the embedded reviews with the rating histogram, the shop summary, availability and the seller's business compliance line. Section names follow ScrapeCreators' /v1/tiktok/product where the storefront publishes the same data. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live private service · host acceptance 8/8 on 2026-09-12 through the shared US residential proxy (image 2026-09-12-all-r8); the residential gateway hangs or refuses up to half of new tunnels from the host, so reads retry the tunnel on the same session and take 3–27 s",
3849
+ "inputSchema": {
3850
+ "type": "object",
3851
+ "properties": {
3852
+ "product_id": {
3853
+ "type": "string",
3854
+ "pattern": "^[1-9][0-9]{14,21}$",
3855
+ "description": "TikTok Shop product ID (15-22 digits); provide either product_id or url."
3856
+ },
3857
+ "url": {
3858
+ "type": "string",
3859
+ "maxLength": 2048,
3860
+ "x-runtime-refinement": true,
3861
+ "description": "Public product URL: https://www.tiktok.com/shop/pdp/{slug}/{id}, https://www.tiktok.com/shop/pdp/{id}, https://shop.tiktok.com/us/pdp/{slug}/{id} or https://www.tiktok.com/view/product/{id}."
3862
+ },
3863
+ "region": {
3864
+ "type": "string",
3865
+ "enum": ["US"],
3866
+ "default": "US",
3867
+ "description": "Storefront region; only US is served (default US). Other regions are rejected."
3868
+ }
3869
+ },
3870
+ "required": [],
3871
+ "additionalProperties": false,
3872
+ "x-runtime-refinement": true
3873
+ }
3874
+ },
3875
+ {
3876
+ "platform": "tiktok-shop",
3877
+ "action": "shop-products",
3878
+ "operation": "tiktokShopShopProducts",
3879
+ "method": "GET",
3880
+ "path": "/v1/tiktok/shop/products",
3881
+ "description": "Read one page of a store's public product grid: the shop summary and twenty product cards in the storefront's order, continued with the caller-carried cursor. Mirrors ScrapeCreators' /v1/tiktok/shop/products (shopInfo, products, has_more, cursor). Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live private service · host acceptance 8/8 on 2026-09-12 through the shared US residential proxy (image 2026-09-12-all-r8); the residential gateway hangs or refuses up to half of new tunnels from the host, so reads retry the tunnel on the same session and take 3–27 s",
3882
+ "inputSchema": {
3883
+ "type": "object",
3884
+ "properties": {
3885
+ "seller_id": {
3886
+ "type": "string",
3887
+ "pattern": "^[1-9][0-9]{14,21}$",
3888
+ "description": "Store (seller) ID; provide either seller_id or url."
3889
+ },
3890
+ "url": {
3891
+ "type": "string",
3892
+ "maxLength": 2048,
3893
+ "x-runtime-refinement": true,
3894
+ "description": "Public store URL: https://www.tiktok.com/shop/store/{slug}/{seller_id} or https://shop.tiktok.com/us/store/{slug}/{seller_id}."
3895
+ },
3896
+ "cursor": {
3897
+ "type": "string",
3898
+ "pattern": "^[0-9]{1,6}_[A-Za-z0-9+/=]{1,400}$",
3899
+ "description": "Opaque continuation token from a previous response; omit for the first page."
3900
+ },
3901
+ "sort_by": {
3902
+ "type": "string",
3903
+ "enum": ["top"],
3904
+ "default": "top",
3905
+ "description": "Only top (the storefront's single ordering) is offered; new_releases is rejected because the public storefront has no such sort."
3906
+ },
3907
+ "region": {
3908
+ "type": "string",
3909
+ "enum": ["US"],
3910
+ "default": "US",
3911
+ "description": "Storefront region; only US is served (default US). Other regions are rejected."
3912
+ }
3913
+ },
3914
+ "required": [],
3915
+ "additionalProperties": false,
3916
+ "x-runtime-refinement": true
3917
+ }
3918
+ },
3919
+ {
3920
+ "platform": "tiktok-shop",
3921
+ "action": "shop-search",
3922
+ "operation": "tiktokShopShopSearch",
3923
+ "method": "GET",
3924
+ "path": "/v1/tiktok/shop/search",
3925
+ "description": "Read one page of the storefront's keyword feed: twenty product cards and the matching shops, continued with the caller-carried cursor. ScrapeCreators' /v1/tiktok/shop/search reads the app's search instead (page numbers, video-backed cards and a total); the card fields shared with it carry the same names. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live private service · host acceptance 8/8 on 2026-09-12 through the shared US residential proxy (image 2026-09-12-all-r8); the residential gateway hangs or refuses up to half of new tunnels from the host, so reads retry the tunnel on the same session and take 3–27 s",
3926
+ "inputSchema": {
3927
+ "type": "object",
3928
+ "properties": {
3929
+ "query": {
3930
+ "type": "string",
3931
+ "minLength": 1,
3932
+ "maxLength": 200,
3933
+ "pattern": "^[^\\p{Cc}]+$",
3934
+ "description": "Search term (1-200 characters)."
3935
+ },
3936
+ "cursor": {
3937
+ "type": "string",
3938
+ "pattern": "^[A-Za-z0-9_-]{1,600}$",
3939
+ "description": "Opaque continuation token from a previous response; omit for the first page."
3940
+ },
3941
+ "region": {
3942
+ "type": "string",
3943
+ "enum": ["US"],
3944
+ "default": "US",
3945
+ "description": "Storefront region; only US is served (default US). Other regions are rejected."
3946
+ }
3947
+ },
3948
+ "required": ["query"],
3949
+ "additionalProperties": false
3950
+ }
3951
+ },
3952
+ {
3953
+ "platform": "tiktok-shop",
3954
+ "action": "product-reviews",
3955
+ "operation": "tiktokShopProductReviews",
3956
+ "method": "GET",
3957
+ "path": "/v1/tiktok/shop/product/reviews",
3958
+ "description": "Read the reviews block embedded in a public product page: the first reviews (the storefront embeds up to a handful), the total, whether more exist and the rating histogram. Matches ScrapeCreators' /v1/tiktok/shop/product/reviews fields; paging further needs a TikTok login, so has_more true is reported with review_pagination_unavailable rather than a cursor. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live private service · host acceptance 8/8 on 2026-09-12 through the shared US residential proxy (image 2026-09-12-all-r8); the residential gateway hangs or refuses up to half of new tunnels from the host, so reads retry the tunnel on the same session and take 3–27 s",
3959
+ "inputSchema": {
3960
+ "type": "object",
3961
+ "properties": {
3962
+ "product_id": {
3963
+ "type": "string",
3964
+ "pattern": "^[1-9][0-9]{14,21}$",
3965
+ "description": "TikTok Shop product ID; provide either product_id or url."
3966
+ },
3967
+ "url": {
3968
+ "type": "string",
3969
+ "maxLength": 2048,
3970
+ "x-runtime-refinement": true,
3971
+ "description": "Public product URL (same forms as the product endpoint)."
3972
+ },
3973
+ "region": {
3974
+ "type": "string",
3975
+ "enum": ["US"],
3976
+ "default": "US",
3977
+ "description": "Storefront region; only US is served (default US). Other regions are rejected."
3978
+ }
3979
+ },
3980
+ "required": [],
3981
+ "additionalProperties": false,
3982
+ "x-runtime-refinement": true
3983
+ }
3984
+ },
3985
+ {
3986
+ "platform": "truthsocial",
3987
+ "action": "profile",
3988
+ "operation": "truthsocialProfile",
3989
+ "method": "GET",
3990
+ "path": "/v1/truthsocial/profile",
3991
+ "description": "Retrieve a public Truth Social account by username. The complete source account record is returned unchanged: ID, names, bio, images, follower/following/post counts, verification and every other published field, in source order. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed on 2026-09-12 with the headed browser routed through the shared US residential proxy (image 2026-09-12-all-r5); Cloudflare challenges the deployment host's own address",
3992
+ "inputSchema": {
3993
+ "type": "object",
3994
+ "properties": {
3995
+ "handle": {
3996
+ "type": "string",
3997
+ "maxLength": 65,
3998
+ "pattern": "^@?[A-Za-z0-9_]{1,64}$",
3999
+ "description": "Required username with or without a leading @ (letters, digits and underscores). The lookup is case-insensitive; the returned username must match the request."
4000
+ }
4001
+ },
4002
+ "required": ["handle"],
4003
+ "additionalProperties": false
4004
+ }
4005
+ },
4006
+ {
4007
+ "platform": "truthsocial",
4008
+ "action": "posts",
4009
+ "operation": "truthsocialPosts",
4010
+ "method": "GET",
4011
+ "path": "/v1/truthsocial/user/posts",
4012
+ "description": "Retrieve one timeline page of up to 20 public posts, excluding replies, newest first. Provide exactly one of handle or user_id; user_id skips the lookup read. Pass the returned next_max_id unchanged to read the next page. Each post is the complete source record with a derived text field; trim=true selects the compact record set. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed on 2026-09-12 with the headed browser routed through the shared US residential proxy (image 2026-09-12-all-r5); Cloudflare challenges the deployment host's own address",
4013
+ "inputSchema": {
4014
+ "type": "object",
4015
+ "properties": {
4016
+ "handle": {
4017
+ "type": "string",
4018
+ "maxLength": 65,
4019
+ "pattern": "^@?[A-Za-z0-9_]{1,64}$",
4020
+ "description": "Public username; mutually exclusive with user_id. Costs one extra upstream read to resolve the account ID."
4021
+ },
4022
+ "user_id": {
4023
+ "type": "string",
4024
+ "pattern": "^[1-9][0-9]{0,19}$",
4025
+ "description": "Account ID string from the profile endpoint; mutually exclusive with handle."
4026
+ },
4027
+ "next_max_id": {
4028
+ "type": "string",
4029
+ "pattern": "^[1-9][0-9]{0,19}$",
4030
+ "description": "Request: cursor from the previous page; returned posts are strictly older than it. Response: ID of the last returned post, or null for an empty page. It is not proof that another page exists."
4031
+ },
4032
+ "trim": {
4033
+ "type": "string",
4034
+ "enum": ["true", "false"],
4035
+ "description": "Optional true or false (default false). True returns only id, text, created_at, language, url, replies_count, reblogs_count, favourites_count, upvotes_count, downvotes_count and media_attachments per post."
4036
+ }
4037
+ },
4038
+ "required": [],
4039
+ "additionalProperties": false,
4040
+ "x-runtime-refinement": true
4041
+ }
4042
+ },
4043
+ {
4044
+ "platform": "truthsocial",
4045
+ "action": "post",
4046
+ "operation": "truthsocialPost",
4047
+ "method": "GET",
4048
+ "path": "/v1/truthsocial/post",
4049
+ "description": "Retrieve one public post from its URL. The complete source record is returned unchanged with a derived text field; the post ID and author must match the URL. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed on 2026-09-12 with the headed browser routed through the shared US residential proxy (image 2026-09-12-all-r5); Cloudflare challenges the deployment host's own address",
4050
+ "inputSchema": {
4051
+ "type": "object",
4052
+ "properties": {
4053
+ "url": {
4054
+ "type": "string",
4055
+ "maxLength": 2048,
4056
+ "x-runtime-refinement": true,
4057
+ "description": "Required HTTPS post URL: https://truthsocial.com/@user/posts/ID, https://truthsocial.com/@user/ID or https://truthsocial.com/users/user/statuses/ID. Query strings and fragments are ignored. Media download options are not supported."
4058
+ }
4059
+ },
4060
+ "required": ["url"],
4061
+ "additionalProperties": false
4062
+ }
4063
+ },
4064
+ {
4065
+ "platform": "twitch",
4066
+ "action": "profile",
4067
+ "operation": "twitchProfile",
4068
+ "method": "GET",
4069
+ "path": "/v1/twitch/profile",
4070
+ "description": "Retrieve profile identity, biography, social links, followers, partner status, current stream, videos, home-page video shelves and similar streamers. Social names become lowercase top-level keys. Twitch integrity-gates the social-links selection for data-center addresses, so it is requested separately and tunnels through the worker's optional residential proxy; every other field is read directly. If the challenge still occurs, the worker returns HTTP 502 / upstream_challenged without a reduced profile. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service",
4071
+ "inputSchema": {
4072
+ "type": "object",
4073
+ "properties": {
4074
+ "handle": {
4075
+ "type": "string",
4076
+ "pattern": "^[a-zA-Z0-9_]{1,25}$",
4077
+ "x-runtime-refinement": true,
4078
+ "description": "Required Twitch login, 1–25 letters, digits or underscores. Normalized to lowercase."
4079
+ }
4080
+ },
4081
+ "required": ["handle"],
4082
+ "additionalProperties": false
4083
+ }
4084
+ },
4085
+ {
4086
+ "platform": "twitch",
4087
+ "action": "videos",
4088
+ "operation": "twitchVideos",
4089
+ "method": "GET",
4090
+ "path": "/v1/twitch/user/videos",
4091
+ "description": "Retrieve the first page of up to 100 videos, with optional type and sort filters. Source hasNextPage and cursor metadata are returned for compatibility; continuation requests are not supported because the logged-out source rejects them with an integrity challenge. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service",
4092
+ "inputSchema": {
4093
+ "type": "object",
4094
+ "properties": {
4095
+ "handle": {
4096
+ "type": "string",
4097
+ "pattern": "^[a-zA-Z0-9_]{1,25}$",
4098
+ "x-runtime-refinement": true,
4099
+ "description": "Required Twitch login, 1–25 letters, digits or underscores. Normalized to lowercase."
4100
+ },
4101
+ "filter_by": {
4102
+ "type": "string",
4103
+ "enum": ["HIGHLIGHT", "ARCHIVE", "UPLOAD"],
4104
+ "description": "Optional HIGHLIGHT, ARCHIVE or UPLOAD. Omit to include all source video types."
4105
+ },
4106
+ "sort_by": {
4107
+ "type": "string",
4108
+ "enum": ["TIME", "VIEWS"],
4109
+ "default": "TIME",
4110
+ "description": "TIME (default) or VIEWS."
4111
+ }
4112
+ },
4113
+ "required": ["handle"],
4114
+ "additionalProperties": false
4115
+ }
4116
+ },
4117
+ {
4118
+ "platform": "twitch",
4119
+ "action": "schedule",
4120
+ "operation": "twitchSchedule",
4121
+ "method": "GET",
4122
+ "path": "/v1/twitch/user/schedule",
4123
+ "description": "Retrieve the current calendar week, Monday 00:00 UTC through the next Monday. Includes schedule segments, cancellation metadata, interruption, next segment, current stream and this week’s recent broadcasts. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service",
4124
+ "inputSchema": {
4125
+ "type": "object",
4126
+ "properties": {
4127
+ "handle": {
4128
+ "type": "string",
4129
+ "pattern": "^[a-zA-Z0-9_]{1,25}$",
4130
+ "x-runtime-refinement": true,
4131
+ "description": "Required Twitch login, 1–25 letters, digits or underscores. Normalized to lowercase."
4132
+ }
4133
+ },
4134
+ "required": ["handle"],
4135
+ "additionalProperties": false
4136
+ }
4137
+ },
4138
+ {
4139
+ "platform": "twitch",
4140
+ "action": "clip",
4141
+ "operation": "twitchClip",
4142
+ "method": "GET",
4143
+ "path": "/v1/twitch/clip",
4144
+ "description": "Retrieve the complete public clip and playback metadata. Numeric keys preserve the reference API’s GraphQL batch response: 0 is the clip, 1 related clips, and 2 logged-out viewer data. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service",
4145
+ "inputSchema": {
4146
+ "type": "object",
4147
+ "properties": {
4148
+ "url": {
4149
+ "type": "string",
4150
+ "maxLength": 2048,
4151
+ "x-runtime-refinement": true,
4152
+ "description": "Required HTTPS clips.twitch.tv/<slug> or twitch.tv/<channel>/clip/<slug>. Tracking queries/fragments are removed; credentials, ports and embedded URLs are rejected."
4153
+ }
4154
+ },
4155
+ "required": ["url"],
4156
+ "additionalProperties": false
4157
+ }
4158
+ },
4159
+ {
4160
+ "platform": "usage",
4161
+ "action": "account-usage",
4162
+ "operation": "accountUsage",
4163
+ "method": "GET",
4164
+ "path": "/v1/usage",
4165
+ "description": "Return daily UTC request and error totals by platform for the authenticated account. Accepts a customer API key; the first-party dashboard can instead use a Supabase access token. Tenant identifiers are never accepted. days defaults to 30 and ranges from 1 to 30, including today. No pagination; at most 2048 day/platform groups. Best-effort events can be delayed or lost, so coverage is always partial and counts are not billing records. This account operation costs 0 credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Implemented; Tinybird rollout pending",
4166
+ "inputSchema": {
4167
+ "type": "object",
4168
+ "properties": {
4169
+ "days": {
4170
+ "type": "integer",
4171
+ "minimum": 1,
4172
+ "maximum": 30,
4173
+ "default": 30,
4174
+ "description": "Number of UTC calendar days including today, 1–30."
4175
+ }
4176
+ },
4177
+ "required": [],
4178
+ "additionalProperties": false
4179
+ }
4180
+ },
4181
+ {
4182
+ "platform": "whatnot",
4183
+ "action": "profile",
4184
+ "operation": "whatnotProfile",
4185
+ "method": "GET",
4186
+ "path": "/v1/whatnot/profile",
4187
+ "description": "Read a public seller profile: identity, bio, images, follower/sold counts, average ship days, rating and review count, verified/live/premier flags and the current live show. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
4188
+ "inputSchema": {
4189
+ "type": "object",
4190
+ "properties": {
4191
+ "handle": {
4192
+ "type": "string",
4193
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$",
4194
+ "description": "Whatnot username. Exactly one of handle, user_id or url."
4195
+ },
4196
+ "user_id": {
4197
+ "type": "string",
4198
+ "pattern": "^\\d{1,12}$",
4199
+ "description": "Numeric Whatnot user id (the decoded PublicUserNode id)."
4200
+ },
4201
+ "url": {
4202
+ "type": "string",
4203
+ "minLength": 1,
4204
+ "maxLength": 2048,
4205
+ "x-runtime-refinement": true,
4206
+ "description": "Public profile URL https://www.whatnot.com/user/{handle}."
4207
+ }
4208
+ },
4209
+ "required": [],
4210
+ "additionalProperties": false,
4211
+ "x-runtime-refinement": true
4212
+ }
4213
+ },
4214
+ {
4215
+ "platform": "whatnot",
4216
+ "action": "user-shows",
4217
+ "operation": "whatnotUserShows",
4218
+ "method": "GET",
4219
+ "path": "/v1/whatnot/user/shows",
4220
+ "description": "List a seller's livestreams (scheduled, live and past) newest first, 24 per page. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
4221
+ "inputSchema": {
4222
+ "type": "object",
4223
+ "properties": {
4224
+ "handle": {
4225
+ "type": "string",
4226
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$",
4227
+ "description": "Whatnot username. Exactly one of handle, user_id or url."
4228
+ },
4229
+ "user_id": {
4230
+ "type": "string",
4231
+ "pattern": "^\\d{1,12}$",
4232
+ "description": "Numeric Whatnot user id (the decoded PublicUserNode id)."
4233
+ },
4234
+ "url": {
4235
+ "type": "string",
4236
+ "minLength": 1,
4237
+ "maxLength": 2048,
4238
+ "x-runtime-refinement": true,
4239
+ "description": "Public profile URL https://www.whatnot.com/user/{handle}."
4240
+ },
4241
+ "cursor": {
4242
+ "type": "string",
4243
+ "pattern": "^[A-Za-z0-9+/=_-]{1,256}$",
4244
+ "description": "pagination.cursor from the previous response to continue."
4245
+ }
4246
+ },
4247
+ "required": [],
4248
+ "additionalProperties": false,
4249
+ "x-runtime-refinement": true
4250
+ }
4251
+ },
4252
+ {
4253
+ "platform": "whatnot",
4254
+ "action": "user-reviews",
4255
+ "operation": "whatnotUserReviews",
4256
+ "method": "GET",
4257
+ "path": "/v1/whatnot/user/reviews",
4258
+ "description": "List buyer reviews of a seller with the overall, shipping, packaging and accuracy ratings, 24 per page. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
4259
+ "inputSchema": {
4260
+ "type": "object",
4261
+ "properties": {
4262
+ "handle": {
4263
+ "type": "string",
4264
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$",
4265
+ "description": "Whatnot username. Exactly one of handle, user_id or url."
4266
+ },
4267
+ "user_id": {
4268
+ "type": "string",
4269
+ "pattern": "^\\d{1,12}$",
4270
+ "description": "Numeric Whatnot user id (the decoded PublicUserNode id)."
4271
+ },
4272
+ "url": {
4273
+ "type": "string",
4274
+ "minLength": 1,
4275
+ "maxLength": 2048,
4276
+ "x-runtime-refinement": true,
4277
+ "description": "Public profile URL https://www.whatnot.com/user/{handle}."
4278
+ },
4279
+ "cursor": {
4280
+ "type": "string",
4281
+ "pattern": "^[A-Za-z0-9+/=_-]{1,256}$",
4282
+ "description": "pagination.cursor from the previous response to continue."
4283
+ }
4284
+ },
4285
+ "required": [],
4286
+ "additionalProperties": false,
4287
+ "x-runtime-refinement": true
4288
+ }
4289
+ },
4290
+ {
4291
+ "platform": "whatnot",
4292
+ "action": "user-listings",
4293
+ "operation": "whatnotUserListings",
4294
+ "method": "GET",
4295
+ "path": "/v1/whatnot/user/listings",
4296
+ "description": "List a seller's shop (buy-it-now and auction listings), optionally filtered by a search query, 24 per page. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
4297
+ "inputSchema": {
4298
+ "type": "object",
4299
+ "properties": {
4300
+ "handle": {
4301
+ "type": "string",
4302
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$",
4303
+ "description": "Whatnot username. Exactly one of handle, user_id or url."
4304
+ },
4305
+ "user_id": {
4306
+ "type": "string",
4307
+ "pattern": "^\\d{1,12}$",
4308
+ "description": "Numeric Whatnot user id (the decoded PublicUserNode id)."
4309
+ },
4310
+ "url": {
4311
+ "type": "string",
4312
+ "minLength": 1,
4313
+ "maxLength": 2048,
4314
+ "x-runtime-refinement": true,
4315
+ "description": "Public profile URL https://www.whatnot.com/user/{handle}."
4316
+ },
4317
+ "query": {
4318
+ "type": "string",
4319
+ "maxLength": 200,
4320
+ "description": "Optional search within the shop."
4321
+ },
4322
+ "cursor": {
4323
+ "type": "string",
4324
+ "pattern": "^[A-Za-z0-9+/=_-]{1,256}$",
4325
+ "description": "pagination.cursor from the previous response to continue."
4326
+ }
4327
+ },
4328
+ "required": [],
4329
+ "additionalProperties": false,
4330
+ "x-runtime-refinement": true
4331
+ }
4332
+ },
4333
+ {
4334
+ "platform": "whatnot",
4335
+ "action": "user-clips",
4336
+ "operation": "whatnotUserClips",
4337
+ "method": "GET",
4338
+ "path": "/v1/whatnot/user/clips",
4339
+ "description": "List published clips from a seller's shows, 24 per page. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
4340
+ "inputSchema": {
4341
+ "type": "object",
4342
+ "properties": {
4343
+ "handle": {
4344
+ "type": "string",
4345
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$",
4346
+ "description": "Whatnot username. Exactly one of handle, user_id or url."
4347
+ },
4348
+ "user_id": {
4349
+ "type": "string",
4350
+ "pattern": "^\\d{1,12}$",
4351
+ "description": "Numeric Whatnot user id (the decoded PublicUserNode id)."
4352
+ },
4353
+ "url": {
4354
+ "type": "string",
4355
+ "minLength": 1,
4356
+ "maxLength": 2048,
4357
+ "x-runtime-refinement": true,
4358
+ "description": "Public profile URL https://www.whatnot.com/user/{handle}."
4359
+ },
4360
+ "cursor": {
4361
+ "type": "string",
4362
+ "pattern": "^[A-Za-z0-9+/=_-]{1,256}$",
4363
+ "description": "pagination.cursor from the previous response to continue."
4364
+ }
4365
+ },
4366
+ "required": [],
4367
+ "additionalProperties": false,
4368
+ "x-runtime-refinement": true
4369
+ }
4370
+ },
4371
+ {
4372
+ "platform": "whatnot",
4373
+ "action": "search",
4374
+ "operation": "whatnotSearch",
4375
+ "method": "GET",
4376
+ "path": "/v1/whatnot/search",
4377
+ "description": "Search listings, livestreams, products, users and categories. Pick a vertical or use UNIVERSAL for the mixed feed; 24 records per page. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
4378
+ "inputSchema": {
4379
+ "type": "object",
4380
+ "properties": {
4381
+ "query": {
4382
+ "type": "string",
4383
+ "minLength": 1,
4384
+ "maxLength": 200,
4385
+ "description": "Echoed search text."
4386
+ },
4387
+ "vertical": {
4388
+ "type": "string",
4389
+ "enum": ["UNIVERSAL", "LIVESTREAM", "PRODUCT", "USER", "CATEGORY"],
4390
+ "default": "UNIVERSAL",
4391
+ "description": "Echoed vertical."
4392
+ },
4393
+ "cursor": {
4394
+ "type": "string",
4395
+ "pattern": "^[A-Za-z0-9+/=_-]{1,256}$",
4396
+ "description": "pagination.cursor from the previous response to continue."
4397
+ }
4398
+ },
4399
+ "required": ["query"],
4400
+ "additionalProperties": false
4401
+ }
4402
+ },
4403
+ {
4404
+ "platform": "whatnot",
4405
+ "action": "livestream",
4406
+ "operation": "whatnotLivestream",
4407
+ "method": "GET",
4408
+ "path": "/v1/whatnot/livestream",
4409
+ "description": "Read one show by UUID or /live/ URL: status, viewers, times, poster, categories, tags and seller. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
4410
+ "inputSchema": {
4411
+ "type": "object",
4412
+ "properties": {
4413
+ "id": {
4414
+ "type": "string",
4415
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
4416
+ "description": "Livestream UUID. Exactly one of id or url."
4417
+ },
4418
+ "url": {
4419
+ "type": "string",
4420
+ "minLength": 1,
4421
+ "maxLength": 2048,
4422
+ "x-runtime-refinement": true,
4423
+ "description": "Public https://www.whatnot.com/live/{id} URL."
4424
+ }
4425
+ },
4426
+ "required": [],
4427
+ "additionalProperties": false,
4428
+ "x-runtime-refinement": true
4429
+ }
4430
+ },
4431
+ {
4432
+ "platform": "whatnot",
4433
+ "action": "livestream-listings",
4434
+ "operation": "whatnotLivestreamListings",
4435
+ "method": "GET",
4436
+ "path": "/v1/whatnot/livestream/listings",
4437
+ "description": "List the products in a show's live shop, optionally filtered by a query, 24 per page. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
4438
+ "inputSchema": {
4439
+ "type": "object",
4440
+ "properties": {
4441
+ "id": {
4442
+ "type": "string",
4443
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
4444
+ "description": "Livestream UUID. Exactly one of id or url."
4445
+ },
4446
+ "url": {
4447
+ "type": "string",
4448
+ "minLength": 1,
4449
+ "maxLength": 2048,
4450
+ "x-runtime-refinement": true,
4451
+ "description": "Public /live/ URL."
4452
+ },
4453
+ "query": {
4454
+ "type": "string",
4455
+ "maxLength": 200,
4456
+ "description": "Optional search within the live shop."
4457
+ },
4458
+ "cursor": {
4459
+ "type": "string",
4460
+ "pattern": "^[A-Za-z0-9+/=_-]{1,256}$",
4461
+ "description": "pagination.cursor from the previous response to continue."
4462
+ }
4463
+ },
4464
+ "required": [],
4465
+ "additionalProperties": false,
4466
+ "x-runtime-refinement": true
4467
+ }
4468
+ },
4469
+ {
4470
+ "platform": "whatnot",
4471
+ "action": "listing",
4472
+ "operation": "whatnotListing",
4473
+ "method": "GET",
4474
+ "path": "/v1/whatnot/listing",
4475
+ "description": "Read one listing by Relay id or /listing/ URL: price, status, quantity, auction state, images, product link and seller. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
4476
+ "inputSchema": {
4477
+ "type": "object",
4478
+ "properties": {
4479
+ "id": {
4480
+ "type": "string",
4481
+ "pattern": "^[A-Za-z0-9+/=_-]{8,128}$",
4482
+ "description": "Relay listing id. Exactly one of id or url."
4483
+ },
4484
+ "url": {
4485
+ "type": "string",
4486
+ "minLength": 1,
4487
+ "maxLength": 2048,
4488
+ "x-runtime-refinement": true,
4489
+ "description": "Public https://www.whatnot.com/listing/{id} URL."
4490
+ }
4491
+ },
4492
+ "required": [],
4493
+ "additionalProperties": false,
4494
+ "x-runtime-refinement": true
4495
+ }
4496
+ },
4497
+ {
4498
+ "platform": "whatnot",
4499
+ "action": "product",
4500
+ "operation": "whatnotProduct",
4501
+ "method": "GET",
4502
+ "path": "/v1/whatnot/product",
4503
+ "description": "Read one catalog product (the entity search returns as type=product) by Relay id: name, description, image, lowest listing and last sale price, active listing count and category. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
4504
+ "inputSchema": {
4505
+ "type": "object",
4506
+ "properties": {
4507
+ "id": {
4508
+ "type": "string",
4509
+ "pattern": "^[A-Za-z0-9+/=_-]{8,128}$",
4510
+ "description": "Product node id from search results or a listing's product link."
4511
+ }
4512
+ },
4513
+ "required": ["id"],
4514
+ "additionalProperties": false
4515
+ }
4516
+ },
4517
+ {
4518
+ "platform": "whatnot",
4519
+ "action": "categories",
4520
+ "operation": "whatnotCategories",
4521
+ "method": "GET",
4522
+ "path": "/v1/whatnot/categories",
4523
+ "description": "List the category tree (with subcategories) and the browse tags with live viewer counts; sort=viewers returns the tags in trending order. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
4524
+ "inputSchema": {
4525
+ "type": "object",
4526
+ "properties": {
4527
+ "sort": {
4528
+ "type": "string",
4529
+ "enum": ["source", "viewers"],
4530
+ "default": "source",
4531
+ "description": "source (default) keeps the site's order; viewers orders tags by live viewer count (the trending view)."
4532
+ }
4533
+ },
4534
+ "required": [],
4535
+ "additionalProperties": false
4536
+ }
4537
+ },
4538
+ {
4539
+ "platform": "whatnot",
4540
+ "action": "category",
4541
+ "operation": "whatnotCategory",
4542
+ "method": "GET",
4543
+ "path": "/v1/whatnot/category",
4544
+ "description": "Read a tag (category) and its feed of live and upcoming shows and listings, 24 per page, with the suggested refinement tags. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed",
4545
+ "inputSchema": {
4546
+ "type": "object",
4547
+ "properties": {
4548
+ "name": {
4549
+ "type": "string",
4550
+ "pattern": "^[a-z0-9][a-z0-9_-]{0,79}$",
4551
+ "description": "Tag slug from /tag/{name}. Exactly one of name or url."
4552
+ },
4553
+ "url": {
4554
+ "type": "string",
4555
+ "minLength": 1,
4556
+ "maxLength": 2048,
4557
+ "x-runtime-refinement": true,
4558
+ "description": "Public https://www.whatnot.com/tag/{name} URL."
4559
+ },
4560
+ "cursor": {
4561
+ "type": "string",
4562
+ "pattern": "^[A-Za-z0-9+/=_-]{1,256}$",
4563
+ "description": "pagination.cursor from the previous response to continue."
4564
+ }
4565
+ },
4566
+ "required": [],
4567
+ "additionalProperties": false,
4568
+ "x-runtime-refinement": true
4569
+ }
4570
+ },
4571
+ {
4572
+ "platform": "youtube",
4573
+ "action": "channel",
4574
+ "operation": "youtubeChannel",
4575
+ "method": "GET",
4576
+ "path": "/v1/youtube/channel",
4577
+ "description": "Read one public channel from its logged-out channel page and About panel. Exactly one of channelId, handle, url or forUsername identifies the channel. The response is the flat reference channel record: fixed fields in a fixed order, then one string field per public link title, then links, keywords, isFamilySafe, avatar and banner. No videos, playlists, comments, transcripts or media are retrieved. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Inspect body.status and body.coverage; partial data is not complete enumeration. Pagination is caller-driven; no automatic crawling. Availability: Live gateway service · production acceptance sample passed on 2026-09-12 through the shared US residential proxy (image 2026-09-12-all-r7); YouTube answers the deployment host's own address with a consent redirect",
4578
+ "inputSchema": {
4579
+ "type": "object",
4580
+ "properties": {
4581
+ "channelId": {
4582
+ "type": "string",
4583
+ "pattern": "^UC[A-Za-z0-9_-]{22}$",
4584
+ "description": "Channel ID from the page metadata; checked against a requested channelId."
4585
+ },
4586
+ "handle": {
4587
+ "type": "string",
4588
+ "maxLength": 64,
4589
+ "x-runtime-refinement": true,
4590
+ "description": "Handle with the leading @, taken from the canonical URL; null for channels without a handle (topic and auto-generated channels)."
4591
+ },
4592
+ "url": {
4593
+ "type": "string",
4594
+ "maxLength": 2048,
4595
+ "x-runtime-refinement": true,
4596
+ "description": "Channel URL: youtube.com/@handle, /channel/UC…, /user/name, /c/name or a legacy youtube.com/name link. www and m subdomains, http/https, a trailing tab such as /videos or /about, query and fragment are accepted and removed."
4597
+ },
4598
+ "forUsername": {
4599
+ "type": "string",
4600
+ "pattern": "^[A-Za-z0-9_.-]{1,100}$",
4601
+ "description": "Legacy YouTube username, resolved through youtube.com/user/<name>."
4602
+ }
4603
+ },
4604
+ "required": [],
4605
+ "additionalProperties": false,
4606
+ "x-runtime-refinement": true
4607
+ }
4608
+ }
4609
+ ]