publinker-cli 0.6.2__py3-none-any.whl

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,1648 @@
1
+ # publinker-cli route manifest — CUSTOMER build.
2
+ #
3
+ # Generated by scripts/build-customer-wheel.sh from the full manifest.
4
+ # 92 customer routes; 38 internal routes removed.
5
+ # Do not edit: rebuild from the repo manifest instead.
6
+
7
+ - id: get_permissions
8
+ path: /permissions
9
+ method: GET
10
+ risk: read
11
+ audience: customer
12
+ cli:
13
+ group: []
14
+ command: permissions
15
+ mcp:
16
+ expose: true
17
+ tool_name: get_permissions
18
+ description: Return the current caller's permission set (sites, modules, admin flags).
19
+ - id: fetch_permissions
20
+ path: /fetch-permissions
21
+ method: GET
22
+ risk: read
23
+ audience: customer
24
+ cli:
25
+ group: []
26
+ command: fetch-permissions
27
+ mcp:
28
+ expose: false
29
+ tool_name: null
30
+ description: ''
31
+ - id: list_sites
32
+ path: /site
33
+ method: GET
34
+ risk: read
35
+ audience: customer
36
+ cli:
37
+ group:
38
+ - site
39
+ command: list
40
+ mcp:
41
+ expose: true
42
+ tool_name: list_sites
43
+ description: List every site the caller has permission to view.
44
+ - id: list_companies
45
+ path: /company
46
+ method: GET
47
+ risk: read
48
+ audience: customer
49
+ cli:
50
+ group:
51
+ - company
52
+ command: list
53
+ mcp:
54
+ expose: true
55
+ tool_name: list_companies
56
+ description: List every company the caller has permission to view.
57
+ - id: get_company
58
+ path: /company/{company_id}
59
+ method: GET
60
+ risk: read
61
+ audience: customer
62
+ cli:
63
+ group:
64
+ - company
65
+ command: get
66
+ mcp:
67
+ expose: true
68
+ tool_name: get_company
69
+ description: Fetch a single company by id.
70
+ args:
71
+ - name: company_id
72
+ help: The company id to fetch.
73
+ - id: get_site_company
74
+ path: /site/{site}/company
75
+ method: GET
76
+ risk: read
77
+ audience: customer
78
+ cli:
79
+ group:
80
+ - site
81
+ - company
82
+ command: get
83
+ mcp:
84
+ expose: true
85
+ tool_name: get_site_company
86
+ description: Return the company that owns the given site.
87
+ - id: get_site_dashboard
88
+ path: /site/{site}/dashboard
89
+ method: GET
90
+ risk: read
91
+ audience: customer
92
+ cli:
93
+ group:
94
+ - site
95
+ - dashboard
96
+ command: get
97
+ mcp:
98
+ expose: true
99
+ tool_name: get_site_dashboard
100
+ description: Return the dashboard summary for a site (KPIs, recent activity).
101
+ - id: list_url_types
102
+ path: /site/{site}/url-type
103
+ method: GET
104
+ risk: read
105
+ audience: customer
106
+ cli:
107
+ group:
108
+ - site
109
+ - url-type
110
+ command: list
111
+ mcp:
112
+ expose: true
113
+ tool_name: list_url_types
114
+ description: List configured URL types (page categories) for a site.
115
+ - id: list_dimension_groups
116
+ path: /site/{site}/dimension-group
117
+ method: GET
118
+ risk: read
119
+ audience: customer
120
+ cli:
121
+ group:
122
+ - site
123
+ - dimension-group
124
+ command: list
125
+ mcp:
126
+ expose: true
127
+ tool_name: list_dimension_groups
128
+ description: List dimension groups (custom aggregations) configured for a site.
129
+ - id: get_pricing
130
+ path: /site/{site}/pricing
131
+ method: GET
132
+ risk: read
133
+ audience: customer
134
+ cli:
135
+ group:
136
+ - site
137
+ - pricing
138
+ command: get
139
+ mcp:
140
+ expose: true
141
+ tool_name: get_pricing
142
+ description: Get the deployed UPR floors pricing for a site.
143
+ - id: get_pricing_old
144
+ path: /site/{site}/pricing-old
145
+ method: GET
146
+ risk: read
147
+ audience: customer
148
+ cli:
149
+ group:
150
+ - site
151
+ - pricing
152
+ command: get-old
153
+ mcp:
154
+ expose: false
155
+ tool_name: null
156
+ description: ''
157
+ - id: get_pricing_import
158
+ path: /site/{site}/pricing-import
159
+ method: GET
160
+ risk: read
161
+ audience: customer
162
+ cli:
163
+ group:
164
+ - site
165
+ - pricing
166
+ command: import
167
+ mcp:
168
+ expose: false
169
+ tool_name: null
170
+ description: ''
171
+ - id: get_pricing_staging
172
+ path: /site/{site}/pricing-staging
173
+ method: GET
174
+ risk: read
175
+ audience: customer
176
+ cli:
177
+ group:
178
+ - site
179
+ - pricing
180
+ command: get-staging
181
+ mcp:
182
+ expose: true
183
+ tool_name: get_pricing_staging
184
+ description: Get the staged (not yet deployed) UPR floors pricing for a site.
185
+ - id: list_pricing_history
186
+ path: /site/{site}/pricing-history
187
+ method: GET
188
+ risk: read
189
+ audience: customer
190
+ cli:
191
+ group:
192
+ - site
193
+ - pricing-history
194
+ command: list
195
+ mcp:
196
+ expose: true
197
+ tool_name: list_pricing_history
198
+ description: List pricing change history entries for a site.
199
+ - id: get_pricing_history_item
200
+ path: /site/{site}/pricing-history/{item_id}
201
+ method: GET
202
+ risk: read
203
+ audience: customer
204
+ cli:
205
+ group:
206
+ - site
207
+ - pricing-history
208
+ command: get
209
+ mcp:
210
+ expose: true
211
+ tool_name: get_pricing_history_item
212
+ description: Fetch one pricing history entry by id.
213
+ args:
214
+ - name: item_id
215
+ help: The pricing history entry id.
216
+ - id: get_config
217
+ path: /site/{site}/config
218
+ method: GET
219
+ risk: read
220
+ audience: customer
221
+ cli:
222
+ group:
223
+ - site
224
+ - config
225
+ command: get
226
+ mcp:
227
+ expose: true
228
+ tool_name: get_config
229
+ description: Get the active wrapper config (JS settings) for a site.
230
+ - id: list_config_history
231
+ path: /site/{site}/config-history
232
+ method: GET
233
+ risk: read
234
+ audience: customer
235
+ cli:
236
+ group:
237
+ - site
238
+ - config-history
239
+ command: list
240
+ mcp:
241
+ expose: true
242
+ tool_name: list_config_history
243
+ description: List config change history entries for a site.
244
+ - id: get_config_history_item
245
+ path: /site/{site}/config-history/{item_id}
246
+ method: GET
247
+ risk: read
248
+ audience: customer
249
+ cli:
250
+ group:
251
+ - site
252
+ - config-history
253
+ command: get
254
+ mcp:
255
+ expose: true
256
+ tool_name: get_config_history_item
257
+ description: Fetch one config history entry by id.
258
+ args:
259
+ - name: item_id
260
+ help: The config history entry id.
261
+ - id: list_wrapper_deploys
262
+ path: /site/{site}/wrapper-deploys
263
+ method: GET
264
+ risk: read
265
+ audience: customer
266
+ cli:
267
+ group:
268
+ - site
269
+ - wrapper-deploys
270
+ command: list
271
+ mcp:
272
+ expose: true
273
+ tool_name: list_wrapper_deploys
274
+ description: List recent wrapper (JS) deployments for a site.
275
+ - id: get_report
276
+ path: /site/{site}/report
277
+ method: GET
278
+ risk: read
279
+ audience: customer
280
+ cli:
281
+ group:
282
+ - site
283
+ - report
284
+ command: get
285
+ mcp:
286
+ expose: true
287
+ tool_name: get_report
288
+ description: Get the main aggregated report for a site (filters via query params).
289
+ query_args:
290
+ - name: platform
291
+ help: "Required. Source platform \u2014 must match how the ETL bucketed the rows.\nKnown values: google_admanager\
292
+ \ | google_ads | active_campaign | google_postmaster | escalated.\nSee `publinker site report list-options`\
293
+ \ for examples.\n"
294
+ - name: account_id
295
+ help: Required. GAM network code, Ads customer id, or the platform-specific account identifier.
296
+ - name: dimensions_keys
297
+ help: "Required. Comma-separated dimensions; determines aggregation level.\nCommon values:\n date\
298
+ \ \u2014 daily aggregate\n date,channel \
299
+ \ \u2014 daily by channel\n date,channel,adunit \
300
+ \ \u2014 + ad unit\n date,channel,country_code,country_name,url,adunit\
301
+ \ \u2014 full per-URL detail\n date,domain,device,country \u2014\
302
+ \ escalated reports\nThe set is platform-dependent; ask the ETL team if unsure.\n"
303
+ - name: date_start
304
+ help: Required. Start date YYYY-MM-DD.
305
+ - name: date_stop
306
+ help: Required. End date YYYY-MM-DD.
307
+ - id: get_report_with_exchange
308
+ path: /site/{site}/report-with-exchange
309
+ method: GET
310
+ risk: read
311
+ audience: customer
312
+ cli:
313
+ group:
314
+ - site
315
+ - report
316
+ command: get-with-exchange
317
+ mcp:
318
+ expose: true
319
+ tool_name: get_report_with_exchange
320
+ description: Get the report normalized to a single currency via FX conversion.
321
+ query_args:
322
+ - name: platform
323
+ help: "Required. Source platform \u2014 must match how the ETL bucketed the rows.\nKnown values: google_admanager\
324
+ \ | google_ads | active_campaign | google_postmaster | escalated.\nSee `publinker site report list-options`\
325
+ \ for examples.\n"
326
+ - name: account_id
327
+ help: Required. GAM network code, Ads customer id, or the platform-specific account identifier.
328
+ - name: dimensions_keys
329
+ help: "Required. Comma-separated dimensions; determines aggregation level.\nCommon values:\n date\
330
+ \ \u2014 daily aggregate\n date,channel \
331
+ \ \u2014 daily by channel\n date,channel,adunit \
332
+ \ \u2014 + ad unit\n date,channel,country_code,country_name,url,adunit\
333
+ \ \u2014 full per-URL detail\n date,domain,device,country \u2014\
334
+ \ escalated reports\nThe set is platform-dependent; ask the ETL team if unsure.\n"
335
+ - name: date_start
336
+ help: Required. Start date YYYY-MM-DD.
337
+ - name: date_stop
338
+ help: Required. End date YYYY-MM-DD.
339
+ - id: get_ranking_email
340
+ path: /site/{site}/ranking-email
341
+ method: GET
342
+ risk: read
343
+ audience: customer
344
+ cli:
345
+ group:
346
+ - site
347
+ - report
348
+ command: ranking-email
349
+ mcp:
350
+ expose: false
351
+ tool_name: null
352
+ description: ''
353
+ - id: list_quick_filters
354
+ path: /site/{site}/quick-filters
355
+ method: GET
356
+ risk: read
357
+ audience: customer
358
+ cli:
359
+ group:
360
+ - site
361
+ - quick-filters
362
+ command: list
363
+ mcp:
364
+ expose: true
365
+ tool_name: list_quick_filters
366
+ description: List saved quick filters for a site.
367
+ - id: list_annotations
368
+ path: /site/{site}/annotations
369
+ method: GET
370
+ risk: read
371
+ audience: customer
372
+ cli:
373
+ group:
374
+ - site
375
+ - annotations
376
+ command: list
377
+ mcp:
378
+ expose: true
379
+ tool_name: list_annotations
380
+ description: List timeline annotations (notes pinned to dates) for a site.
381
+ - id: get_postmaster
382
+ path: /site/{site}/postmaster
383
+ method: GET
384
+ risk: read
385
+ audience: customer
386
+ cli:
387
+ group:
388
+ - site
389
+ - postmaster
390
+ command: get
391
+ mcp:
392
+ expose: true
393
+ tool_name: get_postmaster
394
+ description: Get postmaster deliverability metrics for a site.
395
+ - id: get_postmaster_config
396
+ path: /site/{site}/postmaster/config
397
+ method: GET
398
+ risk: read
399
+ audience: customer
400
+ cli:
401
+ group:
402
+ - site
403
+ - postmaster
404
+ - config
405
+ command: get
406
+ mcp:
407
+ expose: false
408
+ tool_name: null
409
+ description: ''
410
+ - id: get_postmaster_oauth_status
411
+ path: /site/{site}/postmaster/oauth/status
412
+ method: GET
413
+ risk: read
414
+ audience: customer
415
+ cli:
416
+ group:
417
+ - site
418
+ - postmaster
419
+ - oauth
420
+ command: status
421
+ mcp:
422
+ expose: true
423
+ tool_name: get_postmaster_oauth_status
424
+ description: Report whether postmaster OAuth is connected for a site.
425
+ - id: get_google_ads_oauth_status
426
+ path: /site/{site}/google-ads/oauth/status
427
+ method: GET
428
+ risk: read
429
+ audience: customer
430
+ cli:
431
+ group:
432
+ - site
433
+ - google-ads
434
+ - oauth
435
+ command: status
436
+ mcp:
437
+ expose: true
438
+ tool_name: get_google_ads_oauth_status
439
+ description: Report whether Google Ads OAuth is connected for a site.
440
+ - id: get_google_analytics_oauth_status
441
+ path: /site/{site}/google-analytics/oauth/status
442
+ method: GET
443
+ risk: read
444
+ audience: customer
445
+ cli:
446
+ group:
447
+ - site
448
+ - google-analytics
449
+ - oauth
450
+ command: status
451
+ mcp:
452
+ expose: true
453
+ tool_name: get_google_analytics_oauth_status
454
+ description: Report whether Google Analytics OAuth is connected for a site.
455
+ - id: list_gam_reports
456
+ path: /site/{site}/google-adm/gam-reports
457
+ method: GET
458
+ risk: read
459
+ audience: customer
460
+ cli:
461
+ group:
462
+ - site
463
+ - google-adm
464
+ - gam-reports
465
+ command: list
466
+ mcp:
467
+ expose: true
468
+ tool_name: list_gam_reports
469
+ description: List Google Ad Manager reports configured for a site.
470
+ - id: get_gam_report_detail
471
+ path: /site/{site}/google-adm/gam-report-detail
472
+ method: GET
473
+ risk: read
474
+ audience: customer
475
+ cli:
476
+ group:
477
+ - site
478
+ - google-adm
479
+ - gam-reports
480
+ command: detail
481
+ mcp:
482
+ expose: true
483
+ tool_name: get_gam_report_detail
484
+ description: Get the detail rows for a specific Google Ad Manager report.
485
+ - id: get_adspeed
486
+ path: /site/{site}/google-adm/adspeed
487
+ method: GET
488
+ risk: read
489
+ audience: customer
490
+ cli:
491
+ group:
492
+ - site
493
+ - google-adm
494
+ command: adspeed
495
+ mcp:
496
+ expose: true
497
+ tool_name: get_adspeed
498
+ description: Get ad-load speed metrics for a site (GAM).
499
+ - id: list_quizzes
500
+ path: /site/{site}/quiz
501
+ method: GET
502
+ risk: read
503
+ audience: customer
504
+ cli:
505
+ group:
506
+ - site
507
+ - quiz
508
+ command: list
509
+ mcp:
510
+ expose: true
511
+ tool_name: list_quizzes
512
+ description: List LeadHub quizzes for a site.
513
+ - id: get_quiz
514
+ path: /site/{site}/quiz/{quiz_id}
515
+ method: GET
516
+ risk: read
517
+ audience: customer
518
+ cli:
519
+ group:
520
+ - site
521
+ - quiz
522
+ command: get
523
+ mcp:
524
+ expose: true
525
+ tool_name: get_quiz
526
+ description: Fetch one LeadHub quiz by id.
527
+ args:
528
+ - name: quiz_id
529
+ help: The quiz id.
530
+ - id: list_accounts
531
+ path: /site/{site}/account
532
+ method: GET
533
+ risk: read
534
+ audience: customer
535
+ cli:
536
+ group:
537
+ - site
538
+ - account
539
+ command: list
540
+ mcp:
541
+ expose: true
542
+ tool_name: list_accounts
543
+ description: List LeadHub accounts (ActiveCampaign / other ESPs) linked to a site.
544
+ - id: list_account_lists
545
+ path: /site/{site}/account/{account_id}/lists
546
+ method: GET
547
+ risk: read
548
+ audience: customer
549
+ cli:
550
+ group:
551
+ - site
552
+ - account
553
+ - lists
554
+ command: list
555
+ mcp:
556
+ expose: true
557
+ tool_name: list_account_lists
558
+ description: List the mailing lists owned by one LeadHub account.
559
+ args:
560
+ - name: account_id
561
+ help: The LeadHub account id.
562
+ - id: get_weight
563
+ path: /site/{site}/weight
564
+ method: GET
565
+ risk: read
566
+ audience: customer
567
+ cli:
568
+ group:
569
+ - site
570
+ - weight
571
+ command: get
572
+ mcp:
573
+ expose: true
574
+ tool_name: get_weight
575
+ description: Get LeadHub send-weight settings for a site.
576
+ - id: get_email_checker
577
+ path: /site/{site}/email-checker
578
+ method: GET
579
+ risk: read
580
+ audience: customer
581
+ cli:
582
+ group:
583
+ - site
584
+ - email-checker
585
+ command: get
586
+ mcp:
587
+ expose: false
588
+ tool_name: null
589
+ description: ''
590
+ - id: get_job_last_run
591
+ path: /site/{site}/job/{job_name}/last-run
592
+ method: GET
593
+ risk: read
594
+ audience: customer
595
+ cli:
596
+ group:
597
+ - site
598
+ - job
599
+ command: last-run
600
+ mcp:
601
+ expose: true
602
+ tool_name: get_job_last_run
603
+ description: Get the last-run record for a named background job on a site.
604
+ args:
605
+ - name: job_name
606
+ help: The job name (e.g., 'report-rollup').
607
+ - id: get_facebook_ads_account
608
+ path: /site/{site}/facebook-ads/account
609
+ method: GET
610
+ risk: read
611
+ audience: customer
612
+ cli:
613
+ group:
614
+ - site
615
+ - facebook-ads
616
+ command: account
617
+ mcp:
618
+ expose: true
619
+ tool_name: get_facebook_ads_account
620
+ description: Get Facebook Ads account metadata for a site.
621
+ - id: list_active_campaign_campaigns
622
+ path: /site/{site}/active-campaign/campaigns
623
+ method: GET
624
+ risk: read
625
+ audience: customer
626
+ cli:
627
+ group:
628
+ - site
629
+ - active-campaign
630
+ - campaigns
631
+ command: list
632
+ mcp:
633
+ expose: true
634
+ tool_name: list_active_campaign_campaigns
635
+ description: List ActiveCampaign campaigns for a site.
636
+ - id: list_active_campaign_accounts
637
+ path: /site/{site}/active-campaign/accounts
638
+ method: GET
639
+ risk: read
640
+ audience: customer
641
+ cli:
642
+ group:
643
+ - site
644
+ - active-campaign
645
+ - accounts
646
+ command: list
647
+ mcp:
648
+ expose: true
649
+ tool_name: list_active_campaign_accounts
650
+ description: List ActiveCampaign accounts linked to a site.
651
+ - id: get_currency
652
+ path: /currency
653
+ method: GET
654
+ risk: read
655
+ audience: customer
656
+ cli:
657
+ group: []
658
+ command: currency
659
+ mcp:
660
+ expose: true
661
+ tool_name: get_currency
662
+ description: Get the global currency table (FX rates).
663
+ - id: create_url_type
664
+ path: /site/{site}/url-type
665
+ method: POST
666
+ risk: write
667
+ audience: customer
668
+ cli:
669
+ group:
670
+ - site
671
+ - url-type
672
+ command: create
673
+ mcp:
674
+ expose: false
675
+ tool_name: null
676
+ description: ''
677
+ body_args:
678
+ - name: url1
679
+ help: First URL pattern. Required.
680
+ required: true
681
+ - name: url2
682
+ help: Second URL pattern.
683
+ - name: url3
684
+ help: Third URL pattern.
685
+ - name: device
686
+ help: Device class (e.g. desktop, mobile).
687
+ - name: type
688
+ help: Type label for this group.
689
+ - id: update_url_type
690
+ path: /site/{site}/url-type
691
+ method: PUT
692
+ risk: write
693
+ audience: customer
694
+ cli:
695
+ group:
696
+ - site
697
+ - url-type
698
+ command: update
699
+ mcp:
700
+ expose: false
701
+ tool_name: null
702
+ description: ''
703
+ body_args:
704
+ - name: id
705
+ help: Existing url-type id. Required.
706
+ required: true
707
+ - name: url1
708
+ help: First URL pattern.
709
+ - name: url2
710
+ help: Second URL pattern.
711
+ - name: url3
712
+ help: Third URL pattern.
713
+ - name: device
714
+ help: Device class.
715
+ - name: type
716
+ help: Type label.
717
+ - id: delete_url_type
718
+ path: /site/{site}/url-type
719
+ method: DELETE
720
+ risk: write
721
+ audience: customer
722
+ cli:
723
+ group:
724
+ - site
725
+ - url-type
726
+ command: delete
727
+ mcp:
728
+ expose: false
729
+ tool_name: null
730
+ description: ''
731
+ body_args:
732
+ - name: id
733
+ help: url-type id to delete. Required.
734
+ required: true
735
+ - id: create_annotation
736
+ path: /site/{site}/annotations
737
+ method: POST
738
+ risk: write
739
+ audience: customer
740
+ cli:
741
+ group:
742
+ - site
743
+ - annotations
744
+ command: create
745
+ mcp:
746
+ expose: false
747
+ tool_name: null
748
+ description: "Create an annotation tied to a specific URL \xD7 adunit on a site."
749
+ body_args:
750
+ - name: country_code
751
+ help: Two-letter country code (e.g. BR). Required.
752
+ required: true
753
+ - name: country_name
754
+ help: Human-readable country name. Required.
755
+ required: true
756
+ - name: channel
757
+ help: Traffic channel (e.g. organic, paid, email). Required.
758
+ required: true
759
+ - name: url
760
+ help: Absolute URL the annotation pins to. Required.
761
+ required: true
762
+ - name: adunit
763
+ help: Ad unit identifier (matches the GAM/report adunit value). Required.
764
+ required: true
765
+ - name: content
766
+ help: Annotation body text. Required.
767
+ required: true
768
+ - name: user_name
769
+ help: Display name of the author. Required.
770
+ required: true
771
+ - name: user_email
772
+ help: Email of the author. Required.
773
+ required: true
774
+ - id: pricing_adjust
775
+ path: /site/{site}/pricing/adjust
776
+ method: POST
777
+ risk: write
778
+ audience: customer
779
+ body_args:
780
+ - name: body
781
+ help: 'Adjustment payload (JSON-encoded). Shape: {"dryRun": true, "adjustments": [{"match": {"country":
782
+ "BR", "device": "mobile"}, "op": "multiply", "value": 1.15}]}. Ops: set | multiply | increment |
783
+ percent | remove. An omitted match field means "any". Start with dryRun to see exactly which rules
784
+ change.'
785
+ required: true
786
+ json: true
787
+ raw: true
788
+ cli:
789
+ group:
790
+ - site
791
+ - pricing
792
+ command: adjust
793
+ mcp:
794
+ expose: false
795
+ description: 'Adjust floors by selector rather than by full payload. Not exposed to MCP: this reprices
796
+ live inventory and triggers a wrapper deploy.'
797
+ - id: put_pricing
798
+ path: /site/{site}/pricing
799
+ method: PUT
800
+ risk: write
801
+ audience: customer
802
+ cli:
803
+ group:
804
+ - site
805
+ - pricing
806
+ command: put
807
+ mcp:
808
+ expose: false
809
+ tool_name: null
810
+ description: ''
811
+ body_args:
812
+ - name: body
813
+ help: Full pricing payload (JSON-encoded). Use --body '{...}' or pipe a file via shell substitution.
814
+ Required. Triggers a wrapper deploy via SQS.
815
+ required: true
816
+ json: true
817
+ raw: true
818
+ - id: put_config
819
+ path: /site/{site}/config
820
+ method: PUT
821
+ risk: write
822
+ audience: customer
823
+ cli:
824
+ group:
825
+ - site
826
+ - config
827
+ command: put
828
+ mcp:
829
+ expose: false
830
+ tool_name: null
831
+ description: ''
832
+ body_args:
833
+ - name: body
834
+ help: Full config payload (JSON-encoded). Required. Triggers a wrapper deploy via SQS.
835
+ required: true
836
+ json: true
837
+ raw: true
838
+ - id: site_dimension_group_create
839
+ path: /site/{site}/dimension-group
840
+ method: POST
841
+ risk: write
842
+ audience: customer
843
+ cli:
844
+ group:
845
+ - site
846
+ - dimension-group
847
+ command: create
848
+ mcp:
849
+ expose: false
850
+ tool_name: null
851
+ description: Create a dimension group for a site.
852
+ body_args:
853
+ - name: body
854
+ help: JSON request body. See app.py for the expected shape; field-level args can be added in a follow-up
855
+ PR.
856
+ json: true
857
+ raw: true
858
+ - id: site_dimension_group_update
859
+ path: /site/{site}/dimension-group
860
+ method: PUT
861
+ risk: write
862
+ audience: customer
863
+ cli:
864
+ group:
865
+ - site
866
+ - dimension-group
867
+ command: update
868
+ mcp:
869
+ expose: false
870
+ tool_name: null
871
+ description: Update an existing dimension group.
872
+ body_args:
873
+ - name: body
874
+ help: JSON request body. See app.py for the expected shape; field-level args can be added in a follow-up
875
+ PR.
876
+ json: true
877
+ raw: true
878
+ - id: site_dimension_group_delete
879
+ path: /site/{site}/dimension-group
880
+ method: DELETE
881
+ risk: write
882
+ audience: customer
883
+ cli:
884
+ group:
885
+ - site
886
+ - dimension-group
887
+ command: delete
888
+ mcp:
889
+ expose: false
890
+ tool_name: null
891
+ description: Delete a dimension group.
892
+ body_args:
893
+ - name: body
894
+ help: JSON request body. See app.py for the expected shape; field-level args can be added in a follow-up
895
+ PR.
896
+ json: true
897
+ raw: true
898
+ - id: site_dimension_group_save_order
899
+ path: /site/{site}/dimension-group/order
900
+ method: POST
901
+ risk: write
902
+ audience: customer
903
+ cli:
904
+ group:
905
+ - site
906
+ - dimension-group
907
+ command: save-order
908
+ mcp:
909
+ expose: false
910
+ tool_name: null
911
+ description: Persist a new ordering for a site's dimension groups.
912
+ body_args:
913
+ - name: body
914
+ help: JSON request body. See app.py for the expected shape; field-level args can be added in a follow-up
915
+ PR.
916
+ json: true
917
+ raw: true
918
+ - id: site_pricing_rollback_put
919
+ path: /site/{site}/pricing-rollback
920
+ method: PUT
921
+ risk: write
922
+ audience: customer
923
+ cli:
924
+ group:
925
+ - site
926
+ - pricing
927
+ command: rollback-put
928
+ mcp:
929
+ expose: false
930
+ tool_name: null
931
+ description: Roll back to a prior pricing snapshot (PUT variant).
932
+ body_args:
933
+ - name: body
934
+ help: JSON request body. See app.py for the expected shape; field-level args can be added in a follow-up
935
+ PR.
936
+ json: true
937
+ raw: true
938
+ - id: site_pricing_rollback_post
939
+ path: /site/{site}/pricing-rollback
940
+ method: POST
941
+ risk: write
942
+ audience: customer
943
+ cli:
944
+ group:
945
+ - site
946
+ - pricing
947
+ command: rollback-post
948
+ mcp:
949
+ expose: false
950
+ tool_name: null
951
+ description: Roll back to a prior pricing snapshot (POST variant).
952
+ body_args:
953
+ - name: body
954
+ help: JSON request body. See app.py for the expected shape; field-level args can be added in a follow-up
955
+ PR.
956
+ json: true
957
+ raw: true
958
+ - id: site_pricing_stage
959
+ path: /site/{site}/pricing-staging
960
+ method: PUT
961
+ risk: write
962
+ audience: customer
963
+ cli:
964
+ group:
965
+ - site
966
+ - pricing
967
+ command: stage
968
+ mcp:
969
+ expose: false
970
+ tool_name: null
971
+ description: Stage a pricing payload without deploying.
972
+ body_args:
973
+ - name: body
974
+ help: JSON request body. See app.py for the expected shape; field-level args can be added in a follow-up
975
+ PR.
976
+ json: true
977
+ raw: true
978
+ - id: site_config_patch
979
+ path: /site/{site}/config/partial
980
+ method: PUT
981
+ risk: write
982
+ audience: customer
983
+ cli:
984
+ group:
985
+ - site
986
+ - config
987
+ command: patch
988
+ mcp:
989
+ expose: false
990
+ tool_name: null
991
+ description: Partial-update the site config without triggering a deploy.
992
+ body_args:
993
+ - name: body
994
+ help: JSON request body. See app.py for the expected shape; field-level args can be added in a follow-up
995
+ PR.
996
+ json: true
997
+ raw: true
998
+ - id: site_facebook_ads_put_config
999
+ path: /site/{site}/facebook-ads/config
1000
+ method: PUT
1001
+ risk: write
1002
+ audience: customer
1003
+ cli:
1004
+ group:
1005
+ - site
1006
+ - facebook-ads
1007
+ command: put-config
1008
+ mcp:
1009
+ expose: false
1010
+ tool_name: null
1011
+ description: Update Facebook Ads integration config.
1012
+ body_args:
1013
+ - name: body
1014
+ help: JSON request body. See app.py for the expected shape; field-level args can be added in a follow-up
1015
+ PR.
1016
+ json: true
1017
+ raw: true
1018
+ - id: site_active_campaign_put_config
1019
+ path: /site/{site}/active-campaign/config
1020
+ method: PUT
1021
+ risk: write
1022
+ audience: customer
1023
+ cli:
1024
+ group:
1025
+ - site
1026
+ - active-campaign
1027
+ command: put-config
1028
+ mcp:
1029
+ expose: false
1030
+ tool_name: null
1031
+ description: Update ActiveCampaign integration config.
1032
+ body_args:
1033
+ - name: body
1034
+ help: JSON request body. See app.py for the expected shape; field-level args can be added in a follow-up
1035
+ PR.
1036
+ json: true
1037
+ raw: true
1038
+ - id: site_quick_filters_create
1039
+ path: /site/{site}/quick-filters
1040
+ method: POST
1041
+ risk: write
1042
+ audience: customer
1043
+ cli:
1044
+ group:
1045
+ - site
1046
+ - quick-filters
1047
+ command: create
1048
+ mcp:
1049
+ expose: false
1050
+ tool_name: null
1051
+ description: Create a quick-filter.
1052
+ body_args:
1053
+ - name: body
1054
+ help: JSON request body. See app.py for the expected shape; field-level args can be added in a follow-up
1055
+ PR.
1056
+ json: true
1057
+ raw: true
1058
+ - id: site_quick_filters_update
1059
+ path: /site/{site}/quick-filters
1060
+ method: PUT
1061
+ risk: write
1062
+ audience: customer
1063
+ cli:
1064
+ group:
1065
+ - site
1066
+ - quick-filters
1067
+ command: update
1068
+ mcp:
1069
+ expose: false
1070
+ tool_name: null
1071
+ description: Update a quick-filter.
1072
+ body_args:
1073
+ - name: body
1074
+ help: JSON request body. See app.py for the expected shape; field-level args can be added in a follow-up
1075
+ PR.
1076
+ json: true
1077
+ raw: true
1078
+ - id: site_postmaster_add_domain
1079
+ path: /site/{site}/postmaster/config
1080
+ method: POST
1081
+ risk: write
1082
+ audience: customer
1083
+ cli:
1084
+ group:
1085
+ - site
1086
+ - postmaster
1087
+ command: add-domain
1088
+ mcp:
1089
+ expose: false
1090
+ tool_name: null
1091
+ description: Add a Postmaster sender domain.
1092
+ body_args:
1093
+ - name: body
1094
+ help: JSON request body. See app.py for the expected shape; field-level args can be added in a follow-up
1095
+ PR.
1096
+ json: true
1097
+ raw: true
1098
+ - id: site_postmaster_select_domains
1099
+ path: /site/{site}/postmaster/config
1100
+ method: PUT
1101
+ risk: write
1102
+ audience: customer
1103
+ cli:
1104
+ group:
1105
+ - site
1106
+ - postmaster
1107
+ command: select-domains
1108
+ mcp:
1109
+ expose: false
1110
+ tool_name: null
1111
+ description: Update Postmaster selected domains.
1112
+ body_args:
1113
+ - name: body
1114
+ help: JSON request body. See app.py for the expected shape; field-level args can be added in a follow-up
1115
+ PR.
1116
+ json: true
1117
+ raw: true
1118
+ - id: site_postmaster_delete_domain
1119
+ path: /site/{site}/postmaster/config
1120
+ method: DELETE
1121
+ risk: write
1122
+ audience: customer
1123
+ cli:
1124
+ group:
1125
+ - site
1126
+ - postmaster
1127
+ command: delete-domain
1128
+ mcp:
1129
+ expose: false
1130
+ tool_name: null
1131
+ description: Remove a Postmaster sender domain.
1132
+ body_args:
1133
+ - name: body
1134
+ help: JSON request body. See app.py for the expected shape; field-level args can be added in a follow-up
1135
+ PR.
1136
+ json: true
1137
+ raw: true
1138
+ - id: site_postmaster_oauth_callback
1139
+ path: /site/{site}/postmaster/oauth/callback
1140
+ method: POST
1141
+ risk: write
1142
+ audience: customer
1143
+ cli:
1144
+ group:
1145
+ - site
1146
+ - postmaster
1147
+ - oauth
1148
+ command: callback
1149
+ mcp:
1150
+ expose: false
1151
+ tool_name: null
1152
+ description: Complete the Postmaster OAuth flow (machine-driven; rarely called by humans).
1153
+ body_args:
1154
+ - name: body
1155
+ help: JSON request body. See app.py for the expected shape; field-level args can be added in a follow-up
1156
+ PR.
1157
+ json: true
1158
+ raw: true
1159
+ - id: site_postmaster_oauth_disconnect
1160
+ path: /site/{site}/postmaster/oauth
1161
+ method: DELETE
1162
+ risk: write
1163
+ audience: customer
1164
+ cli:
1165
+ group:
1166
+ - site
1167
+ - postmaster
1168
+ - oauth
1169
+ command: disconnect
1170
+ mcp:
1171
+ expose: false
1172
+ tool_name: null
1173
+ description: Disconnect Postmaster OAuth.
1174
+ - id: site_google_ads_list_campaigns
1175
+ path: /site/{site}/google-ads/campaigns
1176
+ method: POST
1177
+ risk: write
1178
+ audience: customer
1179
+ cli:
1180
+ group:
1181
+ - site
1182
+ - google-ads
1183
+ command: list-campaigns
1184
+ mcp:
1185
+ expose: false
1186
+ tool_name: null
1187
+ description: Trigger a Google Ads campaign list refresh (POST body filters).
1188
+ body_args:
1189
+ - name: body
1190
+ help: JSON request body. See app.py for the expected shape; field-level args can be added in a follow-up
1191
+ PR.
1192
+ json: true
1193
+ raw: true
1194
+ - id: site_google_ads_oauth_callback
1195
+ path: /site/{site}/google-ads/oauth/callback
1196
+ method: POST
1197
+ risk: write
1198
+ audience: customer
1199
+ cli:
1200
+ group:
1201
+ - site
1202
+ - google-ads
1203
+ - oauth
1204
+ command: callback
1205
+ mcp:
1206
+ expose: false
1207
+ tool_name: null
1208
+ description: Complete the Google Ads OAuth flow.
1209
+ body_args:
1210
+ - name: body
1211
+ help: JSON request body. See app.py for the expected shape; field-level args can be added in a follow-up
1212
+ PR.
1213
+ json: true
1214
+ raw: true
1215
+ - id: site_google_ads_oauth_disconnect
1216
+ path: /site/{site}/google-ads/oauth
1217
+ method: DELETE
1218
+ risk: write
1219
+ audience: customer
1220
+ cli:
1221
+ group:
1222
+ - site
1223
+ - google-ads
1224
+ - oauth
1225
+ command: disconnect
1226
+ mcp:
1227
+ expose: false
1228
+ tool_name: null
1229
+ description: Disconnect Google Ads OAuth.
1230
+ - id: site_google_ads_put_config
1231
+ path: /site/{site}/google-ads/config
1232
+ method: PUT
1233
+ risk: write
1234
+ audience: customer
1235
+ cli:
1236
+ group:
1237
+ - site
1238
+ - google-ads
1239
+ command: put-config
1240
+ mcp:
1241
+ expose: false
1242
+ tool_name: null
1243
+ description: Update Google Ads integration config.
1244
+ body_args:
1245
+ - name: body
1246
+ help: JSON request body. See app.py for the expected shape; field-level args can be added in a follow-up
1247
+ PR.
1248
+ json: true
1249
+ raw: true
1250
+ - id: site_google_analytics_oauth_disconnect
1251
+ path: /site/{site}/google-analytics/oauth
1252
+ method: DELETE
1253
+ risk: write
1254
+ audience: customer
1255
+ cli:
1256
+ group:
1257
+ - site
1258
+ - google-analytics
1259
+ - oauth
1260
+ command: disconnect
1261
+ mcp:
1262
+ expose: false
1263
+ tool_name: null
1264
+ description: Disconnect Google Analytics OAuth.
1265
+ - id: site_google_analytics_put_config
1266
+ path: /site/{site}/google-analytics/config
1267
+ method: PUT
1268
+ risk: write
1269
+ audience: customer
1270
+ cli:
1271
+ group:
1272
+ - site
1273
+ - google-analytics
1274
+ command: put-config
1275
+ mcp:
1276
+ expose: false
1277
+ tool_name: null
1278
+ description: Update Google Analytics integration config.
1279
+ body_args:
1280
+ - name: body
1281
+ help: JSON request body. See app.py for the expected shape; field-level args can be added in a follow-up
1282
+ PR.
1283
+ json: true
1284
+ raw: true
1285
+ - id: site_leads_search
1286
+ path: /site/{site}/leads
1287
+ method: POST
1288
+ risk: write
1289
+ audience: customer
1290
+ cli:
1291
+ group:
1292
+ - site
1293
+ - leads
1294
+ command: search
1295
+ mcp:
1296
+ expose: false
1297
+ tool_name: null
1298
+ description: Query leads with a POST body filter.
1299
+ body_args:
1300
+ - name: body
1301
+ help: JSON request body. See app.py for the expected shape; field-level args can be added in a follow-up
1302
+ PR.
1303
+ json: true
1304
+ raw: true
1305
+ - id: site_quiz_create
1306
+ path: /site/{site}/quiz
1307
+ method: POST
1308
+ risk: write
1309
+ audience: customer
1310
+ cli:
1311
+ group:
1312
+ - site
1313
+ - quiz
1314
+ command: create
1315
+ mcp:
1316
+ expose: false
1317
+ tool_name: null
1318
+ description: Create a quiz.
1319
+ body_args:
1320
+ - name: body
1321
+ help: JSON request body. See app.py for the expected shape; field-level args can be added in a follow-up
1322
+ PR.
1323
+ json: true
1324
+ raw: true
1325
+ - id: site_quiz_update
1326
+ path: /site/{site}/quiz/{quiz_id}
1327
+ method: PUT
1328
+ risk: write
1329
+ audience: customer
1330
+ cli:
1331
+ group:
1332
+ - site
1333
+ - quiz
1334
+ command: update
1335
+ mcp:
1336
+ expose: false
1337
+ tool_name: null
1338
+ description: Replace a quiz.
1339
+ body_args:
1340
+ - name: body
1341
+ help: JSON request body. See app.py for the expected shape; field-level args can be added in a follow-up
1342
+ PR.
1343
+ json: true
1344
+ raw: true
1345
+ - id: site_quiz_patch
1346
+ path: /site/{site}/quiz/{quiz_id}
1347
+ method: PATCH
1348
+ risk: write
1349
+ audience: customer
1350
+ cli:
1351
+ group:
1352
+ - site
1353
+ - quiz
1354
+ command: patch
1355
+ mcp:
1356
+ expose: false
1357
+ tool_name: null
1358
+ description: Partial-update a quiz.
1359
+ body_args:
1360
+ - name: body
1361
+ help: JSON request body. See app.py for the expected shape; field-level args can be added in a follow-up
1362
+ PR.
1363
+ json: true
1364
+ raw: true
1365
+ - id: site_quiz_delete
1366
+ path: /site/{site}/quiz/{quiz_id}
1367
+ method: DELETE
1368
+ risk: write
1369
+ audience: customer
1370
+ cli:
1371
+ group:
1372
+ - site
1373
+ - quiz
1374
+ command: delete
1375
+ mcp:
1376
+ expose: false
1377
+ tool_name: null
1378
+ description: Delete a quiz.
1379
+ - id: site_quiz_build
1380
+ path: /site/{site}/quiz/{quiz_id}/build
1381
+ method: POST
1382
+ risk: write
1383
+ audience: customer
1384
+ cli:
1385
+ group:
1386
+ - site
1387
+ - quiz
1388
+ command: build
1389
+ mcp:
1390
+ expose: false
1391
+ tool_name: null
1392
+ description: Re-build a quiz (no body required).
1393
+ - id: site_account_create
1394
+ path: /site/{site}/account
1395
+ method: POST
1396
+ risk: write
1397
+ audience: customer
1398
+ cli:
1399
+ group:
1400
+ - site
1401
+ - account
1402
+ command: create
1403
+ mcp:
1404
+ expose: false
1405
+ tool_name: null
1406
+ description: Create an integration account.
1407
+ body_args:
1408
+ - name: body
1409
+ help: JSON request body. See app.py for the expected shape; field-level args can be added in a follow-up
1410
+ PR.
1411
+ json: true
1412
+ raw: true
1413
+ - id: site_account_update
1414
+ path: /site/{site}/account/{account_id}
1415
+ method: PUT
1416
+ risk: write
1417
+ audience: customer
1418
+ cli:
1419
+ group:
1420
+ - site
1421
+ - account
1422
+ command: update
1423
+ mcp:
1424
+ expose: false
1425
+ tool_name: null
1426
+ description: Update an integration account.
1427
+ body_args:
1428
+ - name: body
1429
+ help: JSON request body. See app.py for the expected shape; field-level args can be added in a follow-up
1430
+ PR.
1431
+ json: true
1432
+ raw: true
1433
+ - id: site_account_delete
1434
+ path: /site/{site}/account/{account_id}
1435
+ method: DELETE
1436
+ risk: write
1437
+ audience: customer
1438
+ cli:
1439
+ group:
1440
+ - site
1441
+ - account
1442
+ command: delete
1443
+ mcp:
1444
+ expose: false
1445
+ tool_name: null
1446
+ description: Delete an integration account.
1447
+ - id: site_weight_put
1448
+ path: /site/{site}/weight/{quiz_id}
1449
+ method: PUT
1450
+ risk: write
1451
+ audience: customer
1452
+ cli:
1453
+ group:
1454
+ - site
1455
+ - weight
1456
+ command: put
1457
+ mcp:
1458
+ expose: false
1459
+ tool_name: null
1460
+ description: Replace a quiz's weight table.
1461
+ body_args:
1462
+ - name: body
1463
+ help: JSON request body. See app.py for the expected shape; field-level args can be added in a follow-up
1464
+ PR.
1465
+ json: true
1466
+ raw: true
1467
+ - id: site_email_checker_create
1468
+ path: /site/{site}/email-checker
1469
+ method: POST
1470
+ risk: write
1471
+ audience: customer
1472
+ cli:
1473
+ group:
1474
+ - site
1475
+ - email-checker
1476
+ command: create
1477
+ mcp:
1478
+ expose: false
1479
+ tool_name: null
1480
+ description: Create an email-checker job.
1481
+ body_args:
1482
+ - name: body
1483
+ help: JSON request body. See app.py for the expected shape; field-level args can be added in a follow-up
1484
+ PR.
1485
+ json: true
1486
+ raw: true
1487
+ - id: site_email_checker_update
1488
+ path: /site/{site}/email-checker/{checker_id}
1489
+ method: PUT
1490
+ risk: write
1491
+ audience: customer
1492
+ cli:
1493
+ group:
1494
+ - site
1495
+ - email-checker
1496
+ command: update
1497
+ mcp:
1498
+ expose: false
1499
+ tool_name: null
1500
+ description: Update an email-checker job.
1501
+ body_args:
1502
+ - name: body
1503
+ help: JSON request body. See app.py for the expected shape; field-level args can be added in a follow-up
1504
+ PR.
1505
+ json: true
1506
+ raw: true
1507
+ - id: site_active_campaign_put_config_user
1508
+ path: /site/{site}/active-campaign/config-user
1509
+ method: PUT
1510
+ risk: write
1511
+ audience: customer
1512
+ cli:
1513
+ group:
1514
+ - site
1515
+ - active-campaign
1516
+ command: put-config-user
1517
+ mcp:
1518
+ expose: false
1519
+ tool_name: null
1520
+ description: Update the per-user ActiveCampaign config.
1521
+ body_args:
1522
+ - name: body
1523
+ help: JSON request body. See app.py for the expected shape; field-level args can be added in a follow-up
1524
+ PR.
1525
+ json: true
1526
+ raw: true
1527
+ - id: site_annotations_update
1528
+ path: /site/{site}/annotations/{annotation_id}
1529
+ method: PUT
1530
+ risk: write
1531
+ audience: customer
1532
+ cli:
1533
+ group:
1534
+ - site
1535
+ - annotations
1536
+ command: update
1537
+ mcp:
1538
+ expose: false
1539
+ tool_name: null
1540
+ description: Update an annotation.
1541
+ body_args:
1542
+ - name: body
1543
+ help: JSON request body. See app.py for the expected shape; field-level args can be added in a follow-up
1544
+ PR.
1545
+ json: true
1546
+ raw: true
1547
+ - id: site_annotations_delete
1548
+ path: /site/{site}/annotations/{annotation_id}
1549
+ method: DELETE
1550
+ risk: write
1551
+ audience: customer
1552
+ cli:
1553
+ group:
1554
+ - site
1555
+ - annotations
1556
+ command: delete
1557
+ mcp:
1558
+ expose: false
1559
+ tool_name: null
1560
+ description: Delete an annotation.
1561
+ - id: site_config_deploy_wrapper
1562
+ path: /site/{site}/config/deploy-config-wrapper
1563
+ method: POST
1564
+ risk: write
1565
+ audience: customer
1566
+ cli:
1567
+ group:
1568
+ - site
1569
+ - config
1570
+ command: deploy-wrapper
1571
+ mcp:
1572
+ expose: false
1573
+ tool_name: null
1574
+ description: 'Save config fields and queue a wrapper deploy with them. The body is
1575
+
1576
+ REQUIRED: every field in it overwrites the site''s saved config (the
1577
+
1578
+ change is kept in the config history), then the wrapper is deployed.
1579
+
1580
+ This is a config write, not a bare trigger. A missing or non-object
1581
+
1582
+ body returns 400 and nothing is saved or deployed.
1583
+
1584
+ '
1585
+ body_args:
1586
+ - name: body
1587
+ help: 'JSON object, REQUIRED: the config to save and deploy (e.g. the `config` object from `site config
1588
+ get`, edited). Send integral numbers as integers: `config get` renders them as floats (networkId
1589
+ 4919509 comes back as 4919509.0), and a deployed 4919509.0 ends up in ad unit paths and breaks every
1590
+ ad request on the site. Never paste float-rendered `config get` output (e.g. 5.0) back into a deploy
1591
+ unchanged.'
1592
+ json: true
1593
+ raw: true
1594
+ - id: site_email_checker_delete
1595
+ path: /site/{site}/email-checker/{checker_id}
1596
+ method: DELETE
1597
+ risk: write
1598
+ audience: customer
1599
+ cli:
1600
+ group:
1601
+ - site
1602
+ - email-checker
1603
+ command: delete
1604
+ mcp:
1605
+ expose: false
1606
+ tool_name: null
1607
+ description: Delete an email-checker job.
1608
+ - id: site_google_adm_start_report
1609
+ path: /site/{site}/google-adm/start-gam-report
1610
+ method: POST
1611
+ risk: write
1612
+ audience: customer
1613
+ cli:
1614
+ group:
1615
+ - site
1616
+ - google-adm
1617
+ command: start-report
1618
+ mcp:
1619
+ expose: false
1620
+ tool_name: null
1621
+ description: Trigger a GAM report run.
1622
+ body_args:
1623
+ - name: body
1624
+ help: JSON request body. See app.py for the expected shape; field-level args can be added in a follow-up
1625
+ PR.
1626
+ json: true
1627
+ raw: true
1628
+ - id: site_google_analytics_oauth_callback
1629
+ path: /site/{site}/google-analytics/oauth/callback
1630
+ method: POST
1631
+ risk: write
1632
+ audience: customer
1633
+ cli:
1634
+ group:
1635
+ - site
1636
+ - google-analytics
1637
+ - oauth
1638
+ command: callback
1639
+ mcp:
1640
+ expose: false
1641
+ tool_name: null
1642
+ description: Complete the Google Analytics OAuth flow.
1643
+ body_args:
1644
+ - name: body
1645
+ help: JSON request body. See app.py for the expected shape; field-level args can be added in a follow-up
1646
+ PR.
1647
+ json: true
1648
+ raw: true