@daxaur/ctrl-mcp 0.1.5 → 0.1.6

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/dist/blocks.d.ts CHANGED
@@ -1,101 +1,300 @@
1
1
  /**
2
- * Block catalog schemas — mirrors lib/terminal/block-definitions.ts in the main
3
- * CTRL repo. We re-declare here so the MCP plugin is self-contained (Claude
4
- * can reason about valid block types without an extra API roundtrip).
2
+ * Block catalog schemas — mirrors only the LIVE production blocks visible in
3
+ * ctrl.build/terminal. Anything marked hidden in block-definitions.ts, or
4
+ * defined there without a keeper executor, is intentionally excluded.
5
5
  *
6
- * Keep in sync with main repo on every block addition.
6
+ * Live block count: 9 triggers · 5 actions · 4 conditions · 3 utilities = 21.
7
+ *
8
+ * NOT exposed (and why):
9
+ * - limitless.* + polymarket.* — hidden in block-definitions.ts
10
+ * - social.farcaster_cast — hidden, NEYNAR_API_KEY not in prod
11
+ * - signal.aixbt_mention — hidden, cookie.fun mirror not wired
12
+ * - cond.yield_threshold — hidden, no DefiLlama eval
13
+ * - util.stop / util.snapshot — no keeper case, silently no-op
14
+ *
15
+ * Keep in sync with main repo. Agents can call ctrl_get_block_catalog for the
16
+ * live list if this falls behind.
7
17
  */
8
18
  import { z } from 'zod';
9
19
  export declare const TRIGGER_TYPES: readonly ["time.interval", "trigger.manual", "price.above", "price.below", "price.change", "pool.created", "watch.whale", "event.transfer", "event.balance"];
10
20
  export declare const ACTION_TYPES: readonly ["cypher.swap", "read.balance", "notify.telegram", "notify.discord", "util.webhook"];
11
21
  export declare const CONDITION_TYPES: readonly ["cond.price", "cond.balance", "cond.allowed_weekdays", "cond.time_window"];
12
- export declare const UTILITY_TYPES: readonly ["util.delay", "util.note", "util.log", "util.stop", "util.snapshot"];
22
+ export declare const UTILITY_TYPES: readonly ["util.delay", "util.note", "util.log"];
13
23
  export type TriggerType = (typeof TRIGGER_TYPES)[number];
14
24
  export type ActionType = (typeof ACTION_TYPES)[number];
15
25
  export type ConditionType = (typeof CONDITION_TYPES)[number];
16
26
  export type UtilityType = (typeof UTILITY_TYPES)[number];
