integrate-sdk 0.9.31-dev.0 → 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 (286) hide show
  1. package/dist/adapters/auto-routes.js +216 -0
  2. package/dist/adapters/base-handler.js +216 -0
  3. package/dist/adapters/index.js +397 -85
  4. package/dist/adapters/nextjs.js +216 -0
  5. package/dist/adapters/solid-start.js +397 -85
  6. package/dist/adapters/svelte-kit.js +397 -85
  7. package/dist/index.d.ts +1 -1
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +3296 -481
  10. package/dist/oauth.js +216 -0
  11. package/dist/server.js +3199 -362
  12. package/dist/src/client.d.ts +55 -1
  13. package/dist/src/client.d.ts.map +1 -1
  14. package/dist/src/index.d.ts +116 -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/library-metadata.d.ts.map +1 -1
  139. package/dist/src/integrations/linkedin-client.d.ts +6 -0
  140. package/dist/src/integrations/linkedin-client.d.ts.map +1 -0
  141. package/dist/src/integrations/linkedin.d.ts +15 -0
  142. package/dist/src/integrations/linkedin.d.ts.map +1 -0
  143. package/dist/src/integrations/mailchimp-client.d.ts +5 -0
  144. package/dist/src/integrations/mailchimp-client.d.ts.map +1 -0
  145. package/dist/src/integrations/mailchimp.d.ts +13 -0
  146. package/dist/src/integrations/mailchimp.d.ts.map +1 -0
  147. package/dist/src/integrations/monday-client.d.ts +44 -0
  148. package/dist/src/integrations/monday-client.d.ts.map +1 -0
  149. package/dist/src/integrations/monday.d.ts +19 -0
  150. package/dist/src/integrations/monday.d.ts.map +1 -0
  151. package/dist/src/integrations/neon-client.d.ts +89 -0
  152. package/dist/src/integrations/neon-client.d.ts.map +1 -0
  153. package/dist/src/integrations/neon.d.ts +13 -0
  154. package/dist/src/integrations/neon.d.ts.map +1 -0
  155. package/dist/src/integrations/onedrive-client.d.ts +16 -0
  156. package/dist/src/integrations/onedrive-client.d.ts.map +1 -1
  157. package/dist/src/integrations/onedrive.d.ts +1 -1
  158. package/dist/src/integrations/onedrive.d.ts.map +1 -1
  159. package/dist/src/integrations/outlook.d.ts +1 -1
  160. package/dist/src/integrations/outlook.d.ts.map +1 -1
  161. package/dist/src/integrations/paper-client.d.ts +24 -0
  162. package/dist/src/integrations/paper-client.d.ts.map +1 -0
  163. package/dist/src/integrations/paper.d.ts +22 -0
  164. package/dist/src/integrations/paper.d.ts.map +1 -0
  165. package/dist/src/integrations/phantom-client.d.ts +9 -0
  166. package/dist/src/integrations/phantom-client.d.ts.map +1 -0
  167. package/dist/src/integrations/phantom.d.ts +13 -0
  168. package/dist/src/integrations/phantom.d.ts.map +1 -0
  169. package/dist/src/integrations/planetscale-client.d.ts +5 -0
  170. package/dist/src/integrations/planetscale-client.d.ts.map +1 -0
  171. package/dist/src/integrations/planetscale.d.ts +14 -0
  172. package/dist/src/integrations/planetscale.d.ts.map +1 -0
  173. package/dist/src/integrations/planner-client.d.ts +17 -0
  174. package/dist/src/integrations/planner-client.d.ts.map +1 -0
  175. package/dist/src/integrations/planner.d.ts +13 -0
  176. package/dist/src/integrations/planner.d.ts.map +1 -0
  177. package/dist/src/integrations/postman-client.d.ts +34 -0
  178. package/dist/src/integrations/postman-client.d.ts.map +1 -0
  179. package/dist/src/integrations/postman.d.ts +14 -0
  180. package/dist/src/integrations/postman.d.ts.map +1 -0
  181. package/dist/src/integrations/powerpoint-client.d.ts +8 -0
  182. package/dist/src/integrations/powerpoint-client.d.ts.map +1 -1
  183. package/dist/src/integrations/powerpoint.d.ts +1 -1
  184. package/dist/src/integrations/powerpoint.d.ts.map +1 -1
  185. package/dist/src/integrations/reddit-client.d.ts +5 -0
  186. package/dist/src/integrations/reddit-client.d.ts.map +1 -0
  187. package/dist/src/integrations/reddit.d.ts +13 -0
  188. package/dist/src/integrations/reddit.d.ts.map +1 -0
  189. package/dist/src/integrations/redis-client.d.ts +67 -0
  190. package/dist/src/integrations/redis-client.d.ts.map +1 -0
  191. package/dist/src/integrations/redis.d.ts +18 -0
  192. package/dist/src/integrations/redis.d.ts.map +1 -0
  193. package/dist/src/integrations/resend-client.d.ts +5 -0
  194. package/dist/src/integrations/resend-client.d.ts.map +1 -0
  195. package/dist/src/integrations/resend.d.ts +9 -0
  196. package/dist/src/integrations/resend.d.ts.map +1 -0
  197. package/dist/src/integrations/salesforce-client.d.ts +43 -0
  198. package/dist/src/integrations/salesforce-client.d.ts.map +1 -0
  199. package/dist/src/integrations/salesforce.d.ts +25 -0
  200. package/dist/src/integrations/salesforce.d.ts.map +1 -0
  201. package/dist/src/integrations/sharepoint-client.d.ts +15 -0
  202. package/dist/src/integrations/sharepoint-client.d.ts.map +1 -0
  203. package/dist/src/integrations/sharepoint.d.ts +15 -0
  204. package/dist/src/integrations/sharepoint.d.ts.map +1 -0
  205. package/dist/src/integrations/shopify-client.d.ts +31 -0
  206. package/dist/src/integrations/shopify-client.d.ts.map +1 -0
  207. package/dist/src/integrations/shopify.d.ts +16 -0
  208. package/dist/src/integrations/shopify.d.ts.map +1 -0
  209. package/dist/src/integrations/stripe-client.d.ts +12 -0
  210. package/dist/src/integrations/stripe-client.d.ts.map +1 -1
  211. package/dist/src/integrations/stripe.d.ts +1 -1
  212. package/dist/src/integrations/stripe.d.ts.map +1 -1
  213. package/dist/src/integrations/supabase-client.d.ts +63 -0
  214. package/dist/src/integrations/supabase-client.d.ts.map +1 -0
  215. package/dist/src/integrations/supabase.d.ts +26 -0
  216. package/dist/src/integrations/supabase.d.ts.map +1 -0
  217. package/dist/src/integrations/teams-client.d.ts +16 -0
  218. package/dist/src/integrations/teams-client.d.ts.map +1 -0
  219. package/dist/src/integrations/teams.d.ts +24 -0
  220. package/dist/src/integrations/teams.d.ts.map +1 -0
  221. package/dist/src/integrations/threads-client.d.ts +16 -0
  222. package/dist/src/integrations/threads-client.d.ts.map +1 -0
  223. package/dist/src/integrations/threads.d.ts +15 -0
  224. package/dist/src/integrations/threads.d.ts.map +1 -0
  225. package/dist/src/integrations/tiktok-client.d.ts +7 -0
  226. package/dist/src/integrations/tiktok-client.d.ts.map +1 -0
  227. package/dist/src/integrations/tiktok.d.ts +15 -0
  228. package/dist/src/integrations/tiktok.d.ts.map +1 -0
  229. package/dist/src/integrations/tldraw-client.d.ts +5 -0
  230. package/dist/src/integrations/tldraw-client.d.ts.map +1 -0
  231. package/dist/src/integrations/tldraw.d.ts +9 -0
  232. package/dist/src/integrations/tldraw.d.ts.map +1 -0
  233. package/dist/src/integrations/trello-client.d.ts +16 -0
  234. package/dist/src/integrations/trello-client.d.ts.map +1 -0
  235. package/dist/src/integrations/trello.d.ts +10 -0
  236. package/dist/src/integrations/trello.d.ts.map +1 -0
  237. package/dist/src/integrations/typeform-client.d.ts +13 -0
  238. package/dist/src/integrations/typeform-client.d.ts.map +1 -0
  239. package/dist/src/integrations/typeform.d.ts +15 -0
  240. package/dist/src/integrations/typeform.d.ts.map +1 -0
  241. package/dist/src/integrations/upstash-client.d.ts +28 -0
  242. package/dist/src/integrations/upstash-client.d.ts.map +1 -0
  243. package/dist/src/integrations/upstash.d.ts +18 -0
  244. package/dist/src/integrations/upstash.d.ts.map +1 -0
  245. package/dist/src/integrations/webflow-client.d.ts +78 -0
  246. package/dist/src/integrations/webflow-client.d.ts.map +1 -0
  247. package/dist/src/integrations/webflow.d.ts +20 -0
  248. package/dist/src/integrations/webflow.d.ts.map +1 -0
  249. package/dist/src/integrations/whatsapp-client.d.ts +22 -0
  250. package/dist/src/integrations/whatsapp-client.d.ts.map +1 -1
  251. package/dist/src/integrations/whatsapp.d.ts +1 -1
  252. package/dist/src/integrations/whatsapp.d.ts.map +1 -1
  253. package/dist/src/integrations/wix-client.d.ts +27 -0
  254. package/dist/src/integrations/wix-client.d.ts.map +1 -0
  255. package/dist/src/integrations/wix.d.ts +16 -0
  256. package/dist/src/integrations/wix.d.ts.map +1 -0
  257. package/dist/src/integrations/word-client.d.ts +8 -0
  258. package/dist/src/integrations/word-client.d.ts.map +1 -1
  259. package/dist/src/integrations/word.d.ts +1 -1
  260. package/dist/src/integrations/word.d.ts.map +1 -1
  261. package/dist/src/integrations/workday-client.d.ts +18 -0
  262. package/dist/src/integrations/workday-client.d.ts.map +1 -0
  263. package/dist/src/integrations/workday.d.ts +24 -0
  264. package/dist/src/integrations/workday.d.ts.map +1 -0
  265. package/dist/src/integrations/workos-client.d.ts +75 -0
  266. package/dist/src/integrations/workos-client.d.ts.map +1 -0
  267. package/dist/src/integrations/workos.d.ts +14 -0
  268. package/dist/src/integrations/workos.d.ts.map +1 -0
  269. package/dist/src/integrations/xero-client.d.ts +14 -0
  270. package/dist/src/integrations/xero-client.d.ts.map +1 -0
  271. package/dist/src/integrations/xero.d.ts +15 -0
  272. package/dist/src/integrations/xero.d.ts.map +1 -0
  273. package/dist/src/integrations/youtube.d.ts +1 -1
  274. package/dist/src/integrations/youtube.d.ts.map +1 -1
  275. package/dist/src/integrations/zapier-client.d.ts +41 -0
  276. package/dist/src/integrations/zapier-client.d.ts.map +1 -0
  277. package/dist/src/integrations/zapier.d.ts +20 -0
  278. package/dist/src/integrations/zapier.d.ts.map +1 -0
  279. package/dist/src/integrations/zoom-client.d.ts +42 -0
  280. package/dist/src/integrations/zoom-client.d.ts.map +1 -0
  281. package/dist/src/integrations/zoom.d.ts +23 -0
  282. package/dist/src/integrations/zoom.d.ts.map +1 -0
  283. package/dist/src/server.d.ts +54 -0
  284. package/dist/src/server.d.ts.map +1 -1
  285. package/index.ts +52 -0
  286. 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,14 @@ 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
