@kaminari-ad/mcp 0.6.0 → 0.8.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/CHANGELOG.md +13 -0
- package/dist/bin.js +3 -3
- package/dist/{chunk-CEKRYHCR.js → chunk-HZXVKCW3.js} +3 -3
- package/dist/{chunk-CEKRYHCR.js.map → chunk-HZXVKCW3.js.map} +1 -1
- package/dist/{chunk-AINV7DXM.js → chunk-ZZIYFLWG.js} +138 -42
- package/dist/chunk-ZZIYFLWG.js.map +1 -0
- package/dist/{http-bootstrap-DAPC3LFX.js → http-bootstrap-5SJGGI5Y.js} +4 -4
- package/dist/{http-bootstrap-DAPC3LFX.js.map → http-bootstrap-5SJGGI5Y.js.map} +1 -1
- package/dist/{stdio-bootstrap-4UHUIN7N.js → stdio-bootstrap-KIBN4X7J.js} +4 -4
- package/dist/{stdio-bootstrap-4UHUIN7N.js.map → stdio-bootstrap-KIBN4X7J.js.map} +1 -1
- package/package.json +1 -1
- package/dist/chunk-AINV7DXM.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.8.0] - 2026-07-10
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **VAST video-ad support.** `create_scan`, `create_bulk_scans`,
|
|
15
|
+
`create_campaign` (new `vast` campaign type), and `update_campaign` now
|
|
16
|
+
accept a `vast_tag` — an http(s) URL of a VAST endpoint or raw VAST XML —
|
|
17
|
+
mutually exclusive with `url` / `ad_tag`. Scan responses surface
|
|
18
|
+
`creative_kind` (`banner` | `video`) plus a `video` block (duration,
|
|
19
|
+
media-file URL, VAST version, ad system, VPAID flag, wrapper depth), and the
|
|
20
|
+
scan-list brief carries `is_vast`. Regenerated the OpenAPI type + zod-schema
|
|
21
|
+
snapshots against the updated `/api/v1` surface.
|
|
22
|
+
|
|
10
23
|
## [0.6.0] - 2026-06-30
|
|
11
24
|
|
|
12
25
|
### Changed
|
package/dist/bin.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { NAME, VERSION, err, ok } from './chunk-
|
|
2
|
+
import { NAME, VERSION, err, ok } from './chunk-HZXVKCW3.js';
|
|
3
3
|
import process from 'process';
|
|
4
4
|
import { z } from 'zod';
|
|
5
5
|
|
|
@@ -160,10 +160,10 @@ async function main() {
|
|
|
160
160
|
}
|
|
161
161
|
const config = configResult.value;
|
|
162
162
|
if (config.transport === "stdio") {
|
|
163
|
-
const { bootstrapStdio } = await import('./stdio-bootstrap-
|
|
163
|
+
const { bootstrapStdio } = await import('./stdio-bootstrap-KIBN4X7J.js');
|
|
164
164
|
return bootstrapStdio(config);
|
|
165
165
|
}
|
|
166
|
-
const { bootstrapHttp } = await import('./http-bootstrap-
|
|
166
|
+
const { bootstrapHttp } = await import('./http-bootstrap-5SJGGI5Y.js');
|
|
167
167
|
return bootstrapHttp(config);
|
|
168
168
|
}
|
|
169
169
|
main().then(
|
|
@@ -3,8 +3,8 @@ export { err, ok } from 'neverthrow';
|
|
|
3
3
|
|
|
4
4
|
// src/shared/version.ts
|
|
5
5
|
var NAME = "@kaminari-ad/mcp";
|
|
6
|
-
var VERSION = "0.
|
|
6
|
+
var VERSION = "0.8.0";
|
|
7
7
|
|
|
8
8
|
export { NAME, VERSION };
|
|
9
|
-
//# sourceMappingURL=chunk-
|
|
10
|
-
//# sourceMappingURL=chunk-
|
|
9
|
+
//# sourceMappingURL=chunk-HZXVKCW3.js.map
|
|
10
|
+
//# sourceMappingURL=chunk-HZXVKCW3.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/shared/version.ts"],"names":[],"mappings":";;;;AASO,IAAM,IAAA,GAAO;AACb,IAAM,OAAA,GAAU","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/shared/version.ts"],"names":[],"mappings":";;;;AASO,IAAM,IAAA,GAAO;AACb,IAAM,OAAA,GAAU","file":"chunk-HZXVKCW3.js","sourcesContent":["/**\n * Package version and name. Hard-coded as constants here, asserted to\n * match `package.json` by a unit test.\n *\n * Why not import `package.json`: it would force JSON-module support at\n * runtime and tsup-bundling would inline the entire manifest. Two\n * constants + one assertion test is simpler and gives the same safety.\n */\n\nexport const NAME = \"@kaminari-ad/mcp\";\nexport const VERSION = \"0.8.0\";\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { err, ok } from './chunk-
|
|
2
|
+
import { err, ok } from './chunk-HZXVKCW3.js';
|
|
3
3
|
import { createHash, randomUUID } from 'crypto';
|
|
4
4
|
import createClient from 'openapi-fetch';
|
|
5
5
|
import { fetch } from 'undici';
|
|
@@ -155,12 +155,16 @@ var OrganizationStatus = z.enum([
|
|
|
155
155
|
"suspended",
|
|
156
156
|
"rejected"
|
|
157
157
|
]);
|
|
158
|
+
var OrgTransitionAction = z.enum(["approve", "reject", "suspend", "reactivate"]);
|
|
159
|
+
var OrgTransitionOptionResponse = z.object({ target_status: OrganizationStatus, action: OrgTransitionAction }).passthrough();
|
|
158
160
|
var OrgResponse = z.object({
|
|
159
161
|
id: z.string().uuid(),
|
|
160
162
|
name: z.string(),
|
|
161
|
-
owner_id: z.string().
|
|
163
|
+
owner_id: z.union([z.string(), z.null()]),
|
|
162
164
|
status: OrganizationStatus,
|
|
165
|
+
domain: z.union([z.string(), z.null()]).optional(),
|
|
163
166
|
created_at: z.string().datetime({ offset: true }),
|
|
167
|
+
available_transitions: z.array(OrgTransitionOptionResponse).optional().default([]),
|
|
164
168
|
is_active: z.boolean()
|
|
165
169
|
}).passthrough();
|
|
166
170
|
z.object({ name: z.union([z.string(), z.null()]) }).partial().passthrough();
|
|
@@ -190,6 +194,7 @@ var UserResponse = z.object({
|
|
|
190
194
|
name: z.string(),
|
|
191
195
|
role_id: z.string().uuid(),
|
|
192
196
|
role_name: z.string(),
|
|
197
|
+
role_scope: z.string().optional().default("org"),
|
|
193
198
|
organization_id: z.string().uuid(),
|
|
194
199
|
organization_name: z.string(),
|
|
195
200
|
is_active: z.boolean(),
|
|
@@ -238,6 +243,7 @@ var ProxyTargetRequest = z.object({
|
|
|
238
243
|
z.object({
|
|
239
244
|
url: z.union([z.string(), z.null()]).optional(),
|
|
240
245
|
ad_tag: z.union([z.string(), z.null()]).optional(),
|
|
246
|
+
vast_tag: z.union([z.string(), z.null()]).optional(),
|
|
241
247
|
country_code: z.string().min(2).max(2),
|
|
242
248
|
emulator_id: z.string().min(1).max(100),
|
|
243
249
|
proxy: ProxyTargetRequest.optional(),
|
|
@@ -251,6 +257,7 @@ var ScanStatus = z.enum([
|
|
|
251
257
|
"crawled",
|
|
252
258
|
"checking",
|
|
253
259
|
"checking_async",
|
|
260
|
+
"rechecking",
|
|
254
261
|
"completed",
|
|
255
262
|
"partial",
|
|
256
263
|
"failed",
|
|
@@ -276,6 +283,14 @@ var RedirectHopResponse = z.object({
|
|
|
276
283
|
redirected_from: z.string(),
|
|
277
284
|
sub_requests: z.array(SubRequestResponse)
|
|
278
285
|
}).passthrough();
|
|
286
|
+
var VideoMetaResponse = z.object({
|
|
287
|
+
duration_ms: z.number().int().default(0),
|
|
288
|
+
mediafile_url: z.string().default(""),
|
|
289
|
+
vast_version: z.string().default(""),
|
|
290
|
+
ad_system: z.string().default(""),
|
|
291
|
+
is_vpaid: z.boolean().default(false),
|
|
292
|
+
wrapper_depth: z.number().int().default(0)
|
|
293
|
+
}).partial().passthrough();
|
|
279
294
|
var ProxyTargetResponse = z.object({
|
|
280
295
|
proxy_type: z.string(),
|
|
281
296
|
region: z.string().optional().default(""),
|
|
@@ -335,9 +350,12 @@ var ScanResponse = z.object({
|
|
|
335
350
|
report_url: z.string().optional().default(""),
|
|
336
351
|
public_report_url: z.string().optional().default(""),
|
|
337
352
|
ad_tag: z.union([z.string(), z.null()]).optional(),
|
|
353
|
+
vast_tag: z.union([z.string(), z.null()]).optional(),
|
|
354
|
+
creative_kind: z.string().optional().default("banner"),
|
|
338
355
|
creative_screenshot_url: z.string().optional().default(""),
|
|
339
356
|
creative_width: z.number().int().optional().default(0),
|
|
340
357
|
creative_height: z.number().int().optional().default(0),
|
|
358
|
+
video: z.union([VideoMetaResponse, z.null()]).optional(),
|
|
341
359
|
proxy: z.union([ProxyTargetResponse, z.null()]).optional(),
|
|
342
360
|
page_title: z.string(),
|
|
343
361
|
elapsed_ms: z.number().int(),
|
|
@@ -346,6 +364,8 @@ var ScanResponse = z.object({
|
|
|
346
364
|
classification: z.union([ScanClassificationResponse, z.null()]).optional(),
|
|
347
365
|
campaign_id: z.union([z.string(), z.null()]).optional(),
|
|
348
366
|
campaign_name: z.union([z.string(), z.null()]).optional(),
|
|
367
|
+
campaign_group_id: z.union([z.string(), z.null()]).optional(),
|
|
368
|
+
campaign_group_name: z.union([z.string(), z.null()]).optional(),
|
|
349
369
|
created_at: z.string().datetime({ offset: true }),
|
|
350
370
|
completed_at: z.union([z.string(), z.null()]),
|
|
351
371
|
landings: z.array(LandingResponse).optional()
|
|
@@ -367,7 +387,10 @@ var ScanBriefResponse = z.object({
|
|
|
367
387
|
created_at: z.string().datetime({ offset: true }),
|
|
368
388
|
campaign_id: z.union([z.string(), z.null()]).optional(),
|
|
369
389
|
campaign_name: z.union([z.string(), z.null()]).optional(),
|
|
370
|
-
is_ad_tag: z.boolean().optional().default(false)
|
|
390
|
+
is_ad_tag: z.boolean().optional().default(false),
|
|
391
|
+
is_vast: z.boolean().optional().default(false),
|
|
392
|
+
emulator_display_name: z.string().optional().default(""),
|
|
393
|
+
emulator_category: z.string().optional().default("")
|
|
371
394
|
}).passthrough();
|
|
372
395
|
z.object({
|
|
373
396
|
items: z.array(ScanBriefResponse),
|
|
@@ -379,6 +402,7 @@ z.object({
|
|
|
379
402
|
z.object({
|
|
380
403
|
url: z.union([z.string(), z.null()]).optional(),
|
|
381
404
|
ad_tag: z.union([z.string(), z.null()]).optional(),
|
|
405
|
+
vast_tag: z.union([z.string(), z.null()]).optional(),
|
|
382
406
|
country_codes: z.array(z.string()).min(1),
|
|
383
407
|
emulator_id: z.string().min(1).max(100),
|
|
384
408
|
proxy: ProxyTargetRequest.optional(),
|
|
@@ -431,6 +455,7 @@ z.object({
|
|
|
431
455
|
campaign_type: z.string().optional().default("url"),
|
|
432
456
|
url: z.union([z.string(), z.null()]).optional(),
|
|
433
457
|
ad_tag: z.union([z.string(), z.null()]).optional(),
|
|
458
|
+
vast_tag: z.union([z.string(), z.null()]).optional(),
|
|
434
459
|
country_codes: z.array(z.string()).min(1),
|
|
435
460
|
group_id: z.union([z.string(), z.null()]).optional(),
|
|
436
461
|
emulator_categories: z.array(z.string()).optional(),
|
|
@@ -459,6 +484,7 @@ var CampaignResponse = z.object({
|
|
|
459
484
|
campaign_type: z.string().optional().default("url"),
|
|
460
485
|
url: z.string(),
|
|
461
486
|
ad_tag: z.union([z.string(), z.null()]).optional(),
|
|
487
|
+
vast_tag: z.union([z.string(), z.null()]).optional(),
|
|
462
488
|
country_codes: z.array(z.string()),
|
|
463
489
|
group_id: z.string().uuid(),
|
|
464
490
|
emulator_selection: EmulatorSelectionResponse,
|
|
@@ -488,12 +514,14 @@ var CampaignPickerItem = z.object({
|
|
|
488
514
|
id: z.string().uuid(),
|
|
489
515
|
name: z.string(),
|
|
490
516
|
group_id: z.string().uuid(),
|
|
491
|
-
is_archived: z.boolean()
|
|
517
|
+
is_archived: z.boolean(),
|
|
518
|
+
policy_set_id: z.union([z.string(), z.null()]).optional()
|
|
492
519
|
}).passthrough();
|
|
493
520
|
z.object({
|
|
494
521
|
name: z.union([z.string(), z.null()]),
|
|
495
522
|
url: z.union([z.string(), z.null()]),
|
|
496
523
|
ad_tag: z.union([z.string(), z.null()]),
|
|
524
|
+
vast_tag: z.union([z.string(), z.null()]),
|
|
497
525
|
country_codes: z.union([z.array(z.string()), z.null()]),
|
|
498
526
|
group_id: z.union([z.string(), z.null()]),
|
|
499
527
|
emulator_categories: z.union([z.array(z.string()), z.null()]),
|
|
@@ -555,6 +583,7 @@ var ScanTagResponse = z.object({
|
|
|
555
583
|
tag_slug: z.string(),
|
|
556
584
|
detail: z.string(),
|
|
557
585
|
url: z.string().optional().default(""),
|
|
586
|
+
surface: z.string().optional().default("page"),
|
|
558
587
|
display_name: z.string().optional().default(""),
|
|
559
588
|
category: z.string().optional().default(""),
|
|
560
589
|
severity: z.string().optional().default(""),
|
|
@@ -566,12 +595,13 @@ var TagDefinitionWithStatsResponse = z.object({
|
|
|
566
595
|
source: z.string(),
|
|
567
596
|
display_name: z.string(),
|
|
568
597
|
description: z.string(),
|
|
569
|
-
|
|
598
|
+
scope: z.string(),
|
|
570
599
|
organization_id: z.union([z.string(), z.null()]),
|
|
571
600
|
visibility: z.string(),
|
|
572
601
|
severity: z.string(),
|
|
573
602
|
scans_count: z.number().int(),
|
|
574
|
-
rules_count: z.number().int()
|
|
603
|
+
rules_count: z.number().int(),
|
|
604
|
+
archived_at: z.union([z.string(), z.null()]).optional()
|
|
575
605
|
}).passthrough();
|
|
576
606
|
var LinkedRuleResponse = z.object({
|
|
577
607
|
id: z.string().uuid(),
|
|
@@ -586,12 +616,13 @@ var TagDefinitionDetailResponse = z.object({
|
|
|
586
616
|
source: z.string(),
|
|
587
617
|
display_name: z.string(),
|
|
588
618
|
description: z.string(),
|
|
589
|
-
|
|
619
|
+
scope: z.string(),
|
|
590
620
|
organization_id: z.union([z.string(), z.null()]),
|
|
591
621
|
visibility: z.string(),
|
|
592
622
|
severity: z.string(),
|
|
593
623
|
scans_count: z.number().int(),
|
|
594
624
|
rules_count: z.number().int(),
|
|
625
|
+
archived_at: z.union([z.string(), z.null()]).optional(),
|
|
595
626
|
linked_rules: z.array(LinkedRuleResponse).optional()
|
|
596
627
|
}).passthrough();
|
|
597
628
|
var TagVisibility = z.enum(["hidden", "internal", "public"]);
|
|
@@ -611,14 +642,15 @@ z.object({
|
|
|
611
642
|
}).passthrough();
|
|
612
643
|
var CustomRuleResponse = z.object({
|
|
613
644
|
id: z.string().uuid(),
|
|
614
|
-
organization_id: z.string().
|
|
645
|
+
organization_id: z.union([z.string(), z.null()]),
|
|
615
646
|
name: z.string(),
|
|
616
647
|
tag_slug: z.string(),
|
|
617
648
|
rule_type: z.string(),
|
|
618
649
|
config: z.object({}).partial().passthrough(),
|
|
619
650
|
target: z.string(),
|
|
620
651
|
is_active: z.boolean(),
|
|
621
|
-
created_at: z.string().datetime({ offset: true })
|
|
652
|
+
created_at: z.string().datetime({ offset: true }),
|
|
653
|
+
scope: z.string().optional().default("personal")
|
|
622
654
|
}).passthrough();
|
|
623
655
|
z.object({
|
|
624
656
|
items: z.array(CustomRuleResponse),
|
|
@@ -638,7 +670,10 @@ z.object({
|
|
|
638
670
|
scan_id: z.string().uuid(),
|
|
639
671
|
rule_type: z.string(),
|
|
640
672
|
config: z.object({}).partial().passthrough(),
|
|
641
|
-
target: z.string().optional().default("page")
|
|
673
|
+
target: z.string().optional().default("page"),
|
|
674
|
+
name: z.string().optional().default("Test Rule"),
|
|
675
|
+
context: z.enum(["isolated", "production"]).optional().default("isolated"),
|
|
676
|
+
rule_id: z.union([z.string(), z.null()]).optional()
|
|
642
677
|
}).passthrough();
|
|
643
678
|
var RuleTestTagResult = z.object({ tag_slug: z.string(), detail: z.string().optional().default("") }).passthrough();
|
|
644
679
|
var RuleTestResponse = z.object({
|
|
@@ -681,7 +716,8 @@ var PolicyEntryRequest = z.object({
|
|
|
681
716
|
z.object({
|
|
682
717
|
name: z.string().min(1).max(200),
|
|
683
718
|
description: z.string().max(2e3).optional().default(""),
|
|
684
|
-
entries: z.array(PolicyEntryRequest).min(1).max(500)
|
|
719
|
+
entries: z.array(PolicyEntryRequest).min(1).max(500),
|
|
720
|
+
campaign_ids: z.array(z.string().uuid()).max(2e3).optional()
|
|
685
721
|
}).passthrough();
|
|
686
722
|
var PolicyEntryIabV3Response = z.object({
|
|
687
723
|
tier1: z.string(),
|
|
@@ -712,6 +748,7 @@ var PolicyEntryResponse = z.object({
|
|
|
712
748
|
custom_taxonomy: z.union([PolicyEntryCustomTaxonomyResponse, z.null()]).optional(),
|
|
713
749
|
country_codes: z.array(z.string())
|
|
714
750
|
}).passthrough();
|
|
751
|
+
var LinkedCampaignResponse = z.object({ id: z.string().uuid(), name: z.string(), is_archived: z.boolean() }).passthrough();
|
|
715
752
|
var PolicySetResponse = z.object({
|
|
716
753
|
id: z.string().uuid(),
|
|
717
754
|
name: z.string(),
|
|
@@ -720,6 +757,8 @@ var PolicySetResponse = z.object({
|
|
|
720
757
|
visibility: z.string(),
|
|
721
758
|
is_approved: z.boolean(),
|
|
722
759
|
entries: z.array(PolicyEntryResponse),
|
|
760
|
+
campaigns: z.array(LinkedCampaignResponse).optional(),
|
|
761
|
+
campaigns_total: z.number().int().optional().default(0),
|
|
723
762
|
created_at: z.string().datetime({ offset: true })
|
|
724
763
|
}).passthrough();
|
|
725
764
|
var VisibilityType = z.enum(["private", "public"]);
|
|
@@ -743,9 +782,22 @@ z.object({
|
|
|
743
782
|
z.object({
|
|
744
783
|
name: z.string().min(1).max(200),
|
|
745
784
|
description: z.string().max(2e3).optional().default(""),
|
|
746
|
-
entries: z.array(PolicyEntryRequest).min(1).max(500)
|
|
785
|
+
entries: z.array(PolicyEntryRequest).min(1).max(500),
|
|
786
|
+
campaign_ids: z.array(z.string().uuid()).max(2e3).optional()
|
|
747
787
|
}).passthrough();
|
|
748
|
-
|
|
788
|
+
z.object({
|
|
789
|
+
items: z.array(LinkedCampaignResponse),
|
|
790
|
+
total: z.number().int(),
|
|
791
|
+
page: z.number().int(),
|
|
792
|
+
limit: z.number().int(),
|
|
793
|
+
pages: z.number().int()
|
|
794
|
+
}).passthrough();
|
|
795
|
+
z.object({ campaign_ids: z.array(z.string().uuid()).min(1).max(500) }).passthrough();
|
|
796
|
+
z.object({
|
|
797
|
+
campaign_ids: z.array(z.string().uuid()).max(500),
|
|
798
|
+
detach_all: z.boolean().default(false)
|
|
799
|
+
}).partial().passthrough();
|
|
800
|
+
var AlertStatus = z.enum(["open", "escalated", "resolved", "dismissed"]);
|
|
749
801
|
z.union([AlertStatus, z.null()]).optional();
|
|
750
802
|
var AlertResponse = z.object({
|
|
751
803
|
id: z.string().uuid(),
|
|
@@ -756,7 +808,7 @@ var AlertResponse = z.object({
|
|
|
756
808
|
organization_id: z.string().uuid(),
|
|
757
809
|
tag_slug: z.string(),
|
|
758
810
|
country_code: z.string(),
|
|
759
|
-
status:
|
|
811
|
+
status: AlertStatus,
|
|
760
812
|
closed_by: z.union([z.string(), z.null()]),
|
|
761
813
|
created_at: z.string().datetime({ offset: true }),
|
|
762
814
|
updated_at: z.union([z.string(), z.null()]),
|
|
@@ -774,9 +826,17 @@ z.object({
|
|
|
774
826
|
pages: z.number().int()
|
|
775
827
|
}).passthrough();
|
|
776
828
|
z.object({ status: AlertStatus }).passthrough();
|
|
829
|
+
z.object({
|
|
830
|
+
status: AlertStatus,
|
|
831
|
+
ids: z.union([z.array(z.string().uuid()), z.null()]).optional(),
|
|
832
|
+
all_matching: z.boolean().optional().default(false),
|
|
833
|
+
filter_status: z.union([AlertStatus, z.null()]).optional(),
|
|
834
|
+
filter_campaign_id: z.union([z.string(), z.null()]).optional()
|
|
835
|
+
}).passthrough();
|
|
836
|
+
z.object({ updated: z.number().int(), skipped: z.number().int() }).passthrough();
|
|
777
837
|
var AlertStatsResponse = z.object({
|
|
778
838
|
open: z.number().int(),
|
|
779
|
-
|
|
839
|
+
escalated: z.number().int(),
|
|
780
840
|
resolved: z.number().int(),
|
|
781
841
|
dismissed: z.number().int()
|
|
782
842
|
}).passthrough();
|
|
@@ -846,6 +906,7 @@ var BalanceTransactionResponse = z.object({
|
|
|
846
906
|
description: z.string(),
|
|
847
907
|
reference_kind: z.union([z.string(), z.null()]),
|
|
848
908
|
reference_id: z.union([z.string(), z.null()]),
|
|
909
|
+
document_number: z.union([z.string(), z.null()]).optional(),
|
|
849
910
|
actor_user_id: z.union([z.string(), z.null()]),
|
|
850
911
|
created_at: z.string().datetime({ offset: true })
|
|
851
912
|
}).passthrough();
|
|
@@ -950,6 +1011,7 @@ var AlertNotificationDestinationResponse = z.object({
|
|
|
950
1011
|
telegram_chat_type: z.union([z.string(), z.null()]),
|
|
951
1012
|
email_address: z.union([z.string(), z.null()]),
|
|
952
1013
|
included_label_keys: z.array(z.string()),
|
|
1014
|
+
included_statuses: z.array(z.string()),
|
|
953
1015
|
created_at: z.string().datetime({ offset: true }),
|
|
954
1016
|
updated_at: z.string().datetime({ offset: true })
|
|
955
1017
|
}).passthrough();
|
|
@@ -974,6 +1036,10 @@ var InvoiceResponse = z.object({
|
|
|
974
1036
|
type: z.string(),
|
|
975
1037
|
status: z.string(),
|
|
976
1038
|
total_micros: z.number().int(),
|
|
1039
|
+
net_micros: z.number().int(),
|
|
1040
|
+
vat_micros: z.number().int(),
|
|
1041
|
+
vat_rate: z.string(),
|
|
1042
|
+
vat_reason: z.string(),
|
|
977
1043
|
currency: z.string(),
|
|
978
1044
|
period_start: z.union([z.string(), z.null()]),
|
|
979
1045
|
period_end: z.union([z.string(), z.null()]),
|
|
@@ -992,7 +1058,6 @@ z.object({
|
|
|
992
1058
|
limit: z.number().int(),
|
|
993
1059
|
pages: z.number().int()
|
|
994
1060
|
}).passthrough();
|
|
995
|
-
z.object({ url: z.union([z.string(), z.null()]), ready: z.boolean() }).passthrough();
|
|
996
1061
|
z.object({
|
|
997
1062
|
name: z.string().min(2).max(100),
|
|
998
1063
|
email: z.string().email(),
|
|
@@ -1224,6 +1289,7 @@ var CampaignSchema = schemas.CampaignResponse.pick({
|
|
|
1224
1289
|
campaign_type: true,
|
|
1225
1290
|
url: true,
|
|
1226
1291
|
ad_tag: true,
|
|
1292
|
+
vast_tag: true,
|
|
1227
1293
|
country_codes: true,
|
|
1228
1294
|
group_id: true,
|
|
1229
1295
|
emulator_selection: true,
|
|
@@ -1460,7 +1526,7 @@ var RuleTestSchema = schemas.RuleTestResponse.pick({
|
|
|
1460
1526
|
var parseRuleTest = (raw) => parseWithSchema(RuleTestSchema, raw, "rule-test");
|
|
1461
1527
|
var AlertStatsSchema = schemas.AlertStatsResponse.pick({
|
|
1462
1528
|
open: true,
|
|
1463
|
-
|
|
1529
|
+
escalated: true,
|
|
1464
1530
|
resolved: true,
|
|
1465
1531
|
dismissed: true
|
|
1466
1532
|
}).strip();
|
|
@@ -1653,6 +1719,9 @@ var ScanSchema = schemas.ScanResponse.pick({
|
|
|
1653
1719
|
report_url: true,
|
|
1654
1720
|
public_report_url: true,
|
|
1655
1721
|
ad_tag: true,
|
|
1722
|
+
vast_tag: true,
|
|
1723
|
+
creative_kind: true,
|
|
1724
|
+
video: true,
|
|
1656
1725
|
creative_screenshot_url: true,
|
|
1657
1726
|
page_title: true,
|
|
1658
1727
|
elapsed_ms: true,
|
|
@@ -1682,6 +1751,7 @@ var ScanBriefSchema = schemas.ScanBriefResponse.pick({
|
|
|
1682
1751
|
campaign_id: true,
|
|
1683
1752
|
campaign_name: true,
|
|
1684
1753
|
is_ad_tag: true,
|
|
1754
|
+
is_vast: true,
|
|
1685
1755
|
created_at: true
|
|
1686
1756
|
}).strip();
|
|
1687
1757
|
var parseScanPage = (raw) => parsePagedWithItemSchema(ScanBriefSchema, raw, "scans");
|
|
@@ -1692,7 +1762,7 @@ var TagDefinitionSchema = schemas.TagDefinitionWithStatsResponse.pick({
|
|
|
1692
1762
|
display_name: true,
|
|
1693
1763
|
description: true,
|
|
1694
1764
|
severity: true,
|
|
1695
|
-
|
|
1765
|
+
scope: true,
|
|
1696
1766
|
organization_id: true,
|
|
1697
1767
|
visibility: true,
|
|
1698
1768
|
scans_count: true,
|
|
@@ -1711,7 +1781,7 @@ var TagDetailSchema = schemas.TagDefinitionDetailResponse.pick({
|
|
|
1711
1781
|
display_name: true,
|
|
1712
1782
|
description: true,
|
|
1713
1783
|
severity: true,
|
|
1714
|
-
|
|
1784
|
+
scope: true,
|
|
1715
1785
|
organization_id: true,
|
|
1716
1786
|
visibility: true,
|
|
1717
1787
|
scans_count: true,
|
|
@@ -3032,7 +3102,7 @@ var setCampaignAlertOverridesTool = {
|
|
|
3032
3102
|
var GetAlertStatsInputShape = {};
|
|
3033
3103
|
var getAlertStatsTool = {
|
|
3034
3104
|
name: "get_alert_stats",
|
|
3035
|
-
description: "Get alert counts grouped by status: open,
|
|
3105
|
+
description: "Get alert counts grouped by status: open, escalated, resolved, dismissed (total is implicit in the sum). Status names match the canonical AlertStatus enum used by `list_alerts` and `update_alert_status`.",
|
|
3036
3106
|
annotations: {
|
|
3037
3107
|
title: "Get Alert Stats",
|
|
3038
3108
|
readOnlyHint: true,
|
|
@@ -3049,8 +3119,8 @@ var getAlertStatsTool = {
|
|
|
3049
3119
|
};
|
|
3050
3120
|
var ListAlertsInputShape = {
|
|
3051
3121
|
campaign_id: z.string().uuid().optional().describe("Filter to one campaign's alerts."),
|
|
3052
|
-
status: z.enum(["open", "
|
|
3053
|
-
"Filter by alert status. Open = unhandled;
|
|
3122
|
+
status: z.enum(["open", "escalated", "resolved", "dismissed"]).optional().describe(
|
|
3123
|
+
"Filter by alert status. Open = unhandled; escalated = flagged for attention; resolved = closed; dismissed = closed without action."
|
|
3054
3124
|
),
|
|
3055
3125
|
page: z.number().int().min(1).max(500).default(1).describe("1-indexed page number."),
|
|
3056
3126
|
limit: z.number().int().min(1).max(200).default(50).describe("Page size.")
|
|
@@ -3080,11 +3150,11 @@ var listAlertsTool = {
|
|
|
3080
3150
|
};
|
|
3081
3151
|
var UpdateAlertStatusInputShape = {
|
|
3082
3152
|
alert_id: z.string().uuid().describe("Alert UUID."),
|
|
3083
|
-
status: z.enum(["open", "
|
|
3153
|
+
status: z.enum(["open", "escalated", "resolved", "dismissed"]).describe("New status: open | escalated | resolved | dismissed.")
|
|
3084
3154
|
};
|
|
3085
3155
|
var updateAlertStatusTool = {
|
|
3086
3156
|
name: "update_alert_status",
|
|
3087
|
-
description: "Update an alert's status in its lifecycle: open \u2192
|
|
3157
|
+
description: "Update an alert's status in its lifecycle: open \u2192 escalated \u2192 resolved | dismissed. The API enforces valid transitions; an invalid one returns 422.",
|
|
3088
3158
|
annotations: {
|
|
3089
3159
|
title: "Update Alert Status",
|
|
3090
3160
|
readOnlyHint: false,
|
|
@@ -3505,9 +3575,14 @@ function pickCampaignConfigBody(input) {
|
|
|
3505
3575
|
// src/application/tools/campaigns/create-campaign.tool.ts
|
|
3506
3576
|
var CreateCampaignInputShape = {
|
|
3507
3577
|
name: z.string().min(1).max(200).describe("Display name (1-200 chars)."),
|
|
3508
|
-
campaign_type: z.enum(["url", "ad_tag"]).describe("`url` or `
|
|
3578
|
+
campaign_type: z.enum(["url", "ad_tag", "vast"]).describe("`url`, `ad_tag`, or `vast` \u2014 must match the target field below."),
|
|
3509
3579
|
url: z.string().url().optional().describe("Target URL (required if campaign_type=url)."),
|
|
3510
|
-
ad_tag: z.string().optional().describe(
|
|
3580
|
+
ad_tag: z.string().optional().describe(
|
|
3581
|
+
"Ad-tag HTML/JS or an http(s) URL of a page with the rendered creative (required if campaign_type=ad_tag)."
|
|
3582
|
+
),
|
|
3583
|
+
vast_tag: z.string().optional().describe(
|
|
3584
|
+
"VAST video ad tag: an http(s) URL of a VAST endpoint OR raw VAST XML (required if campaign_type=vast)."
|
|
3585
|
+
),
|
|
3511
3586
|
country_codes: z.array(z.string().length(2)).min(1).describe("ISO 3166-1 alpha-2 codes \u2014 one scan per country per run."),
|
|
3512
3587
|
group_id: z.string().uuid().optional().describe("Parent group UUID; defaults to the org's default group."),
|
|
3513
3588
|
...campaignConfigFields,
|
|
@@ -3533,6 +3608,7 @@ var createCampaignTool = {
|
|
|
3533
3608
|
country_codes: input.country_codes,
|
|
3534
3609
|
...input.url !== void 0 ? { url: input.url } : {},
|
|
3535
3610
|
...input.ad_tag !== void 0 ? { ad_tag: input.ad_tag } : {},
|
|
3611
|
+
...input.vast_tag !== void 0 ? { vast_tag: input.vast_tag } : {},
|
|
3536
3612
|
...input.group_id !== void 0 ? { group_id: input.group_id } : {},
|
|
3537
3613
|
...input.labels !== void 0 ? { labels: input.labels } : {},
|
|
3538
3614
|
...input.policy_set_id !== void 0 ? { policy_set_id: input.policy_set_id } : {},
|
|
@@ -3549,7 +3625,7 @@ var GetCampaignInputShape = {
|
|
|
3549
3625
|
};
|
|
3550
3626
|
var getCampaignTool = {
|
|
3551
3627
|
name: "get_campaign",
|
|
3552
|
-
description: "Get one campaign by UUID: name, type, target URL/ad-tag, countries, schedule status, archive status, parent group.",
|
|
3628
|
+
description: "Get one campaign by UUID: name, type (url|ad_tag|vast), target URL / ad-tag / VAST tag (vast_tag), countries, schedule status, archive status, parent group.",
|
|
3553
3629
|
annotations: {
|
|
3554
3630
|
title: "Get Campaign",
|
|
3555
3631
|
readOnlyHint: true,
|
|
@@ -3697,7 +3773,12 @@ var UpdateCampaignInputShape = {
|
|
|
3697
3773
|
campaign_id: z.string().uuid().describe("Campaign UUID to update."),
|
|
3698
3774
|
name: z.string().min(1).max(200).optional().describe("New display name."),
|
|
3699
3775
|
url: z.string().url().optional().describe("New target URL (url-type campaigns)."),
|
|
3700
|
-
ad_tag: z.string().optional().describe(
|
|
3776
|
+
ad_tag: z.string().optional().describe(
|
|
3777
|
+
"New ad-tag HTML/JS or an http(s) URL of a page with the rendered creative (ad_tag-type campaigns)."
|
|
3778
|
+
),
|
|
3779
|
+
vast_tag: z.string().optional().describe(
|
|
3780
|
+
"New VAST video ad tag: an http(s) URL of a VAST endpoint OR raw VAST XML (vast-type campaigns)."
|
|
3781
|
+
),
|
|
3701
3782
|
country_codes: z.array(z.string().length(2)).optional().describe("Replace the country list."),
|
|
3702
3783
|
group_id: z.string().uuid().optional().describe("Move the campaign to another group."),
|
|
3703
3784
|
...campaignConfigFields,
|
|
@@ -3721,6 +3802,7 @@ var updateCampaignTool = {
|
|
|
3721
3802
|
...input.name !== void 0 ? { name: input.name } : {},
|
|
3722
3803
|
...input.url !== void 0 ? { url: input.url } : {},
|
|
3723
3804
|
...input.ad_tag !== void 0 ? { ad_tag: input.ad_tag } : {},
|
|
3805
|
+
...input.vast_tag !== void 0 ? { vast_tag: input.vast_tag } : {},
|
|
3724
3806
|
...input.country_codes !== void 0 ? { country_codes: input.country_codes } : {},
|
|
3725
3807
|
...input.group_id !== void 0 ? { group_id: input.group_id } : {},
|
|
3726
3808
|
...input.labels !== void 0 ? { labels: input.labels } : {},
|
|
@@ -3738,7 +3820,7 @@ var CreateCustomRuleInputShape = {
|
|
|
3738
3820
|
"Display name. For non-LLM rules this also becomes the `display_name` of the auto-registered tag definition (see `tag_slug`)."
|
|
3739
3821
|
),
|
|
3740
3822
|
tag_slug: z.string().max(100).optional().describe(
|
|
3741
|
-
"Tag slug to assign on match. Empty = create-only (advanced). The API auto-registers a custom tag definition for this slug with `display_name = name`. **MUST NOT collide with a built-in system tag slug** (see `list_tags` where `
|
|
3823
|
+
"Tag slug to assign on match. Empty = create-only (advanced). The API auto-registers a custom tag definition for this slug with `display_name = name`. **MUST NOT collide with a built-in system tag slug** (see `list_tags` where `scope=system`); colliding requests return 422 with code `checking.system_slug_reserved`. For `rule_type='llm'` use `config.tags` keys instead and leave `tag_slug` empty."
|
|
3742
3824
|
),
|
|
3743
3825
|
rule_type: z.string().max(50).describe(
|
|
3744
3826
|
"Rule engine. One of: `stopword_content`, `stopword_url`, `regexp_content`, `regexp_url`, `blacklist_domain`, `combo`, `llm`. The API validates."
|
|
@@ -3838,7 +3920,7 @@ var TestCustomRuleInputShape = {
|
|
|
3838
3920
|
"Rule engine type. One of: `stopword_content`, `stopword_url`, `regexp_content`, `regexp_url`, `blacklist_domain`, `combo`, `llm`."
|
|
3839
3921
|
),
|
|
3840
3922
|
config: z.record(z.unknown()).describe(
|
|
3841
|
-
"Rule-type-specific config to test. Same shape as `create_custom_rule`'s `config`. NOTE: `test_custom_rule` evaluates the rule against a scan WITHOUT persisting it, so slug-collision validation does NOT run here \u2014 verify slugs against `list_tags` (`
|
|
3923
|
+
"Rule-type-specific config to test. Same shape as `create_custom_rule`'s `config`. NOTE: `test_custom_rule` evaluates the rule against a scan WITHOUT persisting it, so slug-collision validation does NOT run here \u2014 verify slugs against `list_tags` (`scope=system`) before promoting to `create_custom_rule`."
|
|
3842
3924
|
),
|
|
3843
3925
|
target: z.string().max(30).describe(
|
|
3844
3926
|
"Where to apply the rule (e.g. 'page' for landing HTML). See API docs for the full set of valid values."
|
|
@@ -3847,7 +3929,7 @@ var TestCustomRuleInputShape = {
|
|
|
3847
3929
|
};
|
|
3848
3930
|
var testCustomRuleTool = {
|
|
3849
3931
|
name: "test_custom_rule",
|
|
3850
|
-
description: "Preview-test a rule definition against an existing scan WITHOUT persisting the rule. Returns `matched: bool`, evaluation time, and per-tag-slug details. Use to validate config before `create_custom_rule`. NOTE: slug-collision validation does NOT run in preview mode \u2014 verify any `tag_slug` (or LLM `config.tags` keys) against `list_tags` (`
|
|
3932
|
+
description: "Preview-test a rule definition against an existing scan WITHOUT persisting the rule. Returns `matched: bool`, evaluation time, and per-tag-slug details. Use to validate config before `create_custom_rule`. NOTE: slug-collision validation does NOT run in preview mode \u2014 verify any `tag_slug` (or LLM `config.tags` keys) against `list_tags` (`scope=system`) before promoting to `create_custom_rule`, which would otherwise reject the same payload with HTTP 422 / code `checking.system_slug_reserved`.",
|
|
3851
3933
|
annotations: {
|
|
3852
3934
|
title: "Test Custom Rule",
|
|
3853
3935
|
readOnlyHint: true,
|
|
@@ -3873,7 +3955,7 @@ var UpdateCustomRuleInputShape = {
|
|
|
3873
3955
|
"New display name. For non-LLM rules this also becomes the new `display_name` of the auto-registered tag definition."
|
|
3874
3956
|
),
|
|
3875
3957
|
tag_slug: z.string().max(100).optional().describe(
|
|
3876
|
-
"New tag slug to assign on match. **MUST NOT collide with a built-in system tag slug** (see `list_tags` where `
|
|
3958
|
+
"New tag slug to assign on match. **MUST NOT collide with a built-in system tag slug** (see `list_tags` where `scope=system`); colliding requests return 422 with code `checking.system_slug_reserved`. Re-registering an existing custom slug refreshes its tag definition's `display_name` / `description`."
|
|
3877
3959
|
),
|
|
3878
3960
|
config: z.record(z.unknown()).optional().describe(
|
|
3879
3961
|
"New rule-type-specific config object. For `rule_type='llm'` the keys of `config.tags` are auto-registered as tag definitions; any key that collides with a system slug returns the same 422 contract."
|
|
@@ -4551,8 +4633,13 @@ var scanProxyField = z.object({
|
|
|
4551
4633
|
|
|
4552
4634
|
// src/application/tools/scans/create-bulk-scans.tool.ts
|
|
4553
4635
|
var CreateBulkScansInputShape = {
|
|
4554
|
-
url: z.string().url().optional().describe("Direct URL.
|
|
4555
|
-
ad_tag: z.string().optional().describe(
|
|
4636
|
+
url: z.string().url().optional().describe("Direct URL. Provide exactly one of `url`, `ad_tag`, or `vast_tag`."),
|
|
4637
|
+
ad_tag: z.string().optional().describe(
|
|
4638
|
+
"Raw ad-tag HTML/JS OR an http(s) URL of a page with the creative already rendered. Provide exactly one of `url`, `ad_tag`, or `vast_tag`."
|
|
4639
|
+
),
|
|
4640
|
+
vast_tag: z.string().optional().describe(
|
|
4641
|
+
"VAST video ad tag: an http(s) URL of a VAST endpoint OR raw VAST XML. Provide exactly one of `url`, `ad_tag`, or `vast_tag`."
|
|
4642
|
+
),
|
|
4556
4643
|
country_codes: z.array(z.string().length(2)).min(1).max(50).describe("List of ISO 3166-1 alpha-2 country codes; one scan per country is created."),
|
|
4557
4644
|
emulator_id: z.string().min(1).max(100).describe("Device/OS profile slug; same for every country in the batch."),
|
|
4558
4645
|
proxy: scanProxyField,
|
|
@@ -4560,7 +4647,7 @@ var CreateBulkScansInputShape = {
|
|
|
4560
4647
|
};
|
|
4561
4648
|
var createBulkScansTool = {
|
|
4562
4649
|
name: "create_bulk_scans",
|
|
4563
|
-
description: "Queue one new scan per country in a single call (e.g. test the same URL from US + DE + JP). COSTS N CREDITS where N = number of countries. Returns the list of created scans.",
|
|
4650
|
+
description: "Queue one new scan per country in a single call (e.g. test the same URL, ad-tag, or VAST video tag from US + DE + JP). COSTS N CREDITS where N = number of countries. Returns the list of created scans.",
|
|
4564
4651
|
annotations: {
|
|
4565
4652
|
title: "Create Bulk Scans",
|
|
4566
4653
|
readOnlyHint: false,
|
|
@@ -4575,6 +4662,7 @@ var createBulkScansTool = {
|
|
|
4575
4662
|
emulator_id: input.emulator_id,
|
|
4576
4663
|
...input.url !== void 0 ? { url: input.url } : {},
|
|
4577
4664
|
...input.ad_tag !== void 0 ? { ad_tag: input.ad_tag } : {},
|
|
4665
|
+
...input.vast_tag !== void 0 ? { vast_tag: input.vast_tag } : {},
|
|
4578
4666
|
...input.proxy !== void 0 ? { proxy: input.proxy } : {},
|
|
4579
4667
|
...input.labels !== void 0 ? { labels: input.labels } : {}
|
|
4580
4668
|
};
|
|
@@ -4584,8 +4672,15 @@ var createBulkScansTool = {
|
|
|
4584
4672
|
}
|
|
4585
4673
|
};
|
|
4586
4674
|
var CreateScanInputShape = {
|
|
4587
|
-
url: z.string().url().optional().describe(
|
|
4588
|
-
|
|
4675
|
+
url: z.string().url().optional().describe(
|
|
4676
|
+
"Direct URL of the ad / landing page. Provide exactly one of `url`, `ad_tag`, or `vast_tag`."
|
|
4677
|
+
),
|
|
4678
|
+
ad_tag: z.string().optional().describe(
|
|
4679
|
+
"Raw HTML/JS ad tag (script, iframe, image) OR an http(s) URL of a page with the creative already rendered. Provide exactly one of `url`, `ad_tag`, or `vast_tag`."
|
|
4680
|
+
),
|
|
4681
|
+
vast_tag: z.string().optional().describe(
|
|
4682
|
+
"VAST video ad tag: an http(s) URL of a VAST endpoint OR raw VAST XML (a document containing a <VAST> element). Fetched and played in a real browser. Provide exactly one of `url`, `ad_tag`, or `vast_tag`."
|
|
4683
|
+
),
|
|
4589
4684
|
country_code: z.string().length(2).describe("ISO 3166-1 alpha-2 country code, e.g. US, DE, JP. Determines proxy geo."),
|
|
4590
4685
|
emulator_id: z.string().min(1).max(100).describe("Device/OS profile slug; use `list_emulators` to discover valid values."),
|
|
4591
4686
|
proxy: scanProxyField,
|
|
@@ -4595,7 +4690,7 @@ var CreateScanInputShape = {
|
|
|
4595
4690
|
};
|
|
4596
4691
|
var createScanTool = {
|
|
4597
4692
|
name: "create_scan",
|
|
4598
|
-
description: "Queue a single new scan for a URL
|
|
4693
|
+
description: "Queue a single new scan for a URL, ad-tag, or VAST video tag against one country. COSTS CREDITS and bills the caller's organization. Returns the newly-created scan record.",
|
|
4599
4694
|
annotations: {
|
|
4600
4695
|
title: "Create Scan",
|
|
4601
4696
|
readOnlyHint: false,
|
|
@@ -4610,6 +4705,7 @@ var createScanTool = {
|
|
|
4610
4705
|
emulator_id: input.emulator_id,
|
|
4611
4706
|
...input.url !== void 0 ? { url: input.url } : {},
|
|
4612
4707
|
...input.ad_tag !== void 0 ? { ad_tag: input.ad_tag } : {},
|
|
4708
|
+
...input.vast_tag !== void 0 ? { vast_tag: input.vast_tag } : {},
|
|
4613
4709
|
...input.proxy !== void 0 ? { proxy: input.proxy } : {},
|
|
4614
4710
|
...input.labels !== void 0 ? { labels: input.labels } : {},
|
|
4615
4711
|
...input.campaign_id !== void 0 ? { campaign_id: input.campaign_id } : {},
|
|
@@ -4625,7 +4721,7 @@ var GetScanInputShape = {
|
|
|
4625
4721
|
};
|
|
4626
4722
|
var getScanTool = {
|
|
4627
4723
|
name: "get_scan",
|
|
4628
|
-
description: "Get full detail for one scan by UUID: status, offer URL, absolute screenshot URL, report_url + public_report_url deep-links, timing, labels, and the parent campaign if any. Link users with the returned `report_url` / `public_report_url` \u2014 never construct URLs yourself.",
|
|
4724
|
+
description: "Get full detail for one scan by UUID: status, offer URL, absolute screenshot URL, report_url + public_report_url deep-links, timing, labels, and the parent campaign if any. VAST video scans also carry `vast_tag`, `creative_kind` (banner|video), and a `video` block (duration, media-file URL, VAST version, ad system, VPAID flag, wrapper depth). Link users with the returned `report_url` / `public_report_url` \u2014 never construct URLs yourself.",
|
|
4629
4725
|
annotations: {
|
|
4630
4726
|
title: "Get Scan",
|
|
4631
4727
|
readOnlyHint: true,
|
|
@@ -4743,7 +4839,7 @@ var ListScansInputShape = {
|
|
|
4743
4839
|
};
|
|
4744
4840
|
var listScansTool = {
|
|
4745
4841
|
name: "list_scans",
|
|
4746
|
-
description: "List scans for the caller's organization with optional filters (status, country, URL substring, date range, run/campaign/group, tag, AI/IAB/brand category, dynamic labels). Returns a paginated envelope; each
|
|
4842
|
+
description: "List scans for the caller's organization with optional filters (status, country, URL substring, date range, run/campaign/group, tag, AI/IAB/brand category, dynamic labels). Returns a paginated envelope; each brief carries `is_ad_tag` and `is_vast` flags, an absolute screenshot URL plus report_url (auth dashboard) and public_report_url (shareable) deep-links \u2014 link users with those, never hand-build URLs.",
|
|
4747
4843
|
annotations: {
|
|
4748
4844
|
title: "List Scans",
|
|
4749
4845
|
readOnlyHint: true,
|
|
@@ -5376,5 +5472,5 @@ function formatToolError(error) {
|
|
|
5376
5472
|
}
|
|
5377
5473
|
|
|
5378
5474
|
export { BearerToken, SERVER_INSTRUCTIONS, createHttpApiGateway, createPinoLogger, declareEmptyResourcesAndPrompts, newRequestId, wireToolsIntoMcpServer };
|
|
5379
|
-
//# sourceMappingURL=chunk-
|
|
5380
|
-
//# sourceMappingURL=chunk-
|
|
5475
|
+
//# sourceMappingURL=chunk-ZZIYFLWG.js.map
|
|
5476
|
+
//# sourceMappingURL=chunk-ZZIYFLWG.js.map
|