@getmcpads/google-ads-mcp-server 1.0.1 → 2.0.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.
@@ -0,0 +1,4461 @@
1
+ {
2
+ "serverInfo": {
3
+ "name": "@getmcpads/google-ads-mcp-server",
4
+ "title": "Google Ads MCP server: 35 read tools, 10 opt-in preview-first writes.",
5
+ "version": "2.0.0",
6
+ "websiteUrl": "https://www.getmcpads.com/tools/google-ads",
7
+ "icons": [
8
+ {
9
+ "src": "https://mcp.getmcpads.com/icon.svg",
10
+ "mimeType": "image/svg+xml"
11
+ }
12
+ ]
13
+ },
14
+ "tools": [
15
+ {
16
+ "name": "google_ads_list_accounts",
17
+ "title": "google ads list accounts",
18
+ "description": "List Google Ads customer accounts accessible with the current credentials. If an accessible customer is a manager account, also attempts to include enabled child accounts from customer_client.",
19
+ "inputSchema": {
20
+ "type": "object",
21
+ "properties": {},
22
+ "$schema": "http://json-schema.org/draft-07/schema#"
23
+ },
24
+ "outputSchema": {
25
+ "type": "object",
26
+ "properties": {
27
+ "result": {
28
+ "anyOf": [
29
+ {
30
+ "type": "object",
31
+ "properties": {},
32
+ "additionalProperties": true
33
+ },
34
+ {
35
+ "type": "array",
36
+ "items": {}
37
+ },
38
+ {
39
+ "type": "string"
40
+ },
41
+ {
42
+ "type": "number"
43
+ },
44
+ {
45
+ "type": "boolean"
46
+ },
47
+ {
48
+ "type": "null"
49
+ }
50
+ ],
51
+ "description": "Original tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query."
52
+ }
53
+ },
54
+ "required": [
55
+ "result"
56
+ ],
57
+ "additionalProperties": false,
58
+ "$schema": "http://json-schema.org/draft-07/schema#"
59
+ },
60
+ "annotations": {
61
+ "readOnlyHint": true,
62
+ "destructiveHint": false,
63
+ "idempotentHint": true,
64
+ "openWorldHint": true
65
+ },
66
+ "execution": {
67
+ "taskSupport": "forbidden"
68
+ }
69
+ },
70
+ {
71
+ "name": "google_ads_get_account_details",
72
+ "title": "google ads get account details",
73
+ "description": "Get detailed information for a specific Google Ads customer account.",
74
+ "inputSchema": {
75
+ "type": "object",
76
+ "properties": {
77
+ "customerId": {
78
+ "type": "string",
79
+ "description": "Google Ads customer ID (without dashes, e.g., 1234567890)"
80
+ }
81
+ },
82
+ "required": [
83
+ "customerId"
84
+ ],
85
+ "additionalProperties": false,
86
+ "$schema": "http://json-schema.org/draft-07/schema#"
87
+ },
88
+ "outputSchema": {
89
+ "type": "object",
90
+ "properties": {
91
+ "result": {
92
+ "anyOf": [
93
+ {
94
+ "type": "object",
95
+ "properties": {},
96
+ "additionalProperties": true
97
+ },
98
+ {
99
+ "type": "array",
100
+ "items": {}
101
+ },
102
+ {
103
+ "type": "string"
104
+ },
105
+ {
106
+ "type": "number"
107
+ },
108
+ {
109
+ "type": "boolean"
110
+ },
111
+ {
112
+ "type": "null"
113
+ }
114
+ ],
115
+ "description": "Original tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query."
116
+ }
117
+ },
118
+ "required": [
119
+ "result"
120
+ ],
121
+ "additionalProperties": false,
122
+ "$schema": "http://json-schema.org/draft-07/schema#"
123
+ },
124
+ "annotations": {
125
+ "readOnlyHint": true,
126
+ "destructiveHint": false,
127
+ "idempotentHint": true,
128
+ "openWorldHint": true
129
+ },
130
+ "execution": {
131
+ "taskSupport": "forbidden"
132
+ }
133
+ },
134
+ {
135
+ "name": "google_ads_run_gaql",
136
+ "title": "google ads run gaql",
137
+ "description": "Execute a raw GAQL (Google Ads Query Language) query. Full flexibility for any reporting need.\nExample: SELECT campaign.name, metrics.impressions FROM campaign WHERE campaign.status = 'ENABLED' AND segments.date DURING LAST_30_DAYS ORDER BY metrics.impressions DESC LIMIT 100",
138
+ "inputSchema": {
139
+ "type": "object",
140
+ "properties": {
141
+ "customerId": {
142
+ "type": "string",
143
+ "description": "Google Ads customer ID (without dashes, e.g., 1234567890)"
144
+ },
145
+ "query": {
146
+ "type": "string",
147
+ "minLength": 10,
148
+ "description": "GAQL query string (SELECT ... FROM ... WHERE ...)"
149
+ }
150
+ },
151
+ "required": [
152
+ "customerId",
153
+ "query"
154
+ ],
155
+ "additionalProperties": false,
156
+ "$schema": "http://json-schema.org/draft-07/schema#"
157
+ },
158
+ "outputSchema": {
159
+ "type": "object",
160
+ "properties": {
161
+ "result": {
162
+ "anyOf": [
163
+ {
164
+ "type": "object",
165
+ "properties": {},
166
+ "additionalProperties": true
167
+ },
168
+ {
169
+ "type": "array",
170
+ "items": {}
171
+ },
172
+ {
173
+ "type": "string"
174
+ },
175
+ {
176
+ "type": "number"
177
+ },
178
+ {
179
+ "type": "boolean"
180
+ },
181
+ {
182
+ "type": "null"
183
+ }
184
+ ],
185
+ "description": "Original tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query."
186
+ }
187
+ },
188
+ "required": [
189
+ "result"
190
+ ],
191
+ "additionalProperties": false,
192
+ "$schema": "http://json-schema.org/draft-07/schema#"
193
+ },
194
+ "annotations": {
195
+ "readOnlyHint": true,
196
+ "destructiveHint": false,
197
+ "idempotentHint": true,
198
+ "openWorldHint": true
199
+ },
200
+ "execution": {
201
+ "taskSupport": "forbidden"
202
+ }
203
+ },
204
+ {
205
+ "name": "google_ads_get_insights",
206
+ "title": "google ads get insights",
207
+ "description": "Query Google Ads performance insights with intelligent query planning. Auto-generates GAQL, handles metric/segment incompatibilities by splitting queries.\nUse google-ads://metrics for available metrics, google-ads://dimensions for dimensions.",
208
+ "inputSchema": {
209
+ "type": "object",
210
+ "properties": {
211
+ "customerId": {
212
+ "type": "string",
213
+ "description": "Google Ads customer ID (without dashes, e.g., 1234567890)"
214
+ },
215
+ "resource": {
216
+ "type": "string",
217
+ "default": "campaign",
218
+ "description": "GAQL FROM clause resource type (campaign, ad_group, ad_group_ad, keyword_view, shopping_performance_view, asset_group, geographic_view, video, search_term_view, landing_page_view, etc.)"
219
+ },
220
+ "metrics": {
221
+ "type": "array",
222
+ "items": {
223
+ "type": "string"
224
+ },
225
+ "minItems": 1,
226
+ "description": "Metric keys (e.g., impressions, clicks, cost_micros, conversions)"
227
+ },
228
+ "dimensions": {
229
+ "type": "array",
230
+ "items": {
231
+ "type": "string"
232
+ },
233
+ "description": "Dimension keys (e.g., date, campaignName, device)"
234
+ },
235
+ "startDate": {
236
+ "type": "string",
237
+ "description": "Start date YYYY-MM-DD"
238
+ },
239
+ "endDate": {
240
+ "type": "string",
241
+ "description": "End date YYYY-MM-DD"
242
+ },
243
+ "datePreset": {
244
+ "type": "string",
245
+ "enum": [
246
+ "TODAY",
247
+ "YESTERDAY",
248
+ "LAST_7_DAYS",
249
+ "LAST_14_DAYS",
250
+ "LAST_30_DAYS",
251
+ "LAST_90_DAYS",
252
+ "THIS_MONTH",
253
+ "LAST_MONTH",
254
+ "THIS_QUARTER",
255
+ "LAST_QUARTER"
256
+ ],
257
+ "description": "Predefined date range"
258
+ },
259
+ "orderBy": {
260
+ "type": "string",
261
+ "description": "Optional GAQL field to order by, e.g. metrics.impressions or campaign.name"
262
+ },
263
+ "orderDirection": {
264
+ "type": "string",
265
+ "enum": [
266
+ "ASC",
267
+ "DESC"
268
+ ],
269
+ "default": "DESC",
270
+ "description": "Sort direction for the selected ordering field."
271
+ },
272
+ "limit": {
273
+ "type": "integer",
274
+ "minimum": 1,
275
+ "maximum": 10000,
276
+ "default": 500,
277
+ "description": "Maximum number of returned items or rows. The declared bounds and default apply; use pagination for additional results."
278
+ }
279
+ },
280
+ "required": [
281
+ "customerId",
282
+ "metrics"
283
+ ],
284
+ "additionalProperties": false,
285
+ "$schema": "http://json-schema.org/draft-07/schema#"
286
+ },
287
+ "outputSchema": {
288
+ "type": "object",
289
+ "properties": {
290
+ "result": {
291
+ "anyOf": [
292
+ {
293
+ "type": "object",
294
+ "properties": {},
295
+ "additionalProperties": true
296
+ },
297
+ {
298
+ "type": "array",
299
+ "items": {}
300
+ },
301
+ {
302
+ "type": "string"
303
+ },
304
+ {
305
+ "type": "number"
306
+ },
307
+ {
308
+ "type": "boolean"
309
+ },
310
+ {
311
+ "type": "null"
312
+ }
313
+ ],
314
+ "description": "Original tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query."
315
+ }
316
+ },
317
+ "required": [
318
+ "result"
319
+ ],
320
+ "additionalProperties": false,
321
+ "$schema": "http://json-schema.org/draft-07/schema#"
322
+ },
323
+ "annotations": {
324
+ "readOnlyHint": true,
325
+ "destructiveHint": false,
326
+ "idempotentHint": true,
327
+ "openWorldHint": true
328
+ },
329
+ "execution": {
330
+ "taskSupport": "forbidden"
331
+ }
332
+ },
333
+ {
334
+ "name": "google_ads_get_campaigns",
335
+ "title": "google ads get campaigns",
336
+ "description": "List campaigns for a Google Ads account with status, budget, channel type, and bidding strategy.",
337
+ "inputSchema": {
338
+ "type": "object",
339
+ "properties": {
340
+ "customerId": {
341
+ "type": "string",
342
+ "description": "Google Ads customer ID (without dashes, e.g., 1234567890)"
343
+ },
344
+ "statusFilter": {
345
+ "type": "string",
346
+ "enum": [
347
+ "ENABLED",
348
+ "PAUSED",
349
+ "REMOVED"
350
+ ],
351
+ "description": "Native status values used to filter the returned entities."
352
+ },
353
+ "limit": {
354
+ "type": "integer",
355
+ "minimum": 1,
356
+ "maximum": 1000,
357
+ "default": 100,
358
+ "description": "Maximum number of returned items or rows. The declared bounds and default apply; use pagination for additional results."
359
+ }
360
+ },
361
+ "required": [
362
+ "customerId"
363
+ ],
364
+ "additionalProperties": false,
365
+ "$schema": "http://json-schema.org/draft-07/schema#"
366
+ },
367
+ "outputSchema": {
368
+ "type": "object",
369
+ "properties": {
370
+ "result": {
371
+ "anyOf": [
372
+ {
373
+ "type": "object",
374
+ "properties": {},
375
+ "additionalProperties": true
376
+ },
377
+ {
378
+ "type": "array",
379
+ "items": {}
380
+ },
381
+ {
382
+ "type": "string"
383
+ },
384
+ {
385
+ "type": "number"
386
+ },
387
+ {
388
+ "type": "boolean"
389
+ },
390
+ {
391
+ "type": "null"
392
+ }
393
+ ],
394
+ "description": "Original tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query."
395
+ }
396
+ },
397
+ "required": [
398
+ "result"
399
+ ],
400
+ "additionalProperties": false,
401
+ "$schema": "http://json-schema.org/draft-07/schema#"
402
+ },
403
+ "annotations": {
404
+ "readOnlyHint": true,
405
+ "destructiveHint": false,
406
+ "idempotentHint": true,
407
+ "openWorldHint": true
408
+ },
409
+ "execution": {
410
+ "taskSupport": "forbidden"
411
+ }
412
+ },
413
+ {
414
+ "name": "google_ads_get_adgroups",
415
+ "title": "google ads get adgroups",
416
+ "description": "List ad groups for a Google Ads account, optionally filtered by campaign.",
417
+ "inputSchema": {
418
+ "type": "object",
419
+ "properties": {
420
+ "customerId": {
421
+ "type": "string",
422
+ "description": "Google Ads customer ID (without dashes, e.g., 1234567890)"
423
+ },
424
+ "campaignId": {
425
+ "type": "string",
426
+ "description": "Filter by campaign ID"
427
+ },
428
+ "statusFilter": {
429
+ "type": "string",
430
+ "enum": [
431
+ "ENABLED",
432
+ "PAUSED",
433
+ "REMOVED"
434
+ ],
435
+ "description": "Native status values used to filter the returned entities."
436
+ },
437
+ "limit": {
438
+ "type": "integer",
439
+ "minimum": 1,
440
+ "maximum": 1000,
441
+ "default": 100,
442
+ "description": "Maximum number of returned items or rows. The declared bounds and default apply; use pagination for additional results."
443
+ }
444
+ },
445
+ "required": [
446
+ "customerId"
447
+ ],
448
+ "additionalProperties": false,
449
+ "$schema": "http://json-schema.org/draft-07/schema#"
450
+ },
451
+ "outputSchema": {
452
+ "type": "object",
453
+ "properties": {
454
+ "result": {
455
+ "anyOf": [
456
+ {
457
+ "type": "object",
458
+ "properties": {},
459
+ "additionalProperties": true
460
+ },
461
+ {
462
+ "type": "array",
463
+ "items": {}
464
+ },
465
+ {
466
+ "type": "string"
467
+ },
468
+ {
469
+ "type": "number"
470
+ },
471
+ {
472
+ "type": "boolean"
473
+ },
474
+ {
475
+ "type": "null"
476
+ }
477
+ ],
478
+ "description": "Original tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query."
479
+ }
480
+ },
481
+ "required": [
482
+ "result"
483
+ ],
484
+ "additionalProperties": false,
485
+ "$schema": "http://json-schema.org/draft-07/schema#"
486
+ },
487
+ "annotations": {
488
+ "readOnlyHint": true,
489
+ "destructiveHint": false,
490
+ "idempotentHint": true,
491
+ "openWorldHint": true
492
+ },
493
+ "execution": {
494
+ "taskSupport": "forbidden"
495
+ }
496
+ },
497
+ {
498
+ "name": "google_ads_get_keyword_performance",
499
+ "title": "google ads get keyword performance",
500
+ "description": "Get keyword-level performance data from keyword_view resource. Shows quality score, impressions, clicks, cost.",
501
+ "inputSchema": {
502
+ "type": "object",
503
+ "properties": {
504
+ "customerId": {
505
+ "type": "string",
506
+ "description": "Google Ads customer ID (without dashes, e.g., 1234567890)"
507
+ },
508
+ "startDate": {
509
+ "type": "string",
510
+ "description": "Start date YYYY-MM-DD"
511
+ },
512
+ "endDate": {
513
+ "type": "string",
514
+ "description": "End date YYYY-MM-DD"
515
+ },
516
+ "limit": {
517
+ "type": "integer",
518
+ "minimum": 1,
519
+ "maximum": 1000,
520
+ "default": 100,
521
+ "description": "Maximum number of returned items or rows. The declared bounds and default apply; use pagination for additional results."
522
+ }
523
+ },
524
+ "required": [
525
+ "customerId",
526
+ "startDate",
527
+ "endDate"
528
+ ],
529
+ "additionalProperties": false,
530
+ "$schema": "http://json-schema.org/draft-07/schema#"
531
+ },
532
+ "outputSchema": {
533
+ "type": "object",
534
+ "properties": {
535
+ "result": {
536
+ "anyOf": [
537
+ {
538
+ "type": "object",
539
+ "properties": {},
540
+ "additionalProperties": true
541
+ },
542
+ {
543
+ "type": "array",
544
+ "items": {}
545
+ },
546
+ {
547
+ "type": "string"
548
+ },
549
+ {
550
+ "type": "number"
551
+ },
552
+ {
553
+ "type": "boolean"
554
+ },
555
+ {
556
+ "type": "null"
557
+ }
558
+ ],
559
+ "description": "Original tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query."
560
+ }
561
+ },
562
+ "required": [
563
+ "result"
564
+ ],
565
+ "additionalProperties": false,
566
+ "$schema": "http://json-schema.org/draft-07/schema#"
567
+ },
568
+ "annotations": {
569
+ "readOnlyHint": true,
570
+ "destructiveHint": false,
571
+ "idempotentHint": true,
572
+ "openWorldHint": true
573
+ },
574
+ "execution": {
575
+ "taskSupport": "forbidden"
576
+ }
577
+ },
578
+ {
579
+ "name": "google_ads_validate_query",
580
+ "title": "google ads validate query",
581
+ "description": "Validate metric/dimension/resource compatibility BEFORE executing a query. Checks segment restrictions and resource availability.",
582
+ "inputSchema": {
583
+ "type": "object",
584
+ "properties": {
585
+ "metrics": {
586
+ "type": "array",
587
+ "items": {
588
+ "type": "string"
589
+ },
590
+ "minItems": 1,
591
+ "description": "Metric keys to validate"
592
+ },
593
+ "dimensions": {
594
+ "type": "array",
595
+ "items": {
596
+ "type": "string"
597
+ },
598
+ "description": "Dimension keys to validate"
599
+ },
600
+ "resource": {
601
+ "type": "string",
602
+ "default": "campaign",
603
+ "description": "Native Google Ads resource from which the GAQL query selects rows."
604
+ }
605
+ },
606
+ "required": [
607
+ "metrics"
608
+ ],
609
+ "additionalProperties": false,
610
+ "$schema": "http://json-schema.org/draft-07/schema#"
611
+ },
612
+ "outputSchema": {
613
+ "type": "object",
614
+ "properties": {
615
+ "result": {
616
+ "anyOf": [
617
+ {
618
+ "type": "object",
619
+ "properties": {},
620
+ "additionalProperties": true
621
+ },
622
+ {
623
+ "type": "array",
624
+ "items": {}
625
+ },
626
+ {
627
+ "type": "string"
628
+ },
629
+ {
630
+ "type": "number"
631
+ },
632
+ {
633
+ "type": "boolean"
634
+ },
635
+ {
636
+ "type": "null"
637
+ }
638
+ ],
639
+ "description": "Original tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query."
640
+ }
641
+ },
642
+ "required": [
643
+ "result"
644
+ ],
645
+ "additionalProperties": false,
646
+ "$schema": "http://json-schema.org/draft-07/schema#"
647
+ },
648
+ "annotations": {
649
+ "readOnlyHint": true,
650
+ "destructiveHint": false,
651
+ "idempotentHint": true,
652
+ "openWorldHint": true
653
+ },
654
+ "execution": {
655
+ "taskSupport": "forbidden"
656
+ }
657
+ },
658
+ {
659
+ "name": "google_ads_health_check",
660
+ "title": "google ads health check",
661
+ "description": "Read-only connectivity check. Verifies credential presence, Google Ads API access, login customer visibility, API version, and actionable warnings without returning secrets.",
662
+ "inputSchema": {
663
+ "type": "object",
664
+ "properties": {},
665
+ "$schema": "http://json-schema.org/draft-07/schema#"
666
+ },
667
+ "outputSchema": {
668
+ "type": "object",
669
+ "properties": {
670
+ "result": {
671
+ "anyOf": [
672
+ {
673
+ "type": "object",
674
+ "properties": {},
675
+ "additionalProperties": true
676
+ },
677
+ {
678
+ "type": "array",
679
+ "items": {}
680
+ },
681
+ {
682
+ "type": "string"
683
+ },
684
+ {
685
+ "type": "number"
686
+ },
687
+ {
688
+ "type": "boolean"
689
+ },
690
+ {
691
+ "type": "null"
692
+ }
693
+ ],
694
+ "description": "Original tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query."
695
+ }
696
+ },
697
+ "required": [
698
+ "result"
699
+ ],
700
+ "additionalProperties": false,
701
+ "$schema": "http://json-schema.org/draft-07/schema#"
702
+ },
703
+ "annotations": {
704
+ "readOnlyHint": true,
705
+ "destructiveHint": false,
706
+ "idempotentHint": true,
707
+ "openWorldHint": true
708
+ },
709
+ "execution": {
710
+ "taskSupport": "forbidden"
711
+ }
712
+ },
713
+ {
714
+ "name": "google_ads_get_account_hierarchy",
715
+ "title": "google ads get account hierarchy",
716
+ "description": "List accessible customers and, where possible, manager/client relationships from GAQL customer_client. Falls back to accessible customers if hierarchy queries are unavailable.",
717
+ "inputSchema": {
718
+ "type": "object",
719
+ "properties": {
720
+ "managerCustomerId": {
721
+ "type": "string",
722
+ "description": "MCC Manager account ID (required for sub-accounts managed by an MCC)"
723
+ },
724
+ "includeInactive": {
725
+ "type": "boolean",
726
+ "default": false,
727
+ "description": "Include non-ENABLED customer_client links"
728
+ }
729
+ },
730
+ "additionalProperties": false,
731
+ "$schema": "http://json-schema.org/draft-07/schema#"
732
+ },
733
+ "outputSchema": {
734
+ "type": "object",
735
+ "properties": {
736
+ "result": {
737
+ "anyOf": [
738
+ {
739
+ "type": "object",
740
+ "properties": {},
741
+ "additionalProperties": true
742
+ },
743
+ {
744
+ "type": "array",
745
+ "items": {}
746
+ },
747
+ {
748
+ "type": "string"
749
+ },
750
+ {
751
+ "type": "number"
752
+ },
753
+ {
754
+ "type": "boolean"
755
+ },
756
+ {
757
+ "type": "null"
758
+ }
759
+ ],
760
+ "description": "Original tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query."
761
+ }
762
+ },
763
+ "required": [
764
+ "result"
765
+ ],
766
+ "additionalProperties": false,
767
+ "$schema": "http://json-schema.org/draft-07/schema#"
768
+ },
769
+ "annotations": {
770
+ "readOnlyHint": true,
771
+ "destructiveHint": false,
772
+ "idempotentHint": true,
773
+ "openWorldHint": true
774
+ },
775
+ "execution": {
776
+ "taskSupport": "forbidden"
777
+ }
778
+ },
779
+ {
780
+ "name": "google_ads_get_conversion_actions",
781
+ "title": "google ads get conversion actions",
782
+ "description": "List conversion actions with status, type, category, primary/include-in-conversions flags, owner customer, and last activity dates when supported.",
783
+ "inputSchema": {
784
+ "type": "object",
785
+ "properties": {
786
+ "customerId": {
787
+ "type": "string",
788
+ "description": "Google Ads customer ID (without dashes, e.g., 1234567890)"
789
+ },
790
+ "statusFilter": {
791
+ "type": "string",
792
+ "enum": [
793
+ "ENABLED",
794
+ "HIDDEN",
795
+ "REMOVED"
796
+ ],
797
+ "description": "Native status values used to filter the returned entities."
798
+ },
799
+ "limit": {
800
+ "type": "integer",
801
+ "minimum": 1,
802
+ "maximum": 1000,
803
+ "default": 1000,
804
+ "description": "Maximum number of returned items or rows. The declared bounds and default apply; use pagination for additional results."
805
+ }
806
+ },
807
+ "required": [
808
+ "customerId"
809
+ ],
810
+ "additionalProperties": false,
811
+ "$schema": "http://json-schema.org/draft-07/schema#"
812
+ },
813
+ "outputSchema": {
814
+ "type": "object",
815
+ "properties": {
816
+ "result": {
817
+ "anyOf": [
818
+ {
819
+ "type": "object",
820
+ "properties": {},
821
+ "additionalProperties": true
822
+ },
823
+ {
824
+ "type": "array",
825
+ "items": {}
826
+ },
827
+ {
828
+ "type": "string"
829
+ },
830
+ {
831
+ "type": "number"
832
+ },
833
+ {
834
+ "type": "boolean"
835
+ },
836
+ {
837
+ "type": "null"
838
+ }
839
+ ],
840
+ "description": "Original tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query."
841
+ }
842
+ },
843
+ "required": [
844
+ "result"
845
+ ],
846
+ "additionalProperties": false,
847
+ "$schema": "http://json-schema.org/draft-07/schema#"
848
+ },
849
+ "annotations": {
850
+ "readOnlyHint": true,
851
+ "destructiveHint": false,
852
+ "idempotentHint": true,
853
+ "openWorldHint": true
854
+ },
855
+ "execution": {
856
+ "taskSupport": "forbidden"
857
+ }
858
+ },
859
+ {
860
+ "name": "google_ads_get_change_events",
861
+ "title": "google ads get change events",
862
+ "description": "Fetch recent change_event rows. Enforces Google Ads constraints: date window within the last 30 days and LIMIT <= 10000.",
863
+ "inputSchema": {
864
+ "type": "object",
865
+ "properties": {
866
+ "customerId": {
867
+ "type": "string",
868
+ "description": "Google Ads customer ID (without dashes, e.g., 1234567890)"
869
+ },
870
+ "startDate": {
871
+ "type": "string",
872
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
873
+ "description": "Start date YYYY-MM-DD. Defaults to 14 days before endDate."
874
+ },
875
+ "endDate": {
876
+ "$ref": "#/properties/startDate",
877
+ "description": "End date YYYY-MM-DD. Defaults to today."
878
+ },
879
+ "resourceType": {
880
+ "type": "string",
881
+ "pattern": "^[A-Z0-9_]+$",
882
+ "description": "Optional ChangeEventResourceType filter, e.g. CAMPAIGN or AD_GROUP_AD"
883
+ },
884
+ "operation": {
885
+ "$ref": "#/properties/resourceType",
886
+ "description": "Optional ResourceChangeOperation filter, e.g. CREATE, UPDATE, REMOVE"
887
+ },
888
+ "userEmail": {
889
+ "type": "string",
890
+ "format": "email",
891
+ "description": "Optional user email filter"
892
+ },
893
+ "limit": {
894
+ "type": "integer",
895
+ "minimum": 1,
896
+ "maximum": 10000,
897
+ "default": 1000,
898
+ "description": "Maximum number of returned items or rows. The declared bounds and default apply; use pagination for additional results."
899
+ }
900
+ },
901
+ "required": [
902
+ "customerId"
903
+ ],
904
+ "additionalProperties": false,
905
+ "$schema": "http://json-schema.org/draft-07/schema#"
906
+ },
907
+ "outputSchema": {
908
+ "type": "object",
909
+ "properties": {
910
+ "result": {
911
+ "anyOf": [
912
+ {
913
+ "type": "object",
914
+ "properties": {},
915
+ "additionalProperties": true
916
+ },
917
+ {
918
+ "type": "array",
919
+ "items": {}
920
+ },
921
+ {
922
+ "type": "string"
923
+ },
924
+ {
925
+ "type": "number"
926
+ },
927
+ {
928
+ "type": "boolean"
929
+ },
930
+ {
931
+ "type": "null"
932
+ }
933
+ ],
934
+ "description": "Original tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query."
935
+ }
936
+ },
937
+ "required": [
938
+ "result"
939
+ ],
940
+ "additionalProperties": false,
941
+ "$schema": "http://json-schema.org/draft-07/schema#"
942
+ },
943
+ "annotations": {
944
+ "readOnlyHint": true,
945
+ "destructiveHint": false,
946
+ "idempotentHint": true,
947
+ "openWorldHint": true
948
+ },
949
+ "execution": {
950
+ "taskSupport": "forbidden"
951
+ }
952
+ },
953
+ {
954
+ "name": "google_ads_get_recommendations",
955
+ "title": "google ads get recommendations",
956
+ "description": "List Google Ads recommendations with type, resource, campaign/ad group links, dismissed state, and impact when supported.",
957
+ "inputSchema": {
958
+ "type": "object",
959
+ "properties": {
960
+ "customerId": {
961
+ "type": "string",
962
+ "description": "Google Ads customer ID (without dashes, e.g., 1234567890)"
963
+ },
964
+ "typeFilter": {
965
+ "type": "string",
966
+ "pattern": "^[A-Z0-9_]+$",
967
+ "description": "Optional RecommendationType enum filter"
968
+ },
969
+ "includeDismissed": {
970
+ "type": "boolean",
971
+ "default": false,
972
+ "description": "Include recommendations already dismissed in the account."
973
+ },
974
+ "limit": {
975
+ "type": "integer",
976
+ "minimum": 1,
977
+ "maximum": 1000,
978
+ "default": 1000,
979
+ "description": "Maximum number of returned items or rows. The declared bounds and default apply; use pagination for additional results."
980
+ }
981
+ },
982
+ "required": [
983
+ "customerId"
984
+ ],
985
+ "additionalProperties": false,
986
+ "$schema": "http://json-schema.org/draft-07/schema#"
987
+ },
988
+ "outputSchema": {
989
+ "type": "object",
990
+ "properties": {
991
+ "result": {
992
+ "anyOf": [
993
+ {
994
+ "type": "object",
995
+ "properties": {},
996
+ "additionalProperties": true
997
+ },
998
+ {
999
+ "type": "array",
1000
+ "items": {}
1001
+ },
1002
+ {
1003
+ "type": "string"
1004
+ },
1005
+ {
1006
+ "type": "number"
1007
+ },
1008
+ {
1009
+ "type": "boolean"
1010
+ },
1011
+ {
1012
+ "type": "null"
1013
+ }
1014
+ ],
1015
+ "description": "Original tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query."
1016
+ }
1017
+ },
1018
+ "required": [
1019
+ "result"
1020
+ ],
1021
+ "additionalProperties": false,
1022
+ "$schema": "http://json-schema.org/draft-07/schema#"
1023
+ },
1024
+ "annotations": {
1025
+ "readOnlyHint": true,
1026
+ "destructiveHint": false,
1027
+ "idempotentHint": true,
1028
+ "openWorldHint": true
1029
+ },
1030
+ "execution": {
1031
+ "taskSupport": "forbidden"
1032
+ }
1033
+ },
1034
+ {
1035
+ "name": "google_ads_get_budgets",
1036
+ "title": "google ads get budgets",
1037
+ "description": "List campaign budgets with amount, status, delivery method, and recommended budget fields when supported.",
1038
+ "inputSchema": {
1039
+ "type": "object",
1040
+ "properties": {
1041
+ "customerId": {
1042
+ "type": "string",
1043
+ "description": "Google Ads customer ID (without dashes, e.g., 1234567890)"
1044
+ },
1045
+ "statusFilter": {
1046
+ "type": "string",
1047
+ "enum": [
1048
+ "ENABLED",
1049
+ "REMOVED",
1050
+ "UNKNOWN",
1051
+ "UNSPECIFIED"
1052
+ ],
1053
+ "description": "Native status values used to filter the returned entities."
1054
+ },
1055
+ "limit": {
1056
+ "type": "integer",
1057
+ "minimum": 1,
1058
+ "maximum": 1000,
1059
+ "default": 1000,
1060
+ "description": "Maximum number of returned items or rows. The declared bounds and default apply; use pagination for additional results."
1061
+ }
1062
+ },
1063
+ "required": [
1064
+ "customerId"
1065
+ ],
1066
+ "additionalProperties": false,
1067
+ "$schema": "http://json-schema.org/draft-07/schema#"
1068
+ },
1069
+ "outputSchema": {
1070
+ "type": "object",
1071
+ "properties": {
1072
+ "result": {
1073
+ "anyOf": [
1074
+ {
1075
+ "type": "object",
1076
+ "properties": {},
1077
+ "additionalProperties": true
1078
+ },
1079
+ {
1080
+ "type": "array",
1081
+ "items": {}
1082
+ },
1083
+ {
1084
+ "type": "string"
1085
+ },
1086
+ {
1087
+ "type": "number"
1088
+ },
1089
+ {
1090
+ "type": "boolean"
1091
+ },
1092
+ {
1093
+ "type": "null"
1094
+ }
1095
+ ],
1096
+ "description": "Original tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query."
1097
+ }
1098
+ },
1099
+ "required": [
1100
+ "result"
1101
+ ],
1102
+ "additionalProperties": false,
1103
+ "$schema": "http://json-schema.org/draft-07/schema#"
1104
+ },
1105
+ "annotations": {
1106
+ "readOnlyHint": true,
1107
+ "destructiveHint": false,
1108
+ "idempotentHint": true,
1109
+ "openWorldHint": true
1110
+ },
1111
+ "execution": {
1112
+ "taskSupport": "forbidden"
1113
+ }
1114
+ },
1115
+ {
1116
+ "name": "google_ads_get_bidding_strategies",
1117
+ "title": "google ads get bidding strategies",
1118
+ "description": "List portfolio bidding strategies. Includes metrics only when startDate/endDate are provided; otherwise returns structure only.",
1119
+ "inputSchema": {
1120
+ "type": "object",
1121
+ "properties": {
1122
+ "customerId": {
1123
+ "type": "string",
1124
+ "description": "Google Ads customer ID (without dashes, e.g., 1234567890)"
1125
+ },
1126
+ "startDate": {
1127
+ "type": "string",
1128
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
1129
+ "description": "Optional start date YYYY-MM-DD for metrics"
1130
+ },
1131
+ "endDate": {
1132
+ "$ref": "#/properties/startDate",
1133
+ "description": "Optional end date YYYY-MM-DD for metrics"
1134
+ },
1135
+ "typeFilter": {
1136
+ "type": "string",
1137
+ "pattern": "^[A-Z0-9_]+$",
1138
+ "description": "Optional BiddingStrategyType enum filter"
1139
+ },
1140
+ "limit": {
1141
+ "type": "integer",
1142
+ "minimum": 1,
1143
+ "maximum": 1000,
1144
+ "default": 1000,
1145
+ "description": "Maximum number of returned items or rows. The declared bounds and default apply; use pagination for additional results."
1146
+ }
1147
+ },
1148
+ "required": [
1149
+ "customerId"
1150
+ ],
1151
+ "additionalProperties": false,
1152
+ "$schema": "http://json-schema.org/draft-07/schema#"
1153
+ },
1154
+ "outputSchema": {
1155
+ "type": "object",
1156
+ "properties": {
1157
+ "result": {
1158
+ "anyOf": [
1159
+ {
1160
+ "type": "object",
1161
+ "properties": {},
1162
+ "additionalProperties": true
1163
+ },
1164
+ {
1165
+ "type": "array",
1166
+ "items": {}
1167
+ },
1168
+ {
1169
+ "type": "string"
1170
+ },
1171
+ {
1172
+ "type": "number"
1173
+ },
1174
+ {
1175
+ "type": "boolean"
1176
+ },
1177
+ {
1178
+ "type": "null"
1179
+ }
1180
+ ],
1181
+ "description": "Original tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query."
1182
+ }
1183
+ },
1184
+ "required": [
1185
+ "result"
1186
+ ],
1187
+ "additionalProperties": false,
1188
+ "$schema": "http://json-schema.org/draft-07/schema#"
1189
+ },
1190
+ "annotations": {
1191
+ "readOnlyHint": true,
1192
+ "destructiveHint": false,
1193
+ "idempotentHint": true,
1194
+ "openWorldHint": true
1195
+ },
1196
+ "execution": {
1197
+ "taskSupport": "forbidden"
1198
+ }
1199
+ },
1200
+ {
1201
+ "name": "google_ads_get_search_terms",
1202
+ "title": "google ads get search terms",
1203
+ "description": "Fetch search term performance from search_term_view or campaign_search_term_insight depending on reportType.",
1204
+ "inputSchema": {
1205
+ "type": "object",
1206
+ "properties": {
1207
+ "customerId": {
1208
+ "type": "string",
1209
+ "description": "Google Ads customer ID (without dashes, e.g., 1234567890)"
1210
+ },
1211
+ "reportType": {
1212
+ "type": "string",
1213
+ "enum": [
1214
+ "search_term_view",
1215
+ "campaign_search_term_insight"
1216
+ ],
1217
+ "default": "search_term_view",
1218
+ "description": "Native provider report type; determines supported metrics and dimensions."
1219
+ },
1220
+ "startDate": {
1221
+ "type": "string",
1222
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
1223
+ "description": "Start date YYYY-MM-DD"
1224
+ },
1225
+ "endDate": {
1226
+ "type": "string",
1227
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
1228
+ "description": "End date YYYY-MM-DD"
1229
+ },
1230
+ "campaignId": {
1231
+ "type": "string",
1232
+ "pattern": "^\\d+$",
1233
+ "description": "Optional campaign ID filter"
1234
+ },
1235
+ "adGroupId": {
1236
+ "$ref": "#/properties/campaignId",
1237
+ "description": "Optional ad group ID filter. Applies directly to search_term_view and via segments.ad_group for insight reports."
1238
+ },
1239
+ "searchTermContains": {
1240
+ "type": "string",
1241
+ "minLength": 1,
1242
+ "description": "Optional substring filter for search_term_view"
1243
+ },
1244
+ "limit": {
1245
+ "type": "integer",
1246
+ "minimum": 1,
1247
+ "maximum": 10000,
1248
+ "default": 1000,
1249
+ "description": "Maximum number of returned items or rows. The declared bounds and default apply; use pagination for additional results."
1250
+ }
1251
+ },
1252
+ "required": [
1253
+ "customerId",
1254
+ "startDate",
1255
+ "endDate"
1256
+ ],
1257
+ "additionalProperties": false,
1258
+ "$schema": "http://json-schema.org/draft-07/schema#"
1259
+ },
1260
+ "outputSchema": {
1261
+ "type": "object",
1262
+ "properties": {
1263
+ "result": {
1264
+ "anyOf": [
1265
+ {
1266
+ "type": "object",
1267
+ "properties": {},
1268
+ "additionalProperties": true
1269
+ },
1270
+ {
1271
+ "type": "array",
1272
+ "items": {}
1273
+ },
1274
+ {
1275
+ "type": "string"
1276
+ },
1277
+ {
1278
+ "type": "number"
1279
+ },
1280
+ {
1281
+ "type": "boolean"
1282
+ },
1283
+ {
1284
+ "type": "null"
1285
+ }
1286
+ ],
1287
+ "description": "Original tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query."
1288
+ }
1289
+ },
1290
+ "required": [
1291
+ "result"
1292
+ ],
1293
+ "additionalProperties": false,
1294
+ "$schema": "http://json-schema.org/draft-07/schema#"
1295
+ },
1296
+ "annotations": {
1297
+ "readOnlyHint": true,
1298
+ "destructiveHint": false,
1299
+ "idempotentHint": true,
1300
+ "openWorldHint": true
1301
+ },
1302
+ "execution": {
1303
+ "taskSupport": "forbidden"
1304
+ }
1305
+ },
1306
+ {
1307
+ "name": "google_ads_get_landing_pages",
1308
+ "title": "google ads get landing pages",
1309
+ "description": "Fetch landing_page_view performance with final URL, campaign/ad group context, traffic, conversion, and landing-page quality metrics when supported.",
1310
+ "inputSchema": {
1311
+ "type": "object",
1312
+ "properties": {
1313
+ "customerId": {
1314
+ "type": "string",
1315
+ "description": "Google Ads customer ID (without dashes, e.g., 1234567890)"
1316
+ },
1317
+ "startDate": {
1318
+ "type": "string",
1319
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
1320
+ "description": "Start date YYYY-MM-DD"
1321
+ },
1322
+ "endDate": {
1323
+ "type": "string",
1324
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
1325
+ "description": "End date YYYY-MM-DD"
1326
+ },
1327
+ "campaignId": {
1328
+ "type": "string",
1329
+ "pattern": "^\\d+$",
1330
+ "description": "Optional campaign ID filter"
1331
+ },
1332
+ "limit": {
1333
+ "type": "integer",
1334
+ "minimum": 1,
1335
+ "maximum": 10000,
1336
+ "default": 1000,
1337
+ "description": "Maximum number of returned items or rows. The declared bounds and default apply; use pagination for additional results."
1338
+ }
1339
+ },
1340
+ "required": [
1341
+ "customerId",
1342
+ "startDate",
1343
+ "endDate"
1344
+ ],
1345
+ "additionalProperties": false,
1346
+ "$schema": "http://json-schema.org/draft-07/schema#"
1347
+ },
1348
+ "outputSchema": {
1349
+ "type": "object",
1350
+ "properties": {
1351
+ "result": {
1352
+ "anyOf": [
1353
+ {
1354
+ "type": "object",
1355
+ "properties": {},
1356
+ "additionalProperties": true
1357
+ },
1358
+ {
1359
+ "type": "array",
1360
+ "items": {}
1361
+ },
1362
+ {
1363
+ "type": "string"
1364
+ },
1365
+ {
1366
+ "type": "number"
1367
+ },
1368
+ {
1369
+ "type": "boolean"
1370
+ },
1371
+ {
1372
+ "type": "null"
1373
+ }
1374
+ ],
1375
+ "description": "Original tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query."
1376
+ }
1377
+ },
1378
+ "required": [
1379
+ "result"
1380
+ ],
1381
+ "additionalProperties": false,
1382
+ "$schema": "http://json-schema.org/draft-07/schema#"
1383
+ },
1384
+ "annotations": {
1385
+ "readOnlyHint": true,
1386
+ "destructiveHint": false,
1387
+ "idempotentHint": true,
1388
+ "openWorldHint": true
1389
+ },
1390
+ "execution": {
1391
+ "taskSupport": "forbidden"
1392
+ }
1393
+ },
1394
+ {
1395
+ "name": "google_ads_get_pmax_assets",
1396
+ "title": "google ads get pmax assets",
1397
+ "description": "List Performance Max asset group assets from asset_group_asset with asset group/campaign context and optional date-range performance metrics.",
1398
+ "inputSchema": {
1399
+ "type": "object",
1400
+ "properties": {
1401
+ "customerId": {
1402
+ "type": "string",
1403
+ "description": "Google Ads customer ID (without dashes, e.g., 1234567890)"
1404
+ },
1405
+ "startDate": {
1406
+ "type": "string",
1407
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
1408
+ "description": "Optional start date YYYY-MM-DD for performance metrics"
1409
+ },
1410
+ "endDate": {
1411
+ "$ref": "#/properties/startDate",
1412
+ "description": "Optional end date YYYY-MM-DD for performance metrics"
1413
+ },
1414
+ "metrics": {
1415
+ "type": "array",
1416
+ "items": {
1417
+ "type": "string",
1418
+ "enum": [
1419
+ "metrics.impressions",
1420
+ "metrics.clicks",
1421
+ "metrics.cost_micros",
1422
+ "metrics.conversions",
1423
+ "metrics.conversions_value",
1424
+ "metrics.all_conversions",
1425
+ "metrics.all_conversions_from_interactions_rate",
1426
+ "metrics.all_conversions_from_interactions_value_per_interaction",
1427
+ "metrics.all_conversions_value",
1428
+ "metrics.all_conversions_value_per_cost",
1429
+ "metrics.average_cost",
1430
+ "metrics.average_cpc",
1431
+ "metrics.average_cpe",
1432
+ "metrics.average_cpm",
1433
+ "metrics.conversions_from_interactions_rate",
1434
+ "metrics.conversions_from_interactions_value_per_interaction",
1435
+ "metrics.conversions_value_per_cost",
1436
+ "metrics.cost_per_all_conversions",
1437
+ "metrics.cost_per_conversion",
1438
+ "metrics.cross_device_conversions",
1439
+ "metrics.cross_device_conversions_value",
1440
+ "metrics.ctr",
1441
+ "metrics.engagement_rate",
1442
+ "metrics.engagements",
1443
+ "metrics.interaction_rate",
1444
+ "metrics.interactions",
1445
+ "metrics.trueview_average_cpv",
1446
+ "metrics.value_per_all_conversions",
1447
+ "metrics.value_per_conversion",
1448
+ "metrics.video_trueview_view_rate",
1449
+ "metrics.video_trueview_views",
1450
+ "metrics.view_through_conversions"
1451
+ ]
1452
+ },
1453
+ "minItems": 1,
1454
+ "maxItems": 32,
1455
+ "description": "Additional asset-compatible GAQL metric fields. Used with a date range; delivery metrics are always included. Omit for the default delivery/conversion fields."
1456
+ },
1457
+ "campaignId": {
1458
+ "type": "string",
1459
+ "pattern": "^\\d+$",
1460
+ "description": "Optional Performance Max campaign ID filter"
1461
+ },
1462
+ "assetGroupId": {
1463
+ "$ref": "#/properties/campaignId",
1464
+ "description": "Optional asset group ID filter"
1465
+ },
1466
+ "assetGroupIds": {
1467
+ "type": "array",
1468
+ "items": {
1469
+ "$ref": "#/properties/campaignId"
1470
+ },
1471
+ "minItems": 1,
1472
+ "maxItems": 10,
1473
+ "description": "Restrict reporting to these asset groups."
1474
+ },
1475
+ "assetId": {
1476
+ "$ref": "#/properties/campaignId",
1477
+ "description": "Restrict reporting to one asset."
1478
+ },
1479
+ "daily": {
1480
+ "type": "boolean",
1481
+ "default": false,
1482
+ "description": "Segment dated performance by segments.date."
1483
+ },
1484
+ "fieldType": {
1485
+ "type": "string",
1486
+ "pattern": "^[A-Z0-9_]+$",
1487
+ "description": "Optional AssetFieldType enum filter, e.g. HEADLINE, LONG_HEADLINE, MARKETING_IMAGE"
1488
+ },
1489
+ "statusFilter": {
1490
+ "type": "string",
1491
+ "enum": [
1492
+ "ENABLED",
1493
+ "PAUSED",
1494
+ "REMOVED"
1495
+ ],
1496
+ "description": "Native status values used to filter the returned entities."
1497
+ },
1498
+ "limit": {
1499
+ "type": "integer",
1500
+ "minimum": 1,
1501
+ "maximum": 10000,
1502
+ "default": 1000,
1503
+ "description": "Maximum number of returned items or rows. The declared bounds and default apply; use pagination for additional results."
1504
+ }
1505
+ },
1506
+ "required": [
1507
+ "customerId"
1508
+ ],
1509
+ "additionalProperties": false,
1510
+ "$schema": "http://json-schema.org/draft-07/schema#"
1511
+ },
1512
+ "outputSchema": {
1513
+ "type": "object",
1514
+ "properties": {
1515
+ "result": {
1516
+ "anyOf": [
1517
+ {
1518
+ "type": "object",
1519
+ "properties": {},
1520
+ "additionalProperties": true
1521
+ },
1522
+ {
1523
+ "type": "array",
1524
+ "items": {}
1525
+ },
1526
+ {
1527
+ "type": "string"
1528
+ },
1529
+ {
1530
+ "type": "number"
1531
+ },
1532
+ {
1533
+ "type": "boolean"
1534
+ },
1535
+ {
1536
+ "type": "null"
1537
+ }
1538
+ ],
1539
+ "description": "Original tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query."
1540
+ }
1541
+ },
1542
+ "required": [
1543
+ "result"
1544
+ ],
1545
+ "additionalProperties": false,
1546
+ "$schema": "http://json-schema.org/draft-07/schema#"
1547
+ },
1548
+ "annotations": {
1549
+ "readOnlyHint": true,
1550
+ "destructiveHint": false,
1551
+ "idempotentHint": true,
1552
+ "openWorldHint": true
1553
+ },
1554
+ "execution": {
1555
+ "taskSupport": "forbidden"
1556
+ }
1557
+ },
1558
+ {
1559
+ "name": "google_ads_get_simulations",
1560
+ "title": "google ads get simulations",
1561
+ "description": "Read-only planning/forecast query for campaign, ad group, or portfolio bidding simulations. Returns simulation metadata and projected point lists when available, with a metadata fallback.",
1562
+ "inputSchema": {
1563
+ "type": "object",
1564
+ "properties": {
1565
+ "customerId": {
1566
+ "type": "string",
1567
+ "description": "Google Ads customer ID (without dashes, e.g., 1234567890)"
1568
+ },
1569
+ "level": {
1570
+ "type": "string",
1571
+ "enum": [
1572
+ "campaign",
1573
+ "ad_group",
1574
+ "bidding_strategy"
1575
+ ],
1576
+ "default": "campaign",
1577
+ "description": "Simulation resource level to query"
1578
+ },
1579
+ "campaignId": {
1580
+ "type": "string",
1581
+ "pattern": "^\\d+$",
1582
+ "description": "Optional campaign ID filter. Applies directly to campaign simulations and as campaign context for ad group simulations."
1583
+ },
1584
+ "adGroupId": {
1585
+ "$ref": "#/properties/campaignId",
1586
+ "description": "Optional ad group ID filter for ad_group simulations"
1587
+ },
1588
+ "biddingStrategyId": {
1589
+ "$ref": "#/properties/campaignId",
1590
+ "description": "Optional portfolio bidding strategy ID filter for bidding_strategy simulations"
1591
+ },
1592
+ "simulationStartDate": {
1593
+ "type": "string",
1594
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
1595
+ "description": "Optional minimum simulation start date YYYY-MM-DD"
1596
+ },
1597
+ "simulationEndDate": {
1598
+ "$ref": "#/properties/simulationStartDate",
1599
+ "description": "Optional maximum simulation end date YYYY-MM-DD"
1600
+ },
1601
+ "typeFilter": {
1602
+ "type": "string",
1603
+ "pattern": "^[A-Z0-9_]+$",
1604
+ "description": "Optional SimulationType enum, e.g. BUDGET, TARGET_CPA, TARGET_ROAS, CPC_BID"
1605
+ },
1606
+ "modificationMethod": {
1607
+ "$ref": "#/properties/typeFilter",
1608
+ "description": "Optional SimulationModificationMethod enum, e.g. UNIFORM, SCALING, DEFAULT"
1609
+ },
1610
+ "limit": {
1611
+ "type": "integer",
1612
+ "minimum": 1,
1613
+ "maximum": 1000,
1614
+ "default": 1000,
1615
+ "description": "Maximum number of returned items or rows. The declared bounds and default apply; use pagination for additional results."
1616
+ }
1617
+ },
1618
+ "required": [
1619
+ "customerId"
1620
+ ],
1621
+ "additionalProperties": false,
1622
+ "$schema": "http://json-schema.org/draft-07/schema#"
1623
+ },
1624
+ "outputSchema": {
1625
+ "type": "object",
1626
+ "properties": {
1627
+ "result": {
1628
+ "anyOf": [
1629
+ {
1630
+ "type": "object",
1631
+ "properties": {},
1632
+ "additionalProperties": true
1633
+ },
1634
+ {
1635
+ "type": "array",
1636
+ "items": {}
1637
+ },
1638
+ {
1639
+ "type": "string"
1640
+ },
1641
+ {
1642
+ "type": "number"
1643
+ },
1644
+ {
1645
+ "type": "boolean"
1646
+ },
1647
+ {
1648
+ "type": "null"
1649
+ }
1650
+ ],
1651
+ "description": "Original tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query."
1652
+ }
1653
+ },
1654
+ "required": [
1655
+ "result"
1656
+ ],
1657
+ "additionalProperties": false,
1658
+ "$schema": "http://json-schema.org/draft-07/schema#"
1659
+ },
1660
+ "annotations": {
1661
+ "readOnlyHint": true,
1662
+ "destructiveHint": false,
1663
+ "idempotentHint": true,
1664
+ "openWorldHint": true
1665
+ },
1666
+ "execution": {
1667
+ "taskSupport": "forbidden"
1668
+ }
1669
+ },
1670
+ {
1671
+ "name": "google_ads_get_paid_organic_search_terms",
1672
+ "title": "google ads get paid organic search terms",
1673
+ "description": "Read-only paid/organic search terms report. Uses paid_organic_search_term_view when available and falls back to paid-only search_term_view if organic fields are unavailable.",
1674
+ "inputSchema": {
1675
+ "type": "object",
1676
+ "properties": {
1677
+ "customerId": {
1678
+ "type": "string",
1679
+ "description": "Google Ads customer ID (without dashes, e.g., 1234567890)"
1680
+ },
1681
+ "startDate": {
1682
+ "type": "string",
1683
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
1684
+ "description": "Start date YYYY-MM-DD"
1685
+ },
1686
+ "endDate": {
1687
+ "type": "string",
1688
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
1689
+ "description": "End date YYYY-MM-DD"
1690
+ },
1691
+ "campaignId": {
1692
+ "type": "string",
1693
+ "pattern": "^\\d+$",
1694
+ "description": "Optional campaign ID filter"
1695
+ },
1696
+ "adGroupId": {
1697
+ "$ref": "#/properties/campaignId",
1698
+ "description": "Optional ad group ID filter"
1699
+ },
1700
+ "searchTermContains": {
1701
+ "type": "string",
1702
+ "minLength": 1,
1703
+ "description": "Optional search term substring filter"
1704
+ },
1705
+ "serpType": {
1706
+ "type": "string",
1707
+ "enum": [
1708
+ "ADS_AND_ORGANIC",
1709
+ "ADS_ONLY",
1710
+ "ORGANIC_ONLY",
1711
+ "UNKNOWN",
1712
+ "UNSPECIFIED"
1713
+ ],
1714
+ "description": "Optional search engine results page type segment filter"
1715
+ },
1716
+ "limit": {
1717
+ "type": "integer",
1718
+ "minimum": 1,
1719
+ "maximum": 10000,
1720
+ "default": 1000,
1721
+ "description": "Maximum number of returned items or rows. The declared bounds and default apply; use pagination for additional results."
1722
+ }
1723
+ },
1724
+ "required": [
1725
+ "customerId",
1726
+ "startDate",
1727
+ "endDate"
1728
+ ],
1729
+ "additionalProperties": false,
1730
+ "$schema": "http://json-schema.org/draft-07/schema#"
1731
+ },
1732
+ "outputSchema": {
1733
+ "type": "object",
1734
+ "properties": {
1735
+ "result": {
1736
+ "anyOf": [
1737
+ {
1738
+ "type": "object",
1739
+ "properties": {},
1740
+ "additionalProperties": true
1741
+ },
1742
+ {
1743
+ "type": "array",
1744
+ "items": {}
1745
+ },
1746
+ {
1747
+ "type": "string"
1748
+ },
1749
+ {
1750
+ "type": "number"
1751
+ },
1752
+ {
1753
+ "type": "boolean"
1754
+ },
1755
+ {
1756
+ "type": "null"
1757
+ }
1758
+ ],
1759
+ "description": "Original tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query."
1760
+ }
1761
+ },
1762
+ "required": [
1763
+ "result"
1764
+ ],
1765
+ "additionalProperties": false,
1766
+ "$schema": "http://json-schema.org/draft-07/schema#"
1767
+ },
1768
+ "annotations": {
1769
+ "readOnlyHint": true,
1770
+ "destructiveHint": false,
1771
+ "idempotentHint": true,
1772
+ "openWorldHint": true
1773
+ },
1774
+ "execution": {
1775
+ "taskSupport": "forbidden"
1776
+ }
1777
+ },
1778
+ {
1779
+ "name": "google_ads_get_shopping_products",
1780
+ "title": "google ads get shopping products",
1781
+ "description": "Read-only Merchant Center product catalog/eligibility report via shopping_product. Supports account, campaign, and ad group scopes with performance metrics when the account has Shopping/PMax e-commerce data.",
1782
+ "inputSchema": {
1783
+ "type": "object",
1784
+ "properties": {
1785
+ "customerId": {
1786
+ "type": "string",
1787
+ "description": "Google Ads customer ID (without dashes, e.g., 1234567890)"
1788
+ },
1789
+ "scope": {
1790
+ "type": "string",
1791
+ "enum": [
1792
+ "account",
1793
+ "campaign",
1794
+ "ad_group"
1795
+ ],
1796
+ "default": "account",
1797
+ "description": "shopping_product scope. ad_group scope requires campaignId and adGroupId."
1798
+ },
1799
+ "startDate": {
1800
+ "type": "string",
1801
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
1802
+ "description": "Optional start date YYYY-MM-DD. Used only as a WHERE filter; shopping_product cannot segment by date."
1803
+ },
1804
+ "endDate": {
1805
+ "$ref": "#/properties/startDate",
1806
+ "description": "Optional end date YYYY-MM-DD. Used only as a WHERE filter; shopping_product cannot segment by date."
1807
+ },
1808
+ "campaignId": {
1809
+ "type": "string",
1810
+ "pattern": "^\\d+$",
1811
+ "description": "Campaign ID for campaign or ad_group scope"
1812
+ },
1813
+ "adGroupId": {
1814
+ "$ref": "#/properties/campaignId",
1815
+ "description": "Ad group ID for ad_group scope"
1816
+ },
1817
+ "merchantCenterId": {
1818
+ "$ref": "#/properties/campaignId",
1819
+ "description": "Optional Merchant Center ID filter"
1820
+ },
1821
+ "itemId": {
1822
+ "type": "string",
1823
+ "minLength": 1,
1824
+ "description": "Optional Merchant Center item ID filter"
1825
+ },
1826
+ "titleContains": {
1827
+ "type": "string",
1828
+ "minLength": 1,
1829
+ "description": "Optional product title substring filter"
1830
+ },
1831
+ "feedLabel": {
1832
+ "type": "string",
1833
+ "minLength": 1,
1834
+ "description": "Optional feed label filter"
1835
+ },
1836
+ "statusFilter": {
1837
+ "type": "string",
1838
+ "enum": [
1839
+ "ELIGIBLE",
1840
+ "ELIGIBLE_LIMITED",
1841
+ "NOT_ELIGIBLE",
1842
+ "UNKNOWN",
1843
+ "UNSPECIFIED"
1844
+ ],
1845
+ "description": "Native status values used to filter the returned entities."
1846
+ },
1847
+ "limit": {
1848
+ "type": "integer",
1849
+ "minimum": 1,
1850
+ "maximum": 10000,
1851
+ "default": 1000,
1852
+ "description": "Maximum number of returned items or rows. The declared bounds and default apply; use pagination for additional results."
1853
+ }
1854
+ },
1855
+ "required": [
1856
+ "customerId"
1857
+ ],
1858
+ "additionalProperties": false,
1859
+ "$schema": "http://json-schema.org/draft-07/schema#"
1860
+ },
1861
+ "outputSchema": {
1862
+ "type": "object",
1863
+ "properties": {
1864
+ "result": {
1865
+ "anyOf": [
1866
+ {
1867
+ "type": "object",
1868
+ "properties": {},
1869
+ "additionalProperties": true
1870
+ },
1871
+ {
1872
+ "type": "array",
1873
+ "items": {}
1874
+ },
1875
+ {
1876
+ "type": "string"
1877
+ },
1878
+ {
1879
+ "type": "number"
1880
+ },
1881
+ {
1882
+ "type": "boolean"
1883
+ },
1884
+ {
1885
+ "type": "null"
1886
+ }
1887
+ ],
1888
+ "description": "Original tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query."
1889
+ }
1890
+ },
1891
+ "required": [
1892
+ "result"
1893
+ ],
1894
+ "additionalProperties": false,
1895
+ "$schema": "http://json-schema.org/draft-07/schema#"
1896
+ },
1897
+ "annotations": {
1898
+ "readOnlyHint": true,
1899
+ "destructiveHint": false,
1900
+ "idempotentHint": true,
1901
+ "openWorldHint": true
1902
+ },
1903
+ "execution": {
1904
+ "taskSupport": "forbidden"
1905
+ }
1906
+ },
1907
+ {
1908
+ "name": "google_ads_get_shopping_performance",
1909
+ "title": "google ads get shopping performance",
1910
+ "description": "Read-only Shopping performance report keyed by Merchant Center product dimensions. Useful for joining spend/conversions to merchant ID, item ID, title, brand, feed label, and custom labels.",
1911
+ "inputSchema": {
1912
+ "type": "object",
1913
+ "properties": {
1914
+ "customerId": {
1915
+ "type": "string",
1916
+ "description": "Google Ads customer ID (without dashes, e.g., 1234567890)"
1917
+ },
1918
+ "startDate": {
1919
+ "type": "string",
1920
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
1921
+ "description": "Start date YYYY-MM-DD"
1922
+ },
1923
+ "endDate": {
1924
+ "type": "string",
1925
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
1926
+ "description": "End date YYYY-MM-DD"
1927
+ },
1928
+ "campaignId": {
1929
+ "type": "string",
1930
+ "pattern": "^\\d+$",
1931
+ "description": "Optional campaign ID filter"
1932
+ },
1933
+ "adGroupId": {
1934
+ "$ref": "#/properties/campaignId",
1935
+ "description": "Optional ad group ID filter"
1936
+ },
1937
+ "merchantCenterId": {
1938
+ "$ref": "#/properties/campaignId",
1939
+ "description": "Optional Merchant Center ID filter"
1940
+ },
1941
+ "itemId": {
1942
+ "type": "string",
1943
+ "minLength": 1,
1944
+ "description": "Optional Merchant Center item ID filter"
1945
+ },
1946
+ "titleContains": {
1947
+ "type": "string",
1948
+ "minLength": 1,
1949
+ "description": "Optional product title substring filter"
1950
+ },
1951
+ "brand": {
1952
+ "type": "string",
1953
+ "minLength": 1,
1954
+ "description": "Optional product brand filter"
1955
+ },
1956
+ "feedLabel": {
1957
+ "type": "string",
1958
+ "minLength": 1,
1959
+ "description": "Optional product feed label filter"
1960
+ },
1961
+ "limit": {
1962
+ "type": "integer",
1963
+ "minimum": 1,
1964
+ "maximum": 10000,
1965
+ "default": 1000,
1966
+ "description": "Maximum number of returned items or rows. The declared bounds and default apply; use pagination for additional results."
1967
+ }
1968
+ },
1969
+ "required": [
1970
+ "customerId",
1971
+ "startDate",
1972
+ "endDate"
1973
+ ],
1974
+ "additionalProperties": false,
1975
+ "$schema": "http://json-schema.org/draft-07/schema#"
1976
+ },
1977
+ "outputSchema": {
1978
+ "type": "object",
1979
+ "properties": {
1980
+ "result": {
1981
+ "anyOf": [
1982
+ {
1983
+ "type": "object",
1984
+ "properties": {},
1985
+ "additionalProperties": true
1986
+ },
1987
+ {
1988
+ "type": "array",
1989
+ "items": {}
1990
+ },
1991
+ {
1992
+ "type": "string"
1993
+ },
1994
+ {
1995
+ "type": "number"
1996
+ },
1997
+ {
1998
+ "type": "boolean"
1999
+ },
2000
+ {
2001
+ "type": "null"
2002
+ }
2003
+ ],
2004
+ "description": "Original tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query."
2005
+ }
2006
+ },
2007
+ "required": [
2008
+ "result"
2009
+ ],
2010
+ "additionalProperties": false,
2011
+ "$schema": "http://json-schema.org/draft-07/schema#"
2012
+ },
2013
+ "annotations": {
2014
+ "readOnlyHint": true,
2015
+ "destructiveHint": false,
2016
+ "idempotentHint": true,
2017
+ "openWorldHint": true
2018
+ },
2019
+ "execution": {
2020
+ "taskSupport": "forbidden"
2021
+ }
2022
+ },
2023
+ {
2024
+ "name": "google_ads_get_pmax_placements",
2025
+ "title": "google ads get pmax placements",
2026
+ "description": "Read-only Performance Max placement diagnostics from performance_max_placement_view. Returns placement type, display name, target URL, campaign context, and impressions only.",
2027
+ "inputSchema": {
2028
+ "type": "object",
2029
+ "properties": {
2030
+ "customerId": {
2031
+ "type": "string",
2032
+ "description": "Google Ads customer ID (without dashes, e.g., 1234567890)"
2033
+ },
2034
+ "startDate": {
2035
+ "type": "string",
2036
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
2037
+ "description": "Start date YYYY-MM-DD"
2038
+ },
2039
+ "endDate": {
2040
+ "type": "string",
2041
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
2042
+ "description": "End date YYYY-MM-DD"
2043
+ },
2044
+ "campaignId": {
2045
+ "type": "string",
2046
+ "pattern": "^\\d+$",
2047
+ "description": "Optional Performance Max campaign ID filter"
2048
+ },
2049
+ "placementType": {
2050
+ "type": "string",
2051
+ "enum": [
2052
+ "WEBSITE",
2053
+ "MOBILE_APPLICATION",
2054
+ "YOUTUBE_VIDEO",
2055
+ "YOUTUBE_CHANNEL",
2056
+ "GOOGLE_PRODUCTS",
2057
+ "UNKNOWN",
2058
+ "UNSPECIFIED"
2059
+ ],
2060
+ "description": "Optional PlacementType enum filter"
2061
+ },
2062
+ "placementContains": {
2063
+ "type": "string",
2064
+ "minLength": 1,
2065
+ "description": "Optional substring filter for the placement string"
2066
+ },
2067
+ "limit": {
2068
+ "type": "integer",
2069
+ "minimum": 1,
2070
+ "maximum": 10000,
2071
+ "default": 1000,
2072
+ "description": "Maximum number of returned items or rows. The declared bounds and default apply; use pagination for additional results."
2073
+ }
2074
+ },
2075
+ "required": [
2076
+ "customerId",
2077
+ "startDate",
2078
+ "endDate"
2079
+ ],
2080
+ "additionalProperties": false,
2081
+ "$schema": "http://json-schema.org/draft-07/schema#"
2082
+ },
2083
+ "outputSchema": {
2084
+ "type": "object",
2085
+ "properties": {
2086
+ "result": {
2087
+ "anyOf": [
2088
+ {
2089
+ "type": "object",
2090
+ "properties": {},
2091
+ "additionalProperties": true
2092
+ },
2093
+ {
2094
+ "type": "array",
2095
+ "items": {}
2096
+ },
2097
+ {
2098
+ "type": "string"
2099
+ },
2100
+ {
2101
+ "type": "number"
2102
+ },
2103
+ {
2104
+ "type": "boolean"
2105
+ },
2106
+ {
2107
+ "type": "null"
2108
+ }
2109
+ ],
2110
+ "description": "Original tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query."
2111
+ }
2112
+ },
2113
+ "required": [
2114
+ "result"
2115
+ ],
2116
+ "additionalProperties": false,
2117
+ "$schema": "http://json-schema.org/draft-07/schema#"
2118
+ },
2119
+ "annotations": {
2120
+ "readOnlyHint": true,
2121
+ "destructiveHint": false,
2122
+ "idempotentHint": true,
2123
+ "openWorldHint": true
2124
+ },
2125
+ "execution": {
2126
+ "taskSupport": "forbidden"
2127
+ }
2128
+ },
2129
+ {
2130
+ "name": "google_ads_get_pmax_asset_diagnostics",
2131
+ "title": "google ads get pmax asset diagnostics",
2132
+ "description": "Read-only Performance Max asset group diagnostics. Returns ad strength, asset coverage action items, primary status reasons, optional performance metrics, and optional top asset combinations.",
2133
+ "inputSchema": {
2134
+ "type": "object",
2135
+ "properties": {
2136
+ "customerId": {
2137
+ "type": "string",
2138
+ "description": "Google Ads customer ID (without dashes, e.g., 1234567890)"
2139
+ },
2140
+ "startDate": {
2141
+ "type": "string",
2142
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
2143
+ "description": "Optional start date YYYY-MM-DD for asset group metrics/top combinations"
2144
+ },
2145
+ "endDate": {
2146
+ "$ref": "#/properties/startDate",
2147
+ "description": "Optional end date YYYY-MM-DD for asset group metrics/top combinations"
2148
+ },
2149
+ "campaignId": {
2150
+ "type": "string",
2151
+ "pattern": "^\\d+$",
2152
+ "description": "Optional Performance Max campaign ID filter"
2153
+ },
2154
+ "assetGroupId": {
2155
+ "$ref": "#/properties/campaignId",
2156
+ "description": "Optional asset group ID filter"
2157
+ },
2158
+ "statusFilter": {
2159
+ "type": "string",
2160
+ "enum": [
2161
+ "ENABLED",
2162
+ "PAUSED",
2163
+ "REMOVED"
2164
+ ],
2165
+ "description": "Native status values used to filter the returned entities."
2166
+ },
2167
+ "includeTopCombinations": {
2168
+ "type": "boolean",
2169
+ "default": true,
2170
+ "description": "Also query asset_group_top_combination_view when available"
2171
+ },
2172
+ "limit": {
2173
+ "type": "integer",
2174
+ "minimum": 1,
2175
+ "maximum": 1000,
2176
+ "default": 1000,
2177
+ "description": "Maximum number of returned items or rows. The declared bounds and default apply; use pagination for additional results."
2178
+ }
2179
+ },
2180
+ "required": [
2181
+ "customerId"
2182
+ ],
2183
+ "additionalProperties": false,
2184
+ "$schema": "http://json-schema.org/draft-07/schema#"
2185
+ },
2186
+ "outputSchema": {
2187
+ "type": "object",
2188
+ "properties": {
2189
+ "result": {
2190
+ "anyOf": [
2191
+ {
2192
+ "type": "object",
2193
+ "properties": {},
2194
+ "additionalProperties": true
2195
+ },
2196
+ {
2197
+ "type": "array",
2198
+ "items": {}
2199
+ },
2200
+ {
2201
+ "type": "string"
2202
+ },
2203
+ {
2204
+ "type": "number"
2205
+ },
2206
+ {
2207
+ "type": "boolean"
2208
+ },
2209
+ {
2210
+ "type": "null"
2211
+ }
2212
+ ],
2213
+ "description": "Original tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query."
2214
+ }
2215
+ },
2216
+ "required": [
2217
+ "result"
2218
+ ],
2219
+ "additionalProperties": false,
2220
+ "$schema": "http://json-schema.org/draft-07/schema#"
2221
+ },
2222
+ "annotations": {
2223
+ "readOnlyHint": true,
2224
+ "destructiveHint": false,
2225
+ "idempotentHint": true,
2226
+ "openWorldHint": true
2227
+ },
2228
+ "execution": {
2229
+ "taskSupport": "forbidden"
2230
+ }
2231
+ },
2232
+ {
2233
+ "name": "google_ads_list_image_assets",
2234
+ "title": "google ads list image assets",
2235
+ "description": "List the account's image asset library (FROM asset) with stable, publicly served full-size URLs on tpc.googlesyndication.com, dimensions, file size, and mime type. This is the whole stock and carries no notion of delivery: an asset uploaded in 2022 and never served appears exactly like one running today. Newest first, so a limit returns recent assets rather than an arbitrary slice, and the count in the response is the account total. For a visual-only gallery of assets with delivery over dates, use the hosted GetMCPAds service (Performance Max coverage). The local server returns media URLs and native report data. Shopping product imagery lives in Merchant Center, not in this library.",
2236
+ "inputSchema": {
2237
+ "type": "object",
2238
+ "properties": {
2239
+ "customerId": {
2240
+ "type": "string",
2241
+ "description": "Google Ads customer ID (without dashes, e.g., 1234567890)"
2242
+ },
2243
+ "beforeAssetId": {
2244
+ "type": "string",
2245
+ "pattern": "^\\d+$",
2246
+ "description": "Continue the descending library before this last-seen asset ID. Use the same filters."
2247
+ },
2248
+ "assetIds": {
2249
+ "type": "array",
2250
+ "items": {
2251
+ "$ref": "#/properties/beforeAssetId"
2252
+ },
2253
+ "minItems": 1,
2254
+ "maxItems": 8,
2255
+ "description": "Resolve these exact native asset IDs, without scanning the library."
2256
+ },
2257
+ "nameFilter": {
2258
+ "type": "string",
2259
+ "description": "Only assets whose file name contains this text"
2260
+ },
2261
+ "minWidth": {
2262
+ "type": "integer",
2263
+ "minimum": 1,
2264
+ "description": "Only images at least this wide, in pixels"
2265
+ },
2266
+ "minHeight": {
2267
+ "type": "integer",
2268
+ "minimum": 1,
2269
+ "description": "Only images at least this tall, in pixels"
2270
+ },
2271
+ "limit": {
2272
+ "type": "integer",
2273
+ "minimum": 1,
2274
+ "maximum": 10000,
2275
+ "default": 500,
2276
+ "description": "Maximum number of returned items or rows. The declared bounds and default apply; use pagination for additional results."
2277
+ }
2278
+ },
2279
+ "required": [
2280
+ "customerId"
2281
+ ],
2282
+ "additionalProperties": false,
2283
+ "$schema": "http://json-schema.org/draft-07/schema#"
2284
+ },
2285
+ "outputSchema": {
2286
+ "type": "object",
2287
+ "properties": {
2288
+ "result": {
2289
+ "anyOf": [
2290
+ {
2291
+ "type": "object",
2292
+ "properties": {},
2293
+ "additionalProperties": true
2294
+ },
2295
+ {
2296
+ "type": "array",
2297
+ "items": {}
2298
+ },
2299
+ {
2300
+ "type": "string"
2301
+ },
2302
+ {
2303
+ "type": "number"
2304
+ },
2305
+ {
2306
+ "type": "boolean"
2307
+ },
2308
+ {
2309
+ "type": "null"
2310
+ }
2311
+ ],
2312
+ "description": "Original tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query."
2313
+ }
2314
+ },
2315
+ "required": [
2316
+ "result"
2317
+ ],
2318
+ "additionalProperties": false,
2319
+ "$schema": "http://json-schema.org/draft-07/schema#"
2320
+ },
2321
+ "annotations": {
2322
+ "readOnlyHint": true,
2323
+ "destructiveHint": false,
2324
+ "idempotentHint": true,
2325
+ "openWorldHint": true
2326
+ },
2327
+ "execution": {
2328
+ "taskSupport": "forbidden"
2329
+ }
2330
+ },
2331
+ {
2332
+ "name": "google_ads_list_video_assets",
2333
+ "title": "google ads list video assets",
2334
+ "description": "List the account's YouTube video assets (FROM asset) with derived watch, embed, and public thumbnail URLs. This is the whole stock and carries no notion of delivery: an asset uploaded years ago and never served appears exactly like one running today. Newest first, so a limit returns recent assets rather than an arbitrary slice, and the count in the response is the account total. For a visual-only gallery of assets with delivery over dates, use the hosted GetMCPAds service (Performance Max coverage). The local server returns media URLs and native report data. Google Ads exposes no downloadable video file: PMax and Demand Gen videos are hosted on YouTube, so display them via embed or thumbnails.",
2335
+ "inputSchema": {
2336
+ "type": "object",
2337
+ "properties": {
2338
+ "customerId": {
2339
+ "type": "string",
2340
+ "description": "Google Ads customer ID (without dashes, e.g., 1234567890)"
2341
+ },
2342
+ "beforeAssetId": {
2343
+ "type": "string",
2344
+ "pattern": "^\\d+$",
2345
+ "description": "Continue the descending library before this last-seen asset ID. Use the same filters."
2346
+ },
2347
+ "assetIds": {
2348
+ "type": "array",
2349
+ "items": {
2350
+ "$ref": "#/properties/beforeAssetId"
2351
+ },
2352
+ "minItems": 1,
2353
+ "maxItems": 8,
2354
+ "description": "Resolve these exact native asset IDs, without scanning the library."
2355
+ },
2356
+ "nameFilter": {
2357
+ "type": "string",
2358
+ "description": "Only assets whose name contains this text"
2359
+ },
2360
+ "limit": {
2361
+ "type": "integer",
2362
+ "minimum": 1,
2363
+ "maximum": 10000,
2364
+ "default": 500,
2365
+ "description": "Maximum number of returned items or rows. The declared bounds and default apply; use pagination for additional results."
2366
+ }
2367
+ },
2368
+ "required": [
2369
+ "customerId"
2370
+ ],
2371
+ "additionalProperties": false,
2372
+ "$schema": "http://json-schema.org/draft-07/schema#"
2373
+ },
2374
+ "outputSchema": {
2375
+ "type": "object",
2376
+ "properties": {
2377
+ "result": {
2378
+ "anyOf": [
2379
+ {
2380
+ "type": "object",
2381
+ "properties": {},
2382
+ "additionalProperties": true
2383
+ },
2384
+ {
2385
+ "type": "array",
2386
+ "items": {}
2387
+ },
2388
+ {
2389
+ "type": "string"
2390
+ },
2391
+ {
2392
+ "type": "number"
2393
+ },
2394
+ {
2395
+ "type": "boolean"
2396
+ },
2397
+ {
2398
+ "type": "null"
2399
+ }
2400
+ ],
2401
+ "description": "Original tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query."
2402
+ }
2403
+ },
2404
+ "required": [
2405
+ "result"
2406
+ ],
2407
+ "additionalProperties": false,
2408
+ "$schema": "http://json-schema.org/draft-07/schema#"
2409
+ },
2410
+ "annotations": {
2411
+ "readOnlyHint": true,
2412
+ "destructiveHint": false,
2413
+ "idempotentHint": true,
2414
+ "openWorldHint": true
2415
+ },
2416
+ "execution": {
2417
+ "taskSupport": "forbidden"
2418
+ }
2419
+ },
2420
+ {
2421
+ "name": "google_ads_get_demand_gen_assets",
2422
+ "title": "google ads get demand gen assets",
2423
+ "description": "List Demand Gen ads (video responsive, multi-asset, carousel) with their referenced creatives resolved: stable image URLs and YouTube video IDs with embed and thumbnail URLs. Complements google_ads_get_pmax_assets, which covers Performance Max.",
2424
+ "inputSchema": {
2425
+ "type": "object",
2426
+ "properties": {
2427
+ "customerId": {
2428
+ "type": "string",
2429
+ "description": "Google Ads customer ID (without dashes, e.g., 1234567890)"
2430
+ },
2431
+ "campaignId": {
2432
+ "type": "string",
2433
+ "pattern": "^\\d+$",
2434
+ "description": "Optional Demand Gen campaign ID filter"
2435
+ },
2436
+ "limit": {
2437
+ "type": "integer",
2438
+ "minimum": 1,
2439
+ "maximum": 10000,
2440
+ "default": 500,
2441
+ "description": "Maximum number of returned items or rows. The declared bounds and default apply; use pagination for additional results."
2442
+ }
2443
+ },
2444
+ "required": [
2445
+ "customerId"
2446
+ ],
2447
+ "additionalProperties": false,
2448
+ "$schema": "http://json-schema.org/draft-07/schema#"
2449
+ },
2450
+ "outputSchema": {
2451
+ "type": "object",
2452
+ "properties": {
2453
+ "result": {
2454
+ "anyOf": [
2455
+ {
2456
+ "type": "object",
2457
+ "properties": {},
2458
+ "additionalProperties": true
2459
+ },
2460
+ {
2461
+ "type": "array",
2462
+ "items": {}
2463
+ },
2464
+ {
2465
+ "type": "string"
2466
+ },
2467
+ {
2468
+ "type": "number"
2469
+ },
2470
+ {
2471
+ "type": "boolean"
2472
+ },
2473
+ {
2474
+ "type": "null"
2475
+ }
2476
+ ],
2477
+ "description": "Original tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query."
2478
+ }
2479
+ },
2480
+ "required": [
2481
+ "result"
2482
+ ],
2483
+ "additionalProperties": false,
2484
+ "$schema": "http://json-schema.org/draft-07/schema#"
2485
+ },
2486
+ "annotations": {
2487
+ "readOnlyHint": true,
2488
+ "destructiveHint": false,
2489
+ "idempotentHint": true,
2490
+ "openWorldHint": true
2491
+ },
2492
+ "execution": {
2493
+ "taskSupport": "forbidden"
2494
+ }
2495
+ },
2496
+ {
2497
+ "name": "google_ads_generate_keyword_historical_metrics",
2498
+ "title": "google ads generate keyword historical metrics",
2499
+ "description": "Get Keyword Planner search-volume history for supplied keywords. Returns average monthly searches, monthly volumes (up to 48 months), latest volume, computed 3-month and YoY changes, competition, CPC/bid ranges, close variants, and optional device totals. This is a read-only planless RPC.",
2500
+ "inputSchema": {
2501
+ "type": "object",
2502
+ "properties": {
2503
+ "customerId": {
2504
+ "type": "string",
2505
+ "pattern": "^\\d[\\d-]*\\d$|^\\d$",
2506
+ "description": "Google Ads serving customer ID; use the client account, not its MCC manager"
2507
+ },
2508
+ "keywords": {
2509
+ "type": "array",
2510
+ "items": {
2511
+ "type": "string",
2512
+ "minLength": 1,
2513
+ "maxLength": 80
2514
+ },
2515
+ "minItems": 1,
2516
+ "maxItems": 10000,
2517
+ "description": "Keywords to analyze; Google may combine near-exact close variants"
2518
+ },
2519
+ "geoTargetIds": {
2520
+ "type": "array",
2521
+ "items": {
2522
+ "type": "string",
2523
+ "pattern": "^\\d+$"
2524
+ },
2525
+ "maxItems": 10,
2526
+ "default": [],
2527
+ "description": "Geo target criterion IDs, e.g. 2250 for France; empty means all geographies"
2528
+ },
2529
+ "languageId": {
2530
+ "$ref": "#/properties/geoTargetIds/items",
2531
+ "description": "Optional language criterion ID, e.g. 1002 for French; omit for all languages"
2532
+ },
2533
+ "network": {
2534
+ "type": "string",
2535
+ "enum": [
2536
+ "GOOGLE_SEARCH",
2537
+ "GOOGLE_SEARCH_AND_PARTNERS"
2538
+ ],
2539
+ "default": "GOOGLE_SEARCH",
2540
+ "description": "Google Ads search network selector used for planning."
2541
+ },
2542
+ "includeAdultKeywords": {
2543
+ "type": "boolean",
2544
+ "default": false,
2545
+ "description": "Allow adult keyword ideas where supported by the provider and the selected market."
2546
+ },
2547
+ "includeAverageCpc": {
2548
+ "type": "boolean",
2549
+ "default": true,
2550
+ "description": "Request legacy average CPC in addition to top-of-page bid ranges"
2551
+ },
2552
+ "includeDeviceBreakdown": {
2553
+ "type": "boolean",
2554
+ "default": false,
2555
+ "description": "Return aggregate searches by device across all requested keywords"
2556
+ },
2557
+ "includeMonthlySearchVolumes": {
2558
+ "type": "boolean",
2559
+ "default": true,
2560
+ "description": "Include every monthly point in the MCP output. Set false to trim an allowed response; Google's upstream series and the 50,000-point guard are unchanged"
2561
+ },
2562
+ "historyMonths": {
2563
+ "type": "integer",
2564
+ "minimum": 3,
2565
+ "maximum": 48,
2566
+ "default": 24,
2567
+ "description": "History length when no explicit YYYY-MM range is supplied; 24 enables YoY calculation"
2568
+ },
2569
+ "startYearMonth": {
2570
+ "type": "string",
2571
+ "pattern": "^\\d{4}-(0[1-9]|1[0-2])$",
2572
+ "description": "Optional inclusive historical range start YYYY-MM"
2573
+ },
2574
+ "endYearMonth": {
2575
+ "$ref": "#/properties/startYearMonth",
2576
+ "description": "Optional inclusive historical range end YYYY-MM"
2577
+ }
2578
+ },
2579
+ "required": [
2580
+ "customerId",
2581
+ "keywords"
2582
+ ],
2583
+ "additionalProperties": false,
2584
+ "$schema": "http://json-schema.org/draft-07/schema#"
2585
+ },
2586
+ "outputSchema": {
2587
+ "type": "object",
2588
+ "properties": {
2589
+ "result": {
2590
+ "anyOf": [
2591
+ {
2592
+ "type": "object",
2593
+ "properties": {},
2594
+ "additionalProperties": true
2595
+ },
2596
+ {
2597
+ "type": "array",
2598
+ "items": {}
2599
+ },
2600
+ {
2601
+ "type": "string"
2602
+ },
2603
+ {
2604
+ "type": "number"
2605
+ },
2606
+ {
2607
+ "type": "boolean"
2608
+ },
2609
+ {
2610
+ "type": "null"
2611
+ }
2612
+ ],
2613
+ "description": "Original tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query."
2614
+ }
2615
+ },
2616
+ "required": [
2617
+ "result"
2618
+ ],
2619
+ "additionalProperties": false,
2620
+ "$schema": "http://json-schema.org/draft-07/schema#"
2621
+ },
2622
+ "annotations": {
2623
+ "readOnlyHint": true,
2624
+ "destructiveHint": false,
2625
+ "idempotentHint": true,
2626
+ "openWorldHint": true
2627
+ },
2628
+ "execution": {
2629
+ "taskSupport": "forbidden"
2630
+ }
2631
+ },
2632
+ {
2633
+ "name": "google_ads_generate_keyword_ideas",
2634
+ "title": "google ads generate keyword ideas",
2635
+ "description": "Discover Keyword Planner ideas from up to 20 seed keywords, a URL, keywords plus URL, or a whole site. Returns historical volume, monthly trends, computed 3-month/YoY changes, competition, bids, close variants, optional concepts, and pagination. Read-only; no plan is saved.",
2636
+ "inputSchema": {
2637
+ "type": "object",
2638
+ "properties": {
2639
+ "customerId": {
2640
+ "type": "string",
2641
+ "pattern": "^\\d[\\d-]*\\d$|^\\d$",
2642
+ "description": "Google Ads serving customer ID; use the client account, not its MCC manager"
2643
+ },
2644
+ "seedKeywords": {
2645
+ "type": "array",
2646
+ "items": {
2647
+ "type": "string",
2648
+ "minLength": 1,
2649
+ "maxLength": 80
2650
+ },
2651
+ "minItems": 1,
2652
+ "maxItems": 20,
2653
+ "description": "Seed keyword phrases from which Google generates keyword ideas."
2654
+ },
2655
+ "url": {
2656
+ "type": "string",
2657
+ "minLength": 1,
2658
+ "description": "Specific page URL to crawl; combine with seedKeywords if desired"
2659
+ },
2660
+ "site": {
2661
+ "type": "string",
2662
+ "minLength": 1,
2663
+ "description": "Whole-domain seed; exclusive with seedKeywords/url"
2664
+ },
2665
+ "geoTargetIds": {
2666
+ "type": "array",
2667
+ "items": {
2668
+ "type": "string",
2669
+ "pattern": "^\\d+$"
2670
+ },
2671
+ "maxItems": 10,
2672
+ "default": [],
2673
+ "description": "Google Ads geo-target constant IDs for the intended locations."
2674
+ },
2675
+ "languageId": {
2676
+ "$ref": "#/properties/geoTargetIds/items",
2677
+ "description": "Google Ads language constant ID for the keyword request."
2678
+ },
2679
+ "network": {
2680
+ "type": "string",
2681
+ "enum": [
2682
+ "GOOGLE_SEARCH",
2683
+ "GOOGLE_SEARCH_AND_PARTNERS"
2684
+ ],
2685
+ "default": "GOOGLE_SEARCH",
2686
+ "description": "Google Ads search network selector used for planning."
2687
+ },
2688
+ "includeAdultKeywords": {
2689
+ "type": "boolean",
2690
+ "default": false,
2691
+ "description": "Allow adult keyword ideas where supported by the provider and the selected market."
2692
+ },
2693
+ "includeAverageCpc": {
2694
+ "type": "boolean",
2695
+ "default": true,
2696
+ "description": "Request average cost-per-click metrics when available."
2697
+ },
2698
+ "includeDeviceBreakdown": {
2699
+ "type": "boolean",
2700
+ "default": false,
2701
+ "description": "Include device-specific planning metrics when supported."
2702
+ },
2703
+ "includeKeywordConcepts": {
2704
+ "type": "boolean",
2705
+ "default": true,
2706
+ "description": "Include Google's keyword concept grouping metadata."
2707
+ },
2708
+ "historyMonths": {
2709
+ "type": "integer",
2710
+ "minimum": 3,
2711
+ "maximum": 48,
2712
+ "default": 13,
2713
+ "description": "13 months is enough to compute latest-month YoY while limiting response size"
2714
+ },
2715
+ "startYearMonth": {
2716
+ "type": "string",
2717
+ "pattern": "^\\d{4}-(0[1-9]|1[0-2])$",
2718
+ "description": "First year and month of the historical metrics period."
2719
+ },
2720
+ "endYearMonth": {
2721
+ "$ref": "#/properties/startYearMonth",
2722
+ "description": "Last year and month of the historical metrics period."
2723
+ },
2724
+ "pageSize": {
2725
+ "type": "integer",
2726
+ "minimum": 1,
2727
+ "maximum": 10000,
2728
+ "default": 100,
2729
+ "description": "Google supports up to 10,000; keep pages small for interactive MCP use and use larger pages only for controlled exports"
2730
+ },
2731
+ "pageToken": {
2732
+ "type": "string",
2733
+ "description": "nextPageToken from a prior identical request"
2734
+ }
2735
+ },
2736
+ "required": [
2737
+ "customerId"
2738
+ ],
2739
+ "additionalProperties": false,
2740
+ "$schema": "http://json-schema.org/draft-07/schema#"
2741
+ },
2742
+ "outputSchema": {
2743
+ "type": "object",
2744
+ "properties": {
2745
+ "result": {
2746
+ "anyOf": [
2747
+ {
2748
+ "type": "object",
2749
+ "properties": {},
2750
+ "additionalProperties": true
2751
+ },
2752
+ {
2753
+ "type": "array",
2754
+ "items": {}
2755
+ },
2756
+ {
2757
+ "type": "string"
2758
+ },
2759
+ {
2760
+ "type": "number"
2761
+ },
2762
+ {
2763
+ "type": "boolean"
2764
+ },
2765
+ {
2766
+ "type": "null"
2767
+ }
2768
+ ],
2769
+ "description": "Original tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query."
2770
+ }
2771
+ },
2772
+ "required": [
2773
+ "result"
2774
+ ],
2775
+ "additionalProperties": false,
2776
+ "$schema": "http://json-schema.org/draft-07/schema#"
2777
+ },
2778
+ "annotations": {
2779
+ "readOnlyHint": true,
2780
+ "destructiveHint": false,
2781
+ "idempotentHint": true,
2782
+ "openWorldHint": true
2783
+ },
2784
+ "execution": {
2785
+ "taskSupport": "forbidden"
2786
+ }
2787
+ },
2788
+ {
2789
+ "name": "google_ads_generate_keyword_forecast_metrics",
2790
+ "title": "google ads generate keyword forecast metrics",
2791
+ "description": "Forecast impressions, clicks, CTR, CPC, cost, conversions, and CPA for a temporary keyword campaign. Supports targeting, negatives, match type, three bidding strategies, explicit future dates, and an optional independent per-keyword breakdown. This read-only planless RPC does not create a campaign or saved plan.",
2792
+ "inputSchema": {
2793
+ "type": "object",
2794
+ "properties": {
2795
+ "customerId": {
2796
+ "type": "string",
2797
+ "pattern": "^\\d[\\d-]*\\d$|^\\d$",
2798
+ "description": "Google Ads serving customer ID; use a relevant client account for better estimates"
2799
+ },
2800
+ "keywords": {
2801
+ "type": "array",
2802
+ "items": {
2803
+ "type": "string",
2804
+ "minLength": 1,
2805
+ "maxLength": 80
2806
+ },
2807
+ "minItems": 1,
2808
+ "maxItems": 1000,
2809
+ "description": "Keyword phrases to analyze; use the language and market of the intended audience."
2810
+ },
2811
+ "matchType": {
2812
+ "type": "string",
2813
+ "enum": [
2814
+ "EXACT",
2815
+ "PHRASE",
2816
+ "BROAD"
2817
+ ],
2818
+ "default": "BROAD",
2819
+ "description": "Google Ads keyword match type for the forecast."
2820
+ },
2821
+ "negativeKeywords": {
2822
+ "type": "array",
2823
+ "items": {
2824
+ "$ref": "#/properties/keywords/items"
2825
+ },
2826
+ "maxItems": 1000,
2827
+ "default": [],
2828
+ "description": "Keyword phrases excluded from the keyword forecast."
2829
+ },
2830
+ "negativeMatchType": {
2831
+ "$ref": "#/properties/matchType",
2832
+ "default": "BROAD",
2833
+ "description": "Match type applied to the negative keywords."
2834
+ },
2835
+ "geoTargetIds": {
2836
+ "type": "array",
2837
+ "items": {
2838
+ "type": "string",
2839
+ "pattern": "^\\d+$"
2840
+ },
2841
+ "maxItems": 20,
2842
+ "default": [],
2843
+ "description": "Google Ads geo-target constant IDs for the intended locations."
2844
+ },
2845
+ "languageIds": {
2846
+ "type": "array",
2847
+ "items": {
2848
+ "$ref": "#/properties/geoTargetIds/items"
2849
+ },
2850
+ "maxItems": 10,
2851
+ "default": [],
2852
+ "description": "Google Ads language constant IDs for the intended audience."
2853
+ },
2854
+ "network": {
2855
+ "type": "string",
2856
+ "enum": [
2857
+ "GOOGLE_SEARCH",
2858
+ "GOOGLE_SEARCH_AND_PARTNERS"
2859
+ ],
2860
+ "default": "GOOGLE_SEARCH",
2861
+ "description": "Google Ads search network selector used for planning."
2862
+ },
2863
+ "biddingStrategy": {
2864
+ "type": "string",
2865
+ "enum": [
2866
+ "MANUAL_CPC",
2867
+ "MAXIMIZE_CLICKS",
2868
+ "MAXIMIZE_CONVERSIONS"
2869
+ ],
2870
+ "default": "MANUAL_CPC",
2871
+ "description": "Supported bidding strategy for this temporary forecast. The request does not create a live campaign."
2872
+ },
2873
+ "maxCpcBid": {
2874
+ "type": "number",
2875
+ "minimum": 0.000001,
2876
+ "maximum": 1000000000,
2877
+ "description": "Bid in standard account-currency units; required for MANUAL_CPC"
2878
+ },
2879
+ "dailyBudget": {
2880
+ "$ref": "#/properties/maxCpcBid",
2881
+ "description": "Daily amount in standard currency units; required for maximize strategies and optional for MANUAL_CPC"
2882
+ },
2883
+ "maxCpcBidCeiling": {
2884
+ "$ref": "#/properties/maxCpcBid",
2885
+ "description": "Optional standard-currency CPC ceiling for MAXIMIZE_CLICKS"
2886
+ },
2887
+ "conversionRate": {
2888
+ "type": "number",
2889
+ "minimum": 0,
2890
+ "maximum": 1,
2891
+ "description": "Expected conversion rate as a decimal, e.g. 0.02 for 2%"
2892
+ },
2893
+ "currencyCode": {
2894
+ "type": "string",
2895
+ "pattern": "^[A-Z]{3}$",
2896
+ "description": "Optional ISO 4217 conversion currency; account currency is used by default"
2897
+ },
2898
+ "startDate": {
2899
+ "type": "string",
2900
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
2901
+ "description": "Optional inclusive future forecast start YYYY-MM-DD; supply with endDate"
2902
+ },
2903
+ "endDate": {
2904
+ "$ref": "#/properties/startDate",
2905
+ "description": "Optional inclusive forecast end YYYY-MM-DD, no more than one year ahead; supply with startDate"
2906
+ },
2907
+ "includeKeywordBreakdown": {
2908
+ "type": "boolean",
2909
+ "default": false,
2910
+ "description": "Make independent one-keyword forecast calls in addition to the combined campaign forecast"
2911
+ },
2912
+ "keywordBreakdownLimit": {
2913
+ "type": "integer",
2914
+ "minimum": 1,
2915
+ "maximum": 20,
2916
+ "default": 10,
2917
+ "description": "Safety cap for additional rate-limited Keyword Planner requests"
2918
+ }
2919
+ },
2920
+ "required": [
2921
+ "customerId",
2922
+ "keywords"
2923
+ ],
2924
+ "additionalProperties": false,
2925
+ "$schema": "http://json-schema.org/draft-07/schema#"
2926
+ },
2927
+ "outputSchema": {
2928
+ "type": "object",
2929
+ "properties": {
2930
+ "result": {
2931
+ "anyOf": [
2932
+ {
2933
+ "type": "object",
2934
+ "properties": {},
2935
+ "additionalProperties": true
2936
+ },
2937
+ {
2938
+ "type": "array",
2939
+ "items": {}
2940
+ },
2941
+ {
2942
+ "type": "string"
2943
+ },
2944
+ {
2945
+ "type": "number"
2946
+ },
2947
+ {
2948
+ "type": "boolean"
2949
+ },
2950
+ {
2951
+ "type": "null"
2952
+ }
2953
+ ],
2954
+ "description": "Original tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query."
2955
+ }
2956
+ },
2957
+ "required": [
2958
+ "result"
2959
+ ],
2960
+ "additionalProperties": false,
2961
+ "$schema": "http://json-schema.org/draft-07/schema#"
2962
+ },
2963
+ "annotations": {
2964
+ "readOnlyHint": true,
2965
+ "destructiveHint": false,
2966
+ "idempotentHint": true,
2967
+ "openWorldHint": true
2968
+ },
2969
+ "execution": {
2970
+ "taskSupport": "forbidden"
2971
+ }
2972
+ },
2973
+ {
2974
+ "name": "google_ads_search_fields",
2975
+ "title": "google ads search fields",
2976
+ "description": "Search Google's live GoogleAdsField catalog. Discovers every queryable GAQL resource, attribute, segment, metric, enum value, and selectable-with compatibility relationship. Read-only and useful before a raw GAQL query.",
2977
+ "inputSchema": {
2978
+ "type": "object",
2979
+ "properties": {
2980
+ "query": {
2981
+ "type": "string",
2982
+ "minLength": 6,
2983
+ "maxLength": 50000,
2984
+ "description": "Optional raw GoogleAdsField SELECT query. When provided it replaces the structured filters."
2985
+ },
2986
+ "nameContains": {
2987
+ "type": "string",
2988
+ "minLength": 1,
2989
+ "maxLength": 250,
2990
+ "description": "Case-sensitive field-name substring, e.g. conversion or asset_group"
2991
+ },
2992
+ "category": {
2993
+ "type": "string",
2994
+ "enum": [
2995
+ "RESOURCE",
2996
+ "ATTRIBUTE",
2997
+ "SEGMENT",
2998
+ "METRIC"
2999
+ ],
3000
+ "description": "Category selected from the provider dictionary or field catalogue."
3001
+ },
3002
+ "selectable": {
3003
+ "type": "boolean",
3004
+ "description": "Filter the field catalogue by whether the field can appear in SELECT."
3005
+ },
3006
+ "filterable": {
3007
+ "type": "boolean",
3008
+ "description": "Filter the field catalogue by whether the field can appear in WHERE."
3009
+ },
3010
+ "sortable": {
3011
+ "type": "boolean",
3012
+ "description": "Filter the field catalogue by whether the field can appear in ORDER BY."
3013
+ },
3014
+ "pageSize": {
3015
+ "type": "integer",
3016
+ "minimum": 1,
3017
+ "maximum": 10000,
3018
+ "default": 500,
3019
+ "description": "Maximum items requested per page. Follow the returned pagination information for remaining results."
3020
+ },
3021
+ "pageToken": {
3022
+ "type": "string",
3023
+ "minLength": 1,
3024
+ "maxLength": 10000,
3025
+ "description": "Opaque continuation token returned by the preceding provider response."
3026
+ }
3027
+ },
3028
+ "additionalProperties": false,
3029
+ "$schema": "http://json-schema.org/draft-07/schema#"
3030
+ },
3031
+ "outputSchema": {
3032
+ "type": "object",
3033
+ "properties": {
3034
+ "result": {
3035
+ "anyOf": [
3036
+ {
3037
+ "type": "object",
3038
+ "properties": {},
3039
+ "additionalProperties": true
3040
+ },
3041
+ {
3042
+ "type": "array",
3043
+ "items": {}
3044
+ },
3045
+ {
3046
+ "type": "string"
3047
+ },
3048
+ {
3049
+ "type": "number"
3050
+ },
3051
+ {
3052
+ "type": "boolean"
3053
+ },
3054
+ {
3055
+ "type": "null"
3056
+ }
3057
+ ],
3058
+ "description": "Original tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query."
3059
+ }
3060
+ },
3061
+ "required": [
3062
+ "result"
3063
+ ],
3064
+ "additionalProperties": false,
3065
+ "$schema": "http://json-schema.org/draft-07/schema#"
3066
+ },
3067
+ "annotations": {
3068
+ "readOnlyHint": true,
3069
+ "destructiveHint": false,
3070
+ "idempotentHint": true,
3071
+ "openWorldHint": true
3072
+ },
3073
+ "execution": {
3074
+ "taskSupport": "forbidden"
3075
+ }
3076
+ },
3077
+ {
3078
+ "name": "google_ads_suggest_geo_targets",
3079
+ "title": "google ads suggest geo targets",
3080
+ "description": "Resolve up to 25 location names or geo target IDs to Google Ads geoTargetConstants. Returns criterion IDs, canonical names, target types, status, parents, locale, and approximate reach. Read-only.",
3081
+ "inputSchema": {
3082
+ "type": "object",
3083
+ "properties": {
3084
+ "locationNames": {
3085
+ "type": "array",
3086
+ "items": {
3087
+ "type": "string",
3088
+ "minLength": 1,
3089
+ "maxLength": 250
3090
+ },
3091
+ "minItems": 1,
3092
+ "maxItems": 25,
3093
+ "description": "Human-readable location names for Google to resolve into geo-target constants."
3094
+ },
3095
+ "geoTargetIds": {
3096
+ "type": "array",
3097
+ "items": {
3098
+ "type": "string",
3099
+ "pattern": "^\\d+$"
3100
+ },
3101
+ "minItems": 1,
3102
+ "maxItems": 25,
3103
+ "description": "Google Ads geo-target constant IDs for the intended locations."
3104
+ },
3105
+ "locale": {
3106
+ "type": "string",
3107
+ "pattern": "^[A-Za-z]{2,3}(?:[-_][A-Za-z]{2,4})?$",
3108
+ "default": "en",
3109
+ "description": "Locale used for human-readable lookup results."
3110
+ },
3111
+ "countryCode": {
3112
+ "type": "string",
3113
+ "pattern": "^[A-Za-z]{2}$",
3114
+ "description": "Country code used to localize keyword or targeting results."
3115
+ }
3116
+ },
3117
+ "additionalProperties": false,
3118
+ "$schema": "http://json-schema.org/draft-07/schema#"
3119
+ },
3120
+ "outputSchema": {
3121
+ "type": "object",
3122
+ "properties": {
3123
+ "result": {
3124
+ "anyOf": [
3125
+ {
3126
+ "type": "object",
3127
+ "properties": {},
3128
+ "additionalProperties": true
3129
+ },
3130
+ {
3131
+ "type": "array",
3132
+ "items": {}
3133
+ },
3134
+ {
3135
+ "type": "string"
3136
+ },
3137
+ {
3138
+ "type": "number"
3139
+ },
3140
+ {
3141
+ "type": "boolean"
3142
+ },
3143
+ {
3144
+ "type": "null"
3145
+ }
3146
+ ],
3147
+ "description": "Original tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query."
3148
+ }
3149
+ },
3150
+ "required": [
3151
+ "result"
3152
+ ],
3153
+ "additionalProperties": false,
3154
+ "$schema": "http://json-schema.org/draft-07/schema#"
3155
+ },
3156
+ "annotations": {
3157
+ "readOnlyHint": true,
3158
+ "destructiveHint": false,
3159
+ "idempotentHint": true,
3160
+ "openWorldHint": true
3161
+ },
3162
+ "execution": {
3163
+ "taskSupport": "forbidden"
3164
+ }
3165
+ },
3166
+ {
3167
+ "name": "google_ads_generate_ad_group_themes",
3168
+ "title": "google ads generate ad group themes",
3169
+ "description": "Organize supplied keywords into existing Google Ads ad groups. Returns suggested ad group/campaign pairings, normalized keyword text, and suggested match type without creating or editing keywords. Read-only Keyword Planner RPC.",
3170
+ "inputSchema": {
3171
+ "type": "object",
3172
+ "properties": {
3173
+ "customerId": {
3174
+ "type": "string",
3175
+ "pattern": "^\\d[\\d-]*\\d$|^\\d$",
3176
+ "description": "Serving customer ID containing the existing ad groups"
3177
+ },
3178
+ "keywords": {
3179
+ "type": "array",
3180
+ "items": {
3181
+ "type": "string",
3182
+ "minLength": 1,
3183
+ "maxLength": 80
3184
+ },
3185
+ "minItems": 1,
3186
+ "maxItems": 1000,
3187
+ "description": "Keyword phrases to analyze; use the language and market of the intended audience."
3188
+ },
3189
+ "adGroupIds": {
3190
+ "type": "array",
3191
+ "items": {
3192
+ "type": "string",
3193
+ "pattern": "^\\d+$"
3194
+ },
3195
+ "minItems": 1,
3196
+ "maxItems": 200,
3197
+ "description": "Existing ad group IDs in the same customer account"
3198
+ }
3199
+ },
3200
+ "required": [
3201
+ "customerId",
3202
+ "keywords",
3203
+ "adGroupIds"
3204
+ ],
3205
+ "additionalProperties": false,
3206
+ "$schema": "http://json-schema.org/draft-07/schema#"
3207
+ },
3208
+ "outputSchema": {
3209
+ "type": "object",
3210
+ "properties": {
3211
+ "result": {
3212
+ "anyOf": [
3213
+ {
3214
+ "type": "object",
3215
+ "properties": {},
3216
+ "additionalProperties": true
3217
+ },
3218
+ {
3219
+ "type": "array",
3220
+ "items": {}
3221
+ },
3222
+ {
3223
+ "type": "string"
3224
+ },
3225
+ {
3226
+ "type": "number"
3227
+ },
3228
+ {
3229
+ "type": "boolean"
3230
+ },
3231
+ {
3232
+ "type": "null"
3233
+ }
3234
+ ],
3235
+ "description": "Original tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query."
3236
+ }
3237
+ },
3238
+ "required": [
3239
+ "result"
3240
+ ],
3241
+ "additionalProperties": false,
3242
+ "$schema": "http://json-schema.org/draft-07/schema#"
3243
+ },
3244
+ "annotations": {
3245
+ "readOnlyHint": true,
3246
+ "destructiveHint": false,
3247
+ "idempotentHint": true,
3248
+ "openWorldHint": true
3249
+ },
3250
+ "execution": {
3251
+ "taskSupport": "forbidden"
3252
+ }
3253
+ },
3254
+ {
3255
+ "name": "google_ads_run_readonly_rpc",
3256
+ "title": "google ads run readonly rpc",
3257
+ "description": "Advanced read-only escape hatch for allowlisted Google Ads services outside GAQL: Audience Insights, Reach Planner, benchmarks, creator/trending insights, targeting suggestions, Smart Campaign suggestions, identity verification, invoices, and payments accounts. The operation is an enum; arbitrary paths and all mutations/uploads are impossible.",
3258
+ "inputSchema": {
3259
+ "type": "object",
3260
+ "properties": {
3261
+ "operation": {
3262
+ "type": "string",
3263
+ "enum": [
3264
+ "generateAudienceCompositionInsights",
3265
+ "generateAudienceDefinition",
3266
+ "generateAudienceOverlapInsights",
3267
+ "generateBenchmarksMetrics",
3268
+ "generateCreatorInsights",
3269
+ "generateReachForecast",
3270
+ "generateShareablePreviews",
3271
+ "generateSuggestedTargetingInsights",
3272
+ "generateTargetingSuggestionMetrics",
3273
+ "generateTrendingInsights",
3274
+ "searchAudienceInsightsAttributes",
3275
+ "suggestBrands",
3276
+ "suggestKeywordThemes",
3277
+ "suggestSmartCampaignAd",
3278
+ "suggestSmartCampaignBudgetOptions",
3279
+ "suggestTravelAssets",
3280
+ "listInsightsEligibleDates",
3281
+ "suggestKeywordThemeConstants",
3282
+ "generateConversionRates",
3283
+ "listBenchmarksAvailableDates",
3284
+ "listBenchmarksLocations",
3285
+ "listBenchmarksProducts",
3286
+ "listBenchmarksSources",
3287
+ "listPlannableLocations",
3288
+ "listPlannableProducts",
3289
+ "listPlannableUserInterests",
3290
+ "listPlannableUserLists",
3291
+ "getIdentityVerification",
3292
+ "listInvoices",
3293
+ "listPaymentsAccounts"
3294
+ ],
3295
+ "description": "Exact allowlisted operation to execute. Arbitrary provider operations are not accepted."
3296
+ },
3297
+ "customerId": {
3298
+ "type": "string",
3299
+ "pattern": "^\\d[\\d-]*\\d$|^\\d$",
3300
+ "description": "Required for customer-scoped operations; omit for global planning catalogs"
3301
+ },
3302
+ "request": {
3303
+ "type": "object",
3304
+ "additionalProperties": {},
3305
+ "default": {},
3306
+ "description": "Official REST JSON request body for POST operations, or query parameters for GET operations"
3307
+ }
3308
+ },
3309
+ "required": [
3310
+ "operation"
3311
+ ],
3312
+ "additionalProperties": false,
3313
+ "$schema": "http://json-schema.org/draft-07/schema#"
3314
+ },
3315
+ "outputSchema": {
3316
+ "type": "object",
3317
+ "properties": {
3318
+ "result": {
3319
+ "anyOf": [
3320
+ {
3321
+ "type": "object",
3322
+ "properties": {},
3323
+ "additionalProperties": true
3324
+ },
3325
+ {
3326
+ "type": "array",
3327
+ "items": {}
3328
+ },
3329
+ {
3330
+ "type": "string"
3331
+ },
3332
+ {
3333
+ "type": "number"
3334
+ },
3335
+ {
3336
+ "type": "boolean"
3337
+ },
3338
+ {
3339
+ "type": "null"
3340
+ }
3341
+ ],
3342
+ "description": "Original tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query."
3343
+ }
3344
+ },
3345
+ "required": [
3346
+ "result"
3347
+ ],
3348
+ "additionalProperties": false,
3349
+ "$schema": "http://json-schema.org/draft-07/schema#"
3350
+ },
3351
+ "annotations": {
3352
+ "readOnlyHint": true,
3353
+ "destructiveHint": false,
3354
+ "idempotentHint": true,
3355
+ "openWorldHint": true
3356
+ },
3357
+ "execution": {
3358
+ "taskSupport": "forbidden"
3359
+ }
3360
+ },
3361
+ {
3362
+ "name": "google_ads_get_video_upload",
3363
+ "title": "google ads get video upload",
3364
+ "description": "Read the processing state and YouTube video ID of one Google Ads upload in the selected customer. Use only the returned videoId after state=PROCESSED. This is a read; it does not upload again.",
3365
+ "inputSchema": {
3366
+ "type": "object",
3367
+ "properties": {
3368
+ "customerId": {
3369
+ "type": "string",
3370
+ "pattern": "^[\\d-]+$",
3371
+ "description": "Google Ads customer ID, without hyphens."
3372
+ },
3373
+ "currency": {
3374
+ "type": "string",
3375
+ "pattern": "^[A-Z]{3}$",
3376
+ "description": "Actual customer currency, verified before reading the upload."
3377
+ },
3378
+ "uploadId": {
3379
+ "type": "string",
3380
+ "pattern": "^\\d+$",
3381
+ "description": "Numeric upload ID returned by google_ads_upload_video."
3382
+ },
3383
+ "loginCustomerId": {
3384
+ "type": "string",
3385
+ "pattern": "^[\\d-]+$",
3386
+ "description": "Optional MCC manager ID; defaults to the configured manager."
3387
+ },
3388
+ "testAccountOnly": {
3389
+ "type": "boolean",
3390
+ "description": "Require customer.test_account=true; enable for sandbox checks."
3391
+ }
3392
+ },
3393
+ "required": [
3394
+ "customerId",
3395
+ "currency",
3396
+ "uploadId"
3397
+ ],
3398
+ "additionalProperties": false,
3399
+ "$schema": "http://json-schema.org/draft-07/schema#"
3400
+ },
3401
+ "outputSchema": {
3402
+ "type": "object",
3403
+ "properties": {
3404
+ "result": {
3405
+ "anyOf": [
3406
+ {
3407
+ "type": "object",
3408
+ "properties": {},
3409
+ "additionalProperties": true
3410
+ },
3411
+ {
3412
+ "type": "array",
3413
+ "items": {}
3414
+ },
3415
+ {
3416
+ "type": "string"
3417
+ },
3418
+ {
3419
+ "type": "number"
3420
+ },
3421
+ {
3422
+ "type": "boolean"
3423
+ },
3424
+ {
3425
+ "type": "null"
3426
+ }
3427
+ ],
3428
+ "description": "Original tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query."
3429
+ }
3430
+ },
3431
+ "required": [
3432
+ "result"
3433
+ ],
3434
+ "additionalProperties": false,
3435
+ "$schema": "http://json-schema.org/draft-07/schema#"
3436
+ },
3437
+ "annotations": {
3438
+ "readOnlyHint": true,
3439
+ "destructiveHint": false,
3440
+ "idempotentHint": true,
3441
+ "openWorldHint": true
3442
+ },
3443
+ "execution": {
3444
+ "taskSupport": "forbidden"
3445
+ }
3446
+ },
3447
+ {
3448
+ "name": "google_ads_upload_video",
3449
+ "title": "google ads upload video",
3450
+ "description": "Upload MP4/WebM/QuickTime bytes (max 16 MiB) to the Google-managed YouTube channel for the selected ad account. Visibility is UNLISTED: viewable by anyone with the link, not private. Default preview omits bytes and returns planHash; confirm requires expectedPlanHash. This API has no validateOnly. After upload, query you_tube_video_upload.state and video_id with google_ads_run_gaql; only use the video ID after PROCESSED, via google_ads_apply_plan assetOperation.youtubeVideoAsset. No automatic retry after an uncertain upload.",
3451
+ "inputSchema": {
3452
+ "type": "object",
3453
+ "properties": {
3454
+ "customerId": {
3455
+ "type": "string",
3456
+ "pattern": "^[\\d-]+$",
3457
+ "description": "Selected Google Ads customer ID, not the manager account."
3458
+ },
3459
+ "currency": {
3460
+ "type": "string",
3461
+ "pattern": "^[A-Z]{3}$",
3462
+ "description": "Actual account currency as a three-letter ISO code; verified natively before writes."
3463
+ },
3464
+ "loginCustomerId": {
3465
+ "type": "string",
3466
+ "pattern": "^[\\d-]+$",
3467
+ "description": "Optional MCC ID; defaults to the selected account's inferred manager."
3468
+ },
3469
+ "testAccountOnly": {
3470
+ "type": "boolean",
3471
+ "description": "Require customer.test_account=true before writing. Always use true for sandbox acceptance."
3472
+ },
3473
+ "confirm": {
3474
+ "type": "boolean",
3475
+ "description": "Apply only when true and expectedPlanHash matches the exact preview."
3476
+ },
3477
+ "expectedPlanHash": {
3478
+ "type": "string",
3479
+ "pattern": "^[a-f0-9]{64}$",
3480
+ "description": "SHA-256 planHash from the preview of this exact payload, required for application."
3481
+ },
3482
+ "bytesBase64": {
3483
+ "type": "string",
3484
+ "minLength": 4,
3485
+ "maxLength": 22369624,
3486
+ "description": "Raw base64 video bytes, no data URL. Prefer an existing YouTube asset for large videos."
3487
+ },
3488
+ "mimeType": {
3489
+ "type": "string",
3490
+ "enum": [
3491
+ "video/mp4",
3492
+ "video/webm",
3493
+ "video/quicktime"
3494
+ ],
3495
+ "description": "Actual MIME type of the supplied video bytes."
3496
+ },
3497
+ "title": {
3498
+ "type": "string",
3499
+ "minLength": 1,
3500
+ "maxLength": 100,
3501
+ "description": "Nonempty title for this new video upload."
3502
+ },
3503
+ "description": {
3504
+ "type": "string",
3505
+ "minLength": 1,
3506
+ "maxLength": 5000,
3507
+ "description": "Nonempty video description; Google rejects an empty value during upload."
3508
+ },
3509
+ "visibility": {
3510
+ "type": "string",
3511
+ "const": "UNLISTED",
3512
+ "description": "Explicit acknowledgment of the visibility of this YouTube upload."
3513
+ }
3514
+ },
3515
+ "required": [
3516
+ "customerId",
3517
+ "currency",
3518
+ "bytesBase64",
3519
+ "mimeType",
3520
+ "title",
3521
+ "description",
3522
+ "visibility"
3523
+ ],
3524
+ "additionalProperties": false,
3525
+ "$schema": "http://json-schema.org/draft-07/schema#"
3526
+ },
3527
+ "outputSchema": {
3528
+ "type": "object",
3529
+ "properties": {
3530
+ "result": {
3531
+ "anyOf": [
3532
+ {
3533
+ "type": "object",
3534
+ "properties": {},
3535
+ "additionalProperties": true
3536
+ },
3537
+ {
3538
+ "type": "array",
3539
+ "items": {}
3540
+ },
3541
+ {
3542
+ "type": "string"
3543
+ },
3544
+ {
3545
+ "type": "number"
3546
+ },
3547
+ {
3548
+ "type": "boolean"
3549
+ },
3550
+ {
3551
+ "type": "null"
3552
+ }
3553
+ ],
3554
+ "description": "Original tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query."
3555
+ }
3556
+ },
3557
+ "required": [
3558
+ "result"
3559
+ ],
3560
+ "additionalProperties": false,
3561
+ "$schema": "http://json-schema.org/draft-07/schema#"
3562
+ },
3563
+ "annotations": {
3564
+ "readOnlyHint": false,
3565
+ "destructiveHint": true,
3566
+ "idempotentHint": false,
3567
+ "openWorldHint": true
3568
+ },
3569
+ "execution": {
3570
+ "taskSupport": "forbidden"
3571
+ }
3572
+ },
3573
+ {
3574
+ "name": "google_ads_remove_video_upload",
3575
+ "title": "google ads remove video upload",
3576
+ "description": "Remove a video upload owned by the selected ad account. Deletes the uploaded YouTube video and can break ads referencing it. Preview and matching expectedPlanHash required. Google v25 marks title/description immutable; this tool does not pretend to edit them.",
3577
+ "inputSchema": {
3578
+ "type": "object",
3579
+ "properties": {
3580
+ "customerId": {
3581
+ "type": "string",
3582
+ "pattern": "^[\\d-]+$",
3583
+ "description": "Selected Google Ads customer ID, not the manager account."
3584
+ },
3585
+ "currency": {
3586
+ "type": "string",
3587
+ "pattern": "^[A-Z]{3}$",
3588
+ "description": "Actual account currency as a three-letter ISO code; verified natively before writes."
3589
+ },
3590
+ "loginCustomerId": {
3591
+ "type": "string",
3592
+ "pattern": "^[\\d-]+$",
3593
+ "description": "Optional MCC ID; defaults to the selected account's inferred manager."
3594
+ },
3595
+ "testAccountOnly": {
3596
+ "type": "boolean",
3597
+ "description": "Require customer.test_account=true before writing. Always use true for sandbox acceptance."
3598
+ },
3599
+ "confirm": {
3600
+ "type": "boolean",
3601
+ "description": "Apply only when true and expectedPlanHash matches the exact preview."
3602
+ },
3603
+ "expectedPlanHash": {
3604
+ "type": "string",
3605
+ "pattern": "^[a-f0-9]{64}$",
3606
+ "description": "SHA-256 planHash from the preview of this exact payload, required for application."
3607
+ },
3608
+ "uploadId": {
3609
+ "type": "string",
3610
+ "pattern": "^\\d+$",
3611
+ "description": "Numeric ID of a video uploaded through Google Ads in this customer."
3612
+ }
3613
+ },
3614
+ "required": [
3615
+ "customerId",
3616
+ "currency",
3617
+ "uploadId"
3618
+ ],
3619
+ "additionalProperties": false,
3620
+ "$schema": "http://json-schema.org/draft-07/schema#"
3621
+ },
3622
+ "outputSchema": {
3623
+ "type": "object",
3624
+ "properties": {
3625
+ "result": {
3626
+ "anyOf": [
3627
+ {
3628
+ "type": "object",
3629
+ "properties": {},
3630
+ "additionalProperties": true
3631
+ },
3632
+ {
3633
+ "type": "array",
3634
+ "items": {}
3635
+ },
3636
+ {
3637
+ "type": "string"
3638
+ },
3639
+ {
3640
+ "type": "number"
3641
+ },
3642
+ {
3643
+ "type": "boolean"
3644
+ },
3645
+ {
3646
+ "type": "null"
3647
+ }
3648
+ ],
3649
+ "description": "Original tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query."
3650
+ }
3651
+ },
3652
+ "required": [
3653
+ "result"
3654
+ ],
3655
+ "additionalProperties": false,
3656
+ "$schema": "http://json-schema.org/draft-07/schema#"
3657
+ },
3658
+ "annotations": {
3659
+ "readOnlyHint": false,
3660
+ "destructiveHint": true,
3661
+ "idempotentHint": false,
3662
+ "openWorldHint": true
3663
+ },
3664
+ "execution": {
3665
+ "taskSupport": "forbidden"
3666
+ }
3667
+ },
3668
+ {
3669
+ "name": "google_ads_apply_plan",
3670
+ "title": "google ads apply plan",
3671
+ "description": "Preview, validate and atomically apply a Google Ads v25 build/change plan: campaigns, budgets, ad groups, RSA/Display/Demand Gen ads, image/text/YouTube assets, PMax asset groups and links, keywords, geographic/language targeting listing groups and conversion action configuration (no conversion event uploads). Native REST camelCase fields; amounts are integer micros of the explicitly stated currency. Supports temporary negative resource IDs for ordered creation in one transaction. No VIDEO campaign creation (Google API restriction), billing, account access changes, customer lists or conversion uploads. New campaigns/groups/ads are always PAUSED. Call first without confirm to inspect the plan and get planHash; validateOnly asks Google without applying; execution requires confirm and the matching expectedPlanHash. Read back results with google_ads_run_gaql. Never retry a creation after an uncertain network result before checking its name/IDs.",
3672
+ "inputSchema": {
3673
+ "type": "object",
3674
+ "properties": {
3675
+ "customerId": {
3676
+ "type": "string",
3677
+ "pattern": "^[\\d-]+$",
3678
+ "description": "Selected Google Ads customer ID, not the manager account."
3679
+ },
3680
+ "currency": {
3681
+ "type": "string",
3682
+ "pattern": "^[A-Z]{3}$",
3683
+ "description": "Actual account currency, mandatory even when only linking assets."
3684
+ },
3685
+ "operations": {
3686
+ "type": "array",
3687
+ "items": {
3688
+ "type": "object",
3689
+ "properties": {
3690
+ "kind": {
3691
+ "type": "string",
3692
+ "enum": [
3693
+ "conversionActionOperation",
3694
+ "campaignBudgetOperation",
3695
+ "campaignOperation",
3696
+ "adGroupOperation",
3697
+ "adGroupAdOperation",
3698
+ "adOperation",
3699
+ "assetOperation",
3700
+ "assetGroupOperation",
3701
+ "assetGroupAssetOperation",
3702
+ "campaignAssetOperation",
3703
+ "campaignCriterionOperation",
3704
+ "adGroupCriterionOperation",
3705
+ "assetGroupListingGroupFilterOperation"
3706
+ ]
3707
+ },
3708
+ "create": {
3709
+ "type": "object",
3710
+ "additionalProperties": {}
3711
+ },
3712
+ "update": {
3713
+ "$ref": "#/properties/operations/items/properties/create"
3714
+ },
3715
+ "remove": {
3716
+ "type": "string"
3717
+ },
3718
+ "updateMask": {
3719
+ "type": "string",
3720
+ "minLength": 1
3721
+ }
3722
+ },
3723
+ "required": [
3724
+ "kind"
3725
+ ],
3726
+ "additionalProperties": false
3727
+ },
3728
+ "minItems": 1,
3729
+ "maxItems": 100,
3730
+ "description": "Ordered operations. kind is a native MutateOperation field; create/update contains native REST fields; remove is the full owned resource name. Images use imageAsset.data base64 bytes; videos use youtubeVideoAsset.youtubeVideoId (already uploaded on YouTube)."
3731
+ },
3732
+ "loginCustomerId": {
3733
+ "type": "string",
3734
+ "pattern": "^[\\d-]+$",
3735
+ "description": "Optional MCC ID; defaults to the selected account's inferred manager."
3736
+ },
3737
+ "testAccountOnly": {
3738
+ "type": "boolean",
3739
+ "description": "Require Google's customer.test_account=true before any mutation. Use true for acceptance tests."
3740
+ },
3741
+ "validateOnly": {
3742
+ "type": "boolean",
3743
+ "description": "Ask Google to validate without applying. Takes priority over confirm."
3744
+ },
3745
+ "confirm": {
3746
+ "type": "boolean",
3747
+ "description": "Apply only when true and expectedPlanHash matches the exact preview."
3748
+ },
3749
+ "expectedPlanHash": {
3750
+ "type": "string",
3751
+ "pattern": "^[a-f0-9]{64}$",
3752
+ "description": "SHA-256 planHash from the preview of this exact payload, required for application."
3753
+ }
3754
+ },
3755
+ "required": [
3756
+ "customerId",
3757
+ "currency",
3758
+ "operations"
3759
+ ],
3760
+ "additionalProperties": false,
3761
+ "$schema": "http://json-schema.org/draft-07/schema#"
3762
+ },
3763
+ "outputSchema": {
3764
+ "type": "object",
3765
+ "properties": {
3766
+ "result": {
3767
+ "anyOf": [
3768
+ {
3769
+ "type": "object",
3770
+ "properties": {},
3771
+ "additionalProperties": true
3772
+ },
3773
+ {
3774
+ "type": "array",
3775
+ "items": {}
3776
+ },
3777
+ {
3778
+ "type": "string"
3779
+ },
3780
+ {
3781
+ "type": "number"
3782
+ },
3783
+ {
3784
+ "type": "boolean"
3785
+ },
3786
+ {
3787
+ "type": "null"
3788
+ }
3789
+ ],
3790
+ "description": "Original tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query."
3791
+ }
3792
+ },
3793
+ "required": [
3794
+ "result"
3795
+ ],
3796
+ "additionalProperties": false,
3797
+ "$schema": "http://json-schema.org/draft-07/schema#"
3798
+ },
3799
+ "annotations": {
3800
+ "readOnlyHint": false,
3801
+ "destructiveHint": true,
3802
+ "idempotentHint": false,
3803
+ "openWorldHint": true
3804
+ },
3805
+ "execution": {
3806
+ "taskSupport": "forbidden"
3807
+ }
3808
+ },
3809
+ {
3810
+ "name": "google_ads_update_campaign_status",
3811
+ "title": "google ads update campaign status",
3812
+ "description": "Pause, re-enable or remove a Google Ads campaign. Previews by default: without confirm: true, the tool describes the change without applying it.",
3813
+ "inputSchema": {
3814
+ "type": "object",
3815
+ "properties": {
3816
+ "customerId": {
3817
+ "type": "string",
3818
+ "description": "Google Ads customer ID, with or without dashes."
3819
+ },
3820
+ "campaignId": {
3821
+ "type": "string",
3822
+ "description": "Campaign ID."
3823
+ },
3824
+ "status": {
3825
+ "type": "string",
3826
+ "enum": [
3827
+ "PAUSED",
3828
+ "ENABLED",
3829
+ "REMOVED"
3830
+ ],
3831
+ "description": "New status."
3832
+ },
3833
+ "loginCustomerId": {
3834
+ "type": "string",
3835
+ "description": "Manager account, if the customer sits under an MCC."
3836
+ },
3837
+ "confirm": {
3838
+ "type": "boolean",
3839
+ "description": "Set to true to actually apply the change. Without it, the tool only previews."
3840
+ }
3841
+ },
3842
+ "required": [
3843
+ "customerId",
3844
+ "campaignId",
3845
+ "status"
3846
+ ],
3847
+ "additionalProperties": false,
3848
+ "$schema": "http://json-schema.org/draft-07/schema#"
3849
+ },
3850
+ "outputSchema": {
3851
+ "type": "object",
3852
+ "properties": {
3853
+ "result": {
3854
+ "anyOf": [
3855
+ {
3856
+ "type": "object",
3857
+ "properties": {},
3858
+ "additionalProperties": true
3859
+ },
3860
+ {
3861
+ "type": "array",
3862
+ "items": {}
3863
+ },
3864
+ {
3865
+ "type": "string"
3866
+ },
3867
+ {
3868
+ "type": "number"
3869
+ },
3870
+ {
3871
+ "type": "boolean"
3872
+ },
3873
+ {
3874
+ "type": "null"
3875
+ }
3876
+ ],
3877
+ "description": "Original tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query."
3878
+ }
3879
+ },
3880
+ "required": [
3881
+ "result"
3882
+ ],
3883
+ "additionalProperties": false,
3884
+ "$schema": "http://json-schema.org/draft-07/schema#"
3885
+ },
3886
+ "annotations": {
3887
+ "readOnlyHint": false,
3888
+ "destructiveHint": true,
3889
+ "idempotentHint": false,
3890
+ "openWorldHint": true
3891
+ },
3892
+ "execution": {
3893
+ "taskSupport": "forbidden"
3894
+ }
3895
+ },
3896
+ {
3897
+ "name": "google_ads_create_campaign",
3898
+ "title": "google ads create campaign",
3899
+ "description": "Create a Google Ads campaign. It is always created PAUSED and there is no option to create it active: someone has to look at it before it spends. Creates the campaign budget too. Previews by default.",
3900
+ "inputSchema": {
3901
+ "type": "object",
3902
+ "properties": {
3903
+ "customerId": {
3904
+ "type": "string",
3905
+ "description": "Google Ads customer ID, with or without dashes."
3906
+ },
3907
+ "name": {
3908
+ "type": "string",
3909
+ "description": "Campaign name."
3910
+ },
3911
+ "channelType": {
3912
+ "type": "string",
3913
+ "enum": [
3914
+ "SEARCH",
3915
+ "DISPLAY",
3916
+ "SHOPPING",
3917
+ "PERFORMANCE_MAX",
3918
+ "DEMAND_GEN"
3919
+ ],
3920
+ "description": "Advertising channel. Classic VIDEO creation is not supported by Google Ads API; Demand Gen is a distinct, supported video-capable campaign type."
3921
+ },
3922
+ "dailyBudget": {
3923
+ "type": "number",
3924
+ "exclusiveMinimum": 0,
3925
+ "description": "Daily budget in the account currency."
3926
+ },
3927
+ "loginCustomerId": {
3928
+ "type": "string",
3929
+ "description": "Manager account ID, when the customer sits under an MCC. Omit otherwise."
3930
+ },
3931
+ "brandGuidelinesEnabled": {
3932
+ "type": "boolean",
3933
+ "const": false,
3934
+ "description": "For Performance Max, explicitly pass false to create an empty paused campaign without campaign-level brand assets. Brand-enabled creation is not supported by this tool."
3935
+ },
3936
+ "euPoliticalAdvertising": {
3937
+ "type": "boolean",
3938
+ "description": "Required for execution: explicitly declare whether this campaign contains EU political advertising."
3939
+ },
3940
+ "merchantId": {
3941
+ "type": "string",
3942
+ "pattern": "^\\d+$",
3943
+ "description": "Merchant Center account ID; required for Shopping."
3944
+ },
3945
+ "feedLabel": {
3946
+ "type": "string",
3947
+ "description": "Merchant Center feed label for Shopping."
3948
+ },
3949
+ "validateOnly": {
3950
+ "type": "boolean",
3951
+ "description": "Validate the atomic request with Google without creating any resources."
3952
+ },
3953
+ "confirm": {
3954
+ "type": "boolean",
3955
+ "description": "Set to true to actually apply the change. Without it, the tool only previews."
3956
+ }
3957
+ },
3958
+ "required": [
3959
+ "customerId",
3960
+ "name",
3961
+ "channelType",
3962
+ "dailyBudget"
3963
+ ],
3964
+ "additionalProperties": false,
3965
+ "$schema": "http://json-schema.org/draft-07/schema#"
3966
+ },
3967
+ "outputSchema": {
3968
+ "type": "object",
3969
+ "properties": {
3970
+ "result": {
3971
+ "anyOf": [
3972
+ {
3973
+ "type": "object",
3974
+ "properties": {},
3975
+ "additionalProperties": true
3976
+ },
3977
+ {
3978
+ "type": "array",
3979
+ "items": {}
3980
+ },
3981
+ {
3982
+ "type": "string"
3983
+ },
3984
+ {
3985
+ "type": "number"
3986
+ },
3987
+ {
3988
+ "type": "boolean"
3989
+ },
3990
+ {
3991
+ "type": "null"
3992
+ }
3993
+ ],
3994
+ "description": "Original tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query."
3995
+ }
3996
+ },
3997
+ "required": [
3998
+ "result"
3999
+ ],
4000
+ "additionalProperties": false,
4001
+ "$schema": "http://json-schema.org/draft-07/schema#"
4002
+ },
4003
+ "annotations": {
4004
+ "readOnlyHint": false,
4005
+ "destructiveHint": true,
4006
+ "idempotentHint": false,
4007
+ "openWorldHint": true
4008
+ },
4009
+ "execution": {
4010
+ "taskSupport": "forbidden"
4011
+ }
4012
+ },
4013
+ {
4014
+ "name": "google_ads_update_campaign_budget",
4015
+ "title": "google ads update campaign budget",
4016
+ "description": "Change the daily budget of a Google Ads campaign. The amount is in the account currency (12.50 for 12.50 EUR). Previews by default.",
4017
+ "inputSchema": {
4018
+ "type": "object",
4019
+ "properties": {
4020
+ "customerId": {
4021
+ "type": "string",
4022
+ "description": "Google Ads customer ID, with or without dashes."
4023
+ },
4024
+ "budgetId": {
4025
+ "type": "string",
4026
+ "description": "Campaign budget ID (campaign_budget.id)."
4027
+ },
4028
+ "dailyAmount": {
4029
+ "type": "number",
4030
+ "exclusiveMinimum": 0,
4031
+ "description": "New daily budget, in the account currency."
4032
+ },
4033
+ "loginCustomerId": {
4034
+ "type": "string",
4035
+ "description": "Manager account ID, when the customer sits under an MCC. Omit otherwise."
4036
+ },
4037
+ "confirm": {
4038
+ "type": "boolean",
4039
+ "description": "Set to true to actually apply the change. Without it, the tool only previews."
4040
+ }
4041
+ },
4042
+ "required": [
4043
+ "customerId",
4044
+ "budgetId",
4045
+ "dailyAmount"
4046
+ ],
4047
+ "additionalProperties": false,
4048
+ "$schema": "http://json-schema.org/draft-07/schema#"
4049
+ },
4050
+ "outputSchema": {
4051
+ "type": "object",
4052
+ "properties": {
4053
+ "result": {
4054
+ "anyOf": [
4055
+ {
4056
+ "type": "object",
4057
+ "properties": {},
4058
+ "additionalProperties": true
4059
+ },
4060
+ {
4061
+ "type": "array",
4062
+ "items": {}
4063
+ },
4064
+ {
4065
+ "type": "string"
4066
+ },
4067
+ {
4068
+ "type": "number"
4069
+ },
4070
+ {
4071
+ "type": "boolean"
4072
+ },
4073
+ {
4074
+ "type": "null"
4075
+ }
4076
+ ],
4077
+ "description": "Original tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query."
4078
+ }
4079
+ },
4080
+ "required": [
4081
+ "result"
4082
+ ],
4083
+ "additionalProperties": false,
4084
+ "$schema": "http://json-schema.org/draft-07/schema#"
4085
+ },
4086
+ "annotations": {
4087
+ "readOnlyHint": false,
4088
+ "destructiveHint": true,
4089
+ "idempotentHint": false,
4090
+ "openWorldHint": true
4091
+ },
4092
+ "execution": {
4093
+ "taskSupport": "forbidden"
4094
+ }
4095
+ },
4096
+ {
4097
+ "name": "google_ads_rename_campaign",
4098
+ "title": "google ads rename campaign",
4099
+ "description": "Rename a Google Ads campaign. The name is the only thing that changes: delivery, budget and targeting are untouched. Previews by default.",
4100
+ "inputSchema": {
4101
+ "type": "object",
4102
+ "properties": {
4103
+ "customerId": {
4104
+ "type": "string",
4105
+ "description": "Google Ads customer ID, with or without dashes."
4106
+ },
4107
+ "campaignId": {
4108
+ "type": "string",
4109
+ "description": "Campaign ID."
4110
+ },
4111
+ "name": {
4112
+ "type": "string",
4113
+ "minLength": 1,
4114
+ "maxLength": 255,
4115
+ "description": "New campaign name."
4116
+ },
4117
+ "loginCustomerId": {
4118
+ "type": "string",
4119
+ "description": "Manager account ID, when the customer sits under an MCC. Omit otherwise."
4120
+ },
4121
+ "confirm": {
4122
+ "type": "boolean",
4123
+ "description": "Set to true to actually apply the change. Without it, the tool only previews."
4124
+ }
4125
+ },
4126
+ "required": [
4127
+ "customerId",
4128
+ "campaignId",
4129
+ "name"
4130
+ ],
4131
+ "additionalProperties": false,
4132
+ "$schema": "http://json-schema.org/draft-07/schema#"
4133
+ },
4134
+ "outputSchema": {
4135
+ "type": "object",
4136
+ "properties": {
4137
+ "result": {
4138
+ "anyOf": [
4139
+ {
4140
+ "type": "object",
4141
+ "properties": {},
4142
+ "additionalProperties": true
4143
+ },
4144
+ {
4145
+ "type": "array",
4146
+ "items": {}
4147
+ },
4148
+ {
4149
+ "type": "string"
4150
+ },
4151
+ {
4152
+ "type": "number"
4153
+ },
4154
+ {
4155
+ "type": "boolean"
4156
+ },
4157
+ {
4158
+ "type": "null"
4159
+ }
4160
+ ],
4161
+ "description": "Original tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query."
4162
+ }
4163
+ },
4164
+ "required": [
4165
+ "result"
4166
+ ],
4167
+ "additionalProperties": false,
4168
+ "$schema": "http://json-schema.org/draft-07/schema#"
4169
+ },
4170
+ "annotations": {
4171
+ "readOnlyHint": false,
4172
+ "destructiveHint": true,
4173
+ "idempotentHint": false,
4174
+ "openWorldHint": true
4175
+ },
4176
+ "execution": {
4177
+ "taskSupport": "forbidden"
4178
+ }
4179
+ },
4180
+ {
4181
+ "name": "google_ads_update_campaign_schedule",
4182
+ "title": "google ads update campaign schedule",
4183
+ "description": "Change the start or end date of a Google Ads campaign. Dates are YYYY-MM-DD in the account time zone. Previews by default.",
4184
+ "inputSchema": {
4185
+ "type": "object",
4186
+ "properties": {
4187
+ "customerId": {
4188
+ "type": "string",
4189
+ "description": "Google Ads customer ID, with or without dashes."
4190
+ },
4191
+ "campaignId": {
4192
+ "type": "string",
4193
+ "description": "Campaign ID."
4194
+ },
4195
+ "startDate": {
4196
+ "type": "string",
4197
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
4198
+ "description": "Start date, YYYY-MM-DD, in the account time zone."
4199
+ },
4200
+ "endDate": {
4201
+ "type": "string",
4202
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
4203
+ "description": "Use 2037-12-30 to clear the end date (run indefinitely)."
4204
+ },
4205
+ "loginCustomerId": {
4206
+ "type": "string",
4207
+ "description": "Manager account ID, when the customer sits under an MCC. Omit otherwise."
4208
+ },
4209
+ "confirm": {
4210
+ "type": "boolean",
4211
+ "description": "Set to true to actually apply the change. Without it, the tool only previews."
4212
+ }
4213
+ },
4214
+ "required": [
4215
+ "customerId",
4216
+ "campaignId"
4217
+ ],
4218
+ "additionalProperties": false,
4219
+ "$schema": "http://json-schema.org/draft-07/schema#"
4220
+ },
4221
+ "outputSchema": {
4222
+ "type": "object",
4223
+ "properties": {
4224
+ "result": {
4225
+ "anyOf": [
4226
+ {
4227
+ "type": "object",
4228
+ "properties": {},
4229
+ "additionalProperties": true
4230
+ },
4231
+ {
4232
+ "type": "array",
4233
+ "items": {}
4234
+ },
4235
+ {
4236
+ "type": "string"
4237
+ },
4238
+ {
4239
+ "type": "number"
4240
+ },
4241
+ {
4242
+ "type": "boolean"
4243
+ },
4244
+ {
4245
+ "type": "null"
4246
+ }
4247
+ ],
4248
+ "description": "Original tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query."
4249
+ }
4250
+ },
4251
+ "required": [
4252
+ "result"
4253
+ ],
4254
+ "additionalProperties": false,
4255
+ "$schema": "http://json-schema.org/draft-07/schema#"
4256
+ },
4257
+ "annotations": {
4258
+ "readOnlyHint": false,
4259
+ "destructiveHint": true,
4260
+ "idempotentHint": false,
4261
+ "openWorldHint": true
4262
+ },
4263
+ "execution": {
4264
+ "taskSupport": "forbidden"
4265
+ }
4266
+ },
4267
+ {
4268
+ "name": "google_ads_update_adgroup_status",
4269
+ "title": "google ads update adgroup status",
4270
+ "description": "Pause, re-enable or remove a Google Ads ad group. Previews by default.",
4271
+ "inputSchema": {
4272
+ "type": "object",
4273
+ "properties": {
4274
+ "customerId": {
4275
+ "type": "string",
4276
+ "description": "Google Ads customer ID, with or without dashes."
4277
+ },
4278
+ "adGroupId": {
4279
+ "type": "string",
4280
+ "description": "Ad group ID."
4281
+ },
4282
+ "status": {
4283
+ "type": "string",
4284
+ "enum": [
4285
+ "PAUSED",
4286
+ "ENABLED",
4287
+ "REMOVED"
4288
+ ],
4289
+ "description": "New status."
4290
+ },
4291
+ "loginCustomerId": {
4292
+ "type": "string",
4293
+ "description": "Manager account ID, when the customer sits under an MCC. Omit otherwise."
4294
+ },
4295
+ "confirm": {
4296
+ "type": "boolean",
4297
+ "description": "Set to true to actually apply the change. Without it, the tool only previews."
4298
+ }
4299
+ },
4300
+ "required": [
4301
+ "customerId",
4302
+ "adGroupId",
4303
+ "status"
4304
+ ],
4305
+ "additionalProperties": false,
4306
+ "$schema": "http://json-schema.org/draft-07/schema#"
4307
+ },
4308
+ "outputSchema": {
4309
+ "type": "object",
4310
+ "properties": {
4311
+ "result": {
4312
+ "anyOf": [
4313
+ {
4314
+ "type": "object",
4315
+ "properties": {},
4316
+ "additionalProperties": true
4317
+ },
4318
+ {
4319
+ "type": "array",
4320
+ "items": {}
4321
+ },
4322
+ {
4323
+ "type": "string"
4324
+ },
4325
+ {
4326
+ "type": "number"
4327
+ },
4328
+ {
4329
+ "type": "boolean"
4330
+ },
4331
+ {
4332
+ "type": "null"
4333
+ }
4334
+ ],
4335
+ "description": "Original tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query."
4336
+ }
4337
+ },
4338
+ "required": [
4339
+ "result"
4340
+ ],
4341
+ "additionalProperties": false,
4342
+ "$schema": "http://json-schema.org/draft-07/schema#"
4343
+ },
4344
+ "annotations": {
4345
+ "readOnlyHint": false,
4346
+ "destructiveHint": true,
4347
+ "idempotentHint": false,
4348
+ "openWorldHint": true
4349
+ },
4350
+ "execution": {
4351
+ "taskSupport": "forbidden"
4352
+ }
4353
+ },
4354
+ {
4355
+ "name": "google_ads_update_adgroup_bid",
4356
+ "title": "google ads update adgroup bid",
4357
+ "description": "Change the default CPC bid of a Google Ads ad group. The amount is in the account currency (1.20 for 1.20 EUR). Has no effect on a campaign using an automated bidding strategy. Previews by default.",
4358
+ "inputSchema": {
4359
+ "type": "object",
4360
+ "properties": {
4361
+ "customerId": {
4362
+ "type": "string",
4363
+ "description": "Google Ads customer ID, with or without dashes."
4364
+ },
4365
+ "adGroupId": {
4366
+ "type": "string",
4367
+ "description": "Ad group ID."
4368
+ },
4369
+ "cpcBid": {
4370
+ "type": "number",
4371
+ "exclusiveMinimum": 0,
4372
+ "description": "New default CPC bid, in the account currency."
4373
+ },
4374
+ "loginCustomerId": {
4375
+ "type": "string",
4376
+ "description": "Manager account ID, when the customer sits under an MCC. Omit otherwise."
4377
+ },
4378
+ "confirm": {
4379
+ "type": "boolean",
4380
+ "description": "Set to true to actually apply the change. Without it, the tool only previews."
4381
+ }
4382
+ },
4383
+ "required": [
4384
+ "customerId",
4385
+ "adGroupId",
4386
+ "cpcBid"
4387
+ ],
4388
+ "additionalProperties": false,
4389
+ "$schema": "http://json-schema.org/draft-07/schema#"
4390
+ },
4391
+ "outputSchema": {
4392
+ "type": "object",
4393
+ "properties": {
4394
+ "result": {
4395
+ "anyOf": [
4396
+ {
4397
+ "type": "object",
4398
+ "properties": {},
4399
+ "additionalProperties": true
4400
+ },
4401
+ {
4402
+ "type": "array",
4403
+ "items": {}
4404
+ },
4405
+ {
4406
+ "type": "string"
4407
+ },
4408
+ {
4409
+ "type": "number"
4410
+ },
4411
+ {
4412
+ "type": "boolean"
4413
+ },
4414
+ {
4415
+ "type": "null"
4416
+ }
4417
+ ],
4418
+ "description": "Original tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query."
4419
+ }
4420
+ },
4421
+ "required": [
4422
+ "result"
4423
+ ],
4424
+ "additionalProperties": false,
4425
+ "$schema": "http://json-schema.org/draft-07/schema#"
4426
+ },
4427
+ "annotations": {
4428
+ "readOnlyHint": false,
4429
+ "destructiveHint": true,
4430
+ "idempotentHint": false,
4431
+ "openWorldHint": true
4432
+ },
4433
+ "execution": {
4434
+ "taskSupport": "forbidden"
4435
+ }
4436
+ }
4437
+ ],
4438
+ "resources": [
4439
+ {
4440
+ "name": "google-ads-manifest",
4441
+ "uri": "google-ads://manifest"
4442
+ },
4443
+ {
4444
+ "name": "google-ads-recipes",
4445
+ "uri": "google-ads://recipes"
4446
+ },
4447
+ {
4448
+ "name": "google-ads-metrics",
4449
+ "uri": "google-ads://metrics"
4450
+ },
4451
+ {
4452
+ "name": "google-ads-dimensions",
4453
+ "uri": "google-ads://dimensions"
4454
+ },
4455
+ {
4456
+ "name": "google-ads-compatibility",
4457
+ "uri": "google-ads://compatibility"
4458
+ }
4459
+ ],
4460
+ "prompts": []
4461
+ }