@besales/mcp 0.33.0 → 0.37.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 +45 -12
- package/dist/http/api-client.d.ts +2 -0
- package/dist/http/api-client.js +55 -0
- package/dist/http/api-client.js.map +1 -1
- package/dist/schemas/mcp-tools.json +965 -30
- package/dist/tools/definitions/broadcast-analytics.d.ts +28 -7
- package/dist/tools/definitions/broadcast-analytics.js +399 -33
- package/dist/tools/definitions/broadcast-analytics.js.map +1 -1
- package/dist/tools/definitions/broadcast-mailing-variants.d.ts +19 -0
- package/dist/tools/definitions/broadcast-mailing-variants.js +107 -0
- package/dist/tools/definitions/broadcast-mailing-variants.js.map +1 -0
- package/dist/tools/definitions/getcourse-wave.d.ts +147 -0
- package/dist/tools/definitions/getcourse-wave.js +505 -0
- package/dist/tools/definitions/getcourse-wave.js.map +1 -0
- package/dist/tools/definitions/platform-setup.d.ts +73 -8
- package/dist/tools/definitions/platform-setup.js +106 -504
- package/dist/tools/definitions/platform-setup.js.map +1 -1
- package/dist/tools/definitions/scheduled-tasks.d.ts +4 -0
- package/dist/tools/definitions/scheduled-tasks.js +14 -2
- package/dist/tools/definitions/scheduled-tasks.js.map +1 -1
- package/dist/tools/definitions/session.js +6 -4
- package/dist/tools/definitions/session.js.map +1 -1
- package/dist/tools/definitions/shared.d.ts +53 -0
- package/dist/tools/definitions/shared.js +71 -0
- package/dist/tools/definitions/shared.js.map +1 -1
- package/dist/tools/definitions.d.ts +121 -15
- package/dist/tools/definitions.js +2 -0
- package/dist/tools/definitions.js.map +1 -1
- package/dist/tools/registry-mapping-cases-core.d.ts +34 -0
- package/dist/tools/registry-mapping-cases-core.js +700 -0
- package/dist/tools/registry-mapping-cases-core.js.map +1 -0
- package/dist/tools/registry-mapping-cases-platform.d.ts +2 -0
- package/dist/tools/registry-mapping-cases-platform.js +910 -0
- package/dist/tools/registry-mapping-cases-platform.js.map +1 -0
- package/dist/tools/registry.js +12 -6
- package/dist/tools/registry.js.map +1 -1
- package/package.json +1 -1
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"title": "besales-mcp Tool Definitions",
|
|
4
4
|
"version": "1.2.0-draft",
|
|
5
|
-
"lastUpdated": "2026-07-
|
|
5
|
+
"lastUpdated": "2026-07-28",
|
|
6
6
|
"description": "MCP tool schemas для besales-mcp npm package. Active v1.5 set содержит PromptHub/ICP/Sandbox/Knowledge external-execution operations и stateless Platform Setup Bridge direct tools. Setup Pipeline session tools сохранены как Phase 4+ future design, но не входят в active toolset.",
|
|
7
7
|
"executionModes": {
|
|
8
8
|
"summary": "Каждая active LLM-операция имеет 2 MCP tools: get_instructions + submit. Claude локально между tools выполняет LLM-вызовы своими моделями. Auto-detection через JWT scope mcp:* → external default.",
|
|
@@ -1266,6 +1266,11 @@
|
|
|
1266
1266
|
"description": "Launch a GetCourse outbound wave (Step 1 import contacts + pin deals -> Step 2 send). Default launch_type=status. WITHOUT confirm=true it is a DRY-RUN and sends nothing. funnel is the canonical business-funnel key/name, never a batch/resend label; cohort_label names the concrete launch. product_code binds that funnel to the analytics product dictionary; product_name is its display name. contacts[].segment_entered_at is the exact segment-entry time; lead_last_active_at is legacy last activity only. Returns waveJobId — poll besales_getcourse_wave_status until COMPLETED. Scope: mcp:platform-setup.",
|
|
1267
1267
|
"inputSchema": {
|
|
1268
1268
|
"type": "object",
|
|
1269
|
+
"dependentRequired": {
|
|
1270
|
+
"segment_description": [
|
|
1271
|
+
"segment"
|
|
1272
|
+
]
|
|
1273
|
+
},
|
|
1269
1274
|
"required": [
|
|
1270
1275
|
"platform_id",
|
|
1271
1276
|
"crm_id",
|
|
@@ -1315,11 +1320,21 @@
|
|
|
1315
1320
|
"maxLength": 200,
|
|
1316
1321
|
"description": "Wave segment label (analytics)."
|
|
1317
1322
|
},
|
|
1323
|
+
"segment_description": {
|
|
1324
|
+
"type": "string",
|
|
1325
|
+
"maxLength": 4000,
|
|
1326
|
+
"description": "Explicit business rule for segment selection. Requires segment; creates or updates its saved description."
|
|
1327
|
+
},
|
|
1318
1328
|
"cohort_label": {
|
|
1319
1329
|
"type": "string",
|
|
1320
1330
|
"maxLength": 200,
|
|
1321
1331
|
"description": "Человекочитаемое имя конкретного запуска волны; не подменяет каноническую бизнес-воронку."
|
|
1322
1332
|
},
|
|
1333
|
+
"mailing_variant_id": {
|
|
1334
|
+
"type": "string",
|
|
1335
|
+
"format": "uuid",
|
|
1336
|
+
"description": "ID активного именованного варианта рассылки для сравнительной аналитики."
|
|
1337
|
+
},
|
|
1323
1338
|
"message_variant": {
|
|
1324
1339
|
"type": "string",
|
|
1325
1340
|
"maxLength": 120,
|
|
@@ -1385,6 +1400,27 @@
|
|
|
1385
1400
|
"type": "string",
|
|
1386
1401
|
"description": "Optional GetCourse dialog id (resp_id) — needed for board-mode welcome."
|
|
1387
1402
|
},
|
|
1403
|
+
"email": {
|
|
1404
|
+
"type": "string",
|
|
1405
|
+
"format": "email",
|
|
1406
|
+
"maxLength": 320,
|
|
1407
|
+
"description": "Optional contact email from the source audience."
|
|
1408
|
+
},
|
|
1409
|
+
"phone": {
|
|
1410
|
+
"type": "string",
|
|
1411
|
+
"maxLength": 64,
|
|
1412
|
+
"description": "Optional contact phone from the source audience."
|
|
1413
|
+
},
|
|
1414
|
+
"first_name": {
|
|
1415
|
+
"type": "string",
|
|
1416
|
+
"maxLength": 200,
|
|
1417
|
+
"description": "Optional contact first name from the source audience."
|
|
1418
|
+
},
|
|
1419
|
+
"last_name": {
|
|
1420
|
+
"type": "string",
|
|
1421
|
+
"maxLength": 200,
|
|
1422
|
+
"description": "Optional contact last name from the source audience."
|
|
1423
|
+
},
|
|
1388
1424
|
"lead_last_active_at": {
|
|
1389
1425
|
"type": "string",
|
|
1390
1426
|
"format": "date-time",
|
|
@@ -1492,9 +1528,14 @@
|
|
|
1492
1528
|
},
|
|
1493
1529
|
{
|
|
1494
1530
|
"name": "besales_getcourse_wave_run_start",
|
|
1495
|
-
"description": "Start a durable GetCourse status-mode wave run for up to 5000 contacts. The run chunks the cohort, waits for the import lock, processes chunks sequentially and survives service restarts; poll one run via besales_getcourse_wave_run_status instead of building waves manually. WITHOUT confirm=true this is a DRY-RUN and no run is created. A real run requires
|
|
1531
|
+
"description": "Start a durable GetCourse status-mode wave run for up to 5000 contacts. The run chunks the cohort, waits for the import lock, processes chunks sequentially and survives service restarts; poll one run via besales_getcourse_wave_run_status instead of building waves manually. WITHOUT confirm=true this is a DRY-RUN and no run is created. A real run requires confirm=true, explicit_confirmation=true, a stable launch_key and dry_run_hash from the latest dry-run. Reuse the same launch_key for retries of one intent. Only launch_type=status is supported; use besales_getcourse_wave_import for board/group. Scope: mcp:platform-setup.",
|
|
1496
1532
|
"inputSchema": {
|
|
1497
1533
|
"type": "object",
|
|
1534
|
+
"dependentRequired": {
|
|
1535
|
+
"segment_description": [
|
|
1536
|
+
"segment"
|
|
1537
|
+
]
|
|
1538
|
+
},
|
|
1498
1539
|
"required": [
|
|
1499
1540
|
"platform_id",
|
|
1500
1541
|
"crm_id",
|
|
@@ -1517,6 +1558,16 @@
|
|
|
1517
1558
|
"format": "uuid",
|
|
1518
1559
|
"description": "GetCourse CRM uuid."
|
|
1519
1560
|
},
|
|
1561
|
+
"launch_key": {
|
|
1562
|
+
"type": "string",
|
|
1563
|
+
"format": "uuid",
|
|
1564
|
+
"description": "Stable UUID for one launch intent. Required when confirm=true; reuse it for HTTP/network retries."
|
|
1565
|
+
},
|
|
1566
|
+
"dry_run_hash": {
|
|
1567
|
+
"type": "string",
|
|
1568
|
+
"pattern": "^[0-9a-f]{64}$",
|
|
1569
|
+
"description": "Hash returned by the latest dry-run. Required when confirm=true."
|
|
1570
|
+
},
|
|
1520
1571
|
"launch_type": {
|
|
1521
1572
|
"type": "string",
|
|
1522
1573
|
"enum": [
|
|
@@ -1542,11 +1593,21 @@
|
|
|
1542
1593
|
"maxLength": 200,
|
|
1543
1594
|
"description": "Wave segment label for analytics."
|
|
1544
1595
|
},
|
|
1596
|
+
"segment_description": {
|
|
1597
|
+
"type": "string",
|
|
1598
|
+
"maxLength": 4000,
|
|
1599
|
+
"description": "Explicit business rule for segment selection. Requires segment; creates or updates its saved description."
|
|
1600
|
+
},
|
|
1545
1601
|
"cohort_label": {
|
|
1546
1602
|
"type": "string",
|
|
1547
1603
|
"maxLength": 200,
|
|
1548
1604
|
"description": "Human-readable name of this concrete run."
|
|
1549
1605
|
},
|
|
1606
|
+
"mailing_variant_id": {
|
|
1607
|
+
"type": "string",
|
|
1608
|
+
"format": "uuid",
|
|
1609
|
+
"description": "ID of an active named mailing variant for comparative analytics."
|
|
1610
|
+
},
|
|
1550
1611
|
"message_variant": {
|
|
1551
1612
|
"type": "string",
|
|
1552
1613
|
"maxLength": 120,
|
|
@@ -1579,7 +1640,7 @@
|
|
|
1579
1640
|
"null"
|
|
1580
1641
|
]
|
|
1581
1642
|
},
|
|
1582
|
-
"description": "
|
|
1643
|
+
"description": "Optional manual override: { \"<numeric fieldId>\": value }. Saved platform field bindings are used when omitted."
|
|
1583
1644
|
},
|
|
1584
1645
|
"contacts": {
|
|
1585
1646
|
"type": "array",
|
|
@@ -1608,6 +1669,27 @@
|
|
|
1608
1669
|
"type": "string",
|
|
1609
1670
|
"description": "Optional GetCourse dialog id (resp_id)."
|
|
1610
1671
|
},
|
|
1672
|
+
"email": {
|
|
1673
|
+
"type": "string",
|
|
1674
|
+
"format": "email",
|
|
1675
|
+
"maxLength": 320,
|
|
1676
|
+
"description": "Optional contact email from the source audience."
|
|
1677
|
+
},
|
|
1678
|
+
"phone": {
|
|
1679
|
+
"type": "string",
|
|
1680
|
+
"maxLength": 64,
|
|
1681
|
+
"description": "Optional contact phone from the source audience."
|
|
1682
|
+
},
|
|
1683
|
+
"first_name": {
|
|
1684
|
+
"type": "string",
|
|
1685
|
+
"maxLength": 200,
|
|
1686
|
+
"description": "Optional contact first name from the source audience."
|
|
1687
|
+
},
|
|
1688
|
+
"last_name": {
|
|
1689
|
+
"type": "string",
|
|
1690
|
+
"maxLength": 200,
|
|
1691
|
+
"description": "Optional contact last name from the source audience."
|
|
1692
|
+
},
|
|
1611
1693
|
"lead_last_active_at": {
|
|
1612
1694
|
"type": "string",
|
|
1613
1695
|
"format": "date-time",
|
|
@@ -1624,7 +1706,7 @@
|
|
|
1624
1706
|
},
|
|
1625
1707
|
"confirm": {
|
|
1626
1708
|
"type": "boolean",
|
|
1627
|
-
"description": "Without true the call is a DRY-RUN
|
|
1709
|
+
"description": "Without true the call is a DRY-RUN. true also requires launch_key, dry_run_hash and explicit_confirmation=true."
|
|
1628
1710
|
},
|
|
1629
1711
|
"check_messenger_presence": {
|
|
1630
1712
|
"type": "boolean",
|
|
@@ -1691,7 +1773,7 @@
|
|
|
1691
1773
|
"enum": [
|
|
1692
1774
|
true
|
|
1693
1775
|
],
|
|
1694
|
-
"description": "Required
|
|
1776
|
+
"description": "Required with confirm=true together with launch_key and dry_run_hash. MCP-only safety gate; not sent to the backend."
|
|
1695
1777
|
},
|
|
1696
1778
|
"confirmation_reason": {
|
|
1697
1779
|
"type": "string",
|
|
@@ -1832,19 +1914,23 @@
|
|
|
1832
1914
|
"description": "Sequential status-mode segments. At most 2000 contacts per segment and 5000 contacts across the whole batch.",
|
|
1833
1915
|
"items": {
|
|
1834
1916
|
"type": "object",
|
|
1917
|
+
"dependentRequired": {
|
|
1918
|
+
"segment_description": [
|
|
1919
|
+
"segment"
|
|
1920
|
+
]
|
|
1921
|
+
},
|
|
1835
1922
|
"required": [
|
|
1836
|
-
"mode",
|
|
1837
1923
|
"contacts",
|
|
1838
1924
|
"channels",
|
|
1839
1925
|
"deal_fields"
|
|
1840
1926
|
],
|
|
1841
1927
|
"properties": {
|
|
1842
|
-
"
|
|
1928
|
+
"launch_type": {
|
|
1843
1929
|
"type": "string",
|
|
1844
1930
|
"enum": [
|
|
1845
1931
|
"status"
|
|
1846
1932
|
],
|
|
1847
|
-
"description": "Only status mode is supported."
|
|
1933
|
+
"description": "Only status mode is supported. Optional: the server defaults to status."
|
|
1848
1934
|
},
|
|
1849
1935
|
"contacts": {
|
|
1850
1936
|
"type": "array",
|
|
@@ -1873,6 +1959,27 @@
|
|
|
1873
1959
|
"type": "string",
|
|
1874
1960
|
"description": "Optional GetCourse dialog id (resp_id)."
|
|
1875
1961
|
},
|
|
1962
|
+
"email": {
|
|
1963
|
+
"type": "string",
|
|
1964
|
+
"format": "email",
|
|
1965
|
+
"maxLength": 320,
|
|
1966
|
+
"description": "Optional contact email from the source audience."
|
|
1967
|
+
},
|
|
1968
|
+
"phone": {
|
|
1969
|
+
"type": "string",
|
|
1970
|
+
"maxLength": 64,
|
|
1971
|
+
"description": "Optional contact phone from the source audience."
|
|
1972
|
+
},
|
|
1973
|
+
"first_name": {
|
|
1974
|
+
"type": "string",
|
|
1975
|
+
"maxLength": 200,
|
|
1976
|
+
"description": "Optional contact first name from the source audience."
|
|
1977
|
+
},
|
|
1978
|
+
"last_name": {
|
|
1979
|
+
"type": "string",
|
|
1980
|
+
"maxLength": 200,
|
|
1981
|
+
"description": "Optional contact last name from the source audience."
|
|
1982
|
+
},
|
|
1876
1983
|
"lead_last_active_at": {
|
|
1877
1984
|
"type": "string",
|
|
1878
1985
|
"format": "date-time",
|
|
@@ -1917,11 +2024,21 @@
|
|
|
1917
2024
|
"maxLength": 200,
|
|
1918
2025
|
"description": "Segment label for analytics."
|
|
1919
2026
|
},
|
|
2027
|
+
"segment_description": {
|
|
2028
|
+
"type": "string",
|
|
2029
|
+
"maxLength": 4000,
|
|
2030
|
+
"description": "Explicit business rule for segment selection. Requires segment; creates or updates its saved description."
|
|
2031
|
+
},
|
|
1920
2032
|
"cohort_label": {
|
|
1921
2033
|
"type": "string",
|
|
1922
2034
|
"maxLength": 200,
|
|
1923
2035
|
"description": "Human-readable name of this concrete segment run."
|
|
1924
2036
|
},
|
|
2037
|
+
"mailing_variant_id": {
|
|
2038
|
+
"type": "string",
|
|
2039
|
+
"format": "uuid",
|
|
2040
|
+
"description": "ID of an active named mailing variant for this segment run."
|
|
2041
|
+
},
|
|
1925
2042
|
"message_variant": {
|
|
1926
2043
|
"type": "string",
|
|
1927
2044
|
"maxLength": 120,
|
|
@@ -3923,6 +4040,121 @@
|
|
|
3923
4040
|
"null"
|
|
3924
4041
|
]
|
|
3925
4042
|
},
|
|
4043
|
+
"wave_field_bindings": {
|
|
4044
|
+
"type": [
|
|
4045
|
+
"object",
|
|
4046
|
+
"null"
|
|
4047
|
+
],
|
|
4048
|
+
"description": "School-scoped bindings of durable-wave roles to GetCourse deal custom-field IDs. Null clears all bindings.",
|
|
4049
|
+
"additionalProperties": false,
|
|
4050
|
+
"properties": {
|
|
4051
|
+
"product_value_source": {
|
|
4052
|
+
"type": "string",
|
|
4053
|
+
"enum": [
|
|
4054
|
+
"CODE",
|
|
4055
|
+
"NAME"
|
|
4056
|
+
]
|
|
4057
|
+
},
|
|
4058
|
+
"launch_type": {
|
|
4059
|
+
"type": "object",
|
|
4060
|
+
"additionalProperties": false,
|
|
4061
|
+
"properties": {
|
|
4062
|
+
"field_id": {
|
|
4063
|
+
"type": "integer",
|
|
4064
|
+
"minimum": 1,
|
|
4065
|
+
"maximum": 2147483647
|
|
4066
|
+
},
|
|
4067
|
+
"field_label": {
|
|
4068
|
+
"type": "string",
|
|
4069
|
+
"minLength": 1
|
|
4070
|
+
}
|
|
4071
|
+
},
|
|
4072
|
+
"required": [
|
|
4073
|
+
"field_id",
|
|
4074
|
+
"field_label"
|
|
4075
|
+
]
|
|
4076
|
+
},
|
|
4077
|
+
"product": {
|
|
4078
|
+
"type": "object",
|
|
4079
|
+
"additionalProperties": false,
|
|
4080
|
+
"properties": {
|
|
4081
|
+
"field_id": {
|
|
4082
|
+
"type": "integer",
|
|
4083
|
+
"minimum": 1,
|
|
4084
|
+
"maximum": 2147483647
|
|
4085
|
+
},
|
|
4086
|
+
"field_label": {
|
|
4087
|
+
"type": "string",
|
|
4088
|
+
"minLength": 1
|
|
4089
|
+
}
|
|
4090
|
+
},
|
|
4091
|
+
"required": [
|
|
4092
|
+
"field_id",
|
|
4093
|
+
"field_label"
|
|
4094
|
+
]
|
|
4095
|
+
},
|
|
4096
|
+
"segment": {
|
|
4097
|
+
"type": "object",
|
|
4098
|
+
"additionalProperties": false,
|
|
4099
|
+
"properties": {
|
|
4100
|
+
"field_id": {
|
|
4101
|
+
"type": "integer",
|
|
4102
|
+
"minimum": 1,
|
|
4103
|
+
"maximum": 2147483647
|
|
4104
|
+
},
|
|
4105
|
+
"field_label": {
|
|
4106
|
+
"type": "string",
|
|
4107
|
+
"minLength": 1
|
|
4108
|
+
}
|
|
4109
|
+
},
|
|
4110
|
+
"required": [
|
|
4111
|
+
"field_id",
|
|
4112
|
+
"field_label"
|
|
4113
|
+
]
|
|
4114
|
+
},
|
|
4115
|
+
"funnel": {
|
|
4116
|
+
"type": "object",
|
|
4117
|
+
"additionalProperties": false,
|
|
4118
|
+
"properties": {
|
|
4119
|
+
"field_id": {
|
|
4120
|
+
"type": "integer",
|
|
4121
|
+
"minimum": 1,
|
|
4122
|
+
"maximum": 2147483647
|
|
4123
|
+
},
|
|
4124
|
+
"field_label": {
|
|
4125
|
+
"type": "string",
|
|
4126
|
+
"minLength": 1
|
|
4127
|
+
}
|
|
4128
|
+
},
|
|
4129
|
+
"required": [
|
|
4130
|
+
"field_id",
|
|
4131
|
+
"field_label"
|
|
4132
|
+
]
|
|
4133
|
+
},
|
|
4134
|
+
"channels": {
|
|
4135
|
+
"type": "object",
|
|
4136
|
+
"additionalProperties": false,
|
|
4137
|
+
"properties": {
|
|
4138
|
+
"field_id": {
|
|
4139
|
+
"type": "integer",
|
|
4140
|
+
"minimum": 1,
|
|
4141
|
+
"maximum": 2147483647
|
|
4142
|
+
},
|
|
4143
|
+
"field_label": {
|
|
4144
|
+
"type": "string",
|
|
4145
|
+
"minLength": 1
|
|
4146
|
+
}
|
|
4147
|
+
},
|
|
4148
|
+
"required": [
|
|
4149
|
+
"field_id",
|
|
4150
|
+
"field_label"
|
|
4151
|
+
]
|
|
4152
|
+
}
|
|
4153
|
+
},
|
|
4154
|
+
"required": [
|
|
4155
|
+
"product_value_source"
|
|
4156
|
+
]
|
|
4157
|
+
},
|
|
3926
4158
|
"field_variable_map": {
|
|
3927
4159
|
"type": [
|
|
3928
4160
|
"array",
|
|
@@ -4300,6 +4532,54 @@
|
|
|
4300
4532
|
}
|
|
4301
4533
|
}
|
|
4302
4534
|
},
|
|
4535
|
+
{
|
|
4536
|
+
"name": "besales_prompt_headroom",
|
|
4537
|
+
"description": "Сколько символов занимает промпт агента, сколько осталось до лимитов PromptLint (hard_fail 80000 / warn 40000) и вес разделов по «## ». Зови ПЕРЕД сборкой черновика: линтер срабатывает только на besales_prompt_patch_commit, и без этого перебор лимита выясняется уже после применения операций. Признак перебора — exceedsHardLimit; ровно на лимите (hardHeadroom=0) commit ещё проходит. `draft_id` — измерить черновик вместо закоммиченного промпта; черновик обязан принадлежать этому же агенту, иначе 404. Endpoint: GET /api/v2/agents/{agentId}/prompt/headroom. Scope: read:prompt-drafts.",
|
|
4538
|
+
"inputSchema": {
|
|
4539
|
+
"type": "object",
|
|
4540
|
+
"additionalProperties": false,
|
|
4541
|
+
"required": [
|
|
4542
|
+
"agent_id"
|
|
4543
|
+
],
|
|
4544
|
+
"properties": {
|
|
4545
|
+
"agent_id": {
|
|
4546
|
+
"type": "string",
|
|
4547
|
+
"format": "uuid"
|
|
4548
|
+
},
|
|
4549
|
+
"draft_id": {
|
|
4550
|
+
"type": "string",
|
|
4551
|
+
"format": "uuid"
|
|
4552
|
+
}
|
|
4553
|
+
}
|
|
4554
|
+
}
|
|
4555
|
+
},
|
|
4556
|
+
{
|
|
4557
|
+
"name": "besales_prompt_diff",
|
|
4558
|
+
"description": "Расхождение закоммиченных промптов двух агентов одного workspace: `identicalBytes` (тексты совпадают побайтово — значит один и тот же набор patch-операций найдёт те же якоря; это НЕ гарантия одинакового исхода commit, lint резолвит канал каждого агента отдельно), `identicalNormalized` (различие только в пробелах), `onlyInBase` / `onlyInCompare` — строки, которых нет на другой стороне, с кратностями. Зови вместо чтения двух промптов целиком: парк из 30+ агентов на одном промпте иначе не влезает в контекст. Порядок строк и перемещения НЕ отслеживаются. Endpoint: POST /api/v2/agents/{agentId}/prompt/diff. Scope: read:prompt-drafts.",
|
|
4559
|
+
"inputSchema": {
|
|
4560
|
+
"type": "object",
|
|
4561
|
+
"additionalProperties": false,
|
|
4562
|
+
"required": [
|
|
4563
|
+
"agent_id",
|
|
4564
|
+
"compare_agent_id"
|
|
4565
|
+
],
|
|
4566
|
+
"properties": {
|
|
4567
|
+
"agent_id": {
|
|
4568
|
+
"type": "string",
|
|
4569
|
+
"format": "uuid"
|
|
4570
|
+
},
|
|
4571
|
+
"compare_agent_id": {
|
|
4572
|
+
"type": "string",
|
|
4573
|
+
"format": "uuid"
|
|
4574
|
+
},
|
|
4575
|
+
"max_lines": {
|
|
4576
|
+
"type": "integer",
|
|
4577
|
+
"minimum": 1,
|
|
4578
|
+
"maximum": 1000
|
|
4579
|
+
}
|
|
4580
|
+
}
|
|
4581
|
+
}
|
|
4582
|
+
},
|
|
4303
4583
|
{
|
|
4304
4584
|
"name": "besales_prompt_patch_apply",
|
|
4305
4585
|
"description": "S3.8: применяет batch operations к draft.currentContent. Resets TTL на 24h (activity-based). Возвращает `appliedCount` + `skippedCount` (anchor не найден / growth guard >30%). Endpoint: PATCH /api/v2/agents/{agentId}/prompt/drafts/{draftId}/operations. Scope: write:prompt-drafts. ВАЖНО: ведущие и замыкающие пробелы/переводы строк в replacement_text срезаются — чтобы вставить пустую строку-разделитель между абзацами, держи перевод строки В СЕРЕДИНЕ replacement_text или включи окружающий текст в anchor/target; иначе соседние заголовки/абзацы склеятся. Ответ возвращает весь обновлённый currentContent (может быть очень большим) — сверяйся по appliedCount/skippedCount, не перечитывай весь контент между батчами.",
|
|
@@ -4405,6 +4685,115 @@
|
|
|
4405
4685
|
}
|
|
4406
4686
|
}
|
|
4407
4687
|
},
|
|
4688
|
+
{
|
|
4689
|
+
"name": "besales_prompt_batch_start",
|
|
4690
|
+
"description": "Раскатывает ОДИН набор patch-операций по НЕСКОЛЬКИМ агентам одного workspace. Используй вместо ручного цикла patch_start→apply→commit: 33 агента × 3 вызова не укладываются в таймаут MCP, поэтому прогон фоновый — тулза возвращает `runId`, статус опрашивается через besales_prompt_batch_status. Две фазы: сначала у ВСЕХ агентов создаётся черновик, применяются операции и прогоняется полный lint; коммитятся только прошедшие. `all_or_nothing=true` — не коммитить никого, если хоть один не прошёл подготовку. `idempotency_key` делает повторный старт безопасным (вернёт тот же прогон). Агенты чужого workspace в прогон не попадают. Endpoint: POST /api/v2/prompt-batch/runs. Scope: write:prompt-drafts.",
|
|
4691
|
+
"inputSchema": {
|
|
4692
|
+
"type": "object",
|
|
4693
|
+
"additionalProperties": false,
|
|
4694
|
+
"required": [
|
|
4695
|
+
"agent_ids",
|
|
4696
|
+
"operations"
|
|
4697
|
+
],
|
|
4698
|
+
"properties": {
|
|
4699
|
+
"agent_ids": {
|
|
4700
|
+
"type": "array",
|
|
4701
|
+
"minItems": 1,
|
|
4702
|
+
"maxItems": 200,
|
|
4703
|
+
"items": {
|
|
4704
|
+
"type": "string",
|
|
4705
|
+
"format": "uuid"
|
|
4706
|
+
}
|
|
4707
|
+
},
|
|
4708
|
+
"operations": {
|
|
4709
|
+
"type": "array",
|
|
4710
|
+
"minItems": 1,
|
|
4711
|
+
"items": {
|
|
4712
|
+
"type": "object",
|
|
4713
|
+
"required": [
|
|
4714
|
+
"type"
|
|
4715
|
+
],
|
|
4716
|
+
"properties": {
|
|
4717
|
+
"id": {
|
|
4718
|
+
"type": "string"
|
|
4719
|
+
},
|
|
4720
|
+
"type": {
|
|
4721
|
+
"type": "string",
|
|
4722
|
+
"enum": [
|
|
4723
|
+
"replace_text",
|
|
4724
|
+
"replace_all_text",
|
|
4725
|
+
"insert_after_text",
|
|
4726
|
+
"insert_before_text",
|
|
4727
|
+
"remove_text",
|
|
4728
|
+
"move_text_after_text"
|
|
4729
|
+
]
|
|
4730
|
+
},
|
|
4731
|
+
"target_text": {
|
|
4732
|
+
"type": "string"
|
|
4733
|
+
},
|
|
4734
|
+
"anchor_text": {
|
|
4735
|
+
"type": "string"
|
|
4736
|
+
},
|
|
4737
|
+
"replacement_text": {
|
|
4738
|
+
"type": "string"
|
|
4739
|
+
},
|
|
4740
|
+
"match_variants": {
|
|
4741
|
+
"type": "array",
|
|
4742
|
+
"items": {
|
|
4743
|
+
"type": "string"
|
|
4744
|
+
}
|
|
4745
|
+
}
|
|
4746
|
+
}
|
|
4747
|
+
}
|
|
4748
|
+
},
|
|
4749
|
+
"all_or_nothing": {
|
|
4750
|
+
"type": "boolean"
|
|
4751
|
+
},
|
|
4752
|
+
"idempotency_key": {
|
|
4753
|
+
"type": "string",
|
|
4754
|
+
"maxLength": 200
|
|
4755
|
+
},
|
|
4756
|
+
"platform_id": {
|
|
4757
|
+
"type": "string",
|
|
4758
|
+
"format": "uuid"
|
|
4759
|
+
}
|
|
4760
|
+
}
|
|
4761
|
+
}
|
|
4762
|
+
},
|
|
4763
|
+
{
|
|
4764
|
+
"name": "besales_prompt_batch_status",
|
|
4765
|
+
"description": "Статус пакетной раскатки: счётчики по статусам и per-agent исход. `counts.PENDING+PREPARED > 0` — прогон ещё идёт, опроси позже. `SKIPPED` — НЕ ошибка, смотри `skipReason`: AGENT_NOT_FOUND / DRAFT_CONFLICT_OTHER_USER (у агента чужой незакоммиченный черновик) / NO_OPERATIONS_APPLIED (у этого агента промпт другой, якоря не нашлись) / PROMPT_UNCHANGED / ALL_OR_NOTHING_ABORTED. У `FAILED` смотри `errorMessage` и `lintIssues`. Endpoint: GET /api/v2/prompt-batch/runs/{runId}. Scope: read:prompt-drafts.",
|
|
4766
|
+
"inputSchema": {
|
|
4767
|
+
"type": "object",
|
|
4768
|
+
"additionalProperties": false,
|
|
4769
|
+
"required": [
|
|
4770
|
+
"run_id"
|
|
4771
|
+
],
|
|
4772
|
+
"properties": {
|
|
4773
|
+
"run_id": {
|
|
4774
|
+
"type": "string",
|
|
4775
|
+
"format": "uuid"
|
|
4776
|
+
}
|
|
4777
|
+
}
|
|
4778
|
+
}
|
|
4779
|
+
},
|
|
4780
|
+
{
|
|
4781
|
+
"name": "besales_prompt_batch_resume",
|
|
4782
|
+
"description": "Докатывает прогон: повторяет ТОЛЬКО агентов со статусом FAILED, уже закоммиченных не трогает (повторное применение операций удвоило бы вставки). Нужен, потому что клонированный через GUI агент структурно 409-ит на каждом commit — без докатки такой прогон навсегда остаётся PARTIAL. Отказывает с 400, если прогон ещё выполняется; заброшенный прогон (воркер упал, heartbeat протух) перезанимается. Endpoint: POST /api/v2/prompt-batch/runs/{runId}/resume. Scope: write:prompt-drafts.",
|
|
4783
|
+
"inputSchema": {
|
|
4784
|
+
"type": "object",
|
|
4785
|
+
"additionalProperties": false,
|
|
4786
|
+
"required": [
|
|
4787
|
+
"run_id"
|
|
4788
|
+
],
|
|
4789
|
+
"properties": {
|
|
4790
|
+
"run_id": {
|
|
4791
|
+
"type": "string",
|
|
4792
|
+
"format": "uuid"
|
|
4793
|
+
}
|
|
4794
|
+
}
|
|
4795
|
+
}
|
|
4796
|
+
},
|
|
4408
4797
|
{
|
|
4409
4798
|
"name": "besales_prompt_lint",
|
|
4410
4799
|
"description": "S2.6 extra (v1.5 pipeline rules): standalone lint для текста промпта — позволяет проверить промпт ДО `besales_prompt_finalize`, чтобы избежать цикла «finalize → 400 → fix». Запускает те же чекеры, что и finalize: anti-AI baseline (hard_fail), officialese (warn), markdown в мессенджер-канале (hard_fail), §9 prohibitions / lint paradox (hard_fail), scope-consistency (warn). Если передан `agent_id`, бэкенд резолвит channel и agentScope из `AgentChat`. Endpoint: POST /api/v2/workspaces/{workspaceId}/prompt-lint. Scope: read:prompt-drafts.",
|
|
@@ -7610,7 +7999,7 @@
|
|
|
7610
7999
|
},
|
|
7611
8000
|
{
|
|
7612
8001
|
"name": "besales_broadcast_analytics_get",
|
|
7613
|
-
"description": "Read-only
|
|
8002
|
+
"description": "Read-only все данные страницы /broadcast-analytics: отчёты, drill-down, справочники сегментов и продуктов, качество данных и подтверждения оплат. Выбери report; общие фильтры совпадают с UI. Scope: read:analytics.",
|
|
7614
8003
|
"inputSchema": {
|
|
7615
8004
|
"type": "object",
|
|
7616
8005
|
"required": [],
|
|
@@ -7621,6 +8010,28 @@
|
|
|
7621
8010
|
"format": "uuid",
|
|
7622
8011
|
"description": "Optional override. Normally omit — defaults to the workspace bound to this session."
|
|
7623
8012
|
},
|
|
8013
|
+
"report": {
|
|
8014
|
+
"type": "string",
|
|
8015
|
+
"enum": [
|
|
8016
|
+
"summary",
|
|
8017
|
+
"cohorts",
|
|
8018
|
+
"skip_reasons",
|
|
8019
|
+
"recipients",
|
|
8020
|
+
"deals",
|
|
8021
|
+
"action_failures",
|
|
8022
|
+
"indirect_payments",
|
|
8023
|
+
"response_windows",
|
|
8024
|
+
"insights",
|
|
8025
|
+
"recent_leads",
|
|
8026
|
+
"data_quality",
|
|
8027
|
+
"segments_catalog",
|
|
8028
|
+
"funnel_products",
|
|
8029
|
+
"payment_candidates",
|
|
8030
|
+
"payment_candidates_summary"
|
|
8031
|
+
],
|
|
8032
|
+
"default": "summary",
|
|
8033
|
+
"description": "Какой отчёт страницы вернуть. Для recipients нужен recipient_metric, для deals — deal_metric."
|
|
8034
|
+
},
|
|
7624
8035
|
"mode": {
|
|
7625
8036
|
"type": "string",
|
|
7626
8037
|
"enum": [
|
|
@@ -7651,31 +8062,88 @@
|
|
|
7651
8062
|
"format": "uuid"
|
|
7652
8063
|
},
|
|
7653
8064
|
"funnel": {
|
|
7654
|
-
"
|
|
7655
|
-
|
|
7656
|
-
|
|
8065
|
+
"oneOf": [
|
|
8066
|
+
{
|
|
8067
|
+
"type": "string",
|
|
8068
|
+
"minLength": 1
|
|
8069
|
+
},
|
|
8070
|
+
{
|
|
8071
|
+
"type": "array",
|
|
8072
|
+
"minItems": 1,
|
|
8073
|
+
"maxItems": 50,
|
|
8074
|
+
"items": {
|
|
8075
|
+
"type": "string",
|
|
8076
|
+
"minLength": 1
|
|
8077
|
+
}
|
|
8078
|
+
}
|
|
8079
|
+
],
|
|
8080
|
+
"description": "Одна или несколько бизнес-воронок волны."
|
|
7657
8081
|
},
|
|
7658
8082
|
"funnel_mode": {
|
|
7659
8083
|
"type": "string",
|
|
7660
8084
|
"enum": [
|
|
7661
8085
|
"none"
|
|
7662
8086
|
],
|
|
7663
|
-
"description": "
|
|
8087
|
+
"description": "Добавить строки без воронки. Можно сочетать с funnel: значения и NULL объединяются через OR."
|
|
7664
8088
|
},
|
|
7665
8089
|
"segment": {
|
|
7666
|
-
"
|
|
7667
|
-
|
|
8090
|
+
"oneOf": [
|
|
8091
|
+
{
|
|
8092
|
+
"type": "string",
|
|
8093
|
+
"minLength": 1
|
|
8094
|
+
},
|
|
8095
|
+
{
|
|
8096
|
+
"type": "array",
|
|
8097
|
+
"minItems": 1,
|
|
8098
|
+
"maxItems": 50,
|
|
8099
|
+
"items": {
|
|
8100
|
+
"type": "string",
|
|
8101
|
+
"minLength": 1
|
|
8102
|
+
}
|
|
8103
|
+
}
|
|
8104
|
+
]
|
|
8105
|
+
},
|
|
8106
|
+
"mailing_variant_id": {
|
|
8107
|
+
"oneOf": [
|
|
8108
|
+
{
|
|
8109
|
+
"type": "string",
|
|
8110
|
+
"format": "uuid"
|
|
8111
|
+
},
|
|
8112
|
+
{
|
|
8113
|
+
"type": "array",
|
|
8114
|
+
"minItems": 1,
|
|
8115
|
+
"maxItems": 50,
|
|
8116
|
+
"items": {
|
|
8117
|
+
"type": "string",
|
|
8118
|
+
"format": "uuid"
|
|
8119
|
+
}
|
|
8120
|
+
}
|
|
8121
|
+
],
|
|
8122
|
+
"description": "Один или несколько ID именованных вариантов рассылки."
|
|
7668
8123
|
},
|
|
7669
8124
|
"product": {
|
|
7670
|
-
"
|
|
7671
|
-
|
|
8125
|
+
"oneOf": [
|
|
8126
|
+
{
|
|
8127
|
+
"type": "string",
|
|
8128
|
+
"minLength": 1
|
|
8129
|
+
},
|
|
8130
|
+
{
|
|
8131
|
+
"type": "array",
|
|
8132
|
+
"minItems": 1,
|
|
8133
|
+
"maxItems": 50,
|
|
8134
|
+
"items": {
|
|
8135
|
+
"type": "string",
|
|
8136
|
+
"minLength": 1
|
|
8137
|
+
}
|
|
8138
|
+
}
|
|
8139
|
+
]
|
|
7672
8140
|
},
|
|
7673
8141
|
"product_mode": {
|
|
7674
8142
|
"type": "string",
|
|
7675
8143
|
"enum": [
|
|
7676
8144
|
"none"
|
|
7677
8145
|
],
|
|
7678
|
-
"description": "
|
|
8146
|
+
"description": "Добавить строки без продукта. Можно сочетать с product: значения и NULL объединяются через OR."
|
|
7679
8147
|
},
|
|
7680
8148
|
"view": {
|
|
7681
8149
|
"type": "string",
|
|
@@ -7685,6 +8153,189 @@
|
|
|
7685
8153
|
],
|
|
7686
8154
|
"default": "period",
|
|
7687
8155
|
"description": "period — по дате события (как вкладка по дням); cohort — по дате запуска волны."
|
|
8156
|
+
},
|
|
8157
|
+
"freshness": {
|
|
8158
|
+
"oneOf": [
|
|
8159
|
+
{
|
|
8160
|
+
"type": "string",
|
|
8161
|
+
"enum": [
|
|
8162
|
+
"0-7",
|
|
8163
|
+
"8-14",
|
|
8164
|
+
"15-30",
|
|
8165
|
+
"31+"
|
|
8166
|
+
]
|
|
8167
|
+
},
|
|
8168
|
+
{
|
|
8169
|
+
"type": "array",
|
|
8170
|
+
"minItems": 1,
|
|
8171
|
+
"maxItems": 4,
|
|
8172
|
+
"items": {
|
|
8173
|
+
"type": "string",
|
|
8174
|
+
"enum": [
|
|
8175
|
+
"0-7",
|
|
8176
|
+
"8-14",
|
|
8177
|
+
"15-30",
|
|
8178
|
+
"31+"
|
|
8179
|
+
]
|
|
8180
|
+
}
|
|
8181
|
+
}
|
|
8182
|
+
],
|
|
8183
|
+
"description": "Корзины свежести лида; контакты без даты при активном фильтре исключаются."
|
|
8184
|
+
},
|
|
8185
|
+
"channels": {
|
|
8186
|
+
"oneOf": [
|
|
8187
|
+
{
|
|
8188
|
+
"type": "string",
|
|
8189
|
+
"enum": [
|
|
8190
|
+
"Site",
|
|
8191
|
+
"Email",
|
|
8192
|
+
"SMS",
|
|
8193
|
+
"Telegram",
|
|
8194
|
+
"Facebook",
|
|
8195
|
+
"VK",
|
|
8196
|
+
"Chatium",
|
|
8197
|
+
"WhatsApp",
|
|
8198
|
+
"Viber",
|
|
8199
|
+
"MAX",
|
|
8200
|
+
"UNKNOWN"
|
|
8201
|
+
]
|
|
8202
|
+
},
|
|
8203
|
+
{
|
|
8204
|
+
"type": "array",
|
|
8205
|
+
"minItems": 1,
|
|
8206
|
+
"maxItems": 11,
|
|
8207
|
+
"items": {
|
|
8208
|
+
"type": "string",
|
|
8209
|
+
"enum": [
|
|
8210
|
+
"Site",
|
|
8211
|
+
"Email",
|
|
8212
|
+
"SMS",
|
|
8213
|
+
"Telegram",
|
|
8214
|
+
"Facebook",
|
|
8215
|
+
"VK",
|
|
8216
|
+
"Chatium",
|
|
8217
|
+
"WhatsApp",
|
|
8218
|
+
"Viber",
|
|
8219
|
+
"MAX",
|
|
8220
|
+
"UNKNOWN"
|
|
8221
|
+
]
|
|
8222
|
+
}
|
|
8223
|
+
}
|
|
8224
|
+
]
|
|
8225
|
+
},
|
|
8226
|
+
"date": {
|
|
8227
|
+
"type": "string",
|
|
8228
|
+
"format": "date",
|
|
8229
|
+
"description": "День кликнутой ячейки для drill-down/skip_reasons."
|
|
8230
|
+
},
|
|
8231
|
+
"channel": {
|
|
8232
|
+
"type": "string",
|
|
8233
|
+
"enum": [
|
|
8234
|
+
"Site",
|
|
8235
|
+
"Email",
|
|
8236
|
+
"SMS",
|
|
8237
|
+
"Telegram",
|
|
8238
|
+
"Facebook",
|
|
8239
|
+
"VK",
|
|
8240
|
+
"Chatium",
|
|
8241
|
+
"WhatsApp",
|
|
8242
|
+
"Viber",
|
|
8243
|
+
"MAX",
|
|
8244
|
+
"UNKNOWN"
|
|
8245
|
+
],
|
|
8246
|
+
"description": "Канал кликнутой ячейки drill-down."
|
|
8247
|
+
},
|
|
8248
|
+
"import_job_id": {
|
|
8249
|
+
"type": "string",
|
|
8250
|
+
"minLength": 1,
|
|
8251
|
+
"description": "ID конкретной волны для skip_reasons/drill-down."
|
|
8252
|
+
},
|
|
8253
|
+
"page": {
|
|
8254
|
+
"type": "integer",
|
|
8255
|
+
"minimum": 1
|
|
8256
|
+
},
|
|
8257
|
+
"page_size": {
|
|
8258
|
+
"type": "integer",
|
|
8259
|
+
"minimum": 1,
|
|
8260
|
+
"maximum": 200,
|
|
8261
|
+
"description": "До 200 для аналитических drill-down; до 100 для payment_candidates."
|
|
8262
|
+
},
|
|
8263
|
+
"recipient_metric": {
|
|
8264
|
+
"type": "string",
|
|
8265
|
+
"enum": [
|
|
8266
|
+
"sent",
|
|
8267
|
+
"delivered",
|
|
8268
|
+
"entered",
|
|
8269
|
+
"deepDialog",
|
|
8270
|
+
"handedOff",
|
|
8271
|
+
"notDelivered",
|
|
8272
|
+
"notSent"
|
|
8273
|
+
],
|
|
8274
|
+
"description": "Обязателен для report=recipients."
|
|
8275
|
+
},
|
|
8276
|
+
"deal_metric": {
|
|
8277
|
+
"type": "string",
|
|
8278
|
+
"enum": [
|
|
8279
|
+
"issued",
|
|
8280
|
+
"paid",
|
|
8281
|
+
"withoutCohort"
|
|
8282
|
+
],
|
|
8283
|
+
"description": "Обязателен для report=deals."
|
|
8284
|
+
},
|
|
8285
|
+
"reason": {
|
|
8286
|
+
"type": "string",
|
|
8287
|
+
"enum": [
|
|
8288
|
+
"NO_MESSENGER",
|
|
8289
|
+
"ACTIVE_INVOICE_SAME_PRODUCT",
|
|
8290
|
+
"ACTIVE_DEAL_SAME_PRODUCT",
|
|
8291
|
+
"PAID_SAME_PRODUCT",
|
|
8292
|
+
"ACTIVE_DEAL_OTHER_PRODUCT",
|
|
8293
|
+
"MANAGER_ASSIGNED_ACTIVE_DEAL",
|
|
8294
|
+
"PRODUCT_CONTEXT_MISSING",
|
|
8295
|
+
"GETCOURSE_CHECK_ERROR",
|
|
8296
|
+
"ALREADY_SENT",
|
|
8297
|
+
"USER_NOT_FOUND"
|
|
8298
|
+
],
|
|
8299
|
+
"description": "Причина для report=recipients + recipient_metric=notSent."
|
|
8300
|
+
},
|
|
8301
|
+
"action_type": {
|
|
8302
|
+
"type": "string",
|
|
8303
|
+
"description": "Точный ActionType для сужения report=action_failures."
|
|
8304
|
+
},
|
|
8305
|
+
"payment_view": {
|
|
8306
|
+
"type": "string",
|
|
8307
|
+
"enum": [
|
|
8308
|
+
"decidable",
|
|
8309
|
+
"excluded",
|
|
8310
|
+
"resolved"
|
|
8311
|
+
],
|
|
8312
|
+
"description": "Только для payment_candidates; не сочетать с payment_status/payment_eligibility."
|
|
8313
|
+
},
|
|
8314
|
+
"payment_status": {
|
|
8315
|
+
"type": "string",
|
|
8316
|
+
"enum": [
|
|
8317
|
+
"PENDING",
|
|
8318
|
+
"CONFIRMED",
|
|
8319
|
+
"CONFIRMED_INDIRECT",
|
|
8320
|
+
"REJECTED"
|
|
8321
|
+
],
|
|
8322
|
+
"description": "Только для payment_candidates без payment_view."
|
|
8323
|
+
},
|
|
8324
|
+
"payment_eligibility": {
|
|
8325
|
+
"type": "string",
|
|
8326
|
+
"enum": [
|
|
8327
|
+
"PENDING_CHECK",
|
|
8328
|
+
"VERIFIED",
|
|
8329
|
+
"VERIFIED_WEAK",
|
|
8330
|
+
"UNVERIFIED",
|
|
8331
|
+
"EXCLUDED_NON_AUTOWEB",
|
|
8332
|
+
"EXCLUDED_PREEXISTING"
|
|
8333
|
+
],
|
|
8334
|
+
"description": "Только для payment_candidates без payment_view."
|
|
8335
|
+
},
|
|
8336
|
+
"include_archived": {
|
|
8337
|
+
"type": "boolean",
|
|
8338
|
+
"description": "Только для report=payment_candidates."
|
|
7688
8339
|
}
|
|
7689
8340
|
}
|
|
7690
8341
|
}
|
|
@@ -7730,8 +8381,21 @@
|
|
|
7730
8381
|
"format": "uuid"
|
|
7731
8382
|
},
|
|
7732
8383
|
"funnel": {
|
|
7733
|
-
"
|
|
7734
|
-
|
|
8384
|
+
"oneOf": [
|
|
8385
|
+
{
|
|
8386
|
+
"type": "string",
|
|
8387
|
+
"minLength": 1
|
|
8388
|
+
},
|
|
8389
|
+
{
|
|
8390
|
+
"type": "array",
|
|
8391
|
+
"minItems": 1,
|
|
8392
|
+
"maxItems": 50,
|
|
8393
|
+
"items": {
|
|
8394
|
+
"type": "string",
|
|
8395
|
+
"minLength": 1
|
|
8396
|
+
}
|
|
8397
|
+
}
|
|
8398
|
+
]
|
|
7735
8399
|
},
|
|
7736
8400
|
"funnel_mode": {
|
|
7737
8401
|
"type": "string",
|
|
@@ -7740,18 +8404,137 @@
|
|
|
7740
8404
|
]
|
|
7741
8405
|
},
|
|
7742
8406
|
"segment": {
|
|
7743
|
-
"
|
|
7744
|
-
|
|
8407
|
+
"oneOf": [
|
|
8408
|
+
{
|
|
8409
|
+
"type": "string",
|
|
8410
|
+
"minLength": 1
|
|
8411
|
+
},
|
|
8412
|
+
{
|
|
8413
|
+
"type": "array",
|
|
8414
|
+
"minItems": 1,
|
|
8415
|
+
"maxItems": 50,
|
|
8416
|
+
"items": {
|
|
8417
|
+
"type": "string",
|
|
8418
|
+
"minLength": 1
|
|
8419
|
+
}
|
|
8420
|
+
}
|
|
8421
|
+
]
|
|
8422
|
+
},
|
|
8423
|
+
"mailing_variant_id": {
|
|
8424
|
+
"oneOf": [
|
|
8425
|
+
{
|
|
8426
|
+
"type": "string",
|
|
8427
|
+
"format": "uuid"
|
|
8428
|
+
},
|
|
8429
|
+
{
|
|
8430
|
+
"type": "array",
|
|
8431
|
+
"minItems": 1,
|
|
8432
|
+
"maxItems": 50,
|
|
8433
|
+
"items": {
|
|
8434
|
+
"type": "string",
|
|
8435
|
+
"format": "uuid"
|
|
8436
|
+
}
|
|
8437
|
+
}
|
|
8438
|
+
]
|
|
7745
8439
|
},
|
|
7746
8440
|
"product": {
|
|
7747
|
-
"
|
|
7748
|
-
|
|
8441
|
+
"oneOf": [
|
|
8442
|
+
{
|
|
8443
|
+
"type": "string",
|
|
8444
|
+
"minLength": 1
|
|
8445
|
+
},
|
|
8446
|
+
{
|
|
8447
|
+
"type": "array",
|
|
8448
|
+
"minItems": 1,
|
|
8449
|
+
"maxItems": 50,
|
|
8450
|
+
"items": {
|
|
8451
|
+
"type": "string",
|
|
8452
|
+
"minLength": 1
|
|
8453
|
+
}
|
|
8454
|
+
}
|
|
8455
|
+
]
|
|
7749
8456
|
},
|
|
7750
8457
|
"product_mode": {
|
|
7751
8458
|
"type": "string",
|
|
7752
8459
|
"enum": [
|
|
7753
8460
|
"none"
|
|
7754
8461
|
]
|
|
8462
|
+
},
|
|
8463
|
+
"freshness": {
|
|
8464
|
+
"oneOf": [
|
|
8465
|
+
{
|
|
8466
|
+
"type": "string",
|
|
8467
|
+
"enum": [
|
|
8468
|
+
"0-7",
|
|
8469
|
+
"8-14",
|
|
8470
|
+
"15-30",
|
|
8471
|
+
"31+"
|
|
8472
|
+
]
|
|
8473
|
+
},
|
|
8474
|
+
{
|
|
8475
|
+
"type": "array",
|
|
8476
|
+
"minItems": 1,
|
|
8477
|
+
"maxItems": 4,
|
|
8478
|
+
"items": {
|
|
8479
|
+
"type": "string",
|
|
8480
|
+
"enum": [
|
|
8481
|
+
"0-7",
|
|
8482
|
+
"8-14",
|
|
8483
|
+
"15-30",
|
|
8484
|
+
"31+"
|
|
8485
|
+
]
|
|
8486
|
+
}
|
|
8487
|
+
}
|
|
8488
|
+
]
|
|
8489
|
+
},
|
|
8490
|
+
"channels": {
|
|
8491
|
+
"oneOf": [
|
|
8492
|
+
{
|
|
8493
|
+
"type": "string",
|
|
8494
|
+
"enum": [
|
|
8495
|
+
"Site",
|
|
8496
|
+
"Email",
|
|
8497
|
+
"SMS",
|
|
8498
|
+
"Telegram",
|
|
8499
|
+
"Facebook",
|
|
8500
|
+
"VK",
|
|
8501
|
+
"Chatium",
|
|
8502
|
+
"WhatsApp",
|
|
8503
|
+
"Viber",
|
|
8504
|
+
"MAX",
|
|
8505
|
+
"UNKNOWN"
|
|
8506
|
+
]
|
|
8507
|
+
},
|
|
8508
|
+
{
|
|
8509
|
+
"type": "array",
|
|
8510
|
+
"minItems": 1,
|
|
8511
|
+
"maxItems": 11,
|
|
8512
|
+
"items": {
|
|
8513
|
+
"type": "string",
|
|
8514
|
+
"enum": [
|
|
8515
|
+
"Site",
|
|
8516
|
+
"Email",
|
|
8517
|
+
"SMS",
|
|
8518
|
+
"Telegram",
|
|
8519
|
+
"Facebook",
|
|
8520
|
+
"VK",
|
|
8521
|
+
"Chatium",
|
|
8522
|
+
"WhatsApp",
|
|
8523
|
+
"Viber",
|
|
8524
|
+
"MAX",
|
|
8525
|
+
"UNKNOWN"
|
|
8526
|
+
]
|
|
8527
|
+
}
|
|
8528
|
+
}
|
|
8529
|
+
]
|
|
8530
|
+
},
|
|
8531
|
+
"view": {
|
|
8532
|
+
"type": "string",
|
|
8533
|
+
"enum": [
|
|
8534
|
+
"cohort",
|
|
8535
|
+
"period"
|
|
8536
|
+
],
|
|
8537
|
+
"default": "period"
|
|
7755
8538
|
}
|
|
7756
8539
|
}
|
|
7757
8540
|
}
|
|
@@ -7881,6 +8664,16 @@
|
|
|
7881
8664
|
"hidden"
|
|
7882
8665
|
],
|
|
7883
8666
|
"description": "note — заметка в таймлайн CRM (безопасно). hidden — скрытое сообщение в открытой линии (клиент не видит; на живом портале НЕ проверено)."
|
|
8667
|
+
},
|
|
8668
|
+
"model": {
|
|
8669
|
+
"type": "string",
|
|
8670
|
+
"minLength": 1,
|
|
8671
|
+
"description": "Модель разбора этого режима. Пусто → общая."
|
|
8672
|
+
},
|
|
8673
|
+
"max_tokens": {
|
|
8674
|
+
"type": "integer",
|
|
8675
|
+
"minimum": 1,
|
|
8676
|
+
"description": "Лимит токенов этого режима. Пусто → общий."
|
|
7884
8677
|
}
|
|
7885
8678
|
},
|
|
7886
8679
|
"description": "Саммари дня. Пишется ПОСЛЕ summary_time по локальному времени канала.",
|
|
@@ -7924,7 +8717,7 @@
|
|
|
7924
8717
|
"min_new_events": {
|
|
7925
8718
|
"type": "integer",
|
|
7926
8719
|
"minimum": 1,
|
|
7927
|
-
"description": "Порог новых событий: не набрано — разбор не
|
|
8720
|
+
"description": "Порог новых событий: не набрано — разбор не запускается. Независимо от порога разбор идёт только при наличии реплики клиента в окне."
|
|
7928
8721
|
},
|
|
7929
8722
|
"output": {
|
|
7930
8723
|
"type": "string",
|
|
@@ -7933,6 +8726,16 @@
|
|
|
7933
8726
|
"hidden"
|
|
7934
8727
|
],
|
|
7935
8728
|
"description": "note — заметка в таймлайн CRM (безопасно). hidden — скрытое сообщение в открытой линии (клиент не видит; на живом портале НЕ проверено)."
|
|
8729
|
+
},
|
|
8730
|
+
"model": {
|
|
8731
|
+
"type": "string",
|
|
8732
|
+
"minLength": 1,
|
|
8733
|
+
"description": "Модель разбора этого режима. Пусто → общая."
|
|
8734
|
+
},
|
|
8735
|
+
"max_tokens": {
|
|
8736
|
+
"type": "integer",
|
|
8737
|
+
"minimum": 1,
|
|
8738
|
+
"description": "Лимит токенов этого режима. Пусто → общий."
|
|
7936
8739
|
}
|
|
7937
8740
|
},
|
|
7938
8741
|
"description": "«Статус коммуникации» — раз в час внутри рабочего окна и только при новых сообщениях.",
|
|
@@ -7960,7 +8763,7 @@
|
|
|
7960
8763
|
"type": "string",
|
|
7961
8764
|
"minLength": 1
|
|
7962
8765
|
},
|
|
7963
|
-
"description": "ID воронок CRM. Пусто =
|
|
8766
|
+
"description": "ID воронок CRM. Разбираются ТОЛЬКО перечисленные. Пусто = не выбрано (включённая задача вернёт 400), а НЕ «все»."
|
|
7964
8767
|
},
|
|
7965
8768
|
"managers": {
|
|
7966
8769
|
"type": "array",
|
|
@@ -7968,7 +8771,7 @@
|
|
|
7968
8771
|
"type": "integer",
|
|
7969
8772
|
"minimum": 1
|
|
7970
8773
|
},
|
|
7971
|
-
"description": "ASSIGNED_BY_ID ответственных Bitrix (не наши id — бери из besales_crm_operator_list). Пусто =
|
|
8774
|
+
"description": "ASSIGNED_BY_ID ответственных Bitrix (не наши id — бери из besales_crm_operator_list). Разбираются ТОЛЬКО перечисленные. Пусто = не выбрано (включённая задача вернёт 400), а НЕ «все»."
|
|
7972
8775
|
},
|
|
7973
8776
|
"daily_prompt": {
|
|
7974
8777
|
"type": [
|
|
@@ -7976,7 +8779,7 @@
|
|
|
7976
8779
|
"null"
|
|
7977
8780
|
],
|
|
7978
8781
|
"minLength": 1,
|
|
7979
|
-
"description": "Переопределение системного промпта саммари дня. Пусто =
|
|
8782
|
+
"description": "Переопределение системного промпта саммари дня. Пусто = встроенный: он доменно-нейтрален, но состав срезов из кейса Lavsit. null — СНЯТЬ переопределение (вернуть встроенный промпт)."
|
|
7980
8783
|
},
|
|
7981
8784
|
"hourly_prompt": {
|
|
7982
8785
|
"type": [
|
|
@@ -7992,6 +8795,138 @@
|
|
|
7992
8795
|
}
|
|
7993
8796
|
}
|
|
7994
8797
|
}
|
|
8798
|
+
},
|
|
8799
|
+
{
|
|
8800
|
+
"name": "besales_broadcast_mailing_variant_list",
|
|
8801
|
+
"description": "Список именованных «Вариантов рассылки» workspace. Активные варианты выбираются для GetCourse-волн; архивные доступны для истории.",
|
|
8802
|
+
"inputSchema": {
|
|
8803
|
+
"type": "object",
|
|
8804
|
+
"required": [],
|
|
8805
|
+
"additionalProperties": false,
|
|
8806
|
+
"properties": {
|
|
8807
|
+
"workspace_id": {
|
|
8808
|
+
"type": "string",
|
|
8809
|
+
"format": "uuid",
|
|
8810
|
+
"description": "Optional override. Normally omit — defaults to the workspace bound to this session."
|
|
8811
|
+
},
|
|
8812
|
+
"include_archived": {
|
|
8813
|
+
"type": "boolean",
|
|
8814
|
+
"description": "Включить архивные варианты для чтения исторических конфигураций."
|
|
8815
|
+
}
|
|
8816
|
+
}
|
|
8817
|
+
}
|
|
8818
|
+
},
|
|
8819
|
+
{
|
|
8820
|
+
"name": "besales_broadcast_mailing_variant_create",
|
|
8821
|
+
"description": "Создать или восстановить именованный «Вариант рассылки» с описанием гипотезы, сообщений и GetCourse-процесса.",
|
|
8822
|
+
"inputSchema": {
|
|
8823
|
+
"type": "object",
|
|
8824
|
+
"required": [
|
|
8825
|
+
"name"
|
|
8826
|
+
],
|
|
8827
|
+
"additionalProperties": false,
|
|
8828
|
+
"properties": {
|
|
8829
|
+
"workspace_id": {
|
|
8830
|
+
"type": "string",
|
|
8831
|
+
"format": "uuid",
|
|
8832
|
+
"description": "Optional override. Normally omit — defaults to the workspace bound to this session."
|
|
8833
|
+
},
|
|
8834
|
+
"name": {
|
|
8835
|
+
"type": "string",
|
|
8836
|
+
"minLength": 1,
|
|
8837
|
+
"maxLength": 200
|
|
8838
|
+
},
|
|
8839
|
+
"description": {
|
|
8840
|
+
"type": "string",
|
|
8841
|
+
"maxLength": 4000
|
|
8842
|
+
}
|
|
8843
|
+
}
|
|
8844
|
+
}
|
|
8845
|
+
},
|
|
8846
|
+
{
|
|
8847
|
+
"name": "besales_broadcast_mailing_variant_update",
|
|
8848
|
+
"description": "Изменить название, описание или архивный статус «Варианта рассылки».",
|
|
8849
|
+
"inputSchema": {
|
|
8850
|
+
"type": "object",
|
|
8851
|
+
"required": [
|
|
8852
|
+
"mailing_variant_id"
|
|
8853
|
+
],
|
|
8854
|
+
"additionalProperties": false,
|
|
8855
|
+
"properties": {
|
|
8856
|
+
"workspace_id": {
|
|
8857
|
+
"type": "string",
|
|
8858
|
+
"format": "uuid",
|
|
8859
|
+
"description": "Optional override. Normally omit — defaults to the workspace bound to this session."
|
|
8860
|
+
},
|
|
8861
|
+
"mailing_variant_id": {
|
|
8862
|
+
"type": "string",
|
|
8863
|
+
"format": "uuid"
|
|
8864
|
+
},
|
|
8865
|
+
"name": {
|
|
8866
|
+
"type": "string",
|
|
8867
|
+
"minLength": 1,
|
|
8868
|
+
"maxLength": 200
|
|
8869
|
+
},
|
|
8870
|
+
"description": {
|
|
8871
|
+
"type": [
|
|
8872
|
+
"string",
|
|
8873
|
+
"null"
|
|
8874
|
+
],
|
|
8875
|
+
"maxLength": 4000
|
|
8876
|
+
},
|
|
8877
|
+
"archived": {
|
|
8878
|
+
"type": "boolean"
|
|
8879
|
+
},
|
|
8880
|
+
"explicit_confirmation": {
|
|
8881
|
+
"type": "boolean",
|
|
8882
|
+
"const": true,
|
|
8883
|
+
"description": "Обязательно true при archived=true после явного подтверждения пользователя."
|
|
8884
|
+
}
|
|
8885
|
+
},
|
|
8886
|
+
"if": {
|
|
8887
|
+
"properties": {
|
|
8888
|
+
"archived": {
|
|
8889
|
+
"const": true
|
|
8890
|
+
}
|
|
8891
|
+
},
|
|
8892
|
+
"required": [
|
|
8893
|
+
"archived"
|
|
8894
|
+
]
|
|
8895
|
+
},
|
|
8896
|
+
"then": {
|
|
8897
|
+
"required": [
|
|
8898
|
+
"explicit_confirmation"
|
|
8899
|
+
]
|
|
8900
|
+
}
|
|
8901
|
+
}
|
|
8902
|
+
},
|
|
8903
|
+
{
|
|
8904
|
+
"name": "besales_broadcast_mailing_variant_delete",
|
|
8905
|
+
"description": "Архивировать «Вариант рассылки», сохранив историческую аналитику и ссылки отложенных durable-run.",
|
|
8906
|
+
"inputSchema": {
|
|
8907
|
+
"type": "object",
|
|
8908
|
+
"required": [
|
|
8909
|
+
"mailing_variant_id",
|
|
8910
|
+
"explicit_confirmation"
|
|
8911
|
+
],
|
|
8912
|
+
"additionalProperties": false,
|
|
8913
|
+
"properties": {
|
|
8914
|
+
"workspace_id": {
|
|
8915
|
+
"type": "string",
|
|
8916
|
+
"format": "uuid",
|
|
8917
|
+
"description": "Optional override. Normally omit — defaults to the workspace bound to this session."
|
|
8918
|
+
},
|
|
8919
|
+
"mailing_variant_id": {
|
|
8920
|
+
"type": "string",
|
|
8921
|
+
"format": "uuid"
|
|
8922
|
+
},
|
|
8923
|
+
"explicit_confirmation": {
|
|
8924
|
+
"type": "boolean",
|
|
8925
|
+
"const": true,
|
|
8926
|
+
"description": "Обязательно true после явного подтверждения пользователя."
|
|
8927
|
+
}
|
|
8928
|
+
}
|
|
8929
|
+
}
|
|
7995
8930
|
}
|
|
7996
8931
|
],
|
|
7997
8932
|
"resources": [
|
|
@@ -8183,7 +9118,7 @@
|
|
|
8183
9118
|
}
|
|
8184
9119
|
],
|
|
8185
9120
|
"summary": {
|
|
8186
|
-
"total_tools":
|
|
9121
|
+
"total_tools": 169,
|
|
8187
9122
|
"tools_by_category": {
|
|
8188
9123
|
"getcourse_wave": 10,
|
|
8189
9124
|
"files_upload": 3,
|
|
@@ -8206,7 +9141,7 @@
|
|
|
8206
9141
|
"feedback_sheets": 5,
|
|
8207
9142
|
"facts_management": 2,
|
|
8208
9143
|
"prompt_lint_standalone": 1,
|
|
8209
|
-
"prompt_drafts":
|
|
9144
|
+
"prompt_drafts": 7,
|
|
8210
9145
|
"workbook_ingestion": 3,
|
|
8211
9146
|
"knowledge_spaces": 6,
|
|
8212
9147
|
"knowledge_documents": 4,
|