@commandable/mcp 0.0.1 → 0.0.4

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 (364) hide show
  1. package/README.md +25 -4
  2. package/dist/cli/index.d.ts.map +1 -1
  3. package/dist/cli/index.js +82 -5
  4. package/dist/cli/index.js.map +1 -1
  5. package/dist/cli/setup.d.ts.map +1 -1
  6. package/dist/cli/setup.js +74 -51
  7. package/dist/cli/setup.js.map +1 -1
  8. package/dist/config/configApply.d.ts +16 -0
  9. package/dist/config/configApply.d.ts.map +1 -0
  10. package/dist/config/configApply.js +74 -0
  11. package/dist/config/configApply.js.map +1 -0
  12. package/dist/config/configLoader.d.ts +9 -0
  13. package/dist/config/configLoader.d.ts.map +1 -0
  14. package/dist/config/configLoader.js +75 -0
  15. package/dist/config/configLoader.js.map +1 -0
  16. package/dist/config/configSchema.d.ts +29 -0
  17. package/dist/config/configSchema.d.ts.map +1 -0
  18. package/dist/config/configSchema.js +17 -0
  19. package/dist/config/configSchema.js.map +1 -0
  20. package/dist/db/client.d.ts.map +1 -1
  21. package/dist/db/client.js +8 -1
  22. package/dist/db/client.js.map +1 -1
  23. package/dist/db/integrationStore.d.ts.map +1 -1
  24. package/dist/db/integrationStore.js +3 -0
  25. package/dist/db/integrationStore.js.map +1 -1
  26. package/dist/db/migrate.d.ts.map +1 -1
  27. package/dist/db/migrate.js +2 -0
  28. package/dist/db/migrate.js.map +1 -1
  29. package/dist/db/schema.d.ts +36 -0
  30. package/dist/db/schema.d.ts.map +1 -1
  31. package/dist/db/schema.js +2 -0
  32. package/dist/db/schema.js.map +1 -1
  33. package/dist/index.d.ts +5 -1
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +5 -1
  36. package/dist/index.js.map +1 -1
  37. package/dist/integrations/actionsFactory.js +1 -1
  38. package/dist/integrations/actionsFactory.js.map +1 -1
  39. package/dist/integrations/catalog.d.ts +3 -4
  40. package/dist/integrations/catalog.d.ts.map +1 -1
  41. package/dist/integrations/catalog.js +2 -37
  42. package/dist/integrations/catalog.js.map +1 -1
  43. package/dist/integrations/dataLoader.d.ts +2 -46
  44. package/dist/integrations/dataLoader.d.ts.map +1 -1
  45. package/dist/integrations/dataLoader.js +1 -125
  46. package/dist/integrations/dataLoader.js.map +1 -1
  47. package/dist/integrations/providerRegistry.d.ts.map +1 -1
  48. package/dist/integrations/providerRegistry.js +10 -6
  49. package/dist/integrations/providerRegistry.js.map +1 -1
  50. package/dist/integrations/proxy.d.ts.map +1 -1
  51. package/dist/integrations/proxy.js +24 -27
  52. package/dist/integrations/proxy.js.map +1 -1
  53. package/dist/mcp/auth.d.ts +18 -0
  54. package/dist/mcp/auth.d.ts.map +1 -0
  55. package/dist/mcp/auth.js +45 -0
  56. package/dist/mcp/auth.js.map +1 -0
  57. package/dist/mcp/handlers.d.ts +12 -0
  58. package/dist/mcp/handlers.d.ts.map +1 -0
  59. package/dist/mcp/handlers.js +39 -0
  60. package/dist/mcp/handlers.js.map +1 -0
  61. package/dist/mcp/server.d.ts.map +1 -1
  62. package/dist/mcp/server.js +2 -38
  63. package/dist/mcp/server.js.map +1 -1
  64. package/dist/types.d.ts +1 -7
  65. package/dist/types.d.ts.map +1 -1
  66. package/package.json +10 -7
  67. package/integration-data/README.md +0 -52
  68. package/integration-data/airtable/credentials.json +0 -20
  69. package/integration-data/airtable/credentials_hint.md +0 -4
  70. package/integration-data/airtable/handlers/create_record.js +0 -12
  71. package/integration-data/airtable/handlers/delete_record.js +0 -7
  72. package/integration-data/airtable/handlers/get_record.js +0 -4
  73. package/integration-data/airtable/handlers/get_table_schema.js +0 -6
  74. package/integration-data/airtable/handlers/list_bases.js +0 -4
  75. package/integration-data/airtable/handlers/list_records.js +0 -25
  76. package/integration-data/airtable/handlers/list_table_fields.js +0 -6
  77. package/integration-data/airtable/handlers/list_tables.js +0 -4
  78. package/integration-data/airtable/handlers/list_views.js +0 -6
  79. package/integration-data/airtable/handlers/search_records.js +0 -6
  80. package/integration-data/airtable/handlers/update_record.js +0 -11
  81. package/integration-data/airtable/manifest.json +0 -83
  82. package/integration-data/airtable/schemas/create_record.json +0 -12
  83. package/integration-data/airtable/schemas/delete_record.json +0 -11
  84. package/integration-data/airtable/schemas/empty.json +0 -6
  85. package/integration-data/airtable/schemas/get_record.json +0 -11
  86. package/integration-data/airtable/schemas/id_base.json +0 -9
  87. package/integration-data/airtable/schemas/id_base_table.json +0 -10
  88. package/integration-data/airtable/schemas/list_records.json +0 -26
  89. package/integration-data/airtable/schemas/search_records.json +0 -12
  90. package/integration-data/airtable/schemas/update_record.json +0 -13
  91. package/integration-data/github/credentials.json +0 -20
  92. package/integration-data/github/credentials_hint.md +0 -7
  93. package/integration-data/github/handlers/add_labels_to_issue.js +0 -12
  94. package/integration-data/github/handlers/close_issue.js +0 -5
  95. package/integration-data/github/handlers/comment_on_issue.js +0 -5
  96. package/integration-data/github/handlers/create_branch.js +0 -33
  97. package/integration-data/github/handlers/create_commit.js +0 -91
  98. package/integration-data/github/handlers/create_issue.js +0 -10
  99. package/integration-data/github/handlers/create_or_update_file.js +0 -21
  100. package/integration-data/github/handlers/create_pull_request.js +0 -16
  101. package/integration-data/github/handlers/create_repo.js +0 -11
  102. package/integration-data/github/handlers/delete_repo.js +0 -6
  103. package/integration-data/github/handlers/get_issue.js +0 -4
  104. package/integration-data/github/handlers/get_repo.js +0 -4
  105. package/integration-data/github/handlers/list_branches.js +0 -4
  106. package/integration-data/github/handlers/list_commits.js +0 -12
  107. package/integration-data/github/handlers/list_issues.js +0 -12
  108. package/integration-data/github/handlers/list_pull_requests.js +0 -8
  109. package/integration-data/github/handlers/list_repos_install.js +0 -4
  110. package/integration-data/github/handlers/list_repos_user.js +0 -4
  111. package/integration-data/github/handlers/merge_pull_request.js +0 -14
  112. package/integration-data/github/handlers/update_issue.js +0 -15
  113. package/integration-data/github/manifest.json +0 -26
  114. package/integration-data/github/schemas/add_labels_to_issue.json +0 -12
  115. package/integration-data/github/schemas/close_issue.json +0 -10
  116. package/integration-data/github/schemas/comment_on_issue.json +0 -11
  117. package/integration-data/github/schemas/create_branch.json +0 -12
  118. package/integration-data/github/schemas/create_commit.json +0 -25
  119. package/integration-data/github/schemas/create_issue.json +0 -13
  120. package/integration-data/github/schemas/create_or_update_file.json +0 -15
  121. package/integration-data/github/schemas/create_pull_request.json +0 -15
  122. package/integration-data/github/schemas/create_repo.json +0 -12
  123. package/integration-data/github/schemas/delete_repo.json +0 -10
  124. package/integration-data/github/schemas/empty.json +0 -5
  125. package/integration-data/github/schemas/get_issue.json +0 -10
  126. package/integration-data/github/schemas/get_repo.json +0 -9
  127. package/integration-data/github/schemas/list_commits.json +0 -12
  128. package/integration-data/github/schemas/list_issues.json +0 -12
  129. package/integration-data/github/schemas/list_pull_requests.json +0 -10
  130. package/integration-data/github/schemas/merge_pull_request.json +0 -14
  131. package/integration-data/github/schemas/owner_repo.json +0 -9
  132. package/integration-data/github/schemas/update_issue.json +0 -15
  133. package/integration-data/google-calendar/credentials.json +0 -36
  134. package/integration-data/google-calendar/credentials_hint.md +0 -9
  135. package/integration-data/google-calendar/handlers/create_event.js +0 -6
  136. package/integration-data/google-calendar/handlers/delete_acl.js +0 -6
  137. package/integration-data/google-calendar/handlers/delete_event.js +0 -7
  138. package/integration-data/google-calendar/handlers/freebusy_query.js +0 -4
  139. package/integration-data/google-calendar/handlers/get_acl.js +0 -5
  140. package/integration-data/google-calendar/handlers/get_calendar.js +0 -4
  141. package/integration-data/google-calendar/handlers/get_event.js +0 -5
  142. package/integration-data/google-calendar/handlers/insert_acl.js +0 -6
  143. package/integration-data/google-calendar/handlers/list_acl.js +0 -5
  144. package/integration-data/google-calendar/handlers/list_calendars.js +0 -4
  145. package/integration-data/google-calendar/handlers/list_colors.js +0 -4
  146. package/integration-data/google-calendar/handlers/list_events.js +0 -21
  147. package/integration-data/google-calendar/handlers/list_settings.js +0 -4
  148. package/integration-data/google-calendar/handlers/move_event.js +0 -6
  149. package/integration-data/google-calendar/handlers/patch_event.js +0 -5
  150. package/integration-data/google-calendar/handlers/quick_add.js +0 -6
  151. package/integration-data/google-calendar/handlers/update_acl.js +0 -7
  152. package/integration-data/google-calendar/handlers/update_event.js +0 -5
  153. package/integration-data/google-calendar/manifest.json +0 -26
  154. package/integration-data/google-calendar/schemas/create_event.json +0 -34
  155. package/integration-data/google-calendar/schemas/delete_acl.json +0 -9
  156. package/integration-data/google-calendar/schemas/empty.json +0 -1
  157. package/integration-data/google-calendar/schemas/freebusy_query.json +0 -13
  158. package/integration-data/google-calendar/schemas/get_acl.json +0 -9
  159. package/integration-data/google-calendar/schemas/id_calendar.json +0 -8
  160. package/integration-data/google-calendar/schemas/id_calendar_event.json +0 -9
  161. package/integration-data/google-calendar/schemas/insert_acl.json +0 -18
  162. package/integration-data/google-calendar/schemas/list_events.json +0 -15
  163. package/integration-data/google-calendar/schemas/move_event.json +0 -10
  164. package/integration-data/google-calendar/schemas/patch_event.json +0 -10
  165. package/integration-data/google-calendar/schemas/quick_add.json +0 -9
  166. package/integration-data/google-calendar/schemas/update_acl.json +0 -10
  167. package/integration-data/google-calendar/schemas/update_event.json +0 -10
  168. package/integration-data/google-docs/credentials.json +0 -36
  169. package/integration-data/google-docs/credentials_hint.md +0 -9
  170. package/integration-data/google-docs/handlers/append_text.js +0 -12
  171. package/integration-data/google-docs/handlers/batch_update.js +0 -13
  172. package/integration-data/google-docs/handlers/create_document.js +0 -9
  173. package/integration-data/google-docs/handlers/delete_first_match.js +0 -50
  174. package/integration-data/google-docs/handlers/get_document.js +0 -12
  175. package/integration-data/google-docs/handlers/get_document_structured.js +0 -6
  176. package/integration-data/google-docs/handlers/get_document_text.js +0 -17
  177. package/integration-data/google-docs/handlers/insert_inline_image_after_first_match.js +0 -41
  178. package/integration-data/google-docs/handlers/insert_page_break_after_first_match.js +0 -49
  179. package/integration-data/google-docs/handlers/insert_table_after_first_match.js +0 -49
  180. package/integration-data/google-docs/handlers/insert_text_after_first_match.js +0 -51
  181. package/integration-data/google-docs/handlers/replace_all_text.js +0 -8
  182. package/integration-data/google-docs/handlers/style_first_match.js +0 -42
  183. package/integration-data/google-docs/handlers/update_document_style.js +0 -8
  184. package/integration-data/google-docs/handlers/update_paragraph_style_for_first_match.js +0 -48
  185. package/integration-data/google-docs/manifest.json +0 -58
  186. package/integration-data/google-docs/schemas/append_text.json +0 -10
  187. package/integration-data/google-docs/schemas/apply_text_style.json +0 -13
  188. package/integration-data/google-docs/schemas/batch_update.json +0 -16
  189. package/integration-data/google-docs/schemas/create_document.json +0 -8
  190. package/integration-data/google-docs/schemas/delete_content_range.json +0 -11
  191. package/integration-data/google-docs/schemas/delete_first_match.json +0 -10
  192. package/integration-data/google-docs/schemas/get_document.json +0 -11
  193. package/integration-data/google-docs/schemas/get_document_structured.json +0 -9
  194. package/integration-data/google-docs/schemas/get_document_text.json +0 -9
  195. package/integration-data/google-docs/schemas/insert_inline_image.json +0 -12
  196. package/integration-data/google-docs/schemas/insert_inline_image_after_first_match.json +0 -13
  197. package/integration-data/google-docs/schemas/insert_page_break.json +0 -10
  198. package/integration-data/google-docs/schemas/insert_page_break_after_first_match.json +0 -11
  199. package/integration-data/google-docs/schemas/insert_table.json +0 -12
  200. package/integration-data/google-docs/schemas/insert_table_after_first_match.json +0 -13
  201. package/integration-data/google-docs/schemas/insert_text_after_first_match.json +0 -12
  202. package/integration-data/google-docs/schemas/insert_text_at.json +0 -11
  203. package/integration-data/google-docs/schemas/replace_all_text.json +0 -12
  204. package/integration-data/google-docs/schemas/style_first_match.json +0 -12
  205. package/integration-data/google-docs/schemas/update_document_style.json +0 -11
  206. package/integration-data/google-docs/schemas/update_paragraph_style.json +0 -13
  207. package/integration-data/google-docs/schemas/update_paragraph_style_for_first_match.json +0 -12
  208. package/integration-data/google-sheet/credentials.json +0 -36
  209. package/integration-data/google-sheet/credentials_hint.md +0 -9
  210. package/integration-data/google-sheet/handlers/append_values.js +0 -18
  211. package/integration-data/google-sheet/handlers/batch_clear_values.js +0 -6
  212. package/integration-data/google-sheet/handlers/batch_clear_values_by_data_filter.js +0 -6
  213. package/integration-data/google-sheet/handlers/batch_get_values.js +0 -16
  214. package/integration-data/google-sheet/handlers/batch_update.js +0 -14
  215. package/integration-data/google-sheet/handlers/batch_update_values.js +0 -16
  216. package/integration-data/google-sheet/handlers/batch_update_values_by_data_filter.js +0 -16
  217. package/integration-data/google-sheet/handlers/clear_values.js +0 -6
  218. package/integration-data/google-sheet/handlers/copy_to_spreadsheet.js +0 -6
  219. package/integration-data/google-sheet/handlers/create_spreadsheet.js +0 -5
  220. package/integration-data/google-sheet/handlers/get_developer_metadata.js +0 -6
  221. package/integration-data/google-sheet/handlers/get_spreadsheet.js +0 -12
  222. package/integration-data/google-sheet/handlers/get_spreadsheet_by_data_filter.js +0 -10
  223. package/integration-data/google-sheet/handlers/get_values.js +0 -14
  224. package/integration-data/google-sheet/handlers/get_values_by_data_filter.js +0 -14
  225. package/integration-data/google-sheet/handlers/search_developer_metadata.js +0 -7
  226. package/integration-data/google-sheet/handlers/update_values.js +0 -16
  227. package/integration-data/google-sheet/manifest.json +0 -125
  228. package/integration-data/google-sheet/schemas/append_values.json +0 -16
  229. package/integration-data/google-sheet/schemas/batch_clear_values.json +0 -10
  230. package/integration-data/google-sheet/schemas/batch_clear_values_by_data_filter.json +0 -10
  231. package/integration-data/google-sheet/schemas/batch_get_values.json +0 -13
  232. package/integration-data/google-sheet/schemas/batch_update.json +0 -13
  233. package/integration-data/google-sheet/schemas/batch_update_values.json +0 -25
  234. package/integration-data/google-sheet/schemas/batch_update_values_by_data_filter.json +0 -25
  235. package/integration-data/google-sheet/schemas/clear_values.json +0 -10
  236. package/integration-data/google-sheet/schemas/copy_to_spreadsheet.json +0 -11
  237. package/integration-data/google-sheet/schemas/create_spreadsheet.json +0 -11
  238. package/integration-data/google-sheet/schemas/get_developer_metadata.json +0 -10
  239. package/integration-data/google-sheet/schemas/get_spreadsheet.json +0 -15
  240. package/integration-data/google-sheet/schemas/get_spreadsheet_by_data_filter.json +0 -11
  241. package/integration-data/google-sheet/schemas/get_values.json +0 -13
  242. package/integration-data/google-sheet/schemas/get_values_by_data_filter.json +0 -17
  243. package/integration-data/google-sheet/schemas/search_developer_metadata.json +0 -14
  244. package/integration-data/google-sheet/schemas/update_values.json +0 -15
  245. package/integration-data/google-slides/credentials.json +0 -36
  246. package/integration-data/google-slides/credentials_hint.md +0 -9
  247. package/integration-data/google-slides/handlers/append_text_to_title_of_first_slide.js +0 -17
  248. package/integration-data/google-slides/handlers/batch_update.js +0 -15
  249. package/integration-data/google-slides/handlers/create_presentation.js +0 -8
  250. package/integration-data/google-slides/handlers/create_slide_after_first_match.js +0 -20
  251. package/integration-data/google-slides/handlers/get_page_thumbnail.js +0 -12
  252. package/integration-data/google-slides/handlers/get_presentation.js +0 -6
  253. package/integration-data/google-slides/handlers/insert_image_after_first_match.js +0 -19
  254. package/integration-data/google-slides/handlers/insert_shape_after_first_match.js +0 -21
  255. package/integration-data/google-slides/handlers/replace_text_first_match.js +0 -9
  256. package/integration-data/google-slides/handlers/set_background_color_for_slide_index.js +0 -15
  257. package/integration-data/google-slides/handlers/style_text_first_match.js +0 -48
  258. package/integration-data/google-slides/manifest.json +0 -41
  259. package/integration-data/google-slides/schemas/append_text_to_title_of_first_slide.json +0 -11
  260. package/integration-data/google-slides/schemas/batch_update.json +0 -13
  261. package/integration-data/google-slides/schemas/create_presentation.json +0 -8
  262. package/integration-data/google-slides/schemas/create_slide_after_first_match.json +0 -11
  263. package/integration-data/google-slides/schemas/get_page_thumbnail.json +0 -12
  264. package/integration-data/google-slides/schemas/get_presentation.json +0 -9
  265. package/integration-data/google-slides/schemas/insert_image_after_first_match.json +0 -13
  266. package/integration-data/google-slides/schemas/insert_shape_after_first_match.json +0 -13
  267. package/integration-data/google-slides/schemas/replace_text_first_match.json +0 -12
  268. package/integration-data/google-slides/schemas/set_background_color_for_slide_index.json +0 -11
  269. package/integration-data/google-slides/schemas/style_text_first_match.json +0 -12
  270. package/integration-data/new_integration_prompt.md +0 -41
  271. package/integration-data/notion/credentials.json +0 -21
  272. package/integration-data/notion/credentials_hint.md +0 -5
  273. package/integration-data/notion/handlers/append_block_children.js +0 -7
  274. package/integration-data/notion/handlers/create_comment.js +0 -10
  275. package/integration-data/notion/handlers/create_database.js +0 -11
  276. package/integration-data/notion/handlers/create_page.js +0 -13
  277. package/integration-data/notion/handlers/delete_block.js +0 -8
  278. package/integration-data/notion/handlers/get_me.js +0 -4
  279. package/integration-data/notion/handlers/list_block_children.js +0 -10
  280. package/integration-data/notion/handlers/list_comments.js +0 -14
  281. package/integration-data/notion/handlers/list_users.js +0 -10
  282. package/integration-data/notion/handlers/query_database.js +0 -10
  283. package/integration-data/notion/handlers/retrieve_block.js +0 -4
  284. package/integration-data/notion/handlers/retrieve_database.js +0 -4
  285. package/integration-data/notion/handlers/retrieve_page.js +0 -4
  286. package/integration-data/notion/handlers/retrieve_page_property_item.js +0 -10
  287. package/integration-data/notion/handlers/retrieve_user.js +0 -4
  288. package/integration-data/notion/handlers/search.js +0 -11
  289. package/integration-data/notion/handlers/update_block.js +0 -7
  290. package/integration-data/notion/handlers/update_database.js +0 -10
  291. package/integration-data/notion/handlers/update_page_properties.js +0 -10
  292. package/integration-data/notion/manifest.json +0 -139
  293. package/integration-data/notion/prompt.md +0 -26
  294. package/integration-data/notion/schemas/append_block_children.json +0 -10
  295. package/integration-data/notion/schemas/create_comment.json +0 -18
  296. package/integration-data/notion/schemas/create_database.json +0 -18
  297. package/integration-data/notion/schemas/create_page.json +0 -22
  298. package/integration-data/notion/schemas/delete_block.json +0 -9
  299. package/integration-data/notion/schemas/empty.json +0 -6
  300. package/integration-data/notion/schemas/id_block.json +0 -9
  301. package/integration-data/notion/schemas/id_database.json +0 -9
  302. package/integration-data/notion/schemas/id_page.json +0 -9
  303. package/integration-data/notion/schemas/id_user.json +0 -9
  304. package/integration-data/notion/schemas/list_block_children.json +0 -11
  305. package/integration-data/notion/schemas/list_comments.json +0 -15
  306. package/integration-data/notion/schemas/list_users.json +0 -9
  307. package/integration-data/notion/schemas/query_database.json +0 -13
  308. package/integration-data/notion/schemas/retrieve_page_property_item.json +0 -12
  309. package/integration-data/notion/schemas/search.json +0 -27
  310. package/integration-data/notion/schemas/update_block.json +0 -10
  311. package/integration-data/notion/schemas/update_database.json +0 -13
  312. package/integration-data/notion/schemas/update_page_properties.json +0 -13
  313. package/integration-data/trello/credentials.json +0 -26
  314. package/integration-data/trello/credentials_hint.md +0 -4
  315. package/integration-data/trello/handlers/add_checklist_to_card.js +0 -5
  316. package/integration-data/trello/handlers/add_member_to_card.js +0 -5
  317. package/integration-data/trello/handlers/archive_list.js +0 -5
  318. package/integration-data/trello/handlers/create_card.js +0 -13
  319. package/integration-data/trello/handlers/create_list.js +0 -7
  320. package/integration-data/trello/handlers/delete_card.js +0 -9
  321. package/integration-data/trello/handlers/get_board.js +0 -4
  322. package/integration-data/trello/handlers/get_board_cards.js +0 -4
  323. package/integration-data/trello/handlers/get_board_custom_fields.js +0 -4
  324. package/integration-data/trello/handlers/get_board_labels.js +0 -4
  325. package/integration-data/trello/handlers/get_board_lists.js +0 -4
  326. package/integration-data/trello/handlers/get_board_members.js +0 -4
  327. package/integration-data/trello/handlers/get_board_memberships.js +0 -4
  328. package/integration-data/trello/handlers/get_card.js +0 -4
  329. package/integration-data/trello/handlers/get_card_actions.js +0 -4
  330. package/integration-data/trello/handlers/get_card_attachments.js +0 -4
  331. package/integration-data/trello/handlers/get_card_checklists.js +0 -4
  332. package/integration-data/trello/handlers/get_card_custom_field_items.js +0 -4
  333. package/integration-data/trello/handlers/get_card_members.js +0 -4
  334. package/integration-data/trello/handlers/get_list.js +0 -4
  335. package/integration-data/trello/handlers/get_list_cards.js +0 -4
  336. package/integration-data/trello/handlers/get_member.js +0 -4
  337. package/integration-data/trello/handlers/get_member_boards.js +0 -4
  338. package/integration-data/trello/handlers/get_member_organizations.js +0 -4
  339. package/integration-data/trello/handlers/get_organization.js +0 -4
  340. package/integration-data/trello/handlers/get_organization_boards.js +0 -4
  341. package/integration-data/trello/handlers/move_card_to_list.js +0 -5
  342. package/integration-data/trello/handlers/remove_member_from_card.js +0 -9
  343. package/integration-data/trello/handlers/search.js +0 -5
  344. package/integration-data/trello/handlers/update_card.js +0 -19
  345. package/integration-data/trello/handlers/update_list.js +0 -11
  346. package/integration-data/trello/manifest.json +0 -231
  347. package/integration-data/trello/schemas/add_checklist_to_card.json +0 -10
  348. package/integration-data/trello/schemas/add_member_to_card.json +0 -10
  349. package/integration-data/trello/schemas/archive_list.json +0 -9
  350. package/integration-data/trello/schemas/create_card.json +0 -13
  351. package/integration-data/trello/schemas/create_list.json +0 -11
  352. package/integration-data/trello/schemas/delete_card.json +0 -9
  353. package/integration-data/trello/schemas/display_trello_cards.json +0 -45
  354. package/integration-data/trello/schemas/empty.json +0 -5
  355. package/integration-data/trello/schemas/get_member.json +0 -5
  356. package/integration-data/trello/schemas/id_board.json +0 -8
  357. package/integration-data/trello/schemas/id_card.json +0 -8
  358. package/integration-data/trello/schemas/id_list.json +0 -8
  359. package/integration-data/trello/schemas/id_org.json +0 -8
  360. package/integration-data/trello/schemas/move_card_to_list.json +0 -10
  361. package/integration-data/trello/schemas/remove_member_from_card.json +0 -10
  362. package/integration-data/trello/schemas/search.json +0 -8
  363. package/integration-data/trello/schemas/update_card.json +0 -16
  364. package/integration-data/trello/schemas/update_list.json +0 -12
