@continuumdao/continuum-node-sdk 1.3.39 → 1.3.40

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.
Files changed (158) hide show
  1. package/dist/agent-host-catalog.json +1246 -52
  2. package/dist/core/chart/ohlcv-session-store.d.ts +2 -0
  3. package/dist/core/chart/ohlcv-session-store.d.ts.map +1 -1
  4. package/dist/core/chart/ohlcv-session-store.js +58 -6
  5. package/dist/core/chart/ohlcv-session-store.js.map +1 -1
  6. package/dist/mcp/agent-chart-data-access-gate.d.ts +1 -1
  7. package/dist/mcp/agent-chart-data-access-gate.d.ts.map +1 -1
  8. package/dist/mcp/agent-chart-data-access-gate.js.map +1 -1
  9. package/dist/mcp/agent-cron-jobs.d.ts +1 -1
  10. package/dist/mcp/agent-cron-jobs.d.ts.map +1 -1
  11. package/dist/mcp/agent-cron-jobs.js +9 -0
  12. package/dist/mcp/agent-cron-jobs.js.map +1 -1
  13. package/dist/mcp/agent-environment-variables.d.ts +1 -1
  14. package/dist/mcp/agent-environment-variables.d.ts.map +1 -1
  15. package/dist/mcp/agent-environment-variables.js +3 -0
  16. package/dist/mcp/agent-environment-variables.js.map +1 -1
  17. package/dist/mcp/agent-host-catalog.d.ts +15 -2
  18. package/dist/mcp/agent-host-catalog.d.ts.map +1 -1
  19. package/dist/mcp/agent-host-catalog.js +52 -12
  20. package/dist/mcp/agent-host-catalog.js.map +1 -1
  21. package/dist/mcp/agent-input-coerce-register.d.ts +8 -0
  22. package/dist/mcp/agent-input-coerce-register.d.ts.map +1 -0
  23. package/dist/mcp/agent-input-coerce-register.js +22 -0
  24. package/dist/mcp/agent-input-coerce-register.js.map +1 -0
  25. package/dist/mcp/agent-input-coerce.d.ts +13 -0
  26. package/dist/mcp/agent-input-coerce.d.ts.map +1 -0
  27. package/dist/mcp/agent-input-coerce.js +286 -0
  28. package/dist/mcp/agent-input-coerce.js.map +1 -0
  29. package/dist/mcp/agent-mcp-servers.d.ts +1 -1
  30. package/dist/mcp/agent-mcp-servers.d.ts.map +1 -1
  31. package/dist/mcp/agent-mcp-servers.js +7 -0
  32. package/dist/mcp/agent-mcp-servers.js.map +1 -1
  33. package/dist/mcp/agent-skills.d.ts +1 -1
  34. package/dist/mcp/agent-skills.d.ts.map +1 -1
  35. package/dist/mcp/agent-skills.js +5 -0
  36. package/dist/mcp/agent-skills.js.map +1 -1
  37. package/dist/mcp/agent-webhooks.d.ts +1 -1
  38. package/dist/mcp/agent-webhooks.d.ts.map +1 -1
  39. package/dist/mcp/agent-webhooks.js +9 -0
  40. package/dist/mcp/agent-webhooks.js.map +1 -1
  41. package/dist/mcp/chart.d.ts +1 -1
  42. package/dist/mcp/chart.d.ts.map +1 -1
  43. package/dist/mcp/chart.js +38 -0
  44. package/dist/mcp/chart.js.map +1 -1
  45. package/dist/mcp/coinbase-public/register.d.ts +1 -1
  46. package/dist/mcp/coinbase-public/register.d.ts.map +1 -1
  47. package/dist/mcp/coinbase-public/register.js +6 -1
  48. package/dist/mcp/coinbase-public/register.js.map +1 -1
  49. package/dist/mcp/coinmarketcap-public/register.d.ts +1 -1
  50. package/dist/mcp/coinmarketcap-public/register.d.ts.map +1 -1
  51. package/dist/mcp/coinmarketcap-public/register.js +14 -1
  52. package/dist/mcp/coinmarketcap-public/register.js.map +1 -1
  53. package/dist/mcp/deferred/discovery-tools.d.ts +1 -1
  54. package/dist/mcp/deferred/discovery-tools.d.ts.map +1 -1
  55. package/dist/mcp/deferred/discovery-tools.js +57 -15
  56. package/dist/mcp/deferred/discovery-tools.js.map +1 -1
  57. package/dist/mcp/deferred/session.d.ts +15 -2
  58. package/dist/mcp/deferred/session.d.ts.map +1 -1
  59. package/dist/mcp/deferred/session.js +126 -78
  60. package/dist/mcp/deferred/session.js.map +1 -1
  61. package/dist/mcp/deferred/tool-group-map.d.ts +15 -2
  62. package/dist/mcp/deferred/tool-group-map.d.ts.map +1 -1
  63. package/dist/mcp/deferred/tool-group-map.js +546 -72
  64. package/dist/mcp/deferred/tool-group-map.js.map +1 -1
  65. package/dist/mcp/defi/bitquery-api-key.d.ts +1 -1
  66. package/dist/mcp/defi/bitquery-api-key.d.ts.map +1 -1
  67. package/dist/mcp/defi/discovery.d.ts +1 -1
  68. package/dist/mcp/defi/discovery.d.ts.map +1 -1
  69. package/dist/mcp/defi/discovery.js +15 -3
  70. package/dist/mcp/defi/discovery.js.map +1 -1
  71. package/dist/mcp/defi/handler.d.ts +13 -6
  72. package/dist/mcp/defi/handler.d.ts.map +1 -1
  73. package/dist/mcp/defi/mcp-json-schema.d.ts +23 -0
  74. package/dist/mcp/defi/mcp-json-schema.d.ts.map +1 -0
  75. package/dist/mcp/defi/mcp-json-schema.js +173 -0
  76. package/dist/mcp/defi/mcp-json-schema.js.map +1 -0
  77. package/dist/mcp/defi/register-protocol-tools.d.ts +1 -1
  78. package/dist/mcp/defi/register-protocol-tools.d.ts.map +1 -1
  79. package/dist/mcp/defi/register-protocol-tools.js +41 -4
  80. package/dist/mcp/defi/register-protocol-tools.js.map +1 -1
  81. package/dist/mcp/defi/the-graph-api-key.d.ts +1 -1
  82. package/dist/mcp/defi/the-graph-api-key.d.ts.map +1 -1
  83. package/dist/mcp/defi/tool-schemas.d.ts +4 -3
  84. package/dist/mcp/defi/tool-schemas.d.ts.map +1 -1
  85. package/dist/mcp/defi/tool-schemas.js +6 -4
  86. package/dist/mcp/defi/tool-schemas.js.map +1 -1
  87. package/dist/mcp/defi/uniswap-api-key.d.ts +1 -1
  88. package/dist/mcp/defi/uniswap-api-key.d.ts.map +1 -1
  89. package/dist/mcp/defi/venice-api-key.d.ts +1 -1
  90. package/dist/mcp/defi/venice-api-key.d.ts.map +1 -1
  91. package/dist/mcp/group.d.ts +1 -1
  92. package/dist/mcp/group.d.ts.map +1 -1
  93. package/dist/mcp/group.js +3 -3
  94. package/dist/mcp/group.js.map +1 -1
  95. package/dist/mcp/keygen-messaging.d.ts +1 -1
  96. package/dist/mcp/keygen-messaging.d.ts.map +1 -1
  97. package/dist/mcp/keygen-messaging.js +10 -0
  98. package/dist/mcp/keygen-messaging.js.map +1 -1
  99. package/dist/mcp/keygen.d.ts +1 -1
  100. package/dist/mcp/keygen.d.ts.map +1 -1
  101. package/dist/mcp/keygen.js +6 -3
  102. package/dist/mcp/keygen.js.map +1 -1
  103. package/dist/mcp/management-signer.d.ts +1 -1
  104. package/dist/mcp/management-signer.d.ts.map +1 -1
  105. package/dist/mcp/management-signer.js +1 -1
  106. package/dist/mcp/management-signer.js.map +1 -1
  107. package/dist/mcp/mcp-resources.d.ts +1 -1
  108. package/dist/mcp/mcp-resources.d.ts.map +1 -1
  109. package/dist/mcp/mpc.d.ts +1 -1
  110. package/dist/mcp/mpc.d.ts.map +1 -1
  111. package/dist/mcp/mpc.js +36 -5
  112. package/dist/mcp/mpc.js.map +1 -1
  113. package/dist/mcp/node.d.ts +1 -1
  114. package/dist/mcp/node.d.ts.map +1 -1
  115. package/dist/mcp/node.js +7 -1
  116. package/dist/mcp/node.js.map +1 -1
  117. package/dist/mcp/ohlcv-session-wrapper.d.ts +1 -2
  118. package/dist/mcp/ohlcv-session-wrapper.d.ts.map +1 -1
  119. package/dist/mcp/ohlcv-session-wrapper.js.map +1 -1
  120. package/dist/mcp/register.d.ts +1 -1
  121. package/dist/mcp/register.d.ts.map +1 -1
  122. package/dist/mcp/register.js +4 -6
  123. package/dist/mcp/register.js.map +1 -1
  124. package/dist/mcp/registry/address-book.d.ts +1 -1
  125. package/dist/mcp/registry/address-book.d.ts.map +1 -1
  126. package/dist/mcp/registry/address-book.js +1 -0
  127. package/dist/mcp/registry/address-book.js.map +1 -1
  128. package/dist/mcp/registry/networks.d.ts +1 -1
  129. package/dist/mcp/registry/networks.d.ts.map +1 -1
  130. package/dist/mcp/registry/networks.js +3 -1
  131. package/dist/mcp/registry/networks.js.map +1 -1
  132. package/dist/mcp/registry/tokens.d.ts +1 -1
  133. package/dist/mcp/registry/tokens.d.ts.map +1 -1
  134. package/dist/mcp/registry/tokens.js +2 -0
  135. package/dist/mcp/registry/tokens.js.map +1 -1
  136. package/dist/mcp/server/http-transport.d.ts +1 -1
  137. package/dist/mcp/server/http-transport.d.ts.map +1 -1
  138. package/dist/mcp/server/http-transport.js +30 -118
  139. package/dist/mcp/server/http-transport.js.map +1 -1
  140. package/dist/mcp/server/index.js +8 -1
  141. package/dist/mcp/server/index.js.map +1 -1
  142. package/dist/mcp/ta/register.d.ts +1 -1
  143. package/dist/mcp/ta/register.d.ts.map +1 -1
  144. package/dist/mcp/ta/register.js +3 -1
  145. package/dist/mcp/ta/register.js.map +1 -1
  146. package/dist/mcp/ta-server/index.js +3 -4
  147. package/dist/mcp/ta-server/index.js.map +1 -1
  148. package/dist/mcp/tool-utils.d.ts +1 -1
  149. package/dist/mcp/tool-utils.d.ts.map +1 -1
  150. package/dist/mcp/trade-tools.d.ts +1 -1
  151. package/dist/mcp/trade-tools.d.ts.map +1 -1
  152. package/dist/mcp/trade-tools.js +5 -0
  153. package/dist/mcp/trade-tools.js.map +1 -1
  154. package/dist/mcp/vpn.d.ts +1 -1
  155. package/dist/mcp/vpn.d.ts.map +1 -1
  156. package/dist/mcp/vpn.js +9 -1
  157. package/dist/mcp/vpn.js.map +1 -1
  158. package/package.json +7 -4
