@flowdot.ai/mcp-server 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (231) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +162 -162
  3. package/bin/flowdot-mcp.js +15 -15
  4. package/dist/api-client.d.ts +2 -344
  5. package/dist/api-client.d.ts.map +1 -1
  6. package/dist/api-client.js +2 -784
  7. package/dist/api-client.js.map +1 -1
  8. package/dist/resources/index.d.ts +12 -0
  9. package/dist/resources/index.d.ts.map +1 -0
  10. package/dist/resources/index.js +2204 -0
  11. package/dist/resources/index.js.map +1 -0
  12. package/dist/server.d.ts.map +1 -1
  13. package/dist/server.js +19 -10
  14. package/dist/server.js.map +1 -1
  15. package/dist/tools/add-recipe-step.d.ts +23 -0
  16. package/dist/tools/add-recipe-step.d.ts.map +1 -0
  17. package/dist/tools/add-recipe-step.js +196 -0
  18. package/dist/tools/add-recipe-step.js.map +1 -0
  19. package/dist/tools/add-recipe-store.d.ts +19 -0
  20. package/dist/tools/add-recipe-store.d.ts.map +1 -0
  21. package/dist/tools/add-recipe-store.js +116 -0
  22. package/dist/tools/add-recipe-store.js.map +1 -0
  23. package/dist/tools/agent-toolkits.d.ts +57 -0
  24. package/dist/tools/agent-toolkits.d.ts.map +1 -0
  25. package/dist/tools/agent-toolkits.js +1712 -0
  26. package/dist/tools/agent-toolkits.js.map +1 -0
  27. package/dist/tools/append-app-code.d.ts +12 -0
  28. package/dist/tools/append-app-code.d.ts.map +1 -0
  29. package/dist/tools/append-app-code.js +83 -0
  30. package/dist/tools/append-app-code.js.map +1 -0
  31. package/dist/tools/browse-recipes.d.ts +16 -0
  32. package/dist/tools/browse-recipes.d.ts.map +1 -0
  33. package/dist/tools/browse-recipes.js +102 -0
  34. package/dist/tools/browse-recipes.js.map +1 -0
  35. package/dist/tools/clone-app.js +20 -20
  36. package/dist/tools/create-app-file.d.ts +11 -0
  37. package/dist/tools/create-app-file.d.ts.map +1 -0
  38. package/dist/tools/create-app-file.js +83 -0
  39. package/dist/tools/create-app-file.js.map +1 -0
  40. package/dist/tools/create-app.d.ts.map +1 -1
  41. package/dist/tools/create-app.js +47 -29
  42. package/dist/tools/create-app.js.map +1 -1
  43. package/dist/tools/create-knowledge-category.d.ts +16 -0
  44. package/dist/tools/create-knowledge-category.d.ts.map +1 -0
  45. package/dist/tools/create-knowledge-category.js +71 -0
  46. package/dist/tools/create-knowledge-category.js.map +1 -0
  47. package/dist/tools/create-recipe.d.ts +16 -0
  48. package/dist/tools/create-recipe.d.ts.map +1 -0
  49. package/dist/tools/create-recipe.js +92 -0
  50. package/dist/tools/create-recipe.js.map +1 -0
  51. package/dist/tools/delete-app-file.d.ts +11 -0
  52. package/dist/tools/delete-app-file.d.ts.map +1 -0
  53. package/dist/tools/delete-app-file.js +52 -0
  54. package/dist/tools/delete-app-file.js.map +1 -0
  55. package/dist/tools/delete-app.js +3 -3
  56. package/dist/tools/delete-knowledge-category.d.ts +12 -0
  57. package/dist/tools/delete-knowledge-category.d.ts.map +1 -0
  58. package/dist/tools/delete-knowledge-category.js +40 -0
  59. package/dist/tools/delete-knowledge-category.js.map +1 -0
  60. package/dist/tools/delete-knowledge-document.d.ts +12 -0
  61. package/dist/tools/delete-knowledge-document.d.ts.map +1 -0
  62. package/dist/tools/delete-knowledge-document.js +40 -0
  63. package/dist/tools/delete-knowledge-document.js.map +1 -0
  64. package/dist/tools/delete-recipe-step.d.ts +14 -0
  65. package/dist/tools/delete-recipe-step.d.ts.map +1 -0
  66. package/dist/tools/delete-recipe-step.js +65 -0
  67. package/dist/tools/delete-recipe-step.js.map +1 -0
  68. package/dist/tools/delete-recipe-store.d.ts +14 -0
  69. package/dist/tools/delete-recipe-store.d.ts.map +1 -0
  70. package/dist/tools/delete-recipe-store.js +65 -0
  71. package/dist/tools/delete-recipe-store.js.map +1 -0
  72. package/dist/tools/delete-recipe.d.ts +13 -0
  73. package/dist/tools/delete-recipe.d.ts.map +1 -0
  74. package/dist/tools/delete-recipe.js +59 -0
  75. package/dist/tools/delete-recipe.js.map +1 -0
  76. package/dist/tools/edit-app-code.d.ts +12 -0
  77. package/dist/tools/edit-app-code.d.ts.map +1 -0
  78. package/dist/tools/edit-app-code.js +110 -0
  79. package/dist/tools/edit-app-code.js.map +1 -0
  80. package/dist/tools/favorite-recipe.d.ts +13 -0
  81. package/dist/tools/favorite-recipe.d.ts.map +1 -0
  82. package/dist/tools/favorite-recipe.js +53 -0
  83. package/dist/tools/favorite-recipe.js.map +1 -0
  84. package/dist/tools/fork-recipe.d.ts +13 -0
  85. package/dist/tools/fork-recipe.d.ts.map +1 -0
  86. package/dist/tools/fork-recipe.js +56 -0
  87. package/dist/tools/fork-recipe.js.map +1 -0
  88. package/dist/tools/get-app-file.d.ts +11 -0
  89. package/dist/tools/get-app-file.d.ts.map +1 -0
  90. package/dist/tools/get-app-file.js +76 -0
  91. package/dist/tools/get-app-file.js.map +1 -0
  92. package/dist/tools/get-app-template.d.ts.map +1 -1
  93. package/dist/tools/get-app-template.js +65 -21
  94. package/dist/tools/get-app-template.js.map +1 -1
  95. package/dist/tools/get-app.js +54 -54
  96. package/dist/tools/get-knowledge-document.d.ts +12 -0
  97. package/dist/tools/get-knowledge-document.d.ts.map +1 -0
  98. package/dist/tools/get-knowledge-document.js +71 -0
  99. package/dist/tools/get-knowledge-document.js.map +1 -0
  100. package/dist/tools/get-knowledge-storage.d.ts +10 -0
  101. package/dist/tools/get-knowledge-storage.d.ts.map +1 -0
  102. package/dist/tools/get-knowledge-storage.js +54 -0
  103. package/dist/tools/get-knowledge-storage.js.map +1 -0
  104. package/dist/tools/get-recipe-definition.d.ts +15 -0
  105. package/dist/tools/get-recipe-definition.d.ts.map +1 -0
  106. package/dist/tools/get-recipe-definition.js +70 -0
  107. package/dist/tools/get-recipe-definition.js.map +1 -0
  108. package/dist/tools/get-recipe.d.ts +12 -0
  109. package/dist/tools/get-recipe.d.ts.map +1 -0
  110. package/dist/tools/get-recipe.js +88 -0
  111. package/dist/tools/get-recipe.js.map +1 -0
  112. package/dist/tools/index.d.ts.map +1 -1
  113. package/dist/tools/index.js +301 -1
  114. package/dist/tools/index.js.map +1 -1
  115. package/dist/tools/insert-app-code.d.ts +12 -0
  116. package/dist/tools/insert-app-code.d.ts.map +1 -0
  117. package/dist/tools/insert-app-code.js +97 -0
  118. package/dist/tools/insert-app-code.js.map +1 -0
  119. package/dist/tools/link-app-workflow.js +21 -21
  120. package/dist/tools/link-recipe.d.ts +14 -0
  121. package/dist/tools/link-recipe.d.ts.map +1 -0
  122. package/dist/tools/link-recipe.js +76 -0
  123. package/dist/tools/link-recipe.js.map +1 -0
  124. package/dist/tools/list-app-files.d.ts +11 -0
  125. package/dist/tools/list-app-files.d.ts.map +1 -0
  126. package/dist/tools/list-app-files.js +84 -0
  127. package/dist/tools/list-app-files.js.map +1 -0
  128. package/dist/tools/list-apps.js +8 -8
  129. package/dist/tools/list-knowledge-categories.d.ts +14 -0
  130. package/dist/tools/list-knowledge-categories.d.ts.map +1 -0
  131. package/dist/tools/list-knowledge-categories.js +107 -0
  132. package/dist/tools/list-knowledge-categories.js.map +1 -0
  133. package/dist/tools/list-knowledge-documents.d.ts +15 -0
  134. package/dist/tools/list-knowledge-documents.d.ts.map +1 -0
  135. package/dist/tools/list-knowledge-documents.js +129 -0
  136. package/dist/tools/list-knowledge-documents.js.map +1 -0
  137. package/dist/tools/list-recipe-steps.d.ts +12 -0
  138. package/dist/tools/list-recipe-steps.d.ts.map +1 -0
  139. package/dist/tools/list-recipe-steps.js +69 -0
  140. package/dist/tools/list-recipe-steps.js.map +1 -0
  141. package/dist/tools/list-recipe-stores.d.ts +12 -0
  142. package/dist/tools/list-recipe-stores.d.ts.map +1 -0
  143. package/dist/tools/list-recipe-stores.js +87 -0
  144. package/dist/tools/list-recipe-stores.js.map +1 -0
  145. package/dist/tools/list-recipes.d.ts +12 -0
  146. package/dist/tools/list-recipes.d.ts.map +1 -0
  147. package/dist/tools/list-recipes.js +92 -0
  148. package/dist/tools/list-recipes.js.map +1 -0
  149. package/dist/tools/list-user-teams.d.ts +11 -0
  150. package/dist/tools/list-user-teams.d.ts.map +1 -0
  151. package/dist/tools/list-user-teams.js +56 -0
  152. package/dist/tools/list-user-teams.js.map +1 -0
  153. package/dist/tools/move-document-to-category.d.ts +13 -0
  154. package/dist/tools/move-document-to-category.d.ts.map +1 -0
  155. package/dist/tools/move-document-to-category.js +42 -0
  156. package/dist/tools/move-document-to-category.js.map +1 -0
  157. package/dist/tools/prepend-app-code.d.ts +12 -0
  158. package/dist/tools/prepend-app-code.d.ts.map +1 -0
  159. package/dist/tools/prepend-app-code.js +79 -0
  160. package/dist/tools/prepend-app-code.js.map +1 -0
  161. package/dist/tools/publish-app.js +7 -7
  162. package/dist/tools/query-knowledge-base.d.ts +18 -0
  163. package/dist/tools/query-knowledge-base.d.ts.map +1 -0
  164. package/dist/tools/query-knowledge-base.js +144 -0
  165. package/dist/tools/query-knowledge-base.js.map +1 -0
  166. package/dist/tools/rename-app-file.d.ts +11 -0
  167. package/dist/tools/rename-app-file.d.ts.map +1 -0
  168. package/dist/tools/rename-app-file.js +64 -0
  169. package/dist/tools/rename-app-file.js.map +1 -0
  170. package/dist/tools/reprocess-document.d.ts +12 -0
  171. package/dist/tools/reprocess-document.d.ts.map +1 -0
  172. package/dist/tools/reprocess-document.js +40 -0
  173. package/dist/tools/reprocess-document.js.map +1 -0
  174. package/dist/tools/search-apps.js +13 -13
  175. package/dist/tools/search.d.ts +14 -0
  176. package/dist/tools/search.d.ts.map +1 -0
  177. package/dist/tools/search.js +86 -0
  178. package/dist/tools/search.js.map +1 -0
  179. package/dist/tools/set-app-entry-file.d.ts +11 -0
  180. package/dist/tools/set-app-entry-file.d.ts.map +1 -0
  181. package/dist/tools/set-app-entry-file.js +56 -0
  182. package/dist/tools/set-app-entry-file.js.map +1 -0
  183. package/dist/tools/transfer-document-ownership.d.ts +15 -0
  184. package/dist/tools/transfer-document-ownership.d.ts.map +1 -0
  185. package/dist/tools/transfer-document-ownership.js +66 -0
  186. package/dist/tools/transfer-document-ownership.js.map +1 -0
  187. package/dist/tools/unlink-app-workflow.js +2 -2
  188. package/dist/tools/unpublish-app.js +2 -2
  189. package/dist/tools/update-app-file.d.ts +11 -0
  190. package/dist/tools/update-app-file.d.ts.map +1 -0
  191. package/dist/tools/update-app-file.js +73 -0
  192. package/dist/tools/update-app-file.js.map +1 -0
  193. package/dist/tools/update-app.d.ts.map +1 -1
  194. package/dist/tools/update-app.js +8 -1
  195. package/dist/tools/update-app.js.map +1 -1
  196. package/dist/tools/update-knowledge-category.d.ts +15 -0
  197. package/dist/tools/update-knowledge-category.d.ts.map +1 -0
  198. package/dist/tools/update-knowledge-category.js +74 -0
  199. package/dist/tools/update-knowledge-category.js.map +1 -0
  200. package/dist/tools/update-recipe-step.d.ts +22 -0
  201. package/dist/tools/update-recipe-step.d.ts.map +1 -0
  202. package/dist/tools/update-recipe-step.js +97 -0
  203. package/dist/tools/update-recipe-step.js.map +1 -0
  204. package/dist/tools/update-recipe-store.d.ts +20 -0
  205. package/dist/tools/update-recipe-store.d.ts.map +1 -0
  206. package/dist/tools/update-recipe-store.js +98 -0
  207. package/dist/tools/update-recipe-store.js.map +1 -0
  208. package/dist/tools/update-recipe.d.ts +18 -0
  209. package/dist/tools/update-recipe.d.ts.map +1 -0
  210. package/dist/tools/update-recipe.js +98 -0
  211. package/dist/tools/update-recipe.js.map +1 -0
  212. package/dist/tools/upload-document-from-url.d.ts +16 -0
  213. package/dist/tools/upload-document-from-url.d.ts.map +1 -0
  214. package/dist/tools/upload-document-from-url.js +73 -0
  215. package/dist/tools/upload-document-from-url.js.map +1 -0
  216. package/dist/tools/upload-text-document.d.ts +17 -0
  217. package/dist/tools/upload-text-document.d.ts.map +1 -0
  218. package/dist/tools/upload-text-document.js +77 -0
  219. package/dist/tools/upload-text-document.js.map +1 -0
  220. package/dist/tools/vote-recipe.d.ts +13 -0
  221. package/dist/tools/vote-recipe.d.ts.map +1 -0
  222. package/dist/tools/vote-recipe.js +54 -0
  223. package/dist/tools/vote-recipe.js.map +1 -0
  224. package/dist/types.d.ts +3 -666
  225. package/dist/types.d.ts.map +1 -1
  226. package/dist/types.js +3 -1
  227. package/dist/types.js.map +1 -1
  228. package/dist/utils/script-validator.d.ts.map +1 -1
  229. package/dist/utils/script-validator.js +5 -1
  230. package/dist/utils/script-validator.js.map +1 -1
  231. package/package.json +62 -54
