integrate-sdk 0.9.30-dev.2 → 0.9.42-dev.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (290) hide show
  1. package/dist/adapters/auto-routes.js +220 -0
  2. package/dist/adapters/base-handler.js +220 -0
  3. package/dist/adapters/index.js +407 -82
  4. package/dist/adapters/nextjs.js +220 -0
  5. package/dist/adapters/solid-start.js +407 -82
  6. package/dist/adapters/svelte-kit.js +407 -82
  7. package/dist/index.d.ts +1 -1
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +3364 -490
  10. package/dist/oauth.js +220 -0
  11. package/dist/server.js +3434 -406
  12. package/dist/src/client.d.ts +58 -1
  13. package/dist/src/client.d.ts.map +1 -1
  14. package/dist/src/index.d.ts +118 -0
  15. package/dist/src/index.d.ts.map +1 -1
  16. package/dist/src/integrations/alpaca-client.d.ts +64 -0
  17. package/dist/src/integrations/alpaca-client.d.ts.map +1 -0
  18. package/dist/src/integrations/alpaca.d.ts +22 -0
  19. package/dist/src/integrations/alpaca.d.ts.map +1 -0
  20. package/dist/src/integrations/astronomer-client.d.ts +80 -0
  21. package/dist/src/integrations/astronomer-client.d.ts.map +1 -0
  22. package/dist/src/integrations/astronomer.d.ts +14 -0
  23. package/dist/src/integrations/astronomer.d.ts.map +1 -0
  24. package/dist/src/integrations/attio-client.d.ts +17 -0
  25. package/dist/src/integrations/attio-client.d.ts.map +1 -0
  26. package/dist/src/integrations/attio.d.ts +15 -0
  27. package/dist/src/integrations/attio.d.ts.map +1 -0
  28. package/dist/src/integrations/auth0-client.d.ts +55 -0
  29. package/dist/src/integrations/auth0-client.d.ts.map +1 -0
  30. package/dist/src/integrations/auth0.d.ts +22 -0
  31. package/dist/src/integrations/auth0.d.ts.map +1 -0
  32. package/dist/src/integrations/aws-client.d.ts +26 -0
  33. package/dist/src/integrations/aws-client.d.ts.map +1 -0
  34. package/dist/src/integrations/aws.d.ts +28 -0
  35. package/dist/src/integrations/aws.d.ts.map +1 -0
  36. package/dist/src/integrations/betterstack-client.d.ts +62 -0
  37. package/dist/src/integrations/betterstack-client.d.ts.map +1 -0
  38. package/dist/src/integrations/betterstack.d.ts +14 -0
  39. package/dist/src/integrations/betterstack.d.ts.map +1 -0
  40. package/dist/src/integrations/binance-client.d.ts +54 -0
  41. package/dist/src/integrations/binance-client.d.ts.map +1 -0
  42. package/dist/src/integrations/binance.d.ts +22 -0
  43. package/dist/src/integrations/binance.d.ts.map +1 -0
  44. package/dist/src/integrations/canva-client.d.ts +70 -0
  45. package/dist/src/integrations/canva-client.d.ts.map +1 -0
  46. package/dist/src/integrations/canva.d.ts +20 -0
  47. package/dist/src/integrations/canva.d.ts.map +1 -0
  48. package/dist/src/integrations/clerk-client.d.ts +66 -0
  49. package/dist/src/integrations/clerk-client.d.ts.map +1 -0
  50. package/dist/src/integrations/clerk.d.ts +14 -0
  51. package/dist/src/integrations/clerk.d.ts.map +1 -0
  52. package/dist/src/integrations/clickup-client.d.ts +5 -0
  53. package/dist/src/integrations/clickup-client.d.ts.map +1 -0
  54. package/dist/src/integrations/clickup.d.ts +13 -0
  55. package/dist/src/integrations/clickup.d.ts.map +1 -0
  56. package/dist/src/integrations/cloudflare-client.d.ts +69 -0
  57. package/dist/src/integrations/cloudflare-client.d.ts.map +1 -0
  58. package/dist/src/integrations/cloudflare.d.ts +23 -0
  59. package/dist/src/integrations/cloudflare.d.ts.map +1 -0
  60. package/dist/src/integrations/convex-client.d.ts +21 -0
  61. package/dist/src/integrations/convex-client.d.ts.map +1 -0
  62. package/dist/src/integrations/convex.d.ts +9 -0
  63. package/dist/src/integrations/convex.d.ts.map +1 -0
  64. package/dist/src/integrations/databricks-client.d.ts +40 -0
  65. package/dist/src/integrations/databricks-client.d.ts.map +1 -0
  66. package/dist/src/integrations/databricks.d.ts +27 -0
  67. package/dist/src/integrations/databricks.d.ts.map +1 -0
  68. package/dist/src/integrations/datadog-client.d.ts +9 -0
  69. package/dist/src/integrations/datadog-client.d.ts.map +1 -0
  70. package/dist/src/integrations/datadog.d.ts +30 -0
  71. package/dist/src/integrations/datadog.d.ts.map +1 -0
  72. package/dist/src/integrations/discord-client.d.ts +44 -0
  73. package/dist/src/integrations/discord-client.d.ts.map +1 -0
  74. package/dist/src/integrations/discord.d.ts +19 -0
  75. package/dist/src/integrations/discord.d.ts.map +1 -0
  76. package/dist/src/integrations/etoro-client.d.ts +10 -0
  77. package/dist/src/integrations/etoro-client.d.ts.map +1 -0
  78. package/dist/src/integrations/etoro.d.ts +10 -0
  79. package/dist/src/integrations/etoro.d.ts.map +1 -0
  80. package/dist/src/integrations/excel.d.ts +1 -1
  81. package/dist/src/integrations/facebook-client.d.ts +61 -0
  82. package/dist/src/integrations/facebook-client.d.ts.map +1 -0
  83. package/dist/src/integrations/facebook.d.ts +22 -0
  84. package/dist/src/integrations/facebook.d.ts.map +1 -0
  85. package/dist/src/integrations/ga4-client.d.ts +9 -0
  86. package/dist/src/integrations/ga4-client.d.ts.map +1 -0
  87. package/dist/src/integrations/ga4.d.ts +13 -0
  88. package/dist/src/integrations/ga4.d.ts.map +1 -0
  89. package/dist/src/integrations/gcal-client.d.ts +6 -0
  90. package/dist/src/integrations/gcal-client.d.ts.map +1 -1
  91. package/dist/src/integrations/gcal.d.ts +1 -1
  92. package/dist/src/integrations/gcal.d.ts.map +1 -1
  93. package/dist/src/integrations/gchat-client.d.ts +12 -0
  94. package/dist/src/integrations/gchat-client.d.ts.map +1 -0
  95. package/dist/src/integrations/gchat.d.ts +15 -0
  96. package/dist/src/integrations/gchat.d.ts.map +1 -0
  97. package/dist/src/integrations/gcontacts-client.d.ts +14 -0
  98. package/dist/src/integrations/gcontacts-client.d.ts.map +1 -0
  99. package/dist/src/integrations/gcontacts.d.ts +22 -0
  100. package/dist/src/integrations/gcontacts.d.ts.map +1 -0
  101. package/dist/src/integrations/gdocs-client.d.ts +22 -0
  102. package/dist/src/integrations/gdocs-client.d.ts.map +1 -1
  103. package/dist/src/integrations/gdocs.d.ts +1 -1
  104. package/dist/src/integrations/gdocs.d.ts.map +1 -1
  105. package/dist/src/integrations/gdrive.d.ts +1 -1
  106. package/dist/src/integrations/github-client.d.ts +4 -0
  107. package/dist/src/integrations/github-client.d.ts.map +1 -1
  108. package/dist/src/integrations/github.d.ts +1 -1
  109. package/dist/src/integrations/github.d.ts.map +1 -1
  110. package/dist/src/integrations/gitlab-client.d.ts +5 -0
  111. package/dist/src/integrations/gitlab-client.d.ts.map +1 -0
  112. package/dist/src/integrations/gitlab.d.ts +20 -0
  113. package/dist/src/integrations/gitlab.d.ts.map +1 -0
  114. package/dist/src/integrations/gmail-client.d.ts +18 -0
  115. package/dist/src/integrations/gmail-client.d.ts.map +1 -1
  116. package/dist/src/integrations/gmail.d.ts +1 -1
  117. package/dist/src/integrations/gmail.d.ts.map +1 -1
  118. package/dist/src/integrations/gmeet-client.d.ts +10 -0
  119. package/dist/src/integrations/gmeet-client.d.ts.map +1 -0
  120. package/dist/src/integrations/gmeet.d.ts +19 -0
  121. package/dist/src/integrations/gmeet.d.ts.map +1 -0
  122. package/dist/src/integrations/gsheets-client.d.ts +10 -0
  123. package/dist/src/integrations/gsheets-client.d.ts.map +1 -1
  124. package/dist/src/integrations/gsheets.d.ts +1 -1
  125. package/dist/src/integrations/gsheets.d.ts.map +1 -1
  126. package/dist/src/integrations/gslides-client.d.ts +8 -0
  127. package/dist/src/integrations/gslides-client.d.ts.map +1 -1
  128. package/dist/src/integrations/gslides.d.ts +1 -1
  129. package/dist/src/integrations/gslides.d.ts.map +1 -1
  130. package/dist/src/integrations/gtasks-client.d.ts +16 -0
  131. package/dist/src/integrations/gtasks-client.d.ts.map +1 -0
  132. package/dist/src/integrations/gtasks.d.ts +22 -0
  133. package/dist/src/integrations/gtasks.d.ts.map +1 -0
  134. package/dist/src/integrations/instagram-client.d.ts +74 -0
  135. package/dist/src/integrations/instagram-client.d.ts.map +1 -0
  136. package/dist/src/integrations/instagram.d.ts +24 -0
  137. package/dist/src/integrations/instagram.d.ts.map +1 -0
  138. package/dist/src/integrations/jira-client.d.ts +146 -0
  139. package/dist/src/integrations/jira-client.d.ts.map +1 -0
  140. package/dist/src/integrations/jira.d.ts +22 -0
  141. package/dist/src/integrations/jira.d.ts.map +1 -0
  142. package/dist/src/integrations/library-metadata.d.ts.map +1 -1
  143. package/dist/src/integrations/linkedin-client.d.ts +6 -0
  144. package/dist/src/integrations/linkedin-client.d.ts.map +1 -0
  145. package/dist/src/integrations/linkedin.d.ts +15 -0
  146. package/dist/src/integrations/linkedin.d.ts.map +1 -0
  147. package/dist/src/integrations/mailchimp-client.d.ts +5 -0
  148. package/dist/src/integrations/mailchimp-client.d.ts.map +1 -0
  149. package/dist/src/integrations/mailchimp.d.ts +13 -0
  150. package/dist/src/integrations/mailchimp.d.ts.map +1 -0
  151. package/dist/src/integrations/monday-client.d.ts +44 -0
  152. package/dist/src/integrations/monday-client.d.ts.map +1 -0
  153. package/dist/src/integrations/monday.d.ts +19 -0
  154. package/dist/src/integrations/monday.d.ts.map +1 -0
  155. package/dist/src/integrations/neon-client.d.ts +89 -0
  156. package/dist/src/integrations/neon-client.d.ts.map +1 -0
  157. package/dist/src/integrations/neon.d.ts +13 -0
  158. package/dist/src/integrations/neon.d.ts.map +1 -0
  159. package/dist/src/integrations/onedrive-client.d.ts +16 -0
  160. package/dist/src/integrations/onedrive-client.d.ts.map +1 -1
  161. package/dist/src/integrations/onedrive.d.ts +1 -1
  162. package/dist/src/integrations/onedrive.d.ts.map +1 -1
  163. package/dist/src/integrations/outlook.d.ts +1 -1
  164. package/dist/src/integrations/outlook.d.ts.map +1 -1
  165. package/dist/src/integrations/paper-client.d.ts +24 -0
  166. package/dist/src/integrations/paper-client.d.ts.map +1 -0
  167. package/dist/src/integrations/paper.d.ts +22 -0
  168. package/dist/src/integrations/paper.d.ts.map +1 -0
  169. package/dist/src/integrations/phantom-client.d.ts +9 -0
  170. package/dist/src/integrations/phantom-client.d.ts.map +1 -0
  171. package/dist/src/integrations/phantom.d.ts +13 -0
  172. package/dist/src/integrations/phantom.d.ts.map +1 -0
  173. package/dist/src/integrations/planetscale-client.d.ts +5 -0
  174. package/dist/src/integrations/planetscale-client.d.ts.map +1 -0
  175. package/dist/src/integrations/planetscale.d.ts +14 -0
  176. package/dist/src/integrations/planetscale.d.ts.map +1 -0
  177. package/dist/src/integrations/planner-client.d.ts +17 -0
  178. package/dist/src/integrations/planner-client.d.ts.map +1 -0
  179. package/dist/src/integrations/planner.d.ts +13 -0
  180. package/dist/src/integrations/planner.d.ts.map +1 -0
  181. package/dist/src/integrations/postman-client.d.ts +34 -0
  182. package/dist/src/integrations/postman-client.d.ts.map +1 -0
  183. package/dist/src/integrations/postman.d.ts +14 -0
  184. package/dist/src/integrations/postman.d.ts.map +1 -0
  185. package/dist/src/integrations/powerpoint-client.d.ts +8 -0
  186. package/dist/src/integrations/powerpoint-client.d.ts.map +1 -1
  187. package/dist/src/integrations/powerpoint.d.ts +1 -1
  188. package/dist/src/integrations/powerpoint.d.ts.map +1 -1
  189. package/dist/src/integrations/reddit-client.d.ts +5 -0
  190. package/dist/src/integrations/reddit-client.d.ts.map +1 -0
  191. package/dist/src/integrations/reddit.d.ts +13 -0
  192. package/dist/src/integrations/reddit.d.ts.map +1 -0
  193. package/dist/src/integrations/redis-client.d.ts +67 -0
  194. package/dist/src/integrations/redis-client.d.ts.map +1 -0
  195. package/dist/src/integrations/redis.d.ts +18 -0
  196. package/dist/src/integrations/redis.d.ts.map +1 -0
  197. package/dist/src/integrations/resend-client.d.ts +5 -0
  198. package/dist/src/integrations/resend-client.d.ts.map +1 -0
  199. package/dist/src/integrations/resend.d.ts +9 -0
  200. package/dist/src/integrations/resend.d.ts.map +1 -0
  201. package/dist/src/integrations/salesforce-client.d.ts +43 -0
  202. package/dist/src/integrations/salesforce-client.d.ts.map +1 -0
  203. package/dist/src/integrations/salesforce.d.ts +25 -0
  204. package/dist/src/integrations/salesforce.d.ts.map +1 -0
  205. package/dist/src/integrations/sharepoint-client.d.ts +15 -0
  206. package/dist/src/integrations/sharepoint-client.d.ts.map +1 -0
  207. package/dist/src/integrations/sharepoint.d.ts +15 -0
  208. package/dist/src/integrations/sharepoint.d.ts.map +1 -0
  209. package/dist/src/integrations/shopify-client.d.ts +31 -0
  210. package/dist/src/integrations/shopify-client.d.ts.map +1 -0
  211. package/dist/src/integrations/shopify.d.ts +16 -0
  212. package/dist/src/integrations/shopify.d.ts.map +1 -0
  213. package/dist/src/integrations/stripe-client.d.ts +12 -0
  214. package/dist/src/integrations/stripe-client.d.ts.map +1 -1
  215. package/dist/src/integrations/stripe.d.ts +1 -1
  216. package/dist/src/integrations/stripe.d.ts.map +1 -1
  217. package/dist/src/integrations/supabase-client.d.ts +63 -0
  218. package/dist/src/integrations/supabase-client.d.ts.map +1 -0
  219. package/dist/src/integrations/supabase.d.ts +26 -0
  220. package/dist/src/integrations/supabase.d.ts.map +1 -0
  221. package/dist/src/integrations/teams-client.d.ts +16 -0
  222. package/dist/src/integrations/teams-client.d.ts.map +1 -0
  223. package/dist/src/integrations/teams.d.ts +24 -0
  224. package/dist/src/integrations/teams.d.ts.map +1 -0
  225. package/dist/src/integrations/threads-client.d.ts +16 -0
  226. package/dist/src/integrations/threads-client.d.ts.map +1 -0
  227. package/dist/src/integrations/threads.d.ts +15 -0
  228. package/dist/src/integrations/threads.d.ts.map +1 -0
  229. package/dist/src/integrations/tiktok-client.d.ts +7 -0
  230. package/dist/src/integrations/tiktok-client.d.ts.map +1 -0
  231. package/dist/src/integrations/tiktok.d.ts +15 -0
  232. package/dist/src/integrations/tiktok.d.ts.map +1 -0
  233. package/dist/src/integrations/tldraw-client.d.ts +5 -0
  234. package/dist/src/integrations/tldraw-client.d.ts.map +1 -0
  235. package/dist/src/integrations/tldraw.d.ts +9 -0
  236. package/dist/src/integrations/tldraw.d.ts.map +1 -0
  237. package/dist/src/integrations/trello-client.d.ts +16 -0
  238. package/dist/src/integrations/trello-client.d.ts.map +1 -0
  239. package/dist/src/integrations/trello.d.ts +10 -0
  240. package/dist/src/integrations/trello.d.ts.map +1 -0
  241. package/dist/src/integrations/typeform-client.d.ts +13 -0
  242. package/dist/src/integrations/typeform-client.d.ts.map +1 -0
  243. package/dist/src/integrations/typeform.d.ts +15 -0
  244. package/dist/src/integrations/typeform.d.ts.map +1 -0
  245. package/dist/src/integrations/upstash-client.d.ts +28 -0
  246. package/dist/src/integrations/upstash-client.d.ts.map +1 -0
  247. package/dist/src/integrations/upstash.d.ts +18 -0
  248. package/dist/src/integrations/upstash.d.ts.map +1 -0
  249. package/dist/src/integrations/webflow-client.d.ts +78 -0
  250. package/dist/src/integrations/webflow-client.d.ts.map +1 -0
  251. package/dist/src/integrations/webflow.d.ts +20 -0
  252. package/dist/src/integrations/webflow.d.ts.map +1 -0
  253. package/dist/src/integrations/whatsapp-client.d.ts +22 -0
  254. package/dist/src/integrations/whatsapp-client.d.ts.map +1 -1
  255. package/dist/src/integrations/whatsapp.d.ts +1 -1
  256. package/dist/src/integrations/whatsapp.d.ts.map +1 -1
  257. package/dist/src/integrations/wix-client.d.ts +27 -0
  258. package/dist/src/integrations/wix-client.d.ts.map +1 -0
  259. package/dist/src/integrations/wix.d.ts +16 -0
  260. package/dist/src/integrations/wix.d.ts.map +1 -0
  261. package/dist/src/integrations/word-client.d.ts +8 -0
  262. package/dist/src/integrations/word-client.d.ts.map +1 -1
  263. package/dist/src/integrations/word.d.ts +1 -1
  264. package/dist/src/integrations/word.d.ts.map +1 -1
  265. package/dist/src/integrations/workday-client.d.ts +18 -0
  266. package/dist/src/integrations/workday-client.d.ts.map +1 -0
  267. package/dist/src/integrations/workday.d.ts +24 -0
  268. package/dist/src/integrations/workday.d.ts.map +1 -0
  269. package/dist/src/integrations/workos-client.d.ts +75 -0
  270. package/dist/src/integrations/workos-client.d.ts.map +1 -0
  271. package/dist/src/integrations/workos.d.ts +14 -0
  272. package/dist/src/integrations/workos.d.ts.map +1 -0
  273. package/dist/src/integrations/xero-client.d.ts +14 -0
  274. package/dist/src/integrations/xero-client.d.ts.map +1 -0
  275. package/dist/src/integrations/xero.d.ts +15 -0
  276. package/dist/src/integrations/xero.d.ts.map +1 -0
  277. package/dist/src/integrations/youtube.d.ts +1 -1
  278. package/dist/src/integrations/youtube.d.ts.map +1 -1
  279. package/dist/src/integrations/zapier-client.d.ts +41 -0
  280. package/dist/src/integrations/zapier-client.d.ts.map +1 -0
  281. package/dist/src/integrations/zapier.d.ts +20 -0
  282. package/dist/src/integrations/zapier.d.ts.map +1 -0
  283. package/dist/src/integrations/zoom-client.d.ts +42 -0
  284. package/dist/src/integrations/zoom-client.d.ts.map +1 -0
  285. package/dist/src/integrations/zoom.d.ts +23 -0
  286. package/dist/src/integrations/zoom.d.ts.map +1 -0
  287. package/dist/src/server.d.ts +57 -0
  288. package/dist/src/server.d.ts.map +1 -1
  289. package/index.ts +54 -0
  290. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -818,18 +818,42 @@ var INTEGRATION_LIBRARY_METADATA = {
818
818
  description: "Manage Airtable bases, tables, and records",
819
819
  category: "Business"
820
820
  },
821
+ aws: {
822
+ description: "Inspect AWS accounts and resources with SigV4 (control-plane APIs)",
823
+ category: "Infrastructure"
824
+ },
825
+ attio: {
826
+ description: "Manage Attio people, companies, tasks, and CRM records",
827
+ category: "Business"
828
+ },
821
829
  calcom: {
822
830
  description: "Manage Cal.com bookings and schedules",
823
831
  category: "Business"
824
832
  },
833
+ canva: {
834
+ description: "List and create Canva designs, manage folders, and export assets",
835
+ category: "Productivity"
836
+ },
837
+ cloudflare: {
838
+ description: "Manage Cloudflare zones, DNS, CDN cache, and Workers",
839
+ category: "Infrastructure"
840
+ },
825
841
  cursor: {
826
842
  description: "Manage Cursor Cloud Agents and background tasks",
827
843
  category: "Engineering"
828
844
  },
845
+ databricks: {
846
+ description: "Run Databricks jobs, list clusters and SQL warehouses, and inspect workspace paths",
847
+ category: "Engineering"
848
+ },
829
849
  figma: {
830
850
  description: "Access Figma files, comments, and components",
831
851
  category: "Engineering"
832
852
  },
