@flowdot.ai/mcp-server 1.0.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.
Files changed (315) hide show
  1. package/README.md +162 -0
  2. package/bin/flowdot-mcp.js +15 -0
  3. package/dist/api-client.d.ts +349 -0
  4. package/dist/api-client.d.ts.map +1 -0
  5. package/dist/api-client.js +789 -0
  6. package/dist/api-client.js.map +1 -0
  7. package/dist/index.d.ts +26 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +32 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/server.d.ts +15 -0
  12. package/dist/server.d.ts.map +1 -0
  13. package/dist/server.js +96 -0
  14. package/dist/server.js.map +1 -0
  15. package/dist/tools/add-connection.d.ts +16 -0
  16. package/dist/tools/add-connection.d.ts.map +1 -0
  17. package/dist/tools/add-connection.js +62 -0
  18. package/dist/tools/add-connection.js.map +1 -0
  19. package/dist/tools/add-custom-node-comment.d.ts +15 -0
  20. package/dist/tools/add-custom-node-comment.d.ts.map +1 -0
  21. package/dist/tools/add-custom-node-comment.js +69 -0
  22. package/dist/tools/add-custom-node-comment.js.map +1 -0
  23. package/dist/tools/add-node.d.ts +18 -0
  24. package/dist/tools/add-node.d.ts.map +1 -0
  25. package/dist/tools/add-node.js +66 -0
  26. package/dist/tools/add-node.js.map +1 -0
  27. package/dist/tools/add-shared-result-comment.d.ts +15 -0
  28. package/dist/tools/add-shared-result-comment.d.ts.map +1 -0
  29. package/dist/tools/add-shared-result-comment.js +70 -0
  30. package/dist/tools/add-shared-result-comment.js.map +1 -0
  31. package/dist/tools/add-workflow-comment.d.ts +14 -0
  32. package/dist/tools/add-workflow-comment.d.ts.map +1 -0
  33. package/dist/tools/add-workflow-comment.js +66 -0
  34. package/dist/tools/add-workflow-comment.js.map +1 -0
  35. package/dist/tools/agent-chat.d.ts +14 -0
  36. package/dist/tools/agent-chat.d.ts.map +1 -0
  37. package/dist/tools/agent-chat.js +80 -0
  38. package/dist/tools/agent-chat.js.map +1 -0
  39. package/dist/tools/cancel-execution.d.ts +12 -0
  40. package/dist/tools/cancel-execution.d.ts.map +1 -0
  41. package/dist/tools/cancel-execution.js +37 -0
  42. package/dist/tools/cancel-execution.js.map +1 -0
  43. package/dist/tools/clone-app.d.ts +11 -0
  44. package/dist/tools/clone-app.d.ts.map +1 -0
  45. package/dist/tools/clone-app.js +63 -0
  46. package/dist/tools/clone-app.js.map +1 -0
  47. package/dist/tools/copy-custom-node.d.ts +14 -0
  48. package/dist/tools/copy-custom-node.d.ts.map +1 -0
  49. package/dist/tools/copy-custom-node.js +50 -0
  50. package/dist/tools/copy-custom-node.js.map +1 -0
  51. package/dist/tools/create-app.d.ts +11 -0
  52. package/dist/tools/create-app.d.ts.map +1 -0
  53. package/dist/tools/create-app.js +182 -0
  54. package/dist/tools/create-app.js.map +1 -0
  55. package/dist/tools/create-custom-node.d.ts +28 -0
  56. package/dist/tools/create-custom-node.d.ts.map +1 -0
  57. package/dist/tools/create-custom-node.js +221 -0
  58. package/dist/tools/create-custom-node.js.map +1 -0
  59. package/dist/tools/create-input-preset.d.ts +15 -0
  60. package/dist/tools/create-input-preset.d.ts.map +1 -0
  61. package/dist/tools/create-input-preset.js +76 -0
  62. package/dist/tools/create-input-preset.js.map +1 -0
  63. package/dist/tools/create-shared-result.d.ts +17 -0
  64. package/dist/tools/create-shared-result.d.ts.map +1 -0
  65. package/dist/tools/create-shared-result.js +78 -0
  66. package/dist/tools/create-shared-result.js.map +1 -0
  67. package/dist/tools/create-workflow.d.ts +13 -0
  68. package/dist/tools/create-workflow.d.ts.map +1 -0
  69. package/dist/tools/create-workflow.js +49 -0
  70. package/dist/tools/create-workflow.js.map +1 -0
  71. package/dist/tools/delete-app.d.ts +11 -0
  72. package/dist/tools/delete-app.d.ts.map +1 -0
  73. package/dist/tools/delete-app.js +40 -0
  74. package/dist/tools/delete-app.js.map +1 -0
  75. package/dist/tools/delete-connection.d.ts +13 -0
  76. package/dist/tools/delete-connection.d.ts.map +1 -0
  77. package/dist/tools/delete-connection.js +41 -0
  78. package/dist/tools/delete-connection.js.map +1 -0
  79. package/dist/tools/delete-custom-node.d.ts +13 -0
  80. package/dist/tools/delete-custom-node.d.ts.map +1 -0
  81. package/dist/tools/delete-custom-node.js +41 -0
  82. package/dist/tools/delete-custom-node.js.map +1 -0
  83. package/dist/tools/delete-input-preset.d.ts +13 -0
  84. package/dist/tools/delete-input-preset.d.ts.map +1 -0
  85. package/dist/tools/delete-input-preset.js +42 -0
  86. package/dist/tools/delete-input-preset.js.map +1 -0
  87. package/dist/tools/delete-node.d.ts +13 -0
  88. package/dist/tools/delete-node.d.ts.map +1 -0
  89. package/dist/tools/delete-node.js +41 -0
  90. package/dist/tools/delete-node.js.map +1 -0
  91. package/dist/tools/delete-workflow.d.ts +12 -0
  92. package/dist/tools/delete-workflow.d.ts.map +1 -0
  93. package/dist/tools/delete-workflow.js +37 -0
  94. package/dist/tools/delete-workflow.js.map +1 -0
  95. package/dist/tools/duplicate-workflow.d.ts +13 -0
  96. package/dist/tools/duplicate-workflow.d.ts.map +1 -0
  97. package/dist/tools/duplicate-workflow.js +49 -0
  98. package/dist/tools/duplicate-workflow.js.map +1 -0
  99. package/dist/tools/execute-workflow.d.ts +15 -0
  100. package/dist/tools/execute-workflow.d.ts.map +1 -0
  101. package/dist/tools/execute-workflow.js +112 -0
  102. package/dist/tools/execute-workflow.js.map +1 -0
  103. package/dist/tools/favorite-custom-node.d.ts +14 -0
  104. package/dist/tools/favorite-custom-node.d.ts.map +1 -0
  105. package/dist/tools/favorite-custom-node.js +48 -0
  106. package/dist/tools/favorite-custom-node.js.map +1 -0
  107. package/dist/tools/favorite-workflow.d.ts +13 -0
  108. package/dist/tools/favorite-workflow.d.ts.map +1 -0
  109. package/dist/tools/favorite-workflow.js +42 -0
  110. package/dist/tools/favorite-workflow.js.map +1 -0
  111. package/dist/tools/get-app-template.d.ts +10 -0
  112. package/dist/tools/get-app-template.d.ts.map +1 -0
  113. package/dist/tools/get-app-template.js +856 -0
  114. package/dist/tools/get-app-template.js.map +1 -0
  115. package/dist/tools/get-app.d.ts +11 -0
  116. package/dist/tools/get-app.d.ts.map +1 -0
  117. package/dist/tools/get-app.js +124 -0
  118. package/dist/tools/get-app.js.map +1 -0
  119. package/dist/tools/get-custom-node-comments.d.ts +13 -0
  120. package/dist/tools/get-custom-node-comments.d.ts.map +1 -0
  121. package/dist/tools/get-custom-node-comments.js +65 -0
  122. package/dist/tools/get-custom-node-comments.js.map +1 -0
  123. package/dist/tools/get-custom-node-template.d.ts +31 -0
  124. package/dist/tools/get-custom-node-template.d.ts.map +1 -0
  125. package/dist/tools/get-custom-node-template.js +212 -0
  126. package/dist/tools/get-custom-node-template.js.map +1 -0
  127. package/dist/tools/get-custom-node.d.ts +13 -0
  128. package/dist/tools/get-custom-node.d.ts.map +1 -0
  129. package/dist/tools/get-custom-node.js +98 -0
  130. package/dist/tools/get-custom-node.js.map +1 -0
  131. package/dist/tools/get-execution-history.d.ts +14 -0
  132. package/dist/tools/get-execution-history.d.ts.map +1 -0
  133. package/dist/tools/get-execution-history.js +65 -0
  134. package/dist/tools/get-execution-history.js.map +1 -0
  135. package/dist/tools/get-execution.d.ts +12 -0
  136. package/dist/tools/get-execution.d.ts.map +1 -0
  137. package/dist/tools/get-execution.js +81 -0
  138. package/dist/tools/get-execution.js.map +1 -0
  139. package/dist/tools/get-input-preset.d.ts +13 -0
  140. package/dist/tools/get-input-preset.d.ts.map +1 -0
  141. package/dist/tools/get-input-preset.js +69 -0
  142. package/dist/tools/get-input-preset.js.map +1 -0
  143. package/dist/tools/get-node-connections.d.ts +13 -0
  144. package/dist/tools/get-node-connections.d.ts.map +1 -0
  145. package/dist/tools/get-node-connections.js +67 -0
  146. package/dist/tools/get-node-connections.js.map +1 -0
  147. package/dist/tools/get-node-schema.d.ts +12 -0
  148. package/dist/tools/get-node-schema.d.ts.map +1 -0
  149. package/dist/tools/get-node-schema.js +113 -0
  150. package/dist/tools/get-node-schema.js.map +1 -0
  151. package/dist/tools/get-public-workflows.d.ts +13 -0
  152. package/dist/tools/get-public-workflows.d.ts.map +1 -0
  153. package/dist/tools/get-public-workflows.js +63 -0
  154. package/dist/tools/get-public-workflows.js.map +1 -0
  155. package/dist/tools/get-shared-result-comments.d.ts +13 -0
  156. package/dist/tools/get-shared-result-comments.d.ts.map +1 -0
  157. package/dist/tools/get-shared-result-comments.js +62 -0
  158. package/dist/tools/get-shared-result-comments.js.map +1 -0
  159. package/dist/tools/get-shared-result.d.ts +13 -0
  160. package/dist/tools/get-shared-result.d.ts.map +1 -0
  161. package/dist/tools/get-shared-result.js +83 -0
  162. package/dist/tools/get-shared-result.js.map +1 -0
  163. package/dist/tools/get-workflow-comments.d.ts +12 -0
  164. package/dist/tools/get-workflow-comments.d.ts.map +1 -0
  165. package/dist/tools/get-workflow-comments.js +60 -0
  166. package/dist/tools/get-workflow-comments.js.map +1 -0
  167. package/dist/tools/get-workflow-details.d.ts +12 -0
  168. package/dist/tools/get-workflow-details.d.ts.map +1 -0
  169. package/dist/tools/get-workflow-details.js +87 -0
  170. package/dist/tools/get-workflow-details.js.map +1 -0
  171. package/dist/tools/get-workflow-graph.d.ts +12 -0
  172. package/dist/tools/get-workflow-graph.d.ts.map +1 -0
  173. package/dist/tools/get-workflow-graph.js +83 -0
  174. package/dist/tools/get-workflow-graph.js.map +1 -0
  175. package/dist/tools/get-workflow-inputs-schema.d.ts +12 -0
  176. package/dist/tools/get-workflow-inputs-schema.d.ts.map +1 -0
  177. package/dist/tools/get-workflow-inputs-schema.js +74 -0
  178. package/dist/tools/get-workflow-inputs-schema.js.map +1 -0
  179. package/dist/tools/get-workflow-metrics.d.ts +13 -0
  180. package/dist/tools/get-workflow-metrics.d.ts.map +1 -0
  181. package/dist/tools/get-workflow-metrics.js +65 -0
  182. package/dist/tools/get-workflow-metrics.js.map +1 -0
  183. package/dist/tools/get-workflow-public-url.d.ts +12 -0
  184. package/dist/tools/get-workflow-public-url.d.ts.map +1 -0
  185. package/dist/tools/get-workflow-public-url.js +48 -0
  186. package/dist/tools/get-workflow-public-url.js.map +1 -0
  187. package/dist/tools/get-workflow-tags.d.ts +12 -0
  188. package/dist/tools/get-workflow-tags.d.ts.map +1 -0
  189. package/dist/tools/get-workflow-tags.js +42 -0
  190. package/dist/tools/get-workflow-tags.js.map +1 -0
  191. package/dist/tools/index.d.ts +12 -0
  192. package/dist/tools/index.d.ts.map +1 -0
  193. package/dist/tools/index.js +407 -0
  194. package/dist/tools/index.js.map +1 -0
  195. package/dist/tools/link-app-workflow.d.ts +11 -0
  196. package/dist/tools/link-app-workflow.d.ts.map +1 -0
  197. package/dist/tools/link-app-workflow.js +69 -0
  198. package/dist/tools/link-app-workflow.js.map +1 -0
  199. package/dist/tools/list-apps.d.ts +11 -0
  200. package/dist/tools/list-apps.d.ts.map +1 -0
  201. package/dist/tools/list-apps.js +75 -0
  202. package/dist/tools/list-apps.js.map +1 -0
  203. package/dist/tools/list-available-nodes.d.ts +10 -0
  204. package/dist/tools/list-available-nodes.d.ts.map +1 -0
  205. package/dist/tools/list-available-nodes.js +94 -0
  206. package/dist/tools/list-available-nodes.js.map +1 -0
  207. package/dist/tools/list-custom-nodes.d.ts +16 -0
  208. package/dist/tools/list-custom-nodes.d.ts.map +1 -0
  209. package/dist/tools/list-custom-nodes.js +80 -0
  210. package/dist/tools/list-custom-nodes.js.map +1 -0
  211. package/dist/tools/list-input-presets.d.ts +15 -0
  212. package/dist/tools/list-input-presets.d.ts.map +1 -0
  213. package/dist/tools/list-input-presets.js +100 -0
  214. package/dist/tools/list-input-presets.js.map +1 -0
  215. package/dist/tools/list-shared-results.d.ts +15 -0
  216. package/dist/tools/list-shared-results.d.ts.map +1 -0
  217. package/dist/tools/list-shared-results.js +80 -0
  218. package/dist/tools/list-shared-results.js.map +1 -0
  219. package/dist/tools/list-workflows.d.ts +13 -0
  220. package/dist/tools/list-workflows.d.ts.map +1 -0
  221. package/dist/tools/list-workflows.js +70 -0
  222. package/dist/tools/list-workflows.js.map +1 -0
  223. package/dist/tools/publish-app.d.ts +11 -0
  224. package/dist/tools/publish-app.d.ts.map +1 -0
  225. package/dist/tools/publish-app.js +44 -0
  226. package/dist/tools/publish-app.js.map +1 -0
  227. package/dist/tools/retry-execution.d.ts +12 -0
  228. package/dist/tools/retry-execution.d.ts.map +1 -0
  229. package/dist/tools/retry-execution.js +45 -0
  230. package/dist/tools/retry-execution.js.map +1 -0
  231. package/dist/tools/search-apps.d.ts +11 -0
  232. package/dist/tools/search-apps.d.ts.map +1 -0
  233. package/dist/tools/search-apps.js +104 -0
  234. package/dist/tools/search-apps.js.map +1 -0
  235. package/dist/tools/search-public-custom-nodes.d.ts +19 -0
  236. package/dist/tools/search-public-custom-nodes.d.ts.map +1 -0
  237. package/dist/tools/search-public-custom-nodes.js +101 -0
  238. package/dist/tools/search-public-custom-nodes.js.map +1 -0
  239. package/dist/tools/search-workflows.d.ts +14 -0
  240. package/dist/tools/search-workflows.d.ts.map +1 -0
  241. package/dist/tools/search-workflows.js +62 -0
  242. package/dist/tools/search-workflows.js.map +1 -0
  243. package/dist/tools/set-workflow-tags.d.ts +13 -0
  244. package/dist/tools/set-workflow-tags.d.ts.map +1 -0
  245. package/dist/tools/set-workflow-tags.js +42 -0
  246. package/dist/tools/set-workflow-tags.js.map +1 -0
  247. package/dist/tools/stream-execution.d.ts +13 -0
  248. package/dist/tools/stream-execution.d.ts.map +1 -0
  249. package/dist/tools/stream-execution.js +70 -0
  250. package/dist/tools/stream-execution.js.map +1 -0
  251. package/dist/tools/toggle-community-inputs.d.ts +13 -0
  252. package/dist/tools/toggle-community-inputs.d.ts.map +1 -0
  253. package/dist/tools/toggle-community-inputs.js +49 -0
  254. package/dist/tools/toggle-community-inputs.js.map +1 -0
  255. package/dist/tools/toggle-custom-node-visibility.d.ts +14 -0
  256. package/dist/tools/toggle-custom-node-visibility.d.ts.map +1 -0
  257. package/dist/tools/toggle-custom-node-visibility.js +59 -0
  258. package/dist/tools/toggle-custom-node-visibility.js.map +1 -0
  259. package/dist/tools/toggle-workflow-public.d.ts +13 -0
  260. package/dist/tools/toggle-workflow-public.d.ts.map +1 -0
  261. package/dist/tools/toggle-workflow-public.js +42 -0
  262. package/dist/tools/toggle-workflow-public.js.map +1 -0
  263. package/dist/tools/unlink-app-workflow.d.ts +11 -0
  264. package/dist/tools/unlink-app-workflow.d.ts.map +1 -0
  265. package/dist/tools/unlink-app-workflow.js +44 -0
  266. package/dist/tools/unlink-app-workflow.js.map +1 -0
  267. package/dist/tools/unpublish-app.d.ts +11 -0
  268. package/dist/tools/unpublish-app.d.ts.map +1 -0
  269. package/dist/tools/unpublish-app.js +39 -0
  270. package/dist/tools/unpublish-app.js.map +1 -0
  271. package/dist/tools/update-app.d.ts +11 -0
  272. package/dist/tools/update-app.d.ts.map +1 -0
  273. package/dist/tools/update-app.js +101 -0
  274. package/dist/tools/update-app.js.map +1 -0
  275. package/dist/tools/update-custom-node.d.ts +28 -0
  276. package/dist/tools/update-custom-node.d.ts.map +1 -0
  277. package/dist/tools/update-custom-node.js +174 -0
  278. package/dist/tools/update-custom-node.js.map +1 -0
  279. package/dist/tools/update-input-preset.d.ts +16 -0
  280. package/dist/tools/update-input-preset.d.ts.map +1 -0
  281. package/dist/tools/update-input-preset.js +79 -0
  282. package/dist/tools/update-input-preset.js.map +1 -0
  283. package/dist/tools/update-node.d.ts +18 -0
  284. package/dist/tools/update-node.d.ts.map +1 -0
  285. package/dist/tools/update-node.js +73 -0
  286. package/dist/tools/update-node.js.map +1 -0
  287. package/dist/tools/validate-workflow.d.ts +12 -0
  288. package/dist/tools/validate-workflow.d.ts.map +1 -0
  289. package/dist/tools/validate-workflow.js +61 -0
  290. package/dist/tools/validate-workflow.js.map +1 -0
  291. package/dist/tools/vote-custom-node.d.ts +14 -0
  292. package/dist/tools/vote-custom-node.d.ts.map +1 -0
  293. package/dist/tools/vote-custom-node.js +60 -0
  294. package/dist/tools/vote-custom-node.js.map +1 -0
  295. package/dist/tools/vote-input-preset.d.ts +14 -0
  296. package/dist/tools/vote-input-preset.d.ts.map +1 -0
  297. package/dist/tools/vote-input-preset.js +49 -0
  298. package/dist/tools/vote-input-preset.js.map +1 -0
  299. package/dist/tools/vote-shared-result.d.ts +14 -0
  300. package/dist/tools/vote-shared-result.d.ts.map +1 -0
  301. package/dist/tools/vote-shared-result.js +49 -0
  302. package/dist/tools/vote-shared-result.js.map +1 -0
  303. package/dist/tools/vote-workflow.d.ts +13 -0
  304. package/dist/tools/vote-workflow.d.ts.map +1 -0
  305. package/dist/tools/vote-workflow.js +45 -0
  306. package/dist/tools/vote-workflow.js.map +1 -0
  307. package/dist/types.d.ts +670 -0
  308. package/dist/types.d.ts.map +1 -0
  309. package/dist/types.js +5 -0
  310. package/dist/types.js.map +1 -0
  311. package/dist/utils/script-validator.d.ts +35 -0
  312. package/dist/utils/script-validator.d.ts.map +1 -0
  313. package/dist/utils/script-validator.js +282 -0
  314. package/dist/utils/script-validator.js.map +1 -0
  315. package/package.json +54 -0