@@ -0,0 +1,98 @@
1
+ /**
2
+ * update_recipe_store MCP Tool
3
+ *
4
+ * Updates an existing store in a recipe.
5
+ */
6
+ export const updateRecipeStoreTool = {
7
+ name: 'update_recipe_store',
8
+ description: "Update a store's key, label, type, default value, or input/output flags.",
9
+ inputSchema: {
10
+ type: 'object',
11
+ properties: {
12
+ hash: {
13
+ type: 'string',
14
+ description: 'The recipe hash/ID',
15
+ },
16
+ store_id: {
17
+ type: 'string',
18
+ description: 'The store ID to update',
19
+ },
20
+ key: {
21
+ type: 'string',
22
+ description: 'New key for the store',
23
+ },
24
+ label: {
25
+ type: 'string',
26
+ description: 'New label',
27
+ },
28
+ schema_type: {
29
+ type: 'string',
30
+ enum: ['any', 'string', 'number', 'boolean', 'array', 'object'],
31
+ description: 'New data type',
32
+ },
33
+ default_value: {
34
+ description: 'New default value',
35
+ },
36
+ description: {
37
+ type: 'string',
38
+ description: 'New description',
39
+ },
40
+ is_input: {
41
+ type: 'boolean',
42
+ description: 'Mark as input store',
43
+ },
44
+ is_output: {
45
+ type: 'boolean',
46
+ description: 'Mark as output store',
47
+ },
48
+ },
49
+ required: ['hash', 'store_id'],
50
+ },
51
+ };
52
+ export async function handleUpdateRecipeStore(api, args) {
53
+ try {
54
+ const input = {};
55
+ if (args.key !== undefined)
56
+ input.key = args.key;
57
+ if (args.label !== undefined)
58
+ input.label = args.label;
59
+ if (args.schema_type !== undefined)
60
+ input.schema_type = args.schema_type;
61
+ if (args.default_value !== undefined)
62
+ input.default_value = args.default_value;
63
+ if (args.description !== undefined)
64
+ input.description = args.description;
65
+ if (args.is_input !== undefined)
66
+ input.is_input = args.is_input;
67
+ if (args.is_output !== undefined)
68
+ input.is_output = args.is_output;
69
+ const store = await api.updateRecipeStore(args.hash, args.store_id, input);
70
+ const storeType = store.is_input ? 'Input' : store.is_output ? 'Output' : 'Internal';
71
+ return {
72
+ content: [
73
+ {
74
+ type: 'text',
75
+ text: `Store updated successfully!
76
+
77
+ **Key:** ${store.key}
78
+ **Type:** ${storeType} (${store.schema_type})
79
+ **ID:** ${store.id}
80
+ **Default Value:** ${store.default_value !== undefined ? JSON.stringify(store.default_value) : 'None'}`,
81
+ },
82
+ ],
83
+ };
84
+ }
85
+ catch (error) {
86
+ const message = error instanceof Error ? error.message : 'Unknown error';
87
+ return {
88
+ content: [
89
+ {
90
+ type: 'text',
91
+ text: `Error updating store: ${message}`,
92
+ },
93
+ ],
94
+ isError: true,
95
+ };
96
+ }
97
+ }
98
+ //# sourceMappingURL=update-recipe-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-recipe-store.js","sourceRoot":"","sources":["../../src/tools/update-recipe-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * update_recipe MCP Tool
3
+ *
4
+ * Updates an existing agent recipe's metadata.
5
+ */
6
+ import { Tool, CallToolResult } from '@modelcontextprotocol/sdk/types.js';
7
+ import { FlowDotApiClient } from '../api-client.js';
8
+ export declare const updateRecipeTool: Tool;
9
+ export declare function handleUpdateRecipe(api: FlowDotApiClient, args: {
10
+ hash: string;
11
+ name?: string;
12
+ description?: string;
13
+ category?: string;
14
+ tags?: string[];
15
+ visibility?: 'private' | 'public' | 'unlisted';
16
+ entry_step_id?: string;
17
+ }): Promise<CallToolResult>;
18
+ //# sourceMappingURL=update-recipe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-recipe.d.ts","sourceRoot":"","sources":["../../src/tools/update-recipe.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGpD,eAAO,MAAM,gBAAgB,EAAE,IAgD9B,CAAC;AAEF,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,gBAAgB,EACrB,IAAI,EAAE;IACJ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC;IAC/C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GACA,OAAO,CAAC,cAAc,CAAC,CAqCzB"}
@@ -0,0 +1,98 @@
1
+ /**
2
+ * update_recipe MCP Tool
3
+ *
4
+ * Updates an existing agent recipe's metadata.
5
+ */
6
+ export const updateRecipeTool = {
7
+ name: 'update_recipe',
8
+ description: `Update an agent recipe's metadata, including the critical entry_step_id.
9
+
10
+ **CRITICAL - entry_step_id:**
11
+ Recipe will NOT run until entry_step_id is set to a valid step ID!
12
+ After adding steps, you MUST call this tool with entry_step_id pointing to the first step.
13
+
14
+ **Example:**
15
+ \`\`\`
16
+ update_recipe({ hash: "abc", entry_step_id: "first-step-uuid" })
17
+ \`\`\``,
18
+ inputSchema: {
19
+ type: 'object',
20
+ properties: {
21
+ hash: {
22
+ type: 'string',
23
+ description: 'The recipe hash/ID to update',
24
+ },
25
+ name: {
26
+ type: 'string',
27
+ description: 'New name for the recipe',
28
+ },
29
+ description: {
30
+ type: 'string',
31
+ description: 'New description',
32
+ },
33
+ category: {
34
+ type: 'string',
35
+ description: 'New category',
36
+ },
37
+ tags: {
38
+ type: 'array',
39
+ items: { type: 'string' },
40
+ description: 'New tags (replaces existing)',
41
+ },
42
+ visibility: {
43
+ type: 'string',
44
+ enum: ['private', 'public', 'unlisted'],
45
+ description: 'New visibility setting',
46
+ },
47
+ entry_step_id: {
48
+ type: 'string',
49
+ description: 'Set the entry step ID',
50
+ },
51
+ },
52
+ required: ['hash'],
53
+ },
54
+ };
55
+ export async function handleUpdateRecipe(api, args) {
56
+ try {
57
+ const input = {};
58
+ if (args.name !== undefined)
59
+ input.name = args.name;
60
+ if (args.description !== undefined)
61
+ input.description = args.description;
62
+ if (args.category !== undefined)
63
+ input.category = args.category;
64
+ if (args.tags !== undefined)
65
+ input.tags = args.tags;
66
+ if (args.visibility !== undefined)
67
+ input.visibility = args.visibility;
68
+ if (args.entry_step_id !== undefined)
69
+ input.entry_step_id = args.entry_step_id;
70
+ const recipe = await api.updateRecipe(args.hash, input);
71
+ return {
72
+ content: [
73
+ {
74
+ type: 'text',
75
+ text: `Recipe updated successfully!
76
+
77
+ **Name:** ${recipe.name}
78
+ **Hash:** ${recipe.hash}
79
+ **Visibility:** ${recipe.visibility}
80
+ **Entry Step:** ${recipe.entry_step_id || 'Not set'}`,
81
+ },
82
+ ],
83
+ };
84
+ }
85
+ catch (error) {
86
+ const message = error instanceof Error ? error.message : 'Unknown error';
87
+ return {
88
+ content: [
89
+ {
90
+ type: 'text',
91
+ text: `Error updating recipe: ${message}`,
92
+ },
93
+ ],
94
+ isError: true,
95
+ };
96
+ }
97
+ }
98
+ //# sourceMappingURL=update-recipe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-recipe.js","sourceRoot":"","sources":["../../src/tools/update-recipe.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,MAAM,CAAC,MAAM,gBAAgB,GAAS;IACpC,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE;;;;;;;;;OASR;IACL,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,8BAA8B;aAC5C;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,yBAAyB;aACvC;YACD,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,iBAAiB;aAC/B;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,cAAc;aAC5B;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACzB,WAAW,EAAE,8BAA8B;aAC5C;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAC;gBACvC,WAAW,EAAE,wBAAwB;aACtC;YACD,aAAa,EAAE;gBACb,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,uBAAuB;aACrC;SACF;QACD,QAAQ,EAAE,CAAC,MAAM,CAAC;KACnB;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,GAAqB,EACrB,IAQC;IAED,IAAI,CAAC;QACH,MAAM,KAAK,GAAsB,EAAE,CAAC;QACpC,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;YAAE,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACpD,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;YAAE,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACzE,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;YAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAChE,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;YAAE,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACpD,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;YAAE,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACtE,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS;YAAE,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QAE/E,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAExD,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE;;YAEJ,MAAM,CAAC,IAAI;YACX,MAAM,CAAC,IAAI;kBACL,MAAM,CAAC,UAAU;kBACjB,MAAM,CAAC,aAAa,IAAI,SAAS,EAAE;iBAC5C;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,0BAA0B,OAAO,EAAE;iBAC1C;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Upload Document from URL Tool
3
+ *
4
+ * Downloads and uploads a document from a URL to the knowledge base.
5
+ * Can upload to personal or team knowledge base.
6
+ */
7
+ import { Tool, CallToolResult } from '@modelcontextprotocol/sdk/types.js';
8
+ import { FlowDotApiClient } from '../api-client.js';
9
+ export declare const uploadDocumentFromUrlToolDef: Tool;
10
+ export declare function handleUploadDocumentFromUrl(api: FlowDotApiClient, args: {
11
+ url: string;
12
+ title?: string;
13
+ category_id?: number;
14
+ team_id?: number;
15
+ }): Promise<CallToolResult>;
16
+ //# sourceMappingURL=upload-document-from-url.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload-document-from-url.d.ts","sourceRoot":"","sources":["../../src/tools/upload-document-from-url.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,4BAA4B,EAAE,IA0B1C,CAAC;AAEF,wBAAsB,2BAA2B,CAC/C,GAAG,EAAE,gBAAgB,EACrB,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5E,OAAO,CAAC,cAAc,CAAC,CAyCzB"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Upload Document from URL Tool
3
+ *
4
+ * Downloads and uploads a document from a URL to the knowledge base.
5
+ * Can upload to personal or team knowledge base.
6
+ */
7
+ export const uploadDocumentFromUrlToolDef = {
8
+ name: 'upload_document_from_url',
9
+ description: 'Download a document from a URL and add it to your knowledge base. Supports PDF, DOCX, TXT, Markdown, CSV, and JSON files (max 50MB). Can upload to personal or team knowledge base.',
10
+ inputSchema: {
11
+ type: 'object',
12
+ properties: {
13
+ url: {
14
+ type: 'string',
15
+ description: 'URL of the document to download',
16
+ },
17
+ title: {
18
+ type: 'string',
19
+ description: 'Optional: Title for the document (defaults to filename from URL)',
20
+ },
21
+ category_id: {
22
+ type: 'number',
23
+ description: 'Optional: Category ID to organize the document. Must belong to the same scope (personal or team).',
24
+ },
25
+ team_id: {
26
+ type: 'number',
27
+ description: 'Optional: Team ID to upload the document to. If omitted, uploads to personal knowledge base. Use list_user_teams to see available teams.',
28
+ },
29
+ },
30
+ required: ['url'],
31
+ },
32
+ };
33
+ export async function handleUploadDocumentFromUrl(api, args) {
34
+ try {
35
+ const result = await api.uploadDocumentFromUrl({
36
+ url: args.url,
37
+ title: args.title,
38
+ category_id: args.category_id,
39
+ team_id: args.team_id,
40
+ });
41
+ const lines = [
42
+ `## Document Downloaded Successfully`,
43
+ '',
44
+ `**Title:** ${result.title}`,
45
+ `**ID:** ${result.id}`,
46
+ `**Hash:** ${result.hash}`,
47
+ result.original_filename ? `**Filename:** ${result.original_filename}` : '',
48
+ result.file_size_bytes ? `**Size:** ${(result.file_size_bytes / 1024).toFixed(1)} KB` : '',
49
+ `**Status:** ${result.status}`,
50
+ ].filter(Boolean);
51
+ if (args.team_id) {
52
+ lines.push(`**Location:** Team knowledge base (Team ID: ${args.team_id})`);
53
+ }
54
+ else {
55
+ lines.push(`**Location:** Personal knowledge base`);
56
+ }
57
+ lines.push('');
58
+ lines.push(result.message || 'Document downloaded and queued for processing.');
59
+ lines.push('');
60
+ lines.push('The document will be processed in the background. Use list_knowledge_documents to check the status.');
61
+ return {
62
+ content: [{ type: 'text', text: lines.join('\n') }],
63
+ };
64
+ }
65
+ catch (error) {
66
+ const message = error instanceof Error ? error.message : 'Unknown error';
67
+ return {
68
+ content: [{ type: 'text', text: `Error uploading document from URL: ${message}` }],
69
+ isError: true,
70
+ };
71
+ }
72
+ }
73
+ //# sourceMappingURL=upload-document-from-url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload-document-from-url.js","sourceRoot":"","sources":["../../src/tools/upload-document-from-url.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,MAAM,CAAC,MAAM,4BAA4B,GAAS;IAChD,IAAI,EAAE,0BAA0B;IAChC,WAAW,EACT,qLAAqL;IACvL,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,GAAG,EAAE;gBACH,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,iCAAiC;aAC/C;YACD,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,kEAAkE;aAChF;YACD,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,mGAAmG;aACjH;YACD,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,0IAA0I;aACxJ;SACF;QACD,QAAQ,EAAE,CAAC,KAAK,CAAC;KAClB;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,GAAqB,EACrB,IAA6E;IAE7E,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,qBAAqB,CAAC;YAC7C,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG;YACZ,qCAAqC;YACrC,EAAE;YACF,cAAc,MAAM,CAAC,KAAK,EAAE;YAC5B,WAAW,MAAM,CAAC,EAAE,EAAE;YACtB,aAAa,MAAM,CAAC,IAAI,EAAE;YAC1B,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE;YAC3E,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;YAC1F,eAAe,MAAM,CAAC,MAAM,EAAE;SAC/B,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAElB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,KAAK,CAAC,IAAI,CAAC,+CAA+C,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QAC7E,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;QACtD,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,gDAAgD,CAAC,CAAC;QAC/E,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,qGAAqG,CAAC,CAAC;QAElH,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,sCAAsC,OAAO,EAAE,EAAE,CAAC;YAClF,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Upload Text Document Tool
3
+ *
4
+ * Uploads text content directly as a document to the knowledge base.
5
+ * Can upload to personal or team knowledge base.
6
+ */
7
+ import { Tool, CallToolResult } from '@modelcontextprotocol/sdk/types.js';
8
+ import { FlowDotApiClient } from '../api-client.js';
9
+ export declare const uploadTextDocumentToolDef: Tool;
10
+ export declare function handleUploadTextDocument(api: FlowDotApiClient, args: {
11
+ title: string;
12
+ content: string;
13
+ category_id?: number;
14
+ team_id?: number;
15
+ mime_type?: 'text/plain' | 'text/markdown' | 'application/json';
16
+ }): Promise<CallToolResult>;
17
+ //# sourceMappingURL=upload-text-document.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload-text-document.d.ts","sourceRoot":"","sources":["../../src/tools/upload-text-document.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,yBAAyB,EAAE,IA+BvC,CAAC;AAEF,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,gBAAgB,EACrB,IAAI,EAAE;IACJ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,YAAY,GAAG,eAAe,GAAG,kBAAkB,CAAC;CACjE,GACA,OAAO,CAAC,cAAc,CAAC,CAwCzB"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Upload Text Document Tool
3
+ *
4
+ * Uploads text content directly as a document to the knowledge base.
5
+ * Can upload to personal or team knowledge base.
6
+ */
7
+ export const uploadTextDocumentToolDef = {
8
+ name: 'upload_text_document',
9
+ description: 'Upload text content directly as a document to your knowledge base. Ideal for creating documents from AI-generated content, notes, or any text. The document will be processed and chunked for RAG queries. Can upload to personal or team knowledge base.',
10
+ inputSchema: {
11
+ type: 'object',
12
+ properties: {
13
+ title: {
14
+ type: 'string',
15
+ description: 'Title for the document (max 255 characters)',
16
+ },
17
+ content: {
18
+ type: 'string',
19
+ description: 'The text content to upload (max 10MB)',
20
+ },
21
+ category_id: {
22
+ type: 'number',
23
+ description: 'Optional: Category ID to organize the document. Must belong to the same scope (personal or team).',
24
+ },
25
+ team_id: {
26
+ type: 'number',
27
+ description: 'Optional: Team ID to upload the document to. If omitted, uploads to personal knowledge base. Use list_user_teams to see available teams.',
28
+ },
29
+ mime_type: {
30
+ type: 'string',
31
+ enum: ['text/plain', 'text/markdown', 'application/json'],
32
+ description: 'Content type: text/plain (default), text/markdown, or application/json',
33
+ },
34
+ },
35
+ required: ['title', 'content'],
36
+ },
37
+ };
38
+ export async function handleUploadTextDocument(api, args) {
39
+ try {
40
+ const result = await api.uploadTextDocument({
41
+ title: args.title,
42
+ content: args.content,
43
+ category_id: args.category_id,
44
+ team_id: args.team_id,
45
+ mime_type: args.mime_type,
46
+ });
47
+ const lines = [
48
+ `## Document Uploaded Successfully`,
49
+ '',
50
+ `**Title:** ${result.title}`,
51
+ `**ID:** ${result.id}`,
52
+ `**Hash:** ${result.hash}`,
53
+ `**Status:** ${result.status}`,
54
+ ];
55
+ if (args.team_id) {
56
+ lines.push(`**Location:** Team knowledge base (Team ID: ${args.team_id})`);
57
+ }
58
+ else {
59
+ lines.push(`**Location:** Personal knowledge base`);
60
+ }
61
+ lines.push('');
62
+ lines.push(result.message || 'Document created and queued for processing.');
63
+ lines.push('');
64
+ lines.push('The document will be processed in the background. Use list_knowledge_documents to check the status.');
65
+ return {
66
+ content: [{ type: 'text', text: lines.join('\n') }],
67
+ };
68
+ }
69
+ catch (error) {
70
+ const message = error instanceof Error ? error.message : 'Unknown error';
71
+ return {
72
+ content: [{ type: 'text', text: `Error uploading document: ${message}` }],
73
+ isError: true,
74
+ };
75
+ }
76
+ }
77
+ //# sourceMappingURL=upload-text-document.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload-text-document.js","sourceRoot":"","sources":["../../src/tools/upload-text-document.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,MAAM,CAAC,MAAM,yBAAyB,GAAS;IAC7C,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EACT,2PAA2P;IAC7P,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,6CAA6C;aAC3D;YACD,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,uCAAuC;aACrD;YACD,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,mGAAmG;aACjH;YACD,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,0IAA0I;aACxJ;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,YAAY,EAAE,eAAe,EAAE,kBAAkB,CAAC;gBACzD,WAAW,EAAE,wEAAwE;aACtF;SACF;QACD,QAAQ,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;KAC/B;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,GAAqB,EACrB,IAMC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,kBAAkB,CAAC;YAC1C,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG;YACZ,mCAAmC;YACnC,EAAE;YACF,cAAc,MAAM,CAAC,KAAK,EAAE;YAC5B,WAAW,MAAM,CAAC,EAAE,EAAE;YACtB,aAAa,MAAM,CAAC,IAAI,EAAE;YAC1B,eAAe,MAAM,CAAC,MAAM,EAAE;SAC/B,CAAC;QAEF,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,KAAK,CAAC,IAAI,CAAC,+CAA+C,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QAC7E,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;QACtD,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,6CAA6C,CAAC,CAAC;QAC5E,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,qGAAqG,CAAC,CAAC;QAElH,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,13 @@
1
+ /**
2
+ * vote_recipe MCP Tool
3
+ *
4
+ * Vote on a recipe (upvote, downvote, or remove vote).
5
+ */
6
+ import { Tool, CallToolResult } from '@modelcontextprotocol/sdk/types.js';
7
+ import { FlowDotApiClient } from '../api-client.js';
8
+ export declare const voteRecipeTool: Tool;
9
+ export declare function handleVoteRecipe(api: FlowDotApiClient, args: {
10
+ hash: string;
11
+ vote: 'up' | 'down' | 'remove';
12
+ }): Promise<CallToolResult>;
13
+ //# sourceMappingURL=vote-recipe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vote-recipe.d.ts","sourceRoot":"","sources":["../../src/tools/vote-recipe.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,cAAc,EAAE,IAkB5B,CAAC;AAEF,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,gBAAgB,EACrB,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAA;CAAE,GACrD,OAAO,CAAC,cAAc,CAAC,CA6BzB"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * vote_recipe MCP Tool
3
+ *
4
+ * Vote on a recipe (upvote, downvote, or remove vote).
5
+ */
6
+ export const voteRecipeTool = {
7
+ name: 'vote_recipe',
8
+ description: 'Vote on a recipe (upvote, downvote, or remove your vote). Only works on public recipes.',
9
+ inputSchema: {
10
+ type: 'object',
11
+ properties: {
12
+ hash: {
13
+ type: 'string',
14
+ description: 'The recipe hash/ID',
15
+ },
16
+ vote: {
17
+ type: 'string',
18
+ enum: ['up', 'down', 'remove'],
19
+ description: 'Vote action: "up" for upvote, "down" for downvote, "remove" to remove your vote',
20
+ },
21
+ },
22
+ required: ['hash', 'vote'],
23
+ },
24
+ };
25
+ export async function handleVoteRecipe(api, args) {
26
+ try {
27
+ const result = await api.voteRecipe(args.hash, args.vote);
28
+ const voteEmoji = args.vote === 'up' ? '👍' : args.vote === 'down' ? '👎' : '🔄';
29
+ const voteAction = args.vote === 'remove' ? 'removed' : `added ${args.vote}vote`;
30
+ return {
31
+ content: [
32
+ {
33
+ type: 'text',
34
+ text: `${voteEmoji} Vote ${voteAction}!
35
+
36
+ **Recipe Score:** ${result.vote_count}`,
37
+ },
38
+ ],
39
+ };
40
+ }
41
+ catch (error) {
42
+ const message = error instanceof Error ? error.message : 'Unknown error';
43
+ return {
44
+ content: [
45
+ {
46
+ type: 'text',
47
+ text: `Error voting: ${message}`,
48
+ },
49
+ ],
50
+ isError: true,
51
+ };
52
+ }
53
+ }
54
+ //# sourceMappingURL=vote-recipe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vote-recipe.js","sourceRoot":"","sources":["../../src/tools/vote-recipe.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,MAAM,CAAC,MAAM,cAAc,GAAS;IAClC,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,yFAAyF;IACtG,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,oBAAoB;aAClC;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC;gBAC9B,WAAW,EAAE,iFAAiF;aAC/F;SACF;QACD,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;KAC3B;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,GAAqB,EACrB,IAAsD;IAEtD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAE1D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACjF,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,IAAI,MAAM,CAAC;QAEjF,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,GAAG,SAAS,SAAS,UAAU;;oBAE3B,MAAM,CAAC,UAAU,EAAE;iBAC9B;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,iBAAiB,OAAO,EAAE;iBACjC;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC"}