853
+ facebook: {
854
+ description: "Manage Facebook Page posts, comments, reactions, and insights via the Graph API",
855
+ category: "Social Media"
856
+ },
833
857
  github: {
834
858
  description: "Manage GitHub repos, issues, and pull requests",
835
859
  category: "Engineering"
@@ -842,10 +866,26 @@ var INTEGRATION_LIBRARY_METADATA = {
842
866
  description: "Manage Google Calendar events and schedules",
843
867
  category: "Productivity"
844
868
  },
869
+ gtasks: {
870
+ description: "Manage Google Tasks lists and to-dos",
871
+ category: "Productivity"
872
+ },
873
+ gmeet: {
874
+ description: "Create Google Meet links and manage meeting events via Calendar",
875
+ category: "Communication"
876
+ },
877
+ gcontacts: {
878
+ description: "List, search, create, update, and delete Google Contacts via the People API",
879
+ category: "Communication"
880
+ },
845
881
  hubspot: {
846
882
  description: "Manage HubSpot contacts, deals, and tickets",
847
883
  category: "Business"
848
884
  },
885
+ instagram: {
886
+ description: "Instagram Graph API — media, comments, insights, stories, and publishing",
887
+ category: "Social Media"
888
+ },
849
889
  intercom: {
850
890
  description: "Manage Intercom contacts and conversations",
851
891
  category: "Business"
@@ -862,6 +902,10 @@ var INTEGRATION_LIBRARY_METADATA = {
862
902
  description: "Manage OneDrive files, folders, and sharing",
863
903
  category: "Storage"
864
904
  },
905
+ planner: {
906
+ description: "Manage Microsoft Planner plans, buckets, and tasks",
907
+ category: "Productivity"
908
+ },
865
909
  outlook: {
866
910
  description: "Manage Outlook mail, calendars, and contacts",
867
911
  category: "Communication"
@@ -870,18 +914,38 @@ var INTEGRATION_LIBRARY_METADATA = {
870
914
  description: "Manage Polar products, orders, and subscriptions",
871
915
  category: "Finance"
872
916
  },
917
+ phantom: {
918
+ description: "Build Phantom mobile browse universal links and deeplink provider documentation (Solana)",
919
+ category: "Other"
920
+ },
873
921
  posthog: {
874
922
  description: "Read PostHog organizations, projects, insights, and feature flags",
875
923
  category: "Analytics"
876
924
  },
925
+ postman: {
926
+ description: "Manage Postman workspaces, collections, and environments via the Postman API",
927
+ category: "Engineering"
928
+ },
877
929
  ramp: {
878
930
  description: "Manage Ramp corporate cards, bills, and spend",
879
931
  category: "Business"
880
932
  },
933
+ resend: {
934
+ description: "Send email and manage domains with the Resend API",
935
+ category: "Communication"
936
+ },
937
+ mailchimp: {
938
+ description: "Manage Mailchimp audiences, members, and campaigns",
939
+ category: "Communication"
940
+ },
881
941
  railway: {
882
942
  description: "Manage Railway workspaces, projects, services, deployments, variables, domains, and volumes",
883
943
  category: "Infrastructure"
884
944
  },
945
+ supabase: {
946
+ description: "Manage Supabase organizations, projects, Postgres, API keys, secrets, and branches",
947
+ category: "Infrastructure"
948
+ },
885
949
  sentry: {
886
950
  description: "Monitor Sentry errors, issues, releases, and projects",
887
951
  category: "Engineering"
@@ -890,6 +954,18 @@ var INTEGRATION_LIBRARY_METADATA = {
890
954
  description: "Manage Netlify sites, deploys, builds, and environment variables",
891
955
  category: "Infrastructure"
892
956
  },
957
+ redis: {
958
+ description: "Manage Redis Cloud subscriptions, databases, async tasks, and audit logs",
959
+ category: "Infrastructure"
960
+ },
961
+ upstash: {
962
+ description: "Use Upstash Redis REST, QStash messaging, and related HTTP APIs",
963
+ category: "Infrastructure"
964
+ },
965
+ jira: {
966
+ description: "Manage Jira issues, projects, sprints, and boards",
967
+ category: "Engineering"
968
+ },
893
969
  slack: {
894
970
  description: "Send and manage Slack messages and channels",
895
971
  category: "Communication"
@@ -922,6 +998,10 @@ var INTEGRATION_LIBRARY_METADATA = {
922
998
  description: "Manage Vercel projects, deployments, and domains",
923
999
  category: "Infrastructure"
924
1000
  },
1001
+ workos: {
1002
+ description: "Manage WorkOS organizations, users, directory sync, and AuthKit",
1003
+ category: "Infrastructure"
1004
+ },
925
1005
  whatsapp: {
926
1006
  description: "Send WhatsApp messages and templates",
927
1007
  category: "Communication"
@@ -930,6 +1010,14 @@ var INTEGRATION_LIBRARY_METADATA = {
930
1010
  description: "Search and access YouTube videos and channels",
931
1011
  category: "Social Media"
932
1012
  },
1013
+ zoom: {
1014
+ description: "Manage Zoom user profile and meetings",
1015
+ category: "Communication"
1016
+ },
1017
+ reddit: {
1018
+ description: "Browse subreddits, search posts, submit content, and vote on Reddit",
1019
+ category: "Social Media"
1020
+ },
933
1021
  powerpoint: {
934
1022
  description: "Manage PowerPoint presentations and sharing",
935
1023
  category: "Productivity"
@@ -946,17 +1034,149 @@ var INTEGRATION_LIBRARY_METADATA = {
946
1034
  description: "Manage Dropbox files, folders, and sharing",
947
1035
  category: "Storage"
948
1036
  },
1037
+ paper: {
1038
+ description: "Create, update, and export Dropbox Paper documents",
1039
+ category: "Productivity"
1040
+ },
949
1041
  granola: {
950
1042
  description: "List and read Granola meeting notes and folders",
951
1043
  category: "Productivity"
952
1044
  },
1045
+ alpaca: {
1046
+ description: "Trade equities with Alpaca: account, orders, positions, and market clock",
1047
+ category: "Finance"
1048
+ },
1049
+ binance: {
1050
+ description: "Read Binance Spot prices, order books, and account data with read-only API keys",
1051
+ category: "Finance"
1052
+ },
953
1053
  mercury: {
954
1054
  description: "Manage Mercury bank accounts, cards, and transactions",
955
1055
  category: "Finance"
956
1056
  },
1057
+ monday: {
1058
+ description: "Manage Monday.com boards, items, columns, and updates",
1059
+ category: "Productivity"
1060
+ },
957
1061
  zendesk: {
958
1062
  description: "Manage Zendesk tickets, users, and help center content",
959
1063
  category: "Business"
1064
+ },
1065
+ wix: {
1066
+ description: "Manage Wix site stores, products, and e-commerce orders via REST",
1067
+ category: "Business"
1068
+ },
1069
+ astronomer: {
1070
+ description: "Manage Apache Airflow DAGs and deployments on Astronomer",
1071
+ category: "Engineering"
1072
+ },
1073
+ auth0: {
1074
+ description: "Manage Auth0 users, applications, and tenant configuration",
1075
+ category: "Infrastructure"
1076
+ },
1077
+ betterstack: {
1078
+ description: "Monitor uptime, logs, and incident alerts with BetterStack",
1079
+ category: "Engineering"
1080
+ },
1081
+ clerk: {
1082
+ description: "Manage Clerk users, organizations, and authentication",
1083
+ category: "Infrastructure"
1084
+ },
1085
+ clickup: {
1086
+ description: "Manage ClickUp tasks, lists, spaces, and workspaces",
1087
+ category: "Productivity"
1088
+ },
1089
+ convex: {
1090
+ description: "Run Convex functions, manage tables, and query your app backend",
1091
+ category: "Engineering"
1092
+ },
1093
+ datadog: {
1094
+ description: "Monitor Datadog metrics, logs, dashboards, and alerts",
1095
+ category: "Engineering"
1096
+ },
1097
+ discord: {
1098
+ description: "Send messages and manage Discord channels and servers",
1099
+ category: "Communication"
1100
+ },
1101
+ etoro: {
1102
+ description: "Read eToro portfolio data and market instruments",
1103
+ category: "Finance"
1104
+ },
1105
+ ga4: {
1106
+ description: "Read Google Analytics 4 reports, properties, and events",
1107
+ category: "Analytics"
1108
+ },
1109
+ gchat: {
1110
+ description: "Send messages and manage Google Chat spaces and memberships",
1111
+ category: "Communication"
1112
+ },
1113
+ gitlab: {
1114
+ description: "Manage GitLab repositories, issues, and merge requests",
1115
+ category: "Engineering"
1116
+ },
1117
+ linkedin: {
1118
+ description: "Post updates and manage LinkedIn profile and company pages",
1119
+ category: "Social Media"
1120
+ },
1121
+ neon: {
1122
+ description: "Manage Neon Postgres projects, branches, and databases",
1123
+ category: "Infrastructure"
1124
+ },
1125
+ planetscale: {
1126
+ description: "Manage PlanetScale databases, branches, and schema changes",
1127
+ category: "Infrastructure"
1128
+ },
1129
+ salesforce: {
1130
+ description: "Manage Salesforce accounts, contacts, opportunities, and cases",
1131
+ category: "Business"
1132
+ },
1133
+ sharepoint: {
1134
+ description: "Manage SharePoint sites, lists, documents, and permissions",
1135
+ category: "Productivity"
1136
+ },
1137
+ shopify: {
1138
+ description: "Manage Shopify products, orders, customers, and inventory",
1139
+ category: "Business"
1140
+ },
1141
+ teams: {
1142
+ description: "Send messages and manage Microsoft Teams channels and meetings",
1143
+ category: "Communication"
1144
+ },
1145
+ threads: {
1146
+ description: "Post and manage content on Threads (Meta)",
1147
+ category: "Social Media"
1148
+ },
1149
+ tiktok: {
1150
+ description: "Manage TikTok videos, account info, and creator analytics",
1151
+ category: "Social Media"
1152
+ },
1153
+ tldraw: {
1154
+ description: "Create and manage tldraw collaborative whiteboards",
1155
+ category: "Productivity"
1156
+ },
1157
+ trello: {
1158
+ description: "Manage Trello boards, lists, and cards",
1159
+ category: "Productivity"
1160
+ },
1161
+ typeform: {
1162
+ description: "Create and manage Typeform surveys and responses",
1163
+ category: "Business"
1164
+ },
1165
+ webflow: {
1166
+ description: "Manage Webflow sites, collections, and CMS content",
1167
+ category: "Engineering"
1168
+ },
1169
+ workday: {
1170
+ description: "Read Workday HR data including workers, organizations, and pay",
1171
+ category: "Business"
1172
+ },
1173
+ xero: {
1174
+ description: "Manage Xero invoices, contacts, and accounting data",
1175
+ category: "Finance"
1176
+ },
1177
+ zapier: {
1178
+ description: "Trigger and manage Zapier automation workflows",
1179
+ category: "Engineering"
960
1180
  }
961
1181
  };
962
1182
  function integrationLibraryPresentationFields(integration) {
@@ -2345,56 +2565,8 @@ class MCPClientBase {
2345
2565
  }
2346
2566
  }
2347
2567
  const integrationIds = this.integrations.map((i) => i.id);
2348
- if (integrationIds.includes("github")) {
2349
- this.github = this.createIntegrationProxy("github");
2350
- }
2351
- if (integrationIds.includes("gmail")) {
2352
- this.gmail = this.createIntegrationProxy("gmail");
2353
- }
2354
- if (integrationIds.includes("notion")) {
2355
- this.notion = this.createIntegrationProxy("notion");
2356
- }
2357
- if (integrationIds.includes("slack")) {
2358
- this.slack = this.createIntegrationProxy("slack");
2359
- }
2360
- if (integrationIds.includes("linear")) {
2361
- this.linear = this.createIntegrationProxy("linear");
2362
- }
2363
- if (integrationIds.includes("railway")) {
2364
- this.railway = this.createIntegrationProxy("railway");
2365
- }
2366
- if (integrationIds.includes("vercel")) {
2367
- this.vercel = this.createIntegrationProxy("vercel");
2368
- }
2369
- if (integrationIds.includes("zendesk")) {
2370
- this.zendesk = this.createIntegrationProxy("zendesk");
2371
- }
2372
- if (integrationIds.includes("stripe")) {
2373
- this.stripe = this.createIntegrationProxy("stripe");
2374
- }
2375
- if (integrationIds.includes("gcal")) {
2376
- this.gcal = this.createIntegrationProxy("gcal");
2377
- }
2378
- if (integrationIds.includes("outlook")) {
2379
- this.outlook = this.createIntegrationProxy("outlook");
2380
- }
2381
- if (integrationIds.includes("airtable")) {
2382
- this.airtable = this.createIntegrationProxy("airtable");
2383
- }
2384
- if (integrationIds.includes("todoist")) {
2385
- this.todoist = this.createIntegrationProxy("todoist");
2386
- }
2387
- if (integrationIds.includes("gdocs")) {
2388
- this.gdocs = this.createIntegrationProxy("gdocs");
2389
- }
2390
- if (integrationIds.includes("gsheets")) {
2391
- this.gsheets = this.createIntegrationProxy("gsheets");
2392
- }
2393
- if (integrationIds.includes("gslides")) {
2394
- this.gslides = this.createIntegrationProxy("gslides");
2395
- }
2396
- if (integrationIds.includes("posthog")) {
2397
- this.posthog = this.createIntegrationProxy("posthog");
2568
+ for (const id of integrationIds) {
2569
+ this[id] = this.createIntegrationProxy(id);
2398
2570
  }
2399
2571
  this.server = this.createServerProxy();
2400
2572
  this.trigger = new TriggerClient({
@@ -4111,6 +4283,7 @@ var GITHUB_TOOLS = [
4111
4283
  "github_create_repo",
4112
4284
  "github_list_branches",
4113
4285
  "github_create_branch",
4286
+ "github_get_authenticated_user",
4114
4287
  "github_get_user",
4115
4288
  "github_list_commits",
4116
4289
  "github_get_commit",
@@ -4174,14 +4347,16 @@ function githubIntegration(config = {}) {
4174
4347
  // src/integrations/gmail.ts
4175
4348
  var logger10 = createLogger("Gmail");
4176
4349
  var GMAIL_TOOLS = [
4177
- "gmail_send_message",
4178
- "gmail_list_messages",
4350
+ "gmail_create_draft",
4351
+ "gmail_get_attachment",
4179
4352
  "gmail_get_message",
4180
- "gmail_search_messages",
4181
- "gmail_reply_message",
4182
- "gmail_list_threads",
4183
4353
  "gmail_get_thread",
4354
+ "gmail_list_messages",
4355
+ "gmail_list_threads",
4184
4356
  "gmail_modify_message",
4357
+ "gmail_reply_message",
4358
+ "gmail_search_messages",
4359
+ "gmail_send_message",
4185
4360
  "gmail_trash_message"
4186
4361
  ];
4187
4362
  function gmailIntegration(config = {}) {
@@ -4342,8 +4517,48 @@ function slackIntegration(config = {}) {
4342
4517
  }
4343
4518
  };
4344
4519
  }
4520
+ // src/integrations/discord.ts
4521
+ var logger13 = createLogger("Discord");
4522
+ var DISCORD_TOOLS = [
4523
+ "discord_get_current_user",
4524
+ "discord_list_my_guilds",
4525
+ "discord_get_guild",
4526
+ "discord_list_guild_channels",
4527
+ "discord_get_channel",
4528
+ "discord_send_message",
4529
+ "discord_list_messages",
4530
+ "discord_edit_message",
4531
+ "discord_delete_message"
4532
+ ];
4533
+ function discordIntegration(config = {}) {
4534
+ const oauth = {
4535
+ provider: "discord",
4536
+ clientId: config.clientId ?? getEnv("DISCORD_CLIENT_ID"),
4537
+ clientSecret: config.clientSecret ?? getEnv("DISCORD_CLIENT_SECRET"),
4538
+ scopes: config.scopes ?? ["identify", "email", "guilds", "bot", "applications.commands"],
4539
+ redirectUri: config.redirectUri,
4540
+ config: {
4541
+ ...config
4542
+ }
4543
+ };
4544
+ return {
4545
+ id: "discord",
4546
+ name: "Discord",
4547
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/discord.png",
4548
+ description: "Send and manage Discord messages; list guilds and channels (bot token required on server for channel APIs)",
4549
+ category: "Communication",
4550
+ tools: [...DISCORD_TOOLS],
4551
+ oauth,
4552
+ async onInit(_client) {
4553
+ logger13.debug("Discord integration initialized");
4554
+ },
4555
+ async onAfterConnect(_client) {
4556
+ logger13.debug("Discord integration connected");
4557
+ }
4558
+ };
4559
+ }
4345
4560
  // src/integrations/linear.ts
4346
- var logger13 = createLogger("Linear");
4561
+ var logger14 = createLogger("Linear");
4347
4562
  var LINEAR_TOOLS = [
4348
4563
  "linear_create_issue",
4349
4564
  "linear_list_issues",
@@ -4398,15 +4613,15 @@ function linearIntegration(config = {}) {
4398
4613
  tools: [...LINEAR_TOOLS],
4399
4614
  oauth,
4400
4615
  async onInit(_client) {
4401
- logger13.debug("Linear integration initialized");
4616
+ logger14.debug("Linear integration initialized");
4402
4617
  },
4403
4618
  async onAfterConnect(_client) {
4404
- logger13.debug("Linear integration connected");
4619
+ logger14.debug("Linear integration connected");
4405
4620
  }
4406
4621
  };
4407
4622
  }
4408
4623
  // src/integrations/railway.ts
4409
- var logger14 = createLogger("Railway");
4624
+ var logger15 = createLogger("Railway");
4410
4625
  var RAILWAY_SCOPES = [
4411
4626
  "openid",
4412
4627
  "profile",
@@ -4511,15 +4726,15 @@ function railwayIntegration(config = {}) {
4511
4726
  tools: [...RAILWAY_TOOLS],
4512
4727
  oauth,
4513
4728
  async onInit(_client) {
4514
- logger14.debug("Railway integration initialized");
4729
+ logger15.debug("Railway integration initialized");
4515
4730
  },
4516
4731
  async onAfterConnect(_client) {
4517
- logger14.debug("Railway integration connected");
4732
+ logger15.debug("Railway integration connected");
4518
4733
  }
4519
4734
  };
4520
4735
  }
4521
4736
  // src/integrations/vercel.ts
4522
- var logger15 = createLogger("Vercel");
4737
+ var logger16 = createLogger("Vercel");
4523
4738
  var VERCEL_TOOLS = [
4524
4739
  "vercel_list_projects",
4525
4740
  "vercel_get_project",
@@ -4562,15 +4777,15 @@ function vercelIntegration(config = {}) {
4562
4777
  tools: [...VERCEL_TOOLS],
4563
4778
  oauth,
4564
4779
  async onInit(_client) {
4565
- logger15.debug("Vercel integration initialized");
4780
+ logger16.debug("Vercel integration initialized");
4566
4781
  },
4567
4782
  async onAfterConnect(_client) {
4568
- logger15.debug("Vercel integration connected");
4783
+ logger16.debug("Vercel integration connected");
4569
4784
  }
4570
4785
  };
4571
4786
  }
4572
4787
  // src/integrations/zendesk.ts
4573
- var logger16 = createLogger("Zendesk");
4788
+ var logger17 = createLogger("Zendesk");
4574
4789
  var ZENDESK_TOOLS = [
4575
4790
  "zendesk_list_tickets",
4576
4791
  "zendesk_get_ticket",
@@ -4619,15 +4834,15 @@ function zendeskIntegration(config = {}) {
4619
4834
  tools: [...ZENDESK_TOOLS],
4620
4835
  oauth,
4621
4836
  async onInit(_client) {
4622
- logger16.debug("Zendesk integration initialized");
4837
+ logger17.debug("Zendesk integration initialized");
4623
4838
  },
4624
4839
  async onAfterConnect(_client) {
4625
- logger16.debug("Zendesk integration connected");
4840
+ logger17.debug("Zendesk integration connected");
4626
4841
  }
4627
4842
  };
4628
4843
  }
4629
4844
  // src/integrations/stripe.ts
4630
- var logger17 = createLogger("Stripe");
4845
+ var logger18 = createLogger("Stripe");
4631
4846
  var STRIPE_TOOLS = [
4632
4847
  "stripe_list_customers",
4633
4848
  "stripe_get_customer",
@@ -4646,6 +4861,7 @@ var STRIPE_TOOLS = [
4646
4861
  "stripe_update_subscription",
4647
4862
  "stripe_cancel_subscription",
4648
4863
  "stripe_list_invoices",
4864
+ "stripe_get_invoice",
4649
4865
  "stripe_create_invoice",
4650
4866
  "stripe_finalize_invoice",
4651
4867
  "stripe_pay_invoice",
@@ -4683,27 +4899,28 @@ function stripeIntegration(config = {}) {
4683
4899
  tools: [...STRIPE_TOOLS],
4684
4900
  oauth,
4685
4901
  async onInit(_client) {
4686
- logger17.debug("Stripe integration initialized");
4902
+ logger18.debug("Stripe integration initialized");
4687
4903
  },
4688
4904
  async onAfterConnect(_client) {
4689
- logger17.debug("Stripe integration connected");
4905
+ logger18.debug("Stripe integration connected");
4690
4906
  }
4691
4907
  };
4692
4908
  }
4693
4909
  // src/integrations/gcal.ts
4694
- var logger18 = createLogger("Google Calendar");
4910
+ var logger19 = createLogger("Google Calendar");
4695
4911
  var GCAL_TOOLS = [
4696
- "gcal_list_calendars",
4697
- "gcal_get_calendar",
4698
- "gcal_list_events",
4699
- "gcal_get_event",
4912
+ "gcal_create_calendar",
4700
4913
  "gcal_create_event",
4701
- "gcal_update_event",
4914
+ "gcal_delete_calendar",
4702
4915
  "gcal_delete_event",
4916
+ "gcal_freebusy",
4917
+ "gcal_get_calendar",
4918
+ "gcal_get_event",
4703
4919
  "gcal_list_attendees",
4920
+ "gcal_list_calendars",
4921
+ "gcal_list_events",
4704
4922
  "gcal_quick_add",
4705
- "gcal_create_calendar",
4706
- "gcal_delete_calendar"
4923
+ "gcal_update_event"
4707
4924
  ];
4708
4925
  function gcalIntegration(config = {}) {
4709
4926
  const oauth = {
@@ -4724,41 +4941,127 @@ function gcalIntegration(config = {}) {
4724
4941
  tools: [...GCAL_TOOLS],
4725
4942
  oauth,
4726
4943
  async onInit(_client) {
4727
- logger18.debug("Google Calendar integration initialized");
4944
+ logger19.debug("Google Calendar integration initialized");
4945
+ },
4946
+ async onAfterConnect(_client) {
4947
+ logger19.debug("Google Calendar integration connected");
4948
+ }
4949
+ };
4950
+ }
4951
+ // src/integrations/gtasks.ts
4952
+ var logger20 = createLogger("Google Tasks");
4953
+ var GTASKS_TOOLS = [
4954
+ "gtasks_clear_completed",
4955
+ "gtasks_create_task",
4956
+ "gtasks_create_tasklist",
4957
+ "gtasks_delete_task",
4958
+ "gtasks_delete_tasklist",
4959
+ "gtasks_get_task",
4960
+ "gtasks_get_tasklist",
4961
+ "gtasks_list_tasklists",
4962
+ "gtasks_list_tasks",
4963
+ "gtasks_move_task",
4964
+ "gtasks_update_task",
4965
+ "gtasks_update_tasklist"
4966
+ ];
4967
+ function gtasksIntegration(config = {}) {
4968
+ const oauth = {
4969
+ provider: "gtasks",
4970
+ clientId: config.clientId ?? getEnv("GTASKS_CLIENT_ID"),
4971
+ clientSecret: config.clientSecret ?? getEnv("GTASKS_CLIENT_SECRET"),
4972
+ scopes: config.scopes,
4973
+ optionalScopes: config.optionalScopes,
4974
+ redirectUri: config.redirectUri,
4975
+ config: {
4976
+ ...config
4977
+ }
4978
+ };
4979
+ return {
4980
+ id: "gtasks",
4981
+ name: "Google Tasks",
4982
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/google_tasks.webp",
4983
+ description: "Manage Google Tasks lists and to-dos synced with your Google account",
4984
+ category: "Productivity",
4985
+ tools: [...GTASKS_TOOLS],
4986
+ oauth,
4987
+ async onInit(_client) {
4988
+ logger20.debug("Google Tasks integration initialized");
4989
+ },
4990
+ async onAfterConnect(_client) {
4991
+ logger20.debug("Google Tasks integration connected");
4992
+ }
4993
+ };
4994
+ }
4995
+ // src/integrations/gcontacts.ts
4996
+ var logger21 = createLogger("Google Contacts");
4997
+ var GCONTACTS_TOOLS = [
4998
+ "gcontacts_batch_get_contacts",
4999
+ "gcontacts_copy_other_contact",
5000
+ "gcontacts_create_contact",
5001
+ "gcontacts_delete_contact",
5002
+ "gcontacts_get_person",
5003
+ "gcontacts_get_self",
5004
+ "gcontacts_list_connections",
5005
+ "gcontacts_list_other_contacts",
5006
+ "gcontacts_search_contacts",
5007
+ "gcontacts_update_contact"
5008
+ ];
5009
+ function gcontactsIntegration(config = {}) {
5010
+ const oauth = {
5011
+ provider: "gcontacts",
5012
+ clientId: config.clientId ?? getEnv("GCONTACTS_CLIENT_ID"),
5013
+ clientSecret: config.clientSecret ?? getEnv("GCONTACTS_CLIENT_SECRET"),
5014
+ scopes: config.scopes,
5015
+ optionalScopes: config.optionalScopes,
5016
+ redirectUri: config.redirectUri,
5017
+ config: {
5018
+ ...config
5019
+ }
5020
+ };
5021
+ return {
5022
+ id: "gcontacts",
5023
+ name: "Google Contacts",
5024
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/gcontacts.png",
5025
+ description: "List, search, create, update, and delete Google Contacts via the People API",
5026
+ category: "Communication",
5027
+ tools: [...GCONTACTS_TOOLS],
5028
+ oauth,
5029
+ async onInit(_client) {
5030
+ logger21.debug("Google Contacts integration initialized");
4728
5031
  },
4729
5032
  async onAfterConnect(_client) {
4730
- logger18.debug("Google Calendar integration connected");
5033
+ logger21.debug("Google Contacts integration connected");
4731
5034
  }
4732
5035
  };
4733
5036
  }
4734
5037
  // src/integrations/outlook.ts
4735
- var logger19 = createLogger("Outlook");
5038
+ var logger22 = createLogger("Outlook");
4736
5039
  var OUTLOOK_TOOLS = [
4737
- "outlook_list_messages",
4738
- "outlook_get_message",
4739
- "outlook_send_message",
4740
- "outlook_search_messages",
4741
- "outlook_reply_message",
4742
- "outlook_reply_all_message",
4743
- "outlook_forward_message",
4744
- "outlook_delete_message",
4745
- "outlook_move_message",
4746
- "outlook_mark_message_read",
5040
+ "outlook_accept_event",
4747
5041
  "outlook_create_draft",
4748
- "outlook_list_mail_folders",
4749
- "outlook_list_events",
4750
- "outlook_get_event",
4751
5042
  "outlook_create_event",
4752
- "outlook_update_event",
4753
- "outlook_delete_event",
4754
- "outlook_list_calendars",
4755
- "outlook_accept_event",
4756
5043
  "outlook_decline_event",
4757
- "outlook_tentatively_accept_event",
5044
+ "outlook_delete_event",
5045
+ "outlook_delete_message",
4758
5046
  "outlook_find_meeting_times",
5047
+ "outlook_forward_message",
5048
+ "outlook_get_contact",
5049
+ "outlook_get_event",
5050
+ "outlook_get_message",
4759
5051
  "outlook_get_schedule",
5052
+ "outlook_list_calendars",
4760
5053
  "outlook_list_contacts",
4761
- "outlook_get_contact"
5054
+ "outlook_list_events",
5055
+ "outlook_list_mail_folders",
5056
+ "outlook_list_messages",
5057
+ "outlook_mark_message_read",
5058
+ "outlook_move_message",
5059
+ "outlook_reply_all_message",
5060
+ "outlook_reply_message",
5061
+ "outlook_search_messages",
5062
+ "outlook_send_message",
5063
+ "outlook_tentatively_accept_event",
5064
+ "outlook_update_event"
4762
5065
  ];
4763
5066
  function outlookIntegration(config = {}) {
4764
5067
  const oauth = {
@@ -4779,15 +5082,73 @@ function outlookIntegration(config = {}) {
4779
5082
  tools: [...OUTLOOK_TOOLS],
4780
5083
  oauth,
4781
5084
  async onInit(_client) {
4782
- logger19.debug("Outlook integration initialized");
5085
+ logger22.debug("Outlook integration initialized");
5086
+ },
5087
+ async onAfterConnect(_client) {
5088
+ logger22.debug("Outlook integration connected");
5089
+ }
5090
+ };
5091
+ }
5092
+ // src/integrations/teams.ts
5093
+ var logger23 = createLogger("Teams");
5094
+ var TEAMS_SCOPES = [
5095
+ "offline_access",
5096
+ "User.Read",
5097
+ "Team.ReadBasic.All",
5098
+ "Channel.ReadBasic.All",
5099
+ "ChannelMessage.Read.All",
5100
+ "ChannelMessage.Send",
5101
+ "Chat.Read",
5102
+ "Chat.ReadWrite"
5103
+ ];
5104
+ var TEAMS_TOOLS = [
5105
+ "teams_get_channel",
5106
+ "teams_get_chat",
5107
+ "teams_get_profile",
5108
+ "teams_get_team",
5109
+ "teams_list_channel_messages",
5110
+ "teams_list_channels",
5111
+ "teams_list_chat_messages",
5112
+ "teams_list_chats",
5113
+ "teams_list_teams",
5114
+ "teams_reply_channel_message",
5115
+ "teams_send_channel_message",
5116
+ "teams_send_chat_message"
5117
+ ];
5118
+ function teamsIntegration(config = {}) {
5119
+ const oauth = {
5120
+ provider: "teams",
5121
+ clientId: config.clientId ?? getEnv("TEAMS_CLIENT_ID"),
5122
+ clientSecret: config.clientSecret ?? getEnv("TEAMS_CLIENT_SECRET"),
5123
+ scopes: config.scopes ?? [...TEAMS_SCOPES],
5124
+ optionalScopes: config.optionalScopes,
5125
+ redirectUri: config.redirectUri,
5126
+ config: {
5127
+ ...config,
5128
+ authorization_endpoint: "https://login.microsoftonline.com/common/oauth2/v2.0/authorize",
5129
+ token_endpoint: "https://login.microsoftonline.com/common/oauth2/v2.0/token",
5130
+ response_type: "code",
5131
+ grant_types_supported: ["authorization_code", "refresh_token"]
5132
+ }
5133
+ };
5134
+ return {
5135
+ id: "teams",
5136
+ name: "Microsoft Teams",
5137
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/teams.png",
5138
+ description: "Collaborate in Teams channels and chats using Microsoft Graph — teams, channels, messages, and profile.",
5139
+ category: "Communication",
5140
+ tools: [...TEAMS_TOOLS],
5141
+ oauth,
5142
+ async onInit(_client) {
5143
+ logger23.debug("Teams integration initialized");
4783
5144
  },
4784
5145
  async onAfterConnect(_client) {
4785
- logger19.debug("Outlook integration connected");
5146
+ logger23.debug("Teams integration connected");
4786
5147
  }
4787
5148
  };
4788
5149
  }
4789
5150
  // src/integrations/airtable.ts
4790
- var logger20 = createLogger("Airtable");
5151
+ var logger24 = createLogger("Airtable");
4791
5152
  var AIRTABLE_TOOLS = [
4792
5153
  "airtable_list_bases",
4793
5154
  "airtable_get_base",
@@ -4833,23 +5194,107 @@ function airtableIntegration(config = {}) {
4833
5194
  tools: [...AIRTABLE_TOOLS],
4834
5195
  oauth,
4835
5196
  async onInit(_client) {
4836
- logger20.debug("Airtable integration initialized");
5197
+ logger24.debug("Airtable integration initialized");
4837
5198
  },
4838
5199
  async onAfterConnect(_client) {
4839
- logger20.debug("Airtable integration connected");
5200
+ logger24.debug("Airtable integration connected");
4840
5201
  }
4841
5202
  };
4842
5203
  }
4843
- // src/integrations/todoist.ts
4844
- var logger21 = createLogger("Todoist");
4845
- var TODOIST_TOOLS = [
4846
- "todoist_list_projects",
4847
- "todoist_get_project",
4848
- "todoist_create_project",
4849
- "todoist_update_project",
4850
- "todoist_delete_project",
4851
- "todoist_archive_project",
4852
- "todoist_list_tasks",
5204
+ // src/integrations/astronomer.ts
5205
+ var logger25 = createLogger("Astronomer");
5206
+ var ASTRONOMER_TOOLS = [
5207
+ "astronomer_get_self",
5208
+ "astronomer_list_organizations",
5209
+ "astronomer_get_organization",
5210
+ "astronomer_list_workspaces",
5211
+ "astronomer_get_workspace",
5212
+ "astronomer_list_clusters",
5213
+ "astronomer_get_cluster",
5214
+ "astronomer_list_deployments",
5215
+ "astronomer_get_deployment",
5216
+ "astronomer_create_deployment",
5217
+ "astronomer_update_deployment",
5218
+ "astronomer_list_deploys",
5219
+ "astronomer_get_deploy"
5220
+ ];
5221
+ function astronomerIntegration(options = {}) {
5222
+ const apiToken = options.apiToken ?? getEnv("ASTRO_API_TOKEN") ?? getEnv("ASTRONOMER_API_TOKEN");
5223
+ if (!apiToken) {
5224
+ throw new Error("astronomerIntegration requires apiToken or ASTRO_API_TOKEN / ASTRONOMER_API_TOKEN environment variable");
5225
+ }
5226
+ return {
5227
+ id: "astronomer",
5228
+ name: "Astronomer",
5229
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/astronomer.png",
5230
+ description: "Manage Astro organizations, workspaces, deployments, clusters, and deploy history via the Astro API v1",
5231
+ category: "Infrastructure",
5232
+ tools: [...ASTRONOMER_TOOLS],
5233
+ authType: "apiKey",
5234
+ getHeaders() {
5235
+ return {
5236
+ Authorization: `Bearer ${apiToken}`
5237
+ };
5238
+ },
5239
+ async onInit(_client) {
5240
+ logger25.debug("Astronomer integration initialized");
5241
+ },
5242
+ async onAfterConnect(_client) {
5243
+ logger25.debug("Astronomer integration connected");
5244
+ }
5245
+ };
5246
+ }
5247
+ // src/integrations/betterstack.ts
5248
+ var logger26 = createLogger("BetterStack");
5249
+ var BETTERSTACK_TOOLS = [
5250
+ "betterstack_list_sources",
5251
+ "betterstack_get_source",
5252
+ "betterstack_create_source",
5253
+ "betterstack_update_source",
5254
+ "betterstack_delete_source",
5255
+ "betterstack_list_source_groups",
5256
+ "betterstack_get_source_group",
5257
+ "betterstack_update_source_group",
5258
+ "betterstack_list_collectors",
5259
+ "betterstack_list_source_metrics",
5260
+ "betterstack_ingest_logs"
5261
+ ];
5262
+ function betterstackIntegration(options = {}) {
5263
+ const apiKey = options.apiKey ?? getEnv("BETTERSTACK_API_KEY");
5264
+ if (!apiKey) {
5265
+ throw new Error("betterstackIntegration requires apiKey or BETTERSTACK_API_KEY environment variable");
5266
+ }
5267
+ return {
5268
+ id: "betterstack",
5269
+ name: "Better Stack",
5270
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/betterstack.png",
5271
+ description: "Ingest and manage log sources, collectors, and metrics with Better Stack Logs (Logtail) Telemetry API",
5272
+ category: "Infrastructure",
5273
+ tools: [...BETTERSTACK_TOOLS],
5274
+ authType: "apiKey",
5275
+ getHeaders() {
5276
+ return {
5277
+ Authorization: `Bearer ${apiKey}`
5278
+ };
5279
+ },
5280
+ async onInit(_client) {
5281
+ logger26.debug("Better Stack integration initialized");
5282
+ },
5283
+ async onAfterConnect(_client) {
5284
+ logger26.debug("Better Stack integration connected");
5285
+ }
5286
+ };
5287
+ }
5288
+ // src/integrations/todoist.ts
5289
+ var logger27 = createLogger("Todoist");
5290
+ var TODOIST_TOOLS = [
5291
+ "todoist_list_projects",
5292
+ "todoist_get_project",
5293
+ "todoist_create_project",
5294
+ "todoist_update_project",
5295
+ "todoist_delete_project",
5296
+ "todoist_archive_project",
5297
+ "todoist_list_tasks",
4853
5298
  "todoist_get_task",
4854
5299
  "todoist_create_task",
4855
5300
  "todoist_update_task",
@@ -4896,15 +5341,15 @@ function todoistIntegration(config = {}) {
4896
5341
  tools: [...TODOIST_TOOLS],
4897
5342
  oauth,
4898
5343
  async onInit(_client) {
4899
- logger21.debug("Todoist integration initialized");
5344
+ logger27.debug("Todoist integration initialized");
4900
5345
  },
4901
5346
  async onAfterConnect(_client) {
4902
- logger21.debug("Todoist integration connected");
5347
+ logger27.debug("Todoist integration connected");
4903
5348
  }
4904
5349
  };
4905
5350
  }
4906
5351
  // src/integrations/whatsapp.ts
4907
- var logger22 = createLogger("WhatsApp");
5352
+ var logger28 = createLogger("WhatsApp");
4908
5353
  var WHATSAPP_TOOLS = [
4909
5354
  "whatsapp_send_message",
4910
5355
  "whatsapp_reply_message",
@@ -4928,7 +5373,10 @@ var WHATSAPP_TOOLS = [
4928
5373
  "whatsapp_update_profile",
4929
5374
  "whatsapp_get_message_status",
4930
5375
  "whatsapp_create_qr_code",
4931
- "whatsapp_list_qr_codes"
5376
+ "whatsapp_update_qr_code",
5377
+ "whatsapp_list_qr_codes",
5378
+ "whatsapp_get_qr_code",
5379
+ "whatsapp_delete_qr_code"
4932
5380
  ];
4933
5381
  function whatsappIntegration(config = {}) {
4934
5382
  const oauth = {
@@ -4950,15 +5398,15 @@ function whatsappIntegration(config = {}) {
4950
5398
  tools: [...WHATSAPP_TOOLS],
4951
5399
  oauth,
4952
5400
  async onInit(_client) {
4953
- logger22.debug("WhatsApp Business integration initialized");
5401
+ logger28.debug("WhatsApp Business integration initialized");
4954
5402
  },
4955
5403
  async onAfterConnect(_client) {
4956
- logger22.debug("WhatsApp Business integration connected");
5404
+ logger28.debug("WhatsApp Business integration connected");
4957
5405
  }
4958
5406
  };
4959
5407
  }
4960
5408
  // src/integrations/calcom.ts
4961
- var logger23 = createLogger("Cal.com");
5409
+ var logger29 = createLogger("Cal.com");
4962
5410
  var CALCOM_TOOLS = [
4963
5411
  "calcom_list_bookings",
4964
5412
  "calcom_get_booking",
@@ -5034,15 +5482,15 @@ function calcomIntegration(config = {}) {
5034
5482
  tools: [...CALCOM_TOOLS],
5035
5483
  oauth,
5036
5484
  async onInit(_client) {
5037
- logger23.debug("Cal.com integration initialized");
5485
+ logger29.debug("Cal.com integration initialized");
5038
5486
  },
5039
5487
  async onAfterConnect(_client) {
5040
- logger23.debug("Cal.com integration connected");
5488
+ logger29.debug("Cal.com integration connected");
5041
5489
  }
5042
5490
  };
5043
5491
  }
5044
5492
  // src/integrations/ramp.ts
5045
- var logger24 = createLogger("Ramp");
5493
+ var logger30 = createLogger("Ramp");
5046
5494
  var RAMP_TOOLS = [
5047
5495
  "ramp_list_transactions",
5048
5496
  "ramp_get_transaction",
@@ -5074,23 +5522,26 @@ function rampIntegration(config = {}) {
5074
5522
  tools: [...RAMP_TOOLS],
5075
5523
  oauth,
5076
5524
  async onInit(_client) {
5077
- logger24.debug("Ramp integration initialized");
5525
+ logger30.debug("Ramp integration initialized");
5078
5526
  },
5079
5527
  async onAfterConnect(_client) {
5080
- logger24.debug("Ramp integration connected");
5528
+ logger30.debug("Ramp integration connected");
5081
5529
  }
5082
5530
  };
5083
5531
  }
5084
5532
  // src/integrations/onedrive.ts
5085
- var logger25 = createLogger("OneDrive");
5533
+ var logger31 = createLogger("OneDrive");
5086
5534
  var ONEDRIVE_TOOLS = [
5087
- "onedrive_list_files",
5088
- "onedrive_get_file",
5089
- "onedrive_download_file",
5090
- "onedrive_upload_file",
5535
+ "onedrive_create_folder",
5091
5536
  "onedrive_delete_file",
5537
+ "onedrive_download_file",
5538
+ "onedrive_get_file",
5539
+ "onedrive_list_files",
5540
+ "onedrive_list_permissions",
5541
+ "onedrive_remove_permission",
5092
5542
  "onedrive_search_files",
5093
- "onedrive_share_file"
5543
+ "onedrive_share_file",
5544
+ "onedrive_upload_file"
5094
5545
  ];
5095
5546
  function onedriveIntegration(config = {}) {
5096
5547
  const oauth = {
@@ -5111,15 +5562,47 @@ function onedriveIntegration(config = {}) {
5111
5562
  tools: [...ONEDRIVE_TOOLS],
5112
5563
  oauth,
5113
5564
  async onInit(_client) {
5114
- logger25.debug("OneDrive integration initialized");
5565
+ logger31.debug("OneDrive integration initialized");
5115
5566
  },
5116
5567
  async onAfterConnect(_client) {
5117
- logger25.debug("OneDrive integration connected");
5568
+ logger31.debug("OneDrive integration connected");
5118
5569
  }
5119
5570
  };
5120
5571
  }
5572
+ // src/integrations/planner.ts
5573
+ var PLANNER_TOOLS = [
5574
+ "planner_create_bucket",
5575
+ "planner_create_plan",
5576
+ "planner_create_task",
5577
+ "planner_delete_task",
5578
+ "planner_get_plan",
5579
+ "planner_get_task",
5580
+ "planner_get_task_details",
5581
+ "planner_list_buckets",
5582
+ "planner_list_group_plans",
5583
+ "planner_list_my_plans",
5584
+ "planner_list_my_tasks",
5585
+ "planner_list_plan_tasks",
5586
+ "planner_update_task"
5587
+ ];
5588
+ function plannerIntegration(config = {}) {
5589
+ const oauth = {
5590
+ provider: "planner",
5591
+ clientId: config.clientId ?? getEnv("PLANNER_CLIENT_ID"),
5592
+ clientSecret: config.clientSecret ?? getEnv("PLANNER_CLIENT_SECRET"),
5593
+ scopes: config.scopes ?? ["Tasks.ReadWrite", "Group.Read.All", "offline_access"],
5594
+ optionalScopes: config.optionalScopes,
5595
+ redirectUri: config.redirectUri
5596
+ };
5597
+ return {
5598
+ id: "planner",
5599
+ name: "Microsoft Planner",
5600
+ tools: [...PLANNER_TOOLS],
5601
+ oauth
5602
+ };
5603
+ }
5121
5604
  // src/integrations/dropbox.ts
5122
- var logger26 = createLogger("Dropbox");
5605
+ var logger32 = createLogger("Dropbox");
5123
5606
  var DROPBOX_TOOLS = [
5124
5607
  "dropbox_get_current_account",
5125
5608
  "dropbox_get_space_usage",
@@ -5161,20 +5644,79 @@ function dropboxIntegration(options = {}) {
5161
5644
  authType: "oauth",
5162
5645
  oauth,
5163
5646
  async onInit(_client) {
5164
- logger26.debug("Dropbox integration initialized");
5647
+ logger32.debug("Dropbox integration initialized");
5648
+ },
5649
+ async onAfterConnect(_client) {
5650
+ logger32.debug("Dropbox integration connected");
5651
+ }
5652
+ };
5653
+ }
5654
+ // src/integrations/paper.ts
5655
+ var logger33 = createLogger("Paper");
5656
+ var PAPER_SCOPES = [
5657
+ "account_info.read",
5658
+ "files.metadata.read",
5659
+ "files.content.read",
5660
+ "files.content.write"
5661
+ ];
5662
+ var PAPER_TOOLS = [
5663
+ "paper_create_doc",
5664
+ "paper_update_doc",
5665
+ "paper_export_doc"
5666
+ ];
5667
+ function resolveClientId(config) {
5668
+ return config.clientId ?? getEnv("PAPER_CLIENT_ID") ?? getEnv("DROPBOX_CLIENT_ID");
5669
+ }
5670
+ function resolveClientSecret(config) {
5671
+ return config.clientSecret ?? getEnv("PAPER_CLIENT_SECRET") ?? getEnv("DROPBOX_CLIENT_SECRET");
5672
+ }
5673
+ function paperIntegration(config = {}) {
5674
+ if (config.scopes !== undefined && (!Array.isArray(config.scopes) || config.scopes.some((scope) => typeof scope !== "string"))) {
5675
+ throw new Error("paperIntegration scopes must be an array of strings");
5676
+ }
5677
+ const oauth = {
5678
+ provider: "paper",
5679
+ clientId: resolveClientId(config),
5680
+ clientSecret: resolveClientSecret(config),
5681
+ scopes: config.scopes ?? [...PAPER_SCOPES],
5682
+ optionalScopes: config.optionalScopes,
5683
+ redirectUri: config.redirectUri,
5684
+ config: {
5685
+ authorization_endpoint: "https://www.dropbox.com/oauth2/authorize",
5686
+ token_endpoint: "https://api.dropboxapi.com/oauth2/token",
5687
+ response_type: "code",
5688
+ grant_types_supported: ["authorization_code", "refresh_token"]
5689
+ }
5690
+ };
5691
+ return {
5692
+ id: "paper",
5693
+ name: "Dropbox Paper",
5694
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/paper.png",
5695
+ description: "Create, update, and export Dropbox Paper documents",
5696
+ category: "Productivity",
5697
+ tools: [...PAPER_TOOLS],
5698
+ authType: "oauth",
5699
+ oauth,
5700
+ async onInit(_client) {
5701
+ logger33.debug("Paper integration initialized");
5165
5702
  },
5166
5703
  async onAfterConnect(_client) {
5167
- logger26.debug("Dropbox integration connected");
5704
+ logger33.debug("Paper integration connected");
5168
5705
  }
5169
5706
  };
5170
5707
  }
5171
5708
  // src/integrations/gdocs.ts
5172
- var logger27 = createLogger("Google Docs");
5709
+ var logger34 = createLogger("Google Docs");
5173
5710
  var GDOCS_TOOLS = [
5174
- "gdocs_list",
5175
- "gdocs_get",
5176
- "gdocs_create",
5177
5711
  "gdocs_append_text",
5712
+ "gdocs_batch_update",
5713
+ "gdocs_create",
5714
+ "gdocs_create_comment",
5715
+ "gdocs_delete",
5716
+ "gdocs_delete_comment",
5717
+ "gdocs_get",
5718
+ "gdocs_list",
5719
+ "gdocs_list_comments",
5178
5720
  "gdocs_replace_text"
5179
5721
  ];
5180
5722
  function gdocsIntegration(config = {}) {
@@ -5194,24 +5736,26 @@ function gdocsIntegration(config = {}) {
5194
5736
  tools: [...GDOCS_TOOLS],
5195
5737
  oauth,
5196
5738
  async onInit(_client) {
5197
- logger27.debug("Google Docs integration initialized");
5739
+ logger34.debug("Google Docs integration initialized");
5198
5740
  },
5199
5741
  async onAfterConnect(_client) {
5200
- logger27.debug("Google Docs integration connected");
5742
+ logger34.debug("Google Docs integration connected");
5201
5743
  }
5202
5744
  };
5203
5745
  }
5204
5746
  // src/integrations/gsheets.ts
5205
- var logger28 = createLogger("Google Sheets");
5747
+ var logger35 = createLogger("Google Sheets");
5206
5748
  var GSHEETS_TOOLS = [
5207
- "gsheets_list",
5208
- "gsheets_get",
5209
- "gsheets_get_values",
5210
- "gsheets_update_values",
5211
- "gsheets_create",
5212
5749
  "gsheets_append_values",
5750
+ "gsheets_batch_update",
5751
+ "gsheets_batch_update_values",
5213
5752
  "gsheets_clear_values",
5214
- "gsheets_batch_update_values"
5753
+ "gsheets_create",
5754
+ "gsheets_delete",
5755
+ "gsheets_get",
5756
+ "gsheets_get_values",
5757
+ "gsheets_list",
5758
+ "gsheets_update_values"
5215
5759
  ];
5216
5760
  function gsheetsIntegration(config = {}) {
5217
5761
  const oauth = {
@@ -5230,22 +5774,24 @@ function gsheetsIntegration(config = {}) {
5230
5774
  tools: [...GSHEETS_TOOLS],
5231
5775
  oauth,
5232
5776
  async onInit(_client) {
5233
- logger28.debug("Google Sheets integration initialized");
5777
+ logger35.debug("Google Sheets integration initialized");
5234
5778
  },
5235
5779
  async onAfterConnect(_client) {
5236
- logger28.debug("Google Sheets integration connected");
5780
+ logger35.debug("Google Sheets integration connected");
5237
5781
  }
5238
5782
  };
5239
5783
  }
5240
5784
  // src/integrations/gslides.ts
5241
- var logger29 = createLogger("Google Slides");
5785
+ var logger36 = createLogger("Google Slides");
5242
5786
  var GSLIDES_TOOLS = [
5243
- "gslides_list",
5244
- "gslides_get",
5245
- "gslides_get_page",
5246
- "gslides_create",
5247
5787
  "gslides_add_slide",
5788
+ "gslides_batch_update",
5789
+ "gslides_create",
5790
+ "gslides_delete",
5248
5791
  "gslides_delete_slide",
5792
+ "gslides_get",
5793
+ "gslides_get_page",
5794
+ "gslides_list",
5249
5795
  "gslides_update_text"
5250
5796
  ];
5251
5797
  function gslidesIntegration(config = {}) {
@@ -5265,15 +5811,15 @@ function gslidesIntegration(config = {}) {
5265
5811
  tools: [...GSLIDES_TOOLS],
5266
5812
  oauth,
5267
5813
  async onInit(_client) {
5268
- logger29.debug("Google Slides integration initialized");
5814
+ logger36.debug("Google Slides integration initialized");
5269
5815
  },
5270
5816
  async onAfterConnect(_client) {
5271
- logger29.debug("Google Slides integration connected");
5817
+ logger36.debug("Google Slides integration connected");
5272
5818
  }
5273
5819
  };
5274
5820
  }
5275
5821
  // src/integrations/polar.ts
5276
- var logger30 = createLogger("Polar");
5822
+ var logger37 = createLogger("Polar");
5277
5823
  var POLAR_TOOLS = [
5278
5824
  "polar_list_products",
5279
5825
  "polar_get_product",
@@ -5330,15 +5876,178 @@ function polarIntegration(config = {}) {
5330
5876
  tools: [...POLAR_TOOLS],
5331
5877
  oauth,
5332
5878
  async onInit(_client) {
5333
- logger30.debug("Polar integration initialized");
5879
+ logger37.debug("Polar integration initialized");
5880
+ },
5881
+ async onAfterConnect(_client) {
5882
+ logger37.debug("Polar integration connected");
5883
+ }
5884
+ };
5885
+ }
5886
+ // src/integrations/supabase.ts
5887
+ var logger38 = createLogger("Supabase");
5888
+ var SUPABASE_API_BASE = "https://api.supabase.com";
5889
+ var SUPABASE_TOOLS = [
5890
+ "supabase_get_profile",
5891
+ "supabase_list_organizations",
5892
+ "supabase_get_organization",
5893
+ "supabase_list_organization_projects",
5894
+ "supabase_list_projects",
5895
+ "supabase_get_project",
5896
+ "supabase_create_project",
5897
+ "supabase_update_project",
5898
+ "supabase_delete_project",
5899
+ "supabase_list_project_api_keys",
5900
+ "supabase_create_project_api_key",
5901
+ "supabase_delete_project_api_key",
5902
+ "supabase_list_project_secrets",
5903
+ "supabase_list_project_branches",
5904
+ "supabase_get_project_health",
5905
+ "supabase_get_database_postgres_config",
5906
+ "supabase_list_available_regions"
5907
+ ];
5908
+ function supabaseIntegration(config = {}) {
5909
+ const pat = config.accessToken ?? getEnv("SUPABASE_ACCESS_TOKEN");
5910
+ if (pat) {
5911
+ return {
5912
+ id: "supabase",
5913
+ name: "Supabase",
5914
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/supabase.png",
5915
+ description: "Manage Supabase organizations, projects, Postgres settings, API keys, secrets, and branches via the Management API",
5916
+ category: "Infrastructure",
5917
+ tools: [...SUPABASE_TOOLS],
5918
+ authType: "apiKey",
5919
+ getHeaders() {
5920
+ return {
5921
+ Authorization: `Bearer ${pat}`
5922
+ };
5923
+ },
5924
+ async onInit(_client) {
5925
+ logger38.debug("Supabase integration initialized (personal access token)");
5926
+ },
5927
+ async onAfterConnect(_client) {
5928
+ logger38.debug("Supabase integration connected");
5929
+ }
5930
+ };
5931
+ }
5932
+ const oauth = {
5933
+ provider: "supabase",
5934
+ clientId: config.clientId ?? getEnv("SUPABASE_CLIENT_ID"),
5935
+ clientSecret: config.clientSecret ?? getEnv("SUPABASE_CLIENT_SECRET"),
5936
+ scopes: config.scopes ?? [],
5937
+ optionalScopes: config.optionalScopes,
5938
+ redirectUri: config.redirectUri,
5939
+ config: {
5940
+ apiBaseUrl: SUPABASE_API_BASE,
5941
+ authorization_endpoint: `${SUPABASE_API_BASE}/v1/oauth/authorize`,
5942
+ token_endpoint: `${SUPABASE_API_BASE}/v1/oauth/token`,
5943
+ token_auth_method: "client_secret_basic",
5944
+ response_type: "code",
5945
+ grant_types_supported: ["authorization_code", "refresh_token"],
5946
+ code_challenge_method: "S256"
5947
+ }
5948
+ };
5949
+ return {
5950
+ id: "supabase",
5951
+ name: "Supabase",
5952
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/supabase.png",
5953
+ description: "Manage Supabase organizations, projects, Postgres settings, API keys, secrets, and branches via the Management API",
5954
+ category: "Infrastructure",
5955
+ tools: [...SUPABASE_TOOLS],
5956
+ oauth,
5957
+ async onInit(_client) {
5958
+ logger38.debug("Supabase integration initialized");
5959
+ },
5960
+ async onAfterConnect(_client) {
5961
+ logger38.debug("Supabase integration connected");
5962
+ }
5963
+ };
5964
+ }
5965
+ // src/integrations/phantom.ts
5966
+ var logger39 = createLogger("Phantom");
5967
+ var PHANTOM_TOOLS = [
5968
+ "phantom_build_browse_deeplink",
5969
+ "phantom_deeplink_provider_reference"
5970
+ ];
5971
+ function buildPhantomBrowseDeeplink(params) {
5972
+ const target = new URL(params.url);
5973
+ const ref = new URL(params.ref);
5974
+ if (target.protocol !== "https:" || ref.protocol !== "https:") {
5975
+ throw new Error("Phantom browse deeplinks require https url and ref values");
5976
+ }
5977
+ return `https://phantom.app/ul/browse/${encodeURIComponent(target.toString())}?ref=${encodeURIComponent(ref.toString())}`;
5978
+ }
5979
+ function phantomIntegration(_options = {}) {
5980
+ return {
5981
+ id: "phantom",
5982
+ name: "Phantom",
5983
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/phantom.png",
5984
+ description: "Build Phantom mobile universal links and expose provider deeplink reference data",
5985
+ category: "Other",
5986
+ tools: [...PHANTOM_TOOLS],
5987
+ async onInit(_client) {
5988
+ logger39.debug("Phantom integration initialized");
5989
+ },
5990
+ async onAfterConnect(_client) {
5991
+ logger39.debug("Phantom integration connected");
5992
+ }
5993
+ };
5994
+ }
5995
+ // src/integrations/facebook.ts
5996
+ var logger40 = createLogger("Facebook");
5997
+ var FACEBOOK_SCOPES = [
5998
+ "public_profile",
5999
+ "email",
6000
+ "pages_show_list",
6001
+ "pages_read_engagement",
6002
+ "pages_manage_posts",
6003
+ "pages_read_user_content",
6004
+ "pages_manage_engagement"
6005
+ ];
6006
+ var FACEBOOK_TOOLS = [
6007
+ "facebook_get_me",
6008
+ "facebook_list_pages",
6009
+ "facebook_list_page_posts",
6010
+ "facebook_get_object",
6011
+ "facebook_create_page_post",
6012
+ "facebook_delete_object",
6013
+ "facebook_list_comments",
6014
+ "facebook_publish_comment",
6015
+ "facebook_get_insights",
6016
+ "facebook_set_comment_visibility",
6017
+ "facebook_like_object"
6018
+ ];
6019
+ function facebookIntegration(config = {}) {
6020
+ const oauth = {
6021
+ provider: "facebook",
6022
+ clientId: config.clientId ?? getEnv("FACEBOOK_CLIENT_ID"),
6023
+ clientSecret: config.clientSecret ?? getEnv("FACEBOOK_CLIENT_SECRET"),
6024
+ scopes: config.scopes ?? [...FACEBOOK_SCOPES],
6025
+ redirectUri: config.redirectUri,
6026
+ config: {
6027
+ authorization_endpoint: "https://www.facebook.com/v18.0/dialog/oauth",
6028
+ token_endpoint: "https://graph.facebook.com/v18.0/oauth/access_token",
6029
+ response_type: "code",
6030
+ grant_types_supported: ["authorization_code"]
6031
+ }
6032
+ };
6033
+ return {
6034
+ id: "facebook",
6035
+ name: "Facebook",
6036
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/facebook.png",
6037
+ description: "Manage Facebook Page posts, comments, reactions, and insights via the Graph API",
6038
+ category: "Social Media",
6039
+ tools: [...FACEBOOK_TOOLS],
6040
+ oauth,
6041
+ async onInit(_client) {
6042
+ logger40.debug("Facebook integration initialized");
5334
6043
  },
5335
6044
  async onAfterConnect(_client) {
5336
- logger30.debug("Polar integration connected");
6045
+ logger40.debug("Facebook integration connected");
5337
6046
  }
5338
6047
  };
5339
6048
  }
5340
6049
  // src/integrations/figma.ts
5341
- var logger31 = createLogger("Figma");
6050
+ var logger41 = createLogger("Figma");
5342
6051
  var FIGMA_TOOLS = [
5343
6052
  "figma_get_file",
5344
6053
  "figma_get_file_nodes",
@@ -5404,15 +6113,15 @@ function figmaIntegration(config = {}) {
5404
6113
  tools: [...FIGMA_TOOLS],
5405
6114
  oauth,
5406
6115
  async onInit(_client) {
5407
- logger31.debug("Figma integration initialized");
6116
+ logger41.debug("Figma integration initialized");
5408
6117
  },
5409
6118
  async onAfterConnect(_client) {
5410
- logger31.debug("Figma integration connected");
6119
+ logger41.debug("Figma integration connected");
5411
6120
  }
5412
6121
  };
5413
6122
  }
5414
6123
  // src/integrations/intercom.ts
5415
- var logger32 = createLogger("Intercom");
6124
+ var logger42 = createLogger("Intercom");
5416
6125
  var INTERCOM_TOOLS = [
5417
6126
  "intercom_list_contacts",
5418
6127
  "intercom_get_contact",
@@ -5443,15 +6152,15 @@ function intercomIntegration(config = {}) {
5443
6152
  tools: [...INTERCOM_TOOLS],
5444
6153
  oauth,
5445
6154
  async onInit(_client) {
5446
- logger32.debug("Intercom integration initialized");
6155
+ logger42.debug("Intercom integration initialized");
5447
6156
  },
5448
6157
  async onAfterConnect(_client) {
5449
- logger32.debug("Intercom integration connected");
6158
+ logger42.debug("Intercom integration connected");
5450
6159
  }
5451
6160
  };
5452
6161
  }
5453
6162
  // src/integrations/hubspot.ts
5454
- var logger33 = createLogger("HubSpot");
6163
+ var logger43 = createLogger("HubSpot");
5455
6164
  var HUBSPOT_TOOLS = [
5456
6165
  "hubspot_list_contacts",
5457
6166
  "hubspot_get_contact",
@@ -5501,39 +6210,97 @@ function hubspotIntegration(config = {}) {
5501
6210
  tools: [...HUBSPOT_TOOLS],
5502
6211
  oauth,
5503
6212
  async onInit(_client) {
5504
- logger33.debug("HubSpot integration initialized");
6213
+ logger43.debug("HubSpot integration initialized");
6214
+ },
6215
+ async onAfterConnect(_client) {
6216
+ logger43.debug("HubSpot integration connected");
6217
+ }
6218
+ };
6219
+ }
6220
+ // src/integrations/instagram.ts
6221
+ var logger44 = createLogger("Instagram");
6222
+ var INSTAGRAM_SCOPES = [
6223
+ "pages_show_list",
6224
+ "pages_read_engagement",
6225
+ "instagram_basic",
6226
+ "instagram_manage_insights",
6227
+ "instagram_manage_comments",
6228
+ "instagram_content_publish"
6229
+ ];
6230
+ var INSTAGRAM_TOOLS = [
6231
+ "instagram_list_pages",
6232
+ "instagram_get_profile",
6233
+ "instagram_list_media",
6234
+ "instagram_get_media",
6235
+ "instagram_list_comments",
6236
+ "instagram_reply_comment",
6237
+ "instagram_delete_comment",
6238
+ "instagram_hide_comment",
6239
+ "instagram_get_media_insights",
6240
+ "instagram_get_user_insights",
6241
+ "instagram_create_media_container",
6242
+ "instagram_publish_media",
6243
+ "instagram_list_stories",
6244
+ "instagram_list_tagged_media"
6245
+ ];
6246
+ function instagramIntegration(config = {}) {
6247
+ const oauth = {
6248
+ provider: "instagram",
6249
+ clientId: config.clientId ?? getEnv("INSTAGRAM_CLIENT_ID"),
6250
+ clientSecret: config.clientSecret ?? getEnv("INSTAGRAM_CLIENT_SECRET"),
6251
+ scopes: config.scopes ?? [...INSTAGRAM_SCOPES],
6252
+ optionalScopes: config.optionalScopes,
6253
+ redirectUri: config.redirectUri,
6254
+ config: {
6255
+ authorization_endpoint: "https://www.facebook.com/v21.0/dialog/oauth",
6256
+ token_endpoint: "https://graph.facebook.com/v21.0/oauth/access_token",
6257
+ response_type: "code",
6258
+ grant_types_supported: ["authorization_code", "refresh_token"],
6259
+ ...config
6260
+ }
6261
+ };
6262
+ return {
6263
+ id: "instagram",
6264
+ name: "Instagram",
6265
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/instagram.png",
6266
+ description: "Instagram Graph API for professional accounts — pages, media, comments, insights, stories, and publishing.",
6267
+ category: "Social Media",
6268
+ tools: [...INSTAGRAM_TOOLS],
6269
+ oauth,
6270
+ async onInit(_client) {
6271
+ logger44.debug("Instagram integration initialized");
5505
6272
  },
5506
6273
  async onAfterConnect(_client) {
5507
- logger33.debug("HubSpot integration connected");
6274
+ logger44.debug("Instagram integration connected");
5508
6275
  }
5509
6276
  };
5510
6277
  }
5511
6278
  // src/integrations/youtube.ts
5512
- var logger34 = createLogger("YouTube");
6279
+ var logger45 = createLogger("YouTube");
5513
6280
  var YOUTUBE_TOOLS = [
5514
- "youtube_search",
5515
- "youtube_get_video",
5516
- "youtube_get_my_channel",
6281
+ "youtube_add_comment",
6282
+ "youtube_add_to_playlist",
6283
+ "youtube_create_playlist",
6284
+ "youtube_delete_playlist",
6285
+ "youtube_get_captions",
5517
6286
  "youtube_get_channel",
5518
- "youtube_list_my_videos",
5519
- "youtube_get_video_rating",
5520
- "youtube_list_playlists",
6287
+ "youtube_get_my_channel",
5521
6288
  "youtube_get_playlist",
6289
+ "youtube_get_video",
6290
+ "youtube_get_video_rating",
6291
+ "youtube_list_comment_replies",
6292
+ "youtube_list_comments",
6293
+ "youtube_list_my_videos",
5522
6294
  "youtube_list_playlist_items",
6295
+ "youtube_list_playlists",
5523
6296
  "youtube_list_subscriptions",
5524
- "youtube_list_comments",
5525
- "youtube_list_comment_replies",
5526
- "youtube_get_captions",
5527
6297
  "youtube_rate_video",
6298
+ "youtube_remove_from_playlist",
6299
+ "youtube_reply_to_comment",
6300
+ "youtube_search",
5528
6301
  "youtube_subscribe",
5529
6302
  "youtube_unsubscribe",
5530
- "youtube_add_comment",
5531
- "youtube_reply_to_comment",
5532
- "youtube_create_playlist",
5533
6303
  "youtube_update_playlist",
5534
- "youtube_delete_playlist",
5535
- "youtube_add_to_playlist",
5536
- "youtube_remove_from_playlist",
5537
6304
  "youtube_update_video"
5538
6305
  ];
5539
6306
  function youtubeIntegration(config = {}) {
@@ -5555,15 +6322,15 @@ function youtubeIntegration(config = {}) {
5555
6322
  tools: [...YOUTUBE_TOOLS],
5556
6323
  oauth,
5557
6324
  async onInit(_client) {
5558
- logger34.debug("YouTube integration initialized");
6325
+ logger45.debug("YouTube integration initialized");
5559
6326
  },
5560
6327
  async onAfterConnect(_client) {
5561
- logger34.debug("YouTube integration connected");
6328
+ logger45.debug("YouTube integration connected");
5562
6329
  }
5563
6330
  };
5564
6331
  }
5565
6332
  // src/integrations/cursor.ts
5566
- var logger35 = createLogger("Cursor");
6333
+ var logger46 = createLogger("Cursor");
5567
6334
  var CURSOR_TOOLS = [
5568
6335
  "cursor_list_agents",
5569
6336
  "cursor_get_agent",
@@ -5583,15 +6350,70 @@ function cursorIntegration(_config = {}) {
5583
6350
  logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/cursor.jpeg",
5584
6351
  tools: [...CURSOR_TOOLS],
5585
6352
  async onInit(_client) {
5586
- logger35.debug("Cursor integration initialized");
6353
+ logger46.debug("Cursor integration initialized");
6354
+ },
6355
+ async onAfterConnect(_client) {
6356
+ logger46.debug("Cursor integration connected");
6357
+ }
6358
+ };
6359
+ }
6360
+ // src/integrations/databricks.ts
6361
+ var logger47 = createLogger("Databricks");
6362
+ var DATABRICKS_SCOPES = ["all-apis", "offline_access"];
6363
+ var DATABRICKS_TOOLS = [
6364
+ "databricks_current_user",
6365
+ "databricks_clusters_list",
6366
+ "databricks_clusters_get",
6367
+ "databricks_jobs_list",
6368
+ "databricks_jobs_get",
6369
+ "databricks_jobs_run_now",
6370
+ "databricks_sql_warehouses_list",
6371
+ "databricks_workspace_get_status"
6372
+ ];
6373
+ function normalizeDatabricksWorkspaceHost(raw) {
6374
+ const value = (raw ?? "").trim().replace(/\/+$/, "");
6375
+ if (!value) {
6376
+ return "";
6377
+ }
6378
+ return /^https?:\/\//i.test(value) ? value : `https://${value}`;
6379
+ }
6380
+ function databricksIntegration(config = {}) {
6381
+ const host = normalizeDatabricksWorkspaceHost(config.workspaceHost ?? getEnv("DATABRICKS_WORKSPACE_HOST"));
6382
+ const placeholder = "https://workspace-host.invalid";
6383
+ const base = host || placeholder;
6384
+ const oauth = {
6385
+ provider: "databricks",
6386
+ clientId: config.clientId ?? getEnv("DATABRICKS_CLIENT_ID"),
6387
+ clientSecret: config.clientSecret ?? getEnv("DATABRICKS_CLIENT_SECRET"),
6388
+ scopes: config.scopes ?? [...DATABRICKS_SCOPES],
6389
+ redirectUri: config.redirectUri,
6390
+ config: {
6391
+ subdomain: host || undefined,
6392
+ authorization_endpoint: `${base}/oidc/v1/authorize`,
6393
+ token_endpoint: `${base}/oidc/v1/token`,
6394
+ response_type: "code",
6395
+ grant_types_supported: ["authorization_code", "refresh_token"],
6396
+ code_challenge_method: "S256"
6397
+ }
6398
+ };
6399
+ return {
6400
+ id: "databricks",
6401
+ name: "Databricks",
6402
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/databricks.png",
6403
+ description: "Run Databricks jobs, list clusters and SQL warehouses, and inspect workspace paths",
6404
+ category: "Engineering",
6405
+ tools: [...DATABRICKS_TOOLS],
6406
+ oauth,
6407
+ async onInit(_client) {
6408
+ logger47.debug("Databricks integration initialized");
5587
6409
  },
5588
6410
  async onAfterConnect(_client) {
5589
- logger35.debug("Cursor integration connected");
6411
+ logger47.debug("Databricks integration connected");
5590
6412
  }
5591
6413
  };
5592
6414
  }
5593
6415
  // src/integrations/posthog.ts
5594
- var logger36 = createLogger("PostHog");
6416
+ var logger48 = createLogger("PostHog");
5595
6417
  var DEFAULT_POSTHOG_BASE_URL = "https://us.posthog.com";
5596
6418
  var POSTHOG_SCOPES = [
5597
6419
  "openid",
@@ -5677,15 +6499,54 @@ function posthogIntegration(config = {}) {
5677
6499
  tools: [...POSTHOG_TOOLS],
5678
6500
  oauth,
5679
6501
  async onInit(_client) {
5680
- logger36.debug("PostHog integration initialized");
6502
+ logger48.debug("PostHog integration initialized");
6503
+ },
6504
+ async onAfterConnect(_client) {
6505
+ logger48.debug("PostHog integration connected");
6506
+ }
6507
+ };
6508
+ }
6509
+ // src/integrations/postman.ts
6510
+ var logger49 = createLogger("Postman");
6511
+ var POSTMAN_TOOLS = [
6512
+ "postman_get_me",
6513
+ "postman_list_workspaces",
6514
+ "postman_get_workspace",
6515
+ "postman_list_collections",
6516
+ "postman_get_collection",
6517
+ "postman_delete_collection",
6518
+ "postman_list_environments",
6519
+ "postman_get_environment",
6520
+ "postman_create_collection"
6521
+ ];
6522
+ function postmanIntegration(options = {}) {
6523
+ const apiKey = options.apiKey ?? getEnv("POSTMAN_API_KEY");
6524
+ if (!apiKey) {
6525
+ throw new Error("postmanIntegration requires apiKey or POSTMAN_API_KEY environment variable");
6526
+ }
6527
+ return {
6528
+ id: "postman",
6529
+ name: "Postman",
6530
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/postman.png",
6531
+ description: "Manage Postman workspaces, collections, and environments via the Postman API",
6532
+ category: "Engineering",
6533
+ tools: [...POSTMAN_TOOLS],
6534
+ authType: "apiKey",
6535
+ getHeaders() {
6536
+ return {
6537
+ Authorization: `Bearer ${apiKey}`
6538
+ };
6539
+ },
6540
+ async onInit(_client) {
6541
+ logger49.debug("Postman integration initialized");
5681
6542
  },
5682
6543
  async onAfterConnect(_client) {
5683
- logger36.debug("PostHog integration connected");
6544
+ logger49.debug("Postman integration connected");
5684
6545
  }
5685
6546
  };
5686
6547
  }
5687
6548
  // src/integrations/sentry.ts
5688
- var logger37 = createLogger("Sentry");
6549
+ var logger50 = createLogger("Sentry");
5689
6550
  var SENTRY_SCOPES = [
5690
6551
  "org:read",
5691
6552
  "project:read",
@@ -5734,34 +6595,108 @@ function sentryIntegration(config = {}) {
5734
6595
  tools: [...SENTRY_TOOLS],
5735
6596
  oauth,
5736
6597
  async onInit(_client) {
5737
- logger37.debug("Sentry integration initialized");
6598
+ logger50.debug("Sentry integration initialized");
5738
6599
  },
5739
6600
  async onAfterConnect(_client) {
5740
- logger37.debug("Sentry integration connected");
6601
+ logger50.debug("Sentry integration connected");
5741
6602
  }
5742
6603
  };
5743
6604
  }
5744
- // src/integrations/netlify.ts
5745
- var logger38 = createLogger("Netlify");
5746
- var NETLIFY_TOOLS = [
5747
- "netlify_get_current_user",
5748
- "netlify_list_accounts",
5749
- "netlify_get_account",
5750
- "netlify_list_sites",
5751
- "netlify_get_site",
5752
- "netlify_create_site",
5753
- "netlify_update_site",
5754
- "netlify_delete_site",
5755
- "netlify_enable_site",
5756
- "netlify_disable_site",
5757
- "netlify_list_deploys",
5758
- "netlify_get_deploy",
5759
- "netlify_create_deploy",
5760
- "netlify_cancel_deploy",
5761
- "netlify_restore_deploy",
5762
- "netlify_lock_deploy",
5763
- "netlify_unlock_deploy",
5764
- "netlify_list_builds",
6605
+ // src/integrations/datadog.ts
6606
+ var logger51 = createLogger("Datadog");
6607
+ var DATADOG_SCOPES = [
6608
+ "monitors_read",
6609
+ "dashboards_read",
6610
+ "metrics_read",
6611
+ "logs_read_data"
6612
+ ];
6613
+ var DATADOG_TOOLS = [
6614
+ "datadog_list_monitors",
6615
+ "datadog_get_monitor",
6616
+ "datadog_list_dashboards",
6617
+ "datadog_get_dashboard",
6618
+ "datadog_search_logs"
6619
+ ];
6620
+ function normalizeSite(raw) {
6621
+ const s = (raw ?? "").trim();
6622
+ return s.length > 0 ? s : "datadoghq.com";
6623
+ }
6624
+ function datadogIntegration(config = {}) {
6625
+ const site = normalizeSite(config.site ?? getEnv("DATADOG_SITE"));
6626
+ const apiKey = config.apiKey ?? getEnv("DATADOG_API_KEY");
6627
+ const applicationKey = config.applicationKey ?? getEnv("DATADOG_APPLICATION_KEY");
6628
+ const baseFields = {
6629
+ id: "datadog",
6630
+ name: "Datadog",
6631
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/datadog.png",
6632
+ description: "List monitors and dashboards and search logs with the Datadog API",
6633
+ category: "Engineering",
6634
+ tools: [...DATADOG_TOOLS],
6635
+ async onInit(_client) {
6636
+ logger51.debug("Datadog integration initialized");
6637
+ },
6638
+ async onAfterConnect(_client) {
6639
+ logger51.debug("Datadog integration connected");
6640
+ }
6641
+ };
6642
+ if (apiKey || applicationKey) {
6643
+ if (!apiKey || !applicationKey) {
6644
+ throw new Error("datadogIntegration: apiKey and applicationKey must both be set for API key authentication");
6645
+ }
6646
+ return {
6647
+ ...baseFields,
6648
+ authType: "apiKey",
6649
+ getHeaders() {
6650
+ return {
6651
+ "DD-API-KEY": apiKey,
6652
+ "DD-APPLICATION-KEY": applicationKey,
6653
+ "DD-SITE": site
6654
+ };
6655
+ }
6656
+ };
6657
+ }
6658
+ const clientId = config.clientId ?? getEnv("DATADOG_CLIENT_ID");
6659
+ const clientSecret = config.clientSecret ?? getEnv("DATADOG_CLIENT_SECRET");
6660
+ const oauth = {
6661
+ provider: "datadog",
6662
+ clientId,
6663
+ clientSecret,
6664
+ scopes: config.scopes ?? [...DATADOG_SCOPES],
6665
+ redirectUri: config.redirectUri,
6666
+ config: {
6667
+ authorization_endpoint: "https://app.datadoghq.com/oauth2/v1/authorize",
6668
+ token_endpoint: "https://api.datadoghq.com/oauth2/v1/token",
6669
+ response_type: "code",
6670
+ grant_types_supported: ["authorization_code", "refresh_token"],
6671
+ subdomain: site
6672
+ }
6673
+ };
6674
+ return {
6675
+ ...baseFields,
6676
+ oauth
6677
+ };
6678
+ }
6679
+ // src/integrations/netlify.ts
6680
+ var logger52 = createLogger("Netlify");
6681
+ var NETLIFY_TOOLS = [
6682
+ "netlify_get_current_user",
6683
+ "netlify_list_accounts",
6684
+ "netlify_get_account",
6685
+ "netlify_list_sites",
6686
+ "netlify_get_site",
6687
+ "netlify_create_site",
6688
+ "netlify_update_site",
6689
+ "netlify_delete_site",
6690
+ "netlify_enable_site",
6691
+ "netlify_disable_site",
6692
+ "netlify_list_deploys",
6693
+ "netlify_get_deploy",
6694
+ "netlify_create_deploy",
6695
+ "netlify_cancel_deploy",
6696
+ "netlify_restore_deploy",
6697
+ "netlify_lock_deploy",
6698
+ "netlify_unlock_deploy",
6699
+ "netlify_list_builds",
5765
6700
  "netlify_get_build",
5766
6701
  "netlify_trigger_build",
5767
6702
  "netlify_list_env_vars",
@@ -5790,129 +6725,2138 @@ function netlifyIntegration(config = {}) {
5790
6725
  scopes: [],
5791
6726
  redirectUri: config.redirectUri,
5792
6727
  config: {
5793
- authorization_endpoint: "https://app.netlify.com/authorize",
5794
- token_endpoint: "https://api.netlify.com/oauth/token",
6728
+ authorization_endpoint: "https://app.netlify.com/authorize",
6729
+ token_endpoint: "https://api.netlify.com/oauth/token",
6730
+ response_type: "code",
6731
+ grant_types_supported: ["authorization_code", "refresh_token"]
6732
+ }
6733
+ };
6734
+ return {
6735
+ id: "netlify",
6736
+ name: "Netlify",
6737
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/netlify.png",
6738
+ description: "Manage Netlify sites, deploys, builds, and environment variables",
6739
+ category: "Infrastructure",
6740
+ tools: [...NETLIFY_TOOLS],
6741
+ oauth,
6742
+ async onInit(_client) {
6743
+ logger52.debug("Netlify integration initialized");
6744
+ },
6745
+ async onAfterConnect(_client) {
6746
+ logger52.debug("Netlify integration connected");
6747
+ }
6748
+ };
6749
+ }
6750
+ // src/integrations/redis.ts
6751
+ var logger53 = createLogger("Redis Cloud");
6752
+ var REDIS_TOOLS = [
6753
+ "redis_list_subscriptions",
6754
+ "redis_get_subscription",
6755
+ "redis_list_fixed_subscriptions",
6756
+ "redis_get_fixed_subscription",
6757
+ "redis_list_databases",
6758
+ "redis_get_database",
6759
+ "redis_create_database",
6760
+ "redis_update_database",
6761
+ "redis_delete_database",
6762
+ "redis_list_essentials_databases",
6763
+ "redis_get_essentials_database",
6764
+ "redis_create_essentials_database",
6765
+ "redis_update_essentials_database",
6766
+ "redis_delete_essentials_database",
6767
+ "redis_get_task",
6768
+ "redis_list_logs"
6769
+ ];
6770
+ function encodeRedisCloudBearerToken(accountKey, secretKey) {
6771
+ const json = JSON.stringify({ account_key: accountKey, secret_key: secretKey });
6772
+ let b64;
6773
+ if (typeof Buffer !== "undefined") {
6774
+ b64 = Buffer.from(json, "utf8").toString("base64");
6775
+ } else {
6776
+ const bytes = new TextEncoder().encode(json);
6777
+ let binary = "";
6778
+ for (let i = 0;i < bytes.length; i++) {
6779
+ binary += String.fromCharCode(bytes[i]);
6780
+ }
6781
+ b64 = btoa(binary);
6782
+ }
6783
+ return `redis_cloud:${b64}`;
6784
+ }
6785
+ function redisIntegration(options = {}) {
6786
+ const accountKey = options.accountKey ?? getEnv("REDIS_CLOUD_ACCOUNT_KEY");
6787
+ const secretKey = options.secretKey ?? getEnv("REDIS_CLOUD_SECRET_KEY");
6788
+ if (!accountKey || !secretKey) {
6789
+ throw new Error("redisIntegration requires accountKey/secretKey or REDIS_CLOUD_ACCOUNT_KEY and REDIS_CLOUD_SECRET_KEY environment variables");
6790
+ }
6791
+ const bearer = encodeRedisCloudBearerToken(accountKey, secretKey);
6792
+ return {
6793
+ id: "redis",
6794
+ name: "Redis Cloud",
6795
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/redis.png",
6796
+ description: "Manage Redis Cloud subscriptions, databases, async tasks, and audit logs via the REST API",
6797
+ category: "Infrastructure",
6798
+ tools: [...REDIS_TOOLS],
6799
+ authType: "apiKey",
6800
+ getHeaders() {
6801
+ return {
6802
+ Authorization: `Bearer ${bearer}`
6803
+ };
6804
+ },
6805
+ async onInit(_client) {
6806
+ logger53.debug("Redis Cloud integration initialized");
6807
+ },
6808
+ async onAfterConnect(_client) {
6809
+ logger53.debug("Redis Cloud integration connected");
6810
+ }
6811
+ };
6812
+ }
6813
+ // src/integrations/webflow.ts
6814
+ var logger54 = createLogger("Webflow");
6815
+ var WEBFLOW_TOOLS = [
6816
+ "webflow_token_introspect",
6817
+ "webflow_get_authorized_user",
6818
+ "webflow_list_sites",
6819
+ "webflow_get_site",
6820
+ "webflow_get_site_custom_domains",
6821
+ "webflow_publish_site",
6822
+ "webflow_list_site_pages",
6823
+ "webflow_list_site_collections",
6824
+ "webflow_get_collection",
6825
+ "webflow_list_collection_items",
6826
+ "webflow_list_live_collection_items",
6827
+ "webflow_get_collection_item",
6828
+ "webflow_create_collection_items",
6829
+ "webflow_update_collection_items",
6830
+ "webflow_delete_collection_items",
6831
+ "webflow_publish_collection_items",
6832
+ "webflow_list_site_forms",
6833
+ "webflow_list_site_webhooks"
6834
+ ];
6835
+ var DEFAULT_WEBFLOW_SCOPES = [
6836
+ "authorized_user:read",
6837
+ "assets:read",
6838
+ "assets:write",
6839
+ "cms:read",
6840
+ "cms:write",
6841
+ "custom_code:read",
6842
+ "custom_code:write",
6843
+ "forms:read",
6844
+ "forms:write",
6845
+ "pages:read",
6846
+ "pages:write",
6847
+ "sites:read",
6848
+ "sites:write"
6849
+ ];
6850
+ function webflowIntegration(config = {}) {
6851
+ const oauth = {
6852
+ provider: "webflow",
6853
+ clientId: config.clientId ?? getEnv("WEBFLOW_CLIENT_ID"),
6854
+ clientSecret: config.clientSecret ?? getEnv("WEBFLOW_CLIENT_SECRET"),
6855
+ scopes: config.scopes ?? [...DEFAULT_WEBFLOW_SCOPES],
6856
+ redirectUri: config.redirectUri,
6857
+ config: {
6858
+ authorization_endpoint: "https://webflow.com/oauth/authorize",
6859
+ token_endpoint: "https://api.webflow.com/oauth/access_token",
6860
+ response_type: "code",
6861
+ grant_types_supported: ["authorization_code", "refresh_token"]
6862
+ }
6863
+ };
6864
+ return {
6865
+ id: "webflow",
6866
+ name: "Webflow",
6867
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/webflow.png",
6868
+ description: "Manage Webflow sites, CMS collections, pages, forms, and publishing",
6869
+ category: "Engineering",
6870
+ tools: [...WEBFLOW_TOOLS],
6871
+ oauth,
6872
+ async onInit(_client) {
6873
+ logger54.debug("Webflow integration initialized");
6874
+ },
6875
+ async onAfterConnect(_client) {
6876
+ logger54.debug("Webflow integration connected");
6877
+ }
6878
+ };
6879
+ }
6880
+ // src/integrations/jira.ts
6881
+ var logger55 = createLogger("Jira");
6882
+ var JIRA_SCOPES = [
6883
+ "read:jira-work",
6884
+ "write:jira-work",
6885
+ "read:account",
6886
+ "offline_access"
6887
+ ];
6888
+ var JIRA_TOOLS = [
6889
+ "jira_list_projects",
6890
+ "jira_get_project",
6891
+ "jira_get_issue_types",
6892
+ "jira_search_issues",
6893
+ "jira_get_issue",
6894
+ "jira_create_issue",
6895
+ "jira_update_issue",
6896
+ "jira_get_transitions",
6897
+ "jira_transition_issue",
6898
+ "jira_add_comment",
6899
+ "jira_assign_issue",
6900
+ "jira_list_boards",
6901
+ "jira_list_sprints"
6902
+ ];
6903
+ function jiraIntegration(config = {}) {
6904
+ const oauth = {
6905
+ provider: "jira",
6906
+ clientId: config.clientId ?? getEnv("JIRA_CLIENT_ID"),
6907
+ clientSecret: config.clientSecret ?? getEnv("JIRA_CLIENT_SECRET"),
6908
+ scopes: config.scopes ?? [...JIRA_SCOPES],
6909
+ redirectUri: config.redirectUri,
6910
+ config: {
6911
+ authorization_endpoint: "https://auth.atlassian.com/authorize",
6912
+ token_endpoint: "https://auth.atlassian.com/oauth/token",
6913
+ response_type: "code",
6914
+ grant_types_supported: ["authorization_code", "refresh_token"]
6915
+ }
6916
+ };
6917
+ return {
6918
+ id: "jira",
6919
+ name: "Jira",
6920
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/jira.png",
6921
+ description: "Manage Jira issues, projects, sprints, and boards",
6922
+ category: "Engineering",
6923
+ tools: [...JIRA_TOOLS],
6924
+ oauth,
6925
+ async onInit(_client) {
6926
+ logger55.debug("Jira integration initialized");
6927
+ },
6928
+ async onAfterConnect(_client) {
6929
+ logger55.debug("Jira integration connected");
6930
+ }
6931
+ };
6932
+ }
6933
+ // src/integrations/linkedin.ts
6934
+ var logger56 = createLogger("LinkedIn");
6935
+ var LINKEDIN_SCOPES = ["openid", "profile", "email", "w_member_social"];
6936
+ var LINKEDIN_TOOLS = ["linkedin_get_userinfo", "linkedin_create_post"];
6937
+ function linkedinIntegration(config = {}) {
6938
+ const oauth = {
6939
+ provider: "linkedin",
6940
+ clientId: config.clientId ?? getEnv("LINKEDIN_CLIENT_ID"),
6941
+ clientSecret: config.clientSecret ?? getEnv("LINKEDIN_CLIENT_SECRET"),
6942
+ scopes: config.scopes ?? [...LINKEDIN_SCOPES],
6943
+ optionalScopes: config.optionalScopes,
6944
+ redirectUri: config.redirectUri,
6945
+ config: {
6946
+ authorization_endpoint: "https://www.linkedin.com/oauth/v2/authorization",
6947
+ token_endpoint: "https://www.linkedin.com/oauth/v2/accessToken",
6948
+ response_type: "code",
6949
+ grant_types_supported: ["authorization_code", "refresh_token"]
6950
+ }
6951
+ };
6952
+ return {
6953
+ id: "linkedin",
6954
+ name: "LinkedIn",
6955
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/linkedin.png",
6956
+ description: "Read LinkedIn OpenID profile data and publish member posts",
6957
+ category: "Social Media",
6958
+ tools: [...LINKEDIN_TOOLS],
6959
+ oauth,
6960
+ async onInit(_client) {
6961
+ logger56.debug("LinkedIn integration initialized");
6962
+ },
6963
+ async onAfterConnect(_client) {
6964
+ logger56.debug("LinkedIn integration connected");
6965
+ }
6966
+ };
6967
+ }
6968
+ // src/integrations/threads.ts
6969
+ var logger57 = createLogger("Threads");
6970
+ var THREADS_SCOPES = [
6971
+ "threads_basic",
6972
+ "threads_content_publish",
6973
+ "threads_read_replies",
6974
+ "threads_manage_replies",
6975
+ "threads_manage_insights"
6976
+ ];
6977
+ var THREADS_OPTIONAL_SCOPES = [
6978
+ "threads_keyword_search",
6979
+ "threads_profile_discovery",
6980
+ "threads_manage_mentions"
6981
+ ];
6982
+ var THREADS_TOOLS = [
6983
+ "threads_get_me",
6984
+ "threads_list_user_media",
6985
+ "threads_get_media",
6986
+ "threads_keyword_search",
6987
+ "threads_create_media_container",
6988
+ "threads_publish_media_container",
6989
+ "threads_get_container_status",
6990
+ "threads_list_replies",
6991
+ "threads_get_conversation",
6992
+ "threads_manage_reply",
6993
+ "threads_repost",
6994
+ "threads_delete_media"
6995
+ ];
6996
+ function threadsIntegration(config = {}) {
6997
+ const oauth = {
6998
+ provider: "threads",
6999
+ clientId: config.clientId ?? getEnv("THREADS_CLIENT_ID"),
7000
+ clientSecret: config.clientSecret ?? getEnv("THREADS_CLIENT_SECRET"),
7001
+ scopes: config.scopes ?? [...THREADS_SCOPES],
7002
+ optionalScopes: config.optionalScopes ?? [...THREADS_OPTIONAL_SCOPES],
7003
+ redirectUri: config.redirectUri,
7004
+ config: {
7005
+ authorization_endpoint: "https://threads.net/oauth/authorize",
7006
+ token_endpoint: "https://graph.threads.net/oauth/access_token",
7007
+ response_type: "code",
7008
+ grant_types_supported: ["authorization_code", "refresh_token"]
7009
+ }
7010
+ };
7011
+ return {
7012
+ id: "threads",
7013
+ name: "Threads",
7014
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/threads.png",
7015
+ description: "Publish Threads posts and manage media, replies, conversations, and keyword search",
7016
+ category: "Social Media",
7017
+ tools: [...THREADS_TOOLS],
7018
+ oauth,
7019
+ async onInit(_client) {
7020
+ logger57.debug("Threads integration initialized");
7021
+ },
7022
+ async onAfterConnect(_client) {
7023
+ logger57.debug("Threads integration connected");
7024
+ }
7025
+ };
7026
+ }
7027
+ // src/integrations/tiktok.ts
7028
+ var logger58 = createLogger("TikTok");
7029
+ var TIKTOK_SCOPES = ["user.info.basic", "video.list"];
7030
+ var TIKTOK_TOOLS = [
7031
+ "tiktok_get_user_info",
7032
+ "tiktok_list_videos",
7033
+ "tiktok_query_videos"
7034
+ ];
7035
+ function tiktokIntegration(config = {}) {
7036
+ const oauth = {
7037
+ provider: "tiktok",
7038
+ clientId: config.clientId ?? getEnv("TIKTOK_CLIENT_ID"),
7039
+ clientSecret: config.clientSecret ?? getEnv("TIKTOK_CLIENT_SECRET"),
7040
+ scopes: config.scopes ?? [...TIKTOK_SCOPES],
7041
+ optionalScopes: config.optionalScopes,
7042
+ redirectUri: config.redirectUri,
7043
+ config: {
7044
+ authorization_endpoint: "https://www.tiktok.com/v2/auth/authorize/",
7045
+ token_endpoint: "https://open.tiktokapis.com/v2/oauth/token/",
7046
+ response_type: "code",
7047
+ grant_types_supported: ["authorization_code", "refresh_token"]
7048
+ }
7049
+ };
7050
+ return {
7051
+ id: "tiktok",
7052
+ name: "TikTok",
7053
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/tiktok.png",
7054
+ description: "Read TikTok user profile data and user-authorized video metadata",
7055
+ category: "Social Media",
7056
+ tools: [...TIKTOK_TOOLS],
7057
+ oauth,
7058
+ async onInit(_client) {
7059
+ logger58.debug("TikTok integration initialized");
7060
+ },
7061
+ async onAfterConnect(_client) {
7062
+ logger58.debug("TikTok integration connected");
7063
+ }
7064
+ };
7065
+ }
7066
+ // src/integrations/trello.ts
7067
+ var logger59 = createLogger("Trello");
7068
+ var TRELLO_TOOLS = [
7069
+ "trello_get_member",
7070
+ "trello_list_boards",
7071
+ "trello_get_board",
7072
+ "trello_list_lists",
7073
+ "trello_get_list",
7074
+ "trello_list_cards",
7075
+ "trello_get_card",
7076
+ "trello_create_card",
7077
+ "trello_update_card",
7078
+ "trello_delete_card",
7079
+ "trello_add_card_comment",
7080
+ "trello_search"
7081
+ ];
7082
+ function encodeCredential(apiKey, memberToken) {
7083
+ const payload = JSON.stringify({ k: apiKey, t: memberToken });
7084
+ return `trello:${Buffer.from(payload).toString("base64url")}`;
7085
+ }
7086
+ function trelloIntegration(options = {}) {
7087
+ const apiKey = options.apiKey ?? getEnv("TRELLO_API_KEY");
7088
+ const memberToken = options.memberToken ?? getEnv("TRELLO_TOKEN");
7089
+ if (!apiKey || !memberToken) {
7090
+ throw new Error("trelloIntegration requires apiKey/memberToken or TRELLO_API_KEY/TRELLO_TOKEN");
7091
+ }
7092
+ return {
7093
+ id: "trello",
7094
+ name: "Trello",
7095
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/trello.png",
7096
+ description: "Manage Trello boards, lists, cards, comments, and search",
7097
+ category: "Productivity",
7098
+ tools: [...TRELLO_TOOLS],
7099
+ authType: "apiKey",
7100
+ getHeaders() {
7101
+ return { Authorization: `Bearer ${encodeCredential(apiKey, memberToken)}` };
7102
+ },
7103
+ async onInit(_client) {
7104
+ logger59.debug("Trello integration initialized");
7105
+ },
7106
+ async onAfterConnect(_client) {
7107
+ logger59.debug("Trello integration connected");
7108
+ }
7109
+ };
7110
+ }
7111
+ // src/integrations/typeform.ts
7112
+ var logger60 = createLogger("Typeform");
7113
+ var TYPEFORM_SCOPES = [
7114
+ "offline",
7115
+ "accounts:read",
7116
+ "forms:read",
7117
+ "forms:write",
7118
+ "responses:read",
7119
+ "workspaces:read"
7120
+ ];
7121
+ var TYPEFORM_TOOLS = [
7122
+ "typeform_get_me",
7123
+ "typeform_list_workspaces",
7124
+ "typeform_get_workspace",
7125
+ "typeform_list_forms",
7126
+ "typeform_get_form",
7127
+ "typeform_create_form",
7128
+ "typeform_update_form",
7129
+ "typeform_delete_form",
7130
+ "typeform_list_responses"
7131
+ ];
7132
+ function typeformIntegration(config = {}) {
7133
+ const oauth = {
7134
+ provider: "typeform",
7135
+ clientId: config.clientId ?? getEnv("TYPEFORM_CLIENT_ID"),
7136
+ clientSecret: config.clientSecret ?? getEnv("TYPEFORM_CLIENT_SECRET"),
7137
+ scopes: config.scopes ?? [...TYPEFORM_SCOPES],
7138
+ optionalScopes: config.optionalScopes,
7139
+ redirectUri: config.redirectUri,
7140
+ config: {
7141
+ authorization_endpoint: "https://api.typeform.com/oauth/authorize",
7142
+ token_endpoint: "https://api.typeform.com/oauth/token",
7143
+ response_type: "code",
7144
+ grant_types_supported: ["authorization_code", "refresh_token"]
7145
+ }
7146
+ };
7147
+ return {
7148
+ id: "typeform",
7149
+ name: "Typeform",
7150
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/typeform.png",
7151
+ description: "Manage Typeform workspaces, forms, and responses",
7152
+ category: "Productivity",
7153
+ tools: [...TYPEFORM_TOOLS],
7154
+ oauth,
7155
+ async onInit(_client) {
7156
+ logger60.debug("Typeform integration initialized");
7157
+ },
7158
+ async onAfterConnect(_client) {
7159
+ logger60.debug("Typeform integration connected");
7160
+ }
7161
+ };
7162
+ }
7163
+ // src/integrations/sharepoint.ts
7164
+ var logger61 = createLogger("SharePoint");
7165
+ var SHAREPOINT_SCOPES = ["Sites.ReadWrite.All", "Files.ReadWrite.All", "offline_access"];
7166
+ var SHAREPOINT_TOOLS = [
7167
+ "sharepoint_create_folder",
7168
+ "sharepoint_delete_item",
7169
+ "sharepoint_get_item",
7170
+ "sharepoint_get_site",
7171
+ "sharepoint_list_drives",
7172
+ "sharepoint_list_items",
7173
+ "sharepoint_search_files",
7174
+ "sharepoint_search_sites",
7175
+ "sharepoint_share_item",
7176
+ "sharepoint_update_item",
7177
+ "sharepoint_upload_file"
7178
+ ];
7179
+ function sharepointIntegration(config = {}) {
7180
+ const oauth = {
7181
+ provider: "sharepoint",
7182
+ clientId: config.clientId ?? getEnv("SHAREPOINT_CLIENT_ID"),
7183
+ clientSecret: config.clientSecret ?? getEnv("SHAREPOINT_CLIENT_SECRET"),
7184
+ scopes: config.scopes ?? [...SHAREPOINT_SCOPES],
7185
+ optionalScopes: config.optionalScopes,
7186
+ redirectUri: config.redirectUri,
7187
+ config: {
7188
+ authorization_endpoint: "https://login.microsoftonline.com/common/oauth2/v2.0/authorize",
7189
+ token_endpoint: "https://login.microsoftonline.com/common/oauth2/v2.0/token",
7190
+ response_type: "code",
7191
+ grant_types_supported: ["authorization_code", "refresh_token"]
7192
+ }
7193
+ };
7194
+ return {
7195
+ id: "sharepoint",
7196
+ name: "SharePoint",
7197
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/sharepoint.png",
7198
+ description: "Search SharePoint sites and manage drives, files, folders, and sharing links",
7199
+ category: "Productivity",
7200
+ tools: [...SHAREPOINT_TOOLS],
7201
+ oauth,
7202
+ async onInit(_client) {
7203
+ logger61.debug("SharePoint integration initialized");
7204
+ },
7205
+ async onAfterConnect(_client) {
7206
+ logger61.debug("SharePoint integration connected");
7207
+ }
7208
+ };
7209
+ }
7210
+ // src/integrations/xero.ts
7211
+ var logger62 = createLogger("Xero");
7212
+ var XERO_SCOPES = [
7213
+ "openid",
7214
+ "profile",
7215
+ "email",
7216
+ "offline_access",
7217
+ "accounting.settings",
7218
+ "accounting.transactions",
7219
+ "accounting.contacts",
7220
+ "accounting.attachments"
7221
+ ];
7222
+ var XERO_TOOLS = [
7223
+ "xero_list_connections",
7224
+ "xero_get_organisation",
7225
+ "xero_list_accounts",
7226
+ "xero_list_contacts",
7227
+ "xero_get_contact",
7228
+ "xero_create_contact",
7229
+ "xero_list_invoices",
7230
+ "xero_get_invoice",
7231
+ "xero_create_invoice",
7232
+ "xero_list_bank_transactions"
7233
+ ];
7234
+ function xeroIntegration(config = {}) {
7235
+ const oauth = {
7236
+ provider: "xero",
7237
+ clientId: config.clientId ?? getEnv("XERO_CLIENT_ID"),
7238
+ clientSecret: config.clientSecret ?? getEnv("XERO_CLIENT_SECRET"),
7239
+ scopes: config.scopes ?? [...XERO_SCOPES],
7240
+ optionalScopes: config.optionalScopes,
7241
+ redirectUri: config.redirectUri,
7242
+ config: {
7243
+ authorization_endpoint: "https://login.xero.com/identity/connect/authorize",
7244
+ token_endpoint: "https://identity.xero.com/connect/token",
7245
+ response_type: "code",
7246
+ grant_types_supported: ["authorization_code", "refresh_token"]
7247
+ }
7248
+ };
7249
+ return {
7250
+ id: "xero",
7251
+ name: "Xero",
7252
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/xero.png",
7253
+ description: "Manage Xero organisations, accounts, contacts, invoices, and bank transactions",
7254
+ category: "Finance",
7255
+ tools: [...XERO_TOOLS],
7256
+ oauth,
7257
+ async onInit(_client) {
7258
+ logger62.debug("Xero integration initialized");
7259
+ },
7260
+ async onAfterConnect(_client) {
7261
+ logger62.debug("Xero integration connected");
7262
+ }
7263
+ };
7264
+ }
7265
+ // src/integrations/salesforce.ts
7266
+ var logger63 = createLogger("Salesforce");
7267
+ var SALESFORCE_TOOLS = [
7268
+ "salesforce_query",
7269
+ "salesforce_get_limits",
7270
+ "salesforce_describe_global",
7271
+ "salesforce_sobject_describe",
7272
+ "salesforce_sobject_get",
7273
+ "salesforce_sobject_create",
7274
+ "salesforce_sobject_update",
7275
+ "salesforce_sobject_delete"
7276
+ ];
7277
+ function salesforceIntegration(config = {}) {
7278
+ const oauth = {
7279
+ provider: "salesforce",
7280
+ clientId: config.clientId ?? getEnv("SALESFORCE_CLIENT_ID"),
7281
+ clientSecret: config.clientSecret ?? getEnv("SALESFORCE_CLIENT_SECRET"),
7282
+ scopes: config.scopes ?? ["api", "refresh_token", "offline_access"],
7283
+ optionalScopes: config.optionalScopes,
7284
+ redirectUri: config.redirectUri,
7285
+ config: {
7286
+ ...config,
7287
+ subdomain: config.subdomain ?? getEnv("SALESFORCE_SUBDOMAIN")
7288
+ }
7289
+ };
7290
+ return {
7291
+ id: "salesforce",
7292
+ name: "Salesforce",
7293
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/salesforce.png",
7294
+ tools: [...SALESFORCE_TOOLS],
7295
+ oauth,
7296
+ async onInit(_client) {
7297
+ logger63.debug("Salesforce integration initialized");
7298
+ },
7299
+ async onAfterConnect(_client) {
7300
+ logger63.debug("Salesforce integration connected");
7301
+ }
7302
+ };
7303
+ }
7304
+ // src/integrations/attio.ts
7305
+ var logger64 = createLogger("Attio");
7306
+ var ATTIO_SCOPES = [
7307
+ "record_permission:read-write",
7308
+ "object_configuration:read",
7309
+ "user_management:read",
7310
+ "task:read"
7311
+ ];
7312
+ var ATTIO_TOOLS = [
7313
+ "attio_get_self",
7314
+ "attio_query_people",
7315
+ "attio_get_person",
7316
+ "attio_create_person",
7317
+ "attio_update_person",
7318
+ "attio_assert_person",
7319
+ "attio_query_companies",
7320
+ "attio_get_company",
7321
+ "attio_create_company",
7322
+ "attio_update_company",
7323
+ "attio_assert_company",
7324
+ "attio_list_tasks",
7325
+ "attio_get_task"
7326
+ ];
7327
+ function attioIntegration(config = {}) {
7328
+ const oauth = {
7329
+ provider: "attio",
7330
+ clientId: config.clientId ?? getEnv("ATTIO_CLIENT_ID"),
7331
+ clientSecret: config.clientSecret ?? getEnv("ATTIO_CLIENT_SECRET"),
7332
+ scopes: config.scopes ?? [...ATTIO_SCOPES],
7333
+ optionalScopes: config.optionalScopes,
7334
+ redirectUri: config.redirectUri,
7335
+ config: {
7336
+ authorization_endpoint: "https://app.attio.com/authorize",
7337
+ token_endpoint: "https://app.attio.com/oauth/token",
7338
+ response_type: "code",
7339
+ grant_types_supported: ["authorization_code", "refresh_token"]
7340
+ }
7341
+ };
7342
+ return {
7343
+ id: "attio",
7344
+ name: "Attio",
7345
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/attio.png",
7346
+ description: "Manage Attio people, companies, records, and tasks",
7347
+ category: "Business",
7348
+ tools: [...ATTIO_TOOLS],
7349
+ oauth,
7350
+ async onInit(_client) {
7351
+ logger64.debug("Attio integration initialized");
7352
+ },
7353
+ async onAfterConnect(_client) {
7354
+ logger64.debug("Attio integration connected");
7355
+ }
7356
+ };
7357
+ }
7358
+ // src/integrations/gchat.ts
7359
+ var logger65 = createLogger("Google Chat");
7360
+ var GCHAT_SCOPES = [
7361
+ "https://www.googleapis.com/auth/chat.messages",
7362
+ "https://www.googleapis.com/auth/chat.spaces.readonly"
7363
+ ];
7364
+ var GCHAT_TOOLS = [
7365
+ "gchat_delete_message",
7366
+ "gchat_get_message",
7367
+ "gchat_get_space",
7368
+ "gchat_list_members",
7369
+ "gchat_list_messages",
7370
+ "gchat_list_spaces",
7371
+ "gchat_send_message",
7372
+ "gchat_update_message"
7373
+ ];
7374
+ function gchatIntegration(config = {}) {
7375
+ const oauth = {
7376
+ provider: "gchat",
7377
+ clientId: config.clientId ?? getEnv("GCHAT_CLIENT_ID"),
7378
+ clientSecret: config.clientSecret ?? getEnv("GCHAT_CLIENT_SECRET"),
7379
+ scopes: config.scopes ?? [...GCHAT_SCOPES],
7380
+ optionalScopes: config.optionalScopes,
7381
+ redirectUri: config.redirectUri,
7382
+ config: {
7383
+ authorization_endpoint: "https://accounts.google.com/o/oauth2/v2/auth",
7384
+ token_endpoint: "https://oauth2.googleapis.com/token",
7385
+ response_type: "code",
7386
+ grant_types_supported: ["authorization_code", "refresh_token"]
7387
+ }
7388
+ };
7389
+ return {
7390
+ id: "gchat",
7391
+ name: "Google Chat",
7392
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/google_chat.png",
7393
+ description: "List Google Chat spaces and manage messages and memberships",
7394
+ category: "Communication",
7395
+ tools: [...GCHAT_TOOLS],
7396
+ oauth,
7397
+ async onInit(_client) {
7398
+ logger65.debug("Google Chat integration initialized");
7399
+ },
7400
+ async onAfterConnect(_client) {
7401
+ logger65.debug("Google Chat integration connected");
7402
+ }
7403
+ };
7404
+ }
7405
+ // src/integrations/shopify.ts
7406
+ var logger66 = createLogger("Shopify");
7407
+ var SHOPIFY_SCOPES = [
7408
+ "read_products",
7409
+ "write_products",
7410
+ "read_orders",
7411
+ "write_orders",
7412
+ "read_customers",
7413
+ "write_customers",
7414
+ "read_inventory",
7415
+ "write_inventory",
7416
+ "read_content",
7417
+ "write_content",
7418
+ "read_fulfillments",
7419
+ "write_fulfillments",
7420
+ "read_analytics"
7421
+ ];
7422
+ var SHOPIFY_TOOLS = [
7423
+ "shopify_admin_graphql",
7424
+ "shopify_rest_get",
7425
+ "shopify_rest_post",
7426
+ "shopify_rest_put",
7427
+ "shopify_rest_delete",
7428
+ "shopify_get_shop"
7429
+ ];
7430
+ function shopifyIntegration(config = {}) {
7431
+ const oauth = {
7432
+ provider: "shopify",
7433
+ clientId: config.clientId ?? getEnv("SHOPIFY_CLIENT_ID"),
7434
+ clientSecret: config.clientSecret ?? getEnv("SHOPIFY_CLIENT_SECRET"),
7435
+ scopes: config.scopes ?? [...SHOPIFY_SCOPES],
7436
+ optionalScopes: config.optionalScopes,
7437
+ redirectUri: config.redirectUri,
7438
+ config: {
7439
+ authorization_endpoint: "https://shopify.oauth.placeholder/admin/oauth/authorize",
7440
+ token_endpoint: "https://shopify.oauth.placeholder/admin/oauth/access_token",
7441
+ response_type: "code",
7442
+ grant_types_supported: ["authorization_code"],
7443
+ subdomain: config.shop ?? getEnv("SHOPIFY_SHOP")
7444
+ }
7445
+ };
7446
+ return {
7447
+ id: "shopify",
7448
+ name: "Shopify",
7449
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/shopify.png",
7450
+ description: "Route-complete Shopify Admin access through GraphQL and REST tools",
7451
+ category: "Business",
7452
+ tools: [...SHOPIFY_TOOLS],
7453
+ oauth,
7454
+ async onInit(_client) {
7455
+ logger66.debug("Shopify integration initialized");
7456
+ },
7457
+ async onAfterConnect(_client) {
7458
+ logger66.debug("Shopify integration connected");
7459
+ }
7460
+ };
7461
+ }
7462
+ // src/integrations/convex.ts
7463
+ var logger67 = createLogger("Convex");
7464
+ var CONVEX_TOOLS = [
7465
+ "convex_management_token_details",
7466
+ "convex_management_list_projects",
7467
+ "convex_management_create_project",
7468
+ "convex_management_get_project",
7469
+ "convex_management_delete_project",
7470
+ "convex_management_list_deployments",
7471
+ "convex_management_list_team_deployments",
7472
+ "convex_management_get_deployment",
7473
+ "convex_management_create_deployment",
7474
+ "convex_management_update_deployment",
7475
+ "convex_management_delete_deployment",
7476
+ "convex_management_list_deployment_regions",
7477
+ "convex_management_list_deployment_classes",
7478
+ "convex_management_list_default_environment_variables",
7479
+ "convex_management_update_default_environment_variables",
7480
+ "convex_deployment_list_environment_variables",
7481
+ "convex_deployment_update_environment_variables"
7482
+ ];
7483
+ function convexIntegration(options = {}) {
7484
+ const accessToken = options.accessToken ?? getEnv("CONVEX_ACCESS_TOKEN");
7485
+ if (!accessToken) {
7486
+ throw new Error("convexIntegration requires accessToken or CONVEX_ACCESS_TOKEN");
7487
+ }
7488
+ return {
7489
+ id: "convex",
7490
+ name: "Convex",
7491
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/convex.png",
7492
+ description: "Manage Convex projects, deployments, regions, classes, and environment variables",
7493
+ category: "Infrastructure",
7494
+ tools: [...CONVEX_TOOLS],
7495
+ authType: "apiKey",
7496
+ getHeaders() {
7497
+ return { Authorization: `Bearer ${accessToken}` };
7498
+ },
7499
+ async onInit(_client) {
7500
+ logger67.debug("Convex integration initialized");
7501
+ },
7502
+ async onAfterConnect(_client) {
7503
+ logger67.debug("Convex integration connected");
7504
+ }
7505
+ };
7506
+ }
7507
+ // src/integrations/etoro.ts
7508
+ var logger68 = createLogger("eToro");
7509
+ var ETORO_TOOLS = [
7510
+ "etoro_get_identity",
7511
+ "etoro_get_portfolio",
7512
+ "etoro_search_instruments",
7513
+ "etoro_get_instrument_rates",
7514
+ "etoro_list_trade_history",
7515
+ "etoro_list_watchlists"
7516
+ ];
7517
+ function etoroIntegration(options = {}) {
7518
+ const publicApiKey = options.publicApiKey ?? getEnv("ETORO_PUBLIC_API_KEY");
7519
+ const userKey = options.userKey ?? getEnv("ETORO_USER_KEY");
7520
+ if (!publicApiKey || !userKey) {
7521
+ throw new Error("etoroIntegration requires publicApiKey/userKey or ETORO_PUBLIC_API_KEY/ETORO_USER_KEY");
7522
+ }
7523
+ return {
7524
+ id: "etoro",
7525
+ name: "eToro",
7526
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/etoro.png",
7527
+ description: "Access eToro Public API identity, portfolio, market data, trade history, and watchlists",
7528
+ category: "Finance",
7529
+ tools: [...ETORO_TOOLS],
7530
+ authType: "apiKey",
7531
+ getHeaders() {
7532
+ return {
7533
+ "X-Api-Key": publicApiKey,
7534
+ "X-User-Key": userKey
7535
+ };
7536
+ },
7537
+ async onInit(_client) {
7538
+ logger68.debug("eToro integration initialized");
7539
+ },
7540
+ async onAfterConnect(_client) {
7541
+ logger68.debug("eToro integration connected");
7542
+ }
7543
+ };
7544
+ }
7545
+ // src/integrations/alpaca.ts
7546
+ var logger69 = createLogger("Alpaca");
7547
+ var ALPACA_TOOLS = [
7548
+ "alpaca_get_account",
7549
+ "alpaca_list_positions",
7550
+ "alpaca_get_position",
7551
+ "alpaca_list_orders",
7552
+ "alpaca_get_order",
7553
+ "alpaca_create_order",
7554
+ "alpaca_cancel_order",
7555
+ "alpaca_cancel_all_orders",
7556
+ "alpaca_get_clock",
7557
+ "alpaca_get_calendar",
7558
+ "alpaca_list_assets",
7559
+ "alpaca_get_asset",
7560
+ "alpaca_get_portfolio_history"
7561
+ ];
7562
+ function alpacaIntegration(options = {}) {
7563
+ const apiKeyId = options.apiKeyId ?? getEnv("ALPACA_API_KEY_ID");
7564
+ const apiSecretKey = options.apiSecretKey ?? getEnv("ALPACA_API_SECRET_KEY");
7565
+ if (!apiKeyId || !apiSecretKey) {
7566
+ throw new Error("alpacaIntegration requires apiKeyId and apiSecretKey (or ALPACA_API_KEY_ID and ALPACA_API_SECRET_KEY)");
7567
+ }
7568
+ const environment = options.environment ?? "paper";
7569
+ return {
7570
+ id: "alpaca",
7571
+ name: "Alpaca",
7572
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/alpaca.png",
7573
+ description: "Trade US equities and crypto with Alpaca: account, orders, positions, clock, and assets",
7574
+ category: "Finance",
7575
+ tools: [...ALPACA_TOOLS],
7576
+ authType: "apiKey",
7577
+ getHeaders() {
7578
+ const headers = {
7579
+ "APCA-API-KEY-ID": apiKeyId,
7580
+ "APCA-API-SECRET-KEY": apiSecretKey
7581
+ };
7582
+ if (environment === "live") {
7583
+ headers["X-Integrate-Alpaca-Environment"] = "live";
7584
+ }
7585
+ return headers;
7586
+ },
7587
+ async onInit(_client) {
7588
+ logger69.debug("Alpaca integration initialized");
7589
+ },
7590
+ async onAfterConnect(_client) {
7591
+ logger69.debug("Alpaca integration connected");
7592
+ }
7593
+ };
7594
+ }
7595
+ // src/integrations/neon.ts
7596
+ var logger70 = createLogger("Neon");
7597
+ var NEON_TOOLS = [
7598
+ "neon_list_api_keys",
7599
+ "neon_create_api_key",
7600
+ "neon_revoke_api_key",
7601
+ "neon_list_organizations",
7602
+ "neon_list_projects",
7603
+ "neon_list_shared_projects",
7604
+ "neon_create_project",
7605
+ "neon_get_project",
7606
+ "neon_update_project",
7607
+ "neon_delete_project",
7608
+ "neon_recover_project",
7609
+ "neon_list_branches",
7610
+ "neon_create_branch",
7611
+ "neon_get_branch",
7612
+ "neon_delete_branch",
7613
+ "neon_list_operations",
7614
+ "neon_get_operation",
7615
+ "neon_get_connection_uri"
7616
+ ];
7617
+ function neonIntegration(options = {}) {
7618
+ const apiKey = options.apiKey ?? getEnv("NEON_API_KEY");
7619
+ if (!apiKey) {
7620
+ throw new Error("neonIntegration requires apiKey or NEON_API_KEY environment variable");
7621
+ }
7622
+ return {
7623
+ id: "neon",
7624
+ name: "Neon",
7625
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/neon.png",
7626
+ description: "Manage Neon Postgres projects, branches, API keys, and connection strings",
7627
+ category: "Infrastructure",
7628
+ tools: [...NEON_TOOLS],
7629
+ authType: "apiKey",
7630
+ getHeaders() {
7631
+ return {
7632
+ Authorization: `Bearer ${apiKey}`
7633
+ };
7634
+ },
7635
+ async onInit(_client) {
7636
+ logger70.debug("Neon integration initialized");
7637
+ },
7638
+ async onAfterConnect(_client) {
7639
+ logger70.debug("Neon integration connected");
7640
+ }
7641
+ };
7642
+ }
7643
+ // src/integrations/workos.ts
7644
+ var logger71 = createLogger("WorkOS");
7645
+ var WORKOS_TOOLS = [
7646
+ "workos_list_organizations",
7647
+ "workos_get_organization",
7648
+ "workos_create_organization",
7649
+ "workos_update_organization",
7650
+ "workos_list_users",
7651
+ "workos_get_user",
7652
+ "workos_list_organization_memberships",
7653
+ "workos_list_directories",
7654
+ "workos_get_directory",
7655
+ "workos_list_directory_users",
7656
+ "workos_get_directory_user"
7657
+ ];
7658
+ function workosIntegration(options = {}) {
7659
+ const apiKey = options.apiKey ?? getEnv("WORKOS_API_KEY");
7660
+ if (!apiKey) {
7661
+ throw new Error("workosIntegration requires apiKey or WORKOS_API_KEY environment variable");
7662
+ }
7663
+ return {
7664
+ id: "workos",
7665
+ name: "WorkOS",
7666
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/workos.png",
7667
+ description: "Manage WorkOS organizations, AuthKit users, memberships, and directory sync",
7668
+ category: "Infrastructure",
7669
+ tools: [...WORKOS_TOOLS],
7670
+ authType: "apiKey",
7671
+ getHeaders() {
7672
+ return {
7673
+ Authorization: `Bearer ${apiKey}`
7674
+ };
7675
+ },
7676
+ async onInit(_client) {
7677
+ logger71.debug("WorkOS integration initialized");
7678
+ },
7679
+ async onAfterConnect(_client) {
7680
+ logger71.debug("WorkOS integration connected");
7681
+ }
7682
+ };
7683
+ }
7684
+ // src/integrations/workday.ts
7685
+ var logger72 = createLogger("Workday");
7686
+ var WORKDAY_TOOLS = [
7687
+ "workday_list_workers",
7688
+ "workday_get_worker"
7689
+ ];
7690
+ function workdayIntegration(config = {}) {
7691
+ const oauth = {
7692
+ provider: "workday",
7693
+ clientId: config.clientId ?? getEnv("WORKDAY_CLIENT_ID"),
7694
+ clientSecret: config.clientSecret ?? getEnv("WORKDAY_CLIENT_SECRET"),
7695
+ scopes: config.scopes,
7696
+ redirectUri: config.redirectUri,
7697
+ config: {
7698
+ subdomain: config.subdomain ?? getEnv("WORKDAY_TENANT_DESCRIPTOR")
7699
+ }
7700
+ };
7701
+ return {
7702
+ id: "workday",
7703
+ name: "Workday",
7704
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/workday.png",
7705
+ description: "Query Workday workers via the tenant REST API",
7706
+ category: "Business",
7707
+ tools: [...WORKDAY_TOOLS],
7708
+ oauth,
7709
+ async onInit(_client) {
7710
+ logger72.debug("Workday integration initialized");
7711
+ },
7712
+ async onAfterConnect(_client) {
7713
+ logger72.debug("Workday integration connected");
7714
+ }
7715
+ };
7716
+ }
7717
+ // src/integrations/tldraw.ts
7718
+ var TLDRAW_TOOLS = [
7719
+ "tldraw_unfurl_url",
7720
+ "tldraw_create_room_snapshot",
7721
+ "tldraw_get_room_snapshot",
7722
+ "tldraw_get_published_snapshot",
7723
+ "tldraw_get_readonly_slug"
7724
+ ];
7725
+ function tldrawIntegration(options = {}) {
7726
+ const apiKey = options.apiKey ?? getEnv("TLDRAW_API_KEY");
7727
+ return {
7728
+ id: "tldraw",
7729
+ name: "tldraw",
7730
+ tools: [...TLDRAW_TOOLS],
7731
+ authType: apiKey ? "apiKey" : undefined,
7732
+ getHeaders: apiKey ? () => ({ Authorization: `Bearer ${apiKey}` }) : undefined
7733
+ };
7734
+ }
7735
+ // src/integrations/upstash.ts
7736
+ var logger73 = createLogger("Upstash");
7737
+ var UPSTASH_TOOLS = [
7738
+ "upstash_redis_run",
7739
+ "upstash_redis_get",
7740
+ "upstash_redis_set",
7741
+ "upstash_redis_del",
7742
+ "upstash_qstash_publish"
7743
+ ];
7744
+ function upstashIntegration(options = {}) {
7745
+ const redisUrl = options.redisUrl ?? getEnv("UPSTASH_REDIS_REST_URL");
7746
+ const redisToken = options.redisToken ?? getEnv("UPSTASH_REDIS_REST_TOKEN");
7747
+ const qstashToken = options.qstashToken ?? getEnv("QSTASH_TOKEN");
7748
+ const hasRedis = !!(redisUrl && redisToken);
7749
+ const onlyPartialRedis = !!redisUrl && !redisToken || !redisUrl && !!redisToken;
7750
+ if (onlyPartialRedis) {
7751
+ throw new Error("upstashIntegration requires both redisUrl and redisToken for Redis tools (or omit both for QStash-only)");
7752
+ }
7753
+ if (!hasRedis && !qstashToken) {
7754
+ throw new Error("upstashIntegration requires Redis credentials (UPSTASH_REDIS_REST_URL + UPSTASH_REDIS_REST_TOKEN) and/or QSTASH_TOKEN");
7755
+ }
7756
+ return {
7757
+ id: "upstash",
7758
+ name: "Upstash",
7759
+ logoUrl: "https://avatars.githubusercontent.com/u/74989412?s=200&v=4",
7760
+ description: "Serverless Redis (REST), QStash messaging, and HTTP APIs",
7761
+ category: "Infrastructure",
7762
+ tools: [...UPSTASH_TOOLS],
7763
+ authType: "apiKey",
7764
+ getHeaders() {
7765
+ const headers = {};
7766
+ if (hasRedis) {
7767
+ headers["X-Upstash-Redis-Rest-Url"] = redisUrl;
7768
+ headers["X-Upstash-Redis-Rest-Token"] = redisToken;
7769
+ }
7770
+ if (qstashToken) {
7771
+ headers["X-Qstash-Token"] = qstashToken;
7772
+ }
7773
+ return headers;
7774
+ },
7775
+ async onInit(_client) {
7776
+ logger73.debug("Upstash integration initialized");
7777
+ },
7778
+ async onAfterConnect(_client) {
7779
+ logger73.debug("Upstash integration connected");
7780
+ }
7781
+ };
7782
+ }
7783
+ // src/integrations/granola.ts
7784
+ var GRANOLA_TOOLS = [
7785
+ "granola_list_notes",
7786
+ "granola_get_note",
7787
+ "granola_list_folders"
7788
+ ];
7789
+ function granolaIntegration(options) {
7790
+ if (!options.apiKey) {
7791
+ throw new Error("granolaIntegration requires an apiKey");
7792
+ }
7793
+ return {
7794
+ id: "granola",
7795
+ name: "Granola",
7796
+ tools: [...GRANOLA_TOOLS],
7797
+ authType: "apiKey",
7798
+ getHeaders() {
7799
+ return {
7800
+ Authorization: `Bearer ${options.apiKey}`
7801
+ };
7802
+ }
7803
+ };
7804
+ }
7805
+ // src/integrations/mercury.ts
7806
+ var MERCURY_TOOLS = [
7807
+ "mercury_get_organization",
7808
+ "mercury_list_accounts",
7809
+ "mercury_get_account",
7810
+ "mercury_get_account_cards",
7811
+ "mercury_list_account_transactions",
7812
+ "mercury_get_account_transaction",
7813
+ "mercury_list_account_statements",
7814
+ "mercury_download_statement_pdf",
7815
+ "mercury_list_transactions",
7816
+ "mercury_get_transaction",
7817
+ "mercury_update_transaction",
7818
+ "mercury_upload_transaction_attachment",
7819
+ "mercury_list_cards",
7820
+ "mercury_get_card",
7821
+ "mercury_create_card",
7822
+ "mercury_update_card",
7823
+ "mercury_freeze_card",
7824
+ "mercury_unfreeze_card",
7825
+ "mercury_cancel_card",
7826
+ "mercury_list_categories",
7827
+ "mercury_create_category",
7828
+ "mercury_update_category",
7829
+ "mercury_list_credit_accounts",
7830
+ "mercury_list_users",
7831
+ "mercury_get_user",
7832
+ "mercury_list_recipients",
7833
+ "mercury_get_recipient",
7834
+ "mercury_create_recipient",
7835
+ "mercury_update_recipient",
7836
+ "mercury_list_recipient_attachments",
7837
+ "mercury_upload_recipient_attachment",
7838
+ "mercury_list_customers",
7839
+ "mercury_get_customer",
7840
+ "mercury_create_customer",
7841
+ "mercury_update_customer",
7842
+ "mercury_delete_customer",
7843
+ "mercury_list_invoices",
7844
+ "mercury_get_invoice",
7845
+ "mercury_create_invoice",
7846
+ "mercury_update_invoice",
7847
+ "mercury_cancel_invoice",
7848
+ "mercury_list_invoice_attachments",
7849
+ "mercury_get_attachment",
7850
+ "mercury_download_invoice_pdf",
7851
+ "mercury_list_treasury_accounts",
7852
+ "mercury_list_treasury_transactions",
7853
+ "mercury_list_treasury_statements",
7854
+ "mercury_list_events",
7855
+ "mercury_get_event",
7856
+ "mercury_list_send_money_requests",
7857
+ "mercury_get_send_money_request",
7858
+ "mercury_list_safe_requests",
7859
+ "mercury_get_safe_request",
7860
+ "mercury_download_safe_request_document",
7861
+ "mercury_list_webhooks",
7862
+ "mercury_get_webhook",
7863
+ "mercury_create_webhook",
7864
+ "mercury_update_webhook",
7865
+ "mercury_delete_webhook",
7866
+ "mercury_verify_webhook",
7867
+ "mercury_create_internal_transfer",
7868
+ "mercury_send_money",
7869
+ "mercury_request_send_money"
7870
+ ];
7871
+ function mercuryIntegration(options) {
7872
+ if (!options.apiKey) {
7873
+ throw new Error("mercuryIntegration requires an apiKey");
7874
+ }
7875
+ return {
7876
+ id: "mercury",
7877
+ name: "Mercury",
7878
+ tools: [...MERCURY_TOOLS],
7879
+ authType: "apiKey",
7880
+ getHeaders() {
7881
+ return {
7882
+ Authorization: `Bearer ${options.apiKey}`
7883
+ };
7884
+ }
7885
+ };
7886
+ }
7887
+ // src/integrations/mailchimp.ts
7888
+ var MAILCHIMP_TOOLS = [
7889
+ "mailchimp_ping",
7890
+ "mailchimp_list_audiences",
7891
+ "mailchimp_get_audience",
7892
+ "mailchimp_list_members",
7893
+ "mailchimp_get_member",
7894
+ "mailchimp_add_or_update_member",
7895
+ "mailchimp_archive_member",
7896
+ "mailchimp_list_campaigns"
7897
+ ];
7898
+ function mailchimpIntegration(config = {}) {
7899
+ const oauth = {
7900
+ provider: "mailchimp",
7901
+ clientId: config.clientId ?? getEnv("MAILCHIMP_CLIENT_ID"),
7902
+ clientSecret: config.clientSecret ?? getEnv("MAILCHIMP_CLIENT_SECRET"),
7903
+ scopes: config.scopes ?? [],
7904
+ optionalScopes: config.optionalScopes,
7905
+ redirectUri: config.redirectUri
7906
+ };
7907
+ return {
7908
+ id: "mailchimp",
7909
+ name: "Mailchimp",
7910
+ tools: [...MAILCHIMP_TOOLS],
7911
+ oauth
7912
+ };
7913
+ }
7914
+ // src/integrations/aws.ts
7915
+ var logger74 = createLogger("AWS");
7916
+ var AWS_TOOLS = [
7917
+ "aws_sts_get_caller_identity",
7918
+ "aws_ec2_describe_regions",
7919
+ "aws_ec2_describe_instances",
7920
+ "aws_s3_list_buckets",
7921
+ "aws_lambda_list_functions",
7922
+ "aws_cloudformation_list_stacks",
7923
+ "aws_iam_list_account_aliases"
7924
+ ];
7925
+ function resolveCredentials(opts) {
7926
+ const c = opts.credentials;
7927
+ const accessKeyId = c?.accessKeyId ?? getEnv("AWS_ACCESS_KEY_ID");
7928
+ const secretAccessKey = c?.secretAccessKey ?? getEnv("AWS_SECRET_ACCESS_KEY");
7929
+ if (!accessKeyId || !secretAccessKey) {
7930
+ throw new Error("awsIntegration requires accessKeyId and secretAccessKey (or AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY)");
7931
+ }
7932
+ return {
7933
+ accessKeyId,
7934
+ secretAccessKey,
7935
+ sessionToken: c?.sessionToken ?? getEnv("AWS_SESSION_TOKEN"),
7936
+ region: c?.region ?? getEnv("AWS_REGION") ?? getEnv("AWS_DEFAULT_REGION")
7937
+ };
7938
+ }
7939
+ function encodeAwsCredentialsPayload(c) {
7940
+ const o = {
7941
+ accessKeyId: c.accessKeyId,
7942
+ secretAccessKey: c.secretAccessKey
7943
+ };
7944
+ if (c.sessionToken) {
7945
+ o.sessionToken = c.sessionToken;
7946
+ }
7947
+ if (c.region) {
7948
+ o.region = c.region;
7949
+ }
7950
+ return JSON.stringify(o);
7951
+ }
7952
+ function awsIntegration(options = {}) {
7953
+ const creds = resolveCredentials(options);
7954
+ return {
7955
+ id: "aws",
7956
+ name: "Amazon Web Services",
7957
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/aws.png",
7958
+ description: "Query AWS accounts and resources using SigV4 (control-plane read APIs: STS, EC2, S3, Lambda, CloudFormation, IAM).",
7959
+ category: "Infrastructure",
7960
+ tools: [...AWS_TOOLS],
7961
+ authType: "apiKey",
7962
+ getHeaders() {
7963
+ return {
7964
+ Authorization: `Bearer ${encodeAwsCredentialsPayload(creds)}`
7965
+ };
7966
+ },
7967
+ async onInit(_client) {
7968
+ logger74.debug("AWS integration initialized");
7969
+ },
7970
+ async onAfterConnect(_client) {
7971
+ logger74.debug("AWS integration connected");
7972
+ }
7973
+ };
7974
+ }
7975
+ // src/integrations/wix.ts
7976
+ var logger75 = createLogger("Wix");
7977
+ var WIX_TOOLS = [
7978
+ "wix_query_products",
7979
+ "wix_get_product",
7980
+ "wix_create_product",
7981
+ "wix_update_product",
7982
+ "wix_search_orders",
7983
+ "wix_get_order"
7984
+ ];
7985
+ function wixIntegration(options = {}) {
7986
+ const apiKey = options.apiKey ?? getEnv("WIX_API_KEY");
7987
+ const siteId = options.siteId ?? getEnv("WIX_SITE_ID");
7988
+ if (!apiKey) {
7989
+ throw new Error("wixIntegration requires apiKey or WIX_API_KEY environment variable");
7990
+ }
7991
+ if (!siteId) {
7992
+ throw new Error("wixIntegration requires siteId or WIX_SITE_ID environment variable");
7993
+ }
7994
+ return {
7995
+ id: "wix",
7996
+ name: "Wix",
7997
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/wix.png",
7998
+ description: "Manage Wix site stores, products, and e-commerce orders via REST",
7999
+ category: "Business",
8000
+ tools: [...WIX_TOOLS],
8001
+ authType: "apiKey",
8002
+ getHeaders() {
8003
+ return {
8004
+ Authorization: apiKey,
8005
+ "wix-site-id": siteId
8006
+ };
8007
+ },
8008
+ async onInit(_client) {
8009
+ logger75.debug("Wix integration initialized");
8010
+ },
8011
+ async onAfterConnect(_client) {
8012
+ logger75.debug("Wix integration connected");
8013
+ }
8014
+ };
8015
+ }
8016
+ // src/integrations/auth0.ts
8017
+ var logger76 = createLogger("Auth0");
8018
+ var AUTH0_TOOLS = [
8019
+ "auth0_list_users",
8020
+ "auth0_get_user",
8021
+ "auth0_create_user",
8022
+ "auth0_patch_user",
8023
+ "auth0_delete_user",
8024
+ "auth0_list_connections",
8025
+ "auth0_get_connection",
8026
+ "auth0_list_clients",
8027
+ "auth0_get_client",
8028
+ "auth0_create_client",
8029
+ "auth0_patch_client"
8030
+ ];
8031
+ function normalizeAuth0Domain(raw) {
8032
+ let s = raw.trim();
8033
+ s = s.replace(/^https?:\/\//i, "");
8034
+ const slash = s.indexOf("/");
8035
+ if (slash >= 0)
8036
+ s = s.slice(0, slash);
8037
+ return s.replace(/\/$/, "");
8038
+ }
8039
+ async function fetchClientCredentialsToken(params) {
8040
+ const tokenUrl = `https://${params.domain}/oauth/token`;
8041
+ const body = new URLSearchParams({
8042
+ grant_type: "client_credentials",
8043
+ client_id: params.clientId,
8044
+ client_secret: params.clientSecret,
8045
+ audience: params.audience
8046
+ });
8047
+ const res = await fetch(tokenUrl, {
8048
+ method: "POST",
8049
+ headers: { "Content-Type": "application/x-www-form-urlencoded" },
8050
+ body
8051
+ });
8052
+ const text = await res.text();
8053
+ if (!res.ok) {
8054
+ throw new Error(`Auth0 token request failed (${res.status}): ${text}`);
8055
+ }
8056
+ const data = JSON.parse(text);
8057
+ if (!data.access_token) {
8058
+ throw new Error("Auth0 token response missing access_token");
8059
+ }
8060
+ return data;
8061
+ }
8062
+ function auth0Integration(options) {
8063
+ const domain = normalizeAuth0Domain(options.domain);
8064
+ if (!domain) {
8065
+ throw new Error("auth0Integration requires domain (tenant host)");
8066
+ }
8067
+ const clientId = options.clientId ?? getEnv("AUTH0_CLIENT_ID");
8068
+ const clientSecret = options.clientSecret ?? getEnv("AUTH0_CLIENT_SECRET");
8069
+ const initialToken = options.accessToken ?? getEnv("AUTH0_ACCESS_TOKEN") ?? "";
8070
+ if (!initialToken && (!clientId || !clientSecret)) {
8071
+ throw new Error("auth0Integration requires accessToken (or AUTH0_ACCESS_TOKEN) or both clientId/clientSecret (or AUTH0_CLIENT_ID / AUTH0_CLIENT_SECRET)");
8072
+ }
8073
+ let accessToken = initialToken;
8074
+ let tokenExpiresAtMs = 0;
8075
+ async function ensureFreshToken() {
8076
+ if (!clientId || !clientSecret)
8077
+ return;
8078
+ if (accessToken && Date.now() < tokenExpiresAtMs - 60000)
8079
+ return;
8080
+ const audience = options.audience?.trim() || `https://${domain}/api/v2/`;
8081
+ const tok = await fetchClientCredentialsToken({
8082
+ domain,
8083
+ clientId,
8084
+ clientSecret,
8085
+ audience
8086
+ });
8087
+ accessToken = tok.access_token;
8088
+ const sec = typeof tok.expires_in === "number" && tok.expires_in > 0 ? tok.expires_in : 86400;
8089
+ tokenExpiresAtMs = Date.now() + sec * 1000;
8090
+ }
8091
+ return {
8092
+ id: "auth0",
8093
+ name: "Auth0",
8094
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/auth0.png",
8095
+ description: "Manage Auth0 users, connections, and applications via the Management API",
8096
+ category: "Engineering",
8097
+ tools: [...AUTH0_TOOLS],
8098
+ authType: "apiKey",
8099
+ getHeaders() {
8100
+ return {
8101
+ Authorization: `Bearer ${accessToken}`,
8102
+ "X-Auth0-Domain": domain
8103
+ };
8104
+ },
8105
+ async onInit() {
8106
+ logger76.debug("Auth0 integration initialized");
8107
+ },
8108
+ async onBeforeConnect() {
8109
+ await ensureFreshToken();
8110
+ if (!accessToken) {
8111
+ throw new Error("Auth0 access token is not configured");
8112
+ }
8113
+ },
8114
+ async onAfterConnect() {
8115
+ logger76.debug("Auth0 integration connected");
8116
+ }
8117
+ };
8118
+ }
8119
+ // src/integrations/binance.ts
8120
+ var logger77 = createLogger("Binance");
8121
+ var BINANCE_TOOLS = [
8122
+ "binance_ping",
8123
+ "binance_get_server_time",
8124
+ "binance_get_exchange_info",
8125
+ "binance_get_ticker_price",
8126
+ "binance_get_ticker_24hr",
8127
+ "binance_get_order_book",
8128
+ "binance_get_recent_trades",
8129
+ "binance_get_klines",
8130
+ "binance_get_account",
8131
+ "binance_get_open_orders",
8132
+ "binance_get_all_orders",
8133
+ "binance_get_my_trades"
8134
+ ];
8135
+ function normalizeBaseUrl(url) {
8136
+ const u = (url ?? "").trim().replace(/\/+$/, "");
8137
+ return u || "https://api.binance.com";
8138
+ }
8139
+ function binanceIntegration(options = {}) {
8140
+ const apiKey = options.apiKey ?? getEnv("BINANCE_API_KEY");
8141
+ const secret = options.secret ?? getEnv("BINANCE_SECRET_KEY");
8142
+ if (!apiKey || !secret) {
8143
+ throw new Error("binanceIntegration requires apiKey and secret (or BINANCE_API_KEY and BINANCE_SECRET_KEY environment variables)");
8144
+ }
8145
+ const baseUrl = normalizeBaseUrl(options.baseUrl);
8146
+ return {
8147
+ id: "binance",
8148
+ name: "Binance",
8149
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/binance.png",
8150
+ description: "Read Binance Spot market data and account information with API keys scoped to reading only",
8151
+ category: "Finance",
8152
+ tools: [...BINANCE_TOOLS],
8153
+ authType: "apiKey",
8154
+ getHeaders() {
8155
+ return {
8156
+ Authorization: `Bearer ${apiKey}`,
8157
+ "X-MBX-APIKEY": apiKey,
8158
+ "X-Binance-Api-Secret": secret,
8159
+ "X-Binance-Base-Url": baseUrl
8160
+ };
8161
+ },
8162
+ async onInit(_client) {
8163
+ logger77.debug("Binance integration initialized");
8164
+ },
8165
+ async onAfterConnect(_client) {
8166
+ logger77.debug("Binance integration connected");
8167
+ }
8168
+ };
8169
+ }
8170
+ // src/integrations/canva.ts
8171
+ var logger78 = createLogger("Canva");
8172
+ var CANVA_TOOLS = [
8173
+ "canva_get_me",
8174
+ "canva_get_profile",
8175
+ "canva_list_designs",
8176
+ "canva_get_design",
8177
+ "canva_get_design_export_formats",
8178
+ "canva_create_design",
8179
+ "canva_get_folder",
8180
+ "canva_list_folder_items",
8181
+ "canva_create_folder",
8182
+ "canva_update_folder",
8183
+ "canva_delete_folder",
8184
+ "canva_list_brand_templates",
8185
+ "canva_get_brand_template",
8186
+ "canva_create_export_job",
8187
+ "canva_get_export_job"
8188
+ ];
8189
+ function canvaIntegration(config = {}) {
8190
+ const oauth = {
8191
+ provider: "canva",
8192
+ clientId: config.clientId ?? getEnv("CANVA_CLIENT_ID"),
8193
+ clientSecret: config.clientSecret ?? getEnv("CANVA_CLIENT_SECRET"),
8194
+ scopes: config.scopes,
8195
+ optionalScopes: config.optionalScopes,
8196
+ redirectUri: config.redirectUri,
8197
+ config: { ...config }
8198
+ };
8199
+ return {
8200
+ id: "canva",
8201
+ name: "Canva",
8202
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/canva.png",
8203
+ description: "List and create Canva designs, manage folders, and export assets",
8204
+ category: "Productivity",
8205
+ tools: [...CANVA_TOOLS],
8206
+ oauth,
8207
+ async onInit(_client) {
8208
+ logger78.debug("Canva integration initialized");
8209
+ },
8210
+ async onAfterConnect(_client) {
8211
+ logger78.debug("Canva integration connected");
8212
+ }
8213
+ };
8214
+ }
8215
+ // src/integrations/clerk.ts
8216
+ var logger79 = createLogger("Clerk");
8217
+ var CLERK_TOOLS = [
8218
+ "clerk_list_users",
8219
+ "clerk_get_user",
8220
+ "clerk_create_user",
8221
+ "clerk_update_user",
8222
+ "clerk_delete_user",
8223
+ "clerk_list_organizations",
8224
+ "clerk_get_organization",
8225
+ "clerk_create_organization",
8226
+ "clerk_update_organization",
8227
+ "clerk_delete_organization",
8228
+ "clerk_list_sessions",
8229
+ "clerk_get_session",
8230
+ "clerk_revoke_session"
8231
+ ];
8232
+ function clerkIntegration(options = {}) {
8233
+ const secretKey = options.secretKey ?? getEnv("CLERK_SECRET_KEY");
8234
+ if (!secretKey) {
8235
+ throw new Error("clerkIntegration requires secretKey or CLERK_SECRET_KEY environment variable");
8236
+ }
8237
+ return {
8238
+ id: "clerk",
8239
+ name: "Clerk",
8240
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/clerk.png",
8241
+ description: "Manage Clerk users, organizations, and sessions via the Backend API",
8242
+ category: "Business",
8243
+ tools: [...CLERK_TOOLS],
8244
+ authType: "apiKey",
8245
+ getHeaders() {
8246
+ return {
8247
+ Authorization: `Bearer ${secretKey}`
8248
+ };
8249
+ },
8250
+ async onInit(_client) {
8251
+ logger79.debug("Clerk integration initialized");
8252
+ },
8253
+ async onAfterConnect(_client) {
8254
+ logger79.debug("Clerk integration connected");
8255
+ }
8256
+ };
8257
+ }
8258
+ // src/integrations/cloudflare.ts
8259
+ var logger80 = createLogger("Cloudflare");
8260
+ var CLOUDFLARE_TOOLS = [
8261
+ "cloudflare_verify_token",
8262
+ "cloudflare_get_user",
8263
+ "cloudflare_list_accounts",
8264
+ "cloudflare_get_account",
8265
+ "cloudflare_list_zones",
8266
+ "cloudflare_get_zone",
8267
+ "cloudflare_list_dns_records",
8268
+ "cloudflare_create_dns_record",
8269
+ "cloudflare_update_dns_record",
8270
+ "cloudflare_delete_dns_record",
8271
+ "cloudflare_purge_zone_cache",
8272
+ "cloudflare_list_worker_scripts"
8273
+ ];
8274
+ var DEFAULT_SCOPES = [
8275
+ "account:read",
8276
+ "user:read",
8277
+ "zone:read",
8278
+ "workers:read",
8279
+ "workers:write",
8280
+ "pages:write",
8281
+ "offline_access"
8282
+ ];
8283
+ function cloudflareIntegration(config = {}) {
8284
+ const apiToken = config.apiToken ?? getEnv("CLOUDFLARE_API_TOKEN");
8285
+ if (apiToken && apiToken.trim() !== "") {
8286
+ return {
8287
+ id: "cloudflare",
8288
+ name: "Cloudflare",
8289
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/cloudflare.png",
8290
+ description: "Manage Cloudflare zones, DNS, cache, and Workers via the Cloudflare API",
8291
+ category: "Infrastructure",
8292
+ tools: [...CLOUDFLARE_TOOLS],
8293
+ authType: "apiKey",
8294
+ getHeaders() {
8295
+ return { Authorization: `Bearer ${apiToken.trim()}` };
8296
+ },
8297
+ async onInit(_client) {
8298
+ logger80.debug("Cloudflare integration initialized (API token)");
8299
+ },
8300
+ async onAfterConnect(_client) {
8301
+ logger80.debug("Cloudflare integration connected");
8302
+ }
8303
+ };
8304
+ }
8305
+ const oauth = {
8306
+ provider: "cloudflare",
8307
+ clientId: config.clientId ?? getEnv("CLOUDFLARE_CLIENT_ID"),
8308
+ clientSecret: config.clientSecret ?? getEnv("CLOUDFLARE_CLIENT_SECRET"),
8309
+ scopes: config.scopes?.length ? config.scopes : [...DEFAULT_SCOPES],
8310
+ redirectUri: config.redirectUri,
8311
+ config: {
8312
+ authorization_endpoint: "https://dash.cloudflare.com/oauth2/auth",
8313
+ token_endpoint: "https://dash.cloudflare.com/oauth2/token",
8314
+ response_type: "code",
8315
+ grant_types_supported: ["authorization_code", "refresh_token"]
8316
+ }
8317
+ };
8318
+ return {
8319
+ id: "cloudflare",
8320
+ name: "Cloudflare",
8321
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/cloudflare.png",
8322
+ description: "Manage Cloudflare zones, DNS, cache, and Workers via the Cloudflare API",
8323
+ category: "Infrastructure",
8324
+ tools: [...CLOUDFLARE_TOOLS],
8325
+ oauth,
8326
+ async onInit(_client) {
8327
+ logger80.debug("Cloudflare integration initialized (OAuth)");
8328
+ },
8329
+ async onAfterConnect(_client) {
8330
+ logger80.debug("Cloudflare integration connected");
8331
+ }
8332
+ };
8333
+ }
8334
+ // src/integrations/clickup.ts
8335
+ var logger81 = createLogger("ClickUp");
8336
+ var CLICKUP_TOOLS = [
8337
+ "clickup_get_authorized_user",
8338
+ "clickup_list_teams",
8339
+ "clickup_list_spaces",
8340
+ "clickup_list_folders",
8341
+ "clickup_list_lists_in_folder",
8342
+ "clickup_list_folderless_lists",
8343
+ "clickup_list_tasks",
8344
+ "clickup_get_task",
8345
+ "clickup_create_task",
8346
+ "clickup_update_task",
8347
+ "clickup_delete_task",
8348
+ "clickup_list_task_comments",
8349
+ "clickup_create_task_comment"
8350
+ ];
8351
+ function clickupIntegration(config = {}) {
8352
+ const oauth = {
8353
+ provider: "clickup",
8354
+ clientId: config.clientId ?? getEnv("CLICKUP_CLIENT_ID"),
8355
+ clientSecret: config.clientSecret ?? getEnv("CLICKUP_CLIENT_SECRET"),
8356
+ scopes: config.scopes ?? [],
8357
+ optionalScopes: config.optionalScopes,
8358
+ redirectUri: config.redirectUri,
8359
+ config: {
8360
+ authorization_endpoint: "https://app.clickup.com/api",
8361
+ token_endpoint: "https://api.clickup.com/api/v2/oauth/token"
8362
+ }
8363
+ };
8364
+ return {
8365
+ id: "clickup",
8366
+ name: "ClickUp",
8367
+ tools: [...CLICKUP_TOOLS],
8368
+ oauth,
8369
+ async onInit(_client) {
8370
+ logger81.debug("ClickUp integration initialized");
8371
+ },
8372
+ async onAfterConnect(_client) {
8373
+ logger81.debug("ClickUp integration connected");
8374
+ }
8375
+ };
8376
+ }
8377
+ // src/integrations/excel.ts
8378
+ var logger82 = createLogger("Excel");
8379
+ var EXCEL_TOOLS = [
8380
+ "excel_add_table_rows",
8381
+ "excel_add_worksheet",
8382
+ "excel_clear_range",
8383
+ "excel_create",
8384
+ "excel_create_table",
8385
+ "excel_delete",
8386
+ "excel_delete_worksheet",
8387
+ "excel_get",
8388
+ "excel_get_range",
8389
+ "excel_get_table_rows",
8390
+ "excel_get_used_range",
8391
+ "excel_list",
8392
+ "excel_list_tables",
8393
+ "excel_list_worksheets",
8394
+ "excel_share",
8395
+ "excel_update_range"
8396
+ ];
8397
+ function excelIntegration(config = {}) {
8398
+ const oauth = {
8399
+ provider: "excel",
8400
+ clientId: config.clientId ?? getEnv("EXCEL_CLIENT_ID"),
8401
+ clientSecret: config.clientSecret ?? getEnv("EXCEL_CLIENT_SECRET"),
8402
+ scopes: config.scopes,
8403
+ optionalScopes: config.optionalScopes,
8404
+ redirectUri: config.redirectUri,
8405
+ config
8406
+ };
8407
+ return {
8408
+ id: "excel",
8409
+ name: "Excel",
8410
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/excel.png",
8411
+ tools: [...EXCEL_TOOLS],
8412
+ oauth,
8413
+ async onInit(_client) {
8414
+ logger82.debug("Excel integration initialized");
8415
+ },
8416
+ async onAfterConnect(_client) {
8417
+ logger82.debug("Excel integration connected");
8418
+ }
8419
+ };
8420
+ }
8421
+ // src/integrations/ga4.ts
8422
+ var GA4_TOOLS = [
8423
+ "ga4_batch_run_reports",
8424
+ "ga4_get_property",
8425
+ "ga4_list_account_summaries",
8426
+ "ga4_run_realtime_report",
8427
+ "ga4_run_report"
8428
+ ];
8429
+ function ga4Integration(config = {}) {
8430
+ const oauth = {
8431
+ provider: "ga4",
8432
+ clientId: config.clientId ?? getEnv("GA4_CLIENT_ID"),
8433
+ clientSecret: config.clientSecret ?? getEnv("GA4_CLIENT_SECRET"),
8434
+ scopes: config.scopes ?? ["https://www.googleapis.com/auth/analytics.readonly"],
8435
+ optionalScopes: config.optionalScopes,
8436
+ redirectUri: config.redirectUri
8437
+ };
8438
+ return {
8439
+ id: "ga4",
8440
+ name: "Google Analytics 4",
8441
+ tools: [...GA4_TOOLS],
8442
+ oauth
8443
+ };
8444
+ }
8445
+ // src/integrations/gdrive.ts
8446
+ var logger83 = createLogger("Google Drive");
8447
+ var GDRIVE_TOOLS = [
8448
+ "gdrive_copy_file",
8449
+ "gdrive_create_folder",
8450
+ "gdrive_delete_file",
8451
+ "gdrive_download_file",
8452
+ "gdrive_get_about",
8453
+ "gdrive_get_file",
8454
+ "gdrive_list_files",
8455
+ "gdrive_list_permissions",
8456
+ "gdrive_move_file",
8457
+ "gdrive_remove_permission",
8458
+ "gdrive_rename_file",
8459
+ "gdrive_share_file",
8460
+ "gdrive_trash_file",
8461
+ "gdrive_upload_text_file"
8462
+ ];
8463
+ function gdriveIntegration(config = {}) {
8464
+ const oauth = {
8465
+ provider: "gdrive",
8466
+ clientId: config.clientId ?? getEnv("GDRIVE_CLIENT_ID"),
8467
+ clientSecret: config.clientSecret ?? getEnv("GDRIVE_CLIENT_SECRET"),
8468
+ scopes: config.scopes,
8469
+ optionalScopes: config.optionalScopes,
8470
+ redirectUri: config.redirectUri,
8471
+ config
8472
+ };
8473
+ return {
8474
+ id: "gdrive",
8475
+ name: "Google Drive",
8476
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/google_drive.png",
8477
+ tools: [...GDRIVE_TOOLS],
8478
+ oauth,
8479
+ async onInit(_client) {
8480
+ logger83.debug("Google Drive integration initialized");
8481
+ },
8482
+ async onAfterConnect(_client) {
8483
+ logger83.debug("Google Drive integration connected");
8484
+ }
8485
+ };
8486
+ }
8487
+ // src/integrations/gitlab.ts
8488
+ var logger84 = createLogger("GitLab");
8489
+ var GITLAB_TOOLS = [
8490
+ "gitlab_list_projects",
8491
+ "gitlab_list_own_projects",
8492
+ "gitlab_get_project",
8493
+ "gitlab_create_project",
8494
+ "gitlab_create_issue",
8495
+ "gitlab_list_issues",
8496
+ "gitlab_get_issue",
8497
+ "gitlab_update_issue",
8498
+ "gitlab_close_issue",
8499
+ "gitlab_create_merge_request",
8500
+ "gitlab_list_merge_requests",
8501
+ "gitlab_get_merge_request",
8502
+ "gitlab_accept_merge_request",
8503
+ "gitlab_list_branches",
8504
+ "gitlab_create_branch",
8505
+ "gitlab_list_commits",
8506
+ "gitlab_get_commit",
8507
+ "gitlab_list_issue_notes",
8508
+ "gitlab_create_issue_note",
8509
+ "gitlab_list_milestones",
8510
+ "gitlab_create_milestone",
8511
+ "gitlab_get_current_user"
8512
+ ];
8513
+ function gitlabIntegration(config = {}) {
8514
+ const oauth = {
8515
+ provider: "gitlab",
8516
+ clientId: config.clientId ?? getEnv("GITLAB_CLIENT_ID"),
8517
+ clientSecret: config.clientSecret ?? getEnv("GITLAB_CLIENT_SECRET"),
8518
+ scopes: config.scopes ?? ["read_api", "write_api", "read_user"],
8519
+ optionalScopes: config.optionalScopes,
8520
+ redirectUri: config.redirectUri,
8521
+ config: {
8522
+ apiBaseUrl: config.apiBaseUrl ?? "https://gitlab.com/api/v4/",
8523
+ ...config
8524
+ }
8525
+ };
8526
+ return {
8527
+ id: "gitlab",
8528
+ name: "GitLab",
8529
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/gitlab.png",
8530
+ description: "Manage GitLab projects, issues, merge requests, and CI/CD",
8531
+ category: "Engineering",
8532
+ tools: [...GITLAB_TOOLS],
8533
+ oauth,
8534
+ async onInit(_client) {
8535
+ logger84.debug("GitLab integration initialized");
8536
+ },
8537
+ async onAfterConnect(_client) {
8538
+ logger84.debug("GitLab integration connected");
8539
+ }
8540
+ };
8541
+ }
8542
+ // src/integrations/gmeet.ts
8543
+ var logger85 = createLogger("Google Meet");
8544
+ var GMEET_TOOLS = [
8545
+ "gmeet_add_meet_to_event",
8546
+ "gmeet_create_meeting",
8547
+ "gmeet_delete_meeting",
8548
+ "gmeet_get_meeting",
8549
+ "gmeet_list_meetings",
8550
+ "gmeet_update_meeting"
8551
+ ];
8552
+ function gmeetIntegration(config = {}) {
8553
+ const oauth = {
8554
+ provider: "gmeet",
8555
+ clientId: config.clientId ?? getEnv("GMEET_CLIENT_ID"),
8556
+ clientSecret: config.clientSecret ?? getEnv("GMEET_CLIENT_SECRET"),
8557
+ scopes: config.scopes,
8558
+ optionalScopes: config.optionalScopes,
8559
+ redirectUri: config.redirectUri,
8560
+ config: { ...config }
8561
+ };
8562
+ return {
8563
+ id: "gmeet",
8564
+ name: "Google Meet",
8565
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/google_meet.webp",
8566
+ description: "Create and manage Google Meet links via Calendar conference data",
8567
+ category: "Communication",
8568
+ tools: [...GMEET_TOOLS],
8569
+ oauth,
8570
+ async onInit(_client) {
8571
+ logger85.debug("Google Meet integration initialized");
8572
+ },
8573
+ async onAfterConnect(_client) {
8574
+ logger85.debug("Google Meet integration connected");
8575
+ }
8576
+ };
8577
+ }
8578
+ // src/integrations/monday.ts
8579
+ var logger86 = createLogger("Monday");
8580
+ var MONDAY_TOOLS = [
8581
+ "monday_me",
8582
+ "monday_list_workspaces",
8583
+ "monday_list_boards",
8584
+ "monday_get_board",
8585
+ "monday_list_board_items",
8586
+ "monday_next_items_page",
8587
+ "monday_get_items",
8588
+ "monday_create_item",
8589
+ "monday_update_item_columns",
8590
+ "monday_create_update",
8591
+ "monday_delete_item"
8592
+ ];
8593
+ function mondayIntegration(config = {}) {
8594
+ const oauth = {
8595
+ provider: "monday",
8596
+ clientId: config.clientId ?? getEnv("MONDAY_CLIENT_ID"),
8597
+ clientSecret: config.clientSecret ?? getEnv("MONDAY_CLIENT_SECRET"),
8598
+ scopes: config.scopes ?? [],
8599
+ redirectUri: config.redirectUri,
8600
+ config: {
8601
+ authorization_endpoint: "https://auth.monday.com/oauth2/authorize",
8602
+ token_endpoint: "https://auth.monday.com/oauth2/token",
8603
+ response_type: "code",
8604
+ grant_types_supported: ["authorization_code"]
8605
+ }
8606
+ };
8607
+ return {
8608
+ id: "monday",
8609
+ name: "Monday.com",
8610
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/monday.png",
8611
+ description: "Manage Monday.com boards, items, columns, and updates",
8612
+ category: "Productivity",
8613
+ tools: [...MONDAY_TOOLS],
8614
+ oauth,
8615
+ async onInit(_client) {
8616
+ logger86.debug("Monday.com integration initialized");
8617
+ },
8618
+ async onAfterConnect(_client) {
8619
+ logger86.debug("Monday.com integration connected");
8620
+ }
8621
+ };
8622
+ }
8623
+ // src/integrations/planetscale.ts
8624
+ var PLANETSCALE_TOOLS = [
8625
+ "planetscale_get_current_user",
8626
+ "planetscale_list_organizations",
8627
+ "planetscale_get_organization",
8628
+ "planetscale_list_databases",
8629
+ "planetscale_get_database",
8630
+ "planetscale_list_branches",
8631
+ "planetscale_get_branch",
8632
+ "planetscale_list_deploy_requests",
8633
+ "planetscale_get_deploy_request"
8634
+ ];
8635
+ function planetscaleIntegration(config = {}) {
8636
+ const oauth = {
8637
+ provider: "planetscale",
8638
+ clientId: config.clientId ?? getEnv("PLANETSCALE_CLIENT_ID"),
8639
+ clientSecret: config.clientSecret ?? getEnv("PLANETSCALE_CLIENT_SECRET"),
8640
+ scopes: config.scopes ?? ["database:read_branches", "database:read_deploy_requests", "organization:read"],
8641
+ optionalScopes: config.optionalScopes,
8642
+ redirectUri: config.redirectUri,
8643
+ config: {
8644
+ authorization_endpoint: "https://auth.planetscale.com/oauth/authorize",
8645
+ token_endpoint: "https://auth.planetscale.com/oauth/token",
8646
+ apiBaseUrl: config.apiBaseUrl ?? "https://api.planetscale.com/v1"
8647
+ }
8648
+ };
8649
+ return {
8650
+ id: "planetscale",
8651
+ name: "PlanetScale",
8652
+ category: "Infrastructure",
8653
+ tools: [...PLANETSCALE_TOOLS],
8654
+ oauth
8655
+ };
8656
+ }
8657
+ // src/integrations/powerpoint.ts
8658
+ var logger87 = createLogger("PowerPoint");
8659
+ var POWERPOINT_TOOLS = [
8660
+ "powerpoint_copy",
8661
+ "powerpoint_create",
8662
+ "powerpoint_delete",
8663
+ "powerpoint_get",
8664
+ "powerpoint_list",
8665
+ "powerpoint_share",
8666
+ "powerpoint_update_content"
8667
+ ];
8668
+ function powerpointIntegration(config = {}) {
8669
+ const oauth = {
8670
+ provider: "powerpoint",
8671
+ clientId: config.clientId ?? getEnv("POWERPOINT_CLIENT_ID"),
8672
+ clientSecret: config.clientSecret ?? getEnv("POWERPOINT_CLIENT_SECRET"),
8673
+ scopes: config.scopes,
8674
+ optionalScopes: config.optionalScopes,
8675
+ redirectUri: config.redirectUri,
8676
+ config
8677
+ };
8678
+ return {
8679
+ id: "powerpoint",
8680
+ name: "PowerPoint",
8681
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/powerpoint.png",
8682
+ tools: [...POWERPOINT_TOOLS],
8683
+ oauth,
8684
+ async onInit(_client) {
8685
+ logger87.debug("PowerPoint integration initialized");
8686
+ },
8687
+ async onAfterConnect(_client) {
8688
+ logger87.debug("PowerPoint integration connected");
8689
+ }
8690
+ };
8691
+ }
8692
+ // src/integrations/reddit.ts
8693
+ var REDDIT_TOOLS = [
8694
+ "reddit_get_me",
8695
+ "reddit_get_subreddit_about",
8696
+ "reddit_list_subreddit_posts",
8697
+ "reddit_get_post_thread",
8698
+ "reddit_search",
8699
+ "reddit_submit_post",
8700
+ "reddit_comment",
8701
+ "reddit_vote",
8702
+ "reddit_list_my_subreddits",
8703
+ "reddit_list_popular_subreddits"
8704
+ ];
8705
+ function redditIntegration(config = {}) {
8706
+ const oauth = {
8707
+ provider: "reddit",
8708
+ clientId: config.clientId ?? getEnv("REDDIT_CLIENT_ID"),
8709
+ clientSecret: config.clientSecret ?? getEnv("REDDIT_CLIENT_SECRET"),
8710
+ scopes: config.scopes ?? ["identity", "read", "submit", "vote", "mysubreddits"],
8711
+ optionalScopes: config.optionalScopes,
8712
+ redirectUri: config.redirectUri
8713
+ };
8714
+ return {
8715
+ id: "reddit",
8716
+ name: "Reddit",
8717
+ tools: [...REDDIT_TOOLS],
8718
+ oauth
8719
+ };
8720
+ }
8721
+ // src/integrations/resend.ts
8722
+ var logger88 = createLogger("Resend");
8723
+ var RESEND_TOOLS = [
8724
+ "resend_list_domains",
8725
+ "resend_get_domain",
8726
+ "resend_create_domain",
8727
+ "resend_delete_domain",
8728
+ "resend_verify_domain",
8729
+ "resend_send_email",
8730
+ "resend_get_email",
8731
+ "resend_cancel_scheduled_email"
8732
+ ];
8733
+ function resendIntegration(options = {}) {
8734
+ const apiKey = options.apiKey ?? getEnv("RESEND_API_KEY");
8735
+ if (!apiKey) {
8736
+ throw new Error("resendIntegration requires apiKey or RESEND_API_KEY");
8737
+ }
8738
+ return {
8739
+ id: "resend",
8740
+ name: "Resend",
8741
+ tools: [...RESEND_TOOLS],
8742
+ authType: "apiKey",
8743
+ getHeaders() {
8744
+ return { Authorization: `Bearer ${apiKey}` };
8745
+ },
8746
+ async onInit(_client) {
8747
+ logger88.debug("Resend integration initialized");
8748
+ },
8749
+ async onAfterConnect(_client) {
8750
+ logger88.debug("Resend integration connected");
8751
+ }
8752
+ };
8753
+ }
8754
+ // src/integrations/word.ts
8755
+ var logger89 = createLogger("Word");
8756
+ var WORD_TOOLS = [
8757
+ "word_copy",
8758
+ "word_create",
8759
+ "word_delete",
8760
+ "word_get",
8761
+ "word_list",
8762
+ "word_share",
8763
+ "word_update_content"
8764
+ ];
8765
+ function wordIntegration(config = {}) {
8766
+ const oauth = {
8767
+ provider: "word",
8768
+ clientId: config.clientId ?? getEnv("WORD_CLIENT_ID"),
8769
+ clientSecret: config.clientSecret ?? getEnv("WORD_CLIENT_SECRET"),
8770
+ scopes: config.scopes,
8771
+ optionalScopes: config.optionalScopes,
8772
+ redirectUri: config.redirectUri,
8773
+ config
8774
+ };
8775
+ return {
8776
+ id: "word",
8777
+ name: "Word",
8778
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/word.png",
8779
+ tools: [...WORD_TOOLS],
8780
+ oauth,
8781
+ async onInit(_client) {
8782
+ logger89.debug("Word integration initialized");
8783
+ },
8784
+ async onAfterConnect(_client) {
8785
+ logger89.debug("Word integration connected");
8786
+ }
8787
+ };
8788
+ }
8789
+ // src/integrations/zapier.ts
8790
+ var logger90 = createLogger("Zapier");
8791
+ var ZAPIER_TOOLS = [
8792
+ "zapier_get_profile",
8793
+ "zapier_list_zaps",
8794
+ "zapier_list_apps",
8795
+ "zapier_list_actions",
8796
+ "zapier_list_authentications",
8797
+ "zapier_list_zap_runs"
8798
+ ];
8799
+ function zapierIntegration(config = {}) {
8800
+ const oauth = {
8801
+ provider: "zapier",
8802
+ clientId: config.clientId ?? getEnv("ZAPIER_CLIENT_ID"),
8803
+ clientSecret: config.clientSecret ?? getEnv("ZAPIER_CLIENT_SECRET"),
8804
+ scopes: config.scopes ?? [],
8805
+ redirectUri: config.redirectUri,
8806
+ config: {
8807
+ authorization_endpoint: "https://zapier.com/oauth/authorize/",
8808
+ token_endpoint: "https://zapier.com/oauth/token/",
5795
8809
  response_type: "code",
5796
8810
  grant_types_supported: ["authorization_code", "refresh_token"]
5797
8811
  }
5798
8812
  };
5799
8813
  return {
5800
- id: "netlify",
5801
- name: "Netlify",
5802
- logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/netlify.png",
5803
- description: "Manage Netlify sites, deploys, builds, and environment variables",
5804
- category: "Infrastructure",
5805
- tools: [...NETLIFY_TOOLS],
8814
+ id: "zapier",
8815
+ name: "Zapier",
8816
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/zapier.png",
8817
+ description: "List Zaps, browse apps, manage authentications, and inspect Zap runs via the Partner Workflow API",
8818
+ category: "Productivity",
8819
+ tools: [...ZAPIER_TOOLS],
5806
8820
  oauth,
5807
8821
  async onInit(_client) {
5808
- logger38.debug("Netlify integration initialized");
8822
+ logger90.debug("Zapier integration initialized");
5809
8823
  },
5810
8824
  async onAfterConnect(_client) {
5811
- logger38.debug("Netlify integration connected");
8825
+ logger90.debug("Zapier integration connected");
5812
8826
  }
5813
8827
  };
5814
8828
  }
5815
- // src/integrations/granola.ts
5816
- var GRANOLA_TOOLS = [
5817
- "granola_list_notes",
5818
- "granola_get_note",
5819
- "granola_list_folders"
8829
+ // src/integrations/zoom.ts
8830
+ var logger91 = createLogger("Zoom");
8831
+ var ZOOM_TOOLS = [
8832
+ "zoom_get_user",
8833
+ "zoom_list_meetings",
8834
+ "zoom_create_meeting",
8835
+ "zoom_get_meeting",
8836
+ "zoom_update_meeting",
8837
+ "zoom_delete_meeting"
5820
8838
  ];
5821
- function granolaIntegration(options) {
5822
- if (!options.apiKey) {
5823
- throw new Error("granolaIntegration requires an apiKey");
5824
- }
5825
- return {
5826
- id: "granola",
5827
- name: "Granola",
5828
- tools: [...GRANOLA_TOOLS],
5829
- authType: "apiKey",
5830
- getHeaders() {
5831
- return {
5832
- Authorization: `Bearer ${options.apiKey}`
5833
- };
5834
- }
8839
+ function zoomIntegration(config = {}) {
8840
+ const oauth = {
8841
+ provider: "zoom",
8842
+ clientId: config.clientId ?? getEnv("ZOOM_CLIENT_ID"),
8843
+ clientSecret: config.clientSecret ?? getEnv("ZOOM_CLIENT_SECRET"),
8844
+ scopes: config.scopes,
8845
+ optionalScopes: config.optionalScopes,
8846
+ redirectUri: config.redirectUri,
8847
+ config: { ...config }
5835
8848
  };
5836
- }
5837
- // src/integrations/mercury.ts
5838
- var MERCURY_TOOLS = [
5839
- "mercury_get_organization",
5840
- "mercury_list_accounts",
5841
- "mercury_get_account",
5842
- "mercury_get_account_cards",
5843
- "mercury_list_account_transactions",
5844
- "mercury_get_account_transaction",
5845
- "mercury_list_account_statements",
5846
- "mercury_download_statement_pdf",
5847
- "mercury_list_transactions",
5848
- "mercury_get_transaction",
5849
- "mercury_update_transaction",
5850
- "mercury_upload_transaction_attachment",
5851
- "mercury_list_cards",
5852
- "mercury_get_card",
5853
- "mercury_create_card",
5854
- "mercury_update_card",
5855
- "mercury_freeze_card",
5856
- "mercury_unfreeze_card",
5857
- "mercury_cancel_card",
5858
- "mercury_list_categories",
5859
- "mercury_create_category",
5860
- "mercury_update_category",
5861
- "mercury_list_credit_accounts",
5862
- "mercury_list_users",
5863
- "mercury_get_user",
5864
- "mercury_list_recipients",
5865
- "mercury_get_recipient",
5866
- "mercury_create_recipient",
5867
- "mercury_update_recipient",
5868
- "mercury_list_recipient_attachments",
5869
- "mercury_upload_recipient_attachment",
5870
- "mercury_list_customers",
5871
- "mercury_get_customer",
5872
- "mercury_create_customer",
5873
- "mercury_update_customer",
5874
- "mercury_delete_customer",
5875
- "mercury_list_invoices",
5876
- "mercury_get_invoice",
5877
- "mercury_create_invoice",
5878
- "mercury_update_invoice",
5879
- "mercury_cancel_invoice",
5880
- "mercury_list_invoice_attachments",
5881
- "mercury_get_attachment",
5882
- "mercury_download_invoice_pdf",
5883
- "mercury_list_treasury_accounts",
5884
- "mercury_list_treasury_transactions",
5885
- "mercury_list_treasury_statements",
5886
- "mercury_list_events",
5887
- "mercury_get_event",
5888
- "mercury_list_send_money_requests",
5889
- "mercury_get_send_money_request",
5890
- "mercury_list_safe_requests",
5891
- "mercury_get_safe_request",
5892
- "mercury_download_safe_request_document",
5893
- "mercury_list_webhooks",
5894
- "mercury_get_webhook",
5895
- "mercury_create_webhook",
5896
- "mercury_update_webhook",
5897
- "mercury_delete_webhook",
5898
- "mercury_verify_webhook",
5899
- "mercury_create_internal_transfer",
5900
- "mercury_send_money",
5901
- "mercury_request_send_money"
5902
- ];
5903
- function mercuryIntegration(options) {
5904
- if (!options.apiKey) {
5905
- throw new Error("mercuryIntegration requires an apiKey");
5906
- }
5907
8849
  return {
5908
- id: "mercury",
5909
- name: "Mercury",
5910
- tools: [...MERCURY_TOOLS],
5911
- authType: "apiKey",
5912
- getHeaders() {
5913
- return {
5914
- Authorization: `Bearer ${options.apiKey}`
5915
- };
8850
+ id: "zoom",
8851
+ name: "Zoom",
8852
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/zoom.png",
8853
+ tools: [...ZOOM_TOOLS],
8854
+ oauth,
8855
+ async onInit(_client) {
8856
+ logger91.debug("Zoom integration initialized");
8857
+ },
8858
+ async onAfterConnect(_client) {
8859
+ logger91.debug("Zoom integration connected");
5916
8860
  }
5917
8861
  };
5918
8862
  }
@@ -5930,7 +8874,7 @@ function validateStepLimit(stepIndex, maxSteps) {
5930
8874
  return { valid: true };
5931
8875
  }
5932
8876
  // src/triggers/webhooks.ts
5933
- var logger39 = createLogger("Webhooks", "server");
8877
+ var logger92 = createLogger("Webhooks", "server");
5934
8878
  async function signPayload(payload, secret) {
5935
8879
  const encoder = new TextEncoder;
5936
8880
  const data = encoder.encode(JSON.stringify(payload));
@@ -5956,7 +8900,7 @@ async function deliverWebhook(webhook, payload, timeoutMs) {
5956
8900
  signal: controller.signal
5957
8901
  });
5958
8902
  if (!response.ok) {
5959
- logger39.warn(`Webhook delivery to ${webhook.url} returned ${response.status}`);
8903
+ logger92.warn(`Webhook delivery to ${webhook.url} returned ${response.status}`);
5960
8904
  }
5961
8905
  } finally {
5962
8906
  clearTimeout(timeout);
@@ -5969,7 +8913,7 @@ async function deliverWebhooks(webhooks, payload, timeoutMs) {
5969
8913
  for (let i = 0;i < results.length; i++) {
5970
8914
  const result = results[i];
5971
8915
  if (result.status === "rejected") {
5972
- logger39.warn(`Webhook delivery to ${webhooks[i].url} failed:`, result.reason);
8916
+ logger92.warn(`Webhook delivery to ${webhooks[i].url} failed:`, result.reason);
5973
8917
  }
5974
8918
  }
5975
8919
  }
@@ -6005,164 +8949,6 @@ function createSimpleIntegration(config) {
6005
8949
  onDisconnect: config.onDisconnect
6006
8950
  };
6007
8951
  }
6008
- // src/integrations/word.ts
6009
- var logger40 = createLogger("Word");
6010
- var WORD_TOOLS = [
6011
- "word_list",
6012
- "word_get",
6013
- "word_create",
6014
- "word_copy",
6015
- "word_delete",
6016
- "word_share"
6017
- ];
6018
- function wordIntegration(config = {}) {
6019
- const oauth = {
6020
- provider: "word",
6021
- clientId: config.clientId ?? getEnv("WORD_CLIENT_ID"),
6022
- clientSecret: config.clientSecret ?? getEnv("WORD_CLIENT_SECRET"),
6023
- scopes: config.scopes,
6024
- optionalScopes: config.optionalScopes,
6025
- redirectUri: config.redirectUri,
6026
- config
6027
- };
6028
- return {
6029
- id: "word",
6030
- name: "Word",
6031
- logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/word.png",
6032
- tools: [...WORD_TOOLS],
6033
- oauth,
6034
- async onInit(_client) {
6035
- logger40.debug("Word integration initialized");
6036
- },
6037
- async onAfterConnect(_client) {
6038
- logger40.debug("Word integration connected");
6039
- }
6040
- };
6041
- }
6042
-
6043
- // src/integrations/excel.ts
6044
- var logger41 = createLogger("Excel");
6045
- var EXCEL_TOOLS = [
6046
- "excel_list",
6047
- "excel_get",
6048
- "excel_create",
6049
- "excel_delete",
6050
- "excel_share",
6051
- "excel_list_worksheets",
6052
- "excel_add_worksheet",
6053
- "excel_delete_worksheet",
6054
- "excel_get_range",
6055
- "excel_update_range",
6056
- "excel_clear_range",
6057
- "excel_get_used_range",
6058
- "excel_list_tables",
6059
- "excel_create_table",
6060
- "excel_get_table_rows",
6061
- "excel_add_table_rows"
6062
- ];
6063
- function excelIntegration(config = {}) {
6064
- const oauth = {
6065
- provider: "excel",
6066
- clientId: config.clientId ?? getEnv("EXCEL_CLIENT_ID"),
6067
- clientSecret: config.clientSecret ?? getEnv("EXCEL_CLIENT_SECRET"),
6068
- scopes: config.scopes,
6069
- optionalScopes: config.optionalScopes,
6070
- redirectUri: config.redirectUri,
6071
- config
6072
- };
6073
- return {
6074
- id: "excel",
6075
- name: "Excel",
6076
- logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/excel.png",
6077
- tools: [...EXCEL_TOOLS],
6078
- oauth,
6079
- async onInit(_client) {
6080
- logger41.debug("Excel integration initialized");
6081
- },
6082
- async onAfterConnect(_client) {
6083
- logger41.debug("Excel integration connected");
6084
- }
6085
- };
6086
- }
6087
-
6088
- // src/integrations/powerpoint.ts
6089
- var logger42 = createLogger("PowerPoint");
6090
- var POWERPOINT_TOOLS = [
6091
- "powerpoint_list",
6092
- "powerpoint_get",
6093
- "powerpoint_create",
6094
- "powerpoint_copy",
6095
- "powerpoint_delete",
6096
- "powerpoint_share"
6097
- ];
6098
- function powerpointIntegration(config = {}) {
6099
- const oauth = {
6100
- provider: "powerpoint",
6101
- clientId: config.clientId ?? getEnv("POWERPOINT_CLIENT_ID"),
6102
- clientSecret: config.clientSecret ?? getEnv("POWERPOINT_CLIENT_SECRET"),
6103
- scopes: config.scopes,
6104
- optionalScopes: config.optionalScopes,
6105
- redirectUri: config.redirectUri,
6106
- config
6107
- };
6108
- return {
6109
- id: "powerpoint",
6110
- name: "PowerPoint",
6111
- logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/powerpoint.png",
6112
- tools: [...POWERPOINT_TOOLS],
6113
- oauth,
6114
- async onInit(_client) {
6115
- logger42.debug("PowerPoint integration initialized");
6116
- },
6117
- async onAfterConnect(_client) {
6118
- logger42.debug("PowerPoint integration connected");
6119
- }
6120
- };
6121
- }
6122
-
6123
- // src/integrations/gdrive.ts
6124
- var logger43 = createLogger("Google Drive");
6125
- var GDRIVE_TOOLS = [
6126
- "gdrive_list_files",
6127
- "gdrive_get_file",
6128
- "gdrive_create_folder",
6129
- "gdrive_rename_file",
6130
- "gdrive_move_file",
6131
- "gdrive_copy_file",
6132
- "gdrive_delete_file",
6133
- "gdrive_trash_file",
6134
- "gdrive_upload_text_file",
6135
- "gdrive_download_file",
6136
- "gdrive_list_permissions",
6137
- "gdrive_share_file",
6138
- "gdrive_remove_permission",
6139
- "gdrive_get_about"
6140
- ];
6141
- function gdriveIntegration(config = {}) {
6142
- const oauth = {
6143
- provider: "gdrive",
6144
- clientId: config.clientId ?? getEnv("GDRIVE_CLIENT_ID"),
6145
- clientSecret: config.clientSecret ?? getEnv("GDRIVE_CLIENT_SECRET"),
6146
- scopes: config.scopes,
6147
- optionalScopes: config.optionalScopes,
6148
- redirectUri: config.redirectUri,
6149
- config
6150
- };
6151
- return {
6152
- id: "gdrive",
6153
- name: "Google Drive",
6154
- logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/google_drive.png",
6155
- tools: [...GDRIVE_TOOLS],
6156
- oauth,
6157
- async onInit(_client) {
6158
- logger43.debug("Google Drive integration initialized");
6159
- },
6160
- async onAfterConnect(_client) {
6161
- logger43.debug("Google Drive integration connected");
6162
- }
6163
- };
6164
- }
6165
-
6166
8952
  // index.ts
6167
8953
  var client = createMCPClient({
6168
8954
  integrations: [
@@ -6170,18 +8956,28 @@ var client = createMCPClient({
6170
8956
  gmailIntegration(),
6171
8957
  notionIntegration(),
6172
8958
  slackIntegration(),
8959
+ discordIntegration(),
6173
8960
  linearIntegration(),
6174
8961
  vercelIntegration(),
6175
8962
  zendeskIntegration(),
6176
8963
  stripeIntegration(),
6177
8964
  gcalIntegration(),
8965
+ gmeetIntegration(),
8966
+ gtasksIntegration(),
8967
+ gcontactsIntegration(),
6178
8968
  outlookIntegration(),
8969
+ teamsIntegration(),
6179
8970
  airtableIntegration(),
8971
+ attioIntegration(),
6180
8972
  todoistIntegration(),
6181
8973
  whatsappIntegration(),
6182
8974
  calcomIntegration(),
8975
+ canvaIntegration(),
8976
+ cloudflareIntegration(),
6183
8977
  rampIntegration(),
6184
8978
  onedriveIntegration(),
8979
+ plannerIntegration(),
8980
+ sharepointIntegration(),
6185
8981
  wordIntegration(),
6186
8982
  excelIntegration(),
6187
8983
  powerpointIntegration(),
@@ -6190,72 +8986,150 @@ var client = createMCPClient({
6190
8986
  gsheetsIntegration(),
6191
8987
  gslidesIntegration(),
6192
8988
  polarIntegration(),
8989
+ facebookIntegration(),
6193
8990
  figmaIntegration(),
6194
8991
  intercomIntegration(),
6195
8992
  hubspotIntegration(),
8993
+ instagramIntegration(),
8994
+ linkedinIntegration(),
8995
+ threadsIntegration(),
8996
+ tiktokIntegration(),
8997
+ typeformIntegration(),
8998
+ xeroIntegration(),
8999
+ gchatIntegration(),
9000
+ shopifyIntegration(),
6196
9001
  youtubeIntegration(),
9002
+ zoomIntegration(),
9003
+ redditIntegration(),
6197
9004
  cursorIntegration(),
6198
9005
  posthogIntegration(),
6199
9006
  sentryIntegration(),
6200
- netlifyIntegration()
9007
+ datadogIntegration(),
9008
+ netlifyIntegration(),
9009
+ mondayIntegration(),
9010
+ webflowIntegration(),
9011
+ jiraIntegration(),
9012
+ salesforceIntegration(),
9013
+ workdayIntegration()
6201
9014
  ],
6202
9015
  useServerConfig: true
6203
9016
  });
6204
9017
  export {
9018
+ zoomIntegration,
6205
9019
  zendeskIntegration,
9020
+ zapierIntegration,
6206
9021
  youtubeIntegration,
9022
+ xeroIntegration,
9023
+ workosIntegration,
9024
+ workdayIntegration,
9025
+ wordIntegration,
9026
+ wixIntegration,
6207
9027
  whatsappIntegration,
9028
+ webflowIntegration,
6208
9029
  vercelIntegration,
6209
9030
  validateStepLimit,
9031
+ upstashIntegration,
9032
+ typeformIntegration,
9033
+ trelloIntegration,
6210
9034
  todoistIntegration,
6211
9035
  toWebRequest,
6212
9036
  toTanStackStartHandler,
9037
+ tldrawIntegration,
9038
+ tiktokIntegration,
9039
+ threadsIntegration,
9040
+ teamsIntegration,
9041
+ supabaseIntegration,
6213
9042
  stripeIntegration,
6214
9043
  slackIntegration,
9044
+ shopifyIntegration,
9045
+ sharepointIntegration,
6215
9046
  sentryIntegration,
6216
9047
  sendCallbackToOpener,
9048
+ salesforceIntegration,
9049
+ resendIntegration,
9050
+ redisIntegration,
9051
+ redditIntegration,
6217
9052
  rampIntegration,
6218
9053
  railwayIntegration,
9054
+ powerpointIntegration,
9055
+ postmanIntegration,
6219
9056
  posthogIntegration,
6220
9057
  polarIntegration,
9058
+ plannerIntegration,
9059
+ planetscaleIntegration,
9060
+ phantomIntegration,
6221
9061
  parseState,
6222
9062
  parseServerError,
9063
+ paperIntegration,
6223
9064
  outlookIntegration,
6224
9065
  onedriveIntegration,
6225
9066
  notionIntegration,
6226
9067
  netlifyIntegration,
9068
+ neonIntegration,
9069
+ mondayIntegration,
6227
9070
  mercuryIntegration,
9071
+ mailchimpIntegration,
9072
+ linkedinIntegration,
6228
9073
  linearIntegration,
9074
+ jiraIntegration,
6229
9075
  isTokenExpiredError,
6230
9076
  isAuthorizationError,
6231
9077
  isAuthError,
6232
9078
  intercomIntegration,
9079
+ instagramIntegration,
6233
9080
  hubspotIntegration,
9081
+ gtasksIntegration,
6234
9082
  gslidesIntegration,
6235
9083
  gsheetsIntegration,
6236
9084
  granolaIntegration,
9085
+ gmeetIntegration,
6237
9086
  gmailIntegration,
9087
+ gitlabIntegration,
6238
9088
  githubIntegration,
6239
9089
  genericOAuthIntegration,
6240
9090
  generateStateWithReturnUrl,
6241
9091
  generateState,
6242
9092
  generateCodeVerifier,
6243
9093
  generateCodeChallenge,
9094
+ gdriveIntegration,
6244
9095
  gdocsIntegration,
9096
+ gcontactsIntegration,
9097
+ gchatIntegration,
6245
9098
  gcalIntegration,
9099
+ ga4Integration,
6246
9100
  fromNodeHeaders,
6247
9101
  figmaIntegration,
9102
+ facebookIntegration,
9103
+ excelIntegration,
9104
+ etoroIntegration,
9105
+ encodeRedisCloudBearerToken,
6248
9106
  dropboxIntegration,
9107
+ discordIntegration,
6249
9108
  deliverWebhooks,
9109
+ datadogIntegration,
9110
+ databricksIntegration,
6250
9111
  cursorIntegration,
6251
9112
  createTanStackOAuthHandler,
6252
9113
  createSimpleIntegration,
6253
9114
  createOAuthRedirectHandler,
6254
9115
  createNextOAuthHandler,
6255
9116
  createMCPClient,
9117
+ convexIntegration,
9118
+ cloudflareIntegration,
6256
9119
  client,
9120
+ clickupIntegration,
9121
+ clerkIntegration,
6257
9122
  clearClientCache,
9123
+ canvaIntegration,
6258
9124
  calcomIntegration,
9125
+ buildPhantomBrowseDeeplink,
9126
+ binanceIntegration,
9127
+ betterstackIntegration,
9128
+ awsIntegration,
9129
+ auth0Integration,
9130
+ attioIntegration,
9131
+ astronomerIntegration,
9132
+ alpacaIntegration,
6259
9133
  airtableIntegration,
6260
9134
  WEBHOOK_DELIVERY_TIMEOUT_MS,
6261
9135
  TriggerClient,