17
- /** A workflow is a trigger + an ordered chain of action/condition/utility blocks. */
18
- export declare const WorkflowDefinitionSchema: z.ZodObject<{
19
- name: z.ZodString;
20
- description: z.ZodOptional<z.ZodString>;
21
- trigger: z.ZodObject<{
22
- type: z.ZodEnum<["time.interval", "trigger.manual", "price.above", "price.below", "price.change", "pool.created", "watch.whale", "event.transfer", "event.balance"]>;
23
- config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
27
+ export type BlockType = TriggerType | ActionType | ConditionType | UtilityType;
28
+ export declare const BLOCK_CONFIG_SCHEMAS: {
29
+ readonly 'time.interval': z.ZodObject<{
30
+ minutes: z.ZodNumber;
31
+ }, "strip", z.ZodTypeAny, {
32
+ minutes: number;
33
+ }, {
34
+ minutes: number;
35
+ }>;
36
+ readonly 'trigger.manual': z.ZodObject<{}, "passthrough", z.ZodTypeAny, z.objectOutputType<{}, z.ZodTypeAny, "passthrough">, z.objectInputType<{}, z.ZodTypeAny, "passthrough">>;
37
+ readonly 'price.above': z.ZodObject<{
38
+ token: z.ZodString;
39
+ threshold: z.ZodNumber;
40
+ }, "strip", z.ZodTypeAny, {
41
+ token: string;
42
+ threshold: number;
43
+ }, {
44
+ token: string;
45
+ threshold: number;
46
+ }>;
47
+ readonly 'price.below': z.ZodObject<{
48
+ token: z.ZodString;
49
+ threshold: z.ZodNumber;
50
+ }, "strip", z.ZodTypeAny, {
51
+ token: string;
52
+ threshold: number;
53
+ }, {
54
+ token: string;
55
+ threshold: number;
56
+ }>;
57
+ readonly 'price.change': z.ZodObject<{
58
+ token: z.ZodString;
59
+ percentChange: z.ZodNumber;
60
+ }, "strip", z.ZodTypeAny, {
61
+ token: string;
62
+ percentChange: number;
63
+ }, {
64
+ token: string;
65
+ percentChange: number;
66
+ }>;
67
+ readonly 'pool.created': z.ZodObject<{
68
+ launchpad: z.ZodDefault<z.ZodOptional<z.ZodEnum<["any", "clanker", "flaunch", "zora", "bankr"]>>>;
69
+ quoteToken: z.ZodDefault<z.ZodOptional<z.ZodEnum<["any", "WETH", "USDC"]>>>;
70
+ minLiquidity: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
71
+ maxFdv: z.ZodOptional<z.ZodNumber>;
72
+ safetyEnabled: z.ZodOptional<z.ZodBoolean>;
73
+ keywordIncludes: z.ZodOptional<z.ZodString>;
74
+ keywordExcludes: z.ZodOptional<z.ZodString>;
75
+ keywordMatchMode: z.ZodDefault<z.ZodOptional<z.ZodEnum<["any", "all"]>>>;
76
+ }, "strip", z.ZodTypeAny, {
77
+ launchpad: "any" | "clanker" | "flaunch" | "zora" | "bankr";
78
+ quoteToken: "any" | "WETH" | "USDC";
79
+ minLiquidity: number;
80
+ keywordMatchMode: "any" | "all";
81
+ maxFdv?: number | undefined;
82
+ safetyEnabled?: boolean | undefined;
83
+ keywordIncludes?: string | undefined;
84
+ keywordExcludes?: string | undefined;
85
+ }, {
86
+ launchpad?: "any" | "clanker" | "flaunch" | "zora" | "bankr" | undefined;
87
+ quoteToken?: "any" | "WETH" | "USDC" | undefined;
88
+ minLiquidity?: number | undefined;
89
+ maxFdv?: number | undefined;
90
+ safetyEnabled?: boolean | undefined;
91
+ keywordIncludes?: string | undefined;
92
+ keywordExcludes?: string | undefined;
93
+ keywordMatchMode?: "any" | "all" | undefined;
94
+ }>;
95
+ readonly 'watch.whale': z.ZodObject<{
96
+ address: z.ZodString;
97
+ token: z.ZodDefault<z.ZodOptional<z.ZodString>>;
98
+ minAmount: z.ZodNumber;
99
+ direction: z.ZodDefault<z.ZodOptional<z.ZodEnum<["any", "incoming", "outgoing"]>>>;
100
+ }, "strip", z.ZodTypeAny, {
101
+ token: string;
102
+ address: string;
103
+ minAmount: number;
104
+ direction: "any" | "incoming" | "outgoing";
105
+ }, {
106
+ address: string;
107
+ minAmount: number;
108
+ token?: string | undefined;
109
+ direction?: "any" | "incoming" | "outgoing" | undefined;
110
+ }>;
111
+ readonly 'event.transfer': z.ZodObject<{
112
+ tokenAddress: z.ZodString;
113
+ minAmount: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
114
+ fromAddress: z.ZodOptional<z.ZodString>;
115
+ toAddress: z.ZodOptional<z.ZodString>;
116
+ direction: z.ZodDefault<z.ZodOptional<z.ZodEnum<["any", "incoming", "outgoing"]>>>;
117
+ }, "strip", z.ZodTypeAny, {
118
+ minAmount: number;
119
+ direction: "any" | "incoming" | "outgoing";
120
+ tokenAddress: string;
121
+ fromAddress?: string | undefined;
122
+ toAddress?: string | undefined;
123
+ }, {
124
+ tokenAddress: string;
125
+ minAmount?: number | undefined;
126
+ direction?: "any" | "incoming" | "outgoing" | undefined;
127
+ fromAddress?: string | undefined;
128
+ toAddress?: string | undefined;
129
+ }>;
130
+ readonly 'event.balance': z.ZodObject<{
131
+ token: z.ZodString;
132
+ condition: z.ZodEnum<[">=", "<=", ">", "<"]>;
133
+ threshold: z.ZodNumber;
134
+ }, "strip", z.ZodTypeAny, {
135
+ token: string;
136
+ threshold: number;
137
+ condition: ">=" | "<=" | ">" | "<";
138
+ }, {
139
+ token: string;
140
+ threshold: number;
141
+ condition: ">=" | "<=" | ">" | "<";
142
+ }>;
143
+ readonly 'cypher.swap': z.ZodObject<{
144
+ tokenIn: z.ZodString;
145
+ tokenOut: z.ZodString;
146
+ amount: z.ZodNumber;
147
+ amountMode: z.ZodDefault<z.ZodOptional<z.ZodEnum<["fixed", "percent"]>>>;
148
+ slippage: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
149
+ autoSellEnabled: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
150
+ autoSellMultiplier: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
151
+ autoSellPercent: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
152
+ }, "strip", z.ZodTypeAny, {
153
+ tokenIn: string;
154
+ tokenOut: string;
155
+ amount: number;
156
+ amountMode: "fixed" | "percent";
157
+ slippage: number;
158
+ autoSellEnabled: boolean;
159
+ autoSellMultiplier: number;
160
+ autoSellPercent: number;
161
+ }, {
162
+ tokenIn: string;
163
+ tokenOut: string;
164
+ amount: number;
165
+ amountMode?: "fixed" | "percent" | undefined;
166
+ slippage?: number | undefined;
167
+ autoSellEnabled?: boolean | undefined;
168
+ autoSellMultiplier?: number | undefined;
169
+ autoSellPercent?: number | undefined;
170
+ }>;
171
+ readonly 'read.balance': z.ZodObject<{
172
+ token: z.ZodString;
173
+ walletAddress: z.ZodOptional<z.ZodString>;
174
+ }, "strip", z.ZodTypeAny, {
175
+ token: string;
176
+ walletAddress?: string | undefined;
177
+ }, {
178
+ token: string;
179
+ walletAddress?: string | undefined;
180
+ }>;
181
+ readonly 'notify.telegram': z.ZodObject<{
182
+ message: z.ZodString;
183
+ }, "strip", z.ZodTypeAny, {
184
+ message: string;
185
+ }, {
186
+ message: string;
187
+ }>;
188
+ readonly 'notify.discord': z.ZodObject<{
189
+ webhookUrl: z.ZodEffects<z.ZodString, string, string>;
190
+ message: z.ZodString;
191
+ }, "strip", z.ZodTypeAny, {
192
+ message: string;
193
+ webhookUrl: string;
194
+ }, {
195
+ message: string;
196
+ webhookUrl: string;
197
+ }>;
198
+ readonly 'util.webhook': z.ZodObject<{
199
+ url: z.ZodEffects<z.ZodString, string, string>;
200
+ payload: z.ZodOptional<z.ZodString>;
201
+ }, "strip", z.ZodTypeAny, {
202
+ url: string;
203
+ payload?: string | undefined;
204
+ }, {
205
+ url: string;
206
+ payload?: string | undefined;
207
+ }>;
208
+ readonly 'cond.price': z.ZodObject<{
209
+ token: z.ZodString;
210
+ operator: z.ZodEnum<[">", "<"]>;
211
+ threshold: z.ZodNumber;
24
212
  }, "strip", z.ZodTypeAny, {
25
- type: "time.interval" | "trigger.manual" | "price.above" | "price.below" | "price.change" | "pool.created" | "watch.whale" | "event.transfer" | "event.balance";
26
- config?: Record<string, any> | undefined;
213
+ token: string;
214
+ threshold: number;
215
+ operator: ">" | "<";
27
216
  }, {
28
- type: "time.interval" | "trigger.manual" | "price.above" | "price.below" | "price.change" | "pool.created" | "watch.whale" | "event.transfer" | "event.balance";
29
- config?: Record<string, any> | undefined;
217
+ token: string;
218
+ threshold: number;
219
+ operator: ">" | "<";
30
220
  }>;
31
- chain: z.ZodArray<z.ZodUnion<[z.ZodObject<{
32
- type: z.ZodEnum<["cypher.swap", "read.balance", "notify.telegram", "notify.discord", "util.webhook"]>;
33
- config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
221
+ readonly 'cond.balance': z.ZodObject<{
222
+ token: z.ZodString;
223
+ operator: z.ZodEnum<[">=", "<", ">", "<="]>;
224
+ minBalance: z.ZodNumber;
34
225
  }, "strip", z.ZodTypeAny, {
35
- type: "cypher.swap" | "read.balance" | "notify.telegram" | "notify.discord" | "util.webhook";
36
- config?: Record<string, any> | undefined;
226
+ token: string;
227
+ operator: ">=" | "<=" | ">" | "<";
228
+ minBalance: number;
37
229
  }, {
38
- type: "cypher.swap" | "read.balance" | "notify.telegram" | "notify.discord" | "util.webhook";
39
- config?: Record<string, any> | undefined;
40
- }>, z.ZodObject<{
41
- type: z.ZodEnum<["cond.price", "cond.balance", "cond.allowed_weekdays", "cond.time_window"]>;
42
- config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
230
+ token: string;
231
+ operator: ">=" | "<=" | ">" | "<";
232
+ minBalance: number;
233
+ }>;
234
+ readonly 'cond.allowed_weekdays': z.ZodObject<{
235
+ weekdays: z.ZodArray<z.ZodNumber, "many">;
43
236
  }, "strip", z.ZodTypeAny, {
44
- type: "cond.price" | "cond.balance" | "cond.allowed_weekdays" | "cond.time_window";
45
- config?: Record<string, any> | undefined;
237
+ weekdays: number[];
46
238
  }, {
47
- type: "cond.price" | "cond.balance" | "cond.allowed_weekdays" | "cond.time_window";
48
- config?: Record<string, any> | undefined;
49
- }>, z.ZodObject<{
50
- type: z.ZodEnum<["util.delay", "util.note", "util.log", "util.stop", "util.snapshot"]>;
51
- config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
239
+ weekdays: number[];
240
+ }>;
241
+ readonly 'cond.time_window': z.ZodObject<{
242
+ mode: z.ZodDefault<z.ZodOptional<z.ZodEnum<["during", "skip"]>>>;
243
+ startUTC: z.ZodDefault<z.ZodString>;
244
+ endUTC: z.ZodDefault<z.ZodString>;
52
245
  }, "strip", z.ZodTypeAny, {
53
- type: "util.delay" | "util.note" | "util.log" | "util.stop" | "util.snapshot";
54
- config?: Record<string, any> | undefined;
246
+ mode: "during" | "skip";
247
+ startUTC: string;
248
+ endUTC: string;
55
249
  }, {
56
- type: "util.delay" | "util.note" | "util.log" | "util.stop" | "util.snapshot";
57
- config?: Record<string, any> | undefined;
58
- }>]>, "many">;
250
+ mode?: "during" | "skip" | undefined;
251
+ startUTC?: string | undefined;
252
+ endUTC?: string | undefined;
253
+ }>;
254
+ readonly 'util.delay': z.ZodObject<{
255
+ seconds: z.ZodNumber;
256
+ }, "strip", z.ZodTypeAny, {
257
+ seconds: number;
258
+ }, {
259
+ seconds: number;
260
+ }>;
261
+ readonly 'util.note': z.ZodObject<{
262
+ note: z.ZodOptional<z.ZodString>;
263
+ }, "strip", z.ZodTypeAny, {
264
+ note?: string | undefined;
265
+ }, {
266
+ note?: string | undefined;
267
+ }>;
268
+ readonly 'util.log': z.ZodObject<{
269
+ level: z.ZodDefault<z.ZodOptional<z.ZodEnum<["info", "success", "warn", "error"]>>>;
270
+ message: z.ZodString;
271
+ }, "strip", z.ZodTypeAny, {
272
+ message: string;
273
+ level: "info" | "success" | "warn" | "error";
274
+ }, {
275
+ message: string;
276
+ level?: "info" | "success" | "warn" | "error" | undefined;
277
+ }>;
278
+ };
279
+ export type BlockConfigSchemas = typeof BLOCK_CONFIG_SCHEMAS;
280
+ /** A workflow = trigger + ordered chain of action/condition/utility blocks. */
281
+ export declare const WorkflowDefinitionSchema: z.ZodObject<{
282
+ name: z.ZodString;
283
+ description: z.ZodOptional<z.ZodString>;
284
+ trigger: z.ZodUnion<[z.ZodTypeAny, z.ZodTypeAny, ...z.ZodTypeAny[]]>;
285
+ chain: z.ZodArray<z.ZodUnion<[z.ZodUnion<[z.ZodTypeAny, z.ZodTypeAny, ...z.ZodTypeAny[]]>, z.ZodUnion<[z.ZodTypeAny, z.ZodTypeAny, ...z.ZodTypeAny[]]>, z.ZodUnion<[z.ZodTypeAny, z.ZodTypeAny, ...z.ZodTypeAny[]]>]>, "many">;
59
286
  }, "strip", z.ZodTypeAny, {
60
287
  name: string;
61
- trigger: {
62
- type: "time.interval" | "trigger.manual" | "price.above" | "price.below" | "price.change" | "pool.created" | "watch.whale" | "event.transfer" | "event.balance";
63
- config?: Record<string, any> | undefined;
64
- };
65
- chain: ({
66
- type: "cypher.swap" | "read.balance" | "notify.telegram" | "notify.discord" | "util.webhook";
67
- config?: Record<string, any> | undefined;
68
- } | {
69
- type: "cond.price" | "cond.balance" | "cond.allowed_weekdays" | "cond.time_window";
70
- config?: Record<string, any> | undefined;
71
- } | {
72
- type: "util.delay" | "util.note" | "util.log" | "util.stop" | "util.snapshot";
73
- config?: Record<string, any> | undefined;
74
- })[];
288
+ chain: any[];
75
289
  description?: string | undefined;
290
+ trigger?: any;
76
291
  }, {
77
292
  name: string;
78
- trigger: {
79
- type: "time.interval" | "trigger.manual" | "price.above" | "price.below" | "price.change" | "pool.created" | "watch.whale" | "event.transfer" | "event.balance";
80
- config?: Record<string, any> | undefined;
81
- };
82
- chain: ({
83
- type: "cypher.swap" | "read.balance" | "notify.telegram" | "notify.discord" | "util.webhook";
84
- config?: Record<string, any> | undefined;
85
- } | {
86
- type: "cond.price" | "cond.balance" | "cond.allowed_weekdays" | "cond.time_window";
87
- config?: Record<string, any> | undefined;
88
- } | {
89
- type: "util.delay" | "util.note" | "util.log" | "util.stop" | "util.snapshot";
90
- config?: Record<string, any> | undefined;
91
- })[];
293
+ chain: any[];
92
294
  description?: string | undefined;
295
+ trigger?: any;
93
296
  }>;
94
297
  export type WorkflowDefinition = z.infer<typeof WorkflowDefinitionSchema>;
95
- /**
96
- * Convert a simple {trigger, chain} schema into CTRL's internal
97
- * {nodes, edges} shape used by the canvas + keeper.
98
- */
99
298
  export declare function compileToWorkflowData(def: WorkflowDefinition): {
100
299
  nodes: Array<{
101
300
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../src/blocks.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,aAAa,8JAUhB,CAAA;AAEV,eAAO,MAAM,YAAY,+FAMf,CAAA;AAEV,eAAO,MAAM,eAAe,sFAKlB,CAAA;AAEV,eAAO,MAAM,aAAa,gFAMhB,CAAA;AAEV,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAA;AACxD,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAA;AACtD,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAA;AAC5D,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAA;AAsBxD,qFAAqF;AACrF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQnC,CAAA;AAEF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAEzE;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,kBAAkB,GAAG;IAC9D,KAAK,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,QAAQ,EAAE;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC,CAAA;IACtJ,KAAK,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAC7D,CA0CA"}
1
+ {"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../src/blocks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,aAAa,8JAUhB,CAAA;AAEV,eAAO,MAAM,YAAY,+FAMf,CAAA;AAEV,eAAO,MAAM,eAAe,sFAKlB,CAAA;AAEV,eAAO,MAAM,aAAa,kDAIhB,CAAA;AAEV,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAA;AACxD,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAA;AACtD,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAA;AAC5D,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAA;AACxD,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,aAAa,GAAG,WAAW,CAAA;AAuK9E,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsBmB,CAAA;AAEpD,MAAM,MAAM,kBAAkB,GAAG,OAAO,oBAAoB,CAAA;AAqB5D,+EAA+E;AAC/E,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;EAKnC,CAAA;AAEF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAkBzE,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,kBAAkB,GAAG;IAC9D,KAAK,EAAE,KAAK,CAAC;QACX,EAAE,EAAE,MAAM,CAAA;QACV,IAAI,EAAE,MAAM,CAAA;QACZ,SAAS,EAAE,MAAM,CAAA;QACjB,YAAY,EAAE,MAAM,CAAA;QACpB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC7B,QAAQ,EAAE;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KACnC,CAAC,CAAA;IACF,KAAK,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAC7D,CAsCA"}
package/dist/blocks.js CHANGED
@@ -1,11 +1,22 @@
1
1
  /**
2
- * Block catalog schemas — mirrors lib/terminal/block-definitions.ts in the main
3
- * CTRL repo. We re-declare here so the MCP plugin is self-contained (Claude
4
- * can reason about valid block types without an extra API roundtrip).
2
+ * Block catalog schemas — mirrors only the LIVE production blocks visible in
3
+ * ctrl.build/terminal. Anything marked hidden in block-definitions.ts, or
4
+ * defined there without a keeper executor, is intentionally excluded.
5
5
  *
6
- * Keep in sync with main repo on every block addition.
6
+ * Live block count: 9 triggers · 5 actions · 4 conditions · 3 utilities = 21.
7
+ *
8
+ * NOT exposed (and why):
9
+ * - limitless.* + polymarket.* — hidden in block-definitions.ts
10
+ * - social.farcaster_cast — hidden, NEYNAR_API_KEY not in prod
11
+ * - signal.aixbt_mention — hidden, cookie.fun mirror not wired
12
+ * - cond.yield_threshold — hidden, no DefiLlama eval
13
+ * - util.stop / util.snapshot — no keeper case, silently no-op
14
+ *
15
+ * Keep in sync with main repo. Agents can call ctrl_get_block_catalog for the
16
+ * live list if this falls behind.
7
17
  */
8
18
  import { z } from 'zod';
19
+ // ─── Block id arrays ────────────────────────────────────────────────────────
9
20
  export const TRIGGER_TYPES = [
10
21
  'time.interval',
11
22
  'trigger.manual',
@@ -34,64 +45,217 @@ export const UTILITY_TYPES = [
34
45
  'util.delay',
35
46
  'util.note',
36
47
  'util.log',
37
- 'util.stop',
38
- 'util.snapshot',
39
48
  ];
40
- const triggerBlock = z.object({
41
- type: z.enum(TRIGGER_TYPES),
42
- config: z.record(z.any()).optional(),
49
+ // ─── Reusable atoms ─────────────────────────────────────────────────────────
50
+ const tokenRef = z.string().min(1).describe('Token symbol (ETH/WETH/USDC) or 0x address');
51
+ const addressRef = z.string().regex(/^0x[a-fA-F0-9]{40}$/).describe('0x address');
52
+ // ─── Trigger configs ────────────────────────────────────────────────────────
53
+ const TimeIntervalConfig = z.object({
54
+ minutes: z.number().positive(),
55
+ });
56
+ const ManualTriggerConfig = z.object({}).passthrough();
57
+ const PriceAboveConfig = z.object({
58
+ token: tokenRef,
59
+ threshold: z.number().min(0).describe('USD price'),
60
+ });
61
+ const PriceBelowConfig = z.object({
62
+ token: tokenRef,
63
+ threshold: z.number().min(0).describe('USD price'),
64
+ });
65
+ const PriceChangeConfig = z.object({
66
+ token: tokenRef,
67
+ percentChange: z.number().min(0.1).describe('Absolute percent move'),
68
+ });
69
+ const PoolCreatedConfig = z.object({
70
+ launchpad: z
71
+ .enum(['any', 'clanker', 'flaunch', 'zora', 'bankr'])
72
+ .optional()
73
+ .default('any')
74
+ .describe('Launchpad to watch. bankr = Doppler V4.'),
75
+ quoteToken: z.enum(['any', 'WETH', 'USDC']).optional().default('any'),
76
+ minLiquidity: z.number().min(0).optional().default(0).describe('Min pool liquidity in USD'),
77
+ maxFdv: z.number().min(0).optional().describe('Reject launches above this FDV (USD)'),
78
+ safetyEnabled: z
79
+ .boolean()
80
+ .optional()
81
+ .describe('GoPlus honeypot + tax gate. Default ON for non-curated launchpads.'),
82
+ keywordIncludes: z
83
+ .string()
84
+ .optional()
85
+ .describe('Comma-separated keywords token name/ticker must include'),
86
+ keywordExcludes: z.string().optional().describe('Comma-separated keywords that auto-reject'),
87
+ keywordMatchMode: z.enum(['any', 'all']).optional().default('any'),
88
+ });
89
+ const WatchWhaleConfig = z.object({
90
+ address: addressRef.describe('Wallet to watch'),
91
+ token: tokenRef.optional().default('ETH'),
92
+ minAmount: z.number().positive(),
93
+ direction: z.enum(['any', 'incoming', 'outgoing']).optional().default('any'),
94
+ });
95
+ const EventTransferConfig = z.object({
96
+ tokenAddress: addressRef,
97
+ minAmount: z.number().min(0).optional().default(0),
98
+ fromAddress: addressRef.optional(),
99
+ toAddress: addressRef.optional(),
100
+ direction: z.enum(['any', 'incoming', 'outgoing']).optional().default('any'),
101
+ });
102
+ const EventBalanceConfig = z.object({
103
+ token: tokenRef,
104
+ condition: z.enum(['>=', '<=', '>', '<']),
105
+ threshold: z.number(),
106
+ });
107
+ // ─── Action configs ─────────────────────────────────────────────────────────
108
+ const CypherSwapConfig = z.object({
109
+ tokenIn: z
110
+ .string()
111
+ .min(1)
112
+ .describe('Input token symbol/0x, or "{{trigger.tokenAddress}}" for dynamic sells'),
113
+ tokenOut: z
114
+ .string()
115
+ .min(1)
116
+ .describe('Output token symbol/0x, or "{{trigger.tokenAddress}}" for snipes'),
117
+ amount: z.number().positive().describe('Amount of tokenIn (or % of balance if amountMode=percent)'),
118
+ amountMode: z.enum(['fixed', 'percent']).optional().default('fixed'),
119
+ slippage: z.number().min(0.1).max(50).optional().default(15).describe('Slippage %'),
120
+ autoSellEnabled: z.boolean().optional().default(false),
121
+ autoSellMultiplier: z
122
+ .number()
123
+ .min(1.01)
124
+ .optional()
125
+ .default(2)
126
+ .describe('Auto-sell at N× entry price'),
127
+ autoSellPercent: z.number().min(1).max(100).optional().default(50).describe('% of position to sell'),
128
+ });
129
+ const ReadBalanceConfig = z.object({
130
+ token: tokenRef,
131
+ walletAddress: addressRef.optional().describe('Defaults to vault wallet'),
43
132
  });
44
- const actionBlock = z.object({
45
- type: z.enum(ACTION_TYPES),
46
- config: z.record(z.any()).optional(),
133
+ const NotifyTelegramConfig = z.object({
134
+ message: z
135
+ .string()
136
+ .min(1)
137
+ .max(4000)
138
+ .describe('Supports {{token}}, {{price}}, {{amount}}, {{txHash}}, {{trigger.*}} vars'),
139
+ });
140
+ const NotifyDiscordConfig = z.object({
141
+ webhookUrl: z
142
+ .string()
143
+ .url()
144
+ .refine((u) => u.startsWith('https://discord.com/api/webhooks/'), {
145
+ message: 'Must be a https://discord.com/api/webhooks/... URL',
146
+ }),
147
+ message: z.string().min(1).max(2000),
148
+ });
149
+ const UtilWebhookConfig = z.object({
150
+ url: z.string().url().refine((u) => u.startsWith('https://'), { message: 'HTTPS only' }),
151
+ payload: z.string().optional().describe('JSON string body; template vars supported'),
152
+ });
153
+ // ─── Condition configs ──────────────────────────────────────────────────────
154
+ const CondPriceConfig = z.object({
155
+ token: z.string().min(1),
156
+ operator: z.enum(['>', '<']),
157
+ threshold: z.number().min(0).describe('USD price'),
158
+ });
159
+ const CondBalanceConfig = z.object({
160
+ token: tokenRef,
161
+ operator: z.enum(['>=', '<', '>', '<=']),
162
+ minBalance: z.number(),
163
+ });
164
+ const CondWeekdaysConfig = z.object({
165
+ weekdays: z.array(z.number().int().min(1).max(7)).describe('ISO weekdays Mon=1..Sun=7'),
166
+ });
167
+ const HHMM = z.string().regex(/^([01]\d|2[0-3]):[0-5]\d$/, { message: 'HH:MM 24h UTC' });
168
+ const CondTimeWindowConfig = z.object({
169
+ mode: z.enum(['during', 'skip']).optional().default('during'),
170
+ startUTC: HHMM.default('13:00'),
171
+ endUTC: HHMM.default('22:00'),
47
172
  });
48
- const conditionBlock = z.object({
49
- type: z.enum(CONDITION_TYPES),
50
- config: z.record(z.any()).optional(),
173
+ // ─── Utility configs ────────────────────────────────────────────────────────
174
+ const UtilDelayConfig = z.object({
175
+ seconds: z.number().positive(),
51
176
  });
52
- const utilityBlock = z.object({
53
- type: z.enum(UTILITY_TYPES),
54
- config: z.record(z.any()).optional(),
177
+ const UtilNoteConfig = z.object({
178
+ note: z.string().max(2000).optional(),
55
179
  });
56
- /** A workflow is a trigger + an ordered chain of action/condition/utility blocks. */
180
+ const UtilLogConfig = z.object({
181
+ level: z.enum(['info', 'success', 'warn', 'error']).optional().default('info'),
182
+ message: z.string().min(1).max(2000),
183
+ });
184
+ // ─── Master per-block schema map ────────────────────────────────────────────
185
+ export const BLOCK_CONFIG_SCHEMAS = {
186
+ 'time.interval': TimeIntervalConfig,
187
+ 'trigger.manual': ManualTriggerConfig,
188
+ 'price.above': PriceAboveConfig,
189
+ 'price.below': PriceBelowConfig,
190
+ 'price.change': PriceChangeConfig,
191
+ 'pool.created': PoolCreatedConfig,
192
+ 'watch.whale': WatchWhaleConfig,
193
+ 'event.transfer': EventTransferConfig,
194
+ 'event.balance': EventBalanceConfig,
195
+ 'cypher.swap': CypherSwapConfig,
196
+ 'read.balance': ReadBalanceConfig,
197
+ 'notify.telegram': NotifyTelegramConfig,
198
+ 'notify.discord': NotifyDiscordConfig,
199
+ 'util.webhook': UtilWebhookConfig,
200
+ 'cond.price': CondPriceConfig,
201
+ 'cond.balance': CondBalanceConfig,
202
+ 'cond.allowed_weekdays': CondWeekdaysConfig,
203
+ 'cond.time_window': CondTimeWindowConfig,
204
+ 'util.delay': UtilDelayConfig,
205
+ 'util.note': UtilNoteConfig,
206
+ 'util.log': UtilLogConfig,
207
+ };
208
+ // ─── Discriminated-union blocks ─────────────────────────────────────────────
209
+ function typedBlockUnion(types) {
210
+ const variants = types.map((t) => z.object({
211
+ type: z.literal(t),
212
+ config: BLOCK_CONFIG_SCHEMAS[t].optional().default({}),
213
+ }));
214
+ return z.union(variants);
215
+ }
216
+ const TriggerBlock = typedBlockUnion(TRIGGER_TYPES);
217
+ const ActionBlock = typedBlockUnion(ACTION_TYPES);
218
+ const ConditionBlock = typedBlockUnion(CONDITION_TYPES);
219
+ const UtilityBlock = typedBlockUnion(UTILITY_TYPES);
220
+ const ChainBlock = z.union([ActionBlock, ConditionBlock, UtilityBlock]);
221
+ /** A workflow = trigger + ordered chain of action/condition/utility blocks. */
57
222
  export const WorkflowDefinitionSchema = z.object({
58
223
  name: z.string().min(1).max(120),
59
224
  description: z.string().max(500).optional(),
60
- trigger: triggerBlock,
61
- chain: z
62
- .array(z.union([actionBlock, conditionBlock, utilityBlock]))
63
- .min(1)
64
- .max(20),
225
+ trigger: TriggerBlock,
226
+ chain: z.array(ChainBlock).min(1).max(20),
65
227
  });
66
- /**
67
- * Convert a simple {trigger, chain} schema into CTRL's internal
68
- * {nodes, edges} shape used by the canvas + keeper.
69
- */
228
+ // ─── Compile to CTRL canvas {nodes, edges} ──────────────────────────────────
229
+ const ACTION_SET = new Set(ACTION_TYPES);
230
+ const CONDITION_SET = new Set(CONDITION_TYPES);
231
+ function classify(type) {
232
+ if (ACTION_SET.has(type))
233
+ return 'action';
234
+ if (CONDITION_SET.has(type))
235
+ return 'condition';
236
+ return 'utility';
237
+ }
70
238
  export function compileToWorkflowData(def) {
71
239
  const nodes = [];
72
240
  const edges = [];
241
+ const trigger = def.trigger;
73
242
  const triggerId = 'n0_trigger';
74
- const [triggerCategory, triggerSubtype] = def.trigger.type.split('.');
75
243
  nodes.push({
76
244
  id: triggerId,
77
245
  type: 'automation',
78
246
  blockType: 'trigger',
79
- blockSubtype: `${triggerCategory}.${triggerSubtype}`,
80
- data: { blockId: def.trigger.type, config: def.trigger.config ?? {} },
247
+ blockSubtype: trigger.type,
248
+ data: { blockId: trigger.type, config: trigger.config ?? {} },
81
249
  position: { x: 80, y: 80 },
82
250
  });
83
251
  let prevId = triggerId;
84
252
  def.chain.forEach((block, idx) => {
85
- const id = `n${idx + 1}_${block.type.replace('.', '_')}`;
86
- const [category, subtype] = block.type.split('.');
87
- const isAction = ACTION_TYPES.includes(block.type);
88
- const isCondition = CONDITION_TYPES.includes(block.type);
89
- const blockType = isAction ? 'action' : isCondition ? 'condition' : 'utility';
253
+ const id = `n${idx + 1}_${block.type.replace(/\./g, '_')}`;
90
254
  nodes.push({
91
255
  id,
92
256
  type: 'automation',
93
- blockType,
94
- blockSubtype: `${category}.${subtype}`,
257
+ blockType: classify(block.type),
258
+ blockSubtype: block.type,
95
259
  data: { blockId: block.type, config: block.config ?? {} },
96
260
  position: { x: 80 + (idx + 1) * 320, y: 80 },
97
261
  });
@@ -1 +1 @@
1
- {"version":3,"file":"blocks.js","sourceRoot":"","sources":["../src/blocks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"blocks.js","sourceRoot":"","sources":["../src/blocks.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -22,6 +22,7 @@ import { ACTIVATE_TOOL, handleActivate, } from './tools/activate-workflow.js';
22
22
  import { FIRE_MANUAL_TOOL, handleFireManual } from './tools/fire-manual.js';
23
23
  import { GET_EXECUTION_LOGS_TOOL, handleGetExecutionLogs, } from './tools/get-execution-logs.js';
24
24
  import { VAULT_STATUS_TOOL, handleVaultStatus } from './tools/vault-status.js';
25
+ import { GET_BLOCK_CATALOG_TOOL, handleGetBlockCatalog, } from './tools/get-block-catalog.js';
25
26
  import { CtrlApiError } from './client.js';
26
27
  const server = new Server({
27
28
  name: '@daxaur/ctrl-mcp',
@@ -33,6 +34,7 @@ const server = new Server({
33
34
  });
34
35
  const TOOLS = [
35
36
  VAULT_STATUS_TOOL,
37
+ GET_BLOCK_CATALOG_TOOL,
36
38
  CREATE_WORKFLOW_TOOL,
37
39
  ACTIVATE_TOOL,
38
40
  FIRE_MANUAL_TOOL,
@@ -40,6 +42,7 @@ const TOOLS = [
40
42
  ];
41
43
  const HANDLERS = {
42
44
  ctrl_get_vault_status: handleVaultStatus,
45
+ ctrl_get_block_catalog: handleGetBlockCatalog,
43
46
  ctrl_create_workflow: handleCreateWorkflow,
44
47
  ctrl_activate: handleActivate,
45
48
  ctrl_fire_manual: handleFireManual,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAA;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAA;AAChF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oCAAoC,CAAA;AAE3C,OAAO,EACL,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,aAAa,EACb,cAAc,GACf,MAAM,8BAA8B,CAAA;AACrC,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAC3E,OAAO,EACL,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB;IACE,IAAI,EAAE,kBAAkB;IACxB,OAAO,EAAE,OAAO;CACjB,EACD;IACE,YAAY,EAAE;QACZ,KAAK,EAAE,EAAE;KACV;CACF,CACF,CAAA;AAED,MAAM,KAAK,GAAG;IACZ,iBAAiB;IACjB,oBAAoB;IACpB,aAAa;IACb,gBAAgB;IAChB,uBAAuB;CACf,CAAA;AAEV,MAAM,QAAQ,GAAyD;IACrE,qBAAqB,EAAE,iBAAiB;IACxC,oBAAoB,EAAE,oBAAoB;IAC1C,aAAa,EAAE,cAAc;IAC7B,gBAAgB,EAAE,gBAAgB;IAClC,uBAAuB,EAAE,sBAAsB;CAChD,CAAA;AAED,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;IAC5D,KAAK,EAAE,KAAK;CACb,CAAC,CAAC,CAAA;AAEH,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;IAC5D,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,MAAM,CAAA;IAC5C,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;IAE9B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,iBAAiB,IAAI,gBAAgB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;iBAC9E;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAA;IACH,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;QACxC,OAAO,MAA4D,CAAA;IACrE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,KAAK,GAAG,GAAG,YAAY,YAAY,CAAA;QACzC,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QAChE,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,KAAK;wBACT,CAAC,CAAC,wBAAyB,GAAoB,CAAC,MAAM,MAAM,OAAO,EAAE;wBACrE,CAAC,CAAC,eAAe,OAAO,EAAE;iBAC7B;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAA;IACH,CAAC;AACH,CAAC,CAAC,CAAA;AAEF,KAAK,UAAU,IAAI;IACjB,wEAAwE;IACxE,0EAA0E;IAC1E,kCAAkC;IAClC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAClC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;QACnD,MAAM,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QAC/B,OAAM;IACR,CAAC;IACD,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAA;QACrC,OAAM;IACR,CAAC;IACD,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC7C,OAAO,CAAC,GAAG,CACT;YACE,iEAAiE;YACjE,EAAE;YACF,QAAQ;YACR,yGAAyG;YACzG,6DAA6D;YAC7D,+EAA+E;YAC/E,qCAAqC;YACrC,EAAE;YACF,MAAM;YACN,kDAAkD;YAClD,EAAE;YACF,4BAA4B;YAC5B,mEAAmE;SACpE,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAA;QACD,OAAM;IACR,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAA;IAC5C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IAC/B,oEAAoE;IACpE,OAAO,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAA;AAC7D,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAA;IAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -9,78 +9,18 @@ import { z } from 'zod';
9
9
  export declare const createWorkflowInputSchema: z.ZodObject<{
10
10
  name: z.ZodString;
11
11
  description: z.ZodOptional<z.ZodString>;
12
- trigger: z.ZodObject<{
13
- type: z.ZodEnum<["time.interval", "trigger.manual", "price.above", "price.below", "price.change", "pool.created", "watch.whale", "event.transfer", "event.balance"]>;
14
- config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
15
- }, "strip", z.ZodTypeAny, {
16
- type: "time.interval" | "trigger.manual" | "price.above" | "price.below" | "price.change" | "pool.created" | "watch.whale" | "event.transfer" | "event.balance";
17
- config?: Record<string, any> | undefined;
18
- }, {
19
- type: "time.interval" | "trigger.manual" | "price.above" | "price.below" | "price.change" | "pool.created" | "watch.whale" | "event.transfer" | "event.balance";
20
- config?: Record<string, any> | undefined;
21
- }>;
22
- chain: z.ZodArray<z.ZodUnion<[z.ZodObject<{
23
- type: z.ZodEnum<["cypher.swap", "read.balance", "notify.telegram", "notify.discord", "util.webhook"]>;
24
- config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
25
- }, "strip", z.ZodTypeAny, {
26
- type: "cypher.swap" | "read.balance" | "notify.telegram" | "notify.discord" | "util.webhook";
27
- config?: Record<string, any> | undefined;
28
- }, {
29
- type: "cypher.swap" | "read.balance" | "notify.telegram" | "notify.discord" | "util.webhook";
30
- config?: Record<string, any> | undefined;
31
- }>, z.ZodObject<{
32
- type: z.ZodEnum<["cond.price", "cond.balance", "cond.allowed_weekdays", "cond.time_window"]>;
33
- config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
34
- }, "strip", z.ZodTypeAny, {
35
- type: "cond.price" | "cond.balance" | "cond.allowed_weekdays" | "cond.time_window";
36
- config?: Record<string, any> | undefined;
37
- }, {
38
- type: "cond.price" | "cond.balance" | "cond.allowed_weekdays" | "cond.time_window";
39
- config?: Record<string, any> | undefined;
40
- }>, z.ZodObject<{
41
- type: z.ZodEnum<["util.delay", "util.note", "util.log", "util.stop", "util.snapshot"]>;
42
- config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
43
- }, "strip", z.ZodTypeAny, {
44
- type: "util.delay" | "util.note" | "util.log" | "util.stop" | "util.snapshot";
45
- config?: Record<string, any> | undefined;
46
- }, {
47
- type: "util.delay" | "util.note" | "util.log" | "util.stop" | "util.snapshot";
48
- config?: Record<string, any> | undefined;
49
- }>]>, "many">;
12
+ trigger: z.ZodUnion<[z.ZodTypeAny, z.ZodTypeAny, ...z.ZodTypeAny[]]>;
13
+ chain: z.ZodArray<z.ZodUnion<[z.ZodUnion<[z.ZodTypeAny, z.ZodTypeAny, ...z.ZodTypeAny[]]>, z.ZodUnion<[z.ZodTypeAny, z.ZodTypeAny, ...z.ZodTypeAny[]]>, z.ZodUnion<[z.ZodTypeAny, z.ZodTypeAny, ...z.ZodTypeAny[]]>]>, "many">;
50
14
  }, "strip", z.ZodTypeAny, {
51
15
  name: string;
52
- trigger: {
53
- type: "time.interval" | "trigger.manual" | "price.above" | "price.below" | "price.change" | "pool.created" | "watch.whale" | "event.transfer" | "event.balance";
54
- config?: Record<string, any> | undefined;
55
- };
56
- chain: ({
57
- type: "cypher.swap" | "read.balance" | "notify.telegram" | "notify.discord" | "util.webhook";
58
- config?: Record<string, any> | undefined;
59
- } | {
60
- type: "cond.price" | "cond.balance" | "cond.allowed_weekdays" | "cond.time_window";
61
- config?: Record<string, any> | undefined;
62
- } | {
63
- type: "util.delay" | "util.note" | "util.log" | "util.stop" | "util.snapshot";
64
- config?: Record<string, any> | undefined;
65
- })[];
16
+ chain: any[];
66
17
  description?: string | undefined;
18
+ trigger?: any;
67
19
  }, {
68
20
  name: string;
69
- trigger: {
70
- type: "time.interval" | "trigger.manual" | "price.above" | "price.below" | "price.change" | "pool.created" | "watch.whale" | "event.transfer" | "event.balance";
71
- config?: Record<string, any> | undefined;
72
- };
73
- chain: ({
74
- type: "cypher.swap" | "read.balance" | "notify.telegram" | "notify.discord" | "util.webhook";
75
- config?: Record<string, any> | undefined;
76
- } | {
77
- type: "cond.price" | "cond.balance" | "cond.allowed_weekdays" | "cond.time_window";
78
- config?: Record<string, any> | undefined;
79
- } | {
80
- type: "util.delay" | "util.note" | "util.log" | "util.stop" | "util.snapshot";
81
- config?: Record<string, any> | undefined;
82
- })[];
21
+ chain: any[];
83
22
  description?: string | undefined;
23
+ trigger?: any;
84
24
  }>;
85
25
  export declare const CREATE_WORKFLOW_TOOL: {
86
26
  readonly name: "ctrl_create_workflow";
@@ -147,8 +87,8 @@ export declare function handleCreateWorkflow(rawInput: unknown): Promise<{
147
87
  workflowId: string;
148
88
  activateUrl: string;
149
89
  status: string;
150
- trigger: "time.interval" | "trigger.manual" | "price.above" | "price.below" | "price.change" | "pool.created" | "watch.whale" | "event.transfer" | "event.balance";
151
- chain: ("cypher.swap" | "read.balance" | "notify.telegram" | "notify.discord" | "util.webhook" | "cond.price" | "cond.balance" | "cond.allowed_weekdays" | "cond.time_window" | "util.delay" | "util.note" | "util.log" | "util.stop" | "util.snapshot")[];
90
+ trigger: any;
91
+ chain: any[];
152
92
  };
153
93
  }>;
154
94
  //# sourceMappingURL=create-workflow.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-workflow.d.ts","sourceRoot":"","sources":["../../src/tools/create-workflow.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAQvB,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAA2B,CAAA;AAEjE,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqFvB,CAAA;AAMV,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,OAAO;;;;;;;;;;;;GAmD3D"}
1
+ {"version":3,"file":"create-workflow.d.ts","sourceRoot":"","sources":["../../src/tools/create-workflow.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAQvB,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;EAA2B,CAAA;AAEjE,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqFvB,CAAA;AAMV,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,OAAO;;;;;;;;;;;;GAmD3D"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * ctrl_get_block_catalog — return the live block catalog from /api/mcp/block-catalog.
3
+ *
4
+ * Agents call this when they need the most up-to-date list of supported
5
+ * triggers/actions/conditions/utilities with their config field schemas.
6
+ * The route is auth-free (documentation) so this works without an API key.
7
+ */
8
+ export interface BlockConfigField {
9
+ name: string;
10
+ type: string;
11
+ required: boolean;
12
+ default?: string | number | boolean;
13
+ enum_values?: string[];
14
+ description: string;
15
+ }
16
+ export interface CatalogEntry {
17
+ id: string;
18
+ label: string;
19
+ description: string;
20
+ config_fields: BlockConfigField[];
21
+ }
22
+ export interface BlockCatalog {
23
+ triggers: CatalogEntry[];
24
+ actions: CatalogEntry[];
25
+ conditions: CatalogEntry[];
26
+ utilities: CatalogEntry[];
27
+ }
28
+ export declare const GET_BLOCK_CATALOG_TOOL: {
29
+ readonly name: "ctrl_get_block_catalog";
30
+ readonly description: "Return the live catalog of every CTRL workflow block (trigger, action, condition, utility) with id, label, description, and config-field schemas. Call this BEFORE ctrl_create_workflow whenever you're unsure about a block's exact config shape, or whenever you want the freshest list of supported blocks (CTRL ships new blocks regularly — the static plugin schema may lag). Optional input: { category } to narrow to a single bucket.";
31
+ readonly inputSchema: {
32
+ readonly type: "object";
33
+ readonly properties: {
34
+ readonly category: {
35
+ readonly type: "string";
36
+ readonly enum: readonly ["trigger", "action", "condition", "utility"];
37
+ readonly description: "Optional. Filter to a single block bucket. Omit to get all four.";
38
+ };
39
+ };
40
+ };
41
+ };
42
+ export declare function handleGetBlockCatalog(rawInput: unknown): Promise<{
43
+ content: {
44
+ type: "text";
45
+ text: string;
46
+ }[];
47
+ structuredContent: Record<string, unknown>;
48
+ }>;
49
+ //# sourceMappingURL=get-block-catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-block-catalog.d.ts","sourceRoot":"","sources":["../../src/tools/get-block-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,OAAO,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;IACnC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,aAAa,EAAE,gBAAgB,EAAE,CAAA;CAClC;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,YAAY,EAAE,CAAA;IACxB,OAAO,EAAE,YAAY,EAAE,CAAA;IACvB,UAAU,EAAE,YAAY,EAAE,CAAA;IAC1B,SAAS,EAAE,YAAY,EAAE,CAAA;CAC1B;AAED,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;CAezB,CAAA;AAkBV,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,OAAO;;;;;uBAsDhB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;GAEnE"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * ctrl_get_block_catalog — return the live block catalog from /api/mcp/block-catalog.
3
+ *
4
+ * Agents call this when they need the most up-to-date list of supported
5
+ * triggers/actions/conditions/utilities with their config field schemas.
6
+ * The route is auth-free (documentation) so this works without an API key.
7
+ */
8
+ import { CTRL_API_BASE } from '../config.js';
9
+ export const GET_BLOCK_CATALOG_TOOL = {
10
+ name: 'ctrl_get_block_catalog',
11
+ description: "Return the live catalog of every CTRL workflow block (trigger, action, condition, utility) with id, label, description, and config-field schemas. Call this BEFORE ctrl_create_workflow whenever you're unsure about a block's exact config shape, or whenever you want the freshest list of supported blocks (CTRL ships new blocks regularly — the static plugin schema may lag). Optional input: { category } to narrow to a single bucket.",
12
+ inputSchema: {
13
+ type: 'object',
14
+ properties: {
15
+ category: {
16
+ type: 'string',
17
+ enum: ['trigger', 'action', 'condition', 'utility'],
18
+ description: 'Optional. Filter to a single block bucket. Omit to get all four.',
19
+ },
20
+ },
21
+ },
22
+ };
23
+ function isCategory(v) {
24
+ return v === 'trigger' || v === 'action' || v === 'condition' || v === 'utility';
25
+ }
26
+ function summarize(entries) {
27
+ return entries
28
+ .map((e) => {
29
+ const req = e.config_fields.filter((f) => f.required).map((f) => f.name);
30
+ const reqStr = req.length ? ` [required: ${req.join(', ')}]` : '';
31
+ return ` • ${e.id} — ${e.description}${reqStr}`;
32
+ })
33
+ .join('\n');
34
+ }
35
+ export async function handleGetBlockCatalog(rawInput) {
36
+ const input = (rawInput ?? {});
37
+ const category = isCategory(input.category) ? input.category : undefined;
38
+ const url = new URL('/api/mcp/block-catalog', CTRL_API_BASE);
39
+ if (category)
40
+ url.searchParams.set('category', category);
41
+ const controller = new AbortController();
42
+ const timeout = setTimeout(() => controller.abort(), 15_000);
43
+ let res;
44
+ try {
45
+ res = await fetch(url, {
46
+ method: 'GET',
47
+ headers: {
48
+ Accept: 'application/json',
49
+ 'User-Agent': '@daxaur/ctrl-mcp',
50
+ },
51
+ signal: controller.signal,
52
+ });
53
+ }
54
+ finally {
55
+ clearTimeout(timeout);
56
+ }
57
+ if (!res.ok) {
58
+ throw new Error(`Block catalog fetch failed: HTTP ${res.status} ${res.statusText}`);
59
+ }
60
+ const catalog = (await res.json());
61
+ const lines = [];
62
+ if (!category || category === 'trigger') {
63
+ lines.push(`Triggers (${catalog.triggers.length}):`);
64
+ lines.push(summarize(catalog.triggers));
65
+ }
66
+ if (!category || category === 'action') {
67
+ lines.push(`\nActions (${catalog.actions.length}):`);
68
+ lines.push(summarize(catalog.actions));
69
+ }
70
+ if (!category || category === 'condition') {
71
+ lines.push(`\nConditions (${catalog.conditions.length}):`);
72
+ lines.push(summarize(catalog.conditions));
73
+ }
74
+ if (!category || category === 'utility') {
75
+ lines.push(`\nUtilities (${catalog.utilities.length}):`);
76
+ lines.push(summarize(catalog.utilities));
77
+ }
78
+ lines.push('\nUse the structuredContent payload for full config_fields metadata when wiring up ctrl_create_workflow.');
79
+ return {
80
+ content: [{ type: 'text', text: lines.join('\n') }],
81
+ structuredContent: catalog,
82
+ };
83
+ }
84
+ //# sourceMappingURL=get-block-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-block-catalog.js","sourceRoot":"","sources":["../../src/tools/get-block-catalog.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@daxaur/ctrl-mcp",
3
- "version": "0.1.5",
3
+ "version": "0.1.6",
4
4
  "description": "Base MCP plugin for CTRL — turn natural language into onchain workflow automations on Base. Sign once, trade forever.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",