mcpscraper-cli 0.32.0 → 0.33.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -4,7 +4,7 @@ Command-line interface for [mcpscraper.dev](https://mcpscraper.dev) and [memory.
4
4
 
5
5
  [Release history](https://github.com/VilovietaSEO/mcpscraper-sdk/blob/main/CHANGELOG.md)
6
6
 
7
- The CLI provides friendly shortcuts for common operations plus universal discovery and invocation for every one of the 331 unified MCP tools (230 MCP Scraper plus 101 mirrored Memory tools).
7
+ The CLI provides friendly shortcuts for common operations plus universal discovery and invocation for every one of the 339 unified MCP tools (238 MCP Scraper plus 101 mirrored Memory tools).
8
8
 
9
9
  ## Install
10
10
 
@@ -41,7 +41,7 @@ mcpscraper tools call gmail_prepare_selection --args '{"connectionId":"gmail_con
41
41
  mcpscraper tools call gmail_import_status --args '{"ingestId":"opaque_ingest_id"}' --json
42
42
  ```
43
43
 
44
- `tools list` contains exactly 331 manifest-backed names. `tools call` accepts any one of them. Tools marked destructive require `--yes`.
44
+ `tools list` contains exactly 339 manifest-backed names. `tools call` accepts any one of them. Tools marked destructive require `--yes`.
45
45
 
46
46
  Keep a Gmail selection's ID, SHA-256, and count together. `gmail_import_status` only observes work; resume through `gmail_import_to_memory` with the original plan and idempotency key. Permanent deletion is a separate irreversible command requiring both `confirmPermanentDelete:true` and `--yes`; it is intentionally not shown as a copy/paste example.
47
47
 
package/dist/bin/cli.js CHANGED
@@ -10,7 +10,7 @@ import { randomUUID } from "crypto";
10
10
  import { ScraperClient, ScraperApiError } from "mcpscraper-sdk";
11
11
 
12
12
  // src/version.ts
13
- var CLI_VERSION = "0.32.0";
13
+ var CLI_VERSION = "0.33.0";
14
14
 
15
15
  // src/generated-tools.ts
16
16
  var MCP_TOOL_CATALOG = [
@@ -937,7 +937,7 @@ var MCP_TOOL_CATALOG = [
937
937
  "name": "analytics_approve_crm_provisioning",
938
938
  "category": "analytics",
939
939
  "title": "Approve CRM Provisioning",
940
- "description": "Create the exact approved namespaced fields in the connected CRM. Provider field creation may be irreversible and cleanup is manual; inspect analytics_plan_crm_provisioning before approving.",
940
+ "description": "Create the planned CRM fields. Creation may be irreversible; inspect analytics_plan_crm_provisioning first.",
941
941
  "inputSchema": {
942
942
  "type": "object",
943
943
  "properties": {
@@ -1149,11 +1149,18 @@ var MCP_TOOL_CATALOG = [
1149
1149
  "format": "uuid",
1150
1150
  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
1151
1151
  "description": "Event definition id returned by analytics_list_event_definitions."
1152
+ },
1153
+ "idempotencyKey": {
1154
+ "type": "string",
1155
+ "minLength": 8,
1156
+ "maxLength": 160,
1157
+ "description": "Retry key; reuse only for this exact mutation."
1152
1158
  }
1153
1159
  },
1154
1160
  "required": [
1155
1161
  "siteId",
1156
- "definitionId"
1162
+ "definitionId",
1163
+ "idempotencyKey"
1157
1164
  ],
1158
1165
  "$schema": "https://json-schema.org/draft/2020-12/schema"
1159
1166
  },
@@ -1240,6 +1247,18 @@ var MCP_TOOL_CATALOG = [
1240
1247
  "minLength": 1,
1241
1248
  "maxLength": 240,
1242
1249
  "description": "Provider destination identifier already owned by the connected account."
1250
+ },
1251
+ "operatingAccountId": {
1252
+ "description": "Google Ads operating account identifier required for Google Data Manager destinations.",
1253
+ "type": "string",
1254
+ "minLength": 1,
1255
+ "maxLength": 256
1256
+ },
1257
+ "idempotencyKey": {
1258
+ "type": "string",
1259
+ "minLength": 8,
1260
+ "maxLength": 160,
1261
+ "description": "Retry key; reuse only for this exact mutation."
1243
1262
  }
1244
1263
  },
1245
1264
  "required": [
@@ -1247,7 +1266,8 @@ var MCP_TOOL_CATALOG = [
1247
1266
  "platform",
1248
1267
  "name",
1249
1268
  "connectionRef",
1250
- "externalDatasetId"
1269
+ "externalDatasetId",
1270
+ "idempotencyKey"
1251
1271
  ],
1252
1272
  "$schema": "https://json-schema.org/draft/2020-12/schema"
1253
1273
  },
@@ -1333,6 +1353,12 @@ var MCP_TOOL_CATALOG = [
1333
1353
  "description": "Optional advertising creative identifier preserved on the tracked campaign link.",
1334
1354
  "type": "string",
1335
1355
  "maxLength": 240
1356
+ },
1357
+ "idempotencyKey": {
1358
+ "type": "string",
1359
+ "minLength": 8,
1360
+ "maxLength": 160,
1361
+ "description": "Retry key; reuse only for this exact mutation."
1336
1362
  }
1337
1363
  },
1338
1364
  "required": [
@@ -1341,7 +1367,8 @@ var MCP_TOOL_CATALOG = [
1341
1367
  "destinationUrl",
1342
1368
  "source",
1343
1369
  "medium",
1344
- "campaign"
1370
+ "campaign",
1371
+ "idempotencyKey"
1345
1372
  ],
1346
1373
  "$schema": "https://json-schema.org/draft/2020-12/schema"
1347
1374
  },
@@ -1357,7 +1384,7 @@ var MCP_TOOL_CATALOG = [
1357
1384
  "name": "analytics_create_connection",
1358
1385
  "category": "analytics",
1359
1386
  "title": "Create X-Ray Connection",
1360
- "description": "Create a CallRail, CallTrackingMetrics, Twilio, HubSpot, HighLevel, or generic CRM connection. Creation is configured-unverified until a signed receipt succeeds.",
1387
+ "description": "Create a phone or CRM connection. It remains configured-unverified until a signed receipt succeeds.",
1361
1388
  "inputSchema": {
1362
1389
  "type": "object",
1363
1390
  "properties": {
@@ -1409,13 +1436,20 @@ var MCP_TOOL_CATALOG = [
1409
1436
  "type": "string"
1410
1437
  },
1411
1438
  "additionalProperties": {}
1439
+ },
1440
+ "idempotencyKey": {
1441
+ "type": "string",
1442
+ "minLength": 8,
1443
+ "maxLength": 160,
1444
+ "description": "Retry key; reuse only for this exact mutation."
1412
1445
  }
1413
1446
  },
1414
1447
  "required": [
1415
1448
  "siteId",
1416
1449
  "provider",
1417
1450
  "name",
1418
- "sourceAccountRef"
1451
+ "sourceAccountRef",
1452
+ "idempotencyKey"
1419
1453
  ],
1420
1454
  "$schema": "https://json-schema.org/draft/2020-12/schema"
1421
1455
  },
@@ -1546,13 +1580,20 @@ var MCP_TOOL_CATALOG = [
1546
1580
  "default": true,
1547
1581
  "description": "Whether the new rule should begin evaluating events immediately.",
1548
1582
  "type": "boolean"
1583
+ },
1584
+ "idempotencyKey": {
1585
+ "type": "string",
1586
+ "minLength": 8,
1587
+ "maxLength": 160,
1588
+ "description": "Retry key; reuse only for this exact mutation."
1549
1589
  }
1550
1590
  },
1551
1591
  "required": [
1552
1592
  "siteId",
1553
1593
  "name",
1554
1594
  "conversionKind",
1555
- "condition"
1595
+ "condition",
1596
+ "idempotencyKey"
1556
1597
  ],
1557
1598
  "$schema": "https://json-schema.org/draft/2020-12/schema"
1558
1599
  },
@@ -1676,13 +1717,20 @@ var MCP_TOOL_CATALOG = [
1676
1717
  "default": true,
1677
1718
  "description": "Whether the Pixel may emit this definition.",
1678
1719
  "type": "boolean"
1720
+ },
1721
+ "idempotencyKey": {
1722
+ "type": "string",
1723
+ "minLength": 8,
1724
+ "maxLength": 160,
1725
+ "description": "Retry key; reuse only for this exact mutation."
1679
1726
  }
1680
1727
  },
1681
1728
  "required": [
1682
1729
  "siteId",
1683
1730
  "name",
1684
1731
  "eventName",
1685
- "triggerKind"
1732
+ "triggerKind",
1733
+ "idempotencyKey"
1686
1734
  ],
1687
1735
  "$schema": "https://json-schema.org/draft/2020-12/schema"
1688
1736
  },
@@ -2099,6 +2147,12 @@ var MCP_TOOL_CATALOG = [
2099
2147
  "default": true,
2100
2148
  "description": "When true, publish the created form immediately; set false to keep it unpublished.",
2101
2149
  "type": "boolean"
2150
+ },
2151
+ "idempotencyKey": {
2152
+ "type": "string",
2153
+ "minLength": 8,
2154
+ "maxLength": 160,
2155
+ "description": "Retry key; reuse only for this exact mutation."
2102
2156
  }
2103
2157
  },
2104
2158
  "required": [
@@ -2106,7 +2160,8 @@ var MCP_TOOL_CATALOG = [
2106
2160
  "pixelId",
2107
2161
  "name",
2108
2162
  "fields",
2109
- "brand"
2163
+ "brand",
2164
+ "idempotencyKey"
2110
2165
  ],
2111
2166
  "$schema": "https://json-schema.org/draft/2020-12/schema"
2112
2167
  },
@@ -3052,16 +3107,10 @@ var MCP_TOOL_CATALOG = [
3052
3107
  "additionalProperties": false
3053
3108
  },
3054
3109
  "attribution": {
3055
- "default": {
3056
- "model": "position_based",
3057
- "clickWindowDays": 90,
3058
- "viewWindowDays": 30
3059
- },
3060
3110
  "description": "Attribution model and independent click/view windows for this report.",
3061
3111
  "type": "object",
3062
3112
  "properties": {
3063
3113
  "model": {
3064
- "default": "position_based",
3065
3114
  "description": "Attribution model applied to this saved report view.",
3066
3115
  "type": "string",
3067
3116
  "enum": [
@@ -3071,6 +3120,7 @@ var MCP_TOOL_CATALOG = [
3071
3120
  "linear",
3072
3121
  "time_decay",
3073
3122
  "position_based",
3123
+ "position_40_20_40",
3074
3124
  "custom_weighted"
3075
3125
  ]
3076
3126
  },
@@ -3518,7 +3568,7 @@ var MCP_TOOL_CATALOG = [
3518
3568
  "name": "analytics_get_acquisition",
3519
3569
  "category": "analytics",
3520
3570
  "title": "Analytics Acquisition",
3521
- "description": "Read the acquisition report for one analytics Business. Use analytics_list_sites first. Filters use the same normalized Site, Pixel, hostname, date, source, medium, campaign, and event contract as the dashboard, REST API, and exports.",
3571
+ "description": "Read the acquisition report. Get siteId with analytics_list_sites; filters match dashboard, REST, and exports.",
3522
3572
  "inputSchema": {
3523
3573
  "type": "object",
3524
3574
  "properties": {
@@ -3759,7 +3809,7 @@ var MCP_TOOL_CATALOG = [
3759
3809
  "name": "analytics_get_business_metrics",
3760
3810
  "category": "analytics",
3761
3811
  "title": "Analytics Business Metrics",
3762
- "description": "Read the configured lead-generation, SaaS, or e-commerce metric pack with explicit missing-input signals.",
3812
+ "description": "Read the configured business metric pack with explicit missing inputs.",
3763
3813
  "inputSchema": {
3764
3814
  "type": "object",
3765
3815
  "properties": {
@@ -4047,7 +4097,7 @@ var MCP_TOOL_CATALOG = [
4047
4097
  "name": "analytics_get_channel_breakdown",
4048
4098
  "category": "analytics",
4049
4099
  "title": "Analytics Channel Breakdowns",
4050
- "description": "Read the LLM, social, and review-site channel breakdowns with campaign-to-creative drill-down report for one analytics Business. Use analytics_list_sites first. Filters use the same normalized Site, Pixel, hostname, date, source, medium, campaign, and event contract as the dashboard, REST API, and exports.",
4100
+ "description": "Read the LLM, social, and review-site channel breakdowns with campaign-to-creative drill-down report. Get siteId with analytics_list_sites; filters match dashboard, REST, and exports.",
4051
4101
  "inputSchema": {
4052
4102
  "type": "object",
4053
4103
  "properties": {
@@ -4328,7 +4378,7 @@ var MCP_TOOL_CATALOG = [
4328
4378
  "name": "analytics_get_content",
4329
4379
  "category": "analytics",
4330
4380
  "title": "Analytics Content",
4331
- "description": "Read the content report for one analytics Business. Use analytics_list_sites first. Filters use the same normalized Site, Pixel, hostname, date, source, medium, campaign, and event contract as the dashboard, REST API, and exports.",
4381
+ "description": "Read the content report. Get siteId with analytics_list_sites; filters match dashboard, REST, and exports.",
4332
4382
  "inputSchema": {
4333
4383
  "type": "object",
4334
4384
  "properties": {
@@ -4569,7 +4619,7 @@ var MCP_TOOL_CATALOG = [
4569
4619
  "name": "analytics_get_conversions",
4570
4620
  "category": "analytics",
4571
4621
  "title": "Analytics Conversions",
4572
- "description": "Read the conversions report for one analytics Business. Use analytics_list_sites first. Filters use the same normalized Site, Pixel, hostname, date, source, medium, campaign, and event contract as the dashboard, REST API, and exports.",
4622
+ "description": "Read the conversions report. Get siteId with analytics_list_sites; filters match dashboard, REST, and exports.",
4573
4623
  "inputSchema": {
4574
4624
  "type": "object",
4575
4625
  "properties": {
@@ -4810,7 +4860,7 @@ var MCP_TOOL_CATALOG = [
4810
4860
  "name": "analytics_get_coverage",
4811
4861
  "category": "analytics",
4812
4862
  "title": "Get Attribution Coverage",
4813
- "description": "Measure click-ID coverage and call/CRM journey join rates. Null rates mean there is not yet a denominator.",
4863
+ "description": "Measure click-ID coverage and call/CRM joins; null means no denominator.",
4814
4864
  "inputSchema": {
4815
4865
  "type": "object",
4816
4866
  "properties": {
@@ -4884,7 +4934,7 @@ var MCP_TOOL_CATALOG = [
4884
4934
  "name": "analytics_get_dimensions",
4885
4935
  "category": "analytics",
4886
4936
  "title": "Analytics Dimensions",
4887
- "description": "Read visualization-ready device, source, country, region, or weekday-hour rows. Chart recommendations are advisory.",
4937
+ "description": "Read chart-ready device, source, country, region, or weekday-hour rows.",
4888
4938
  "inputSchema": {
4889
4939
  "type": "object",
4890
4940
  "properties": {
@@ -5149,7 +5199,7 @@ var MCP_TOOL_CATALOG = [
5149
5199
  "name": "analytics_get_entitlement",
5150
5200
  "category": "analytics",
5151
5201
  "title": "Get X-Ray Pixel Access",
5152
- "description": "Check whether Thorbit X-Ray Pixel is connected and entitled for this MCP Scraper account. X-Ray Pixel is owned and billed by Thorbit, requires an active $50+ Thorbit subscription after its 30-day trial, and does not consume MCP Scraper Credits. Call this before analytics_list_sites when access may not be configured. Account linking must be completed in the MCP Scraper dashboard; never ask a user to paste a Thorbit API key into an AI conversation.",
5202
+ "description": "Check X-Ray access before analytics_list_sites. X-Ray is billed by Thorbit and uses no MCP Scraper Credits. Link only in the dashboard; never request its API key.",
5153
5203
  "inputSchema": {
5154
5204
  "type": "object",
5155
5205
  "properties": {},
@@ -5167,7 +5217,7 @@ var MCP_TOOL_CATALOG = [
5167
5217
  "name": "analytics_get_events",
5168
5218
  "category": "analytics",
5169
5219
  "title": "Analytics Events",
5170
- "description": "Read paginated event counts. Follow pageInfo cursors instead of requesting an unbounded result.",
5220
+ "description": "Read paginated event counts; follow pageInfo cursors.",
5171
5221
  "inputSchema": {
5172
5222
  "type": "object",
5173
5223
  "properties": {
@@ -5420,7 +5470,7 @@ var MCP_TOOL_CATALOG = [
5420
5470
  "name": "analytics_get_forecast",
5421
5471
  "category": "analytics",
5422
5472
  "title": "Analytics Forecast",
5423
- "description": "Read historical monthly revenue and spend plus bounded forward scenarios and ROAS when enough evidence exists.",
5473
+ "description": "Read historical revenue and spend plus evidence-bounded scenarios.",
5424
5474
  "inputSchema": {
5425
5475
  "type": "object",
5426
5476
  "properties": {
@@ -6001,7 +6051,7 @@ var MCP_TOOL_CATALOG = [
6001
6051
  "name": "analytics_get_overview",
6002
6052
  "category": "analytics",
6003
6053
  "title": "Analytics Overview",
6004
- "description": "Read the overview report for one analytics Business. Use analytics_list_sites first. Filters use the same normalized Site, Pixel, hostname, date, source, medium, campaign, and event contract as the dashboard, REST API, and exports.",
6054
+ "description": "Read the overview report. Get siteId with analytics_list_sites; filters match dashboard, REST, and exports.",
6005
6055
  "inputSchema": {
6006
6056
  "type": "object",
6007
6057
  "properties": {
@@ -6242,7 +6292,7 @@ var MCP_TOOL_CATALOG = [
6242
6292
  "name": "analytics_get_paths",
6243
6293
  "category": "analytics",
6244
6294
  "title": "Analytics Conversion Paths",
6245
- "description": "Read the conversion paths report for one analytics Business. Use analytics_list_sites first. Filters use the same normalized Site, Pixel, hostname, date, source, medium, campaign, and event contract as the dashboard, REST API, and exports.",
6295
+ "description": "Read the conversion paths report. Get siteId with analytics_list_sites; filters match dashboard, REST, and exports.",
6246
6296
  "inputSchema": {
6247
6297
  "type": "object",
6248
6298
  "properties": {
@@ -6483,7 +6533,7 @@ var MCP_TOOL_CATALOG = [
6483
6533
  "name": "analytics_get_person_journey",
6484
6534
  "category": "analytics",
6485
6535
  "title": "Get Person Journey",
6486
- "description": "Read CRM-oriented identified-person history: touches, calls, CRM stages, conversions, and delivery receipts. For analytics chronology use analytics_get_visitor_journey.",
6536
+ "description": "Read CRM-oriented identified-person history: touches, calls, stages, conversions, and receipts. For chronology use analytics_get_visitor_journey.",
6487
6537
  "inputSchema": {
6488
6538
  "type": "object",
6489
6539
  "properties": {
@@ -6607,7 +6657,7 @@ var MCP_TOOL_CATALOG = [
6607
6657
  "name": "analytics_get_timeseries",
6608
6658
  "category": "analytics",
6609
6659
  "title": "Analytics Timeseries",
6610
- "description": "Read daily time-series rows for an AI-selected line, area, or comparative visualization.",
6660
+ "description": "Read bounded daily rows for line, area, or comparison charts.",
6611
6661
  "inputSchema": {
6612
6662
  "type": "object",
6613
6663
  "properties": {
@@ -6894,8 +6944,8 @@ var MCP_TOOL_CATALOG = [
6894
6944
  {
6895
6945
  "name": "analytics_import_crm_csv",
6896
6946
  "category": "analytics",
6897
- "title": "Import CRM CSV",
6898
- "description": "Map and stage a bounded CRM CSV import. Contact fields are encrypted and analytics retains only opaque person references and identity signals.",
6947
+ "title": "Legacy CRM CSV Import",
6948
+ "description": "Legacy direct CRM CSV import; prefer preview then commit.",
6899
6949
  "inputSchema": {
6900
6950
  "type": "object",
6901
6951
  "properties": {
@@ -6963,6 +7013,12 @@ var MCP_TOOL_CATALOG = [
6963
7013
  }
6964
7014
  },
6965
7015
  "description": "CSV-column mapping used to identify and protect supported CRM fields."
7016
+ },
7017
+ "idempotencyKey": {
7018
+ "type": "string",
7019
+ "minLength": 8,
7020
+ "maxLength": 160,
7021
+ "description": "Retry key; reuse only for this exact mutation."
6966
7022
  }
6967
7023
  },
6968
7024
  "required": [
@@ -6970,12 +7026,13 @@ var MCP_TOOL_CATALOG = [
6970
7026
  "sourceSystem",
6971
7027
  "filename",
6972
7028
  "csv",
6973
- "mapping"
7029
+ "mapping",
7030
+ "idempotencyKey"
6974
7031
  ],
6975
7032
  "$schema": "https://json-schema.org/draft/2020-12/schema"
6976
7033
  },
6977
7034
  "annotations": {
6978
- "title": "Import CRM CSV",
7035
+ "title": "Legacy CRM CSV Import",
6979
7036
  "readOnlyHint": false,
6980
7037
  "destructiveHint": false,
6981
7038
  "idempotentHint": false,
@@ -6986,7 +7043,7 @@ var MCP_TOOL_CATALOG = [
6986
7043
  "name": "analytics_list_activation_destinations",
6987
7044
  "category": "analytics",
6988
7045
  "title": "List Ad Activation Destinations",
6989
- "description": "List Meta, Google, TikTok, and Reddit destinations with pending, delivered, and failed conversion counts.",
7046
+ "description": "List ad destinations with delivery counts and readiness.",
6990
7047
  "inputSchema": {
6991
7048
  "type": "object",
6992
7049
  "properties": {
@@ -7073,7 +7130,7 @@ var MCP_TOOL_CATALOG = [
7073
7130
  "name": "analytics_list_campaign_links",
7074
7131
  "category": "analytics",
7075
7132
  "title": "List Campaign Links",
7076
- "description": "List paginated tracked links and canonical UTM and ad hierarchy fields.",
7133
+ "description": "List paginated tracked links with UTM and ad hierarchy fields.",
7077
7134
  "inputSchema": {
7078
7135
  "type": "object",
7079
7136
  "properties": {
@@ -7113,7 +7170,7 @@ var MCP_TOOL_CATALOG = [
7113
7170
  "name": "analytics_list_connections",
7114
7171
  "category": "analytics",
7115
7172
  "title": "List X-Ray Connections",
7116
- "description": "List phone, CRM, and webhook connections with honest readiness, receipt, and error state.",
7173
+ "description": "List phone, CRM, and webhook connections with readiness and errors.",
7117
7174
  "inputSchema": {
7118
7175
  "type": "object",
7119
7176
  "properties": {
@@ -7153,7 +7210,7 @@ var MCP_TOOL_CATALOG = [
7153
7210
  "name": "analytics_list_conversion_rules",
7154
7211
  "category": "analytics",
7155
7212
  "title": "List Conversion Rules",
7156
- "description": "List deterministic versioned rules that turn canonical phone, CRM, transaction, and server events into conversions.",
7213
+ "description": "List versioned rules that turn canonical events into conversions.",
7157
7214
  "inputSchema": {
7158
7215
  "type": "object",
7159
7216
  "properties": {
@@ -7233,7 +7290,7 @@ var MCP_TOOL_CATALOG = [
7233
7290
  "name": "analytics_list_crm_imports",
7234
7291
  "category": "analytics",
7235
7292
  "title": "List CRM Imports",
7236
- "description": "List paginated encrypted CSV import receipts without exposing contact PII in analytics.",
7293
+ "description": "List encrypted CSV import receipts without contact PII.",
7237
7294
  "inputSchema": {
7238
7295
  "type": "object",
7239
7296
  "properties": {
@@ -7273,7 +7330,7 @@ var MCP_TOOL_CATALOG = [
7273
7330
  "name": "analytics_list_event_definitions",
7274
7331
  "category": "analytics",
7275
7332
  "title": "List Browser Event Definitions",
7276
- "description": "List declarative page, click, and form-submit tags applied by the first-party X-Ray Pixel.",
7333
+ "description": "List declarative page, click, and form-submit Pixel tags.",
7277
7334
  "inputSchema": {
7278
7335
  "type": "object",
7279
7336
  "properties": {
@@ -7313,7 +7370,7 @@ var MCP_TOOL_CATALOG = [
7313
7370
  "name": "analytics_list_forms",
7314
7371
  "category": "analytics",
7315
7372
  "title": "List Analytics Forms",
7316
- "description": "List paginated Pixel-linked forms, embed snippets, fields, versions, and submission counts.",
7373
+ "description": "List paginated Pixel-linked forms, embeds, versions, and submission counts.",
7317
7374
  "inputSchema": {
7318
7375
  "type": "object",
7319
7376
  "properties": {
@@ -7544,7 +7601,7 @@ var MCP_TOOL_CATALOG = [
7544
7601
  "name": "analytics_list_pixels",
7545
7602
  "category": "analytics",
7546
7603
  "title": "List Analytics Pixels",
7547
- "description": "List Site Pixels, installation snippets, detected domains, approval states, and health.",
7604
+ "description": "List Pixels, install snippets, approved domains, and health.",
7548
7605
  "inputSchema": {
7549
7606
  "type": "object",
7550
7607
  "properties": {
@@ -7945,7 +8002,7 @@ var MCP_TOOL_CATALOG = [
7945
8002
  "name": "analytics_list_sites",
7946
8003
  "category": "analytics",
7947
8004
  "title": "List Analytics Businesses",
7948
- "description": "List the authenticated account's analytics Businesses, roles, Pixel counts, and latest activity. Call this first to obtain the siteId used by every analytics report tool. Tenant access is enforced by the analytics API.",
8005
+ "description": "List authorized analytics Businesses, roles, Pixel counts, and activity. Call first to obtain the siteId required by analytics tools.",
7949
8006
  "inputSchema": {
7950
8007
  "type": "object",
7951
8008
  "properties": {},
@@ -8366,11 +8423,18 @@ var MCP_TOOL_CATALOG = [
8366
8423
  "format": "uuid",
8367
8424
  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
8368
8425
  "description": "Phone or CRM connection id returned by analytics_list_connections."
8426
+ },
8427
+ "idempotencyKey": {
8428
+ "type": "string",
8429
+ "minLength": 8,
8430
+ "maxLength": 160,
8431
+ "description": "Retry key; reuse only for this exact mutation."
8369
8432
  }
8370
8433
  },
8371
8434
  "required": [
8372
8435
  "siteId",
8373
- "connectionId"
8436
+ "connectionId",
8437
+ "idempotencyKey"
8374
8438
  ],
8375
8439
  "$schema": "https://json-schema.org/draft/2020-12/schema"
8376
8440
  },
@@ -8587,6 +8651,12 @@ var MCP_TOOL_CATALOG = [
8587
8651
  "type": "string"
8588
8652
  },
8589
8653
  "additionalProperties": {}
8654
+ },
8655
+ "idempotencyKey": {
8656
+ "type": "string",
8657
+ "minLength": 8,
8658
+ "maxLength": 160,
8659
+ "description": "Retry key; reuse only for this exact mutation."
8590
8660
  }
8591
8661
  },
8592
8662
  "required": [
@@ -8597,7 +8667,8 @@ var MCP_TOOL_CATALOG = [
8597
8667
  "sourceEventId",
8598
8668
  "eventKind",
8599
8669
  "eventName",
8600
- "occurredAt"
8670
+ "occurredAt",
8671
+ "idempotencyKey"
8601
8672
  ],
8602
8673
  "$schema": "https://json-schema.org/draft/2020-12/schema"
8603
8674
  },
@@ -8628,11 +8699,18 @@ var MCP_TOOL_CATALOG = [
8628
8699
  "format": "uuid",
8629
8700
  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
8630
8701
  "description": "Failed activation job id returned by analytics_list_activation_receipts."
8702
+ },
8703
+ "idempotencyKey": {
8704
+ "type": "string",
8705
+ "minLength": 8,
8706
+ "maxLength": 160,
8707
+ "description": "Retry key; reuse only for this exact mutation."
8631
8708
  }
8632
8709
  },
8633
8710
  "required": [
8634
8711
  "siteId",
8635
- "jobId"
8712
+ "jobId",
8713
+ "idempotencyKey"
8636
8714
  ],
8637
8715
  "$schema": "https://json-schema.org/draft/2020-12/schema"
8638
8716
  },
@@ -8648,7 +8726,7 @@ var MCP_TOOL_CATALOG = [
8648
8726
  "name": "analytics_start_crm_sync",
8649
8727
  "category": "analytics",
8650
8728
  "title": "Start Inbound CRM Synchronization",
8651
- "description": "Pull inbound CRM objects and stages into X-Ray through a capability-gated idempotent synchronization. This does not push X-Ray people or deals to the CRM; candidate identities and evidence are excluded.",
8729
+ "description": "Pull supported CRM objects into X-Ray. This does not push people or deals; candidate evidence is excluded.",
8652
8730
  "inputSchema": {
8653
8731
  "type": "object",
8654
8732
  "properties": {
@@ -8781,7 +8859,7 @@ var MCP_TOOL_CATALOG = [
8781
8859
  "name": "analytics_sync_crm_person",
8782
8860
  "category": "analytics",
8783
8861
  "title": "Push Confirmed Person to CRM",
8784
- "description": "Push one confirmed-person projection from X-Ray to the connected CRM after provisioning approval. This is not the inbound analytics_start_crm_sync lane; candidate identity or evidence is schema-invalid.",
8862
+ "description": "Push one confirmed person after CRM provisioning. This is not inbound sync; candidate evidence is invalid.",
8785
8863
  "inputSchema": {
8786
8864
  "type": "object",
8787
8865
  "properties": {
@@ -9015,11 +9093,18 @@ var MCP_TOOL_CATALOG = [
9015
9093
  "type": "string",
9016
9094
  "minLength": 1,
9017
9095
  "maxLength": 255
9096
+ },
9097
+ "idempotencyKey": {
9098
+ "type": "string",
9099
+ "minLength": 8,
9100
+ "maxLength": 160,
9101
+ "description": "Retry key; reuse only for this exact mutation."
9018
9102
  }
9019
9103
  },
9020
9104
  "required": [
9021
9105
  "siteId",
9022
- "destinationId"
9106
+ "destinationId",
9107
+ "idempotencyKey"
9023
9108
  ],
9024
9109
  "$schema": "https://json-schema.org/draft/2020-12/schema"
9025
9110
  },
@@ -9342,8 +9427,8 @@ var MCP_TOOL_CATALOG = [
9342
9427
  {
9343
9428
  "name": "analytics_test_event_definition",
9344
9429
  "category": "analytics",
9345
- "title": "Test Browser Event Definition",
9346
- "description": "Preview a definition against validated hostname, path, trigger, tag, and browser-reported selector-match facts. This never accepts HTML or executes selectors server-side.",
9430
+ "title": "Preview Browser Event Definition",
9431
+ "description": "Preview supplied browser match facts. This is not live event verification: it does not open a site, run selectors, or prove Pixel delivery.",
9347
9432
  "inputSchema": {
9348
9433
  "type": "object",
9349
9434
  "properties": {
@@ -9401,7 +9486,7 @@ var MCP_TOOL_CATALOG = [
9401
9486
  "$schema": "https://json-schema.org/draft/2020-12/schema"
9402
9487
  },
9403
9488
  "annotations": {
9404
- "title": "Test Browser Event Definition",
9489
+ "title": "Preview Browser Event Definition",
9405
9490
  "readOnlyHint": true,
9406
9491
  "destructiveHint": false,
9407
9492
  "idempotentHint": true,
@@ -9892,11 +9977,18 @@ var MCP_TOOL_CATALOG = [
9892
9977
  "enabled": {
9893
9978
  "description": "Replacement enabled state.",
9894
9979
  "type": "boolean"
9980
+ },
9981
+ "idempotencyKey": {
9982
+ "type": "string",
9983
+ "minLength": 8,
9984
+ "maxLength": 160,
9985
+ "description": "Retry key; reuse only for this exact mutation."
9895
9986
  }
9896
9987
  },
9897
9988
  "required": [
9898
9989
  "siteId",
9899
- "definitionId"
9990
+ "definitionId",
9991
+ "idempotencyKey"
9900
9992
  ],
9901
9993
  "$schema": "https://json-schema.org/draft/2020-12/schema"
9902
9994
  },
@@ -9989,7 +10081,7 @@ var MCP_TOOL_CATALOG = [
9989
10081
  "name": "analytics_validate_activation_mapping",
9990
10082
  "category": "analytics",
9991
10083
  "title": "Validate Activation Event Mapping",
9992
- "description": "Validate explicit confirmed-event mappings against an authorized destination. Candidate-assisted events are rejected; this does not enable delivery.",
10084
+ "description": "Validate confirmed-event mappings. This cannot save mappings or enable delivery.",
9993
10085
  "inputSchema": {
9994
10086
  "type": "object",
9995
10087
  "properties": {
@@ -10032,7 +10124,7 @@ var MCP_TOOL_CATALOG = [
10032
10124
  "minLength": 1,
10033
10125
  "maxLength": 160
10034
10126
  },
10035
- "description": "Confirmed X-Ray event to provider event mapping. Candidate-assisted events are ineligible."
10127
+ "description": "Confirmed X-Ray event to provider event mapping."
10036
10128
  }
10037
10129
  },
10038
10130
  "required": [
@@ -17937,7 +18029,7 @@ var MCP_TOOL_CATALOG = [
17937
18029
  "name": "harvest_paa",
17938
18030
  "category": "search",
17939
18031
  "title": "Google PAA + SERP Harvest",
17940
- "description": "Expand one Google People Also Ask SERP into questions, answers, sources, organic results, and entity IDs. This compatibility tool waits; use harvest_paa_start plus harvest_paa_status for long runs. Optional SERP modules require their include flags. Use gl and location for regional context. Costs 400 Credits per harvest plus 10 Credits per question actually returned; unused hold is refunded. After a timeout or unknown response, reuse the same idempotencyKey. Call credits_info for current pricing and balance.",
18032
+ "description": "Expand one Google People Also Ask SERP into questions, answers, every preserved source, AI Overview evidence, ranking URLs, and entity IDs. maxQuestions is a target count, not traversal depth. Results distinguish target_reached, proven frontier_exhausted, interruption, and recovery_exhausted; a failed click or browser timeout is never reported as exhaustion. This compatibility tool waits; use harvest_paa_start plus harvest_paa_status for long runs. Optional SERP modules require their include flags. Use gl and location for regional context. Costs 400 Credits per harvest plus 10 Credits per question actually returned; unused hold is refunded. After a timeout or unknown response, reuse the same idempotencyKey. Call credits_info for current pricing and balance.",
17941
18033
  "inputSchema": {
17942
18034
  "type": "object",
17943
18035
  "properties": {
@@ -25995,7 +26087,7 @@ var MCP_TOOL_CATALOG = [
25995
26087
  "name": "analytics_upsert_crm_outbound_policy",
25996
26088
  "category": "analytics",
25997
26089
  "title": "Configure CRM Outbound Policy",
25998
- "description": "Create or update one immutable-version CRM outbound policy. Policies are disabled unless explicitly enabled, cannot grant visitor consent, and reject candidate identity, raw IP/device signals, and unrestricted journey data.",
26090
+ "description": "Version a CRM outbound policy. It cannot grant consent or send candidate identity, raw IP/device signals, or full journeys.",
25999
26091
  "inputSchema": {
26000
26092
  "type": "object",
26001
26093
  "properties": {
@@ -26207,9 +26299,9 @@ var MCP_TOOL_CATALOG = [
26207
26299
  },
26208
26300
  {
26209
26301
  "name": "harvest_paa_start",
26210
- "category": "other",
26302
+ "category": "search",
26211
26303
  "title": "Start Durable Google PAA Harvest",
26212
- "description": "Start a durable Google People Also Ask harvest and return its job receipt. Use for long work, including 60 questions. Keep one idempotencyKey after a timeout, unknown response, or in-progress reply; replaying it recovers the existing job without a duplicate charge. Poll jobId with harvest_paa_status. Costs 400 Credits plus 10 per retained question; unused hold is refunded.",
26304
+ "description": "Start a durable Google People Also Ask harvest and return its job receipt. maxQuestions is the requested target count. The job automatically resumes an interrupted serverless worker under the same jobId, idempotency key, and billing hold while preserving checkpoints. Keep one idempotencyKey after a timeout, unknown response, or in-progress reply; replaying it recovers the existing job without a duplicate charge. Poll jobId with harvest_paa_status. Costs 400 Credits plus 10 per retained question; unused hold is refunded.",
26213
26305
  "inputSchema": {
26214
26306
  "type": "object",
26215
26307
  "properties": {
@@ -26308,9 +26400,9 @@ var MCP_TOOL_CATALOG = [
26308
26400
  },
26309
26401
  {
26310
26402
  "name": "harvest_paa_status",
26311
- "category": "other",
26403
+ "category": "search",
26312
26404
  "title": "Check Durable Google PAA Harvest",
26313
- "description": "Poll an owner-scoped harvest_paa_start job. Returns state, saved progress, completeness, attempts, terminal rows, and billing. Polling never starts or bills another run.",
26405
+ "description": "Poll an owner-scoped harvest_paa_start job. Returns state, saved progress, automatic-recovery count, target status, discovery status, material completeness, attempts, terminal rows, and billing. frontier_exhausted means every observed eligible PAA control was processed plus three healthy no-growth confirmations; interruption never means exhaustion. Polling never starts or bills another run.",
26314
26406
  "inputSchema": {
26315
26407
  "type": "object",
26316
26408
  "properties": {
@@ -26383,6 +26475,605 @@ var MCP_TOOL_CATALOG = [
26383
26475
  "idempotentHint": true,
26384
26476
  "openWorldHint": false
26385
26477
  }
26478
+ },
26479
+ {
26480
+ "name": "analytics_commit_crm_import",
26481
+ "category": "analytics",
26482
+ "title": "Commit CRM CSV Import",
26483
+ "description": "Commit the exact preview fingerprint with a caller retry key.",
26484
+ "inputSchema": {
26485
+ "type": "object",
26486
+ "properties": {
26487
+ "siteId": {
26488
+ "type": "string",
26489
+ "format": "uuid",
26490
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
26491
+ "description": "Analytics Site id returned by analytics_list_sites."
26492
+ },
26493
+ "sourceSystem": {
26494
+ "type": "string",
26495
+ "enum": [
26496
+ "hubspot",
26497
+ "salesforce",
26498
+ "gohighlevel",
26499
+ "zoho",
26500
+ "pipedrive",
26501
+ "keap",
26502
+ "other"
26503
+ ],
26504
+ "description": "CRM system represented by the uploaded CSV."
26505
+ },
26506
+ "filename": {
26507
+ "type": "string",
26508
+ "minLength": 1,
26509
+ "maxLength": 240,
26510
+ "description": "Original CSV filename retained for the import receipt; this is not a local path."
26511
+ },
26512
+ "csv": {
26513
+ "type": "string",
26514
+ "minLength": 1,
26515
+ "maxLength": 8e6,
26516
+ "description": "Complete bounded CSV text to validate and stage; do not pass a local filesystem path."
26517
+ },
26518
+ "mapping": {
26519
+ "type": "object",
26520
+ "propertyNames": {
26521
+ "type": "string",
26522
+ "enum": [
26523
+ "email",
26524
+ "firstName",
26525
+ "lastName",
26526
+ "name",
26527
+ "phone",
26528
+ "company",
26529
+ "externalId",
26530
+ "stage",
26531
+ "outcome",
26532
+ "occurredAt",
26533
+ "value",
26534
+ "currency",
26535
+ "gclid",
26536
+ "gbraid",
26537
+ "wbraid",
26538
+ "fbclid"
26539
+ ]
26540
+ },
26541
+ "additionalProperties": {
26542
+ "type": "string",
26543
+ "minLength": 1,
26544
+ "maxLength": 240
26545
+ },
26546
+ "required": [
26547
+ "email",
26548
+ "firstName",
26549
+ "lastName",
26550
+ "name",
26551
+ "phone",
26552
+ "company",
26553
+ "externalId",
26554
+ "stage",
26555
+ "outcome",
26556
+ "occurredAt",
26557
+ "value",
26558
+ "currency",
26559
+ "gclid",
26560
+ "gbraid",
26561
+ "wbraid",
26562
+ "fbclid"
26563
+ ],
26564
+ "description": "CSV-column mapping used to identify and protect supported CRM fields."
26565
+ },
26566
+ "previewFingerprint": {
26567
+ "type": "string",
26568
+ "pattern": "^[a-f0-9]{64}$",
26569
+ "description": "Exact SHA-256 fingerprint returned by analytics_preview_crm_import."
26570
+ },
26571
+ "idempotencyKey": {
26572
+ "type": "string",
26573
+ "minLength": 8,
26574
+ "maxLength": 160,
26575
+ "description": "Retry key; reuse only for this exact mutation."
26576
+ }
26577
+ },
26578
+ "required": [
26579
+ "siteId",
26580
+ "sourceSystem",
26581
+ "filename",
26582
+ "csv",
26583
+ "mapping",
26584
+ "previewFingerprint",
26585
+ "idempotencyKey"
26586
+ ],
26587
+ "$schema": "https://json-schema.org/draft/2020-12/schema"
26588
+ },
26589
+ "annotations": {
26590
+ "title": "Commit CRM CSV Import",
26591
+ "readOnlyHint": false,
26592
+ "destructiveHint": false,
26593
+ "idempotentHint": true,
26594
+ "openWorldHint": false
26595
+ }
26596
+ },
26597
+ {
26598
+ "name": "analytics_export_crm_csv",
26599
+ "category": "analytics",
26600
+ "title": "Export CRM CSV",
26601
+ "description": "Create a governed CRM CSV; advertising fields require purpose acknowledgement.",
26602
+ "inputSchema": {
26603
+ "type": "object",
26604
+ "properties": {
26605
+ "siteId": {
26606
+ "type": "string",
26607
+ "format": "uuid",
26608
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
26609
+ "description": "Analytics Site id returned by analytics_list_sites."
26610
+ },
26611
+ "fields": {
26612
+ "description": "Ordered form-field definitions to render and validate for submissions.",
26613
+ "minItems": 1,
26614
+ "maxItems": 16,
26615
+ "type": "array",
26616
+ "items": {
26617
+ "type": "string",
26618
+ "enum": [
26619
+ "person_id",
26620
+ "crm_person_ref",
26621
+ "journey_url",
26622
+ "first_seen_at",
26623
+ "last_seen_at",
26624
+ "signal_count",
26625
+ "form_submission_count",
26626
+ "conversion_count",
26627
+ "revenue_minor",
26628
+ "currency",
26629
+ "stage",
26630
+ "outcome",
26631
+ "gclid",
26632
+ "gbraid",
26633
+ "wbraid",
26634
+ "fbclid"
26635
+ ]
26636
+ }
26637
+ },
26638
+ "acknowledgedPurpose": {
26639
+ "description": "Explicit governed purpose acknowledgement required for advertising identifiers or activation exports.",
26640
+ "type": "string",
26641
+ "enum": [
26642
+ "business_operations",
26643
+ "advertising_measurement"
26644
+ ]
26645
+ },
26646
+ "idempotencyKey": {
26647
+ "type": "string",
26648
+ "minLength": 8,
26649
+ "maxLength": 160,
26650
+ "description": "Retry key; reuse only for this exact mutation."
26651
+ }
26652
+ },
26653
+ "required": [
26654
+ "siteId",
26655
+ "idempotencyKey"
26656
+ ],
26657
+ "$schema": "https://json-schema.org/draft/2020-12/schema"
26658
+ },
26659
+ "annotations": {
26660
+ "title": "Export CRM CSV",
26661
+ "readOnlyHint": true,
26662
+ "destructiveHint": false,
26663
+ "idempotentHint": true,
26664
+ "openWorldHint": false
26665
+ }
26666
+ },
26667
+ {
26668
+ "name": "analytics_export_google_ads_csv",
26669
+ "category": "analytics",
26670
+ "title": "Export Google Ads CSV",
26671
+ "description": "Create a consent-gated native offline-conversion upload CSV.",
26672
+ "inputSchema": {
26673
+ "type": "object",
26674
+ "properties": {
26675
+ "siteId": {
26676
+ "type": "string",
26677
+ "format": "uuid",
26678
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
26679
+ "description": "Analytics Site id returned by analytics_list_sites."
26680
+ },
26681
+ "acknowledgedPurpose": {
26682
+ "type": "string",
26683
+ "const": "advertising_measurement",
26684
+ "description": "Explicit governed purpose acknowledgement required for advertising identifiers or activation exports."
26685
+ },
26686
+ "idempotencyKey": {
26687
+ "type": "string",
26688
+ "minLength": 8,
26689
+ "maxLength": 160,
26690
+ "description": "Retry key; reuse only for this exact mutation."
26691
+ }
26692
+ },
26693
+ "required": [
26694
+ "siteId",
26695
+ "acknowledgedPurpose",
26696
+ "idempotencyKey"
26697
+ ],
26698
+ "$schema": "https://json-schema.org/draft/2020-12/schema"
26699
+ },
26700
+ "annotations": {
26701
+ "title": "Export Google Ads CSV",
26702
+ "readOnlyHint": true,
26703
+ "destructiveHint": false,
26704
+ "idempotentHint": true,
26705
+ "openWorldHint": false
26706
+ }
26707
+ },
26708
+ {
26709
+ "name": "analytics_export_meta_technical",
26710
+ "category": "analytics",
26711
+ "title": "Export Meta Technical JSONL",
26712
+ "description": "Create a consent-gated technical JSONL relay artifact; Meta does not accept it as a native upload.",
26713
+ "inputSchema": {
26714
+ "type": "object",
26715
+ "properties": {
26716
+ "siteId": {
26717
+ "type": "string",
26718
+ "format": "uuid",
26719
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
26720
+ "description": "Analytics Site id returned by analytics_list_sites."
26721
+ },
26722
+ "acknowledgedPurpose": {
26723
+ "type": "string",
26724
+ "const": "advertising_measurement",
26725
+ "description": "Explicit governed purpose acknowledgement required for advertising identifiers or activation exports."
26726
+ },
26727
+ "idempotencyKey": {
26728
+ "type": "string",
26729
+ "minLength": 8,
26730
+ "maxLength": 160,
26731
+ "description": "Retry key; reuse only for this exact mutation."
26732
+ }
26733
+ },
26734
+ "required": [
26735
+ "siteId",
26736
+ "acknowledgedPurpose",
26737
+ "idempotencyKey"
26738
+ ],
26739
+ "$schema": "https://json-schema.org/draft/2020-12/schema"
26740
+ },
26741
+ "annotations": {
26742
+ "title": "Export Meta Technical JSONL",
26743
+ "readOnlyHint": true,
26744
+ "destructiveHint": false,
26745
+ "idempotentHint": true,
26746
+ "openWorldHint": false
26747
+ }
26748
+ },
26749
+ {
26750
+ "name": "analytics_preview_crm_import",
26751
+ "category": "analytics",
26752
+ "title": "Preview CRM CSV Import",
26753
+ "description": "Validate mappings and return bounded row/error counts without importing.",
26754
+ "inputSchema": {
26755
+ "type": "object",
26756
+ "properties": {
26757
+ "siteId": {
26758
+ "type": "string",
26759
+ "format": "uuid",
26760
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
26761
+ "description": "Analytics Site id returned by analytics_list_sites."
26762
+ },
26763
+ "sourceSystem": {
26764
+ "type": "string",
26765
+ "enum": [
26766
+ "hubspot",
26767
+ "salesforce",
26768
+ "gohighlevel",
26769
+ "zoho",
26770
+ "pipedrive",
26771
+ "keap",
26772
+ "other"
26773
+ ],
26774
+ "description": "CRM system represented by the uploaded CSV."
26775
+ },
26776
+ "filename": {
26777
+ "type": "string",
26778
+ "minLength": 1,
26779
+ "maxLength": 240,
26780
+ "description": "Original CSV filename retained for the import receipt; this is not a local path."
26781
+ },
26782
+ "csv": {
26783
+ "type": "string",
26784
+ "minLength": 1,
26785
+ "maxLength": 8e6,
26786
+ "description": "Complete bounded CSV text to validate and stage; do not pass a local filesystem path."
26787
+ },
26788
+ "mapping": {
26789
+ "type": "object",
26790
+ "propertyNames": {
26791
+ "type": "string",
26792
+ "enum": [
26793
+ "email",
26794
+ "firstName",
26795
+ "lastName",
26796
+ "name",
26797
+ "phone",
26798
+ "company",
26799
+ "externalId",
26800
+ "stage",
26801
+ "outcome",
26802
+ "occurredAt",
26803
+ "value",
26804
+ "currency",
26805
+ "gclid",
26806
+ "gbraid",
26807
+ "wbraid",
26808
+ "fbclid"
26809
+ ]
26810
+ },
26811
+ "additionalProperties": {
26812
+ "type": "string",
26813
+ "minLength": 1,
26814
+ "maxLength": 240
26815
+ },
26816
+ "required": [
26817
+ "email",
26818
+ "firstName",
26819
+ "lastName",
26820
+ "name",
26821
+ "phone",
26822
+ "company",
26823
+ "externalId",
26824
+ "stage",
26825
+ "outcome",
26826
+ "occurredAt",
26827
+ "value",
26828
+ "currency",
26829
+ "gclid",
26830
+ "gbraid",
26831
+ "wbraid",
26832
+ "fbclid"
26833
+ ],
26834
+ "description": "CSV-column mapping used to identify and protect supported CRM fields."
26835
+ }
26836
+ },
26837
+ "required": [
26838
+ "siteId",
26839
+ "sourceSystem",
26840
+ "filename",
26841
+ "csv",
26842
+ "mapping"
26843
+ ],
26844
+ "$schema": "https://json-schema.org/draft/2020-12/schema"
26845
+ },
26846
+ "annotations": {
26847
+ "title": "Preview CRM CSV Import",
26848
+ "readOnlyHint": true,
26849
+ "destructiveHint": false,
26850
+ "idempotentHint": true,
26851
+ "openWorldHint": false
26852
+ }
26853
+ },
26854
+ {
26855
+ "name": "analytics_save_activation_mapping",
26856
+ "category": "analytics",
26857
+ "title": "Save Activation Event Mapping",
26858
+ "description": "Save a typed confirmed-event mapping on an existing destination without enabling delivery.",
26859
+ "inputSchema": {
26860
+ "type": "object",
26861
+ "properties": {
26862
+ "siteId": {
26863
+ "type": "string",
26864
+ "format": "uuid",
26865
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
26866
+ "description": "Analytics Site id returned by analytics_list_sites."
26867
+ },
26868
+ "destinationId": {
26869
+ "type": "string",
26870
+ "format": "uuid",
26871
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
26872
+ "description": "Activation destination identifier returned by analytics_list_activation_destinations."
26873
+ },
26874
+ "journeyTier": {
26875
+ "default": "confirmed",
26876
+ "description": "Confirmed, best-guess, or separately returned combined journey projection.",
26877
+ "type": "string",
26878
+ "const": "confirmed"
26879
+ },
26880
+ "eventMapping": {
26881
+ "type": "object",
26882
+ "properties": {
26883
+ "schemaVersion": {
26884
+ "type": "number",
26885
+ "const": 1,
26886
+ "description": "Canonical X-Ray event schema version; use version 1."
26887
+ },
26888
+ "mappings": {
26889
+ "maxItems": 200,
26890
+ "type": "array",
26891
+ "items": {
26892
+ "type": "object",
26893
+ "properties": {
26894
+ "source": {
26895
+ "type": "string",
26896
+ "minLength": 1,
26897
+ "maxLength": 160,
26898
+ "description": "Optional source or provenance constraint appropriate to this tool; omit when no source restriction is intended."
26899
+ },
26900
+ "providerEvent": {
26901
+ "type": "string",
26902
+ "minLength": 1,
26903
+ "maxLength": 160,
26904
+ "description": "Exact provider event or conversion-action name receiving the confirmed X-Ray event."
26905
+ },
26906
+ "enabled": {
26907
+ "type": "boolean",
26908
+ "description": "Whether the new rule should begin evaluating events immediately."
26909
+ },
26910
+ "role": {
26911
+ "type": "string",
26912
+ "enum": [
26913
+ "primary",
26914
+ "observation"
26915
+ ],
26916
+ "description": "Primary conversion or supporting observation role for this enabled mapping."
26917
+ },
26918
+ "valueMode": {
26919
+ "type": "string",
26920
+ "enum": [
26921
+ "none",
26922
+ "event",
26923
+ "fixed"
26924
+ ],
26925
+ "description": "Whether the provider event receives no value, the confirmed event value, or a fixed configured value."
26926
+ },
26927
+ "fixedValue": {
26928
+ "description": "Non-negative fixed major-unit value used only when valueMode is fixed.",
26929
+ "type": "number",
26930
+ "minimum": 0,
26931
+ "maximum": 1e9
26932
+ },
26933
+ "currency": {
26934
+ "description": "Three-letter ISO currency code for the event value.",
26935
+ "type": "string",
26936
+ "minLength": 3,
26937
+ "maxLength": 3
26938
+ }
26939
+ },
26940
+ "required": [
26941
+ "source",
26942
+ "providerEvent",
26943
+ "enabled",
26944
+ "role",
26945
+ "valueMode"
26946
+ ],
26947
+ "additionalProperties": false
26948
+ },
26949
+ "description": "Bounded typed event-mapping rows for this activation destination."
26950
+ }
26951
+ },
26952
+ "required": [
26953
+ "schemaVersion",
26954
+ "mappings"
26955
+ ],
26956
+ "additionalProperties": false,
26957
+ "description": "Typed confirmed-event mapping; enabled rows require exactly one primary event."
26958
+ },
26959
+ "idempotencyKey": {
26960
+ "type": "string",
26961
+ "minLength": 8,
26962
+ "maxLength": 160,
26963
+ "description": "Retry key; reuse only for this exact mutation."
26964
+ }
26965
+ },
26966
+ "required": [
26967
+ "siteId",
26968
+ "destinationId",
26969
+ "eventMapping",
26970
+ "idempotencyKey"
26971
+ ],
26972
+ "$schema": "https://json-schema.org/draft/2020-12/schema"
26973
+ },
26974
+ "annotations": {
26975
+ "title": "Save Activation Event Mapping",
26976
+ "readOnlyHint": false,
26977
+ "destructiveHint": false,
26978
+ "idempotentHint": true,
26979
+ "openWorldHint": false
26980
+ }
26981
+ },
26982
+ {
26983
+ "name": "analytics_set_activation_automation",
26984
+ "category": "analytics",
26985
+ "title": "Set Activation Automation",
26986
+ "description": "Explicitly enable or disable automatic delivery; enablement requires verified readiness.",
26987
+ "inputSchema": {
26988
+ "type": "object",
26989
+ "properties": {
26990
+ "siteId": {
26991
+ "type": "string",
26992
+ "format": "uuid",
26993
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
26994
+ "description": "Analytics Site id returned by analytics_list_sites."
26995
+ },
26996
+ "destinationId": {
26997
+ "type": "string",
26998
+ "format": "uuid",
26999
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
27000
+ "description": "Activation destination identifier returned by analytics_list_activation_destinations."
27001
+ },
27002
+ "enabled": {
27003
+ "type": "boolean",
27004
+ "description": "Explicitly enable or disable automatic delivery. Enabling requires a verified destination."
27005
+ },
27006
+ "idempotencyKey": {
27007
+ "type": "string",
27008
+ "minLength": 8,
27009
+ "maxLength": 160,
27010
+ "description": "Retry key; reuse only for this exact mutation."
27011
+ }
27012
+ },
27013
+ "required": [
27014
+ "siteId",
27015
+ "destinationId",
27016
+ "enabled",
27017
+ "idempotencyKey"
27018
+ ],
27019
+ "$schema": "https://json-schema.org/draft/2020-12/schema"
27020
+ },
27021
+ "annotations": {
27022
+ "title": "Set Activation Automation",
27023
+ "readOnlyHint": false,
27024
+ "destructiveHint": false,
27025
+ "idempotentHint": true,
27026
+ "openWorldHint": false
27027
+ }
27028
+ },
27029
+ {
27030
+ "name": "analytics_verify_live_event_definition",
27031
+ "category": "analytics",
27032
+ "title": "Verify Live Browser Event",
27033
+ "description": "Wait briefly for a persisted event matching this definition; returns observed or not observed.",
27034
+ "inputSchema": {
27035
+ "type": "object",
27036
+ "properties": {
27037
+ "siteId": {
27038
+ "type": "string",
27039
+ "format": "uuid",
27040
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
27041
+ "description": "Analytics Site id returned by analytics_list_sites."
27042
+ },
27043
+ "definitionId": {
27044
+ "type": "string",
27045
+ "format": "uuid",
27046
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
27047
+ "description": "Browser event-definition identifier returned by analytics_list_event_definitions."
27048
+ },
27049
+ "timeoutMs": {
27050
+ "default": 0,
27051
+ "description": "Bounded wait for a newly persisted matching event.",
27052
+ "type": "integer",
27053
+ "minimum": 0,
27054
+ "maximum": 15e3
27055
+ },
27056
+ "maxAgeSeconds": {
27057
+ "default": 300,
27058
+ "description": "Maximum accepted age of the persisted matching event.",
27059
+ "type": "integer",
27060
+ "minimum": 1,
27061
+ "maximum": 86400
27062
+ }
27063
+ },
27064
+ "required": [
27065
+ "siteId",
27066
+ "definitionId"
27067
+ ],
27068
+ "$schema": "https://json-schema.org/draft/2020-12/schema"
27069
+ },
27070
+ "annotations": {
27071
+ "title": "Verify Live Browser Event",
27072
+ "readOnlyHint": true,
27073
+ "destructiveHint": false,
27074
+ "idempotentHint": true,
27075
+ "openWorldHint": false
27076
+ }
26386
27077
  }
26387
27078
  ];
26388
27079
  var MCP_TOOL_NAMES = MCP_TOOL_CATALOG.map((tool) => tool.name);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mcpscraper-cli",
3
- "version": "0.32.0",
3
+ "version": "0.33.0",
4
4
  "description": "Command-line interface for mcpscraper.dev and memory.mcpscraper.dev",
5
5
  "license": "MIT",
6
6
  "type": "module",