@@ -0,0 +1,62 @@
1
+ /**
2
+ * search_workflows MCP Tool
3
+ *
4
+ * Searches workflows by name, description, or tags.
5
+ */
6
+ export const searchWorkflowsTool = {
7
+ name: 'search_workflows',
8
+ description: 'Search for workflows by name, description, or tags. Searches your own workflows.',
9
+ inputSchema: {
10
+ type: 'object',
11
+ properties: {
12
+ query: {
13
+ type: 'string',
14
+ description: 'Search query to match against workflow name, description, or tags',
15
+ },
16
+ tags: {
17
+ type: 'array',
18
+ items: { type: 'string' },
19
+ description: 'Optional: Filter results to only include workflows with these tags',
20
+ },
21
+ page: {
22
+ type: 'number',
23
+ description: 'Page number for pagination',
24
+ default: 1,
25
+ },
26
+ },
27
+ required: ['query'],
28
+ },
29
+ };
30
+ export async function handleSearchWorkflows(api, args) {
31
+ try {
32
+ const result = await api.searchWorkflows(args.query, args.tags, args.page);
33
+ // The API client returns the full paginated result object
34
+ // which has { data: [...], current_page, last_page, total, ... }
35
+ const workflows = Array.isArray(result?.data) ? result.data : [];
36
+ if (workflows.length === 0) {
37
+ return {
38
+ content: [{ type: 'text', text: `No workflows found matching "${args.query}".` }],
39
+ };
40
+ }
41
+ const lines = [
42
+ `## Search Results for "${args.query}" (Page ${result?.current_page || 1}/${result?.last_page || 1}, Total: ${result?.total || workflows.length})`,
43
+ '',
44
+ ];
45
+ for (const workflow of workflows) {
46
+ const desc = workflow.description ? ` - ${workflow.description}` : '';
47
+ const visibility = workflow.is_public ? ' (public)' : '';
48
+ lines.push(`- **${workflow.name}** (${workflow.id})${visibility}${desc}`);
49
+ }
50
+ return {
51
+ content: [{ type: 'text', text: lines.join('\n') }],
52
+ };
53
+ }
54
+ catch (error) {
55
+ const message = error instanceof Error ? error.message : 'Unknown error';
56
+ return {
57
+ content: [{ type: 'text', text: `Error searching workflows: ${message}` }],
58
+ isError: true,
59
+ };
60
+ }
61
+ }
62
+ //# sourceMappingURL=search-workflows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-workflows.js","sourceRoot":"","sources":["../../src/tools/search-workflows.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,MAAM,CAAC,MAAM,mBAAmB,GAAS;IACvC,IAAI,EAAE,kBAAkB;IACxB,WAAW,EAAE,kFAAkF;IAC/F,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,mEAAmE;aACjF;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACzB,WAAW,EAAE,oEAAoE;aAClF;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,4BAA4B;gBACzC,OAAO,EAAE,CAAC;aACX;SACF;QACD,QAAQ,EAAE,CAAC,OAAO,CAAC;KACpB;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,GAAqB,EACrB,IAAuD;IAEvD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAE3E,0DAA0D;QAC1D,iEAAiE;QACjE,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAEjE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gCAAgC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;aAClF,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAG;YACZ,0BAA0B,IAAI,CAAC,KAAK,WAAW,MAAM,EAAE,YAAY,IAAI,CAAC,IAAI,MAAM,EAAE,SAAS,IAAI,CAAC,YAAY,MAAM,EAAE,KAAK,IAAI,SAAS,CAAC,MAAM,GAAG;YAClJ,EAAE;SACH,CAAC;QAEF,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtE,MAAM,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;YACzD,KAAK,CAAC,IAAI,CAAC,OAAO,QAAQ,CAAC,IAAI,OAAO,QAAQ,CAAC,EAAE,IAAI,UAAU,GAAG,IAAI,EAAE,CAAC,CAAC;QAC5E,CAAC;QAED,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;SACpD,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QACzE,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,8BAA8B,OAAO,EAAE,EAAE,CAAC;YAC1E,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * set_workflow_tags MCP Tool
3
+ *
4
+ * Sets/updates the tags on a workflow.
5
+ */
6
+ import { Tool, CallToolResult } from '@modelcontextprotocol/sdk/types.js';
7
+ import { FlowDotApiClient } from '../api-client.js';
8
+ export declare const setWorkflowTagsTool: Tool;
9
+ export declare function handleSetWorkflowTags(api: FlowDotApiClient, args: {
10
+ workflow_id: string;
11
+ tags: string[];
12
+ }): Promise<CallToolResult>;
13
+ //# sourceMappingURL=set-workflow-tags.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-workflow-tags.d.ts","sourceRoot":"","sources":["../../src/tools/set-workflow-tags.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,eAAO,MAAM,mBAAmB,EAAE,IAkBjC,CAAC;AAEF,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,gBAAgB,EACrB,IAAI,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,GAC5C,OAAO,CAAC,cAAc,CAAC,CAiBzB"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * set_workflow_tags MCP Tool
3
+ *
4
+ * Sets/updates the tags on a workflow.
5
+ */
6
+ export const setWorkflowTagsTool = {
7
+ name: 'set_workflow_tags',
8
+ description: 'Set or update the tags/categories on a workflow. Replaces existing tags.',
9
+ inputSchema: {
10
+ type: 'object',
11
+ properties: {
12
+ workflow_id: {
13
+ type: 'string',
14
+ description: 'The workflow ID (hash)',
15
+ },
16
+ tags: {
17
+ type: 'array',
18
+ items: { type: 'string' },
19
+ description: 'Array of tags to set on the workflow',
20
+ },
21
+ },
22
+ required: ['workflow_id', 'tags'],
23
+ },
24
+ };
25
+ export async function handleSetWorkflowTags(api, args) {
26
+ try {
27
+ // API may return undefined (no data wrapper) or { message: "..." }
28
+ const result = await api.setWorkflowTags(args.workflow_id, args.tags);
29
+ const message = result?.message || `Tags updated: ${args.tags.join(', ')}`;
30
+ return {
31
+ content: [{ type: 'text', text: message }],
32
+ };
33
+ }
34
+ catch (error) {
35
+ const message = error instanceof Error ? error.message : 'Unknown error';
36
+ return {
37
+ content: [{ type: 'text', text: `Error setting workflow tags: ${message}` }],
38
+ isError: true,
39
+ };
40
+ }
41
+ }
42
+ //# sourceMappingURL=set-workflow-tags.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-workflow-tags.js","sourceRoot":"","sources":["../../src/tools/set-workflow-tags.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,MAAM,CAAC,MAAM,mBAAmB,GAAS;IACvC,IAAI,EAAE,mBAAmB;IACzB,WAAW,EAAE,0EAA0E;IACvF,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,wBAAwB;aACtC;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACzB,WAAW,EAAE,sCAAsC;aACpD;SACF;QACD,QAAQ,EAAE,CAAC,aAAa,EAAE,MAAM,CAAC;KAClC;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,GAAqB,EACrB,IAA6C;IAE7C,IAAI,CAAC;QACH,mEAAmE;QACnE,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAEtE,MAAM,OAAO,GAAG,MAAM,EAAE,OAAO,IAAI,iBAAiB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAE3E,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;SAC3C,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QACzE,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gCAAgC,OAAO,EAAE,EAAE,CAAC;YAC5E,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * stream_execution MCP Tool
3
+ *
4
+ * Provides SSE stream URL for real-time execution progress.
5
+ * Note: MCP doesn't support true streaming, so this returns connection info.
6
+ */
7
+ import { Tool, CallToolResult } from '@modelcontextprotocol/sdk/types.js';
8
+ import { FlowDotApiClient } from '../api-client.js';
9
+ export declare const streamExecutionTool: Tool;
10
+ export declare function handleStreamExecution(api: FlowDotApiClient, args: {
11
+ execution_id: string;
12
+ }): Promise<CallToolResult>;
13
+ //# sourceMappingURL=stream-execution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream-execution.d.ts","sourceRoot":"","sources":["../../src/tools/stream-execution.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,eAAO,MAAM,mBAAmB,EAAE,IAajC,CAAC;AAEF,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,gBAAgB,EACrB,IAAI,EAAE;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,GAC7B,OAAO,CAAC,cAAc,CAAC,CAiDzB"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * stream_execution MCP Tool
3
+ *
4
+ * Provides SSE stream URL for real-time execution progress.
5
+ * Note: MCP doesn't support true streaming, so this returns connection info.
6
+ */
7
+ export const streamExecutionTool = {
8
+ name: 'stream_execution',
9
+ description: 'Get real-time streaming information for a workflow execution. Returns the SSE endpoint URL and authentication details for connecting to the execution stream.',
10
+ inputSchema: {
11
+ type: 'object',
12
+ properties: {
13
+ execution_id: {
14
+ type: 'string',
15
+ description: 'The execution ID to stream',
16
+ },
17
+ },
18
+ required: ['execution_id'],
19
+ },
20
+ };
21
+ export async function handleStreamExecution(api, args) {
22
+ try {
23
+ // Get the stream URL and auth token
24
+ const streamUrl = api.getExecutionStreamUrl(args.execution_id);
25
+ const authToken = api.getAuthToken();
26
+ const lines = [
27
+ '## Execution Stream Information',
28
+ '',
29
+ '**SSE Endpoint:**',
30
+ '```',
31
+ streamUrl,
32
+ '```',
33
+ '',
34
+ '**Authorization Header:**',
35
+ '```',
36
+ `Bearer ${authToken.substring(0, 20)}...`,
37
+ '```',
38
+ '',
39
+ '### Event Types',
40
+ '- `node_started` - A node has started processing',
41
+ '- `node_completed` - A node has finished processing',
42
+ '- `node_error` - A node encountered an error',
43
+ '- `execution_completed` - The workflow has completed successfully',
44
+ '- `execution_failed` - The workflow has failed',
45
+ '',
46
+ '### Connection Example',
47
+ '```javascript',
48
+ `const eventSource = new EventSource('${streamUrl}', {`,
49
+ ` headers: { 'Authorization': 'Bearer YOUR_TOKEN' }`,
50
+ '});',
51
+ '',
52
+ 'eventSource.onmessage = (event) => {',
53
+ ' const data = JSON.parse(event.data);',
54
+ ' console.log(data.event, data.data);',
55
+ '};',
56
+ '```',
57
+ ];
58
+ return {
59
+ content: [{ type: 'text', text: lines.join('\n') }],
60
+ };
61
+ }
62
+ catch (error) {
63
+ const message = error instanceof Error ? error.message : 'Unknown error';
64
+ return {
65
+ content: [{ type: 'text', text: `Error getting stream information: ${message}` }],
66
+ isError: true,
67
+ };
68
+ }
69
+ }
70
+ //# sourceMappingURL=stream-execution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream-execution.js","sourceRoot":"","sources":["../../src/tools/stream-execution.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,MAAM,CAAC,MAAM,mBAAmB,GAAS;IACvC,IAAI,EAAE,kBAAkB;IACxB,WAAW,EAAE,+JAA+J;IAC5K,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,YAAY,EAAE;gBACZ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,4BAA4B;aAC1C;SACF;QACD,QAAQ,EAAE,CAAC,cAAc,CAAC;KAC3B;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,GAAqB,EACrB,IAA8B;IAE9B,IAAI,CAAC;QACH,oCAAoC;QACpC,MAAM,SAAS,GAAG,GAAG,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC/D,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;QAErC,MAAM,KAAK,GAAG;YACZ,iCAAiC;YACjC,EAAE;YACF,mBAAmB;YACnB,KAAK;YACL,SAAS;YACT,KAAK;YACL,EAAE;YACF,2BAA2B;YAC3B,KAAK;YACL,UAAU,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK;YACzC,KAAK;YACL,EAAE;YACF,iBAAiB;YACjB,kDAAkD;YAClD,qDAAqD;YACrD,8CAA8C;YAC9C,mEAAmE;YACnE,gDAAgD;YAChD,EAAE;YACF,wBAAwB;YACxB,eAAe;YACf,wCAAwC,SAAS,MAAM;YACvD,qDAAqD;YACrD,KAAK;YACL,EAAE;YACF,sCAAsC;YACtC,wCAAwC;YACxC,uCAAuC;YACvC,IAAI;YACJ,KAAK;SACN,CAAC;QAEF,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;SACpD,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QACzE,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,qCAAqC,OAAO,EAAE,EAAE,CAAC;YACjF,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * toggle_community_inputs MCP Tool
3
+ *
4
+ * Enables or disables community inputs (input presets) for a workflow.
5
+ */
6
+ import { Tool, CallToolResult } from '@modelcontextprotocol/sdk/types.js';
7
+ import { FlowDotApiClient } from '../api-client.js';
8
+ export declare const toggleCommunityInputsTool: Tool;
9
+ export declare function handleToggleCommunityInputs(api: FlowDotApiClient, args: {
10
+ workflow_id: string;
11
+ enabled: boolean;
12
+ }): Promise<CallToolResult>;
13
+ //# sourceMappingURL=toggle-community-inputs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toggle-community-inputs.d.ts","sourceRoot":"","sources":["../../src/tools/toggle-community-inputs.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,eAAO,MAAM,yBAAyB,EAAE,IAiBvC,CAAC;AAEF,wBAAsB,2BAA2B,CAC/C,GAAG,EAAE,gBAAgB,EACrB,IAAI,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAC9C,OAAO,CAAC,cAAc,CAAC,CA0BzB"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * toggle_community_inputs MCP Tool
3
+ *
4
+ * Enables or disables community inputs (input presets) for a workflow.
5
+ */
6
+ export const toggleCommunityInputsTool = {
7
+ name: 'toggle_community_inputs',
8
+ description: 'Enable or disable community inputs (input presets) for a workflow. When enabled, users can create and share pre-configured input values for the workflow. Only the workflow owner can change this setting.',
9
+ inputSchema: {
10
+ type: 'object',
11
+ properties: {
12
+ workflow_id: {
13
+ type: 'string',
14
+ description: 'The workflow ID (hash)',
15
+ },
16
+ enabled: {
17
+ type: 'boolean',
18
+ description: 'true to enable community inputs, false to disable',
19
+ },
20
+ },
21
+ required: ['workflow_id', 'enabled'],
22
+ },
23
+ };
24
+ export async function handleToggleCommunityInputs(api, args) {
25
+ try {
26
+ const result = await api.toggleCommunityInputs(args.workflow_id, args.enabled);
27
+ const emoji = result.community_inputs_enabled ? '✓' : '✗';
28
+ const status = result.community_inputs_enabled ? 'Enabled' : 'Disabled';
29
+ const lines = [
30
+ `## Community Inputs ${status}`,
31
+ '',
32
+ `**Workflow:** ${result.workflow_name} (${result.workflow_id})`,
33
+ `**Status:** ${emoji} ${status}`,
34
+ '',
35
+ result.message,
36
+ ];
37
+ return {
38
+ content: [{ type: 'text', text: lines.join('\n') }],
39
+ };
40
+ }
41
+ catch (error) {
42
+ const message = error instanceof Error ? error.message : 'Unknown error';
43
+ return {
44
+ content: [{ type: 'text', text: `Error toggling community inputs: ${message}` }],
45
+ isError: true,
46
+ };
47
+ }
48
+ }
49
+ //# sourceMappingURL=toggle-community-inputs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toggle-community-inputs.js","sourceRoot":"","sources":["../../src/tools/toggle-community-inputs.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,MAAM,CAAC,MAAM,yBAAyB,GAAS;IAC7C,IAAI,EAAE,yBAAyB;IAC/B,WAAW,EAAE,4MAA4M;IACzN,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,wBAAwB;aACtC;YACD,OAAO,EAAE;gBACP,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,mDAAmD;aACjE;SACF;QACD,QAAQ,EAAE,CAAC,aAAa,EAAE,SAAS,CAAC;KACrC;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,GAAqB,EACrB,IAA+C;IAE/C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,qBAAqB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAE/E,MAAM,KAAK,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAC1D,MAAM,MAAM,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;QAExE,MAAM,KAAK,GAAG;YACZ,uBAAuB,MAAM,EAAE;YAC/B,EAAE;YACF,iBAAiB,MAAM,CAAC,aAAa,KAAK,MAAM,CAAC,WAAW,GAAG;YAC/D,eAAe,KAAK,IAAI,MAAM,EAAE;YAChC,EAAE;YACF,MAAM,CAAC,OAAO;SACf,CAAC;QAEF,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;SACpD,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QACzE,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,oCAAoC,OAAO,EAAE,EAAE,CAAC;YAChF,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * toggle_custom_node_visibility MCP Tool
3
+ *
4
+ * Change the visibility of a custom node.
5
+ * Scope: custom_nodes:manage
6
+ */
7
+ import { Tool, CallToolResult } from '@modelcontextprotocol/sdk/types.js';
8
+ import { FlowDotApiClient } from '../api-client.js';
9
+ export declare const toggleCustomNodeVisibilityTool: Tool;
10
+ export declare function handleToggleCustomNodeVisibility(api: FlowDotApiClient, args: {
11
+ node_id: string;
12
+ visibility?: 'private' | 'public' | 'unlisted';
13
+ }): Promise<CallToolResult>;
14
+ //# sourceMappingURL=toggle-custom-node-visibility.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toggle-custom-node-visibility.d.ts","sourceRoot":"","sources":["../../src/tools/toggle-custom-node-visibility.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,eAAO,MAAM,8BAA8B,EAAE,IAkB5C,CAAC;AAEF,wBAAsB,gCAAgC,CACpD,GAAG,EAAE,gBAAgB,EACrB,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAA;CAAE,GACxE,OAAO,CAAC,cAAc,CAAC,CAiCzB"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * toggle_custom_node_visibility MCP Tool
3
+ *
4
+ * Change the visibility of a custom node.
5
+ * Scope: custom_nodes:manage
6
+ */
7
+ export const toggleCustomNodeVisibilityTool = {
8
+ name: 'toggle_custom_node_visibility',
9
+ description: 'Change the visibility of a custom node (private, public, or unlisted).',
10
+ inputSchema: {
11
+ type: 'object',
12
+ properties: {
13
+ node_id: {
14
+ type: 'string',
15
+ description: 'The custom node ID (hash)',
16
+ },
17
+ visibility: {
18
+ type: 'string',
19
+ enum: ['private', 'public', 'unlisted'],
20
+ description: 'New visibility setting. If not specified, toggles between public and private.',
21
+ },
22
+ },
23
+ required: ['node_id'],
24
+ },
25
+ };
26
+ export async function handleToggleCustomNodeVisibility(api, args) {
27
+ try {
28
+ // Default to 'public' if not specified (will toggle in the backend)
29
+ const visibility = args.visibility || 'public';
30
+ await api.toggleCustomNodeVisibility(args.node_id, visibility);
31
+ const lines = [
32
+ `## Visibility Updated`,
33
+ ``,
34
+ `**Node ID:** ${args.node_id}`,
35
+ `**New Visibility:** ${visibility}`,
36
+ ``,
37
+ ];
38
+ if (visibility === 'public') {
39
+ lines.push('The custom node is now publicly visible and can be found by other users.');
40
+ }
41
+ else if (visibility === 'private') {
42
+ lines.push('The custom node is now private and only visible to you.');
43
+ }
44
+ else {
45
+ lines.push('The custom node is now unlisted. It can only be accessed with a direct link.');
46
+ }
47
+ return {
48
+ content: [{ type: 'text', text: lines.join('\n') }],
49
+ };
50
+ }
51
+ catch (error) {
52
+ const message = error instanceof Error ? error.message : 'Unknown error';
53
+ return {
54
+ content: [{ type: 'text', text: `Error changing visibility: ${message}` }],
55
+ isError: true,
56
+ };
57
+ }
58
+ }
59
+ //# sourceMappingURL=toggle-custom-node-visibility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toggle-custom-node-visibility.js","sourceRoot":"","sources":["../../src/tools/toggle-custom-node-visibility.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,MAAM,CAAC,MAAM,8BAA8B,GAAS;IAClD,IAAI,EAAE,+BAA+B;IACrC,WAAW,EAAE,wEAAwE;IACrF,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,2BAA2B;aACzC;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAC;gBACvC,WAAW,EAAE,+EAA+E;aAC7F;SACF;QACD,QAAQ,EAAE,CAAC,SAAS,CAAC;KACtB;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,gCAAgC,CACpD,GAAqB,EACrB,IAAyE;IAEzE,IAAI,CAAC;QACH,oEAAoE;QACpE,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,QAAQ,CAAC;QAE/C,MAAM,GAAG,CAAC,0BAA0B,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAE/D,MAAM,KAAK,GAAG;YACZ,uBAAuB;YACvB,EAAE;YACF,gBAAgB,IAAI,CAAC,OAAO,EAAE;YAC9B,uBAAuB,UAAU,EAAE;YACnC,EAAE;SACH,CAAC;QAEF,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;YAC5B,KAAK,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;QACzF,CAAC;aAAM,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;QACxE,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,8EAA8E,CAAC,CAAC;QAC7F,CAAC;QAED,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;SACpD,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QACzE,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,8BAA8B,OAAO,EAAE,EAAE,CAAC;YAC1E,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * toggle_workflow_public MCP Tool
3
+ *
4
+ * Toggles a workflow's public/private visibility status.
5
+ */
6
+ import { Tool, CallToolResult } from '@modelcontextprotocol/sdk/types.js';
7
+ import { FlowDotApiClient } from '../api-client.js';
8
+ export declare const toggleWorkflowPublicTool: Tool;
9
+ export declare function handleToggleWorkflowPublic(api: FlowDotApiClient, args: {
10
+ workflow_id: string;
11
+ is_public: boolean;
12
+ }): Promise<CallToolResult>;
13
+ //# sourceMappingURL=toggle-workflow-public.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toggle-workflow-public.d.ts","sourceRoot":"","sources":["../../src/tools/toggle-workflow-public.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,eAAO,MAAM,wBAAwB,EAAE,IAiBtC,CAAC;AAEF,wBAAsB,0BAA0B,CAC9C,GAAG,EAAE,gBAAgB,EACrB,IAAI,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,GAChD,OAAO,CAAC,cAAc,CAAC,CAkBzB"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * toggle_workflow_public MCP Tool
3
+ *
4
+ * Toggles a workflow's public/private visibility status.
5
+ */
6
+ export const toggleWorkflowPublicTool = {
7
+ name: 'toggle_workflow_public',
8
+ description: 'Make a workflow public or private. Public workflows are visible to all users.',
9
+ inputSchema: {
10
+ type: 'object',
11
+ properties: {
12
+ workflow_id: {
13
+ type: 'string',
14
+ description: 'The workflow ID (hash)',
15
+ },
16
+ is_public: {
17
+ type: 'boolean',
18
+ description: 'Set to true to make public, false to make private',
19
+ },
20
+ },
21
+ required: ['workflow_id', 'is_public'],
22
+ },
23
+ };
24
+ export async function handleToggleWorkflowPublic(api, args) {
25
+ try {
26
+ // API may return undefined (no data wrapper) or { message: "..." }
27
+ const result = await api.toggleWorkflowPublic(args.workflow_id, args.is_public);
28
+ const status = args.is_public ? 'public' : 'private';
29
+ const message = result?.message || `Workflow is now ${status}.`;
30
+ return {
31
+ content: [{ type: 'text', text: message }],
32
+ };
33
+ }
34
+ catch (error) {
35
+ const message = error instanceof Error ? error.message : 'Unknown error';
36
+ return {
37
+ content: [{ type: 'text', text: `Error toggling workflow visibility: ${message}` }],
38
+ isError: true,
39
+ };
40
+ }
41
+ }
42
+ //# sourceMappingURL=toggle-workflow-public.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toggle-workflow-public.js","sourceRoot":"","sources":["../../src/tools/toggle-workflow-public.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,MAAM,CAAC,MAAM,wBAAwB,GAAS;IAC5C,IAAI,EAAE,wBAAwB;IAC9B,WAAW,EAAE,+EAA+E;IAC5F,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,wBAAwB;aACtC;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,mDAAmD;aACjE;SACF;QACD,QAAQ,EAAE,CAAC,aAAa,EAAE,WAAW,CAAC;KACvC;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,GAAqB,EACrB,IAAiD;IAEjD,IAAI,CAAC;QACH,mEAAmE;QACnE,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAEhF,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;QACrD,MAAM,OAAO,GAAG,MAAM,EAAE,OAAO,IAAI,mBAAmB,MAAM,GAAG,CAAC;QAEhE,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;SAC3C,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QACzE,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,uCAAuC,OAAO,EAAE,EAAE,CAAC;YACnF,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * unlink_app_workflow Tool
3
+ *
4
+ * Unlink a workflow from an app.
5
+ * Required scope: apps:manage
6
+ */
7
+ import { Tool, CallToolResult } from '@modelcontextprotocol/sdk/types.js';
8
+ import { FlowDotApiClient } from '../api-client.js';
9
+ export declare const unlinkAppWorkflowTool: Tool;
10
+ export declare function handleUnlinkAppWorkflow(client: FlowDotApiClient, args: Record<string, unknown>): Promise<CallToolResult>;
11
+ //# sourceMappingURL=unlink-app-workflow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unlink-app-workflow.d.ts","sourceRoot":"","sources":["../../src/tools/unlink-app-workflow.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,eAAO,MAAM,qBAAqB,EAAE,IAmBnC,CAAC;AAEF,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,cAAc,CAAC,CAiBzB"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * unlink_app_workflow Tool
3
+ *
4
+ * Unlink a workflow from an app.
5
+ * Required scope: apps:manage
6
+ */
7
+ export const unlinkAppWorkflowTool = {
8
+ name: 'unlink_app_workflow',
9
+ description: `Unlink a workflow from an app. After unlinking, the app will no longer be able to invoke that workflow.
10
+
11
+ Make sure to update your app code to remove any references to the unlinked workflow.`,
12
+ inputSchema: {
13
+ type: 'object',
14
+ properties: {
15
+ app_id: {
16
+ type: 'string',
17
+ description: 'The app ID (hash)',
18
+ },
19
+ workflow_hash: {
20
+ type: 'string',
21
+ description: 'The workflow hash to unlink',
22
+ },
23
+ },
24
+ required: ['app_id', 'workflow_hash'],
25
+ },
26
+ };
27
+ export async function handleUnlinkAppWorkflow(client, args) {
28
+ try {
29
+ const appId = String(args.app_id);
30
+ const workflowHash = String(args.workflow_hash);
31
+ await client.unlinkAppWorkflow(appId, workflowHash);
32
+ return {
33
+ content: [{ type: 'text', text: `Workflow ${workflowHash} unlinked from app ${appId} successfully.` }],
34
+ };
35
+ }
36
+ catch (error) {
37
+ const message = error instanceof Error ? error.message : 'Unknown error';
38
+ return {
39
+ content: [{ type: 'text', text: `Error unlinking workflow: ${message}` }],
40
+ isError: true,
41
+ };
42
+ }
43
+ }
44
+ //# sourceMappingURL=unlink-app-workflow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unlink-app-workflow.js","sourceRoot":"","sources":["../../src/tools/unlink-app-workflow.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,MAAM,CAAC,MAAM,qBAAqB,GAAS;IACzC,IAAI,EAAE,qBAAqB;IAC3B,WAAW,EAAE;;qFAEsE;IACnF,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,mBAAmB;aACjC;YACD,aAAa,EAAE;gBACb,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,6BAA6B;aAC3C;SACF;QACD,QAAQ,EAAE,CAAC,QAAQ,EAAE,eAAe,CAAC;KACtC;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,MAAwB,EACxB,IAA6B;IAE7B,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAEhD,MAAM,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QAEpD,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,YAAY,sBAAsB,KAAK,gBAAgB,EAAE,CAAC;SACvG,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QACzE,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,6BAA6B,OAAO,EAAE,EAAE,CAAC;YACzE,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * unpublish_app Tool
3
+ *
4
+ * Unpublish an app to make it private again.
5
+ * Required scope: apps:manage
6
+ */
7
+ import { Tool, CallToolResult } from '@modelcontextprotocol/sdk/types.js';
8
+ import { FlowDotApiClient } from '../api-client.js';
9
+ export declare const unpublishAppTool: Tool;
10
+ export declare function handleUnpublishApp(client: FlowDotApiClient, args: Record<string, unknown>): Promise<CallToolResult>;
11
+ //# sourceMappingURL=unpublish-app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unpublish-app.d.ts","sourceRoot":"","sources":["../../src/tools/unpublish-app.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,eAAO,MAAM,gBAAgB,EAAE,IAe9B,CAAC;AAEF,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,cAAc,CAAC,CAgBzB"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * unpublish_app Tool
3
+ *
4
+ * Unpublish an app to make it private again.
5
+ * Required scope: apps:manage
6
+ */
7
+ export const unpublishAppTool = {
8
+ name: 'unpublish_app',
9
+ description: `Unpublish an app to make it private. The app will no longer be visible in the public marketplace.
10
+
11
+ Existing clones of your app will continue to work for their owners, but new users won't be able to discover or clone it.`,
12
+ inputSchema: {
13
+ type: 'object',
14
+ properties: {
15
+ app_id: {
16
+ type: 'string',
17
+ description: 'The app ID (hash) to unpublish',
18
+ },
19
+ },
20
+ required: ['app_id'],
21
+ },
22
+ };
23
+ export async function handleUnpublishApp(client, args) {
24
+ try {
25
+ const appId = String(args.app_id);
26
+ await client.unpublishApp(appId);
27
+ return {
28
+ content: [{ type: 'text', text: `App ${appId} unpublished. It is now private and only visible to you.` }],
29
+ };
30
+ }
31
+ catch (error) {
32
+ const message = error instanceof Error ? error.message : 'Unknown error';
33
+ return {
34
+ content: [{ type: 'text', text: `Error unpublishing app: ${message}` }],
35
+ isError: true,
36
+ };
37
+ }
38
+ }
39
+ //# sourceMappingURL=unpublish-app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unpublish-app.js","sourceRoot":"","sources":["../../src/tools/unpublish-app.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,MAAM,CAAC,MAAM,gBAAgB,GAAS;IACpC,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE;;yHAE0G;IACvH,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,gCAAgC;aAC9C;SACF;QACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;KACrB;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAAwB,EACxB,IAA6B;IAE7B,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAElC,MAAM,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAEjC,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,0DAA0D,EAAE,CAAC;SAC1G,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QACzE,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,2BAA2B,OAAO,EAAE,EAAE,CAAC;YACvE,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * update_app Tool
3
+ *
4
+ * Update an existing FlowDot app.
5
+ * Required scope: apps:manage
6
+ */
7
+ import { Tool, CallToolResult } from '@modelcontextprotocol/sdk/types.js';
8
+ import { FlowDotApiClient } from '../api-client.js';
9
+ export declare const updateAppTool: Tool;
10
+ export declare function handleUpdateApp(client: FlowDotApiClient, args: Record<string, unknown>): Promise<CallToolResult>;
11
+ //# sourceMappingURL=update-app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-app.d.ts","sourceRoot":"","sources":["../../src/tools/update-app.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGpD,eAAO,MAAM,aAAa,EAAE,IAqD3B,CAAC;AAEF,wBAAsB,eAAe,CACnC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,cAAc,CAAC,CAmCzB"}