@besales/mcp 0.32.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 +48 -11
- 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 +1286 -50
- 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 +114 -7
- package/dist/tools/definitions/platform-setup.js +106 -332
- 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 +162 -14
- 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",
|
|
@@ -1794,6 +1876,342 @@
|
|
|
1794
1876
|
"additionalProperties": false
|
|
1795
1877
|
}
|
|
1796
1878
|
},
|
|
1879
|
+
{
|
|
1880
|
+
"name": "besales_getcourse_wave_run_batch_start",
|
|
1881
|
+
"description": "Start an idempotent GetCourse status-mode wave-run batch with 1..10 sequential segments (at most 2000 contacts per segment and 5000 total). Generate batch_key once per attempt and reuse it for retries: the same key returns the existing batch, while a new key creates a second campaign. A changed composition with the same key returns HTTP 409. Only batch-level platform_id, crm_id and confirm are accepted. WITHOUT confirm=true this is a DRY-RUN. A real launch also requires MCP-only explicit_confirmation=true. Poll only besales_getcourse_wave_run_batch_status. Scope: mcp:platform-setup.",
|
|
1882
|
+
"inputSchema": {
|
|
1883
|
+
"type": "object",
|
|
1884
|
+
"required": [
|
|
1885
|
+
"batch_key",
|
|
1886
|
+
"platform_id",
|
|
1887
|
+
"crm_id",
|
|
1888
|
+
"segments"
|
|
1889
|
+
],
|
|
1890
|
+
"properties": {
|
|
1891
|
+
"workspace_id": {
|
|
1892
|
+
"type": "string",
|
|
1893
|
+
"format": "uuid",
|
|
1894
|
+
"description": "Optional override. Normally omit — resolved from the connected session."
|
|
1895
|
+
},
|
|
1896
|
+
"batch_key": {
|
|
1897
|
+
"type": "string",
|
|
1898
|
+
"description": "Idempotency key. Generate it once for this attempt and reuse it unchanged for every retry."
|
|
1899
|
+
},
|
|
1900
|
+
"platform_id": {
|
|
1901
|
+
"type": "string",
|
|
1902
|
+
"format": "uuid",
|
|
1903
|
+
"description": "GetCourse platform uuid; valid only at batch level."
|
|
1904
|
+
},
|
|
1905
|
+
"crm_id": {
|
|
1906
|
+
"type": "string",
|
|
1907
|
+
"format": "uuid",
|
|
1908
|
+
"description": "GetCourse CRM uuid; valid only at batch level."
|
|
1909
|
+
},
|
|
1910
|
+
"segments": {
|
|
1911
|
+
"type": "array",
|
|
1912
|
+
"minItems": 1,
|
|
1913
|
+
"maxItems": 10,
|
|
1914
|
+
"description": "Sequential status-mode segments. At most 2000 contacts per segment and 5000 contacts across the whole batch.",
|
|
1915
|
+
"items": {
|
|
1916
|
+
"type": "object",
|
|
1917
|
+
"dependentRequired": {
|
|
1918
|
+
"segment_description": [
|
|
1919
|
+
"segment"
|
|
1920
|
+
]
|
|
1921
|
+
},
|
|
1922
|
+
"required": [
|
|
1923
|
+
"contacts",
|
|
1924
|
+
"channels",
|
|
1925
|
+
"deal_fields"
|
|
1926
|
+
],
|
|
1927
|
+
"properties": {
|
|
1928
|
+
"launch_type": {
|
|
1929
|
+
"type": "string",
|
|
1930
|
+
"enum": [
|
|
1931
|
+
"status"
|
|
1932
|
+
],
|
|
1933
|
+
"description": "Only status mode is supported. Optional: the server defaults to status."
|
|
1934
|
+
},
|
|
1935
|
+
"contacts": {
|
|
1936
|
+
"type": "array",
|
|
1937
|
+
"minItems": 1,
|
|
1938
|
+
"maxItems": 2000,
|
|
1939
|
+
"description": "Cohort of this segment.",
|
|
1940
|
+
"items": {
|
|
1941
|
+
"type": "object",
|
|
1942
|
+
"required": [
|
|
1943
|
+
"contact_id"
|
|
1944
|
+
],
|
|
1945
|
+
"properties": {
|
|
1946
|
+
"contact_id": {
|
|
1947
|
+
"type": "string",
|
|
1948
|
+
"description": "GetCourse user id."
|
|
1949
|
+
},
|
|
1950
|
+
"deal_id": {
|
|
1951
|
+
"type": "string",
|
|
1952
|
+
"description": "Optional order id to pin."
|
|
1953
|
+
},
|
|
1954
|
+
"transport": {
|
|
1955
|
+
"type": "string",
|
|
1956
|
+
"description": "Optional known transport of the contact."
|
|
1957
|
+
},
|
|
1958
|
+
"dialog_id": {
|
|
1959
|
+
"type": "string",
|
|
1960
|
+
"description": "Optional GetCourse dialog id (resp_id)."
|
|
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
|
+
},
|
|
1983
|
+
"lead_last_active_at": {
|
|
1984
|
+
"type": "string",
|
|
1985
|
+
"format": "date-time",
|
|
1986
|
+
"description": "Legacy ISO timestamp of the lead's last activity."
|
|
1987
|
+
},
|
|
1988
|
+
"segment_entered_at": {
|
|
1989
|
+
"type": "string",
|
|
1990
|
+
"format": "date-time",
|
|
1991
|
+
"description": "Exact ISO timestamp when the contact entered this segment."
|
|
1992
|
+
}
|
|
1993
|
+
},
|
|
1994
|
+
"additionalProperties": false
|
|
1995
|
+
}
|
|
1996
|
+
},
|
|
1997
|
+
"channels": {
|
|
1998
|
+
"type": "array",
|
|
1999
|
+
"items": {
|
|
2000
|
+
"type": "string"
|
|
2001
|
+
},
|
|
2002
|
+
"minItems": 1,
|
|
2003
|
+
"description": "Wave channels (GetCourseTransport: VK|Telegram|MAX|SMS|Email|Site) for analytics."
|
|
2004
|
+
},
|
|
2005
|
+
"deal_fields": {
|
|
2006
|
+
"type": "object",
|
|
2007
|
+
"additionalProperties": {
|
|
2008
|
+
"type": [
|
|
2009
|
+
"string",
|
|
2010
|
+
"number",
|
|
2011
|
+
"boolean",
|
|
2012
|
+
"null"
|
|
2013
|
+
]
|
|
2014
|
+
},
|
|
2015
|
+
"description": "status mode: { \"<numeric fieldId>\": value } applied to every contact's deal."
|
|
2016
|
+
},
|
|
2017
|
+
"funnel": {
|
|
2018
|
+
"type": "string",
|
|
2019
|
+
"maxLength": 200,
|
|
2020
|
+
"description": "Canonical business-funnel key/name for analytics."
|
|
2021
|
+
},
|
|
2022
|
+
"segment": {
|
|
2023
|
+
"type": "string",
|
|
2024
|
+
"maxLength": 200,
|
|
2025
|
+
"description": "Segment label for analytics."
|
|
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
|
+
},
|
|
2032
|
+
"cohort_label": {
|
|
2033
|
+
"type": "string",
|
|
2034
|
+
"maxLength": 200,
|
|
2035
|
+
"description": "Human-readable name of this concrete segment run."
|
|
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
|
+
},
|
|
2042
|
+
"message_variant": {
|
|
2043
|
+
"type": "string",
|
|
2044
|
+
"maxLength": 120,
|
|
2045
|
+
"description": "Welcome-message variant for segment analytics."
|
|
2046
|
+
},
|
|
2047
|
+
"found_count": {
|
|
2048
|
+
"type": "integer",
|
|
2049
|
+
"minimum": 0,
|
|
2050
|
+
"maximum": 10000000,
|
|
2051
|
+
"description": "Contacts found in the source before deduplication and filters."
|
|
2052
|
+
},
|
|
2053
|
+
"product_code": {
|
|
2054
|
+
"type": "string",
|
|
2055
|
+
"maxLength": 100,
|
|
2056
|
+
"pattern": "^[^\\s/]+$",
|
|
2057
|
+
"description": "Product code for the funnel→product analytics dictionary."
|
|
2058
|
+
},
|
|
2059
|
+
"product_name": {
|
|
2060
|
+
"type": "string",
|
|
2061
|
+
"maxLength": 200,
|
|
2062
|
+
"description": "Display name of the analytics product."
|
|
2063
|
+
},
|
|
2064
|
+
"preflight": {
|
|
2065
|
+
"type": "object",
|
|
2066
|
+
"description": "Per-contact pre-send gate.",
|
|
2067
|
+
"properties": {
|
|
2068
|
+
"enabled": {
|
|
2069
|
+
"type": "boolean",
|
|
2070
|
+
"description": "false disables the row-level preflight gate."
|
|
2071
|
+
},
|
|
2072
|
+
"product_title": {
|
|
2073
|
+
"type": "string",
|
|
2074
|
+
"maxLength": 500,
|
|
2075
|
+
"description": "Human product title used to build the match key."
|
|
2076
|
+
},
|
|
2077
|
+
"product_match_key": {
|
|
2078
|
+
"type": "string",
|
|
2079
|
+
"maxLength": 500,
|
|
2080
|
+
"description": "Pre-normalized product match key."
|
|
2081
|
+
},
|
|
2082
|
+
"offer_id": {
|
|
2083
|
+
"type": "integer",
|
|
2084
|
+
"minimum": 1,
|
|
2085
|
+
"description": "Optional GetCourse offer id."
|
|
2086
|
+
},
|
|
2087
|
+
"other_product_active_deal_mode": {
|
|
2088
|
+
"type": "string",
|
|
2089
|
+
"enum": [
|
|
2090
|
+
"warn",
|
|
2091
|
+
"block",
|
|
2092
|
+
"ignore"
|
|
2093
|
+
],
|
|
2094
|
+
"description": "How to handle an active deal for another product."
|
|
2095
|
+
}
|
|
2096
|
+
},
|
|
2097
|
+
"additionalProperties": false
|
|
2098
|
+
},
|
|
2099
|
+
"check_messenger_presence": {
|
|
2100
|
+
"type": "boolean",
|
|
2101
|
+
"description": "Whether to skip contacts without Telegram/Max/VK messenger presence."
|
|
2102
|
+
},
|
|
2103
|
+
"dedup_window_days": {
|
|
2104
|
+
"type": "integer",
|
|
2105
|
+
"minimum": 1,
|
|
2106
|
+
"maximum": 365,
|
|
2107
|
+
"description": "Deduplication window in days. 0 is forbidden for batched wave runs."
|
|
2108
|
+
},
|
|
2109
|
+
"dedup_scope": {
|
|
2110
|
+
"type": "string",
|
|
2111
|
+
"enum": [
|
|
2112
|
+
"any",
|
|
2113
|
+
"same_funnel"
|
|
2114
|
+
],
|
|
2115
|
+
"description": "Deduplicate against any wave or only the same canonical funnel."
|
|
2116
|
+
},
|
|
2117
|
+
"chunk_size": {
|
|
2118
|
+
"type": "integer",
|
|
2119
|
+
"minimum": 1,
|
|
2120
|
+
"maximum": 500,
|
|
2121
|
+
"description": "Contacts per sequential durable-run chunk."
|
|
2122
|
+
}
|
|
2123
|
+
},
|
|
2124
|
+
"additionalProperties": false
|
|
2125
|
+
}
|
|
2126
|
+
},
|
|
2127
|
+
"confirm": {
|
|
2128
|
+
"type": "boolean",
|
|
2129
|
+
"description": "Without true the call is a DRY-RUN: no batch is created and nothing is sent. Valid only at batch level."
|
|
2130
|
+
},
|
|
2131
|
+
"explicit_confirmation": {
|
|
2132
|
+
"type": "boolean",
|
|
2133
|
+
"enum": [
|
|
2134
|
+
true
|
|
2135
|
+
],
|
|
2136
|
+
"description": "Required together with confirm=true for a real batch. MCP-only safety gate; not sent to the backend."
|
|
2137
|
+
},
|
|
2138
|
+
"confirmation_reason": {
|
|
2139
|
+
"type": "string",
|
|
2140
|
+
"description": "Optional human-readable reason accompanying explicit confirmation; not sent to the backend."
|
|
2141
|
+
}
|
|
2142
|
+
},
|
|
2143
|
+
"additionalProperties": false
|
|
2144
|
+
}
|
|
2145
|
+
},
|
|
2146
|
+
{
|
|
2147
|
+
"name": "besales_getcourse_wave_run_batch_status",
|
|
2148
|
+
"description": "Get the aggregate status of an idempotent GetCourse wave-run batch. The queue runs segments sequentially with only one run on the platform; poll this one endpoint instead of collecting segment statuses manually. A batch pauses after two consecutive rejected segments and is resumed with besales_getcourse_wave_run_batch_resume. UNKNOWN and FAILED contacts are never retried automatically. Scope: mcp:platform-setup.",
|
|
2149
|
+
"inputSchema": {
|
|
2150
|
+
"type": "object",
|
|
2151
|
+
"required": [
|
|
2152
|
+
"batch_id"
|
|
2153
|
+
],
|
|
2154
|
+
"properties": {
|
|
2155
|
+
"workspace_id": {
|
|
2156
|
+
"type": "string",
|
|
2157
|
+
"format": "uuid",
|
|
2158
|
+
"description": "Optional override. Normally omit — resolved from the connected session."
|
|
2159
|
+
},
|
|
2160
|
+
"batch_id": {
|
|
2161
|
+
"type": "string",
|
|
2162
|
+
"format": "uuid",
|
|
2163
|
+
"description": "Wave-run batch uuid returned by besales_getcourse_wave_run_batch_start."
|
|
2164
|
+
}
|
|
2165
|
+
},
|
|
2166
|
+
"additionalProperties": false
|
|
2167
|
+
}
|
|
2168
|
+
},
|
|
2169
|
+
{
|
|
2170
|
+
"name": "besales_getcourse_wave_run_batch_cancel",
|
|
2171
|
+
"description": "Cancel a GetCourse wave-run batch. Then poll only besales_getcourse_wave_run_batch_status for the aggregate queue state; do not collect segment statuses manually. UNKNOWN and FAILED contacts are never retried automatically. Scope: mcp:platform-setup.",
|
|
2172
|
+
"inputSchema": {
|
|
2173
|
+
"type": "object",
|
|
2174
|
+
"required": [
|
|
2175
|
+
"batch_id"
|
|
2176
|
+
],
|
|
2177
|
+
"properties": {
|
|
2178
|
+
"workspace_id": {
|
|
2179
|
+
"type": "string",
|
|
2180
|
+
"format": "uuid",
|
|
2181
|
+
"description": "Optional override. Normally omit — resolved from the connected session."
|
|
2182
|
+
},
|
|
2183
|
+
"batch_id": {
|
|
2184
|
+
"type": "string",
|
|
2185
|
+
"format": "uuid",
|
|
2186
|
+
"description": "Wave-run batch uuid."
|
|
2187
|
+
}
|
|
2188
|
+
},
|
|
2189
|
+
"additionalProperties": false
|
|
2190
|
+
}
|
|
2191
|
+
},
|
|
2192
|
+
{
|
|
2193
|
+
"name": "besales_getcourse_wave_run_batch_resume",
|
|
2194
|
+
"description": "Resume a paused GetCourse wave-run batch after two consecutive rejected segments. The queue continues sequentially with one run on the platform; poll only besales_getcourse_wave_run_batch_status. UNKNOWN and FAILED contacts are never retried automatically. Scope: mcp:platform-setup.",
|
|
2195
|
+
"inputSchema": {
|
|
2196
|
+
"type": "object",
|
|
2197
|
+
"required": [
|
|
2198
|
+
"batch_id"
|
|
2199
|
+
],
|
|
2200
|
+
"properties": {
|
|
2201
|
+
"workspace_id": {
|
|
2202
|
+
"type": "string",
|
|
2203
|
+
"format": "uuid",
|
|
2204
|
+
"description": "Optional override. Normally omit — resolved from the connected session."
|
|
2205
|
+
},
|
|
2206
|
+
"batch_id": {
|
|
2207
|
+
"type": "string",
|
|
2208
|
+
"format": "uuid",
|
|
2209
|
+
"description": "Paused wave-run batch uuid."
|
|
2210
|
+
}
|
|
2211
|
+
},
|
|
2212
|
+
"additionalProperties": false
|
|
2213
|
+
}
|
|
2214
|
+
},
|
|
1797
2215
|
{
|
|
1798
2216
|
"name": "besales_wazzup_templates_list",
|
|
1799
2217
|
"description": "List approved WABA templates of a Wazzup platform with usability flags. Returns templateGuid, title, Meta moderation status, bodyText, variableCount (values required) and usable + unsupportedReasons. Only usable=true templates can be sent in a wave; the rest are unapproved or carry a media header / variable URL button, where values would land in the wrong slots. Scope: mcp:platform-setup.",
|
|
@@ -3622,21 +4040,136 @@
|
|
|
3622
4040
|
"null"
|
|
3623
4041
|
]
|
|
3624
4042
|
},
|
|
3625
|
-
"
|
|
4043
|
+
"wave_field_bindings": {
|
|
3626
4044
|
"type": [
|
|
3627
|
-
"
|
|
4045
|
+
"object",
|
|
3628
4046
|
"null"
|
|
3629
4047
|
],
|
|
3630
|
-
"
|
|
3631
|
-
|
|
3632
|
-
|
|
3633
|
-
|
|
3634
|
-
|
|
3635
|
-
|
|
3636
|
-
|
|
3637
|
-
"
|
|
3638
|
-
|
|
3639
|
-
},
|
|
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
|
+
},
|
|
4158
|
+
"field_variable_map": {
|
|
4159
|
+
"type": [
|
|
4160
|
+
"array",
|
|
4161
|
+
"null"
|
|
4162
|
+
],
|
|
4163
|
+
"items": {
|
|
4164
|
+
"type": "object",
|
|
4165
|
+
"properties": {
|
|
4166
|
+
"getcourse_field_name": {
|
|
4167
|
+
"type": "string"
|
|
4168
|
+
},
|
|
4169
|
+
"variable_name": {
|
|
4170
|
+
"type": "string"
|
|
4171
|
+
}
|
|
4172
|
+
},
|
|
3640
4173
|
"required": [
|
|
3641
4174
|
"getcourse_field_name",
|
|
3642
4175
|
"variable_name"
|
|
@@ -3999,6 +4532,54 @@
|
|
|
3999
4532
|
}
|
|
4000
4533
|
}
|
|
4001
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
|
+
},
|
|
4002
4583
|
{
|
|
4003
4584
|
"name": "besales_prompt_patch_apply",
|
|
4004
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, не перечитывай весь контент между батчами.",
|
|
@@ -4104,6 +4685,115 @@
|
|
|
4104
4685
|
}
|
|
4105
4686
|
}
|
|
4106
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
|
+
},
|
|
4107
4797
|
{
|
|
4108
4798
|
"name": "besales_prompt_lint",
|
|
4109
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.",
|
|
@@ -7309,7 +7999,7 @@
|
|
|
7309
7999
|
},
|
|
7310
8000
|
{
|
|
7311
8001
|
"name": "besales_broadcast_analytics_get",
|
|
7312
|
-
"description": "Read-only
|
|
8002
|
+
"description": "Read-only все данные страницы /broadcast-analytics: отчёты, drill-down, справочники сегментов и продуктов, качество данных и подтверждения оплат. Выбери report; общие фильтры совпадают с UI. Scope: read:analytics.",
|
|
7313
8003
|
"inputSchema": {
|
|
7314
8004
|
"type": "object",
|
|
7315
8005
|
"required": [],
|
|
@@ -7320,6 +8010,28 @@
|
|
|
7320
8010
|
"format": "uuid",
|
|
7321
8011
|
"description": "Optional override. Normally omit — defaults to the workspace bound to this session."
|
|
7322
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
|
+
},
|
|
7323
8035
|
"mode": {
|
|
7324
8036
|
"type": "string",
|
|
7325
8037
|
"enum": [
|
|
@@ -7350,40 +8062,280 @@
|
|
|
7350
8062
|
"format": "uuid"
|
|
7351
8063
|
},
|
|
7352
8064
|
"funnel": {
|
|
7353
|
-
"
|
|
7354
|
-
|
|
7355
|
-
|
|
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": "Одна или несколько бизнес-воронок волны."
|
|
7356
8081
|
},
|
|
7357
8082
|
"funnel_mode": {
|
|
7358
8083
|
"type": "string",
|
|
7359
8084
|
"enum": [
|
|
7360
8085
|
"none"
|
|
7361
8086
|
],
|
|
7362
|
-
"description": "
|
|
8087
|
+
"description": "Добавить строки без воронки. Можно сочетать с funnel: значения и NULL объединяются через OR."
|
|
7363
8088
|
},
|
|
7364
8089
|
"segment": {
|
|
7365
|
-
"
|
|
7366
|
-
|
|
7367
|
-
|
|
7368
|
-
|
|
7369
|
-
|
|
7370
|
-
|
|
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
|
+
]
|
|
7371
8105
|
},
|
|
7372
|
-
"
|
|
7373
|
-
"
|
|
7374
|
-
|
|
7375
|
-
|
|
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
|
+
}
|
|
7376
8121
|
],
|
|
7377
|
-
"description": "
|
|
8122
|
+
"description": "Один или несколько ID именованных вариантов рассылки."
|
|
7378
8123
|
},
|
|
7379
|
-
"
|
|
7380
|
-
"
|
|
7381
|
-
|
|
7382
|
-
|
|
8124
|
+
"product": {
|
|
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
|
+
]
|
|
8140
|
+
},
|
|
8141
|
+
"product_mode": {
|
|
8142
|
+
"type": "string",
|
|
8143
|
+
"enum": [
|
|
8144
|
+
"none"
|
|
8145
|
+
],
|
|
8146
|
+
"description": "Добавить строки без продукта. Можно сочетать с product: значения и NULL объединяются через OR."
|
|
8147
|
+
},
|
|
8148
|
+
"view": {
|
|
8149
|
+
"type": "string",
|
|
8150
|
+
"enum": [
|
|
8151
|
+
"cohort",
|
|
7383
8152
|
"period"
|
|
7384
8153
|
],
|
|
7385
8154
|
"default": "period",
|
|
7386
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."
|
|
7387
8339
|
}
|
|
7388
8340
|
}
|
|
7389
8341
|
}
|
|
@@ -7429,8 +8381,21 @@
|
|
|
7429
8381
|
"format": "uuid"
|
|
7430
8382
|
},
|
|
7431
8383
|
"funnel": {
|
|
7432
|
-
"
|
|
7433
|
-
|
|
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
|
+
]
|
|
7434
8399
|
},
|
|
7435
8400
|
"funnel_mode": {
|
|
7436
8401
|
"type": "string",
|
|
@@ -7439,18 +8404,137 @@
|
|
|
7439
8404
|
]
|
|
7440
8405
|
},
|
|
7441
8406
|
"segment": {
|
|
7442
|
-
"
|
|
7443
|
-
|
|
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
|
+
]
|
|
7444
8439
|
},
|
|
7445
8440
|
"product": {
|
|
7446
|
-
"
|
|
7447
|
-
|
|
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
|
+
]
|
|
7448
8456
|
},
|
|
7449
8457
|
"product_mode": {
|
|
7450
8458
|
"type": "string",
|
|
7451
8459
|
"enum": [
|
|
7452
8460
|
"none"
|
|
7453
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"
|
|
7454
8538
|
}
|
|
7455
8539
|
}
|
|
7456
8540
|
}
|
|
@@ -7580,6 +8664,16 @@
|
|
|
7580
8664
|
"hidden"
|
|
7581
8665
|
],
|
|
7582
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": "Лимит токенов этого режима. Пусто → общий."
|
|
7583
8677
|
}
|
|
7584
8678
|
},
|
|
7585
8679
|
"description": "Саммари дня. Пишется ПОСЛЕ summary_time по локальному времени канала.",
|
|
@@ -7623,7 +8717,7 @@
|
|
|
7623
8717
|
"min_new_events": {
|
|
7624
8718
|
"type": "integer",
|
|
7625
8719
|
"minimum": 1,
|
|
7626
|
-
"description": "Порог новых событий: не набрано — разбор не
|
|
8720
|
+
"description": "Порог новых событий: не набрано — разбор не запускается. Независимо от порога разбор идёт только при наличии реплики клиента в окне."
|
|
7627
8721
|
},
|
|
7628
8722
|
"output": {
|
|
7629
8723
|
"type": "string",
|
|
@@ -7632,6 +8726,16 @@
|
|
|
7632
8726
|
"hidden"
|
|
7633
8727
|
],
|
|
7634
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": "Лимит токенов этого режима. Пусто → общий."
|
|
7635
8739
|
}
|
|
7636
8740
|
},
|
|
7637
8741
|
"description": "«Статус коммуникации» — раз в час внутри рабочего окна и только при новых сообщениях.",
|
|
@@ -7659,7 +8763,7 @@
|
|
|
7659
8763
|
"type": "string",
|
|
7660
8764
|
"minLength": 1
|
|
7661
8765
|
},
|
|
7662
|
-
"description": "ID воронок CRM. Пусто =
|
|
8766
|
+
"description": "ID воронок CRM. Разбираются ТОЛЬКО перечисленные. Пусто = не выбрано (включённая задача вернёт 400), а НЕ «все»."
|
|
7663
8767
|
},
|
|
7664
8768
|
"managers": {
|
|
7665
8769
|
"type": "array",
|
|
@@ -7667,7 +8771,7 @@
|
|
|
7667
8771
|
"type": "integer",
|
|
7668
8772
|
"minimum": 1
|
|
7669
8773
|
},
|
|
7670
|
-
"description": "ASSIGNED_BY_ID ответственных Bitrix (не наши id — бери из besales_crm_operator_list). Пусто =
|
|
8774
|
+
"description": "ASSIGNED_BY_ID ответственных Bitrix (не наши id — бери из besales_crm_operator_list). Разбираются ТОЛЬКО перечисленные. Пусто = не выбрано (включённая задача вернёт 400), а НЕ «все»."
|
|
7671
8775
|
},
|
|
7672
8776
|
"daily_prompt": {
|
|
7673
8777
|
"type": [
|
|
@@ -7675,7 +8779,7 @@
|
|
|
7675
8779
|
"null"
|
|
7676
8780
|
],
|
|
7677
8781
|
"minLength": 1,
|
|
7678
|
-
"description": "Переопределение системного промпта саммари дня. Пусто =
|
|
8782
|
+
"description": "Переопределение системного промпта саммари дня. Пусто = встроенный: он доменно-нейтрален, но состав срезов из кейса Lavsit. null — СНЯТЬ переопределение (вернуть встроенный промпт)."
|
|
7679
8783
|
},
|
|
7680
8784
|
"hourly_prompt": {
|
|
7681
8785
|
"type": [
|
|
@@ -7691,6 +8795,138 @@
|
|
|
7691
8795
|
}
|
|
7692
8796
|
}
|
|
7693
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
|
+
}
|
|
7694
8930
|
}
|
|
7695
8931
|
],
|
|
7696
8932
|
"resources": [
|
|
@@ -7882,9 +9118,9 @@
|
|
|
7882
9118
|
}
|
|
7883
9119
|
],
|
|
7884
9120
|
"summary": {
|
|
7885
|
-
"total_tools":
|
|
9121
|
+
"total_tools": 169,
|
|
7886
9122
|
"tools_by_category": {
|
|
7887
|
-
"getcourse_wave":
|
|
9123
|
+
"getcourse_wave": 10,
|
|
7888
9124
|
"files_upload": 3,
|
|
7889
9125
|
"platform_provisioning": 3,
|
|
7890
9126
|
"crm_provisioning": 6,
|
|
@@ -7905,7 +9141,7 @@
|
|
|
7905
9141
|
"feedback_sheets": 5,
|
|
7906
9142
|
"facts_management": 2,
|
|
7907
9143
|
"prompt_lint_standalone": 1,
|
|
7908
|
-
"prompt_drafts":
|
|
9144
|
+
"prompt_drafts": 7,
|
|
7909
9145
|
"workbook_ingestion": 3,
|
|
7910
9146
|
"knowledge_spaces": 6,
|
|
7911
9147
|
"knowledge_documents": 4,
|