@scrapeatlas/cli 0.8.0 → 0.9.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.
Files changed (2) hide show
  1. package/catalog.json +1412 -377
  2. package/package.json +1 -1
package/catalog.json CHANGED
@@ -2018,22 +2018,29 @@
2018
2018
  },
2019
2019
  {
2020
2020
  "platform": "bluesky",
2021
- "action": "post",
2022
- "operation": "blueskyPost",
2023
- "method": "GET",
2024
- "path": "/v1/bluesky/post",
2025
- "description": "Retrieve a public Bluesky post and nested replies by HTTPS bsky.app URL. The profile segment accepts a handle or DID. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Responses preserve status, coverage, null values and pagination tokens.",
2021
+ "action": "posts-batch",
2022
+ "operation": "blueskyPostsBatch",
2023
+ "method": "POST",
2024
+ "path": "/v1/bluesky/posts/batch",
2025
+ "description": "Retrieve up to 25 selected post views by canonical AT URI in one request, including authors, original records, media metadata and engagement counts, with a result for each URI in input order. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Responses preserve status, coverage, null values and pagination tokens.",
2026
2026
  "inputSchema": {
2027
2027
  "type": "object",
2028
2028
  "properties": {
2029
- "url": {
2030
- "type": "string",
2031
- "maxLength": 4096,
2029
+ "uris": {
2030
+ "type": "array",
2031
+ "items": {
2032
+ "type": "string",
2033
+ "maxLength": 2600,
2034
+ "pattern": "^at:\\/\\/did:[^/]+\\/app\\.bsky\\.feed\\.post\\/[a-zA-Z0-9._~:-]{1,512}$",
2035
+ "x-runtime-refinement": true
2036
+ },
2037
+ "minItems": 1,
2038
+ "maxItems": 25,
2032
2039
  "x-runtime-refinement": true,
2033
- "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."
2040
+ "description": "Array of 1–25 unique canonical at://<DID>/app.bsky.feed.post/<record-key> identifiers."
2034
2041
  }
2035
2042
  },
2036
- "required": ["url"],
2043
+ "required": ["uris"],
2037
2044
  "additionalProperties": false
2038
2045
  },
2039
2046
  "outputSchema": {
@@ -2066,64 +2073,93 @@
2066
2073
  "required": ["source", "complete", "warnings"],
2067
2074
  "additionalProperties": false
2068
2075
  },
2069
- "post": {
2070
- "type": "object",
2071
- "properties": {
2072
- "uri": {
2073
- "type": "string",
2074
- "pattern": "^at:\\/\\/did:[^/]+\\/app\\.bsky\\.feed\\.post\\/[^/]+$"
2075
- },
2076
- "cid": { "type": "string", "minLength": 1 },
2077
- "author": {
2078
- "type": "object",
2079
- "properties": {
2080
- "did": {
2081
- "type": "string",
2082
- "maxLength": 2048,
2083
- "pattern": "^did:(?:plc:[a-z2-7]{24}|web:[a-zA-Z0-9._:%-]+(?::[a-zA-Z0-9._:%-]+)*)$"
2084
- },
2085
- "handle": { "type": "string", "minLength": 1 }
2086
- },
2087
- "required": ["did", "handle"],
2088
- "additionalProperties": true
2089
- },
2090
- "record": {
2091
- "type": "object",
2092
- "properties": {
2093
- "$type": { "type": "string", "const": "app.bsky.feed.post" },
2094
- "text": { "type": "string" },
2095
- "createdAt": { "type": "string" }
2096
- },
2097
- "required": ["$type", "text", "createdAt"],
2098
- "additionalProperties": true
2099
- },
2100
- "replyCount": { "type": "integer", "minimum": 0 },
2101
- "repostCount": { "type": "integer", "minimum": 0 },
2102
- "likeCount": { "type": "integer", "minimum": 0 },
2103
- "quoteCount": { "type": "integer", "minimum": 0 },
2104
- "indexedAt": { "type": "string" }
2105
- },
2106
- "required": [
2107
- "uri",
2108
- "cid",
2109
- "author",
2110
- "record",
2111
- "replyCount",
2112
- "repostCount",
2113
- "likeCount",
2114
- "quoteCount",
2115
- "indexedAt"
2116
- ],
2117
- "additionalProperties": true
2118
- },
2119
- "replies": {
2076
+ "results": {
2120
2077
  "type": "array",
2121
2078
  "items": {
2122
- "type": "object",
2123
- "propertyNames": { "type": "string" },
2124
- "additionalProperties": {}
2079
+ "anyOf": [
2080
+ {
2081
+ "type": "object",
2082
+ "properties": {
2083
+ "uri": {
2084
+ "type": "string",
2085
+ "maxLength": 2600,
2086
+ "pattern": "^at:\\/\\/did:[^/]+\\/app\\.bsky\\.feed\\.post\\/[a-zA-Z0-9._~:-]{1,512}$",
2087
+ "x-runtime-refinement": true
2088
+ },
2089
+ "status": { "type": "string", "const": "success" },
2090
+ "post": {
2091
+ "type": "object",
2092
+ "properties": {
2093
+ "uri": {
2094
+ "type": "string",
2095
+ "pattern": "^at:\\/\\/did:[^/]+\\/app\\.bsky\\.feed\\.post\\/[^/]+$"
2096
+ },
2097
+ "cid": { "type": "string", "minLength": 1 },
2098
+ "author": {
2099
+ "type": "object",
2100
+ "properties": {
2101
+ "did": {
2102
+ "type": "string",
2103
+ "maxLength": 2048,
2104
+ "pattern": "^did:(?:plc:[a-z2-7]{24}|web:[a-zA-Z0-9._:%-]+(?::[a-zA-Z0-9._:%-]+)*)$"
2105
+ },
2106
+ "handle": { "type": "string", "minLength": 1 }
2107
+ },
2108
+ "required": ["did", "handle"],
2109
+ "additionalProperties": true
2110
+ },
2111
+ "record": {
2112
+ "type": "object",
2113
+ "properties": {
2114
+ "$type": { "type": "string", "const": "app.bsky.feed.post" },
2115
+ "text": { "type": "string" },
2116
+ "createdAt": { "type": "string" }
2117
+ },
2118
+ "required": ["$type", "text", "createdAt"],
2119
+ "additionalProperties": true
2120
+ },
2121
+ "replyCount": { "type": "integer", "minimum": 0 },
2122
+ "repostCount": { "type": "integer", "minimum": 0 },
2123
+ "likeCount": { "type": "integer", "minimum": 0 },
2124
+ "quoteCount": { "type": "integer", "minimum": 0 },
2125
+ "indexedAt": { "type": "string" }
2126
+ },
2127
+ "required": [
2128
+ "uri",
2129
+ "cid",
2130
+ "author",
2131
+ "record",
2132
+ "replyCount",
2133
+ "repostCount",
2134
+ "likeCount",
2135
+ "quoteCount",
2136
+ "indexedAt"
2137
+ ],
2138
+ "additionalProperties": true
2139
+ }
2140
+ },
2141
+ "required": ["uri", "status", "post"],
2142
+ "additionalProperties": false
2143
+ },
2144
+ {
2145
+ "type": "object",
2146
+ "properties": {
2147
+ "uri": {
2148
+ "type": "string",
2149
+ "maxLength": 2600,
2150
+ "pattern": "^at:\\/\\/did:[^/]+\\/app\\.bsky\\.feed\\.post\\/[a-zA-Z0-9._~:-]{1,512}$",
2151
+ "x-runtime-refinement": true
2152
+ },
2153
+ "status": { "type": "string", "enum": ["unavailable", "restricted"] },
2154
+ "post": { "type": "null" }
2155
+ },
2156
+ "required": ["uri", "status", "post"],
2157
+ "additionalProperties": false
2158
+ }
2159
+ ]
2125
2160
  },
2126
- "maxItems": 100
2161
+ "minItems": 1,
2162
+ "maxItems": 25
2127
2163
  }
2128
2164
  },
2129
2165
  "required": [
@@ -2134,10 +2170,9 @@
2134
2170
  "sourceUrl",
2135
2171
  "fetchedAt",
2136
2172
  "coverage",
2137
- "post",
2138
- "replies"
2173
+ "results"
2139
2174
  ],
2140
- "additionalProperties": true
2175
+ "additionalProperties": false
2141
2176
  },
2142
2177
  {
2143
2178
  "type": "object",
@@ -2164,6 +2199,7 @@
2164
2199
  "invalid_request",
2165
2200
  "unauthorized",
2166
2201
  "not_found",
2202
+ "unavailable_records",
2167
2203
  "upstream_challenged",
2168
2204
  "upstream_rate_limited",
2169
2205
  "upstream_error",
@@ -2191,23 +2227,38 @@
2191
2227
  },
2192
2228
  {
2193
2229
  "platform": "bluesky",
2194
- "action": "profile",
2195
- "operation": "blueskyProfile",
2196
- "method": "GET",
2197
- "path": "/v1/bluesky/profile",
2198
- "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. Responses preserve status, coverage, null values and pagination tokens.",
2230
+ "action": "profiles-batch",
2231
+ "operation": "blueskyProfilesBatch",
2232
+ "method": "POST",
2233
+ "path": "/v1/bluesky/profiles/batch",
2234
+ "description": "Retrieve public profiles for up to 25 handles or DIDs in one request, with full profile metadata and a result for each actor in input order. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Responses preserve status, coverage, null values and pagination tokens.",
2199
2235
  "inputSchema": {
2200
2236
  "type": "object",
2201
2237
  "properties": {
2202
- "handle": {
2203
- "type": "string",
2204
- "minLength": 3,
2205
- "maxLength": 253,
2206
- "pattern": "^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z](?:[a-z0-9-]{0,61}[a-z0-9])?$",
2207
- "description": "Required domain-style Bluesky handle, without @ or a profile URL. Custom domain handles are supported."
2238
+ "actors": {
2239
+ "type": "array",
2240
+ "items": {
2241
+ "anyOf": [
2242
+ {
2243
+ "type": "string",
2244
+ "minLength": 3,
2245
+ "maxLength": 253,
2246
+ "pattern": "^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z](?:[a-z0-9-]{0,61}[a-z0-9])?$"
2247
+ },
2248
+ {
2249
+ "type": "string",
2250
+ "maxLength": 2048,
2251
+ "pattern": "^did:(?:plc:[a-z2-7]{24}|web:[a-zA-Z0-9._:%-]+(?::[a-zA-Z0-9._:%-]+)*)$"
2252
+ }
2253
+ ]
2254
+ },
2255
+ "minItems": 1,
2256
+ "maxItems": 25,
2257
+ "x-runtime-refinement": true,
2258
+ "description": "Array of 1–25 unique domain-style handles or did:plc/did:web account identifiers. Handles are compared case-insensitively."
2208
2259
  }
2209
2260
  },
2210
- "required": ["handle"],
2261
+ "required": ["actors"],
2211
2262
  "additionalProperties": false
2212
2263
  },
2213
2264
  "outputSchema": {
@@ -2215,27 +2266,6 @@
2215
2266
  {
2216
2267
  "type": "object",
2217
2268
  "properties": {
2218
- "did": {
2219
- "type": "string",
2220
- "maxLength": 2048,
2221
- "pattern": "^did:(?:plc:[a-z2-7]{24}|web:[a-zA-Z0-9._:%-]+(?::[a-zA-Z0-9._:%-]+)*)$"
2222
- },
2223
- "handle": { "type": "string", "minLength": 1 },
2224
- "displayName": { "type": "string" },
2225
- "description": { "type": "string" },
2226
- "avatar": { "type": "string" },
2227
- "banner": { "type": "string" },
2228
- "followersCount": { "type": "integer", "minimum": 0 },
2229
- "followsCount": { "type": "integer", "minimum": 0 },
2230
- "postsCount": { "type": "integer", "minimum": 0 },
2231
- "labels": {
2232
- "type": "array",
2233
- "items": {
2234
- "type": "object",
2235
- "propertyNames": { "type": "string" },
2236
- "additionalProperties": {}
2237
- }
2238
- },
2239
2269
  "requestId": { "type": "string", "format": "uuid" },
2240
2270
  "accounting": {
2241
2271
  "type": "object",
@@ -2260,23 +2290,81 @@
2260
2290
  },
2261
2291
  "required": ["source", "complete", "warnings"],
2262
2292
  "additionalProperties": false
2293
+ },
2294
+ "results": {
2295
+ "type": "array",
2296
+ "items": {
2297
+ "anyOf": [
2298
+ {
2299
+ "type": "object",
2300
+ "properties": {
2301
+ "actor": { "type": "string" },
2302
+ "status": { "type": "string", "const": "success" },
2303
+ "profile": {
2304
+ "type": "object",
2305
+ "properties": {
2306
+ "did": {
2307
+ "type": "string",
2308
+ "maxLength": 2048,
2309
+ "pattern": "^did:(?:plc:[a-z2-7]{24}|web:[a-zA-Z0-9._:%-]+(?::[a-zA-Z0-9._:%-]+)*)$"
2310
+ },
2311
+ "handle": { "type": "string", "minLength": 1 },
2312
+ "displayName": { "type": "string" },
2313
+ "description": { "type": "string" },
2314
+ "avatar": { "type": "string" },
2315
+ "banner": { "type": "string" },
2316
+ "followersCount": { "type": "integer", "minimum": 0 },
2317
+ "followsCount": { "type": "integer", "minimum": 0 },
2318
+ "postsCount": { "type": "integer", "minimum": 0 },
2319
+ "labels": {
2320
+ "type": "array",
2321
+ "items": {
2322
+ "type": "object",
2323
+ "propertyNames": { "type": "string" },
2324
+ "additionalProperties": {}
2325
+ }
2326
+ }
2327
+ },
2328
+ "required": [
2329
+ "did",
2330
+ "handle",
2331
+ "followersCount",
2332
+ "followsCount",
2333
+ "postsCount"
2334
+ ],
2335
+ "additionalProperties": true
2336
+ }
2337
+ },
2338
+ "required": ["actor", "status", "profile"],
2339
+ "additionalProperties": false
2340
+ },
2341
+ {
2342
+ "type": "object",
2343
+ "properties": {
2344
+ "actor": { "type": "string" },
2345
+ "status": { "type": "string", "enum": ["unavailable", "restricted"] },
2346
+ "profile": { "type": "null" }
2347
+ },
2348
+ "required": ["actor", "status", "profile"],
2349
+ "additionalProperties": false
2350
+ }
2351
+ ]
2352
+ },
2353
+ "minItems": 1,
2354
+ "maxItems": 25
2263
2355
  }
2264
2356
  },
2265
2357
  "required": [
2266
- "did",
2267
- "handle",
2268
- "followersCount",
2269
- "followsCount",
2270
- "postsCount",
2271
2358
  "requestId",
2272
2359
  "accounting",
2273
2360
  "success",
2274
2361
  "status",
2275
2362
  "sourceUrl",
2276
2363
  "fetchedAt",
2277
- "coverage"
2364
+ "coverage",
2365
+ "results"
2278
2366
  ],
2279
- "additionalProperties": true
2367
+ "additionalProperties": false
2280
2368
  },
2281
2369
  {
2282
2370
  "type": "object",
@@ -2303,6 +2391,7 @@
2303
2391
  "invalid_request",
2304
2392
  "unauthorized",
2305
2393
  "not_found",
2394
+ "unavailable_records",
2306
2395
  "upstream_challenged",
2307
2396
  "upstream_rate_limited",
2308
2397
  "upstream_error",
@@ -2330,38 +2419,23 @@
2330
2419
  },
2331
2420
  {
2332
2421
  "platform": "bluesky",
2333
- "action": "posts",
2334
- "operation": "blueskyPosts",
2422
+ "action": "post",
2423
+ "operation": "blueskyPost",
2335
2424
  "method": "GET",
2336
- "path": "/v1/bluesky/user/posts",
2337
- "description": "Retrieve a page of public posts and reposts, including replies. Provide exactly one of handle or user_id, and pass cursor to retrieve the next page. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Responses preserve status, coverage, null values and pagination tokens.",
2425
+ "path": "/v1/bluesky/post",
2426
+ "description": "Retrieve a public Bluesky post, its author, media metadata, engagement counts and nested replies by HTTPS bsky.app URL with a handle or DID. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Responses preserve status, coverage, null values and pagination tokens.",
2338
2427
  "inputSchema": {
2339
2428
  "type": "object",
2340
2429
  "properties": {
2341
- "handle": {
2342
- "type": "string",
2343
- "minLength": 3,
2344
- "maxLength": 253,
2345
- "pattern": "^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z](?:[a-z0-9-]{0,61}[a-z0-9])?$",
2346
- "description": "One Bluesky handle; mutually exclusive with user_id."
2347
- },
2348
- "user_id": {
2349
- "type": "string",
2350
- "maxLength": 2048,
2351
- "pattern": "^did:(?:plc:[a-z2-7]{24}|web:[a-zA-Z0-9._:%-]+(?::[a-zA-Z0-9._:%-]+)*)$",
2352
- "description": "One did:plc or did:web account identifier, mutually exclusive with handle."
2353
- },
2354
- "cursor": {
2430
+ "url": {
2355
2431
  "type": "string",
2356
- "minLength": 1,
2357
- "maxLength": 2048,
2432
+ "maxLength": 4096,
2358
2433
  "x-runtime-refinement": true,
2359
- "description": "Opaque next-page cursor. Absence means the source provided no continuation; do not invent a cursor."
2434
+ "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."
2360
2435
  }
2361
2436
  },
2362
- "required": [],
2363
- "additionalProperties": false,
2364
- "x-runtime-refinement": true
2437
+ "required": ["url"],
2438
+ "additionalProperties": false
2365
2439
  },
2366
2440
  "outputSchema": {
2367
2441
  "anyOf": [
@@ -2393,61 +2467,65 @@
2393
2467
  "required": ["source", "complete", "warnings"],
2394
2468
  "additionalProperties": false
2395
2469
  },
2396
- "feed": {
2397
- "type": "array",
2398
- "items": {
2399
- "type": "object",
2400
- "properties": {
2401
- "uri": {
2402
- "type": "string",
2403
- "pattern": "^at:\\/\\/did:[^/]+\\/app\\.bsky\\.feed\\.post\\/[^/]+$"
2404
- },
2405
- "cid": { "type": "string", "minLength": 1 },
2406
- "author": {
2407
- "type": "object",
2408
- "properties": {
2409
- "did": {
2410
- "type": "string",
2411
- "maxLength": 2048,
2412
- "pattern": "^did:(?:plc:[a-z2-7]{24}|web:[a-zA-Z0-9._:%-]+(?::[a-zA-Z0-9._:%-]+)*)$"
2413
- },
2414
- "handle": { "type": "string", "minLength": 1 }
2470
+ "post": {
2471
+ "type": "object",
2472
+ "properties": {
2473
+ "uri": {
2474
+ "type": "string",
2475
+ "pattern": "^at:\\/\\/did:[^/]+\\/app\\.bsky\\.feed\\.post\\/[^/]+$"
2476
+ },
2477
+ "cid": { "type": "string", "minLength": 1 },
2478
+ "author": {
2479
+ "type": "object",
2480
+ "properties": {
2481
+ "did": {
2482
+ "type": "string",
2483
+ "maxLength": 2048,
2484
+ "pattern": "^did:(?:plc:[a-z2-7]{24}|web:[a-zA-Z0-9._:%-]+(?::[a-zA-Z0-9._:%-]+)*)$"
2415
2485
  },
2416
- "required": ["did", "handle"],
2417
- "additionalProperties": true
2486
+ "handle": { "type": "string", "minLength": 1 }
2418
2487
  },
2419
- "record": {
2420
- "type": "object",
2421
- "properties": {
2422
- "$type": { "type": "string", "const": "app.bsky.feed.post" },
2423
- "text": { "type": "string" },
2424
- "createdAt": { "type": "string" }
2425
- },
2426
- "required": ["$type", "text", "createdAt"],
2427
- "additionalProperties": true
2488
+ "required": ["did", "handle"],
2489
+ "additionalProperties": true
2490
+ },
2491
+ "record": {
2492
+ "type": "object",
2493
+ "properties": {
2494
+ "$type": { "type": "string", "const": "app.bsky.feed.post" },
2495
+ "text": { "type": "string" },
2496
+ "createdAt": { "type": "string" }
2428
2497
  },
2429
- "replyCount": { "type": "integer", "minimum": 0 },
2430
- "repostCount": { "type": "integer", "minimum": 0 },
2431
- "likeCount": { "type": "integer", "minimum": 0 },
2432
- "quoteCount": { "type": "integer", "minimum": 0 },
2433
- "indexedAt": { "type": "string" }
2498
+ "required": ["$type", "text", "createdAt"],
2499
+ "additionalProperties": true
2434
2500
  },
2435
- "required": [
2436
- "uri",
2437
- "cid",
2438
- "author",
2439
- "record",
2440
- "replyCount",
2441
- "repostCount",
2442
- "likeCount",
2443
- "quoteCount",
2444
- "indexedAt"
2445
- ],
2446
- "additionalProperties": true
2501
+ "replyCount": { "type": "integer", "minimum": 0 },
2502
+ "repostCount": { "type": "integer", "minimum": 0 },
2503
+ "likeCount": { "type": "integer", "minimum": 0 },
2504
+ "quoteCount": { "type": "integer", "minimum": 0 },
2505
+ "indexedAt": { "type": "string" }
2447
2506
  },
2448
- "maxItems": 30
2507
+ "required": [
2508
+ "uri",
2509
+ "cid",
2510
+ "author",
2511
+ "record",
2512
+ "replyCount",
2513
+ "repostCount",
2514
+ "likeCount",
2515
+ "quoteCount",
2516
+ "indexedAt"
2517
+ ],
2518
+ "additionalProperties": true
2449
2519
  },
2450
- "cursor": { "type": "string" }
2520
+ "replies": {
2521
+ "type": "array",
2522
+ "items": {
2523
+ "type": "object",
2524
+ "propertyNames": { "type": "string" },
2525
+ "additionalProperties": {}
2526
+ },
2527
+ "maxItems": 100
2528
+ }
2451
2529
  },
2452
2530
  "required": [
2453
2531
  "requestId",
@@ -2457,9 +2535,10 @@
2457
2535
  "sourceUrl",
2458
2536
  "fetchedAt",
2459
2537
  "coverage",
2460
- "feed"
2538
+ "post",
2539
+ "replies"
2461
2540
  ],
2462
- "additionalProperties": false
2541
+ "additionalProperties": true
2463
2542
  },
2464
2543
  {
2465
2544
  "type": "object",
@@ -2486,6 +2565,7 @@
2486
2565
  "invalid_request",
2487
2566
  "unauthorized",
2488
2567
  "not_found",
2568
+ "unavailable_records",
2489
2569
  "upstream_challenged",
2490
2570
  "upstream_rate_limited",
2491
2571
  "upstream_error",
@@ -2512,23 +2592,24 @@
2512
2592
  }
2513
2593
  },
2514
2594
  {
2515
- "platform": "couchsurfing",
2516
- "action": "event",
2517
- "operation": "couchsurfingEvent",
2595
+ "platform": "bluesky",
2596
+ "action": "profile",
2597
+ "operation": "blueskyProfile",
2518
2598
  "method": "GET",
2519
- "path": "/v1/couchsurfing/event",
2520
- "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. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Responses preserve status, coverage, null values and pagination tokens.",
2599
+ "path": "/v1/bluesky/profile",
2600
+ "description": "Retrieve a public Bluesky profile by handle with its DID, display name, bio, images, follower/following/post counts, verification and published profile metadata. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Responses preserve status, coverage, null values and pagination tokens.",
2521
2601
  "inputSchema": {
2522
2602
  "type": "object",
2523
2603
  "properties": {
2524
- "url": {
2604
+ "handle": {
2525
2605
  "type": "string",
2526
- "maxLength": 500,
2527
- "pattern": "^https:\\/\\/(?:www\\.)?couchsurfing\\.com\\/c\\/events\\/(?:[A-Za-z0-9]+(?:-[A-Za-z0-9]+)*-)?[A-Za-z0-9]{16,64}_ho\\/?$",
2528
- "description": "Required HTTPS couchsurfing.com/c/events/<slug>-<id>_ho URL; the trailing _ho identifier alone is also accepted. No query, fragment or credentials."
2606
+ "minLength": 3,
2607
+ "maxLength": 253,
2608
+ "pattern": "^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z](?:[a-z0-9-]{0,61}[a-z0-9])?$",
2609
+ "description": "Required domain-style Bluesky handle, without @ or a profile URL. Custom domain handles are supported."
2529
2610
  }
2530
2611
  },
2531
- "required": ["url"],
2612
+ "required": ["handle"],
2532
2613
  "additionalProperties": false
2533
2614
  },
2534
2615
  "outputSchema": {
@@ -2536,6 +2617,27 @@
2536
2617
  {
2537
2618
  "type": "object",
2538
2619
  "properties": {
2620
+ "did": {
2621
+ "type": "string",
2622
+ "maxLength": 2048,
2623
+ "pattern": "^did:(?:plc:[a-z2-7]{24}|web:[a-zA-Z0-9._:%-]+(?::[a-zA-Z0-9._:%-]+)*)$"
2624
+ },
2625
+ "handle": { "type": "string", "minLength": 1 },
2626
+ "displayName": { "type": "string" },
2627
+ "description": { "type": "string" },
2628
+ "avatar": { "type": "string" },
2629
+ "banner": { "type": "string" },
2630
+ "followersCount": { "type": "integer", "minimum": 0 },
2631
+ "followsCount": { "type": "integer", "minimum": 0 },
2632
+ "postsCount": { "type": "integer", "minimum": 0 },
2633
+ "labels": {
2634
+ "type": "array",
2635
+ "items": {
2636
+ "type": "object",
2637
+ "propertyNames": { "type": "string" },
2638
+ "additionalProperties": {}
2639
+ }
2640
+ },
2539
2641
  "requestId": { "type": "string", "format": "uuid" },
2540
2642
  "accounting": {
2541
2643
  "type": "object",
@@ -2554,30 +2656,29 @@
2554
2656
  "coverage": {
2555
2657
  "type": "object",
2556
2658
  "properties": {
2557
- "source": { "type": "string", "const": "public_page" },
2659
+ "source": { "type": "string", "const": "public_api" },
2558
2660
  "complete": { "type": "boolean" },
2559
2661
  "warnings": { "type": "array", "items": { "type": "string" } }
2560
2662
  },
2561
2663
  "required": ["source", "complete", "warnings"],
2562
2664
  "additionalProperties": false
2563
- },
2564
- "event": {
2565
- "type": "object",
2566
- "propertyNames": { "type": "string" },
2567
- "additionalProperties": {}
2568
2665
  }
2569
2666
  },
2570
2667
  "required": [
2668
+ "did",
2669
+ "handle",
2670
+ "followersCount",
2671
+ "followsCount",
2672
+ "postsCount",
2571
2673
  "requestId",
2572
2674
  "accounting",
2573
2675
  "success",
2574
2676
  "status",
2575
2677
  "sourceUrl",
2576
2678
  "fetchedAt",
2577
- "coverage",
2578
- "event"
2679
+ "coverage"
2579
2680
  ],
2580
- "additionalProperties": false
2681
+ "additionalProperties": true
2581
2682
  },
2582
2683
  {
2583
2684
  "type": "object",
@@ -2601,14 +2702,15 @@
2601
2702
  "code": {
2602
2703
  "type": "string",
2603
2704
  "enum": [
2604
- "restricted",
2605
2705
  "invalid_request",
2606
2706
  "unauthorized",
2607
2707
  "not_found",
2708
+ "unavailable_records",
2608
2709
  "upstream_challenged",
2609
2710
  "upstream_rate_limited",
2610
2711
  "upstream_error",
2611
2712
  "unsupported_page",
2713
+ "restricted_page",
2612
2714
  "response_too_large",
2613
2715
  "unsafe_redirect",
2614
2716
  "request_limit",
@@ -2630,24 +2732,39 @@
2630
2732
  }
2631
2733
  },
2632
2734
  {
2633
- "platform": "couchsurfing",
2634
- "action": "profile",
2635
- "operation": "couchsurfingProfile",
2735
+ "platform": "bluesky",
2736
+ "action": "posts",
2737
+ "operation": "blueskyPosts",
2636
2738
  "method": "GET",
2637
- "path": "/v1/couchsurfing/profile",
2638
- "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. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Responses preserve status, coverage, null values and pagination tokens.",
2739
+ "path": "/v1/bluesky/user/posts",
2740
+ "description": "Retrieve a page of public posts, replies and reposts with original records, media metadata and engagement counts. Provide exactly one of handle or user_id, and pass cursor to retrieve the next page. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Responses preserve status, coverage, null values and pagination tokens.",
2639
2741
  "inputSchema": {
2640
2742
  "type": "object",
2641
2743
  "properties": {
2642
2744
  "handle": {
2643
2745
  "type": "string",
2644
- "maxLength": 100,
2645
- "pattern": "^[A-Za-z0-9][A-Za-z0-9_.-]{0,99}$",
2646
- "description": "Required member handle as it appears in couchsurfing.com/c/users/<handle>; letters, digits, dot, underscore and hyphen, matched case-insensitively."
2746
+ "minLength": 3,
2747
+ "maxLength": 253,
2748
+ "pattern": "^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z](?:[a-z0-9-]{0,61}[a-z0-9])?$",
2749
+ "description": "One Bluesky handle; mutually exclusive with user_id."
2750
+ },
2751
+ "user_id": {
2752
+ "type": "string",
2753
+ "maxLength": 2048,
2754
+ "pattern": "^did:(?:plc:[a-z2-7]{24}|web:[a-zA-Z0-9._:%-]+(?::[a-zA-Z0-9._:%-]+)*)$",
2755
+ "description": "One did:plc or did:web account identifier, mutually exclusive with handle."
2756
+ },
2757
+ "cursor": {
2758
+ "type": "string",
2759
+ "minLength": 1,
2760
+ "maxLength": 2048,
2761
+ "x-runtime-refinement": true,
2762
+ "description": "Opaque next-page cursor. Absence means the source provided no continuation; do not invent a cursor."
2647
2763
  }
2648
2764
  },
2649
- "required": ["handle"],
2650
- "additionalProperties": false
2765
+ "required": [],
2766
+ "additionalProperties": false,
2767
+ "x-runtime-refinement": true
2651
2768
  },
2652
2769
  "outputSchema": {
2653
2770
  "anyOf": [
@@ -2672,27 +2789,68 @@
2672
2789
  "coverage": {
2673
2790
  "type": "object",
2674
2791
  "properties": {
2675
- "source": { "type": "string", "const": "public_page" },
2792
+ "source": { "type": "string", "const": "public_api" },
2676
2793
  "complete": { "type": "boolean" },
2677
2794
  "warnings": { "type": "array", "items": { "type": "string" } }
2678
2795
  },
2679
2796
  "required": ["source", "complete", "warnings"],
2680
2797
  "additionalProperties": false
2681
2798
  },
2682
- "profile": {
2683
- "type": "object",
2684
- "propertyNames": { "type": "string" },
2685
- "additionalProperties": {}
2686
- },
2687
- "answers": {
2799
+ "feed": {
2688
2800
  "type": "array",
2689
2801
  "items": {
2690
2802
  "type": "object",
2691
- "propertyNames": { "type": "string" },
2692
- "additionalProperties": {}
2803
+ "properties": {
2804
+ "uri": {
2805
+ "type": "string",
2806
+ "pattern": "^at:\\/\\/did:[^/]+\\/app\\.bsky\\.feed\\.post\\/[^/]+$"
2807
+ },
2808
+ "cid": { "type": "string", "minLength": 1 },
2809
+ "author": {
2810
+ "type": "object",
2811
+ "properties": {
2812
+ "did": {
2813
+ "type": "string",
2814
+ "maxLength": 2048,
2815
+ "pattern": "^did:(?:plc:[a-z2-7]{24}|web:[a-zA-Z0-9._:%-]+(?::[a-zA-Z0-9._:%-]+)*)$"
2816
+ },
2817
+ "handle": { "type": "string", "minLength": 1 }
2818
+ },
2819
+ "required": ["did", "handle"],
2820
+ "additionalProperties": true
2821
+ },
2822
+ "record": {
2823
+ "type": "object",
2824
+ "properties": {
2825
+ "$type": { "type": "string", "const": "app.bsky.feed.post" },
2826
+ "text": { "type": "string" },
2827
+ "createdAt": { "type": "string" }
2828
+ },
2829
+ "required": ["$type", "text", "createdAt"],
2830
+ "additionalProperties": true
2831
+ },
2832
+ "replyCount": { "type": "integer", "minimum": 0 },
2833
+ "repostCount": { "type": "integer", "minimum": 0 },
2834
+ "likeCount": { "type": "integer", "minimum": 0 },
2835
+ "quoteCount": { "type": "integer", "minimum": 0 },
2836
+ "indexedAt": { "type": "string" }
2837
+ },
2838
+ "required": [
2839
+ "uri",
2840
+ "cid",
2841
+ "author",
2842
+ "record",
2843
+ "replyCount",
2844
+ "repostCount",
2845
+ "likeCount",
2846
+ "quoteCount",
2847
+ "indexedAt"
2848
+ ],
2849
+ "additionalProperties": true
2693
2850
  },
2694
- "maxItems": 100
2695
- }
2851
+ "maxItems": 30
2852
+ },
2853
+ "cursor": { "type": "string" }
2696
2854
  },
2697
2855
  "required": [
2698
2856
  "requestId",
@@ -2702,8 +2860,7 @@
2702
2860
  "sourceUrl",
2703
2861
  "fetchedAt",
2704
2862
  "coverage",
2705
- "profile",
2706
- "answers"
2863
+ "feed"
2707
2864
  ],
2708
2865
  "additionalProperties": false
2709
2866
  },
@@ -2729,14 +2886,15 @@
2729
2886
  "code": {
2730
2887
  "type": "string",
2731
2888
  "enum": [
2732
- "restricted",
2733
2889
  "invalid_request",
2734
2890
  "unauthorized",
2735
2891
  "not_found",
2892
+ "unavailable_records",
2736
2893
  "upstream_challenged",
2737
2894
  "upstream_rate_limited",
2738
2895
  "upstream_error",
2739
2896
  "unsupported_page",
2897
+ "restricted_page",
2740
2898
  "response_too_large",
2741
2899
  "unsafe_redirect",
2742
2900
  "request_limit",
@@ -2759,7 +2917,253 @@
2759
2917
  },
2760
2918
  {
2761
2919
  "platform": "couchsurfing",
2762
- "action": "events",
2920
+ "action": "event",
2921
+ "operation": "couchsurfingEvent",
2922
+ "method": "GET",
2923
+ "path": "/v1/couchsurfing/event",
2924
+ "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. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Responses preserve status, coverage, null values and pagination tokens.",
2925
+ "inputSchema": {
2926
+ "type": "object",
2927
+ "properties": {
2928
+ "url": {
2929
+ "type": "string",
2930
+ "maxLength": 500,
2931
+ "pattern": "^https:\\/\\/(?:www\\.)?couchsurfing\\.com\\/c\\/events\\/(?:[A-Za-z0-9]+(?:-[A-Za-z0-9]+)*-)?[A-Za-z0-9]{16,64}_ho\\/?$",
2932
+ "description": "Required HTTPS couchsurfing.com/c/events/<slug>-<id>_ho URL; the trailing _ho identifier alone is also accepted. No query, fragment or credentials."
2933
+ }
2934
+ },
2935
+ "required": ["url"],
2936
+ "additionalProperties": false
2937
+ },
2938
+ "outputSchema": {
2939
+ "anyOf": [
2940
+ {
2941
+ "type": "object",
2942
+ "properties": {
2943
+ "requestId": { "type": "string", "format": "uuid" },
2944
+ "accounting": {
2945
+ "type": "object",
2946
+ "properties": {
2947
+ "upstreamRequests": { "type": "integer", "minimum": 0 },
2948
+ "responseBytes": { "type": "integer", "minimum": 0 },
2949
+ "durationMs": { "type": "number", "minimum": 0 }
2950
+ },
2951
+ "required": ["upstreamRequests", "responseBytes", "durationMs"],
2952
+ "additionalProperties": false
2953
+ },
2954
+ "success": { "type": "boolean", "const": true },
2955
+ "status": { "type": "string", "enum": ["success", "partial"] },
2956
+ "sourceUrl": { "type": "string", "format": "uri" },
2957
+ "fetchedAt": { "type": "string", "format": "date-time" },
2958
+ "coverage": {
2959
+ "type": "object",
2960
+ "properties": {
2961
+ "source": { "type": "string", "const": "public_page" },
2962
+ "complete": { "type": "boolean" },
2963
+ "warnings": { "type": "array", "items": { "type": "string" } }
2964
+ },
2965
+ "required": ["source", "complete", "warnings"],
2966
+ "additionalProperties": false
2967
+ },
2968
+ "event": {
2969
+ "type": "object",
2970
+ "propertyNames": { "type": "string" },
2971
+ "additionalProperties": {}
2972
+ }
2973
+ },
2974
+ "required": [
2975
+ "requestId",
2976
+ "accounting",
2977
+ "success",
2978
+ "status",
2979
+ "sourceUrl",
2980
+ "fetchedAt",
2981
+ "coverage",
2982
+ "event"
2983
+ ],
2984
+ "additionalProperties": false
2985
+ },
2986
+ {
2987
+ "type": "object",
2988
+ "properties": {
2989
+ "requestId": { "type": "string", "format": "uuid" },
2990
+ "accounting": {
2991
+ "type": "object",
2992
+ "properties": {
2993
+ "upstreamRequests": { "type": "integer", "minimum": 0 },
2994
+ "responseBytes": { "type": "integer", "minimum": 0 },
2995
+ "durationMs": { "type": "number", "minimum": 0 }
2996
+ },
2997
+ "required": ["upstreamRequests", "responseBytes", "durationMs"],
2998
+ "additionalProperties": false
2999
+ },
3000
+ "success": { "type": "boolean", "const": false },
3001
+ "status": { "type": "string", "enum": ["failed", "challenged"] },
3002
+ "failure": {
3003
+ "type": "object",
3004
+ "properties": {
3005
+ "code": {
3006
+ "type": "string",
3007
+ "enum": [
3008
+ "restricted",
3009
+ "invalid_request",
3010
+ "unauthorized",
3011
+ "not_found",
3012
+ "upstream_challenged",
3013
+ "upstream_rate_limited",
3014
+ "upstream_error",
3015
+ "unsupported_page",
3016
+ "response_too_large",
3017
+ "unsafe_redirect",
3018
+ "request_limit",
3019
+ "timeout",
3020
+ "busy",
3021
+ "payload_too_complex"
3022
+ ]
3023
+ },
3024
+ "message": { "type": "string" }
3025
+ },
3026
+ "required": ["code", "message"],
3027
+ "additionalProperties": false
3028
+ }
3029
+ },
3030
+ "required": ["requestId", "accounting", "success", "status", "failure"],
3031
+ "additionalProperties": false
3032
+ }
3033
+ ]
3034
+ }
3035
+ },
3036
+ {
3037
+ "platform": "couchsurfing",
3038
+ "action": "profile",
3039
+ "operation": "couchsurfingProfile",
3040
+ "method": "GET",
3041
+ "path": "/v1/couchsurfing/profile",
3042
+ "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. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Responses preserve status, coverage, null values and pagination tokens.",
3043
+ "inputSchema": {
3044
+ "type": "object",
3045
+ "properties": {
3046
+ "handle": {
3047
+ "type": "string",
3048
+ "maxLength": 100,
3049
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9_.-]{0,99}$",
3050
+ "description": "Required member handle as it appears in couchsurfing.com/c/users/<handle>; letters, digits, dot, underscore and hyphen, matched case-insensitively."
3051
+ }
3052
+ },
3053
+ "required": ["handle"],
3054
+ "additionalProperties": false
3055
+ },
3056
+ "outputSchema": {
3057
+ "anyOf": [
3058
+ {
3059
+ "type": "object",
3060
+ "properties": {
3061
+ "requestId": { "type": "string", "format": "uuid" },
3062
+ "accounting": {
3063
+ "type": "object",
3064
+ "properties": {
3065
+ "upstreamRequests": { "type": "integer", "minimum": 0 },
3066
+ "responseBytes": { "type": "integer", "minimum": 0 },
3067
+ "durationMs": { "type": "number", "minimum": 0 }
3068
+ },
3069
+ "required": ["upstreamRequests", "responseBytes", "durationMs"],
3070
+ "additionalProperties": false
3071
+ },
3072
+ "success": { "type": "boolean", "const": true },
3073
+ "status": { "type": "string", "enum": ["success", "partial"] },
3074
+ "sourceUrl": { "type": "string", "format": "uri" },
3075
+ "fetchedAt": { "type": "string", "format": "date-time" },
3076
+ "coverage": {
3077
+ "type": "object",
3078
+ "properties": {
3079
+ "source": { "type": "string", "const": "public_page" },
3080
+ "complete": { "type": "boolean" },
3081
+ "warnings": { "type": "array", "items": { "type": "string" } }
3082
+ },
3083
+ "required": ["source", "complete", "warnings"],
3084
+ "additionalProperties": false
3085
+ },
3086
+ "profile": {
3087
+ "type": "object",
3088
+ "propertyNames": { "type": "string" },
3089
+ "additionalProperties": {}
3090
+ },
3091
+ "answers": {
3092
+ "type": "array",
3093
+ "items": {
3094
+ "type": "object",
3095
+ "propertyNames": { "type": "string" },
3096
+ "additionalProperties": {}
3097
+ },
3098
+ "maxItems": 100
3099
+ }
3100
+ },
3101
+ "required": [
3102
+ "requestId",
3103
+ "accounting",
3104
+ "success",
3105
+ "status",
3106
+ "sourceUrl",
3107
+ "fetchedAt",
3108
+ "coverage",
3109
+ "profile",
3110
+ "answers"
3111
+ ],
3112
+ "additionalProperties": false
3113
+ },
3114
+ {
3115
+ "type": "object",
3116
+ "properties": {
3117
+ "requestId": { "type": "string", "format": "uuid" },
3118
+ "accounting": {
3119
+ "type": "object",
3120
+ "properties": {
3121
+ "upstreamRequests": { "type": "integer", "minimum": 0 },
3122
+ "responseBytes": { "type": "integer", "minimum": 0 },
3123
+ "durationMs": { "type": "number", "minimum": 0 }
3124
+ },
3125
+ "required": ["upstreamRequests", "responseBytes", "durationMs"],
3126
+ "additionalProperties": false
3127
+ },
3128
+ "success": { "type": "boolean", "const": false },
3129
+ "status": { "type": "string", "enum": ["failed", "challenged"] },
3130
+ "failure": {
3131
+ "type": "object",
3132
+ "properties": {
3133
+ "code": {
3134
+ "type": "string",
3135
+ "enum": [
3136
+ "restricted",
3137
+ "invalid_request",
3138
+ "unauthorized",
3139
+ "not_found",
3140
+ "upstream_challenged",
3141
+ "upstream_rate_limited",
3142
+ "upstream_error",
3143
+ "unsupported_page",
3144
+ "response_too_large",
3145
+ "unsafe_redirect",
3146
+ "request_limit",
3147
+ "timeout",
3148
+ "busy",
3149
+ "payload_too_complex"
3150
+ ]
3151
+ },
3152
+ "message": { "type": "string" }
3153
+ },
3154
+ "required": ["code", "message"],
3155
+ "additionalProperties": false
3156
+ }
3157
+ },
3158
+ "required": ["requestId", "accounting", "success", "status", "failure"],
3159
+ "additionalProperties": false
3160
+ }
3161
+ ]
3162
+ }
3163
+ },
3164
+ {
3165
+ "platform": "couchsurfing",
3166
+ "action": "events",
2763
3167
  "operation": "couchsurfingEvents",
2764
3168
  "method": "GET",
2765
3169
  "path": "/v1/couchsurfing/events",
@@ -6505,19 +6909,290 @@
6505
6909
  },
6506
6910
  {
6507
6911
  "platform": "etsy",
6508
- "action": "search-suggestions",
6509
- "operation": "etsySearchSuggestions",
6912
+ "action": "listing-reviews",
6913
+ "operation": "etsyListingReviews",
6510
6914
  "method": "GET",
6511
- "path": "/v1/etsy/search/suggestions",
6512
- "description": "Retrieve Etsy search autocomplete terms for a partial query. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Responses preserve status, coverage, null values and pagination tokens.",
6915
+ "path": "/v1/etsy/listing/reviews",
6916
+ "description": "Read one page of a listing's buyer reviews (eight per page) with its average rating, review count, count per star, summarised review tags and total pages. Sort by suggested, most recent, highest or lowest rating, or filter to one star rating. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Responses preserve status, coverage, null values and pagination tokens.",
6513
6917
  "inputSchema": {
6514
6918
  "type": "object",
6515
6919
  "properties": {
6516
- "query": {
6517
- "type": "string",
6518
- "minLength": 1,
6519
- "maxLength": 200,
6520
- "pattern": "^[^\\u0000-\\u001f\\u007f-\\u009f]+$",
6920
+ "id": { "type": "string", "pattern": "^[1-9][0-9]{0,15}$" },
6921
+ "url": { "type": "string", "maxLength": 2048, "x-runtime-refinement": true },
6922
+ "page": {
6923
+ "type": "integer",
6924
+ "minimum": 1,
6925
+ "maximum": 250,
6926
+ "default": 1,
6927
+ "description": "Requested page."
6928
+ },
6929
+ "sort": {
6930
+ "type": "string",
6931
+ "enum": ["suggested", "most_recent", "highest_rating", "lowest_rating"],
6932
+ "default": "suggested",
6933
+ "description": "Applied order."
6934
+ },
6935
+ "rating": {
6936
+ "type": "integer",
6937
+ "minimum": 1,
6938
+ "maximum": 5,
6939
+ "description": "Average rating and number of reviews matching the request."
6940
+ }
6941
+ },
6942
+ "required": [],
6943
+ "additionalProperties": false,
6944
+ "x-runtime-refinement": true
6945
+ },
6946
+ "outputSchema": {
6947
+ "anyOf": [
6948
+ {
6949
+ "type": "object",
6950
+ "properties": {
6951
+ "requestId": { "type": "string", "format": "uuid" },
6952
+ "accounting": {
6953
+ "type": "object",
6954
+ "properties": {
6955
+ "upstreamRequests": { "type": "integer", "minimum": 0 },
6956
+ "responseBytes": { "type": "integer", "minimum": 0 },
6957
+ "durationMs": { "type": "number", "minimum": 0 }
6958
+ },
6959
+ "required": ["upstreamRequests", "responseBytes", "durationMs"],
6960
+ "additionalProperties": false
6961
+ },
6962
+ "success": { "type": "boolean", "const": true },
6963
+ "status": { "type": "string", "enum": ["success", "partial"] },
6964
+ "sourceUrl": { "type": "string", "format": "uri" },
6965
+ "fetchedAt": { "type": "string", "format": "date-time" },
6966
+ "coverage": {
6967
+ "type": "object",
6968
+ "properties": {
6969
+ "source": { "type": "string", "enum": ["public_page", "public_api"] },
6970
+ "complete": { "type": "boolean" },
6971
+ "warnings": {
6972
+ "type": "array",
6973
+ "items": {
6974
+ "type": "string",
6975
+ "enum": [
6976
+ "malformed_cards_omitted",
6977
+ "organic_results_partially_embedded",
6978
+ "listing_count_unknown",
6979
+ "review_pages_unknown",
6980
+ "malformed_reviews_omitted"
6981
+ ]
6982
+ }
6983
+ }
6984
+ },
6985
+ "required": ["source", "complete", "warnings"],
6986
+ "additionalProperties": false
6987
+ },
6988
+ "listing": {
6989
+ "type": "object",
6990
+ "properties": {
6991
+ "id": { "type": "string", "pattern": "^[1-9][0-9]{0,15}$" },
6992
+ "url": { "type": "string", "format": "uri" }
6993
+ },
6994
+ "required": ["id", "url"],
6995
+ "additionalProperties": false
6996
+ },
6997
+ "shopId": { "type": "string", "pattern": "^[0-9]{1,20}$" },
6998
+ "rating": {
6999
+ "type": "object",
7000
+ "properties": {
7001
+ "average": {
7002
+ "anyOf": [{ "type": "number", "minimum": 0, "maximum": 5 }, { "type": "null" }]
7003
+ },
7004
+ "count": { "anyOf": [{ "type": "integer", "minimum": 0 }, { "type": "null" }] }
7005
+ },
7006
+ "required": ["average", "count"],
7007
+ "additionalProperties": false
7008
+ },
7009
+ "ratingCounts": {
7010
+ "anyOf": [
7011
+ {
7012
+ "type": "object",
7013
+ "properties": {
7014
+ "1": { "type": "integer", "minimum": 0 },
7015
+ "2": { "type": "integer", "minimum": 0 },
7016
+ "3": { "type": "integer", "minimum": 0 },
7017
+ "4": { "type": "integer", "minimum": 0 },
7018
+ "5": { "type": "integer", "minimum": 0 }
7019
+ },
7020
+ "required": ["1", "2", "3", "4", "5"],
7021
+ "additionalProperties": false
7022
+ },
7023
+ { "type": "null" }
7024
+ ]
7025
+ },
7026
+ "tags": {
7027
+ "type": "array",
7028
+ "items": {
7029
+ "type": "object",
7030
+ "properties": {
7031
+ "name": { "type": "string" },
7032
+ "count": { "type": "integer", "minimum": 0 }
7033
+ },
7034
+ "required": ["name", "count"],
7035
+ "additionalProperties": false
7036
+ },
7037
+ "maxItems": 20
7038
+ },
7039
+ "sort": {
7040
+ "type": "string",
7041
+ "enum": ["suggested", "most_recent", "highest_rating", "lowest_rating"],
7042
+ "default": "suggested"
7043
+ },
7044
+ "ratingFilter": {
7045
+ "anyOf": [{ "type": "integer", "minimum": 1, "maximum": 5 }, { "type": "null" }]
7046
+ },
7047
+ "page": { "type": "integer", "minimum": 1 },
7048
+ "totalPages": { "anyOf": [{ "type": "integer", "minimum": 0 }, { "type": "null" }] },
7049
+ "nextPage": { "anyOf": [{ "type": "integer", "minimum": 2 }, { "type": "null" }] },
7050
+ "reviews": {
7051
+ "type": "array",
7052
+ "items": {
7053
+ "type": "object",
7054
+ "properties": {
7055
+ "id": { "type": "string", "pattern": "^[0-9]{1,20}$" },
7056
+ "reviewer": {
7057
+ "type": "object",
7058
+ "properties": {
7059
+ "name": { "type": "string" },
7060
+ "url": {
7061
+ "anyOf": [{ "type": "string", "format": "uri" }, { "type": "null" }]
7062
+ },
7063
+ "avatar": {
7064
+ "anyOf": [{ "type": "string", "format": "uri" }, { "type": "null" }]
7065
+ }
7066
+ },
7067
+ "required": ["name", "url", "avatar"],
7068
+ "additionalProperties": false
7069
+ },
7070
+ "date": { "anyOf": [{ "type": "string" }, { "type": "null" }] },
7071
+ "rating": {
7072
+ "anyOf": [{ "type": "integer", "minimum": 1, "maximum": 5 }, { "type": "null" }]
7073
+ },
7074
+ "text": { "type": "string" },
7075
+ "listing": {
7076
+ "anyOf": [
7077
+ {
7078
+ "type": "object",
7079
+ "properties": {
7080
+ "id": { "type": "string", "pattern": "^[1-9][0-9]{0,15}$" },
7081
+ "title": { "type": "string" },
7082
+ "url": { "type": "string", "format": "uri" },
7083
+ "image": {
7084
+ "anyOf": [{ "type": "string", "format": "uri" }, { "type": "null" }]
7085
+ }
7086
+ },
7087
+ "required": ["id", "title", "url", "image"],
7088
+ "additionalProperties": false
7089
+ },
7090
+ { "type": "null" }
7091
+ ]
7092
+ },
7093
+ "response": { "anyOf": [{ "type": "string" }, { "type": "null" }] },
7094
+ "photo": { "anyOf": [{ "type": "string", "format": "uri" }, { "type": "null" }] }
7095
+ },
7096
+ "required": [
7097
+ "id",
7098
+ "reviewer",
7099
+ "date",
7100
+ "rating",
7101
+ "text",
7102
+ "listing",
7103
+ "response",
7104
+ "photo"
7105
+ ],
7106
+ "additionalProperties": false
7107
+ },
7108
+ "maxItems": 8
7109
+ }
7110
+ },
7111
+ "required": [
7112
+ "requestId",
7113
+ "accounting",
7114
+ "success",
7115
+ "status",
7116
+ "sourceUrl",
7117
+ "fetchedAt",
7118
+ "coverage",
7119
+ "listing",
7120
+ "shopId",
7121
+ "rating",
7122
+ "ratingCounts",
7123
+ "tags",
7124
+ "ratingFilter",
7125
+ "page",
7126
+ "totalPages",
7127
+ "nextPage",
7128
+ "reviews"
7129
+ ],
7130
+ "additionalProperties": false
7131
+ },
7132
+ {
7133
+ "type": "object",
7134
+ "properties": {
7135
+ "requestId": { "type": "string", "format": "uuid" },
7136
+ "accounting": {
7137
+ "type": "object",
7138
+ "properties": {
7139
+ "upstreamRequests": { "type": "integer", "minimum": 0 },
7140
+ "responseBytes": { "type": "integer", "minimum": 0 },
7141
+ "durationMs": { "type": "number", "minimum": 0 }
7142
+ },
7143
+ "required": ["upstreamRequests", "responseBytes", "durationMs"],
7144
+ "additionalProperties": false
7145
+ },
7146
+ "success": { "type": "boolean", "const": false },
7147
+ "status": { "type": "string", "enum": ["failed", "challenged"] },
7148
+ "failure": {
7149
+ "type": "object",
7150
+ "properties": {
7151
+ "code": {
7152
+ "type": "string",
7153
+ "enum": [
7154
+ "invalid_request",
7155
+ "unauthorized",
7156
+ "not_found",
7157
+ "upstream_challenged",
7158
+ "upstream_rate_limited",
7159
+ "upstream_error",
7160
+ "unsupported_page",
7161
+ "response_too_large",
7162
+ "unsafe_redirect",
7163
+ "request_limit",
7164
+ "timeout",
7165
+ "busy",
7166
+ "payload_too_complex"
7167
+ ]
7168
+ },
7169
+ "message": { "type": "string" }
7170
+ },
7171
+ "required": ["code", "message"],
7172
+ "additionalProperties": false
7173
+ }
7174
+ },
7175
+ "required": ["requestId", "accounting", "success", "status", "failure"],
7176
+ "additionalProperties": false
7177
+ }
7178
+ ]
7179
+ }
7180
+ },
7181
+ {
7182
+ "platform": "etsy",
7183
+ "action": "search-suggestions",
7184
+ "operation": "etsySearchSuggestions",
7185
+ "method": "GET",
7186
+ "path": "/v1/etsy/search/suggestions",
7187
+ "description": "Retrieve Etsy search autocomplete terms for a partial query. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Responses preserve status, coverage, null values and pagination tokens.",
7188
+ "inputSchema": {
7189
+ "type": "object",
7190
+ "properties": {
7191
+ "query": {
7192
+ "type": "string",
7193
+ "minLength": 1,
7194
+ "maxLength": 200,
7195
+ "pattern": "^[^\\u0000-\\u001f\\u007f-\\u009f]+$",
6521
7196
  "description": "Partial search text (1-200 characters)."
6522
7197
  }
6523
7198
  },
@@ -7176,165 +7851,473 @@
7176
7851
  "text": { "type": "string" },
7177
7852
  "updatedAt": { "anyOf": [{ "type": "string" }, { "type": "null" }] }
7178
7853
  },
7179
- "required": ["text", "updatedAt"],
7180
- "additionalProperties": false
7181
- },
7182
- { "type": "null" }
7183
- ]
7184
- },
7185
- "latestActivity": {
7186
- "anyOf": [
7187
- {
7188
- "type": "object",
7189
- "properties": {
7190
- "type": { "type": "string" },
7191
- "date": { "type": "string", "format": "date-time" }
7854
+ "required": ["text", "updatedAt"],
7855
+ "additionalProperties": false
7856
+ },
7857
+ { "type": "null" }
7858
+ ]
7859
+ },
7860
+ "latestActivity": {
7861
+ "anyOf": [
7862
+ {
7863
+ "type": "object",
7864
+ "properties": {
7865
+ "type": { "type": "string" },
7866
+ "date": { "type": "string", "format": "date-time" }
7867
+ },
7868
+ "required": ["type", "date"],
7869
+ "additionalProperties": false
7870
+ },
7871
+ { "type": "null" }
7872
+ ]
7873
+ },
7874
+ "ownerUserId": {
7875
+ "anyOf": [{ "type": "string", "pattern": "^[0-9]{1,20}$" }, { "type": "null" }]
7876
+ },
7877
+ "members": {
7878
+ "type": "array",
7879
+ "items": {
7880
+ "type": "object",
7881
+ "properties": {
7882
+ "id": {
7883
+ "anyOf": [
7884
+ { "type": "string", "pattern": "^[0-9]{1,20}$" },
7885
+ { "type": "null" }
7886
+ ]
7887
+ },
7888
+ "name": { "type": "string" },
7889
+ "role": { "anyOf": [{ "type": "string" }, { "type": "null" }] },
7890
+ "bio": { "anyOf": [{ "type": "string" }, { "type": "null" }] },
7891
+ "avatar": {
7892
+ "anyOf": [{ "type": "string", "format": "uri" }, { "type": "null" }]
7893
+ }
7894
+ },
7895
+ "required": ["id", "name", "role", "bio", "avatar"],
7896
+ "additionalProperties": false
7897
+ }
7898
+ },
7899
+ "faq": {
7900
+ "type": "array",
7901
+ "items": {
7902
+ "type": "object",
7903
+ "properties": {
7904
+ "question": { "type": "string" },
7905
+ "answer": { "type": "string" }
7906
+ },
7907
+ "required": ["question", "answer"],
7908
+ "additionalProperties": false
7909
+ }
7910
+ },
7911
+ "policiesUpdatedAt": { "anyOf": [{ "type": "string" }, { "type": "null" }] },
7912
+ "featuredListings": {
7913
+ "type": "array",
7914
+ "items": {
7915
+ "type": "object",
7916
+ "properties": {
7917
+ "id": { "type": "string", "pattern": "^[1-9][0-9]{0,15}$" },
7918
+ "url": { "type": "string", "format": "uri" },
7919
+ "title": { "type": "string" },
7920
+ "seller": { "anyOf": [{ "type": "string" }, { "type": "null" }] },
7921
+ "shopId": {
7922
+ "anyOf": [
7923
+ { "type": "string", "pattern": "^[0-9]{1,20}$" },
7924
+ { "type": "null" }
7925
+ ]
7926
+ },
7927
+ "price": {
7928
+ "type": "object",
7929
+ "properties": {
7930
+ "current": {
7931
+ "anyOf": [{ "type": "number", "minimum": 0 }, { "type": "null" }]
7932
+ },
7933
+ "original": {
7934
+ "anyOf": [{ "type": "number", "minimum": 0 }, { "type": "null" }]
7935
+ },
7936
+ "currency": { "type": "string", "pattern": "^[A-Z]{3}$" }
7937
+ },
7938
+ "required": ["current", "original", "currency"],
7939
+ "additionalProperties": false
7940
+ },
7941
+ "discountPercent": {
7942
+ "anyOf": [
7943
+ { "type": "integer", "minimum": 0, "maximum": 100 },
7944
+ { "type": "null" }
7945
+ ]
7946
+ },
7947
+ "image_urls": {
7948
+ "type": "array",
7949
+ "items": { "type": "string", "format": "uri" }
7950
+ },
7951
+ "rating": {
7952
+ "type": "object",
7953
+ "properties": {
7954
+ "average": {
7955
+ "anyOf": [
7956
+ { "type": "number", "minimum": 0, "maximum": 5 },
7957
+ { "type": "null" }
7958
+ ]
7959
+ },
7960
+ "count": {
7961
+ "anyOf": [{ "type": "integer", "minimum": 0 }, { "type": "null" }]
7962
+ }
7963
+ },
7964
+ "required": ["average", "count"],
7965
+ "additionalProperties": false
7966
+ },
7967
+ "freeShipping": { "type": "boolean" },
7968
+ "isBestseller": { "type": "boolean" },
7969
+ "isAd": { "type": "boolean" }
7970
+ },
7971
+ "required": [
7972
+ "id",
7973
+ "url",
7974
+ "title",
7975
+ "seller",
7976
+ "shopId",
7977
+ "price",
7978
+ "discountPercent",
7979
+ "image_urls",
7980
+ "rating",
7981
+ "freeShipping",
7982
+ "isBestseller",
7983
+ "isAd"
7984
+ ],
7985
+ "additionalProperties": false
7986
+ }
7987
+ }
7988
+ },
7989
+ "required": [
7990
+ "name",
7991
+ "id",
7992
+ "url",
7993
+ "headline",
7994
+ "location",
7995
+ "logo",
7996
+ "banner",
7997
+ "sales",
7998
+ "admirers",
7999
+ "onEtsySince",
8000
+ "rating",
8001
+ "isStarSeller",
8002
+ "listingCount",
8003
+ "sections",
8004
+ "announcement",
8005
+ "latestActivity",
8006
+ "ownerUserId",
8007
+ "members",
8008
+ "faq",
8009
+ "policiesUpdatedAt",
8010
+ "featuredListings"
8011
+ ],
8012
+ "additionalProperties": false
8013
+ }
8014
+ },
8015
+ "required": [
8016
+ "requestId",
8017
+ "accounting",
8018
+ "success",
8019
+ "status",
8020
+ "sourceUrl",
8021
+ "fetchedAt",
8022
+ "coverage",
8023
+ "shop"
8024
+ ],
8025
+ "additionalProperties": false
8026
+ },
8027
+ {
8028
+ "type": "object",
8029
+ "properties": {
8030
+ "requestId": { "type": "string", "format": "uuid" },
8031
+ "accounting": {
8032
+ "type": "object",
8033
+ "properties": {
8034
+ "upstreamRequests": { "type": "integer", "minimum": 0 },
8035
+ "responseBytes": { "type": "integer", "minimum": 0 },
8036
+ "durationMs": { "type": "number", "minimum": 0 }
8037
+ },
8038
+ "required": ["upstreamRequests", "responseBytes", "durationMs"],
8039
+ "additionalProperties": false
8040
+ },
8041
+ "success": { "type": "boolean", "const": false },
8042
+ "status": { "type": "string", "enum": ["failed", "challenged"] },
8043
+ "failure": {
8044
+ "type": "object",
8045
+ "properties": {
8046
+ "code": {
8047
+ "type": "string",
8048
+ "enum": [
8049
+ "invalid_request",
8050
+ "unauthorized",
8051
+ "not_found",
8052
+ "upstream_challenged",
8053
+ "upstream_rate_limited",
8054
+ "upstream_error",
8055
+ "unsupported_page",
8056
+ "response_too_large",
8057
+ "unsafe_redirect",
8058
+ "request_limit",
8059
+ "timeout",
8060
+ "busy",
8061
+ "payload_too_complex"
8062
+ ]
8063
+ },
8064
+ "message": { "type": "string" }
8065
+ },
8066
+ "required": ["code", "message"],
8067
+ "additionalProperties": false
8068
+ }
8069
+ },
8070
+ "required": ["requestId", "accounting", "success", "status", "failure"],
8071
+ "additionalProperties": false
8072
+ }
8073
+ ]
8074
+ }
8075
+ },
8076
+ {
8077
+ "platform": "etsy",
8078
+ "action": "listing-similar",
8079
+ "operation": "etsyListingSimilar",
8080
+ "method": "GET",
8081
+ "path": "/v1/etsy/listing/similar",
8082
+ "description": "Read the listings Etsy recommends next to a public listing: up to 24 similar items and the promoted listings shown with them, as listing cards with canonical URL, title, shop ID, prices in the chosen currency, discount, image and badges. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Responses preserve status, coverage, null values and pagination tokens.",
8083
+ "inputSchema": {
8084
+ "type": "object",
8085
+ "properties": {
8086
+ "id": { "type": "string", "pattern": "^[1-9][0-9]{0,15}$" },
8087
+ "url": { "type": "string", "maxLength": 2048, "x-runtime-refinement": true },
8088
+ "currency": {
8089
+ "type": "string",
8090
+ "enum": [
8091
+ "AUD",
8092
+ "BRL",
8093
+ "CAD",
8094
+ "CHF",
8095
+ "CNY",
8096
+ "CZK",
8097
+ "DKK",
8098
+ "EUR",
8099
+ "GBP",
8100
+ "HKD",
8101
+ "HUF",
8102
+ "IDR",
8103
+ "ILS",
8104
+ "INR",
8105
+ "JPY",
8106
+ "MAD",
8107
+ "MXN",
8108
+ "MYR",
8109
+ "NOK",
8110
+ "NZD",
8111
+ "PHP",
8112
+ "PLN",
8113
+ "SEK",
8114
+ "SGD",
8115
+ "THB",
8116
+ "TRY",
8117
+ "TWD",
8118
+ "USD",
8119
+ "VND",
8120
+ "ZAR"
8121
+ ],
8122
+ "default": "USD"
8123
+ }
8124
+ },
8125
+ "required": [],
8126
+ "additionalProperties": false,
8127
+ "x-runtime-refinement": true
8128
+ },
8129
+ "outputSchema": {
8130
+ "anyOf": [
8131
+ {
8132
+ "type": "object",
8133
+ "properties": {
8134
+ "requestId": { "type": "string", "format": "uuid" },
8135
+ "accounting": {
8136
+ "type": "object",
8137
+ "properties": {
8138
+ "upstreamRequests": { "type": "integer", "minimum": 0 },
8139
+ "responseBytes": { "type": "integer", "minimum": 0 },
8140
+ "durationMs": { "type": "number", "minimum": 0 }
8141
+ },
8142
+ "required": ["upstreamRequests", "responseBytes", "durationMs"],
8143
+ "additionalProperties": false
8144
+ },
8145
+ "success": { "type": "boolean", "const": true },
8146
+ "status": { "type": "string", "enum": ["success", "partial"] },
8147
+ "sourceUrl": { "type": "string", "format": "uri" },
8148
+ "fetchedAt": { "type": "string", "format": "date-time" },
8149
+ "coverage": {
8150
+ "type": "object",
8151
+ "properties": {
8152
+ "source": { "type": "string", "enum": ["public_page", "public_api"] },
8153
+ "complete": { "type": "boolean" },
8154
+ "warnings": {
8155
+ "type": "array",
8156
+ "items": {
8157
+ "type": "string",
8158
+ "enum": [
8159
+ "malformed_cards_omitted",
8160
+ "organic_results_partially_embedded",
8161
+ "listing_count_unknown",
8162
+ "review_pages_unknown",
8163
+ "malformed_reviews_omitted"
8164
+ ]
8165
+ }
8166
+ }
8167
+ },
8168
+ "required": ["source", "complete", "warnings"],
8169
+ "additionalProperties": false
8170
+ },
8171
+ "listing": {
8172
+ "type": "object",
8173
+ "properties": {
8174
+ "id": { "type": "string", "pattern": "^[1-9][0-9]{0,15}$" },
8175
+ "url": { "type": "string", "format": "uri" }
8176
+ },
8177
+ "required": ["id", "url"],
8178
+ "additionalProperties": false
8179
+ },
8180
+ "items": {
8181
+ "type": "array",
8182
+ "items": {
8183
+ "type": "object",
8184
+ "properties": {
8185
+ "id": { "type": "string", "pattern": "^[1-9][0-9]{0,15}$" },
8186
+ "url": { "type": "string", "format": "uri" },
8187
+ "title": { "type": "string" },
8188
+ "seller": { "anyOf": [{ "type": "string" }, { "type": "null" }] },
8189
+ "shopId": {
8190
+ "anyOf": [{ "type": "string", "pattern": "^[0-9]{1,20}$" }, { "type": "null" }]
8191
+ },
8192
+ "price": {
8193
+ "type": "object",
8194
+ "properties": {
8195
+ "current": {
8196
+ "anyOf": [{ "type": "number", "minimum": 0 }, { "type": "null" }]
8197
+ },
8198
+ "original": {
8199
+ "anyOf": [{ "type": "number", "minimum": 0 }, { "type": "null" }]
7192
8200
  },
7193
- "required": ["type", "date"],
7194
- "additionalProperties": false
8201
+ "currency": { "type": "string", "pattern": "^[A-Z]{3}$" }
7195
8202
  },
7196
- { "type": "null" }
7197
- ]
7198
- },
7199
- "ownerUserId": {
7200
- "anyOf": [{ "type": "string", "pattern": "^[0-9]{1,20}$" }, { "type": "null" }]
7201
- },
7202
- "members": {
7203
- "type": "array",
7204
- "items": {
8203
+ "required": ["current", "original", "currency"],
8204
+ "additionalProperties": false
8205
+ },
8206
+ "discountPercent": {
8207
+ "anyOf": [
8208
+ { "type": "integer", "minimum": 0, "maximum": 100 },
8209
+ { "type": "null" }
8210
+ ]
8211
+ },
8212
+ "image_urls": { "type": "array", "items": { "type": "string", "format": "uri" } },
8213
+ "rating": {
7205
8214
  "type": "object",
7206
8215
  "properties": {
7207
- "id": {
8216
+ "average": {
7208
8217
  "anyOf": [
7209
- { "type": "string", "pattern": "^[0-9]{1,20}$" },
8218
+ { "type": "number", "minimum": 0, "maximum": 5 },
7210
8219
  { "type": "null" }
7211
8220
  ]
7212
8221
  },
7213
- "name": { "type": "string" },
7214
- "role": { "anyOf": [{ "type": "string" }, { "type": "null" }] },
7215
- "bio": { "anyOf": [{ "type": "string" }, { "type": "null" }] },
7216
- "avatar": {
7217
- "anyOf": [{ "type": "string", "format": "uri" }, { "type": "null" }]
8222
+ "count": {
8223
+ "anyOf": [{ "type": "integer", "minimum": 0 }, { "type": "null" }]
7218
8224
  }
7219
8225
  },
7220
- "required": ["id", "name", "role", "bio", "avatar"],
8226
+ "required": ["average", "count"],
7221
8227
  "additionalProperties": false
7222
- }
8228
+ },
8229
+ "freeShipping": { "type": "boolean" },
8230
+ "isBestseller": { "type": "boolean" },
8231
+ "isAd": { "type": "boolean" }
7223
8232
  },
7224
- "faq": {
7225
- "type": "array",
7226
- "items": {
8233
+ "required": [
8234
+ "id",
8235
+ "url",
8236
+ "title",
8237
+ "seller",
8238
+ "shopId",
8239
+ "price",
8240
+ "discountPercent",
8241
+ "image_urls",
8242
+ "rating",
8243
+ "freeShipping",
8244
+ "isBestseller",
8245
+ "isAd"
8246
+ ],
8247
+ "additionalProperties": false
8248
+ },
8249
+ "maxItems": 24
8250
+ },
8251
+ "ads": {
8252
+ "type": "array",
8253
+ "items": {
8254
+ "type": "object",
8255
+ "properties": {
8256
+ "id": { "type": "string", "pattern": "^[1-9][0-9]{0,15}$" },
8257
+ "url": { "type": "string", "format": "uri" },
8258
+ "title": { "type": "string" },
8259
+ "seller": { "anyOf": [{ "type": "string" }, { "type": "null" }] },
8260
+ "shopId": {
8261
+ "anyOf": [{ "type": "string", "pattern": "^[0-9]{1,20}$" }, { "type": "null" }]
8262
+ },
8263
+ "price": {
7227
8264
  "type": "object",
7228
8265
  "properties": {
7229
- "question": { "type": "string" },
7230
- "answer": { "type": "string" }
8266
+ "current": {
8267
+ "anyOf": [{ "type": "number", "minimum": 0 }, { "type": "null" }]
8268
+ },
8269
+ "original": {
8270
+ "anyOf": [{ "type": "number", "minimum": 0 }, { "type": "null" }]
8271
+ },
8272
+ "currency": { "type": "string", "pattern": "^[A-Z]{3}$" }
7231
8273
  },
7232
- "required": ["question", "answer"],
8274
+ "required": ["current", "original", "currency"],
7233
8275
  "additionalProperties": false
7234
- }
7235
- },
7236
- "policiesUpdatedAt": { "anyOf": [{ "type": "string" }, { "type": "null" }] },
7237
- "featuredListings": {
7238
- "type": "array",
7239
- "items": {
8276
+ },
8277
+ "discountPercent": {
8278
+ "anyOf": [
8279
+ { "type": "integer", "minimum": 0, "maximum": 100 },
8280
+ { "type": "null" }
8281
+ ]
8282
+ },
8283
+ "image_urls": { "type": "array", "items": { "type": "string", "format": "uri" } },
8284
+ "rating": {
7240
8285
  "type": "object",
7241
8286
  "properties": {
7242
- "id": { "type": "string", "pattern": "^[1-9][0-9]{0,15}$" },
7243
- "url": { "type": "string", "format": "uri" },
7244
- "title": { "type": "string" },
7245
- "seller": { "anyOf": [{ "type": "string" }, { "type": "null" }] },
7246
- "shopId": {
7247
- "anyOf": [
7248
- { "type": "string", "pattern": "^[0-9]{1,20}$" },
7249
- { "type": "null" }
7250
- ]
7251
- },
7252
- "price": {
7253
- "type": "object",
7254
- "properties": {
7255
- "current": {
7256
- "anyOf": [{ "type": "number", "minimum": 0 }, { "type": "null" }]
7257
- },
7258
- "original": {
7259
- "anyOf": [{ "type": "number", "minimum": 0 }, { "type": "null" }]
7260
- },
7261
- "currency": { "type": "string", "pattern": "^[A-Z]{3}$" }
7262
- },
7263
- "required": ["current", "original", "currency"],
7264
- "additionalProperties": false
7265
- },
7266
- "discountPercent": {
8287
+ "average": {
7267
8288
  "anyOf": [
7268
- { "type": "integer", "minimum": 0, "maximum": 100 },
8289
+ { "type": "number", "minimum": 0, "maximum": 5 },
7269
8290
  { "type": "null" }
7270
8291
  ]
7271
8292
  },
7272
- "image_urls": {
7273
- "type": "array",
7274
- "items": { "type": "string", "format": "uri" }
7275
- },
7276
- "rating": {
7277
- "type": "object",
7278
- "properties": {
7279
- "average": {
7280
- "anyOf": [
7281
- { "type": "number", "minimum": 0, "maximum": 5 },
7282
- { "type": "null" }
7283
- ]
7284
- },
7285
- "count": {
7286
- "anyOf": [{ "type": "integer", "minimum": 0 }, { "type": "null" }]
7287
- }
7288
- },
7289
- "required": ["average", "count"],
7290
- "additionalProperties": false
7291
- },
7292
- "freeShipping": { "type": "boolean" },
7293
- "isBestseller": { "type": "boolean" },
7294
- "isAd": { "type": "boolean" }
8293
+ "count": {
8294
+ "anyOf": [{ "type": "integer", "minimum": 0 }, { "type": "null" }]
8295
+ }
7295
8296
  },
7296
- "required": [
7297
- "id",
7298
- "url",
7299
- "title",
7300
- "seller",
7301
- "shopId",
7302
- "price",
7303
- "discountPercent",
7304
- "image_urls",
7305
- "rating",
7306
- "freeShipping",
7307
- "isBestseller",
7308
- "isAd"
7309
- ],
8297
+ "required": ["average", "count"],
7310
8298
  "additionalProperties": false
7311
- }
7312
- }
8299
+ },
8300
+ "freeShipping": { "type": "boolean" },
8301
+ "isBestseller": { "type": "boolean" },
8302
+ "isAd": { "type": "boolean" }
8303
+ },
8304
+ "required": [
8305
+ "id",
8306
+ "url",
8307
+ "title",
8308
+ "seller",
8309
+ "shopId",
8310
+ "price",
8311
+ "discountPercent",
8312
+ "image_urls",
8313
+ "rating",
8314
+ "freeShipping",
8315
+ "isBestseller",
8316
+ "isAd"
8317
+ ],
8318
+ "additionalProperties": false
7313
8319
  },
7314
- "required": [
7315
- "name",
7316
- "id",
7317
- "url",
7318
- "headline",
7319
- "location",
7320
- "logo",
7321
- "banner",
7322
- "sales",
7323
- "admirers",
7324
- "onEtsySince",
7325
- "rating",
7326
- "isStarSeller",
7327
- "listingCount",
7328
- "sections",
7329
- "announcement",
7330
- "latestActivity",
7331
- "ownerUserId",
7332
- "members",
7333
- "faq",
7334
- "policiesUpdatedAt",
7335
- "featuredListings"
7336
- ],
7337
- "additionalProperties": false
8320
+ "maxItems": 24
7338
8321
  }
7339
8322
  },
7340
8323
  "required": [
@@ -7345,7 +8328,9 @@
7345
8328
  "sourceUrl",
7346
8329
  "fetchedAt",
7347
8330
  "coverage",
7348
- "shop"
8331
+ "listing",
8332
+ "items",
8333
+ "ads"
7349
8334
  ],
7350
8335
  "additionalProperties": false
7351
8336
  },
@@ -7916,7 +8901,7 @@
7916
8901
  "operation": "etsySearch",
7917
8902
  "method": "GET",
7918
8903
  "path": "/v1/etsy/search",
7919
- "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. organic_results_partially_embedded marks the organic IDs returned without embedded product data. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Responses preserve status, coverage, null values and pagination tokens.",
8904
+ "description": "Read one Etsy search results page for a query: the ordered organic listing IDs (up to 48), a listing card for every organic result with shop, prices, discount, rating and badges, every promoted listing card and the total page count. organic_results_partially_embedded marks a page whose remaining organic IDs came back without card data. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Responses preserve status, coverage, null values and pagination tokens.",
7920
8905
  "inputSchema": {
7921
8906
  "type": "object",
7922
8907
  "properties": {
@@ -8412,7 +9397,7 @@
8412
9397
  "operation": "facebookEventDetails",
8413
9398
  "method": "GET",
8414
9399
  "path": "/v1/facebook/event/details",
8415
- "description": "Retrieve a public event with schedule, venue, description, hosts, tickets and attendance fields where exposed. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Responses preserve status, coverage, null values and pagination tokens.",
9400
+ "description": "Retrieve a public event with schedule, venue, description, hosts, tickets and attendance fields where exposed. A recurring event resolves to its current occurrence. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Responses preserve status, coverage, null values and pagination tokens.",
8416
9401
  "inputSchema": {
8417
9402
  "type": "object",
8418
9403
  "properties": {
@@ -8438,6 +9423,8 @@
8438
9423
  "type": "object",
8439
9424
  "properties": {
8440
9425
  "id": { "type": "string" },
9426
+ "series_id": { "anyOf": [{ "type": "string" }, { "type": "null" }] },
9427
+ "occurrence_id": { "anyOf": [{ "type": "string" }, { "type": "null" }] },
8441
9428
  "url": { "type": "string" },
8442
9429
  "name": { "type": "string" },
8443
9430
  "description": { "anyOf": [{ "type": "string" }, { "type": "null" }] },
@@ -8554,6 +9541,8 @@
8554
9541
  },
8555
9542
  "required": [
8556
9543
  "id",
9544
+ "series_id",
9545
+ "occurrence_id",
8557
9546
  "url",
8558
9547
  "name",
8559
9548
  "description",
@@ -8663,7 +9652,7 @@
8663
9652
  "operation": "facebookEventsDetails",
8664
9653
  "method": "GET",
8665
9654
  "path": "/v1/facebook/events/details",
8666
- "description": "Retrieve a public event with schedule, venue, description, hosts, tickets and attendance fields where exposed. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Responses preserve status, coverage, null values and pagination tokens.",
9655
+ "description": "Retrieve a public event with schedule, venue, description, hosts, tickets and attendance fields where exposed. A recurring event resolves to its current occurrence. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Responses preserve status, coverage, null values and pagination tokens.",
8667
9656
  "inputSchema": {
8668
9657
  "type": "object",
8669
9658
  "properties": {
@@ -9091,7 +10080,7 @@
9091
10080
  "operation": "facebookEventsSearch",
9092
10081
  "method": "GET",
9093
10082
  "path": "/v1/facebook/events/search",
9094
- "description": "Search public Facebook events by keyword with source continuation. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Responses preserve status, coverage, null values and pagination tokens.",
10083
+ "description": "Search public Facebook events by keyword, optionally narrowed to a city, a date range and a category, with source continuation. Each successful request costs 1 account credit, including partial results. Failures cost 0. HTTP 402 means insufficient credits. Responses preserve status, coverage, null values and pagination tokens.",
9095
10084
  "inputSchema": {
9096
10085
  "type": "object",
9097
10086
  "properties": {
@@ -9107,10 +10096,56 @@
9107
10096
  "minLength": 1,
9108
10097
  "maxLength": 16000,
9109
10098
  "description": "Opaque continuation from this service. Preserve it exactly; cursors are source- and route-specific."
10099
+ },
10100
+ "location_id": {
10101
+ "type": "string",
10102
+ "pattern": "^\\d{1,32}$",
10103
+ "description": "Numeric Facebook city ID that pins results to one place, as found at the end of an events explore URL (/events/explore/<city>/<id>/)."
10104
+ },
10105
+ "date_from": {
10106
+ "type": "string",
10107
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
10108
+ "x-runtime-refinement": true,
10109
+ "description": "First event day to include, as YYYY-MM-DD."
10110
+ },
10111
+ "date_to": {
10112
+ "type": "string",
10113
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
10114
+ "x-runtime-refinement": true,
10115
+ "description": "Last event day to include, as YYYY-MM-DD; requires date_from and defaults to the same day."
10116
+ },
10117
+ "category": {
10118
+ "type": "string",
10119
+ "enum": [
10120
+ "art",
10121
+ "causes",
10122
+ "classics",
10123
+ "comedy",
10124
+ "crafts",
10125
+ "dance",
10126
+ "drinks",
10127
+ "film",
10128
+ "fitness",
10129
+ "food",
10130
+ "games",
10131
+ "gardening",
10132
+ "health",
10133
+ "home",
10134
+ "music",
10135
+ "networking",
10136
+ "parties",
10137
+ "religion",
10138
+ "shopping",
10139
+ "sports",
10140
+ "theatre",
10141
+ "wellness"
10142
+ ],
10143
+ "description": "Event category: art, causes, classics, comedy, crafts, dance, drinks, film, fitness, food, games, gardening, health, home, music, networking, parties, religion, shopping, sports, theatre, wellness."
9110
10144
  }
9111
10145
  },
9112
10146
  "required": ["query"],
9113
- "additionalProperties": false
10147
+ "additionalProperties": false,
10148
+ "x-runtime-refinement": true
9114
10149
  },
9115
10150
  "outputSchema": {
9116
10151
  "anyOf": [