@@ -7,36 +7,192 @@ export const DEFAULT_PINNED_GROUPS = [
7
7
  'node_info',
8
8
  'management_signer',
9
9
  'keygen',
10
- 'defi_discovery',
11
10
  ];
12
11
  /** Bundles surfaced in list_tool_groups as easy chat entry points (not pinned at init). */
13
- export const RECOMMENDED_CHAT_BUNDLES = ['chart'];
12
+ export const RECOMMENDED_CHAT_BUNDLES = ['chart:core', 'defi_discovery'];
13
+ /**
14
+ * Legacy / shorthand groupIds expanded by activate_tool_group and host LLM filter.
15
+ * `chart` → plot/fetch only (not full analyze/drawings/trade).
16
+ * `defi:<protocol>` (exactly two segments) → market-data pack only — handled in resolveActivateGroupIds.
17
+ */
18
+ export const GROUP_ACTIVATE_ALIASES = {
19
+ chart: ['chart:core'],
20
+ };
14
21
  /** Tags applied to all tools in a group for search_continuum_tools. */
15
22
  export const GROUP_SEARCH_TAGS = {
16
- chart: [
23
+ discovery: [
24
+ 'search tools',
25
+ 'tool groups',
26
+ 'activate bundle',
27
+ 'load tools',
28
+ 'discover tools',
29
+ 'list bundles',
30
+ ],
31
+ 'chart:core': [
17
32
  'chart',
18
33
  'ohlcv',
19
34
  'plot',
20
35
  'graph',
21
36
  'candlestick',
22
37
  'candle',
38
+ 'prepare chart',
39
+ 'render chart',
40
+ 'perp',
41
+ ],
42
+ 'chart:analyze': [
23
43
  'analysis',
24
44
  'analyze',
25
45
  'trend',
26
- 'fibonacci',
27
- 'drawings',
28
- 'levels',
29
46
  'momentum',
30
47
  'pattern',
31
48
  'elliott',
32
49
  'wave',
33
- 'price',
50
+ 'fibonacci',
51
+ 'levels',
52
+ 'indicator',
53
+ 'ichimoku',
54
+ 'bollinger',
55
+ 'macd',
56
+ 'obv',
57
+ 'rsi',
58
+ 'ema',
59
+ 'sma',
60
+ 'donchian',
61
+ 'supertrend',
62
+ ],
63
+ 'chart:drawings': [
64
+ 'drawings',
65
+ 'overlay',
66
+ 'apply drawings',
67
+ 'pattern overlay',
68
+ 'trend lines',
69
+ 'key levels',
70
+ ],
71
+ 'chart:trade': [
34
72
  'trade',
73
+ 'trade ideas',
74
+ 'build trade',
75
+ 'multisign',
76
+ 'consensus trade',
77
+ 'tpsl',
78
+ ],
79
+ node_info: [
80
+ 'version',
81
+ 'health',
82
+ 'node health',
83
+ 'status',
84
+ 'connectivity',
85
+ 'uptime',
86
+ 'logs',
87
+ 'machine',
88
+ 'node id',
89
+ 'peers',
90
+ ],
91
+ management_signer: ['management', 'signer', 'ed25519', 'preferred signer', 'not keygen'],
92
+ group: [
93
+ 'group',
94
+ 'groups',
95
+ 'group request',
96
+ 'peers',
97
+ 'formation',
98
+ 'mpc group',
99
+ 'create group',
100
+ 'accept group',
101
+ 'list groups',
102
+ 'my groups',
103
+ ],
104
+ keygen: [
105
+ 'keygen',
106
+ 'key gen',
107
+ 'keygen request',
108
+ 'key gen request',
109
+ 'mpc key',
110
+ 'generate key',
111
+ 'preferred keygen',
112
+ 'wallet key',
113
+ ],
114
+ keygen_billing: ['billing', 'linea', 'mpa wallet', 'vpn billing', 'top up', 'overage', 'deposit'],
115
+ keygen_messaging: [
116
+ 'message',
117
+ 'messaging',
118
+ 'thread',
119
+ 'chat',
120
+ 'attachment',
121
+ 'inbox',
122
+ 'keygen message',
123
+ 'key gen message',
124
+ ],
125
+ registry_chains: [
126
+ 'chain',
127
+ 'registry',
128
+ 'rpc',
129
+ 'gas config',
130
+ 'evm chain',
131
+ 'network',
132
+ 'add chain',
133
+ 'configure chain',
134
+ 'blockchain',
135
+ // Brand names that are also EVM networks — prefer chain registry over DeFi load.
136
+ 'hyperliquid',
137
+ 'hyperevm',
138
+ 'hyperliquid chain',
139
+ 'hyperevm chain',
140
+ ],
141
+ registry_address_book: ['address book', 'contact', 'contacts', 'saved address', 'known address'],
142
+ registry_tokens: ['token', 'tokens', 'token registry', 'saved token', 'erc20 registry'],
143
+ mpc_read: [
35
144
  'multisign',
145
+ 'multisign request',
146
+ 'sign request',
147
+ 'sign requests',
148
+ 'status',
149
+ 'pending',
150
+ 'gas options',
151
+ 'ready',
152
+ 'sign transaction',
153
+ ],
154
+ // Keep agree phrases on sign_request_agree tool tags — not bare "agree" group-wide.
155
+ mpc_agree: ['reject', 'shelve', 'sign request agree', 'multisign approve', 'join agree'],
156
+ mpc_execute: [
157
+ 'broadcast',
158
+ 'execute',
159
+ 'trigger',
160
+ 'get sig',
161
+ 'bump',
162
+ 'cancel',
163
+ 'tx params',
164
+ 'gas',
165
+ ],
166
+ mpc_compose: [
167
+ 'compose',
168
+ 'forge',
169
+ 'transfer',
170
+ 'native gas',
171
+ 'erc20',
172
+ 'erc721',
173
+ 'joined multisign',
36
174
  'swap',
175
+ 'send',
176
+ 'transaction',
177
+ 'create sign request',
178
+ 'create multisign',
179
+ ],
180
+ agent_config: ['environment variable', 'env var', 'agent config', 'secrets'],
181
+ agent_mcp_servers: ['mcp server', 'mcp catalog', 'add mcp', 'remove mcp', 'coinmarketcap', 'flags'],
182
+ agent_skills: [
183
+ 'skill',
184
+ 'skills',
185
+ 'markdown guidance',
186
+ 'agent skill',
187
+ 'agent guidance',
188
+ 'skill file',
189
+ 'markdown skill',
37
190
  ],
38
- mpc_read: ['multisign', 'sign', 'status', 'pending'],
39
- group: ['group', 'peers', 'formation'],
191
+ agent_cron: ['cron', 'schedule', 'scheduled job', 'cron job', 'every n minutes'],
192
+ agent_webhooks: ['webhook', 'inbound webhook', 'automation trigger', 'webhook catalog'],
193
+ // No bare protocol brands here — they collide with chain names (e.g. Hyperliquid).
194
+ // Brands live on list_defi_protocols / load_defi_protocol tool tags only.
195
+ defi_discovery: ['defi', 'protocol', 'load protocol', 'list protocols', 'protocol tools'],
40
196
  };
41
197
  /** Tools visible at init when their group is pinned (subset of full group). */
42
198
  export const PINNED_TOOL_NAMES = new Set([
@@ -68,24 +224,27 @@ export const GROUP_DESCRIPTIONS = {
68
224
  discovery: 'Search and activate Continuum MCP tool bundles',
69
225
  node_info: 'Node version, health, connectivity, logs, configured peers',
70
226
  management_signer: 'Ed25519 management signer lifecycle and preferred signer',
71
- group: 'MPC group creation and agreement',
72
- keygen: 'KeyGen request, agree, list, fetch results, preferred KeyGen',
227
+ group: 'MPC group requests: create/list group requests and agree/accept pending group requests',
228
+ keygen: 'KeyGen requests: create/list keygen requests, agree/accept pending keygen, fetch results, preferred KeyGen',
73
229
  keygen_billing: 'Linea MPA wallet, KeyGen/VPN billing multisign builders',
74
230
  keygen_messaging: 'KeyGen message threads between nodes',
75
231
  registry_chains: 'EVM chain registry (RPC, gas config)',
76
232
  registry_address_book: 'Known address book',
77
233
  registry_tokens: 'Saved token registry',
78
- mpc_read: 'MultiSign list, get, status, gas options',
79
- mpc_agree: 'MultiSign agree, reject, shelve',
80
- mpc_execute: 'GetSig trigger, broadcast, bump/cancel, tx params',
81
- mpc_compose: 'Compose, forge, join batch, native/ERC20 transfers',
234
+ mpc_read: 'MultiSign / sign requests: list, get, status, gas options',
235
+ mpc_agree: 'Agree to / reject / shelve a pending MultiSign (sign) request',
236
+ mpc_execute: 'Get Sig trigger, broadcast, bump/cancel, tx params',
237
+ mpc_compose: 'Create Multisign / sign requests: compose, forge, join batch, transfers',
82
238
  agent_config: 'Agent environment variables',
83
239
  agent_mcp_servers: 'Agent MCP server catalog and flags',
84
240
  agent_skills: 'Agent skills (markdown guidance)',
85
241
  agent_cron: 'Scheduled agent cron jobs',
86
242
  agent_webhooks: 'Inbound webhooks for agent automation',
87
243
  defi_discovery: 'List and load DeFi protocol tool bundles',
88
- chart: 'OHLCV charts, analysis, drawings, and trade builds from analyze_* — call activate_tool_group({ groupId: "chart" }) before use',
244
+ 'chart:core': 'Plot/prepare OHLCV charts (prepare_chart*)activate chart:core; alias groupId "chart" expands here only',
245
+ 'chart:analyze': 'Structured analyze_* OHLCV analysis (JSON, no chart render)',
246
+ 'chart:drawings': 'calculate_* / apply_* drawing overlays on an existing chart',
247
+ 'chart:trade': 'Trade ideas, build_trade_from_*, submit_trade_from_consensus, Uniswap TPSL monitor',
89
248
  };
90
249
  /** Static tool name → groupId on continuum main `/mcp` (DeFi protocol tools use defi:<protocolId> via metadata). */
91
250
  export const TOOL_GROUP_BY_NAME = {
@@ -226,71 +385,386 @@ export const TOOL_GROUP_BY_NAME = {
226
385
  search_continuum_tools: 'discovery',
227
386
  activate_tool_group: 'discovery',
228
387
  deactivate_tool_group: 'discovery',
229
- // chart
230
- prepare_chart_from_rows: 'chart',
231
- prepare_chart: 'chart',
232
- list_chart_analysis_options: 'chart',
233
- analyze_trend_structure: 'chart',
234
- analyze_elliott_waves: 'chart',
235
- analyze_key_levels: 'chart',
236
- analyze_key_level_fibonacci: 'chart',
237
- analyze_momentum: 'chart',
238
- analyze_liquidity_depth: 'chart',
239
- apply_liquidity_depth_drawings: 'chart',
240
- analyze_divergence: 'chart',
241
- calculate_divergence_drawings: 'chart',
242
- apply_divergence_drawings: 'chart',
243
- analyze_range_volatility: 'chart',
244
- analyze_bollinger_bands: 'chart',
245
- analyze_donchian_breakout: 'chart',
246
- analyze_supertrend: 'chart',
247
- analyze_ichimoku: 'chart',
248
- analyze_z_score: 'chart',
249
- analyze_moving_averages: 'chart',
250
- analyze_candlestick_patterns: 'chart',
251
- analyze_chart_patterns: 'chart',
252
- analyze_time_series_trend: 'chart',
253
- analyze_time_series_momentum: 'chart',
254
- analyze_time_series_stats: 'chart',
255
- list_chart_customization_options: 'chart',
256
- calculate_key_levels: 'chart',
257
- calculate_pivot_points: 'chart',
258
- calculate_fibonacci_range: 'chart',
259
- calculate_trend_lines: 'chart',
260
- calculate_chart_pattern_drawings: 'chart',
261
- calculate_elliott_wave_drawings: 'chart',
262
- apply_chart_pattern_drawings: 'chart',
263
- apply_elliott_wave_drawings: 'chart',
264
- apply_trend_line_drawings: 'chart',
265
- apply_key_level_drawings: 'chart',
266
- apply_key_fib_drawings: 'chart',
267
- apply_chart_drawings: 'chart',
268
- list_trade_ideas: 'chart',
269
- build_trade_from_trade_idea: 'chart',
270
- build_trade_from_chart_pattern: 'chart',
271
- build_trade_from_candlestick: 'chart',
272
- build_trade_from_key_levels: 'chart',
273
- build_trade_from_momentum: 'chart',
274
- build_trade_from_divergence: 'chart',
275
- evaluate_uniswap_tpsl_monitor: 'chart',
388
+ // chart packs (slim LLM exposure — do not use bare "chart" as a tool group)
389
+ prepare_chart_from_rows: 'chart:core',
390
+ prepare_chart: 'chart:core',
391
+ list_chart_analysis_options: 'chart:core',
392
+ list_chart_customization_options: 'chart:core',
393
+ analyze_trend_structure: 'chart:analyze',
394
+ analyze_elliott_waves: 'chart:analyze',
395
+ analyze_key_levels: 'chart:analyze',
396
+ analyze_key_level_fibonacci: 'chart:analyze',
397
+ analyze_momentum: 'chart:analyze',
398
+ analyze_liquidity_depth: 'chart:analyze',
399
+ analyze_divergence: 'chart:analyze',
400
+ analyze_range_volatility: 'chart:analyze',
401
+ analyze_bollinger_bands: 'chart:analyze',
402
+ analyze_donchian_breakout: 'chart:analyze',
403
+ analyze_supertrend: 'chart:analyze',
404
+ analyze_ichimoku: 'chart:analyze',
405
+ analyze_z_score: 'chart:analyze',
406
+ analyze_moving_averages: 'chart:analyze',
407
+ analyze_candlestick_patterns: 'chart:analyze',
408
+ analyze_chart_patterns: 'chart:analyze',
409
+ analyze_time_series_trend: 'chart:analyze',
410
+ analyze_time_series_momentum: 'chart:analyze',
411
+ analyze_time_series_stats: 'chart:analyze',
412
+ apply_liquidity_depth_drawings: 'chart:drawings',
413
+ calculate_divergence_drawings: 'chart:drawings',
414
+ apply_divergence_drawings: 'chart:drawings',
415
+ calculate_key_levels: 'chart:drawings',
416
+ calculate_pivot_points: 'chart:drawings',
417
+ calculate_fibonacci_range: 'chart:drawings',
418
+ calculate_trend_lines: 'chart:drawings',
419
+ calculate_chart_pattern_drawings: 'chart:drawings',
420
+ calculate_elliott_wave_drawings: 'chart:drawings',
421
+ apply_chart_pattern_drawings: 'chart:drawings',
422
+ apply_elliott_wave_drawings: 'chart:drawings',
423
+ apply_trend_line_drawings: 'chart:drawings',
424
+ apply_key_level_drawings: 'chart:drawings',
425
+ apply_key_fib_drawings: 'chart:drawings',
426
+ apply_chart_drawings: 'chart:drawings',
427
+ list_trade_ideas: 'chart:trade',
428
+ build_trade_from_trade_idea: 'chart:trade',
429
+ build_trade_from_chart_pattern: 'chart:trade',
430
+ build_trade_from_candlestick: 'chart:trade',
431
+ build_trade_from_key_levels: 'chart:trade',
432
+ build_trade_from_momentum: 'chart:trade',
433
+ build_trade_from_divergence: 'chart:trade',
434
+ evaluate_uniswap_tpsl_monitor: 'chart:trade',
276
435
  register_uniswap_tpsl_monitor_cron: 'agent_cron',
277
- submit_trade_from_consensus: 'chart',
436
+ submit_trade_from_consensus: 'chart:trade',
278
437
  };
279
438
  export const TOOL_SEARCH_TAGS = {
280
- get_preferred_key_gen: ['keygen', 'key gen', 'preferred keygen', 'mpc key'],
439
+ // discovery
440
+ search_continuum_tools: ['search tools', 'find tools', 'tool search', 'what tools'],
441
+ list_tool_groups: ['tool groups', 'list bundles', 'available bundles'],
442
+ activate_tool_group: ['activate bundle', 'load tools', 'enable group'],
443
+ deactivate_tool_group: ['deactivate bundle', 'unload tools', 'disable group'],
444
+ // preferred key / signer
445
+ get_preferred_key_gen: [
446
+ 'keygen',
447
+ 'key gen',
448
+ 'preferred keygen',
449
+ 'mpc key',
450
+ 'default keygen',
451
+ 'which keygen',
452
+ ],
453
+ post_preferred_key_gen: ['set preferred keygen', 'preferred keygen', 'default keygen'],
281
454
  get_preferred_management_signer: [
282
455
  'management',
283
456
  'ed25519',
284
457
  'signer',
458
+ 'preferred signer',
459
+ 'not keygen',
460
+ ],
461
+ set_preferred_management_signer: [
462
+ 'preferred signer',
463
+ 'set preferred signer',
464
+ 'management signer',
285
465
  'not keygen',
286
466
  ],
287
467
  get_configured_node_keys: ['group', 'peers', 'configured', 'node keys'],
288
- prepare_chart: ['chart', 'plot', 'ohlcv'],
289
- prepare_chart_from_rows: ['chart', 'plot', 'ohlcv'],
290
- list_chart_analysis_options: ['chart', 'analysis'],
291
- build_trade_from_trade_idea: ['chart', 'trade', 'multisign'],
292
- list_trade_ideas: ['chart', 'trade'],
468
+ // node health / info
469
+ get_health: ['health', 'node health', 'status', 'is node ok', 'readiness'],
470
+ get_connectivity_health: ['connectivity', 'latency', 'peer health', 'ping'],
471
+ get_logs: ['logs', 'node logs', 'errors'],
472
+ node_id: ['node id', 'my node', 'public key'],
473
+ version: ['version', 'node version'],
474
+ get_machine_info: ['machine', 'cpu', 'memory', 'disk', 'vps'],
475
+ // chart entry + trade builds (multisign kept here, not on chart group)
476
+ prepare_chart: ['chart', 'plot', 'ohlcv', 'candlestick'],
477
+ prepare_chart_from_rows: ['chart', 'plot', 'ohlcv', 'candlestick'],
478
+ list_chart_analysis_options: ['chart', 'analysis', 'analysis options'],
479
+ list_chart_customization_options: ['chart', 'indicators', 'customization', 'overlays'],
480
+ list_trade_ideas: ['chart', 'trade', 'trade ideas'],
481
+ build_trade_from_trade_idea: ['chart', 'trade', 'multisign', 'build trade'],
482
+ build_trade_from_chart_pattern: ['chart', 'trade', 'multisign', 'chart pattern trade'],
483
+ build_trade_from_candlestick: ['chart', 'trade', 'multisign', 'candlestick trade'],
484
+ build_trade_from_key_levels: ['chart', 'trade', 'multisign', 'key levels trade'],
485
+ build_trade_from_momentum: ['chart', 'trade', 'multisign', 'momentum trade'],
486
+ build_trade_from_divergence: ['chart', 'trade', 'multisign', 'divergence trade'],
487
+ submit_trade_from_consensus: ['consensus trade', 'submit trade', 'cron trade'],
488
+ evaluate_uniswap_tpsl_monitor: [
489
+ 'tpsl',
490
+ 'take profit',
491
+ 'stop loss',
492
+ 'uniswap monitor',
493
+ ],
494
+ // registries
495
+ get_chain_registry: ['chain', 'chains', 'rpc', 'gas', 'registry', 'hyperliquid', 'hyperevm'],
496
+ add_to_chain_registry: [
497
+ 'chain',
498
+ 'add chain',
499
+ 'rpc',
500
+ 'registry',
501
+ 'configure chain',
502
+ 'hyperliquid',
503
+ 'hyperevm',
504
+ 'hyperliquid chain',
505
+ ],
506
+ remove_from_chain_registry: ['chain', 'remove chain', 'registry'],
507
+ get_address_book_registry: [
508
+ 'address book',
509
+ 'contacts',
510
+ 'contact',
511
+ 'saved address',
512
+ 'saved contacts',
513
+ ],
514
+ add_to_address_book_registry: ['address book', 'add contact', 'save address'],
515
+ remove_from_address_book_registry: ['address book', 'remove contact', 'delete address'],
516
+ get_token_registry: ['token', 'tokens', 'registry', 'saved token'],
517
+ add_to_token_registry: ['token', 'add token', 'registry'],
518
+ remove_from_token_registry: ['token', 'remove token', 'registry'],
519
+ // group requests (newGroupRequest / agree)
520
+ list_group_requests: [
521
+ 'group',
522
+ 'groups',
523
+ 'group request',
524
+ 'group requests',
525
+ 'peers',
526
+ 'pending group',
527
+ 'list groups',
528
+ 'list group requests',
529
+ ],
530
+ list_group_results: ['group', 'groups', 'group result', 'formed group', 'list groups'],
531
+ create_group_request: [
532
+ 'group',
533
+ 'groups',
534
+ 'group request',
535
+ 'create group',
536
+ 'form group',
537
+ 'new group request',
538
+ 'peers',
539
+ ],
540
+ accept_group_request: [
541
+ 'group',
542
+ 'groups',
543
+ 'accept group',
544
+ 'join group',
545
+ 'agree',
546
+ 'agree to group',
547
+ 'agree to group request',
548
+ 'agree group request',
549
+ 'accept group request',
550
+ ],
551
+ // keygen requests
552
+ list_key_gen_requests: [
553
+ 'keygen request',
554
+ 'key gen request',
555
+ 'keygen requests',
556
+ 'list keygen',
557
+ 'pending keygen',
558
+ ],
559
+ create_key_gen_request: [
560
+ 'keygen request',
561
+ 'key gen request',
562
+ 'create keygen',
563
+ 'new keygen',
564
+ 'generate key',
565
+ 'start keygen',
566
+ ],
567
+ accept_key_gen_request: [
568
+ 'agree',
569
+ 'agree to keygen',
570
+ 'agree to key gen',
571
+ 'agree to keygen request',
572
+ 'agree to key gen request',
573
+ 'accept keygen',
574
+ 'accept key gen request',
575
+ 'join keygen',
576
+ ],
577
+ get_key_gen_request_by_id: ['keygen request', 'get keygen', 'key gen request'],
578
+ fetch_key_gen_result: [
579
+ 'keygen result',
580
+ 'ethereum address',
581
+ 'executor address',
582
+ 'wallet address',
583
+ ],
584
+ // MultiSign / sign requests (read vs agree)
585
+ list_sign_requests: [
586
+ 'sign request',
587
+ 'sign requests',
588
+ 'multisign request',
589
+ 'multi sign request',
590
+ 'list sign requests',
591
+ 'pending sign',
592
+ 'live sign',
593
+ ],
594
+ list_sign_requests_awaiting_join: [
595
+ 'sign request',
596
+ 'awaiting join',
597
+ 'join tab',
598
+ 'pending agree',
599
+ 'needs agreement',
600
+ 'local agreement pending',
601
+ 'agree pending',
602
+ ],
603
+ get_sign_request_by_id: ['sign request', 'get sign request', 'sign request detail'],
604
+ get_sign_request_status: ['sign request status', 'lifecycle', 'ready to broadcast'],
605
+ list_sign_requests_ready: ['ready for get sig', 'quorum ready', 'ready to sign'],
606
+ get_sign_result_summary: ['sign result', 'ready to broadcast', 'get sig done'],
607
+ get_multi_sign_gas_options: ['gas options', 'custom gas', 'fee speed', 'get sig fee'],
608
+ wait_for_sign_request_ready: ['wait ready', 'poll sign ready'],
609
+ sign_request_agree: [
610
+ 'agree',
611
+ 'agree to sign',
612
+ 'agree to sign request',
613
+ 'agree to multisign',
614
+ 'agree sign request',
615
+ 'accept sign request',
616
+ 'reject sign request',
617
+ 'reject multisign',
618
+ 'approve sign request',
619
+ 'multisign approve',
620
+ 'join agree',
621
+ ],
622
+ shelve_sign_request: ['shelve', 'shelve sign request', 'pause sign request'],
623
+ // execute
624
+ trigger_sign_result: ['get sig', 'trigger sign', 'mpc signing', 'trigger get sig'],
625
+ broadcast_sign_result: ['broadcast', 'execute on chain', 'send transaction', 'execute sign'],
626
+ bump_or_cancel_sign_result: ['bump gas', 'cancel stuck', 'replace transaction'],
627
+ tx_params_from_get_sign_request_id_data: ['tx params', 'transaction params'],
628
+ // compose / transfers
629
+ transfer_native_gas: ['transfer', 'send eth', 'send gas', 'native transfer', 'top up gas'],
630
+ transfer_erc20: ['transfer', 'send token', 'send erc20', 'erc20 transfer'],
631
+ transfer_erc721: ['transfer', 'send nft', 'erc721', 'nft transfer'],
632
+ transfer_ctm_erc20: ['transfer', 'send ctm', 'ctm transfer'],
633
+ transfer_ctm_erc20_cross_chain: [
634
+ 'transfer',
635
+ 'bridge ctm',
636
+ 'cross chain ctm',
637
+ 'c3transfer',
638
+ ],
639
+ create_compose_multi_sign_request: [
640
+ 'compose',
641
+ 'batch multisign',
642
+ 'create multisign',
643
+ 'create sign request',
644
+ 'sign request',
645
+ ],
646
+ create_forge_multi_sign_request: [
647
+ 'forge',
648
+ 'foundry',
649
+ 'broadcast json',
650
+ 'create multisign',
651
+ 'create sign request',
652
+ ],
653
+ create_joined_multi_sign_request: [
654
+ 'join multisign',
655
+ 'batch join',
656
+ 'joined multisign',
657
+ 'create sign request',
658
+ ],
659
+ // defi discovery
660
+ list_defi_protocols: [
661
+ 'defi',
662
+ 'protocol',
663
+ 'protocols',
664
+ 'list protocols',
665
+ 'available protocols',
666
+ 'what protocols',
667
+ // Brands on list/load tools only (not group-wide).
668
+ 'uniswap',
669
+ 'aave',
670
+ 'gmx',
671
+ 'hyperliquid',
672
+ 'arcus',
673
+ ],
674
+ load_defi_protocol: [
675
+ 'defi',
676
+ 'protocol',
677
+ 'load protocol',
678
+ 'load defi',
679
+ 'enable protocol',
680
+ 'activate protocol',
681
+ 'defi tools',
682
+ 'uniswap',
683
+ 'aave',
684
+ 'gmx',
685
+ 'hyperliquid',
686
+ 'arcus',
687
+ ],
688
+ unload_defi_protocol: ['defi', 'protocol', 'unload protocol'],
689
+ get_defi_protocol_skill: ['defi skill', 'protocol skill', 'skill md'],
690
+ get_defi_protocol_supported_chains: ['protocol chains', 'defi chains'],
691
+ get_defi_protocol_supported_tokens: ['protocol tokens', 'defi tokens'],
692
+ get_tools_for_protocol: ['protocol tools', 'defi tools list'],
693
+ // agent cron / skills / webhooks / config
694
+ list_cron_jobs: ['cron', 'scheduled jobs', 'list cron'],
695
+ add_cron_job: ['cron', 'schedule job', 'create cron', 'every n minutes'],
696
+ run_cron_job: ['run cron', 'trigger cron'],
697
+ update_cron_job: ['update cron', 'edit cron'],
698
+ activate_cron_job: ['activate cron', 'enable cron'],
699
+ deactivate_cron_job: ['deactivate cron', 'disable cron'],
700
+ list_skills: ['skills', 'agent skills', 'list skills'],
701
+ get_skill: ['skill', 'get skill', 'read skill'],
702
+ add_skill: ['add skill', 'create skill', 'skill markdown'],
703
+ remove_skill: ['remove skill', 'delete skill'],
704
+ list_webhooks: ['webhooks', 'inbound webhook', 'list webhooks'],
705
+ add_webhook: ['add webhook', 'create webhook'],
706
+ add_webhook_from_catalog: ['webhook catalog', 'catalog webhook'],
707
+ list_environment_variables: ['env var', 'environment variables', 'secrets'],
708
+ add_environment_variable: ['env var', 'add secret', 'set variable'],
709
+ remove_environment_variable: ['env var', 'remove secret'],
710
+ list_mcp_servers: ['mcp server', 'list mcp', 'mcp catalog'],
711
+ add_mcp_server: ['add mcp', 'mcp server'],
712
+ add_mcp_server_from_catalog: ['mcp catalog', 'catalog mcp'],
713
+ // keygen messaging
714
+ send_key_gen_message: ['keygen message', 'send message', 'message peers'],
715
+ list_key_gen_messages: ['keygen message', 'inbox', 'list messages'],
716
+ get_key_gen_message_thread: ['message thread', 'conversation'],
293
717
  };
718
+ export function classifyDefiToolPack(toolName) {
719
+ const n = stripMcpToolServerPrefix(toolName).toLowerCase();
720
+ if ((n.includes('build_') && n.includes('multisign')) ||
721
+ n.includes('create_swap') ||
722
+ n.includes('_place_') ||
723
+ n.includes('cancel_order') ||
724
+ n.includes('_close_position') ||
725
+ n.includes('close_position')) {
726
+ return 'trading';
727
+ }
728
+ if (n.includes('fetch_ohlcv') ||
729
+ n.includes('fetch_markets') ||
730
+ n.includes('fetch_open_context') ||
731
+ n.includes('search_markets') ||
732
+ n.includes('market_snapshot') ||
733
+ n.includes('fetch_open_orders') ||
734
+ n.includes('fetch_positions') ||
735
+ n.includes('usd_class_balances') ||
736
+ n.includes('fetch_vaults') ||
737
+ n.includes('user_vault_equities') ||
738
+ (n.includes('_quote') && !n.includes('build'))) {
739
+ return 'market-data';
740
+ }
741
+ return 'other';
742
+ }
743
+ export function defiProtocolPackGroupId(protocolId, pack = 'market-data') {
744
+ return `defi:${protocolId.trim()}:${pack}`;
745
+ }
746
+ /** Expand activate_tool_group aliases to concrete pack ids. */
747
+ export function resolveActivateGroupIds(groupId) {
748
+ const id = groupId.trim();
749
+ if (!id) {
750
+ return [];
751
+ }
752
+ const aliased = GROUP_ACTIVATE_ALIASES[id];
753
+ if (aliased) {
754
+ return [...aliased];
755
+ }
756
+ // defi:<protocol> (no pack) → market-data only
757
+ if (id.startsWith('defi:')) {
758
+ const parts = id.split(':');
759
+ if (parts.length === 2 && parts[1]) {
760
+ return [defiProtocolPackGroupId(parts[1], 'market-data')];
761
+ }
762
+ }
763
+ return [id];
764
+ }
765
+ export function isChartFamilyGroupId(groupId) {
766
+ return groupId === 'chart' || groupId.startsWith('chart:');
767
+ }
294
768
  export function resolveToolGroupId(name, options) {
295
769
  const bare = stripMcpToolServerPrefix(name);
296
770
  if (TOOL_GROUP_BY_NAME[bare]) {
@@ -300,10 +774,10 @@ export function resolveToolGroupId(name, options) {
300
774
  return TOOL_GROUP_BY_NAME[name];
301
775
  }
302
776
  if (options?.protocolId) {
303
- return `defi:${options.protocolId}`;
777
+ return defiProtocolPackGroupId(options.protocolId, classifyDefiToolPack(bare));
304
778
  }
305
779
  if (bare.startsWith('ctm_') || name.startsWith('ctm_')) {
306
- return 'defi:unknown';
780
+ return 'defi:unknown:other';
307
781
  }
308
782
  return 'unknown';
309
783
  }