+ },
893
965
  jira: {
894
966
  description: "Manage Jira issues, projects, sprints, and boards",
895
967
  category: "Engineering"
@@ -926,6 +998,10 @@ var INTEGRATION_LIBRARY_METADATA = {
926
998
  description: "Manage Vercel projects, deployments, and domains",
927
999
  category: "Infrastructure"
928
1000
  },
1001
+ workos: {
1002
+ description: "Manage WorkOS organizations, users, directory sync, and AuthKit",
1003
+ category: "Infrastructure"
1004
+ },
929
1005
  whatsapp: {
930
1006
  description: "Send WhatsApp messages and templates",
931
1007
  category: "Communication"
@@ -934,6 +1010,14 @@ var INTEGRATION_LIBRARY_METADATA = {
934
1010
  description: "Search and access YouTube videos and channels",
935
1011
  category: "Social Media"
936
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
+ },
937
1021
  powerpoint: {
938
1022
  description: "Manage PowerPoint presentations and sharing",
939
1023
  category: "Productivity"
@@ -950,17 +1034,149 @@ var INTEGRATION_LIBRARY_METADATA = {
950
1034
  description: "Manage Dropbox files, folders, and sharing",
951
1035
  category: "Storage"
952
1036
  },
1037
+ paper: {
1038
+ description: "Create, update, and export Dropbox Paper documents",
1039
+ category: "Productivity"
1040
+ },
953
1041
  granola: {
954
1042
  description: "List and read Granola meeting notes and folders",
955
1043
  category: "Productivity"
956
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
+ },
957
1053
  mercury: {
958
1054
  description: "Manage Mercury bank accounts, cards, and transactions",
959
1055
  category: "Finance"
960
1056
  },
1057
+ monday: {
1058
+ description: "Manage Monday.com boards, items, columns, and updates",
1059
+ category: "Productivity"
1060
+ },
961
1061
  zendesk: {
962
1062
  description: "Manage Zendesk tickets, users, and help center content",
963
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"
964
1180
  }
965
1181
  };
966
1182
  function integrationLibraryPresentationFields(integration) {
@@ -2349,56 +2565,8 @@ class MCPClientBase {
2349
2565
  }
2350
2566
  }
2351
2567
  const integrationIds = this.integrations.map((i) => i.id);
2352
- if (integrationIds.includes("github")) {
2353
- this.github = this.createIntegrationProxy("github");
2354
- }
2355
- if (integrationIds.includes("gmail")) {
2356
- this.gmail = this.createIntegrationProxy("gmail");
2357
- }
2358
- if (integrationIds.includes("notion")) {
2359
- this.notion = this.createIntegrationProxy("notion");
2360
- }
2361
- if (integrationIds.includes("slack")) {
2362
- this.slack = this.createIntegrationProxy("slack");
2363
- }
2364
- if (integrationIds.includes("linear")) {
2365
- this.linear = this.createIntegrationProxy("linear");
2366
- }
2367
- if (integrationIds.includes("railway")) {
2368
- this.railway = this.createIntegrationProxy("railway");
2369
- }
2370
- if (integrationIds.includes("vercel")) {
2371
- this.vercel = this.createIntegrationProxy("vercel");
2372
- }
2373
- if (integrationIds.includes("zendesk")) {
2374
- this.zendesk = this.createIntegrationProxy("zendesk");
2375
- }
2376
- if (integrationIds.includes("stripe")) {
2377
- this.stripe = this.createIntegrationProxy("stripe");
2378
- }
2379
- if (integrationIds.includes("gcal")) {
2380
- this.gcal = this.createIntegrationProxy("gcal");
2381
- }
2382
- if (integrationIds.includes("outlook")) {
2383
- this.outlook = this.createIntegrationProxy("outlook");
2384
- }
2385
- if (integrationIds.includes("airtable")) {
2386
- this.airtable = this.createIntegrationProxy("airtable");
2387
- }
2388
- if (integrationIds.includes("todoist")) {
2389
- this.todoist = this.createIntegrationProxy("todoist");
2390
- }
2391
- if (integrationIds.includes("gdocs")) {
2392
- this.gdocs = this.createIntegrationProxy("gdocs");
2393
- }
2394
- if (integrationIds.includes("gsheets")) {
2395
- this.gsheets = this.createIntegrationProxy("gsheets");
2396
- }
2397
- if (integrationIds.includes("gslides")) {
2398
- this.gslides = this.createIntegrationProxy("gslides");
2399
- }
2400
- if (integrationIds.includes("posthog")) {
2401
- this.posthog = this.createIntegrationProxy("posthog");
2568
+ for (const id of integrationIds) {
2569
+ this[id] = this.createIntegrationProxy(id);
2402
2570
  }
2403
2571
  this.server = this.createServerProxy();
2404
2572
  this.trigger = new TriggerClient({
@@ -4115,6 +4283,7 @@ var GITHUB_TOOLS = [
4115
4283
  "github_create_repo",
4116
4284
  "github_list_branches",
4117
4285
  "github_create_branch",
4286
+ "github_get_authenticated_user",
4118
4287
  "github_get_user",
4119
4288
  "github_list_commits",
4120
4289
  "github_get_commit",
@@ -4178,14 +4347,16 @@ function githubIntegration(config = {}) {
4178
4347
  // src/integrations/gmail.ts
4179
4348
  var logger10 = createLogger("Gmail");
4180
4349
  var GMAIL_TOOLS = [
4181
- "gmail_send_message",
4182
- "gmail_list_messages",
4350
+ "gmail_create_draft",
4351
+ "gmail_get_attachment",
4183
4352
  "gmail_get_message",
4184
- "gmail_search_messages",
4185
- "gmail_reply_message",
4186
- "gmail_list_threads",
4187
4353
  "gmail_get_thread",
4354
+ "gmail_list_messages",
4355
+ "gmail_list_threads",
4188
4356
  "gmail_modify_message",
4357
+ "gmail_reply_message",
4358
+ "gmail_search_messages",
4359
+ "gmail_send_message",
4189
4360
  "gmail_trash_message"
4190
4361
  ];
4191
4362
  function gmailIntegration(config = {}) {
@@ -4346,8 +4517,48 @@ function slackIntegration(config = {}) {
4346
4517
  }
4347
4518
  };
4348
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
+ }
4349
4560
  // src/integrations/linear.ts
4350
- var logger13 = createLogger("Linear");
4561
+ var logger14 = createLogger("Linear");
4351
4562
  var LINEAR_TOOLS = [
4352
4563
  "linear_create_issue",
4353
4564
  "linear_list_issues",
@@ -4402,15 +4613,15 @@ function linearIntegration(config = {}) {
4402
4613
  tools: [...LINEAR_TOOLS],
4403
4614
  oauth,
4404
4615
  async onInit(_client) {
4405
- logger13.debug("Linear integration initialized");
4616
+ logger14.debug("Linear integration initialized");
4406
4617
  },
4407
4618
  async onAfterConnect(_client) {
4408
- logger13.debug("Linear integration connected");
4619
+ logger14.debug("Linear integration connected");
4409
4620
  }
4410
4621
  };
4411
4622
  }
4412
4623
  // src/integrations/railway.ts
4413
- var logger14 = createLogger("Railway");
4624
+ var logger15 = createLogger("Railway");
4414
4625
  var RAILWAY_SCOPES = [
4415
4626
  "openid",
4416
4627
  "profile",
@@ -4515,15 +4726,15 @@ function railwayIntegration(config = {}) {
4515
4726
  tools: [...RAILWAY_TOOLS],
4516
4727
  oauth,
4517
4728
  async onInit(_client) {
4518
- logger14.debug("Railway integration initialized");
4729
+ logger15.debug("Railway integration initialized");
4519
4730
  },
4520
4731
  async onAfterConnect(_client) {
4521
- logger14.debug("Railway integration connected");
4732
+ logger15.debug("Railway integration connected");
4522
4733
  }
4523
4734
  };
4524
4735
  }
4525
4736
  // src/integrations/vercel.ts
4526
- var logger15 = createLogger("Vercel");
4737
+ var logger16 = createLogger("Vercel");
4527
4738
  var VERCEL_TOOLS = [
4528
4739
  "vercel_list_projects",
4529
4740
  "vercel_get_project",
@@ -4566,15 +4777,15 @@ function vercelIntegration(config = {}) {
4566
4777
  tools: [...VERCEL_TOOLS],
4567
4778
  oauth,
4568
4779
  async onInit(_client) {
4569
- logger15.debug("Vercel integration initialized");
4780
+ logger16.debug("Vercel integration initialized");
4570
4781
  },
4571
4782
  async onAfterConnect(_client) {
4572
- logger15.debug("Vercel integration connected");
4783
+ logger16.debug("Vercel integration connected");
4573
4784
  }
4574
4785
  };
4575
4786
  }
4576
4787
  // src/integrations/zendesk.ts
4577
- var logger16 = createLogger("Zendesk");
4788
+ var logger17 = createLogger("Zendesk");
4578
4789
  var ZENDESK_TOOLS = [
4579
4790
  "zendesk_list_tickets",
4580
4791
  "zendesk_get_ticket",
@@ -4623,15 +4834,15 @@ function zendeskIntegration(config = {}) {
4623
4834
  tools: [...ZENDESK_TOOLS],
4624
4835
  oauth,
4625
4836
  async onInit(_client) {
4626
- logger16.debug("Zendesk integration initialized");
4837
+ logger17.debug("Zendesk integration initialized");
4627
4838
  },
4628
4839
  async onAfterConnect(_client) {
4629
- logger16.debug("Zendesk integration connected");
4840
+ logger17.debug("Zendesk integration connected");
4630
4841
  }
4631
4842
  };
4632
4843
  }
4633
4844
  // src/integrations/stripe.ts
4634
- var logger17 = createLogger("Stripe");
4845
+ var logger18 = createLogger("Stripe");
4635
4846
  var STRIPE_TOOLS = [
4636
4847
  "stripe_list_customers",
4637
4848
  "stripe_get_customer",
@@ -4650,6 +4861,7 @@ var STRIPE_TOOLS = [
4650
4861
  "stripe_update_subscription",
4651
4862
  "stripe_cancel_subscription",
4652
4863
  "stripe_list_invoices",
4864
+ "stripe_get_invoice",
4653
4865
  "stripe_create_invoice",
4654
4866
  "stripe_finalize_invoice",
4655
4867
  "stripe_pay_invoice",
@@ -4687,27 +4899,28 @@ function stripeIntegration(config = {}) {
4687
4899
  tools: [...STRIPE_TOOLS],
4688
4900
  oauth,
4689
4901
  async onInit(_client) {
4690
- logger17.debug("Stripe integration initialized");
4902
+ logger18.debug("Stripe integration initialized");
4691
4903
  },
4692
4904
  async onAfterConnect(_client) {
4693
- logger17.debug("Stripe integration connected");
4905
+ logger18.debug("Stripe integration connected");
4694
4906
  }
4695
4907
  };
4696
4908
  }
4697
4909
  // src/integrations/gcal.ts
4698
- var logger18 = createLogger("Google Calendar");
4910
+ var logger19 = createLogger("Google Calendar");
4699
4911
  var GCAL_TOOLS = [
4700
- "gcal_list_calendars",
4701
- "gcal_get_calendar",
4702
- "gcal_list_events",
4703
- "gcal_get_event",
4912
+ "gcal_create_calendar",
4704
4913
  "gcal_create_event",
4705
- "gcal_update_event",
4914
+ "gcal_delete_calendar",
4706
4915
  "gcal_delete_event",
4916
+ "gcal_freebusy",
4917
+ "gcal_get_calendar",
4918
+ "gcal_get_event",
4707
4919
  "gcal_list_attendees",
4920
+ "gcal_list_calendars",
4921
+ "gcal_list_events",
4708
4922
  "gcal_quick_add",
4709
- "gcal_create_calendar",
4710
- "gcal_delete_calendar"
4923
+ "gcal_update_event"
4711
4924
  ];
4712
4925
  function gcalIntegration(config = {}) {
4713
4926
  const oauth = {
@@ -4728,41 +4941,127 @@ function gcalIntegration(config = {}) {
4728
4941
  tools: [...GCAL_TOOLS],
4729
4942
  oauth,
4730
4943
  async onInit(_client) {
4731
- 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");
4732
5031
  },
4733
5032
  async onAfterConnect(_client) {
4734
- logger18.debug("Google Calendar integration connected");
5033
+ logger21.debug("Google Contacts integration connected");
4735
5034
  }
4736
5035
  };
4737
5036
  }
4738
5037
  // src/integrations/outlook.ts
4739
- var logger19 = createLogger("Outlook");
5038
+ var logger22 = createLogger("Outlook");
4740
5039
  var OUTLOOK_TOOLS = [
4741
- "outlook_list_messages",
4742
- "outlook_get_message",
4743
- "outlook_send_message",
4744
- "outlook_search_messages",
4745
- "outlook_reply_message",
4746
- "outlook_reply_all_message",
4747
- "outlook_forward_message",
4748
- "outlook_delete_message",
4749
- "outlook_move_message",
4750
- "outlook_mark_message_read",
5040
+ "outlook_accept_event",
4751
5041
  "outlook_create_draft",
4752
- "outlook_list_mail_folders",
4753
- "outlook_list_events",
4754
- "outlook_get_event",
4755
5042
  "outlook_create_event",
4756
- "outlook_update_event",
4757
- "outlook_delete_event",
4758
- "outlook_list_calendars",
4759
- "outlook_accept_event",
4760
5043
  "outlook_decline_event",
4761
- "outlook_tentatively_accept_event",
5044
+ "outlook_delete_event",
5045
+ "outlook_delete_message",
4762
5046
  "outlook_find_meeting_times",
5047
+ "outlook_forward_message",
5048
+ "outlook_get_contact",
5049
+ "outlook_get_event",
5050
+ "outlook_get_message",
4763
5051
  "outlook_get_schedule",
5052
+ "outlook_list_calendars",
4764
5053
  "outlook_list_contacts",
4765
- "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"
4766
5065
  ];
4767
5066
  function outlookIntegration(config = {}) {
4768
5067
  const oauth = {
@@ -4783,15 +5082,73 @@ function outlookIntegration(config = {}) {
4783
5082
  tools: [...OUTLOOK_TOOLS],
4784
5083
  oauth,
4785
5084
  async onInit(_client) {
4786
- 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");
4787
5144
  },
4788
5145
  async onAfterConnect(_client) {
4789
- logger19.debug("Outlook integration connected");
5146
+ logger23.debug("Teams integration connected");
4790
5147
  }
4791
5148
  };
4792
5149
  }
4793
5150
  // src/integrations/airtable.ts
4794
- var logger20 = createLogger("Airtable");
5151
+ var logger24 = createLogger("Airtable");
4795
5152
  var AIRTABLE_TOOLS = [
4796
5153
  "airtable_list_bases",
4797
5154
  "airtable_get_base",
@@ -4837,25 +5194,109 @@ function airtableIntegration(config = {}) {
4837
5194
  tools: [...AIRTABLE_TOOLS],
4838
5195
  oauth,
4839
5196
  async onInit(_client) {
4840
- logger20.debug("Airtable integration initialized");
5197
+ logger24.debug("Airtable integration initialized");
4841
5198
  },
4842
5199
  async onAfterConnect(_client) {
4843
- logger20.debug("Airtable integration connected");
5200
+ logger24.debug("Airtable integration connected");
4844
5201
  }
4845
5202
  };
4846
5203
  }
4847
- // src/integrations/todoist.ts
4848
- var logger21 = createLogger("Todoist");
4849
- var TODOIST_TOOLS = [
4850
- "todoist_list_projects",
4851
- "todoist_get_project",
4852
- "todoist_create_project",
4853
- "todoist_update_project",
4854
- "todoist_delete_project",
4855
- "todoist_archive_project",
4856
- "todoist_list_tasks",
4857
- "todoist_get_task",
4858
- "todoist_create_task",
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",
5298
+ "todoist_get_task",
5299
+ "todoist_create_task",
4859
5300
  "todoist_update_task",
4860
5301
  "todoist_complete_task",
4861
5302
  "todoist_delete_task",
@@ -4900,15 +5341,15 @@ function todoistIntegration(config = {}) {
4900
5341
  tools: [...TODOIST_TOOLS],
4901
5342
  oauth,
4902
5343
  async onInit(_client) {
4903
- logger21.debug("Todoist integration initialized");
5344
+ logger27.debug("Todoist integration initialized");
4904
5345
  },
4905
5346
  async onAfterConnect(_client) {
4906
- logger21.debug("Todoist integration connected");
5347
+ logger27.debug("Todoist integration connected");
4907
5348
  }
4908
5349
  };
4909
5350
  }
4910
5351
  // src/integrations/whatsapp.ts
4911
- var logger22 = createLogger("WhatsApp");
5352
+ var logger28 = createLogger("WhatsApp");
4912
5353
  var WHATSAPP_TOOLS = [
4913
5354
  "whatsapp_send_message",
4914
5355
  "whatsapp_reply_message",
@@ -4932,7 +5373,10 @@ var WHATSAPP_TOOLS = [
4932
5373
  "whatsapp_update_profile",
4933
5374
  "whatsapp_get_message_status",
4934
5375
  "whatsapp_create_qr_code",
4935
- "whatsapp_list_qr_codes"
5376
+ "whatsapp_update_qr_code",
5377
+ "whatsapp_list_qr_codes",
5378
+ "whatsapp_get_qr_code",
5379
+ "whatsapp_delete_qr_code"
4936
5380
  ];
4937
5381
  function whatsappIntegration(config = {}) {
4938
5382
  const oauth = {
@@ -4954,15 +5398,15 @@ function whatsappIntegration(config = {}) {
4954
5398
  tools: [...WHATSAPP_TOOLS],
4955
5399
  oauth,
4956
5400
  async onInit(_client) {
4957
- logger22.debug("WhatsApp Business integration initialized");
5401
+ logger28.debug("WhatsApp Business integration initialized");
4958
5402
  },
4959
5403
  async onAfterConnect(_client) {
4960
- logger22.debug("WhatsApp Business integration connected");
5404
+ logger28.debug("WhatsApp Business integration connected");
4961
5405
  }
4962
5406
  };
4963
5407
  }
4964
5408
  // src/integrations/calcom.ts
4965
- var logger23 = createLogger("Cal.com");
5409
+ var logger29 = createLogger("Cal.com");
4966
5410
  var CALCOM_TOOLS = [
4967
5411
  "calcom_list_bookings",
4968
5412
  "calcom_get_booking",
@@ -5038,15 +5482,15 @@ function calcomIntegration(config = {}) {
5038
5482
  tools: [...CALCOM_TOOLS],
5039
5483
  oauth,
5040
5484
  async onInit(_client) {
5041
- logger23.debug("Cal.com integration initialized");
5485
+ logger29.debug("Cal.com integration initialized");
5042
5486
  },
5043
5487
  async onAfterConnect(_client) {
5044
- logger23.debug("Cal.com integration connected");
5488
+ logger29.debug("Cal.com integration connected");
5045
5489
  }
5046
5490
  };
5047
5491
  }
5048
5492
  // src/integrations/ramp.ts
5049
- var logger24 = createLogger("Ramp");
5493
+ var logger30 = createLogger("Ramp");
5050
5494
  var RAMP_TOOLS = [
5051
5495
  "ramp_list_transactions",
5052
5496
  "ramp_get_transaction",
@@ -5078,23 +5522,26 @@ function rampIntegration(config = {}) {
5078
5522
  tools: [...RAMP_TOOLS],
5079
5523
  oauth,
5080
5524
  async onInit(_client) {
5081
- logger24.debug("Ramp integration initialized");
5525
+ logger30.debug("Ramp integration initialized");
5082
5526
  },
5083
5527
  async onAfterConnect(_client) {
5084
- logger24.debug("Ramp integration connected");
5528
+ logger30.debug("Ramp integration connected");
5085
5529
  }
5086
5530
  };
5087
5531
  }
5088
5532
  // src/integrations/onedrive.ts
5089
- var logger25 = createLogger("OneDrive");
5533
+ var logger31 = createLogger("OneDrive");
5090
5534
  var ONEDRIVE_TOOLS = [
5091
- "onedrive_list_files",
5092
- "onedrive_get_file",
5093
- "onedrive_download_file",
5094
- "onedrive_upload_file",
5535
+ "onedrive_create_folder",
5095
5536
  "onedrive_delete_file",
5537
+ "onedrive_download_file",
5538
+ "onedrive_get_file",
5539
+ "onedrive_list_files",
5540
+ "onedrive_list_permissions",
5541
+ "onedrive_remove_permission",
5096
5542
  "onedrive_search_files",
5097
- "onedrive_share_file"
5543
+ "onedrive_share_file",
5544
+ "onedrive_upload_file"
5098
5545
  ];
5099
5546
  function onedriveIntegration(config = {}) {
5100
5547
  const oauth = {
@@ -5115,15 +5562,47 @@ function onedriveIntegration(config = {}) {
5115
5562
  tools: [...ONEDRIVE_TOOLS],
5116
5563
  oauth,
5117
5564
  async onInit(_client) {
5118
- logger25.debug("OneDrive integration initialized");
5565
+ logger31.debug("OneDrive integration initialized");
5119
5566
  },
5120
5567
  async onAfterConnect(_client) {
5121
- logger25.debug("OneDrive integration connected");
5568
+ logger31.debug("OneDrive integration connected");
5122
5569
  }
5123
5570
  };
5124
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
+ }
5125
5604
  // src/integrations/dropbox.ts
5126
- var logger26 = createLogger("Dropbox");
5605
+ var logger32 = createLogger("Dropbox");
5127
5606
  var DROPBOX_TOOLS = [
5128
5607
  "dropbox_get_current_account",
5129
5608
  "dropbox_get_space_usage",
@@ -5165,20 +5644,79 @@ function dropboxIntegration(options = {}) {
5165
5644
  authType: "oauth",
5166
5645
  oauth,
5167
5646
  async onInit(_client) {
5168
- 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");
5169
5702
  },
5170
5703
  async onAfterConnect(_client) {
5171
- logger26.debug("Dropbox integration connected");
5704
+ logger33.debug("Paper integration connected");
5172
5705
  }
5173
5706
  };
5174
5707
  }
5175
5708
  // src/integrations/gdocs.ts
5176
- var logger27 = createLogger("Google Docs");
5709
+ var logger34 = createLogger("Google Docs");
5177
5710
  var GDOCS_TOOLS = [
5178
- "gdocs_list",
5179
- "gdocs_get",
5180
- "gdocs_create",
5181
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",
5182
5720
  "gdocs_replace_text"
5183
5721
  ];
5184
5722
  function gdocsIntegration(config = {}) {
@@ -5198,24 +5736,26 @@ function gdocsIntegration(config = {}) {
5198
5736
  tools: [...GDOCS_TOOLS],
5199
5737
  oauth,
5200
5738
  async onInit(_client) {
5201
- logger27.debug("Google Docs integration initialized");
5739
+ logger34.debug("Google Docs integration initialized");
5202
5740
  },
5203
5741
  async onAfterConnect(_client) {
5204
- logger27.debug("Google Docs integration connected");
5742
+ logger34.debug("Google Docs integration connected");
5205
5743
  }
5206
5744
  };
5207
5745
  }
5208
5746
  // src/integrations/gsheets.ts
5209
- var logger28 = createLogger("Google Sheets");
5747
+ var logger35 = createLogger("Google Sheets");
5210
5748
  var GSHEETS_TOOLS = [
5211
- "gsheets_list",
5212
- "gsheets_get",
5213
- "gsheets_get_values",
5214
- "gsheets_update_values",
5215
- "gsheets_create",
5216
5749
  "gsheets_append_values",
5750
+ "gsheets_batch_update",
5751
+ "gsheets_batch_update_values",
5217
5752
  "gsheets_clear_values",
5218
- "gsheets_batch_update_values"
5753
+ "gsheets_create",
5754
+ "gsheets_delete",
5755
+ "gsheets_get",
5756
+ "gsheets_get_values",
5757
+ "gsheets_list",
5758
+ "gsheets_update_values"
5219
5759
  ];
5220
5760
  function gsheetsIntegration(config = {}) {
5221
5761
  const oauth = {
@@ -5234,22 +5774,24 @@ function gsheetsIntegration(config = {}) {
5234
5774
  tools: [...GSHEETS_TOOLS],
5235
5775
  oauth,
5236
5776
  async onInit(_client) {
5237
- logger28.debug("Google Sheets integration initialized");
5777
+ logger35.debug("Google Sheets integration initialized");
5238
5778
  },
5239
5779
  async onAfterConnect(_client) {
5240
- logger28.debug("Google Sheets integration connected");
5780
+ logger35.debug("Google Sheets integration connected");
5241
5781
  }
5242
5782
  };
5243
5783
  }
5244
5784
  // src/integrations/gslides.ts
5245
- var logger29 = createLogger("Google Slides");
5785
+ var logger36 = createLogger("Google Slides");
5246
5786
  var GSLIDES_TOOLS = [
5247
- "gslides_list",
5248
- "gslides_get",
5249
- "gslides_get_page",
5250
- "gslides_create",
5251
5787
  "gslides_add_slide",
5788
+ "gslides_batch_update",
5789
+ "gslides_create",
5790
+ "gslides_delete",
5252
5791
  "gslides_delete_slide",
5792
+ "gslides_get",
5793
+ "gslides_get_page",
5794
+ "gslides_list",
5253
5795
  "gslides_update_text"
5254
5796
  ];
5255
5797
  function gslidesIntegration(config = {}) {
@@ -5269,15 +5811,15 @@ function gslidesIntegration(config = {}) {
5269
5811
  tools: [...GSLIDES_TOOLS],
5270
5812
  oauth,
5271
5813
  async onInit(_client) {
5272
- logger29.debug("Google Slides integration initialized");
5814
+ logger36.debug("Google Slides integration initialized");
5273
5815
  },
5274
5816
  async onAfterConnect(_client) {
5275
- logger29.debug("Google Slides integration connected");
5817
+ logger36.debug("Google Slides integration connected");
5276
5818
  }
5277
5819
  };
5278
5820
  }
5279
5821
  // src/integrations/polar.ts
5280
- var logger30 = createLogger("Polar");
5822
+ var logger37 = createLogger("Polar");
5281
5823
  var POLAR_TOOLS = [
5282
5824
  "polar_list_products",
5283
5825
  "polar_get_product",
@@ -5334,15 +5876,178 @@ function polarIntegration(config = {}) {
5334
5876
  tools: [...POLAR_TOOLS],
5335
5877
  oauth,
5336
5878
  async onInit(_client) {
5337
- 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");
5338
6043
  },
5339
6044
  async onAfterConnect(_client) {
5340
- logger30.debug("Polar integration connected");
6045
+ logger40.debug("Facebook integration connected");
5341
6046
  }
5342
6047
  };
5343
6048
  }
5344
6049
  // src/integrations/figma.ts
5345
- var logger31 = createLogger("Figma");
6050
+ var logger41 = createLogger("Figma");
5346
6051
  var FIGMA_TOOLS = [
5347
6052
  "figma_get_file",
5348
6053
  "figma_get_file_nodes",
@@ -5408,15 +6113,15 @@ function figmaIntegration(config = {}) {
5408
6113
  tools: [...FIGMA_TOOLS],
5409
6114
  oauth,
5410
6115
  async onInit(_client) {
5411
- logger31.debug("Figma integration initialized");
6116
+ logger41.debug("Figma integration initialized");
5412
6117
  },
5413
6118
  async onAfterConnect(_client) {
5414
- logger31.debug("Figma integration connected");
6119
+ logger41.debug("Figma integration connected");
5415
6120
  }
5416
6121
  };
5417
6122
  }
5418
6123
  // src/integrations/intercom.ts
5419
- var logger32 = createLogger("Intercom");
6124
+ var logger42 = createLogger("Intercom");
5420
6125
  var INTERCOM_TOOLS = [
5421
6126
  "intercom_list_contacts",
5422
6127
  "intercom_get_contact",
@@ -5447,15 +6152,15 @@ function intercomIntegration(config = {}) {
5447
6152
  tools: [...INTERCOM_TOOLS],
5448
6153
  oauth,
5449
6154
  async onInit(_client) {
5450
- logger32.debug("Intercom integration initialized");
6155
+ logger42.debug("Intercom integration initialized");
5451
6156
  },
5452
6157
  async onAfterConnect(_client) {
5453
- logger32.debug("Intercom integration connected");
6158
+ logger42.debug("Intercom integration connected");
5454
6159
  }
5455
6160
  };
5456
6161
  }
5457
6162
  // src/integrations/hubspot.ts
5458
- var logger33 = createLogger("HubSpot");
6163
+ var logger43 = createLogger("HubSpot");
5459
6164
  var HUBSPOT_TOOLS = [
5460
6165
  "hubspot_list_contacts",
5461
6166
  "hubspot_get_contact",
@@ -5505,39 +6210,97 @@ function hubspotIntegration(config = {}) {
5505
6210
  tools: [...HUBSPOT_TOOLS],
5506
6211
  oauth,
5507
6212
  async onInit(_client) {
5508
- 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");
5509
6272
  },
5510
6273
  async onAfterConnect(_client) {
5511
- logger33.debug("HubSpot integration connected");
6274
+ logger44.debug("Instagram integration connected");
5512
6275
  }
5513
6276
  };
5514
6277
  }
5515
6278
  // src/integrations/youtube.ts
5516
- var logger34 = createLogger("YouTube");
6279
+ var logger45 = createLogger("YouTube");
5517
6280
  var YOUTUBE_TOOLS = [
5518
- "youtube_search",
5519
- "youtube_get_video",
5520
- "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",
5521
6286
  "youtube_get_channel",
5522
- "youtube_list_my_videos",
5523
- "youtube_get_video_rating",
5524
- "youtube_list_playlists",
6287
+ "youtube_get_my_channel",
5525
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",
5526
6294
  "youtube_list_playlist_items",
6295
+ "youtube_list_playlists",
5527
6296
  "youtube_list_subscriptions",
5528
- "youtube_list_comments",
5529
- "youtube_list_comment_replies",
5530
- "youtube_get_captions",
5531
6297
  "youtube_rate_video",
6298
+ "youtube_remove_from_playlist",
6299
+ "youtube_reply_to_comment",
6300
+ "youtube_search",
5532
6301
  "youtube_subscribe",
5533
6302
  "youtube_unsubscribe",
5534
- "youtube_add_comment",
5535
- "youtube_reply_to_comment",
5536
- "youtube_create_playlist",
5537
6303
  "youtube_update_playlist",
5538
- "youtube_delete_playlist",
5539
- "youtube_add_to_playlist",
5540
- "youtube_remove_from_playlist",
5541
6304
  "youtube_update_video"
5542
6305
  ];
5543
6306
  function youtubeIntegration(config = {}) {
@@ -5559,15 +6322,15 @@ function youtubeIntegration(config = {}) {
5559
6322
  tools: [...YOUTUBE_TOOLS],
5560
6323
  oauth,
5561
6324
  async onInit(_client) {
5562
- logger34.debug("YouTube integration initialized");
6325
+ logger45.debug("YouTube integration initialized");
5563
6326
  },
5564
6327
  async onAfterConnect(_client) {
5565
- logger34.debug("YouTube integration connected");
6328
+ logger45.debug("YouTube integration connected");
5566
6329
  }
5567
6330
  };
5568
6331
  }
5569
6332
  // src/integrations/cursor.ts
5570
- var logger35 = createLogger("Cursor");
6333
+ var logger46 = createLogger("Cursor");
5571
6334
  var CURSOR_TOOLS = [
5572
6335
  "cursor_list_agents",
5573
6336
  "cursor_get_agent",
@@ -5587,15 +6350,70 @@ function cursorIntegration(_config = {}) {
5587
6350
  logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/cursor.jpeg",
5588
6351
  tools: [...CURSOR_TOOLS],
5589
6352
  async onInit(_client) {
5590
- 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");
5591
6409
  },
5592
6410
  async onAfterConnect(_client) {
5593
- logger35.debug("Cursor integration connected");
6411
+ logger47.debug("Databricks integration connected");
5594
6412
  }
5595
6413
  };
5596
6414
  }
5597
6415
  // src/integrations/posthog.ts
5598
- var logger36 = createLogger("PostHog");
6416
+ var logger48 = createLogger("PostHog");
5599
6417
  var DEFAULT_POSTHOG_BASE_URL = "https://us.posthog.com";
5600
6418
  var POSTHOG_SCOPES = [
5601
6419
  "openid",
@@ -5681,15 +6499,54 @@ function posthogIntegration(config = {}) {
5681
6499
  tools: [...POSTHOG_TOOLS],
5682
6500
  oauth,
5683
6501
  async onInit(_client) {
5684
- 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");
5685
6542
  },
5686
6543
  async onAfterConnect(_client) {
5687
- logger36.debug("PostHog integration connected");
6544
+ logger49.debug("Postman integration connected");
5688
6545
  }
5689
6546
  };
5690
6547
  }
5691
6548
  // src/integrations/sentry.ts
5692
- var logger37 = createLogger("Sentry");
6549
+ var logger50 = createLogger("Sentry");
5693
6550
  var SENTRY_SCOPES = [
5694
6551
  "org:read",
5695
6552
  "project:read",
@@ -5738,32 +6595,106 @@ function sentryIntegration(config = {}) {
5738
6595
  tools: [...SENTRY_TOOLS],
5739
6596
  oauth,
5740
6597
  async onInit(_client) {
5741
- logger37.debug("Sentry integration initialized");
6598
+ logger50.debug("Sentry integration initialized");
5742
6599
  },
5743
6600
  async onAfterConnect(_client) {
5744
- logger37.debug("Sentry integration connected");
6601
+ logger50.debug("Sentry integration connected");
5745
6602
  }
5746
6603
  };
5747
6604
  }
5748
- // src/integrations/netlify.ts
5749
- var logger38 = createLogger("Netlify");
5750
- var NETLIFY_TOOLS = [
5751
- "netlify_get_current_user",
5752
- "netlify_list_accounts",
5753
- "netlify_get_account",
5754
- "netlify_list_sites",
5755
- "netlify_get_site",
5756
- "netlify_create_site",
5757
- "netlify_update_site",
5758
- "netlify_delete_site",
5759
- "netlify_enable_site",
5760
- "netlify_disable_site",
5761
- "netlify_list_deploys",
5762
- "netlify_get_deploy",
5763
- "netlify_create_deploy",
5764
- "netlify_cancel_deploy",
5765
- "netlify_restore_deploy",
5766
- "netlify_lock_deploy",
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",
5767
6698
  "netlify_unlock_deploy",
5768
6699
  "netlify_list_builds",
5769
6700
  "netlify_get_build",
@@ -5809,15 +6740,145 @@ function netlifyIntegration(config = {}) {
5809
6740
  tools: [...NETLIFY_TOOLS],
5810
6741
  oauth,
5811
6742
  async onInit(_client) {
5812
- logger38.debug("Netlify integration initialized");
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");
5813
6874
  },
5814
6875
  async onAfterConnect(_client) {
5815
- logger38.debug("Netlify integration connected");
6876
+ logger54.debug("Webflow integration connected");
5816
6877
  }
5817
6878
  };
5818
6879
  }
5819
6880
  // src/integrations/jira.ts
5820
- var logger39 = createLogger("Jira");
6881
+ var logger55 = createLogger("Jira");
5821
6882
  var JIRA_SCOPES = [
5822
6883
  "read:jira-work",
5823
6884
  "write:jira-work",
@@ -5862,215 +6923,1844 @@ function jiraIntegration(config = {}) {
5862
6923
  tools: [...JIRA_TOOLS],
5863
6924
  oauth,
5864
6925
  async onInit(_client) {
5865
- logger39.debug("Jira integration initialized");
6926
+ logger55.debug("Jira integration initialized");
5866
6927
  },
5867
6928
  async onAfterConnect(_client) {
5868
- logger39.debug("Jira integration connected");
6929
+ logger55.debug("Jira integration connected");
5869
6930
  }
5870
6931
  };
5871
6932
  }
5872
- // src/integrations/granola.ts
5873
- var GRANOLA_TOOLS = [
5874
- "granola_list_notes",
5875
- "granola_get_note",
5876
- "granola_list_folders"
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"
5877
6976
  ];
5878
- function granolaIntegration(options) {
5879
- if (!options.apiKey) {
5880
- throw new Error("granolaIntegration requires an apiKey");
5881
- }
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
+ };
5882
7011
  return {
5883
- id: "granola",
5884
- name: "Granola",
5885
- tools: [...GRANOLA_TOOLS],
5886
- authType: "apiKey",
5887
- getHeaders() {
5888
- return {
5889
- Authorization: `Bearer ${options.apiKey}`
5890
- };
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");
5891
7024
  }
5892
7025
  };
5893
7026
  }
5894
- // src/integrations/mercury.ts
5895
- var MERCURY_TOOLS = [
5896
- "mercury_get_organization",
5897
- "mercury_list_accounts",
5898
- "mercury_get_account",
5899
- "mercury_get_account_cards",
5900
- "mercury_list_account_transactions",
5901
- "mercury_get_account_transaction",
5902
- "mercury_list_account_statements",
5903
- "mercury_download_statement_pdf",
5904
- "mercury_list_transactions",
5905
- "mercury_get_transaction",
5906
- "mercury_update_transaction",
5907
- "mercury_upload_transaction_attachment",
5908
- "mercury_list_cards",
5909
- "mercury_get_card",
5910
- "mercury_create_card",
5911
- "mercury_update_card",
5912
- "mercury_freeze_card",
5913
- "mercury_unfreeze_card",
5914
- "mercury_cancel_card",
5915
- "mercury_list_categories",
5916
- "mercury_create_category",
5917
- "mercury_update_category",
5918
- "mercury_list_credit_accounts",
5919
- "mercury_list_users",
5920
- "mercury_get_user",
5921
- "mercury_list_recipients",
5922
- "mercury_get_recipient",
5923
- "mercury_create_recipient",
5924
- "mercury_update_recipient",
5925
- "mercury_list_recipient_attachments",
5926
- "mercury_upload_recipient_attachment",
5927
- "mercury_list_customers",
5928
- "mercury_get_customer",
5929
- "mercury_create_customer",
5930
- "mercury_update_customer",
5931
- "mercury_delete_customer",
5932
- "mercury_list_invoices",
5933
- "mercury_get_invoice",
5934
- "mercury_create_invoice",
5935
- "mercury_update_invoice",
5936
- "mercury_cancel_invoice",
5937
- "mercury_list_invoice_attachments",
5938
- "mercury_get_attachment",
5939
- "mercury_download_invoice_pdf",
5940
- "mercury_list_treasury_accounts",
5941
- "mercury_list_treasury_transactions",
5942
- "mercury_list_treasury_statements",
5943
- "mercury_list_events",
5944
- "mercury_get_event",
5945
- "mercury_list_send_money_requests",
5946
- "mercury_get_send_money_request",
5947
- "mercury_list_safe_requests",
5948
- "mercury_get_safe_request",
5949
- "mercury_download_safe_request_document",
5950
- "mercury_list_webhooks",
5951
- "mercury_get_webhook",
5952
- "mercury_create_webhook",
5953
- "mercury_update_webhook",
5954
- "mercury_delete_webhook",
5955
- "mercury_verify_webhook",
5956
- "mercury_create_internal_transfer",
5957
- "mercury_send_money",
5958
- "mercury_request_send_money"
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"
5959
7034
  ];
5960
- function mercuryIntegration(options) {
5961
- if (!options.apiKey) {
5962
- throw new Error("mercuryIntegration requires an apiKey");
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");
5963
7091
  }
5964
7092
  return {
5965
- id: "mercury",
5966
- name: "Mercury",
5967
- tools: [...MERCURY_TOOLS],
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],
5968
7099
  authType: "apiKey",
5969
7100
  getHeaders() {
5970
- return {
5971
- Authorization: `Bearer ${options.apiKey}`
5972
- };
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");
5973
7108
  }
5974
7109
  };
5975
7110
  }
5976
- // src/triggers/types.ts
5977
- var MAX_TRIGGER_STEPS = 20;
5978
- var WEBHOOK_DELIVERY_TIMEOUT_MS = 1e4;
5979
- // src/triggers/utils.ts
5980
- function validateStepLimit(stepIndex, maxSteps) {
5981
- if (stepIndex >= maxSteps) {
5982
- return {
5983
- valid: false,
5984
- error: `Step index ${stepIndex} exceeds maximum of ${maxSteps} steps`
5985
- };
5986
- }
5987
- return { valid: true };
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
+ };
5988
7162
  }
5989
- // src/triggers/webhooks.ts
5990
- var logger40 = createLogger("Webhooks", "server");
5991
- async function signPayload(payload, secret) {
5992
- const encoder = new TextEncoder;
5993
- const data = encoder.encode(JSON.stringify(payload));
5994
- const key = await crypto.subtle.importKey("raw", encoder.encode(secret), { name: "HMAC", hash: "SHA-256" }, false, ["sign"]);
5995
- const signature = await crypto.subtle.sign("HMAC", key, data);
5996
- return Array.from(new Uint8Array(signature)).map((b) => b.toString(16).padStart(2, "0")).join("");
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
+ };
5997
7974
  }
5998
- async function deliverWebhook(webhook, payload, timeoutMs) {
5999
- const headers = {
6000
- "Content-Type": "application/json",
6001
- ...webhook.headers
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
+ }
6002
8606
  };
6003
- if (webhook.secret) {
6004
- headers["X-Webhook-Signature"] = await signPayload(payload, webhook.secret);
6005
- }
6006
- const controller = new AbortController;
6007
- const timeout = setTimeout(() => controller.abort(), timeoutMs);
6008
- try {
6009
- const response = await fetch(webhook.url, {
6010
- method: "POST",
6011
- headers,
6012
- body: JSON.stringify(payload),
6013
- signal: controller.signal
6014
- });
6015
- if (!response.ok) {
6016
- logger40.warn(`Webhook delivery to ${webhook.url} returned ${response.status}`);
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");
6017
8620
  }
6018
- } finally {
6019
- clearTimeout(timeout);
6020
- }
8621
+ };
6021
8622
  }
6022
- async function deliverWebhooks(webhooks, payload, timeoutMs) {
6023
- if (webhooks.length === 0)
6024
- return;
6025
- const results = await Promise.allSettled(webhooks.map((webhook) => deliverWebhook(webhook, payload, timeoutMs)));
6026
- for (let i = 0;i < results.length; i++) {
6027
- const result = results[i];
6028
- if (result.status === "rejected") {
6029
- logger40.warn(`Webhook delivery to ${webhooks[i].url} failed:`, result.reason);
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"
6030
8647
  }
6031
- }
8648
+ };
8649
+ return {
8650
+ id: "planetscale",
8651
+ name: "PlanetScale",
8652
+ category: "Infrastructure",
8653
+ tools: [...PLANETSCALE_TOOLS],
8654
+ oauth
8655
+ };
6032
8656
  }
6033
- // src/integrations/generic.ts
6034
- function genericOAuthIntegration(config) {
6035
- const providerUpper = config.provider.toUpperCase().replace(/[^A-Z0-9]/g, "_");
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 = {}) {
6036
8669
  const oauth = {
6037
- provider: config.provider,
6038
- clientId: config.clientId ?? getEnv(`${providerUpper}_CLIENT_ID`),
6039
- clientSecret: config.clientSecret ?? getEnv(`${providerUpper}_CLIENT_SECRET`),
8670
+ provider: "powerpoint",
8671
+ clientId: config.clientId ?? getEnv("POWERPOINT_CLIENT_ID"),
8672
+ clientSecret: config.clientSecret ?? getEnv("POWERPOINT_CLIENT_SECRET"),
6040
8673
  scopes: config.scopes,
6041
8674
  optionalScopes: config.optionalScopes,
6042
8675
  redirectUri: config.redirectUri,
6043
8676
  config
6044
8677
  };
6045
8678
  return {
6046
- id: config.id,
6047
- name: config.name,
6048
- logoUrl: config.logoUrl,
6049
- tools: config.tools,
8679
+ id: "powerpoint",
8680
+ name: "PowerPoint",
8681
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/powerpoint.png",
8682
+ tools: [...POWERPOINT_TOOLS],
6050
8683
  oauth,
6051
- onInit: config.onInit,
6052
- onAfterConnect: config.onAfterConnect,
6053
- onDisconnect: config.onDisconnect
8684
+ async onInit(_client) {
8685
+ logger87.debug("PowerPoint integration initialized");
8686
+ },
8687
+ async onAfterConnect(_client) {
8688
+ logger87.debug("PowerPoint integration connected");
8689
+ }
6054
8690
  };
6055
8691
  }
6056
- function createSimpleIntegration(config) {
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
+ };
6057
8714
  return {
6058
- id: config.id,
6059
- tools: config.tools,
6060
- onInit: config.onInit,
6061
- onAfterConnect: config.onAfterConnect,
6062
- onDisconnect: config.onDisconnect
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
+ }
6063
8752
  };
6064
8753
  }
6065
8754
  // src/integrations/word.ts
6066
- var logger41 = createLogger("Word");
8755
+ var logger89 = createLogger("Word");
6067
8756
  var WORD_TOOLS = [
6068
- "word_list",
6069
- "word_get",
6070
- "word_create",
6071
8757
  "word_copy",
8758
+ "word_create",
6072
8759
  "word_delete",
6073
- "word_share"
8760
+ "word_get",
8761
+ "word_list",
8762
+ "word_share",
8763
+ "word_update_content"
6074
8764
  ];
6075
8765
  function wordIntegration(config = {}) {
6076
8766
  const oauth = {
@@ -6089,137 +8779,176 @@ function wordIntegration(config = {}) {
6089
8779
  tools: [...WORD_TOOLS],
6090
8780
  oauth,
6091
8781
  async onInit(_client) {
6092
- logger41.debug("Word integration initialized");
8782
+ logger89.debug("Word integration initialized");
6093
8783
  },
6094
8784
  async onAfterConnect(_client) {
6095
- logger41.debug("Word integration connected");
8785
+ logger89.debug("Word integration connected");
6096
8786
  }
6097
8787
  };
6098
8788
  }
6099
-
6100
- // src/integrations/excel.ts
6101
- var logger42 = createLogger("Excel");
6102
- var EXCEL_TOOLS = [
6103
- "excel_list",
6104
- "excel_get",
6105
- "excel_create",
6106
- "excel_delete",
6107
- "excel_share",
6108
- "excel_list_worksheets",
6109
- "excel_add_worksheet",
6110
- "excel_delete_worksheet",
6111
- "excel_get_range",
6112
- "excel_update_range",
6113
- "excel_clear_range",
6114
- "excel_get_used_range",
6115
- "excel_list_tables",
6116
- "excel_create_table",
6117
- "excel_get_table_rows",
6118
- "excel_add_table_rows"
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"
6119
8798
  ];
6120
- function excelIntegration(config = {}) {
8799
+ function zapierIntegration(config = {}) {
6121
8800
  const oauth = {
6122
- provider: "excel",
6123
- clientId: config.clientId ?? getEnv("EXCEL_CLIENT_ID"),
6124
- clientSecret: config.clientSecret ?? getEnv("EXCEL_CLIENT_SECRET"),
6125
- scopes: config.scopes,
6126
- optionalScopes: config.optionalScopes,
8801
+ provider: "zapier",
8802
+ clientId: config.clientId ?? getEnv("ZAPIER_CLIENT_ID"),
8803
+ clientSecret: config.clientSecret ?? getEnv("ZAPIER_CLIENT_SECRET"),
8804
+ scopes: config.scopes ?? [],
6127
8805
  redirectUri: config.redirectUri,
6128
- config
8806
+ config: {
8807
+ authorization_endpoint: "https://zapier.com/oauth/authorize/",
8808
+ token_endpoint: "https://zapier.com/oauth/token/",
8809
+ response_type: "code",
8810
+ grant_types_supported: ["authorization_code", "refresh_token"]
8811
+ }
6129
8812
  };
6130
8813
  return {
6131
- id: "excel",
6132
- name: "Excel",
6133
- logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/excel.png",
6134
- tools: [...EXCEL_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],
6135
8820
  oauth,
6136
8821
  async onInit(_client) {
6137
- logger42.debug("Excel integration initialized");
8822
+ logger90.debug("Zapier integration initialized");
6138
8823
  },
6139
8824
  async onAfterConnect(_client) {
6140
- logger42.debug("Excel integration connected");
8825
+ logger90.debug("Zapier integration connected");
6141
8826
  }
6142
8827
  };
6143
8828
  }
6144
-
6145
- // src/integrations/powerpoint.ts
6146
- var logger43 = createLogger("PowerPoint");
6147
- var POWERPOINT_TOOLS = [
6148
- "powerpoint_list",
6149
- "powerpoint_get",
6150
- "powerpoint_create",
6151
- "powerpoint_copy",
6152
- "powerpoint_delete",
6153
- "powerpoint_share"
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"
6154
8838
  ];
6155
- function powerpointIntegration(config = {}) {
8839
+ function zoomIntegration(config = {}) {
6156
8840
  const oauth = {
6157
- provider: "powerpoint",
6158
- clientId: config.clientId ?? getEnv("POWERPOINT_CLIENT_ID"),
6159
- clientSecret: config.clientSecret ?? getEnv("POWERPOINT_CLIENT_SECRET"),
8841
+ provider: "zoom",
8842
+ clientId: config.clientId ?? getEnv("ZOOM_CLIENT_ID"),
8843
+ clientSecret: config.clientSecret ?? getEnv("ZOOM_CLIENT_SECRET"),
6160
8844
  scopes: config.scopes,
6161
8845
  optionalScopes: config.optionalScopes,
6162
8846
  redirectUri: config.redirectUri,
6163
- config
8847
+ config: { ...config }
6164
8848
  };
6165
8849
  return {
6166
- id: "powerpoint",
6167
- name: "PowerPoint",
6168
- logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/powerpoint.png",
6169
- tools: [...POWERPOINT_TOOLS],
8850
+ id: "zoom",
8851
+ name: "Zoom",
8852
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/zoom.png",
8853
+ tools: [...ZOOM_TOOLS],
6170
8854
  oauth,
6171
8855
  async onInit(_client) {
6172
- logger43.debug("PowerPoint integration initialized");
8856
+ logger91.debug("Zoom integration initialized");
6173
8857
  },
6174
8858
  async onAfterConnect(_client) {
6175
- logger43.debug("PowerPoint integration connected");
8859
+ logger91.debug("Zoom integration connected");
6176
8860
  }
6177
8861
  };
6178
8862
  }
6179
-
6180
- // src/integrations/gdrive.ts
6181
- var logger44 = createLogger("Google Drive");
6182
- var GDRIVE_TOOLS = [
6183
- "gdrive_list_files",
6184
- "gdrive_get_file",
6185
- "gdrive_create_folder",
6186
- "gdrive_rename_file",
6187
- "gdrive_move_file",
6188
- "gdrive_copy_file",
6189
- "gdrive_delete_file",
6190
- "gdrive_trash_file",
6191
- "gdrive_upload_text_file",
6192
- "gdrive_download_file",
6193
- "gdrive_list_permissions",
6194
- "gdrive_share_file",
6195
- "gdrive_remove_permission",
6196
- "gdrive_get_about"
6197
- ];
6198
- function gdriveIntegration(config = {}) {
8863
+ // src/triggers/types.ts
8864
+ var MAX_TRIGGER_STEPS = 20;
8865
+ var WEBHOOK_DELIVERY_TIMEOUT_MS = 1e4;
8866
+ // src/triggers/utils.ts
8867
+ function validateStepLimit(stepIndex, maxSteps) {
8868
+ if (stepIndex >= maxSteps) {
8869
+ return {
8870
+ valid: false,
8871
+ error: `Step index ${stepIndex} exceeds maximum of ${maxSteps} steps`
8872
+ };
8873
+ }
8874
+ return { valid: true };
8875
+ }
8876
+ // src/triggers/webhooks.ts
8877
+ var logger92 = createLogger("Webhooks", "server");
8878
+ async function signPayload(payload, secret) {
8879
+ const encoder = new TextEncoder;
8880
+ const data = encoder.encode(JSON.stringify(payload));
8881
+ const key = await crypto.subtle.importKey("raw", encoder.encode(secret), { name: "HMAC", hash: "SHA-256" }, false, ["sign"]);
8882
+ const signature = await crypto.subtle.sign("HMAC", key, data);
8883
+ return Array.from(new Uint8Array(signature)).map((b) => b.toString(16).padStart(2, "0")).join("");
8884
+ }
8885
+ async function deliverWebhook(webhook, payload, timeoutMs) {
8886
+ const headers = {
8887
+ "Content-Type": "application/json",
8888
+ ...webhook.headers
8889
+ };
8890
+ if (webhook.secret) {
8891
+ headers["X-Webhook-Signature"] = await signPayload(payload, webhook.secret);
8892
+ }
8893
+ const controller = new AbortController;
8894
+ const timeout = setTimeout(() => controller.abort(), timeoutMs);
8895
+ try {
8896
+ const response = await fetch(webhook.url, {
8897
+ method: "POST",
8898
+ headers,
8899
+ body: JSON.stringify(payload),
8900
+ signal: controller.signal
8901
+ });
8902
+ if (!response.ok) {
8903
+ logger92.warn(`Webhook delivery to ${webhook.url} returned ${response.status}`);
8904
+ }
8905
+ } finally {
8906
+ clearTimeout(timeout);
8907
+ }
8908
+ }
8909
+ async function deliverWebhooks(webhooks, payload, timeoutMs) {
8910
+ if (webhooks.length === 0)
8911
+ return;
8912
+ const results = await Promise.allSettled(webhooks.map((webhook) => deliverWebhook(webhook, payload, timeoutMs)));
8913
+ for (let i = 0;i < results.length; i++) {
8914
+ const result = results[i];
8915
+ if (result.status === "rejected") {
8916
+ logger92.warn(`Webhook delivery to ${webhooks[i].url} failed:`, result.reason);
8917
+ }
8918
+ }
8919
+ }
8920
+ // src/integrations/generic.ts
8921
+ function genericOAuthIntegration(config) {
8922
+ const providerUpper = config.provider.toUpperCase().replace(/[^A-Z0-9]/g, "_");
6199
8923
  const oauth = {
6200
- provider: "gdrive",
6201
- clientId: config.clientId ?? getEnv("GDRIVE_CLIENT_ID"),
6202
- clientSecret: config.clientSecret ?? getEnv("GDRIVE_CLIENT_SECRET"),
8924
+ provider: config.provider,
8925
+ clientId: config.clientId ?? getEnv(`${providerUpper}_CLIENT_ID`),
8926
+ clientSecret: config.clientSecret ?? getEnv(`${providerUpper}_CLIENT_SECRET`),
6203
8927
  scopes: config.scopes,
6204
8928
  optionalScopes: config.optionalScopes,
6205
8929
  redirectUri: config.redirectUri,
6206
8930
  config
6207
8931
  };
6208
8932
  return {
6209
- id: "gdrive",
6210
- name: "Google Drive",
6211
- logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/google_drive.png",
6212
- tools: [...GDRIVE_TOOLS],
8933
+ id: config.id,
8934
+ name: config.name,
8935
+ logoUrl: config.logoUrl,
8936
+ tools: config.tools,
6213
8937
  oauth,
6214
- async onInit(_client) {
6215
- logger44.debug("Google Drive integration initialized");
6216
- },
6217
- async onAfterConnect(_client) {
6218
- logger44.debug("Google Drive integration connected");
6219
- }
8938
+ onInit: config.onInit,
8939
+ onAfterConnect: config.onAfterConnect,
8940
+ onDisconnect: config.onDisconnect
8941
+ };
8942
+ }
8943
+ function createSimpleIntegration(config) {
8944
+ return {
8945
+ id: config.id,
8946
+ tools: config.tools,
8947
+ onInit: config.onInit,
8948
+ onAfterConnect: config.onAfterConnect,
8949
+ onDisconnect: config.onDisconnect
6220
8950
  };
6221
8951
  }
6222
-
6223
8952
  // index.ts
6224
8953
  var client = createMCPClient({
6225
8954
  integrations: [
@@ -6227,18 +8956,28 @@ var client = createMCPClient({
6227
8956
  gmailIntegration(),
6228
8957
  notionIntegration(),
6229
8958
  slackIntegration(),
8959
+ discordIntegration(),
6230
8960
  linearIntegration(),
6231
8961
  vercelIntegration(),
6232
8962
  zendeskIntegration(),
6233
8963
  stripeIntegration(),
6234
8964
  gcalIntegration(),
8965
+ gmeetIntegration(),
8966
+ gtasksIntegration(),
8967
+ gcontactsIntegration(),
6235
8968
  outlookIntegration(),
8969
+ teamsIntegration(),
6236
8970
  airtableIntegration(),
8971
+ attioIntegration(),
6237
8972
  todoistIntegration(),
6238
8973
  whatsappIntegration(),
6239
8974
  calcomIntegration(),
8975
+ canvaIntegration(),
8976
+ cloudflareIntegration(),
6240
8977
  rampIntegration(),
6241
8978
  onedriveIntegration(),
8979
+ plannerIntegration(),
8980
+ sharepointIntegration(),
6242
8981
  wordIntegration(),
6243
8982
  excelIntegration(),
6244
8983
  powerpointIntegration(),
@@ -6247,74 +8986,150 @@ var client = createMCPClient({
6247
8986
  gsheetsIntegration(),
6248
8987
  gslidesIntegration(),
6249
8988
  polarIntegration(),
8989
+ facebookIntegration(),
6250
8990
  figmaIntegration(),
6251
8991
  intercomIntegration(),
6252
8992
  hubspotIntegration(),
8993
+ instagramIntegration(),
8994
+ linkedinIntegration(),
8995
+ threadsIntegration(),
8996
+ tiktokIntegration(),
8997
+ typeformIntegration(),
8998
+ xeroIntegration(),
8999
+ gchatIntegration(),
9000
+ shopifyIntegration(),
6253
9001
  youtubeIntegration(),
9002
+ zoomIntegration(),
9003
+ redditIntegration(),
6254
9004
  cursorIntegration(),
6255
9005
  posthogIntegration(),
6256
9006
  sentryIntegration(),
9007
+ datadogIntegration(),
6257
9008
  netlifyIntegration(),
6258
- jiraIntegration()
9009
+ mondayIntegration(),
9010
+ webflowIntegration(),
9011
+ jiraIntegration(),
9012
+ salesforceIntegration(),
9013
+ workdayIntegration()
6259
9014
  ],
6260
9015
  useServerConfig: true
6261
9016
  });
6262
9017
  export {
9018
+ zoomIntegration,
6263
9019
  zendeskIntegration,
9020
+ zapierIntegration,
6264
9021
  youtubeIntegration,
9022
+ xeroIntegration,
9023
+ workosIntegration,
9024
+ workdayIntegration,
9025
+ wordIntegration,
9026
+ wixIntegration,
6265
9027
  whatsappIntegration,
9028
+ webflowIntegration,
6266
9029
  vercelIntegration,
6267
9030
  validateStepLimit,
9031
+ upstashIntegration,
9032
+ typeformIntegration,
9033
+ trelloIntegration,
6268
9034
  todoistIntegration,
6269
9035
  toWebRequest,
6270
9036
  toTanStackStartHandler,
9037
+ tldrawIntegration,
9038
+ tiktokIntegration,
9039
+ threadsIntegration,
9040
+ teamsIntegration,
9041
+ supabaseIntegration,
6271
9042
  stripeIntegration,
6272
9043
  slackIntegration,
9044
+ shopifyIntegration,
9045
+ sharepointIntegration,
6273
9046
  sentryIntegration,
6274
9047
  sendCallbackToOpener,
9048
+ salesforceIntegration,
9049
+ resendIntegration,
9050
+ redisIntegration,
9051
+ redditIntegration,
6275
9052
  rampIntegration,
6276
9053
  railwayIntegration,
9054
+ powerpointIntegration,
9055
+ postmanIntegration,
6277
9056
  posthogIntegration,
6278
9057
  polarIntegration,
9058
+ plannerIntegration,
9059
+ planetscaleIntegration,
9060
+ phantomIntegration,
6279
9061
  parseState,
6280
9062
  parseServerError,
9063
+ paperIntegration,
6281
9064
  outlookIntegration,
6282
9065
  onedriveIntegration,
6283
9066
  notionIntegration,
6284
9067
  netlifyIntegration,
9068
+ neonIntegration,
9069
+ mondayIntegration,
6285
9070
  mercuryIntegration,
9071
+ mailchimpIntegration,
9072
+ linkedinIntegration,
6286
9073
  linearIntegration,
6287
9074
  jiraIntegration,
6288
9075
  isTokenExpiredError,
6289
9076
  isAuthorizationError,
6290
9077
  isAuthError,
6291
9078
  intercomIntegration,
9079
+ instagramIntegration,
6292
9080
  hubspotIntegration,
9081
+ gtasksIntegration,
6293
9082
  gslidesIntegration,
6294
9083
  gsheetsIntegration,
6295
9084
  granolaIntegration,
9085
+ gmeetIntegration,
6296
9086
  gmailIntegration,
9087
+ gitlabIntegration,
6297
9088
  githubIntegration,
6298
9089
  genericOAuthIntegration,
6299
9090
  generateStateWithReturnUrl,
6300
9091
  generateState,
6301
9092
  generateCodeVerifier,
6302
9093
  generateCodeChallenge,
9094
+ gdriveIntegration,
6303
9095
  gdocsIntegration,
9096
+ gcontactsIntegration,
9097
+ gchatIntegration,
6304
9098
  gcalIntegration,
9099
+ ga4Integration,
6305
9100
  fromNodeHeaders,
6306
9101
  figmaIntegration,
9102
+ facebookIntegration,
9103
+ excelIntegration,
9104
+ etoroIntegration,
9105
+ encodeRedisCloudBearerToken,
6307
9106
  dropboxIntegration,
9107
+ discordIntegration,
6308
9108
  deliverWebhooks,
9109
+ datadogIntegration,
9110
+ databricksIntegration,
6309
9111
  cursorIntegration,
6310
9112
  createTanStackOAuthHandler,
6311
9113
  createSimpleIntegration,
6312
9114
  createOAuthRedirectHandler,
6313
9115
  createNextOAuthHandler,
6314
9116
  createMCPClient,
9117
+ convexIntegration,
9118
+ cloudflareIntegration,
6315
9119
  client,
9120
+ clickupIntegration,
9121
+ clerkIntegration,
6316
9122
  clearClientCache,
9123
+ canvaIntegration,
6317
9124
  calcomIntegration,
9125
+ buildPhantomBrowseDeeplink,
9126
+ binanceIntegration,
9127
+ betterstackIntegration,
9128
+ awsIntegration,
9129
+ auth0Integration,
9130
+ attioIntegration,
9131
+ astronomerIntegration,
9132
+ alpacaIntegration,
6318
9133
  airtableIntegration,
6319
9134
  WEBHOOK_DELIVERY_TIMEOUT_MS,
6320
9135
  TriggerClient,