@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,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* list_shared_results MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Lists shared execution results for a workflow.
|
|
5
|
+
*/
|
|
6
|
+
export const listSharedResultsTool = {
|
|
7
|
+
name: 'list_shared_results',
|
|
8
|
+
description: 'List all shared execution results for a workflow. Shows shareable links, view counts, and metadata for each shared result.',
|
|
9
|
+
inputSchema: {
|
|
10
|
+
type: 'object',
|
|
11
|
+
properties: {
|
|
12
|
+
workflow_id: {
|
|
13
|
+
type: 'string',
|
|
14
|
+
description: 'The workflow ID (hash)',
|
|
15
|
+
},
|
|
16
|
+
sort: {
|
|
17
|
+
type: 'string',
|
|
18
|
+
enum: ['newest', 'oldest', 'most_viewed'],
|
|
19
|
+
description: 'Sort order for results (default: newest)',
|
|
20
|
+
},
|
|
21
|
+
limit: {
|
|
22
|
+
type: 'number',
|
|
23
|
+
description: 'Maximum number of results to return (default: 20, max: 100)',
|
|
24
|
+
},
|
|
25
|
+
page: {
|
|
26
|
+
type: 'number',
|
|
27
|
+
description: 'Page number for pagination (default: 1)',
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
required: ['workflow_id'],
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
function formatSharedResult(result) {
|
|
34
|
+
const lines = [
|
|
35
|
+
`### ${result.title || 'Untitled Result'} (${result.hash})`,
|
|
36
|
+
'',
|
|
37
|
+
`**Share URL:** ${result.share_url}`,
|
|
38
|
+
`**Views:** ${result.view_count} | **Votes:** ${result.vote_count}`,
|
|
39
|
+
`**Status:** ${result.is_active ? '✓ Active' : '✗ Inactive'}`,
|
|
40
|
+
`**Created:** ${result.created_at}`,
|
|
41
|
+
];
|
|
42
|
+
if (result.description) {
|
|
43
|
+
lines.push(`**Description:** ${result.description}`);
|
|
44
|
+
}
|
|
45
|
+
if (result.expires_at) {
|
|
46
|
+
lines.push(`**Expires:** ${result.expires_at}`);
|
|
47
|
+
}
|
|
48
|
+
if (result.preset_hash) {
|
|
49
|
+
lines.push(`**Preset:** ${result.preset_hash}`);
|
|
50
|
+
}
|
|
51
|
+
return lines.join('\n');
|
|
52
|
+
}
|
|
53
|
+
export async function handleListSharedResults(api, args) {
|
|
54
|
+
try {
|
|
55
|
+
const result = await api.listSharedResults(args.workflow_id, {
|
|
56
|
+
sort: args.sort,
|
|
57
|
+
limit: args.limit,
|
|
58
|
+
page: args.page,
|
|
59
|
+
});
|
|
60
|
+
const sharedResults = result.data || [];
|
|
61
|
+
if (sharedResults.length === 0) {
|
|
62
|
+
return {
|
|
63
|
+
content: [{ type: 'text', text: 'No shared results found for this workflow.\n\nTip: Use `create_shared_result` to share an execution result.' }],
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
const formatted = sharedResults.map(formatSharedResult).join('\n\n---\n\n');
|
|
67
|
+
const header = `## Shared Results (${result.total} total, page ${result.current_page}/${result.last_page})\n\n`;
|
|
68
|
+
return {
|
|
69
|
+
content: [{ type: 'text', text: header + formatted }],
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
74
|
+
return {
|
|
75
|
+
content: [{ type: 'text', text: `Error listing shared results: ${message}` }],
|
|
76
|
+
isError: true,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=list-shared-results.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-shared-results.js","sourceRoot":"","sources":["../../src/tools/list-shared-results.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* list_workflows MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Lists workflows available to the user.
|
|
5
|
+
*/
|
|
6
|
+
import { Tool, CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
7
|
+
import { FlowDotApiClient } from '../api-client.js';
|
|
8
|
+
export declare const listWorkflowsTool: Tool;
|
|
9
|
+
export declare function handleListWorkflows(api: FlowDotApiClient, args: {
|
|
10
|
+
filter?: string;
|
|
11
|
+
favorites_only?: boolean;
|
|
12
|
+
}): Promise<CallToolResult>;
|
|
13
|
+
//# sourceMappingURL=list-workflows.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-workflows.d.ts","sourceRoot":"","sources":["../../src/tools/list-workflows.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,iBAAiB,EAAE,IAiB/B,CAAC;AAEF,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,gBAAgB,EACrB,IAAI,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,OAAO,CAAA;CAAE,GAClD,OAAO,CAAC,cAAc,CAAC,CAgDzB"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* list_workflows MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Lists workflows available to the user.
|
|
5
|
+
*/
|
|
6
|
+
export const listWorkflowsTool = {
|
|
7
|
+
name: 'list_workflows',
|
|
8
|
+
description: 'List FlowDot workflows available to the user. Returns workflow IDs, names, and descriptions.',
|
|
9
|
+
inputSchema: {
|
|
10
|
+
type: 'object',
|
|
11
|
+
properties: {
|
|
12
|
+
filter: {
|
|
13
|
+
type: 'string',
|
|
14
|
+
description: 'Optional filter to search workflows by name',
|
|
15
|
+
},
|
|
16
|
+
favorites_only: {
|
|
17
|
+
type: 'boolean',
|
|
18
|
+
default: false,
|
|
19
|
+
description: 'Only return favorited workflows',
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
export async function handleListWorkflows(api, args) {
|
|
25
|
+
try {
|
|
26
|
+
const response = await api.listWorkflows(args.filter, args.favorites_only);
|
|
27
|
+
// Handle unexpected response formats
|
|
28
|
+
const workflows = Array.isArray(response) ? response : [];
|
|
29
|
+
if (workflows.length === 0) {
|
|
30
|
+
return {
|
|
31
|
+
content: [
|
|
32
|
+
{
|
|
33
|
+
type: 'text',
|
|
34
|
+
text: 'No workflows found. Create workflows at https://flowdot.ai to get started.',
|
|
35
|
+
},
|
|
36
|
+
],
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
// Format as a readable list
|
|
40
|
+
const workflowList = workflows
|
|
41
|
+
.filter(w => w && typeof w === 'object')
|
|
42
|
+
.map((w) => {
|
|
43
|
+
const desc = w.description ? ` - ${w.description}` : '';
|
|
44
|
+
const visibility = w.is_public ? ' (public)' : '';
|
|
45
|
+
return `- **${w.name}** (${w.id})${visibility}${desc}`;
|
|
46
|
+
})
|
|
47
|
+
.join('\n');
|
|
48
|
+
return {
|
|
49
|
+
content: [
|
|
50
|
+
{
|
|
51
|
+
type: 'text',
|
|
52
|
+
text: `Found ${workflows.length} workflow(s):\n\n${workflowList}`,
|
|
53
|
+
},
|
|
54
|
+
],
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
59
|
+
return {
|
|
60
|
+
content: [
|
|
61
|
+
{
|
|
62
|
+
type: 'text',
|
|
63
|
+
text: `Error listing workflows: ${message}`,
|
|
64
|
+
},
|
|
65
|
+
],
|
|
66
|
+
isError: true,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=list-workflows.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-workflows.js","sourceRoot":"","sources":["../../src/tools/list-workflows.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,MAAM,CAAC,MAAM,iBAAiB,GAAS;IACrC,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,8FAA8F;IAC3G,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,6CAA6C;aAC3D;YACD,cAAc,EAAE;gBACd,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,KAAK;gBACd,WAAW,EAAE,iCAAiC;aAC/C;SACF;KACF;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,GAAqB,EACrB,IAAmD;IAEnD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAE3E,qCAAqC;QACrC,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QAE1D,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,4EAA4E;qBACnF;iBACF;aACF,CAAC;QACJ,CAAC;QAED,4BAA4B;QAC5B,MAAM,YAAY,GAAG,SAAS;aAC3B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC;aACvC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACT,MAAM,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,MAAM,UAAU,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;YAClD,OAAO,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,IAAI,UAAU,GAAG,IAAI,EAAE,CAAC;QACzD,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,SAAS,SAAS,CAAC,MAAM,oBAAoB,YAAY,EAAE;iBAClE;aACF;SACF,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;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,4BAA4B,OAAO,EAAE;iBAC5C;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* publish_app Tool
|
|
3
|
+
*
|
|
4
|
+
* Publish an app to make it publicly visible.
|
|
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 publishAppTool: Tool;
|
|
10
|
+
export declare function handlePublishApp(client: FlowDotApiClient, args: Record<string, unknown>): Promise<CallToolResult>;
|
|
11
|
+
//# sourceMappingURL=publish-app.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish-app.d.ts","sourceRoot":"","sources":["../../src/tools/publish-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,cAAc,EAAE,IAoB5B,CAAC;AAEF,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,cAAc,CAAC,CAgBzB"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* publish_app Tool
|
|
3
|
+
*
|
|
4
|
+
* Publish an app to make it publicly visible.
|
|
5
|
+
* Required scope: apps:manage
|
|
6
|
+
*/
|
|
7
|
+
export const publishAppTool = {
|
|
8
|
+
name: 'publish_app',
|
|
9
|
+
description: `Publish an app to make it publicly visible in the FlowDot app marketplace.
|
|
10
|
+
|
|
11
|
+
Once published:
|
|
12
|
+
- Other users can discover and view your app
|
|
13
|
+
- Other users can clone your app
|
|
14
|
+
- Your app can receive votes and comments
|
|
15
|
+
|
|
16
|
+
You can unpublish at any time using unpublish_app.`,
|
|
17
|
+
inputSchema: {
|
|
18
|
+
type: 'object',
|
|
19
|
+
properties: {
|
|
20
|
+
app_id: {
|
|
21
|
+
type: 'string',
|
|
22
|
+
description: 'The app ID (hash) to publish',
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
required: ['app_id'],
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
export async function handlePublishApp(client, args) {
|
|
29
|
+
try {
|
|
30
|
+
const appId = String(args.app_id);
|
|
31
|
+
await client.publishApp(appId);
|
|
32
|
+
return {
|
|
33
|
+
content: [{ type: 'text', text: `App ${appId} published successfully!\n\nYour app is now publicly visible in the FlowDot marketplace.` }],
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
38
|
+
return {
|
|
39
|
+
content: [{ type: 'text', text: `Error publishing app: ${message}` }],
|
|
40
|
+
isError: true,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=publish-app.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish-app.js","sourceRoot":"","sources":["../../src/tools/publish-app.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,MAAM,CAAC,MAAM,cAAc,GAAS;IAClC,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE;;;;;;;mDAOoC;IACjD,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,8BAA8B;aAC5C;SACF;QACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;KACrB;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAAwB,EACxB,IAA6B;IAE7B,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAElC,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAE/B,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,0FAA0F,EAAE,CAAC;SAC1I,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,yBAAyB,OAAO,EAAE,EAAE,CAAC;YACrE,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* retry_execution MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Retries a failed workflow execution with the same inputs.
|
|
5
|
+
*/
|
|
6
|
+
import { Tool, CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
7
|
+
import { FlowDotApiClient } from '../api-client.js';
|
|
8
|
+
export declare const retryExecutionTool: Tool;
|
|
9
|
+
export declare function handleRetryExecution(api: FlowDotApiClient, args: {
|
|
10
|
+
execution_id: string;
|
|
11
|
+
}): Promise<CallToolResult>;
|
|
12
|
+
//# sourceMappingURL=retry-execution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry-execution.d.ts","sourceRoot":"","sources":["../../src/tools/retry-execution.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,IAahC,CAAC;AAEF,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,gBAAgB,EACrB,IAAI,EAAE;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,GAC7B,OAAO,CAAC,cAAc,CAAC,CA0BzB"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* retry_execution MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Retries a failed workflow execution with the same inputs.
|
|
5
|
+
*/
|
|
6
|
+
export const retryExecutionTool = {
|
|
7
|
+
name: 'retry_execution',
|
|
8
|
+
description: 'Retry a failed workflow execution using the same inputs. Creates a new execution.',
|
|
9
|
+
inputSchema: {
|
|
10
|
+
type: 'object',
|
|
11
|
+
properties: {
|
|
12
|
+
execution_id: {
|
|
13
|
+
type: 'string',
|
|
14
|
+
description: 'The failed execution ID to retry',
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
required: ['execution_id'],
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
export async function handleRetryExecution(api, args) {
|
|
21
|
+
try {
|
|
22
|
+
const result = await api.retryExecution(args.execution_id);
|
|
23
|
+
const lines = [
|
|
24
|
+
'## Execution Retry Started',
|
|
25
|
+
'',
|
|
26
|
+
`**New Execution ID:** ${result.execution_id}`,
|
|
27
|
+
`**Original Execution:** ${result.original_execution_id}`,
|
|
28
|
+
`**Status:** ${result.status}`,
|
|
29
|
+
];
|
|
30
|
+
if (result.message) {
|
|
31
|
+
lines.push('', result.message);
|
|
32
|
+
}
|
|
33
|
+
return {
|
|
34
|
+
content: [{ type: 'text', text: lines.join('\n') }],
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
39
|
+
return {
|
|
40
|
+
content: [{ type: 'text', text: `Error retrying execution: ${message}` }],
|
|
41
|
+
isError: true,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=retry-execution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry-execution.js","sourceRoot":"","sources":["../../src/tools/retry-execution.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,MAAM,CAAC,MAAM,kBAAkB,GAAS;IACtC,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,mFAAmF;IAChG,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,YAAY,EAAE;gBACZ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,kCAAkC;aAChD;SACF;QACD,QAAQ,EAAE,CAAC,cAAc,CAAC;KAC3B;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,GAAqB,EACrB,IAA8B;IAE9B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAE3D,MAAM,KAAK,GAAG;YACZ,4BAA4B;YAC5B,EAAE;YACF,yBAAyB,MAAM,CAAC,YAAY,EAAE;YAC9C,2BAA2B,MAAM,CAAC,qBAAqB,EAAE;YACzD,eAAe,MAAM,CAAC,MAAM,EAAE;SAC/B,CAAC;QAEF,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QACjC,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,6BAA6B,OAAO,EAAE,EAAE,CAAC;YACzE,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* search_apps Tool
|
|
3
|
+
*
|
|
4
|
+
* Search public apps by name, description, category, or tags.
|
|
5
|
+
* Required scope: apps:read
|
|
6
|
+
*/
|
|
7
|
+
import { Tool, CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
8
|
+
import { FlowDotApiClient } from '../api-client.js';
|
|
9
|
+
export declare const searchAppsTool: Tool;
|
|
10
|
+
export declare function handleSearchApps(client: FlowDotApiClient, args: Record<string, unknown>): Promise<CallToolResult>;
|
|
11
|
+
//# sourceMappingURL=search-apps.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-apps.d.ts","sourceRoot":"","sources":["../../src/tools/search-apps.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,cAAc,EAAE,IAyC5B,CAAC;AAEF,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,cAAc,CAAC,CAmDzB"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* search_apps Tool
|
|
3
|
+
*
|
|
4
|
+
* Search public apps by name, description, category, or tags.
|
|
5
|
+
* Required scope: apps:read
|
|
6
|
+
*/
|
|
7
|
+
export const searchAppsTool = {
|
|
8
|
+
name: 'search_apps',
|
|
9
|
+
description: `Search the FlowDot app marketplace for public apps created by other users.
|
|
10
|
+
|
|
11
|
+
Apps are React frontend applications that can optionally use workflows as backends. You can search by keywords, filter by category/tag, and sort results.
|
|
12
|
+
|
|
13
|
+
Use this to discover reusable apps that can be cloned and customized.`,
|
|
14
|
+
inputSchema: {
|
|
15
|
+
type: 'object',
|
|
16
|
+
properties: {
|
|
17
|
+
query: {
|
|
18
|
+
type: 'string',
|
|
19
|
+
description: 'Search query (searches name and description)',
|
|
20
|
+
},
|
|
21
|
+
category: {
|
|
22
|
+
type: 'string',
|
|
23
|
+
description: 'Filter by category',
|
|
24
|
+
},
|
|
25
|
+
tag: {
|
|
26
|
+
type: 'string',
|
|
27
|
+
description: 'Filter by a specific tag',
|
|
28
|
+
},
|
|
29
|
+
mobile_compatible: {
|
|
30
|
+
type: 'boolean',
|
|
31
|
+
description: 'Only show mobile-compatible apps',
|
|
32
|
+
},
|
|
33
|
+
sort: {
|
|
34
|
+
type: 'string',
|
|
35
|
+
enum: ['trending', 'popular', 'recent', 'most_used'],
|
|
36
|
+
description: 'Sort order (default: trending)',
|
|
37
|
+
},
|
|
38
|
+
limit: {
|
|
39
|
+
type: 'number',
|
|
40
|
+
description: 'Maximum number of apps to return (default: 20, max: 100)',
|
|
41
|
+
},
|
|
42
|
+
page: {
|
|
43
|
+
type: 'number',
|
|
44
|
+
description: 'Page number for pagination (default: 1)',
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
export async function handleSearchApps(client, args) {
|
|
50
|
+
try {
|
|
51
|
+
const filters = {};
|
|
52
|
+
if (args.query)
|
|
53
|
+
filters.q = String(args.query);
|
|
54
|
+
if (args.category)
|
|
55
|
+
filters.category = String(args.category);
|
|
56
|
+
if (args.tag)
|
|
57
|
+
filters.tag = String(args.tag);
|
|
58
|
+
if (args.mobile_compatible)
|
|
59
|
+
filters.mobile_compatible = Boolean(args.mobile_compatible);
|
|
60
|
+
if (args.sort)
|
|
61
|
+
filters.sort = args.sort;
|
|
62
|
+
if (args.limit)
|
|
63
|
+
filters.limit = Number(args.limit);
|
|
64
|
+
if (args.page)
|
|
65
|
+
filters.page = Number(args.page);
|
|
66
|
+
const result = await client.searchPublicApps(filters);
|
|
67
|
+
if (!result.data || result.data.length === 0) {
|
|
68
|
+
return {
|
|
69
|
+
content: [{ type: 'text', text: 'No public apps found matching your search criteria.' }],
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
const appsInfo = result.data.map((app) => {
|
|
73
|
+
const tags = app.tags?.length ? `[${app.tags.join(', ')}]` : '';
|
|
74
|
+
const badges = [];
|
|
75
|
+
if (app.is_verified)
|
|
76
|
+
badges.push('Verified');
|
|
77
|
+
if (app.is_featured)
|
|
78
|
+
badges.push('Featured');
|
|
79
|
+
const badgeStr = badges.length ? ` (${badges.join(', ')})` : '';
|
|
80
|
+
return `- **${app.name}** (${app.id})${badgeStr}
|
|
81
|
+
By: ${app.user_name || 'Unknown'}
|
|
82
|
+
${app.description || 'No description'}
|
|
83
|
+
Category: ${app.category || 'Uncategorized'} | Mobile: ${app.mobile_compatible ? 'Yes' : 'No'}
|
|
84
|
+
Upvotes: ${app.upvotes} | Executions: ${app.execution_count} | Clones: ${app.clone_count}
|
|
85
|
+
${tags ? `Tags: ${tags}` : ''}`;
|
|
86
|
+
});
|
|
87
|
+
const text = `Found ${result.total} public app(s) (page ${result.current_page}/${result.last_page}):
|
|
88
|
+
|
|
89
|
+
${appsInfo.join('\n\n')}
|
|
90
|
+
|
|
91
|
+
Tip: Use get_app to see full details and code, or clone_app to copy to your library.`;
|
|
92
|
+
return {
|
|
93
|
+
content: [{ type: 'text', text }],
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
98
|
+
return {
|
|
99
|
+
content: [{ type: 'text', text: `Error searching apps: ${message}` }],
|
|
100
|
+
isError: true,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=search-apps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-apps.js","sourceRoot":"","sources":["../../src/tools/search-apps.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* search_public_custom_nodes MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Search public custom nodes shared by the community.
|
|
5
|
+
* Scope: custom_nodes:read
|
|
6
|
+
*/
|
|
7
|
+
import { Tool, CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
8
|
+
import { FlowDotApiClient } from '../api-client.js';
|
|
9
|
+
export declare const searchPublicCustomNodesTool: Tool;
|
|
10
|
+
export declare function handleSearchPublicCustomNodes(api: FlowDotApiClient, args: {
|
|
11
|
+
query?: string;
|
|
12
|
+
category?: string;
|
|
13
|
+
tags?: string[];
|
|
14
|
+
verified_only?: boolean;
|
|
15
|
+
sort?: string;
|
|
16
|
+
limit?: number;
|
|
17
|
+
page?: number;
|
|
18
|
+
}): Promise<CallToolResult>;
|
|
19
|
+
//# sourceMappingURL=search-public-custom-nodes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-public-custom-nodes.d.ts","sourceRoot":"","sources":["../../src/tools/search-public-custom-nodes.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,2BAA2B,EAAE,IA2CzC,CAAC;AAEF,wBAAsB,6BAA6B,CACjD,GAAG,EAAE,gBAAgB,EACrB,IAAI,EAAE;IACJ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GACA,OAAO,CAAC,cAAc,CAAC,CAqDzB"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* search_public_custom_nodes MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Search public custom nodes shared by the community.
|
|
5
|
+
* Scope: custom_nodes:read
|
|
6
|
+
*/
|
|
7
|
+
export const searchPublicCustomNodesTool = {
|
|
8
|
+
name: 'search_public_custom_nodes',
|
|
9
|
+
description: 'Search public custom nodes shared by the community.',
|
|
10
|
+
inputSchema: {
|
|
11
|
+
type: 'object',
|
|
12
|
+
properties: {
|
|
13
|
+
query: {
|
|
14
|
+
type: 'string',
|
|
15
|
+
description: 'Search query for name, title, or description',
|
|
16
|
+
},
|
|
17
|
+
category: {
|
|
18
|
+
type: 'string',
|
|
19
|
+
description: 'Filter by category',
|
|
20
|
+
},
|
|
21
|
+
tags: {
|
|
22
|
+
type: 'array',
|
|
23
|
+
items: { type: 'string' },
|
|
24
|
+
description: 'Filter by tags',
|
|
25
|
+
},
|
|
26
|
+
verified_only: {
|
|
27
|
+
type: 'boolean',
|
|
28
|
+
default: false,
|
|
29
|
+
description: 'Only show verified nodes',
|
|
30
|
+
},
|
|
31
|
+
sort: {
|
|
32
|
+
type: 'string',
|
|
33
|
+
enum: ['updated_at', 'created_at', 'execution_count', 'copy_count'],
|
|
34
|
+
default: 'updated_at',
|
|
35
|
+
description: 'Sort order',
|
|
36
|
+
},
|
|
37
|
+
limit: {
|
|
38
|
+
type: 'number',
|
|
39
|
+
default: 20,
|
|
40
|
+
description: 'Maximum results (1-100)',
|
|
41
|
+
},
|
|
42
|
+
page: {
|
|
43
|
+
type: 'number',
|
|
44
|
+
default: 1,
|
|
45
|
+
description: 'Page number',
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
required: [],
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
export async function handleSearchPublicCustomNodes(api, args) {
|
|
52
|
+
try {
|
|
53
|
+
const result = await api.searchPublicCustomNodes({
|
|
54
|
+
q: args.query,
|
|
55
|
+
category: args.category,
|
|
56
|
+
tags: args.tags,
|
|
57
|
+
verified_only: args.verified_only,
|
|
58
|
+
sort: args.sort,
|
|
59
|
+
limit: args.limit,
|
|
60
|
+
page: args.page,
|
|
61
|
+
});
|
|
62
|
+
const nodes = Array.isArray(result?.data) ? result.data : [];
|
|
63
|
+
if (nodes.length === 0) {
|
|
64
|
+
return {
|
|
65
|
+
content: [{ type: 'text', text: 'No public custom nodes found matching your criteria.' }],
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
const lines = [
|
|
69
|
+
`## Public Custom Nodes`,
|
|
70
|
+
``,
|
|
71
|
+
`Found ${result.total} nodes (page ${result.current_page}/${result.last_page})`,
|
|
72
|
+
``,
|
|
73
|
+
];
|
|
74
|
+
for (const node of nodes) {
|
|
75
|
+
lines.push(`### ${node.name}${node.is_verified ? ' [Verified]' : ''}`);
|
|
76
|
+
lines.push(`- **ID:** ${node.id}`);
|
|
77
|
+
lines.push(`- **Author:** ${node.user_name || 'Unknown'}`);
|
|
78
|
+
lines.push(`- **Title:** ${node.title}`);
|
|
79
|
+
if (node.description) {
|
|
80
|
+
lines.push(`- **Description:** ${node.description.substring(0, 100)}${node.description.length > 100 ? '...' : ''}`);
|
|
81
|
+
}
|
|
82
|
+
lines.push(`- **Category:** ${node.category || 'custom'}`);
|
|
83
|
+
lines.push(`- **Votes:** ${node.vote_count || 0} | **Executions:** ${node.execution_count} | **Copies:** ${node.copy_count}`);
|
|
84
|
+
if (node.tags && node.tags.length > 0) {
|
|
85
|
+
lines.push(`- **Tags:** ${node.tags.join(', ')}`);
|
|
86
|
+
}
|
|
87
|
+
lines.push(``);
|
|
88
|
+
}
|
|
89
|
+
return {
|
|
90
|
+
content: [{ type: 'text', text: lines.join('\n') }],
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
95
|
+
return {
|
|
96
|
+
content: [{ type: 'text', text: `Error searching public custom nodes: ${message}` }],
|
|
97
|
+
isError: true,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=search-public-custom-nodes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-public-custom-nodes.js","sourceRoot":"","sources":["../../src/tools/search-public-custom-nodes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* search_workflows MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Searches workflows by name, description, or tags.
|
|
5
|
+
*/
|
|
6
|
+
import { Tool, CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
7
|
+
import { FlowDotApiClient } from '../api-client.js';
|
|
8
|
+
export declare const searchWorkflowsTool: Tool;
|
|
9
|
+
export declare function handleSearchWorkflows(api: FlowDotApiClient, args: {
|
|
10
|
+
query: string;
|
|
11
|
+
tags?: string[];
|
|
12
|
+
page?: number;
|
|
13
|
+
}): Promise<CallToolResult>;
|
|
14
|
+
//# sourceMappingURL=search-workflows.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-workflows.d.ts","sourceRoot":"","sources":["../../src/tools/search-workflows.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,IAuBjC,CAAC;AAEF,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,gBAAgB,EACrB,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACtD,OAAO,CAAC,cAAc,CAAC,CAmCzB"}
|