@@ -1,9 +0,0 @@
1
- async (input) => {
2
- const { presentationId, findText, replaceText, matchCase } = input
3
- const res = await integration.fetch(`/presentations/${encodeURIComponent(presentationId)}:batchUpdate`, {
4
- method: 'POST',
5
- body: { requests: [{ replaceAllText: { containsText: { text: findText, matchCase: Boolean(matchCase) }, replaceText } }] },
6
- })
7
- const out = await res.json()
8
- return out?.presentationId ? { ...out, applied: true } : { presentationId, applied: true, replies: out?.replies || [] }
9
- }
@@ -1,15 +0,0 @@
1
- async (input) => {
2
- const { presentationId, slideIndex, rgbColor } = input
3
- const presRes = await integration.fetch(`/presentations/${encodeURIComponent(presentationId)}`)
4
- const pres = await presRes.json()
5
- const slide = (pres?.slides || [])[slideIndex]
6
- if (!slide?.objectId)
7
- return { presentationId, applied: false, replies: [] }
8
- const color = { color: { rgbColor } }
9
- const res = await integration.fetch(`/presentations/${encodeURIComponent(presentationId)}:batchUpdate`, {
10
- method: 'POST',
11
- body: { requests: [{ updatePageProperties: { objectId: slide.objectId, pageProperties: { pageBackgroundFill: { solidFill: color } }, fields: 'pageBackgroundFill.solidFill.color' } }] },
12
- })
13
- const out = await res.json()
14
- return out?.presentationId ? { ...out, applied: true } : { presentationId, applied: true, replies: out?.replies || [] }
15
- }
@@ -1,48 +0,0 @@
1
- async (input) => {
2
- const { presentationId, findText, textStyle, fields } = input
3
- // Replace first match with a marker to derive objectId/range
4
- const marker = `__CMD_MARK_${Date.now()}__`
5
- const rep = await integration.fetch(`/presentations/${encodeURIComponent(presentationId)}:batchUpdate`, {
6
- method: 'POST',
7
- body: { requests: [{ replaceAllText: { containsText: { text: findText, matchCase: false }, replaceText: marker } }] },
8
- })
9
- await rep.json()
10
- // Scan pages for marker and apply style to that range on the text element
11
- const presRes = await integration.fetch(`/presentations/${encodeURIComponent(presentationId)}`)
12
- const pres = await presRes.json()
13
- let targetObjectId = null
14
- let startIndex = -1
15
- let endIndex = -1
16
- for (const slide of (pres?.slides || [])) {
17
- for (const el of (slide.pageElements || [])) {
18
- const text = el.shape?.text
19
- if (!text)
20
- continue
21
- for (const pe of (text.textElements || [])) {
22
- const t = pe.textRun?.content
23
- if (!t)
24
- continue
25
- const idx = t.indexOf(marker)
26
- if (idx >= 0) {
27
- targetObjectId = el.objectId
28
- startIndex = (pe.startIndex || 0) + idx
29
- endIndex = startIndex + marker.length
30
- break
31
- }
32
- }
33
- if (targetObjectId)
34
- break
35
- }
36
- if (targetObjectId)
37
- break
38
- }
39
- if (!targetObjectId)
40
- return { presentationId, applied: false, replies: [] }
41
- const requests = [
42
- { updateTextStyle: { objectId: targetObjectId, style: textStyle, textRange: { type: 'FIXED_RANGE', startIndex, endIndex }, fields: fields || Object.keys(textStyle || {}).join(',') } },
43
- { replaceAllText: { containsText: { text: marker, matchCase: true }, replaceText: findText } },
44
- ]
45
- const res = await integration.fetch(`/presentations/${encodeURIComponent(presentationId)}:batchUpdate`, { method: 'POST', body: { requests } })
46
- const out = await res.json()
47
- return out?.presentationId ? { ...out, applied: true } : { presentationId, applied: true, replies: out?.replies || [] }
48
- }
@@ -1,41 +0,0 @@
1
- {
2
- "name": "google-slides",
3
- "version": "0.1.0",
4
- "tools": [
5
- {
6
- "name": "get_presentation",
7
- "description": "Retrieve presentation metadata, including slides/pages and elements.",
8
- "inputSchema": "schemas/get_presentation.json",
9
- "handler": "handlers/get_presentation.js",
10
- "scope": "read"
11
- },
12
- {
13
- "name": "get_page_thumbnail",
14
- "description": "Get a thumbnail image for a page (slide) in a presentation.",
15
- "inputSchema": "schemas/get_page_thumbnail.json",
16
- "handler": "handlers/get_page_thumbnail.js",
17
- "scope": "read"
18
- },
19
- {
20
- "name": "create_presentation",
21
- "description": "Create a new presentation with optional initial title.",
22
- "inputSchema": "schemas/create_presentation.json",
23
- "handler": "handlers/create_presentation.js",
24
- "scope": "write"
25
- },
26
- {
27
- "name": "batch_update",
28
- "description": "Send a batchUpdate request to modify presentation structure and content.",
29
- "inputSchema": "schemas/batch_update.json",
30
- "handler": "handlers/batch_update.js",
31
- "scope": "write"
32
- },
33
- { "name": "append_text_to_title_of_slide_index", "description": "Append text to the title shape of the specified slide (slideIndex, default 0).", "inputSchema": "schemas/append_text_to_title_of_first_slide.json", "handler": "handlers/append_text_to_title_of_first_slide.js", "scope": "write" },
34
- { "name": "replace_text_first_match", "description": "Replace text for the first match anywhere in the presentation.", "inputSchema": "schemas/replace_text_first_match.json", "handler": "handlers/replace_text_first_match.js", "scope": "write" },
35
- { "name": "style_text_first_match", "description": "Apply text style to the first match of given text.", "inputSchema": "schemas/style_text_first_match.json", "handler": "handlers/style_text_first_match.js", "scope": "write" },
36
- { "name": "insert_shape_after_first_match", "description": "Insert a rectangle shape near the first match of text on a slide.", "inputSchema": "schemas/insert_shape_after_first_match.json", "handler": "handlers/insert_shape_after_first_match.js", "scope": "write" },
37
- { "name": "insert_image_after_first_match", "description": "Insert an image near the first match of text on a slide.", "inputSchema": "schemas/insert_image_after_first_match.json", "handler": "handlers/insert_image_after_first_match.js", "scope": "write" },
38
- { "name": "create_slide_after_first_match", "description": "Create a new slide after the slide that contains the first text match.", "inputSchema": "schemas/create_slide_after_first_match.json", "handler": "handlers/create_slide_after_first_match.js", "scope": "write" },
39
- { "name": "set_background_color_for_slide_index", "description": "Set background color for a slide by index.", "inputSchema": "schemas/set_background_color_for_slide_index.json", "handler": "handlers/set_background_color_for_slide_index.js", "scope": "write" }
40
- ]
41
- }
@@ -1,11 +0,0 @@
1
- {
2
- "$schema": "http://json-schema.org/draft-07/schema#",
3
- "type": "object",
4
- "properties": {
5
- "presentationId": { "type": "string" },
6
- "text": { "type": "string" },
7
- "slideIndex": { "type": "number", "minimum": 0, "description": "Zero-based slide index to target (default 0)." }
8
- },
9
- "required": ["presentationId", "text"],
10
- "additionalProperties": false
11
- }
@@ -1,13 +0,0 @@
1
- {
2
- "$schema": "http://json-schema.org/draft-07/schema#",
3
- "type": "object",
4
- "required": ["presentationId", "requests"],
5
- "properties": {
6
- "presentationId": { "type": "string", "description": "ID of the presentation." },
7
- "requests": { "type": "array", "items": { "type": "object" }, "description": "Array of Slides API requests." },
8
- "writeControl": { "type": "object", "description": "Optional write control object." },
9
- "includePresentationInResponse": { "type": "boolean" },
10
- "responsePageObjectIds": { "type": "array", "items": { "type": "string" } }
11
- },
12
- "additionalProperties": false
13
- }
@@ -1,8 +0,0 @@
1
- {
2
- "$schema": "http://json-schema.org/draft-07/schema#",
3
- "type": "object",
4
- "properties": {
5
- "title": { "type": "string", "description": "Optional title for the new presentation." }
6
- },
7
- "additionalProperties": false
8
- }
@@ -1,11 +0,0 @@
1
- {
2
- "$schema": "http://json-schema.org/draft-07/schema#",
3
- "type": "object",
4
- "properties": {
5
- "presentationId": { "type": "string" },
6
- "findText": { "type": "string" },
7
- "layout": { "type": "string", "default": "BLANK" }
8
- },
9
- "required": ["presentationId", "findText"],
10
- "additionalProperties": false
11
- }
@@ -1,12 +0,0 @@
1
- {
2
- "$schema": "http://json-schema.org/draft-07/schema#",
3
- "type": "object",
4
- "required": ["presentationId", "pageObjectId"],
5
- "properties": {
6
- "presentationId": { "type": "string", "description": "ID of the presentation." },
7
- "pageObjectId": { "type": "string", "description": "Object ID of the page (slide)." },
8
- "thumbnailProperties.thumbnailSize": { "type": "string", "enum": ["THUMBNAIL_SIZE_UNSPECIFIED", "LARGE", "MEDIUM", "SMALL"], "description": "Requested size hint for the thumbnail." },
9
- "thumbnailProperties.mimeType": { "type": "string", "enum": ["PNG", "JPEG"], "description": "Requested image MIME type." }
10
- },
11
- "additionalProperties": false
12
- }
@@ -1,9 +0,0 @@
1
- {
2
- "$schema": "http://json-schema.org/draft-07/schema#",
3
- "type": "object",
4
- "required": ["presentationId"],
5
- "properties": {
6
- "presentationId": { "type": "string", "description": "ID of the presentation." }
7
- },
8
- "additionalProperties": false
9
- }
@@ -1,13 +0,0 @@
1
- {
2
- "$schema": "http://json-schema.org/draft-07/schema#",
3
- "type": "object",
4
- "properties": {
5
- "presentationId": { "type": "string" },
6
- "findText": { "type": "string" },
7
- "uri": { "type": "string" },
8
- "width": { "type": "number", "default": 2000000 },
9
- "height": { "type": "number", "default": 2000000 }
10
- },
11
- "required": ["presentationId", "findText", "uri"],
12
- "additionalProperties": false
13
- }
@@ -1,13 +0,0 @@
1
- {
2
- "$schema": "http://json-schema.org/draft-07/schema#",
3
- "type": "object",
4
- "properties": {
5
- "presentationId": { "type": "string" },
6
- "findText": { "type": "string" },
7
- "shapeType": { "type": "string", "default": "RECTANGLE" },
8
- "width": { "type": "number", "default": 2000000 },
9
- "height": { "type": "number", "default": 1000000 }
10
- },
11
- "required": ["presentationId", "findText"],
12
- "additionalProperties": false
13
- }
@@ -1,12 +0,0 @@
1
- {
2
- "$schema": "http://json-schema.org/draft-07/schema#",
3
- "type": "object",
4
- "properties": {
5
- "presentationId": { "type": "string" },
6
- "findText": { "type": "string" },
7
- "replaceText": { "type": "string" },
8
- "matchCase": { "type": "boolean" }
9
- },
10
- "required": ["presentationId", "findText", "replaceText"],
11
- "additionalProperties": false
12
- }
@@ -1,11 +0,0 @@
1
- {
2
- "$schema": "http://json-schema.org/draft-07/schema#",
3
- "type": "object",
4
- "properties": {
5
- "presentationId": { "type": "string" },
6
- "slideIndex": { "type": "number", "minimum": 0 },
7
- "rgbColor": { "type": "object", "properties": { "red": { "type": "number" }, "green": { "type": "number" }, "blue": { "type": "number" } }, "required": ["red", "green", "blue"] }
8
- },
9
- "required": ["presentationId", "slideIndex", "rgbColor"],
10
- "additionalProperties": false
11
- }
@@ -1,12 +0,0 @@
1
- {
2
- "$schema": "http://json-schema.org/draft-07/schema#",
3
- "type": "object",
4
- "properties": {
5
- "presentationId": { "type": "string" },
6
- "findText": { "type": "string" },
7
- "textStyle": { "type": "object" },
8
- "fields": { "type": "string" }
9
- },
10
- "required": ["presentationId", "findText", "textStyle"],
11
- "additionalProperties": false
12
- }
@@ -1,41 +0,0 @@
1
- ## Task
2
-
3
- Write a new integration-data folder for `<INTEGRATION_NAME>`.
4
-
5
- ## Required structure
6
-
7
- Create `commandable-mcp/packages/server/integration-data/<name>/` containing:
8
-
9
- - `manifest.json`: flat `tools[]`; each tool has `name`, `description`, `inputSchema` (relative path), `handler` (relative path), `scope` (`read` | `write` | optionally `admin`)
10
- - `schemas/*.json`: JSON Schema for each tool input. Prefer `additionalProperties: false` for strict contracts; use `true` only for pass-through bodies (common in Google APIs). Reuse `empty.json` for no-arg tools.
11
- - `handlers/*.js`: async arrow functions `async (input) => { ... }` using `integration.fetch(path, init?)` for all HTTP calls. Pass `body` as a plain object (proxy will JSON-stringify). Return parsed JSON.
12
- - `credentials.json`: `{ schema, injection }` where `schema` is JSON Schema for secrets and `injection` is `headers` and/or `query` templates using `{{placeholder}}`
13
- - `credentials_hint.md`: **numbered steps** (1., 2., 3., …) telling a user exactly how to obtain/provide credentials
14
- - `prompt.md` (optional): extra LLM guidance only if the API has non-obvious usage patterns
15
-
16
- Also register the provider in `src/integrations/providerRegistry.ts` with its base URL and auth factory.
17
-
18
- ## Tool design goals
19
-
20
- - **Default**: small, composable tools that mirror API resources.
21
- - **Read tools**: side-effect free (GET only).
22
- - **Write tools**: POST/PUT/PATCH/DELETE where appropriate.
23
- - **Coverage**: start with core CRUD + list/search + get-by-id; add convenience tools after.
24
-
25
- ## When to go beyond REST proxying
26
-
27
- Most handlers should be thin proxies (fetch → return JSON). Only add multi-step/orchestrating handlers when the raw API is genuinely hard for an LLM to use correctly, e.g.:
28
-
29
- - multi-step workflows (GitHub tree → blob → commit → ref)
30
- - required transforms (e.g. base64 encoding) that the caller shouldn’t manage
31
- - awkward addressing that benefits from higher-level helpers (“find text then act” patterns like Docs/Slides)
32
-
33
- If an endpoint is already clean and self-contained, just proxy it.
34
-
35
- ## Reference examples (follow exactly)
36
-
37
- - `github/`: simple proxies + complex orchestration (`create_commit.js`)
38
- - `notion/`: clean proxying + optional `prompt.md`
39
- - `google-calendar/`: query param building + `read`/`write`/`admin` scopes
40
- - `trello/`: query-param credential injection + `displayCards`
41
- - `google-docs/`, `google-slides/`: higher-level write helpers over batchUpdate APIs
@@ -1,21 +0,0 @@
1
- {
2
- "schema": {
3
- "type": "object",
4
- "properties": {
5
- "token": {
6
- "type": "string",
7
- "title": "Internal Integration Token",
8
- "description": "Notion internal integration token (starts with \"secret_\")."
9
- }
10
- },
11
- "required": ["token"],
12
- "additionalProperties": false
13
- },
14
- "injection": {
15
- "headers": {
16
- "Authorization": "Bearer {{token}}",
17
- "Notion-Version": "2022-06-28"
18
- }
19
- }
20
- }
21
-
@@ -1,5 +0,0 @@
1
- 1. Go to `https://www.notion.so/profile/integrations/internal`
2
- 2. Create a Notion integration in Notion’s developer settings
3
- 3. Share your target pages/databases with that integration so it has access
4
- 4. Copy the **Internal Integration Token** (usually starts with `secret_`)
5
-
@@ -1,7 +0,0 @@
1
- async (input) => {
2
- const res = await integration.fetch(`/blocks/${encodeURIComponent(input.block_id)}/children`, {
3
- method: 'PATCH',
4
- body: { children: input.children },
5
- })
6
- return await res.json()
7
- }
@@ -1,10 +0,0 @@
1
- async (input) => {
2
- const res = await integration.fetch(`/comments`, {
3
- method: 'POST',
4
- body: {
5
- parent: input.parent,
6
- rich_text: input.rich_text,
7
- },
8
- })
9
- return await res.json()
10
- }
@@ -1,11 +0,0 @@
1
- async (input) => {
2
- const res = await integration.fetch(`/databases`, {
3
- method: 'POST',
4
- body: {
5
- parent: input.parent,
6
- title: input.title,
7
- properties: input.properties,
8
- },
9
- })
10
- return await res.json()
11
- }
@@ -1,13 +0,0 @@
1
- async (input) => {
2
- const res = await integration.fetch(`/pages`, {
3
- method: 'POST',
4
- body: {
5
- parent: input.parent,
6
- properties: input.properties,
7
- children: input.children || undefined,
8
- icon: input.icon || undefined,
9
- cover: input.cover || undefined,
10
- },
11
- })
12
- return await res.json()
13
- }
@@ -1,8 +0,0 @@
1
- async (input) => {
2
- // Notion 'delete' is archive block
3
- const res = await integration.fetch(`/blocks/${encodeURIComponent(input.block_id)}`, {
4
- method: 'PATCH',
5
- body: { archived: true },
6
- })
7
- return await res.json()
8
- }
@@ -1,4 +0,0 @@
1
- async (input) => {
2
- const res = await integration.fetch(`/users/me`)
3
- return await res.json()
4
- }
@@ -1,10 +0,0 @@
1
- async (input) => {
2
- const params = new URLSearchParams()
3
- if (input.start_cursor)
4
- params.set('start_cursor', input.start_cursor)
5
- if (input.page_size)
6
- params.set('page_size', String(input.page_size))
7
- const qs = params.toString()
8
- const res = await integration.fetch(`/blocks/${encodeURIComponent(input.block_id)}/children${qs ? `?${qs}` : ''}`)
9
- return await res.json()
10
- }
@@ -1,14 +0,0 @@
1
- async (input) => {
2
- const params = new URLSearchParams()
3
- if (input.block_id)
4
- params.set('block_id', input.block_id)
5
- if (input.discussion_id)
6
- params.set('discussion_id', input.discussion_id)
7
- if (input.start_cursor)
8
- params.set('start_cursor', input.start_cursor)
9
- if (input.page_size)
10
- params.set('page_size', String(input.page_size))
11
- const qs = params.toString()
12
- const res = await integration.fetch(`/comments${qs ? `?${qs}` : ''}`)
13
- return await res.json()
14
- }
@@ -1,10 +0,0 @@
1
- async (input) => {
2
- const params = new URLSearchParams()
3
- if (input.start_cursor)
4
- params.set('start_cursor', input.start_cursor)
5
- if (input.page_size)
6
- params.set('page_size', String(input.page_size))
7
- const qs = params.toString()
8
- const res = await integration.fetch(`/users${qs ? `?${qs}` : ''}`)
9
- return await res.json()
10
- }
@@ -1,10 +0,0 @@
1
- async (input) => {
2
- const body = {
3
- filter: input.filter || undefined,
4
- sorts: input.sorts || undefined,
5
- start_cursor: input.start_cursor || undefined,
6
- page_size: input.page_size || undefined,
7
- }
8
- const res = await integration.fetch(`/databases/${encodeURIComponent(input.database_id)}/query`, { method: 'POST', body })
9
- return await res.json()
10
- }
@@ -1,4 +0,0 @@
1
- async (input) => {
2
- const res = await integration.fetch(`/blocks/${encodeURIComponent(input.block_id)}`)
3
- return await res.json()
4
- }
@@ -1,4 +0,0 @@
1
- async (input) => {
2
- const res = await integration.fetch(`/databases/${encodeURIComponent(input.database_id)}`)
3
- return await res.json()
4
- }
@@ -1,4 +0,0 @@
1
- async (input) => {
2
- const res = await integration.fetch(`/pages/${encodeURIComponent(input.page_id)}`)
3
- return await res.json()
4
- }
@@ -1,10 +0,0 @@
1
- async (input) => {
2
- const params = new URLSearchParams()
3
- if (input.start_cursor)
4
- params.set('start_cursor', input.start_cursor)
5
- if (input.page_size)
6
- params.set('page_size', String(input.page_size))
7
- const qs = params.toString()
8
- const res = await integration.fetch(`/pages/${encodeURIComponent(input.page_id)}/properties/${encodeURIComponent(input.property_id)}${qs ? `?${qs}` : ''}`)
9
- return await res.json()
10
- }
@@ -1,4 +0,0 @@
1
- async (input) => {
2
- const res = await integration.fetch(`/users/${encodeURIComponent(input.user_id)}`)
3
- return await res.json()
4
- }
@@ -1,11 +0,0 @@
1
- async (input) => {
2
- const body = {
3
- query: input.query || '',
4
- filter: input.filter || undefined,
5
- sort: input.sort || undefined,
6
- start_cursor: input.start_cursor || undefined,
7
- page_size: input.page_size || undefined,
8
- }
9
- const res = await integration.fetch(`/search`, { method: 'POST', body })
10
- return await res.json()
11
- }
@@ -1,7 +0,0 @@
1
- async (input) => {
2
- const res = await integration.fetch(`/blocks/${encodeURIComponent(input.block_id)}`, {
3
- method: 'PATCH',
4
- body: input.body || {},
5
- })
6
- return await res.json()
7
- }
@@ -1,10 +0,0 @@
1
- async (input) => {
2
- const body = {
3
- title: input.title || undefined,
4
- description: input.description || undefined,
5
- properties: input.properties || undefined,
6
- archived: input.archived === undefined ? undefined : input.archived,
7
- }
8
- const res = await integration.fetch(`/databases/${encodeURIComponent(input.database_id)}`, { method: 'PATCH', body })
9
- return await res.json()
10
- }
@@ -1,10 +0,0 @@
1
- async (input) => {
2
- const body = {
3
- properties: input.properties,
4
- archived: input.archived === undefined ? undefined : input.archived,
5
- icon: input.icon || undefined,
6
- cover: input.cover || undefined,
7
- }
8
- const res = await integration.fetch(`/pages/${encodeURIComponent(input.page_id)}`, { method: 'PATCH', body })
9
- return await res.json()
10
- }