@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.
- package/README.md +162 -0
- package/bin/flowdot-mcp.js +15 -0
- package/dist/api-client.d.ts +349 -0
- package/dist/api-client.d.ts.map +1 -0
- package/dist/api-client.js +789 -0
- package/dist/api-client.js.map +1 -0
- package/dist/index.d.ts +26 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +32 -0
- package/dist/index.js.map +1 -0
- package/dist/server.d.ts +15 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +96 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/add-connection.d.ts +16 -0
- package/dist/tools/add-connection.d.ts.map +1 -0
- package/dist/tools/add-connection.js +62 -0
- package/dist/tools/add-connection.js.map +1 -0
- package/dist/tools/add-custom-node-comment.d.ts +15 -0
- package/dist/tools/add-custom-node-comment.d.ts.map +1 -0
- package/dist/tools/add-custom-node-comment.js +69 -0
- package/dist/tools/add-custom-node-comment.js.map +1 -0
- package/dist/tools/add-node.d.ts +18 -0
- package/dist/tools/add-node.d.ts.map +1 -0
- package/dist/tools/add-node.js +66 -0
- package/dist/tools/add-node.js.map +1 -0
- package/dist/tools/add-shared-result-comment.d.ts +15 -0
- package/dist/tools/add-shared-result-comment.d.ts.map +1 -0
- package/dist/tools/add-shared-result-comment.js +70 -0
- package/dist/tools/add-shared-result-comment.js.map +1 -0
- package/dist/tools/add-workflow-comment.d.ts +14 -0
- package/dist/tools/add-workflow-comment.d.ts.map +1 -0
- package/dist/tools/add-workflow-comment.js +66 -0
- package/dist/tools/add-workflow-comment.js.map +1 -0
- package/dist/tools/agent-chat.d.ts +14 -0
- package/dist/tools/agent-chat.d.ts.map +1 -0
- package/dist/tools/agent-chat.js +80 -0
- package/dist/tools/agent-chat.js.map +1 -0
- package/dist/tools/cancel-execution.d.ts +12 -0
- package/dist/tools/cancel-execution.d.ts.map +1 -0
- package/dist/tools/cancel-execution.js +37 -0
- package/dist/tools/cancel-execution.js.map +1 -0
- package/dist/tools/clone-app.d.ts +11 -0
- package/dist/tools/clone-app.d.ts.map +1 -0
- package/dist/tools/clone-app.js +63 -0
- package/dist/tools/clone-app.js.map +1 -0
- package/dist/tools/copy-custom-node.d.ts +14 -0
- package/dist/tools/copy-custom-node.d.ts.map +1 -0
- package/dist/tools/copy-custom-node.js +50 -0
- package/dist/tools/copy-custom-node.js.map +1 -0
- package/dist/tools/create-app.d.ts +11 -0
- package/dist/tools/create-app.d.ts.map +1 -0
- package/dist/tools/create-app.js +182 -0
- package/dist/tools/create-app.js.map +1 -0
- package/dist/tools/create-custom-node.d.ts +28 -0
- package/dist/tools/create-custom-node.d.ts.map +1 -0
- package/dist/tools/create-custom-node.js +221 -0
- package/dist/tools/create-custom-node.js.map +1 -0
- package/dist/tools/create-input-preset.d.ts +15 -0
- package/dist/tools/create-input-preset.d.ts.map +1 -0
- package/dist/tools/create-input-preset.js +76 -0
- package/dist/tools/create-input-preset.js.map +1 -0
- package/dist/tools/create-shared-result.d.ts +17 -0
- package/dist/tools/create-shared-result.d.ts.map +1 -0
- package/dist/tools/create-shared-result.js +78 -0
- package/dist/tools/create-shared-result.js.map +1 -0
- package/dist/tools/create-workflow.d.ts +13 -0
- package/dist/tools/create-workflow.d.ts.map +1 -0
- package/dist/tools/create-workflow.js +49 -0
- package/dist/tools/create-workflow.js.map +1 -0
- package/dist/tools/delete-app.d.ts +11 -0
- package/dist/tools/delete-app.d.ts.map +1 -0
- package/dist/tools/delete-app.js +40 -0
- package/dist/tools/delete-app.js.map +1 -0
- package/dist/tools/delete-connection.d.ts +13 -0
- package/dist/tools/delete-connection.d.ts.map +1 -0
- package/dist/tools/delete-connection.js +41 -0
- package/dist/tools/delete-connection.js.map +1 -0
- package/dist/tools/delete-custom-node.d.ts +13 -0
- package/dist/tools/delete-custom-node.d.ts.map +1 -0
- package/dist/tools/delete-custom-node.js +41 -0
- package/dist/tools/delete-custom-node.js.map +1 -0
- package/dist/tools/delete-input-preset.d.ts +13 -0
- package/dist/tools/delete-input-preset.d.ts.map +1 -0
- package/dist/tools/delete-input-preset.js +42 -0
- package/dist/tools/delete-input-preset.js.map +1 -0
- package/dist/tools/delete-node.d.ts +13 -0
- package/dist/tools/delete-node.d.ts.map +1 -0
- package/dist/tools/delete-node.js +41 -0
- package/dist/tools/delete-node.js.map +1 -0
- package/dist/tools/delete-workflow.d.ts +12 -0
- package/dist/tools/delete-workflow.d.ts.map +1 -0
- package/dist/tools/delete-workflow.js +37 -0
- package/dist/tools/delete-workflow.js.map +1 -0
- package/dist/tools/duplicate-workflow.d.ts +13 -0
- package/dist/tools/duplicate-workflow.d.ts.map +1 -0
- package/dist/tools/duplicate-workflow.js +49 -0
- package/dist/tools/duplicate-workflow.js.map +1 -0
- package/dist/tools/execute-workflow.d.ts +15 -0
- package/dist/tools/execute-workflow.d.ts.map +1 -0
- package/dist/tools/execute-workflow.js +112 -0
- package/dist/tools/execute-workflow.js.map +1 -0
- package/dist/tools/favorite-custom-node.d.ts +14 -0
- package/dist/tools/favorite-custom-node.d.ts.map +1 -0
- package/dist/tools/favorite-custom-node.js +48 -0
- package/dist/tools/favorite-custom-node.js.map +1 -0
- package/dist/tools/favorite-workflow.d.ts +13 -0
- package/dist/tools/favorite-workflow.d.ts.map +1 -0
- package/dist/tools/favorite-workflow.js +42 -0
- package/dist/tools/favorite-workflow.js.map +1 -0
- package/dist/tools/get-app-template.d.ts +10 -0
- package/dist/tools/get-app-template.d.ts.map +1 -0
- package/dist/tools/get-app-template.js +856 -0
- package/dist/tools/get-app-template.js.map +1 -0
- package/dist/tools/get-app.d.ts +11 -0
- package/dist/tools/get-app.d.ts.map +1 -0
- package/dist/tools/get-app.js +124 -0
- package/dist/tools/get-app.js.map +1 -0
- package/dist/tools/get-custom-node-comments.d.ts +13 -0
- package/dist/tools/get-custom-node-comments.d.ts.map +1 -0
- package/dist/tools/get-custom-node-comments.js +65 -0
- package/dist/tools/get-custom-node-comments.js.map +1 -0
- package/dist/tools/get-custom-node-template.d.ts +31 -0
- package/dist/tools/get-custom-node-template.d.ts.map +1 -0
- package/dist/tools/get-custom-node-template.js +212 -0
- package/dist/tools/get-custom-node-template.js.map +1 -0
- package/dist/tools/get-custom-node.d.ts +13 -0
- package/dist/tools/get-custom-node.d.ts.map +1 -0
- package/dist/tools/get-custom-node.js +98 -0
- package/dist/tools/get-custom-node.js.map +1 -0
- package/dist/tools/get-execution-history.d.ts +14 -0
- package/dist/tools/get-execution-history.d.ts.map +1 -0
- package/dist/tools/get-execution-history.js +65 -0
- package/dist/tools/get-execution-history.js.map +1 -0
- package/dist/tools/get-execution.d.ts +12 -0
- package/dist/tools/get-execution.d.ts.map +1 -0
- package/dist/tools/get-execution.js +81 -0
- package/dist/tools/get-execution.js.map +1 -0
- package/dist/tools/get-input-preset.d.ts +13 -0
- package/dist/tools/get-input-preset.d.ts.map +1 -0
- package/dist/tools/get-input-preset.js +69 -0
- package/dist/tools/get-input-preset.js.map +1 -0
- package/dist/tools/get-node-connections.d.ts +13 -0
- package/dist/tools/get-node-connections.d.ts.map +1 -0
- package/dist/tools/get-node-connections.js +67 -0
- package/dist/tools/get-node-connections.js.map +1 -0
- package/dist/tools/get-node-schema.d.ts +12 -0
- package/dist/tools/get-node-schema.d.ts.map +1 -0
- package/dist/tools/get-node-schema.js +113 -0
- package/dist/tools/get-node-schema.js.map +1 -0
- package/dist/tools/get-public-workflows.d.ts +13 -0
- package/dist/tools/get-public-workflows.d.ts.map +1 -0
- package/dist/tools/get-public-workflows.js +63 -0
- package/dist/tools/get-public-workflows.js.map +1 -0
- package/dist/tools/get-shared-result-comments.d.ts +13 -0
- package/dist/tools/get-shared-result-comments.d.ts.map +1 -0
- package/dist/tools/get-shared-result-comments.js +62 -0
- package/dist/tools/get-shared-result-comments.js.map +1 -0
- package/dist/tools/get-shared-result.d.ts +13 -0
- package/dist/tools/get-shared-result.d.ts.map +1 -0
- package/dist/tools/get-shared-result.js +83 -0
- package/dist/tools/get-shared-result.js.map +1 -0
- package/dist/tools/get-workflow-comments.d.ts +12 -0
- package/dist/tools/get-workflow-comments.d.ts.map +1 -0
- package/dist/tools/get-workflow-comments.js +60 -0
- package/dist/tools/get-workflow-comments.js.map +1 -0
- package/dist/tools/get-workflow-details.d.ts +12 -0
- package/dist/tools/get-workflow-details.d.ts.map +1 -0
- package/dist/tools/get-workflow-details.js +87 -0
- package/dist/tools/get-workflow-details.js.map +1 -0
- package/dist/tools/get-workflow-graph.d.ts +12 -0
- package/dist/tools/get-workflow-graph.d.ts.map +1 -0
- package/dist/tools/get-workflow-graph.js +83 -0
- package/dist/tools/get-workflow-graph.js.map +1 -0
- package/dist/tools/get-workflow-inputs-schema.d.ts +12 -0
- package/dist/tools/get-workflow-inputs-schema.d.ts.map +1 -0
- package/dist/tools/get-workflow-inputs-schema.js +74 -0
- package/dist/tools/get-workflow-inputs-schema.js.map +1 -0
- package/dist/tools/get-workflow-metrics.d.ts +13 -0
- package/dist/tools/get-workflow-metrics.d.ts.map +1 -0
- package/dist/tools/get-workflow-metrics.js +65 -0
- package/dist/tools/get-workflow-metrics.js.map +1 -0
- package/dist/tools/get-workflow-public-url.d.ts +12 -0
- package/dist/tools/get-workflow-public-url.d.ts.map +1 -0
- package/dist/tools/get-workflow-public-url.js +48 -0
- package/dist/tools/get-workflow-public-url.js.map +1 -0
- package/dist/tools/get-workflow-tags.d.ts +12 -0
- package/dist/tools/get-workflow-tags.d.ts.map +1 -0
- package/dist/tools/get-workflow-tags.js +42 -0
- package/dist/tools/get-workflow-tags.js.map +1 -0
- package/dist/tools/index.d.ts +12 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +407 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/link-app-workflow.d.ts +11 -0
- package/dist/tools/link-app-workflow.d.ts.map +1 -0
- package/dist/tools/link-app-workflow.js +69 -0
- package/dist/tools/link-app-workflow.js.map +1 -0
- package/dist/tools/list-apps.d.ts +11 -0
- package/dist/tools/list-apps.d.ts.map +1 -0
- package/dist/tools/list-apps.js +75 -0
- package/dist/tools/list-apps.js.map +1 -0
- package/dist/tools/list-available-nodes.d.ts +10 -0
- package/dist/tools/list-available-nodes.d.ts.map +1 -0
- package/dist/tools/list-available-nodes.js +94 -0
- package/dist/tools/list-available-nodes.js.map +1 -0
- package/dist/tools/list-custom-nodes.d.ts +16 -0
- package/dist/tools/list-custom-nodes.d.ts.map +1 -0
- package/dist/tools/list-custom-nodes.js +80 -0
- package/dist/tools/list-custom-nodes.js.map +1 -0
- package/dist/tools/list-input-presets.d.ts +15 -0
- package/dist/tools/list-input-presets.d.ts.map +1 -0
- package/dist/tools/list-input-presets.js +100 -0
- package/dist/tools/list-input-presets.js.map +1 -0
- package/dist/tools/list-shared-results.d.ts +15 -0
- package/dist/tools/list-shared-results.d.ts.map +1 -0
- package/dist/tools/list-shared-results.js +80 -0
- package/dist/tools/list-shared-results.js.map +1 -0
- package/dist/tools/list-workflows.d.ts +13 -0
- package/dist/tools/list-workflows.d.ts.map +1 -0
- package/dist/tools/list-workflows.js +70 -0
- package/dist/tools/list-workflows.js.map +1 -0
- package/dist/tools/publish-app.d.ts +11 -0
- package/dist/tools/publish-app.d.ts.map +1 -0
- package/dist/tools/publish-app.js +44 -0
- package/dist/tools/publish-app.js.map +1 -0
- package/dist/tools/retry-execution.d.ts +12 -0
- package/dist/tools/retry-execution.d.ts.map +1 -0
- package/dist/tools/retry-execution.js +45 -0
- package/dist/tools/retry-execution.js.map +1 -0
- package/dist/tools/search-apps.d.ts +11 -0
- package/dist/tools/search-apps.d.ts.map +1 -0
- package/dist/tools/search-apps.js +104 -0
- package/dist/tools/search-apps.js.map +1 -0
- package/dist/tools/search-public-custom-nodes.d.ts +19 -0
- package/dist/tools/search-public-custom-nodes.d.ts.map +1 -0
- package/dist/tools/search-public-custom-nodes.js +101 -0
- package/dist/tools/search-public-custom-nodes.js.map +1 -0
- package/dist/tools/search-workflows.d.ts +14 -0
- package/dist/tools/search-workflows.d.ts.map +1 -0
- package/dist/tools/search-workflows.js +62 -0
- package/dist/tools/search-workflows.js.map +1 -0
- package/dist/tools/set-workflow-tags.d.ts +13 -0
- package/dist/tools/set-workflow-tags.d.ts.map +1 -0
- package/dist/tools/set-workflow-tags.js +42 -0
- package/dist/tools/set-workflow-tags.js.map +1 -0
- package/dist/tools/stream-execution.d.ts +13 -0
- package/dist/tools/stream-execution.d.ts.map +1 -0
- package/dist/tools/stream-execution.js +70 -0
- package/dist/tools/stream-execution.js.map +1 -0
- package/dist/tools/toggle-community-inputs.d.ts +13 -0
- package/dist/tools/toggle-community-inputs.d.ts.map +1 -0
- package/dist/tools/toggle-community-inputs.js +49 -0
- package/dist/tools/toggle-community-inputs.js.map +1 -0
- package/dist/tools/toggle-custom-node-visibility.d.ts +14 -0
- package/dist/tools/toggle-custom-node-visibility.d.ts.map +1 -0
- package/dist/tools/toggle-custom-node-visibility.js +59 -0
- package/dist/tools/toggle-custom-node-visibility.js.map +1 -0
- package/dist/tools/toggle-workflow-public.d.ts +13 -0
- package/dist/tools/toggle-workflow-public.d.ts.map +1 -0
- package/dist/tools/toggle-workflow-public.js +42 -0
- package/dist/tools/toggle-workflow-public.js.map +1 -0
- package/dist/tools/unlink-app-workflow.d.ts +11 -0
- package/dist/tools/unlink-app-workflow.d.ts.map +1 -0
- package/dist/tools/unlink-app-workflow.js +44 -0
- package/dist/tools/unlink-app-workflow.js.map +1 -0
- package/dist/tools/unpublish-app.d.ts +11 -0
- package/dist/tools/unpublish-app.d.ts.map +1 -0
- package/dist/tools/unpublish-app.js +39 -0
- package/dist/tools/unpublish-app.js.map +1 -0
- package/dist/tools/update-app.d.ts +11 -0
- package/dist/tools/update-app.d.ts.map +1 -0
- package/dist/tools/update-app.js +101 -0
- package/dist/tools/update-app.js.map +1 -0
- package/dist/tools/update-custom-node.d.ts +28 -0
- package/dist/tools/update-custom-node.d.ts.map +1 -0
- package/dist/tools/update-custom-node.js +174 -0
- package/dist/tools/update-custom-node.js.map +1 -0
- package/dist/tools/update-input-preset.d.ts +16 -0
- package/dist/tools/update-input-preset.d.ts.map +1 -0
- package/dist/tools/update-input-preset.js +79 -0
- package/dist/tools/update-input-preset.js.map +1 -0
- package/dist/tools/update-node.d.ts +18 -0
- package/dist/tools/update-node.d.ts.map +1 -0
- package/dist/tools/update-node.js +73 -0
- package/dist/tools/update-node.js.map +1 -0
- package/dist/tools/validate-workflow.d.ts +12 -0
- package/dist/tools/validate-workflow.d.ts.map +1 -0
- package/dist/tools/validate-workflow.js +61 -0
- package/dist/tools/validate-workflow.js.map +1 -0
- package/dist/tools/vote-custom-node.d.ts +14 -0
- package/dist/tools/vote-custom-node.d.ts.map +1 -0
- package/dist/tools/vote-custom-node.js +60 -0
- package/dist/tools/vote-custom-node.js.map +1 -0
- package/dist/tools/vote-input-preset.d.ts +14 -0
- package/dist/tools/vote-input-preset.d.ts.map +1 -0
- package/dist/tools/vote-input-preset.js +49 -0
- package/dist/tools/vote-input-preset.js.map +1 -0
- package/dist/tools/vote-shared-result.d.ts +14 -0
- package/dist/tools/vote-shared-result.d.ts.map +1 -0
- package/dist/tools/vote-shared-result.js +49 -0
- package/dist/tools/vote-shared-result.js.map +1 -0
- package/dist/tools/vote-workflow.d.ts +13 -0
- package/dist/tools/vote-workflow.d.ts.map +1 -0
- package/dist/tools/vote-workflow.js +45 -0
- package/dist/tools/vote-workflow.js.map +1 -0
- package/dist/types.d.ts +670 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/script-validator.d.ts +35 -0
- package/dist/utils/script-validator.d.ts.map +1 -0
- package/dist/utils/script-validator.js +282 -0
- package/dist/utils/script-validator.js.map +1 -0
- package/package.json +54 -0
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* create_custom_node MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Create a new custom node with script code.
|
|
5
|
+
* Scope: custom_nodes:manage
|
|
6
|
+
*/
|
|
7
|
+
import { validateCustomNodeScript, formatWarnings } from '../utils/script-validator.js';
|
|
8
|
+
export const createCustomNodeTool = {
|
|
9
|
+
name: 'create_custom_node',
|
|
10
|
+
description: `Create a new custom node with inputs, outputs, and script code.
|
|
11
|
+
|
|
12
|
+
SCRIPT FORMAT (REQUIRED):
|
|
13
|
+
\`\`\`javascript
|
|
14
|
+
function processData(inputs, properties, llm) {
|
|
15
|
+
// Access inputs by their exact names
|
|
16
|
+
const myInput = inputs.InputName || '';
|
|
17
|
+
const myProp = properties.propertyKey;
|
|
18
|
+
|
|
19
|
+
// Your logic here
|
|
20
|
+
|
|
21
|
+
// Return object with keys matching output names EXACTLY
|
|
22
|
+
return {
|
|
23
|
+
OutputName: result
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
\`\`\`
|
|
27
|
+
|
|
28
|
+
VALID DATA TYPES: text, number, boolean, json, array, any
|
|
29
|
+
|
|
30
|
+
IMPORTANT RULES:
|
|
31
|
+
- The processData function is REQUIRED and auto-invoked by the runtime
|
|
32
|
+
- Input/output names are case-sensitive
|
|
33
|
+
- Return object keys must match defined output names exactly
|
|
34
|
+
- Top-level return statements are NOT allowed (must be inside processData)
|
|
35
|
+
- No require/import, eval, process, global, or file system access
|
|
36
|
+
- Available globals: console, JSON, Math, String.prototype.trim, Array.isArray
|
|
37
|
+
|
|
38
|
+
LLM CAPABILITY:
|
|
39
|
+
Set llm_enabled: true to allow the node to make AI/LLM calls. When enabled:
|
|
40
|
+
- Users will see Quick Select buttons (FlowDot, Simple, Capable, Complex) to choose their AI model
|
|
41
|
+
- Your script can call llm.call() to make LLM requests
|
|
42
|
+
|
|
43
|
+
LLM CALL SYNTAX:
|
|
44
|
+
\`\`\`javascript
|
|
45
|
+
const result = llm.call({
|
|
46
|
+
prompt: "Your prompt here", // Required
|
|
47
|
+
systemPrompt: "System instructions", // Optional
|
|
48
|
+
temperature: 0.7, // Optional (0-2, default: 0.7)
|
|
49
|
+
maxTokens: 1000 // Optional (default: 1000)
|
|
50
|
+
});
|
|
51
|
+
\`\`\`
|
|
52
|
+
|
|
53
|
+
LLM RESPONSE STRUCTURE:
|
|
54
|
+
\`\`\`javascript
|
|
55
|
+
{
|
|
56
|
+
success: boolean, // true if call succeeded
|
|
57
|
+
response: string, // The LLM's response text
|
|
58
|
+
error: string | null, // Error message if failed
|
|
59
|
+
provider: string, // Provider used (e.g., "openai")
|
|
60
|
+
model: string, // Model used (e.g., "gpt-4")
|
|
61
|
+
tokens: { prompt, response, total }
|
|
62
|
+
}
|
|
63
|
+
\`\`\`
|
|
64
|
+
|
|
65
|
+
EXAMPLE WITH LLM:
|
|
66
|
+
\`\`\`javascript
|
|
67
|
+
function processData(inputs, properties, llm) {
|
|
68
|
+
const result = llm.call({
|
|
69
|
+
prompt: \`Summarize: \${inputs.Text}\`,
|
|
70
|
+
temperature: 0.5
|
|
71
|
+
});
|
|
72
|
+
return {
|
|
73
|
+
Summary: result.success ? result.response : result.error
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
\`\`\``,
|
|
77
|
+
inputSchema: {
|
|
78
|
+
type: 'object',
|
|
79
|
+
properties: {
|
|
80
|
+
name: {
|
|
81
|
+
type: 'string',
|
|
82
|
+
description: 'Unique name for the custom node (e.g., "my-data-processor")',
|
|
83
|
+
},
|
|
84
|
+
title: {
|
|
85
|
+
type: 'string',
|
|
86
|
+
description: 'Display title for the node (e.g., "My Data Processor")',
|
|
87
|
+
},
|
|
88
|
+
description: {
|
|
89
|
+
type: 'string',
|
|
90
|
+
description: 'Description of what the node does',
|
|
91
|
+
},
|
|
92
|
+
category: {
|
|
93
|
+
type: 'string',
|
|
94
|
+
description: 'Category for the node (default: "custom")',
|
|
95
|
+
},
|
|
96
|
+
version: {
|
|
97
|
+
type: 'string',
|
|
98
|
+
description: 'Version string (default: "1.0.0")',
|
|
99
|
+
},
|
|
100
|
+
icon: {
|
|
101
|
+
type: 'string',
|
|
102
|
+
description: 'Icon name for the node',
|
|
103
|
+
},
|
|
104
|
+
inputs: {
|
|
105
|
+
type: 'array',
|
|
106
|
+
items: {
|
|
107
|
+
type: 'object',
|
|
108
|
+
properties: {
|
|
109
|
+
name: { type: 'string', description: 'Input name (case-sensitive, used as inputs.Name in script)' },
|
|
110
|
+
dataType: { type: 'string', enum: ['text', 'number', 'boolean', 'json', 'array', 'any'], description: 'Data type: text, number, boolean, json, array, or any' },
|
|
111
|
+
description: { type: 'string' },
|
|
112
|
+
},
|
|
113
|
+
required: ['name', 'dataType'],
|
|
114
|
+
},
|
|
115
|
+
description: 'Array of input sockets. Names are accessed via inputs.Name in processData()',
|
|
116
|
+
},
|
|
117
|
+
outputs: {
|
|
118
|
+
type: 'array',
|
|
119
|
+
items: {
|
|
120
|
+
type: 'object',
|
|
121
|
+
properties: {
|
|
122
|
+
name: { type: 'string', description: 'Output name (must match return key in processData exactly)' },
|
|
123
|
+
dataType: { type: 'string', enum: ['text', 'number', 'boolean', 'json', 'array', 'any'], description: 'Data type: text, number, boolean, json, array, or any' },
|
|
124
|
+
description: { type: 'string' },
|
|
125
|
+
},
|
|
126
|
+
required: ['name', 'dataType'],
|
|
127
|
+
},
|
|
128
|
+
description: 'Array of output sockets. Return { OutputName: value } from processData()',
|
|
129
|
+
},
|
|
130
|
+
properties: {
|
|
131
|
+
type: 'array',
|
|
132
|
+
items: {
|
|
133
|
+
type: 'object',
|
|
134
|
+
properties: {
|
|
135
|
+
key: { type: 'string' },
|
|
136
|
+
value: {},
|
|
137
|
+
dataType: { type: 'string' },
|
|
138
|
+
description: { type: 'string' },
|
|
139
|
+
},
|
|
140
|
+
required: ['key', 'dataType'],
|
|
141
|
+
},
|
|
142
|
+
description: 'Array of configurable properties',
|
|
143
|
+
},
|
|
144
|
+
script_code: {
|
|
145
|
+
type: 'string',
|
|
146
|
+
description: 'JavaScript code for the node logic (max 50KB)',
|
|
147
|
+
},
|
|
148
|
+
execution_timeout: {
|
|
149
|
+
type: 'number',
|
|
150
|
+
description: 'Execution timeout in ms (1000-30000, default: 5000)',
|
|
151
|
+
},
|
|
152
|
+
memory_limit: {
|
|
153
|
+
type: 'number',
|
|
154
|
+
description: 'Memory limit in MB (32-256, default: 128)',
|
|
155
|
+
},
|
|
156
|
+
visibility: {
|
|
157
|
+
type: 'string',
|
|
158
|
+
enum: ['private', 'public', 'unlisted'],
|
|
159
|
+
description: 'Node visibility (default: "private")',
|
|
160
|
+
},
|
|
161
|
+
tags: {
|
|
162
|
+
type: 'array',
|
|
163
|
+
items: { type: 'string' },
|
|
164
|
+
description: 'Tags for categorization (max 10)',
|
|
165
|
+
},
|
|
166
|
+
llm_enabled: {
|
|
167
|
+
type: 'boolean',
|
|
168
|
+
description: 'Enable LLM capability. When true, users see Quick Select buttons and script can use llm.call()',
|
|
169
|
+
},
|
|
170
|
+
},
|
|
171
|
+
required: ['name', 'title', 'description', 'inputs', 'outputs', 'script_code'],
|
|
172
|
+
},
|
|
173
|
+
};
|
|
174
|
+
export async function handleCreateCustomNode(api, args) {
|
|
175
|
+
try {
|
|
176
|
+
// Validate script before creation
|
|
177
|
+
const warnings = validateCustomNodeScript(args.script_code, args.outputs, args.inputs);
|
|
178
|
+
const warningsText = formatWarnings(warnings);
|
|
179
|
+
const result = await api.createCustomNode({
|
|
180
|
+
name: args.name,
|
|
181
|
+
title: args.title,
|
|
182
|
+
description: args.description,
|
|
183
|
+
category: args.category,
|
|
184
|
+
version: args.version,
|
|
185
|
+
icon: args.icon,
|
|
186
|
+
inputs: args.inputs,
|
|
187
|
+
outputs: args.outputs,
|
|
188
|
+
properties: args.properties,
|
|
189
|
+
script_code: args.script_code,
|
|
190
|
+
execution_timeout: args.execution_timeout,
|
|
191
|
+
memory_limit: args.memory_limit,
|
|
192
|
+
visibility: args.visibility,
|
|
193
|
+
tags: args.tags,
|
|
194
|
+
llm_config: args.llm_enabled ? { enabled: true } : undefined,
|
|
195
|
+
});
|
|
196
|
+
const lines = [
|
|
197
|
+
`## Custom Node Created Successfully`,
|
|
198
|
+
``,
|
|
199
|
+
`**ID:** ${result.id}`,
|
|
200
|
+
`**Name:** ${result.name}`,
|
|
201
|
+
`**Created:** ${result.created_at}`,
|
|
202
|
+
``,
|
|
203
|
+
`You can now use this custom node in your workflows.`,
|
|
204
|
+
];
|
|
205
|
+
// Append warnings if any
|
|
206
|
+
if (warningsText) {
|
|
207
|
+
lines.push(warningsText);
|
|
208
|
+
}
|
|
209
|
+
return {
|
|
210
|
+
content: [{ type: 'text', text: lines.join('\n') }],
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
catch (error) {
|
|
214
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
215
|
+
return {
|
|
216
|
+
content: [{ type: 'text', text: `Error creating custom node: ${message}` }],
|
|
217
|
+
isError: true,
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
//# sourceMappingURL=create-custom-node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-custom-node.js","sourceRoot":"","sources":["../../src/tools/create-custom-node.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* create_input_preset MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Creates a new input preset (community input) for a workflow.
|
|
5
|
+
*/
|
|
6
|
+
import { Tool, CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
7
|
+
import { FlowDotApiClient } from '../api-client.js';
|
|
8
|
+
export declare const createInputPresetTool: Tool;
|
|
9
|
+
export declare function handleCreateInputPreset(api: FlowDotApiClient, args: {
|
|
10
|
+
workflow_id: string;
|
|
11
|
+
title: string;
|
|
12
|
+
description?: string;
|
|
13
|
+
inputs: Record<string, unknown>;
|
|
14
|
+
}): Promise<CallToolResult>;
|
|
15
|
+
//# sourceMappingURL=create-input-preset.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-input-preset.d.ts","sourceRoot":"","sources":["../../src/tools/create-input-preset.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,qBAAqB,EAAE,IAyBnC,CAAC;AAEF,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,gBAAgB,EACrB,IAAI,EAAE;IACJ,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC,GACA,OAAO,CAAC,cAAc,CAAC,CA+CzB"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* create_input_preset MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Creates a new input preset (community input) for a workflow.
|
|
5
|
+
*/
|
|
6
|
+
export const createInputPresetTool = {
|
|
7
|
+
name: 'create_input_preset',
|
|
8
|
+
description: 'Create a new input preset (community input) for a workflow. This allows you to share pre-configured input values with others.',
|
|
9
|
+
inputSchema: {
|
|
10
|
+
type: 'object',
|
|
11
|
+
properties: {
|
|
12
|
+
workflow_id: {
|
|
13
|
+
type: 'string',
|
|
14
|
+
description: 'The workflow ID (hash)',
|
|
15
|
+
},
|
|
16
|
+
title: {
|
|
17
|
+
type: 'string',
|
|
18
|
+
description: 'A descriptive title for the input preset',
|
|
19
|
+
},
|
|
20
|
+
description: {
|
|
21
|
+
type: 'string',
|
|
22
|
+
description: 'Optional description explaining the preset',
|
|
23
|
+
},
|
|
24
|
+
inputs: {
|
|
25
|
+
type: 'object',
|
|
26
|
+
description: 'The input values as a JSON object (keys are input names, values are the input values)',
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
required: ['workflow_id', 'title', 'inputs'],
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
export async function handleCreateInputPreset(api, args) {
|
|
33
|
+
try {
|
|
34
|
+
// Validate inputs
|
|
35
|
+
if (!args.title || args.title.trim().length === 0) {
|
|
36
|
+
return {
|
|
37
|
+
content: [{ type: 'text', text: 'Error: Title is required.' }],
|
|
38
|
+
isError: true,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
if (!args.inputs || Object.keys(args.inputs).length === 0) {
|
|
42
|
+
return {
|
|
43
|
+
content: [{ type: 'text', text: 'Error: At least one input value is required.' }],
|
|
44
|
+
isError: true,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
const result = await api.createInputPreset(args.workflow_id, {
|
|
48
|
+
title: args.title,
|
|
49
|
+
description: args.description,
|
|
50
|
+
inputs: args.inputs,
|
|
51
|
+
});
|
|
52
|
+
const lines = [
|
|
53
|
+
'## Input Preset Created Successfully',
|
|
54
|
+
'',
|
|
55
|
+
`**Hash:** ${result.hash}`,
|
|
56
|
+
`**Title:** ${result.title}`,
|
|
57
|
+
`**URL:** ${result.public_url}`,
|
|
58
|
+
'',
|
|
59
|
+
'Anyone can now use this preset to run the workflow with your pre-configured inputs.',
|
|
60
|
+
];
|
|
61
|
+
if (result.description) {
|
|
62
|
+
lines.push(`**Description:** ${result.description}`);
|
|
63
|
+
}
|
|
64
|
+
return {
|
|
65
|
+
content: [{ type: 'text', text: lines.join('\n') }],
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
70
|
+
return {
|
|
71
|
+
content: [{ type: 'text', text: `Error creating input preset: ${message}` }],
|
|
72
|
+
isError: true,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=create-input-preset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-input-preset.js","sourceRoot":"","sources":["../../src/tools/create-input-preset.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,MAAM,CAAC,MAAM,qBAAqB,GAAS;IACzC,IAAI,EAAE,qBAAqB;IAC3B,WAAW,EAAE,+HAA+H;IAC5I,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,wBAAwB;aACtC;YACD,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,0CAA0C;aACxD;YACD,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,4CAA4C;aAC1D;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,uFAAuF;aACrG;SACF;QACD,QAAQ,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,QAAQ,CAAC;KAC7C;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,GAAqB,EACrB,IAKC;IAED,IAAI,CAAC;QACH,kBAAkB;QAClB,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClD,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,2BAA2B,EAAE,CAAC;gBAC9D,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1D,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,8CAA8C,EAAE,CAAC;gBACjF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE;YAC3D,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG;YACZ,sCAAsC;YACtC,EAAE;YACF,aAAa,MAAM,CAAC,IAAI,EAAE;YAC1B,cAAc,MAAM,CAAC,KAAK,EAAE;YAC5B,YAAY,MAAM,CAAC,UAAU,EAAE;YAC/B,EAAE;YACF,qFAAqF;SACtF,CAAC;QAEF,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,oBAAoB,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QACvD,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,gCAAgC,OAAO,EAAE,EAAE,CAAC;YAC5E,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* create_shared_result MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Creates a shareable link for a workflow execution result.
|
|
5
|
+
*/
|
|
6
|
+
import { Tool, CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
7
|
+
import { FlowDotApiClient } from '../api-client.js';
|
|
8
|
+
export declare const createSharedResultTool: Tool;
|
|
9
|
+
export declare function handleCreateSharedResult(api: FlowDotApiClient, args: {
|
|
10
|
+
workflow_id: string;
|
|
11
|
+
execution_id: string;
|
|
12
|
+
title?: string;
|
|
13
|
+
description?: string;
|
|
14
|
+
preset_hash?: string;
|
|
15
|
+
expires_in_days?: number;
|
|
16
|
+
}): Promise<CallToolResult>;
|
|
17
|
+
//# sourceMappingURL=create-shared-result.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-shared-result.d.ts","sourceRoot":"","sources":["../../src/tools/create-shared-result.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,sBAAsB,EAAE,IAiCpC,CAAC;AAEF,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,gBAAgB,EACrB,IAAI,EAAE;IACJ,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,GACA,OAAO,CAAC,cAAc,CAAC,CAyCzB"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* create_shared_result MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Creates a shareable link for a workflow execution result.
|
|
5
|
+
*/
|
|
6
|
+
export const createSharedResultTool = {
|
|
7
|
+
name: 'create_shared_result',
|
|
8
|
+
description: 'Create a shareable link for a workflow execution result. This allows you to share specific execution outputs with others.',
|
|
9
|
+
inputSchema: {
|
|
10
|
+
type: 'object',
|
|
11
|
+
properties: {
|
|
12
|
+
workflow_id: {
|
|
13
|
+
type: 'string',
|
|
14
|
+
description: 'The workflow ID (hash)',
|
|
15
|
+
},
|
|
16
|
+
execution_id: {
|
|
17
|
+
type: 'string',
|
|
18
|
+
description: 'The execution ID to share',
|
|
19
|
+
},
|
|
20
|
+
title: {
|
|
21
|
+
type: 'string',
|
|
22
|
+
description: 'Optional title for the shared result',
|
|
23
|
+
},
|
|
24
|
+
description: {
|
|
25
|
+
type: 'string',
|
|
26
|
+
description: 'Optional description for the shared result',
|
|
27
|
+
},
|
|
28
|
+
preset_hash: {
|
|
29
|
+
type: 'string',
|
|
30
|
+
description: 'Optional preset hash if the execution was from a preset',
|
|
31
|
+
},
|
|
32
|
+
expires_in_days: {
|
|
33
|
+
type: 'number',
|
|
34
|
+
description: 'Optional number of days until the shared link expires (1-365)',
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
required: ['workflow_id', 'execution_id'],
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
export async function handleCreateSharedResult(api, args) {
|
|
41
|
+
try {
|
|
42
|
+
const result = await api.createSharedResult(args.workflow_id, {
|
|
43
|
+
execution_id: args.execution_id,
|
|
44
|
+
title: args.title,
|
|
45
|
+
description: args.description,
|
|
46
|
+
preset_hash: args.preset_hash,
|
|
47
|
+
expires_in_days: args.expires_in_days,
|
|
48
|
+
});
|
|
49
|
+
const lines = [
|
|
50
|
+
'## Shared Result Created Successfully',
|
|
51
|
+
'',
|
|
52
|
+
`**Hash:** ${result.hash}`,
|
|
53
|
+
`**Share URL:** ${result.share_url}`,
|
|
54
|
+
'',
|
|
55
|
+
'✓ Anyone with this link can view the execution results.',
|
|
56
|
+
];
|
|
57
|
+
if (result.title) {
|
|
58
|
+
lines.push(`**Title:** ${result.title}`);
|
|
59
|
+
}
|
|
60
|
+
if (result.description) {
|
|
61
|
+
lines.push(`**Description:** ${result.description}`);
|
|
62
|
+
}
|
|
63
|
+
if (result.expires_at) {
|
|
64
|
+
lines.push('', `**Expires:** ${result.expires_at}`);
|
|
65
|
+
}
|
|
66
|
+
return {
|
|
67
|
+
content: [{ type: 'text', text: lines.join('\n') }],
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
72
|
+
return {
|
|
73
|
+
content: [{ type: 'text', text: `Error creating shared result: ${message}` }],
|
|
74
|
+
isError: true,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=create-shared-result.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-shared-result.js","sourceRoot":"","sources":["../../src/tools/create-shared-result.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,MAAM,CAAC,MAAM,sBAAsB,GAAS;IAC1C,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EAAE,2HAA2H;IACxI,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,wBAAwB;aACtC;YACD,YAAY,EAAE;gBACZ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,2BAA2B;aACzC;YACD,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,sCAAsC;aACpD;YACD,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,4CAA4C;aAC1D;YACD,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,yDAAyD;aACvE;YACD,eAAe,EAAE;gBACf,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,+DAA+D;aAC7E;SACF;QACD,QAAQ,EAAE,CAAC,aAAa,EAAE,cAAc,CAAC;KAC1C;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,GAAqB,EACrB,IAOC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE;YAC5D,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,eAAe,EAAE,IAAI,CAAC,eAAe;SACtC,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG;YACZ,uCAAuC;YACvC,EAAE;YACF,aAAa,MAAM,CAAC,IAAI,EAAE;YAC1B,kBAAkB,MAAM,CAAC,SAAS,EAAE;YACpC,EAAE;YACF,yDAAyD;SAC1D,CAAC;QAEF,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,KAAK,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAC3C,CAAC;QAED,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,oBAAoB,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,gBAAgB,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QACtD,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,iCAAiC,OAAO,EAAE,EAAE,CAAC;YAC7E,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* create_workflow MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Creates a new empty workflow.
|
|
5
|
+
*/
|
|
6
|
+
import { Tool, CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
7
|
+
import { FlowDotApiClient } from '../api-client.js';
|
|
8
|
+
export declare const createWorkflowTool: Tool;
|
|
9
|
+
export declare function handleCreateWorkflow(api: FlowDotApiClient, args: {
|
|
10
|
+
name: string;
|
|
11
|
+
description?: string;
|
|
12
|
+
}): Promise<CallToolResult>;
|
|
13
|
+
//# sourceMappingURL=create-workflow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-workflow.d.ts","sourceRoot":"","sources":["../../src/tools/create-workflow.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,kBAAkB,EAAE,IAiBhC,CAAC;AAEF,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,gBAAgB,EACrB,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3C,OAAO,CAAC,cAAc,CAAC,CAyBzB"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* create_workflow MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Creates a new empty workflow.
|
|
5
|
+
*/
|
|
6
|
+
export const createWorkflowTool = {
|
|
7
|
+
name: 'create_workflow',
|
|
8
|
+
description: 'Create a new empty workflow with a name and optional description. The workflow will be private by default.',
|
|
9
|
+
inputSchema: {
|
|
10
|
+
type: 'object',
|
|
11
|
+
properties: {
|
|
12
|
+
name: {
|
|
13
|
+
type: 'string',
|
|
14
|
+
description: 'Name for the new workflow',
|
|
15
|
+
},
|
|
16
|
+
description: {
|
|
17
|
+
type: 'string',
|
|
18
|
+
description: 'Optional description of what the workflow does',
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
required: ['name'],
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
export async function handleCreateWorkflow(api, args) {
|
|
25
|
+
try {
|
|
26
|
+
const result = await api.createWorkflow(args.name, args.description);
|
|
27
|
+
const lines = [
|
|
28
|
+
'## Workflow Created Successfully',
|
|
29
|
+
'',
|
|
30
|
+
`**ID:** ${result.id}`,
|
|
31
|
+
`**Name:** ${result.name}`,
|
|
32
|
+
`**Description:** ${result.description || 'None'}`,
|
|
33
|
+
`**Created:** ${result.created_at}`,
|
|
34
|
+
'',
|
|
35
|
+
'The workflow is empty and ready for nodes to be added.',
|
|
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 creating workflow: ${message}` }],
|
|
45
|
+
isError: true,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=create-workflow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-workflow.js","sourceRoot":"","sources":["../../src/tools/create-workflow.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,MAAM,CAAC,MAAM,kBAAkB,GAAS;IACtC,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,4GAA4G;IACzH,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,2BAA2B;aACzC;YACD,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,gDAAgD;aAC9D;SACF;QACD,QAAQ,EAAE,CAAC,MAAM,CAAC;KACnB;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,GAAqB,EACrB,IAA4C;IAE5C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAErE,MAAM,KAAK,GAAG;YACZ,kCAAkC;YAClC,EAAE;YACF,WAAW,MAAM,CAAC,EAAE,EAAE;YACtB,aAAa,MAAM,CAAC,IAAI,EAAE;YAC1B,oBAAoB,MAAM,CAAC,WAAW,IAAI,MAAM,EAAE;YAClD,gBAAgB,MAAM,CAAC,UAAU,EAAE;YACnC,EAAE;YACF,wDAAwD;SACzD,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,4BAA4B,OAAO,EAAE,EAAE,CAAC;YACxE,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* delete_app Tool
|
|
3
|
+
*
|
|
4
|
+
* Delete an app permanently.
|
|
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 deleteAppTool: Tool;
|
|
10
|
+
export declare function handleDeleteApp(client: FlowDotApiClient, args: Record<string, unknown>): Promise<CallToolResult>;
|
|
11
|
+
//# sourceMappingURL=delete-app.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-app.d.ts","sourceRoot":"","sources":["../../src/tools/delete-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,aAAa,EAAE,IAgB3B,CAAC;AAEF,wBAAsB,eAAe,CACnC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,cAAc,CAAC,CAgBzB"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* delete_app Tool
|
|
3
|
+
*
|
|
4
|
+
* Delete an app permanently.
|
|
5
|
+
* Required scope: apps:manage
|
|
6
|
+
*/
|
|
7
|
+
export const deleteAppTool = {
|
|
8
|
+
name: 'delete_app',
|
|
9
|
+
description: `Permanently delete an app. This action cannot be undone.
|
|
10
|
+
|
|
11
|
+
The app and all its associated data (comments, votes, etc.) will be removed.
|
|
12
|
+
Existing clones of the app will continue to work for their owners.`,
|
|
13
|
+
inputSchema: {
|
|
14
|
+
type: 'object',
|
|
15
|
+
properties: {
|
|
16
|
+
app_id: {
|
|
17
|
+
type: 'string',
|
|
18
|
+
description: 'The app ID (hash) to delete',
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
required: ['app_id'],
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
export async function handleDeleteApp(client, args) {
|
|
25
|
+
try {
|
|
26
|
+
const appId = String(args.app_id);
|
|
27
|
+
await client.deleteApp(appId);
|
|
28
|
+
return {
|
|
29
|
+
content: [{ type: 'text', text: `App ${appId} deleted successfully.` }],
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
34
|
+
return {
|
|
35
|
+
content: [{ type: 'text', text: `Error deleting app: ${message}` }],
|
|
36
|
+
isError: true,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=delete-app.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-app.js","sourceRoot":"","sources":["../../src/tools/delete-app.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,MAAM,CAAC,MAAM,aAAa,GAAS;IACjC,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE;;;mEAGoD;IACjE,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,6BAA6B;aAC3C;SACF;QACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;KACrB;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAAwB,EACxB,IAA6B;IAE7B,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAElC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAE9B,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,wBAAwB,EAAE,CAAC;SACxE,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,uBAAuB,OAAO,EAAE,EAAE,CAAC;YACnE,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* delete_connection MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Deletes a connection from a workflow.
|
|
5
|
+
*/
|
|
6
|
+
import { Tool, CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
7
|
+
import { FlowDotApiClient } from '../api-client.js';
|
|
8
|
+
export declare const deleteConnectionTool: Tool;
|
|
9
|
+
export declare function handleDeleteConnection(api: FlowDotApiClient, args: {
|
|
10
|
+
workflow_id: string;
|
|
11
|
+
connection_id: string;
|
|
12
|
+
}): Promise<CallToolResult>;
|
|
13
|
+
//# sourceMappingURL=delete-connection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-connection.d.ts","sourceRoot":"","sources":["../../src/tools/delete-connection.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,oBAAoB,EAAE,IAiBlC,CAAC;AAEF,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,gBAAgB,EACrB,IAAI,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GACnD,OAAO,CAAC,cAAc,CAAC,CAiBzB"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* delete_connection MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Deletes a connection from a workflow.
|
|
5
|
+
*/
|
|
6
|
+
export const deleteConnectionTool = {
|
|
7
|
+
name: 'delete_connection',
|
|
8
|
+
description: 'Remove a connection between two nodes in a workflow.',
|
|
9
|
+
inputSchema: {
|
|
10
|
+
type: 'object',
|
|
11
|
+
properties: {
|
|
12
|
+
workflow_id: {
|
|
13
|
+
type: 'string',
|
|
14
|
+
description: 'The workflow ID (hash)',
|
|
15
|
+
},
|
|
16
|
+
connection_id: {
|
|
17
|
+
type: 'string',
|
|
18
|
+
description: 'The connection ID to delete',
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
required: ['workflow_id', 'connection_id'],
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
export async function handleDeleteConnection(api, args) {
|
|
25
|
+
try {
|
|
26
|
+
// API may return undefined (no data wrapper) or { message: "..." }
|
|
27
|
+
const result = await api.deleteConnection(args.workflow_id, args.connection_id);
|
|
28
|
+
const message = result?.message || `Connection ${args.connection_id} has been deleted.`;
|
|
29
|
+
return {
|
|
30
|
+
content: [{ type: 'text', text: message }],
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
35
|
+
return {
|
|
36
|
+
content: [{ type: 'text', text: `Error deleting connection: ${message}` }],
|
|
37
|
+
isError: true,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=delete-connection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-connection.js","sourceRoot":"","sources":["../../src/tools/delete-connection.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,MAAM,CAAC,MAAM,oBAAoB,GAAS;IACxC,IAAI,EAAE,mBAAmB;IACzB,WAAW,EAAE,sDAAsD;IACnE,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,wBAAwB;aACtC;YACD,aAAa,EAAE;gBACb,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,6BAA6B;aAC3C;SACF;QACD,QAAQ,EAAE,CAAC,aAAa,EAAE,eAAe,CAAC;KAC3C;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,GAAqB,EACrB,IAAoD;IAEpD,IAAI,CAAC;QACH,mEAAmE;QACnE,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAEhF,MAAM,OAAO,GAAG,MAAM,EAAE,OAAO,IAAI,cAAc,IAAI,CAAC,aAAa,oBAAoB,CAAC;QAExF,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,8BAA8B,OAAO,EAAE,EAAE,CAAC;YAC1E,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* delete_custom_node MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Delete 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 deleteCustomNodeTool: Tool;
|
|
10
|
+
export declare function handleDeleteCustomNode(api: FlowDotApiClient, args: {
|
|
11
|
+
node_id: string;
|
|
12
|
+
}): Promise<CallToolResult>;
|
|
13
|
+
//# sourceMappingURL=delete-custom-node.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-custom-node.d.ts","sourceRoot":"","sources":["../../src/tools/delete-custom-node.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,oBAAoB,EAAE,IAalC,CAAC;AAEF,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,gBAAgB,EACrB,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GACxB,OAAO,CAAC,cAAc,CAAC,CAmBzB"}
|