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/server.js CHANGED
@@ -96,18 +96,42 @@ var init_library_metadata = __esm(() => {
96
96
  description: "Manage Airtable bases, tables, and records",
97
97
  category: "Business"
98
98
  },
99
+ aws: {
100
+ description: "Inspect AWS accounts and resources with SigV4 (control-plane APIs)",
101
+ category: "Infrastructure"
102
+ },
103
+ attio: {
104
+ description: "Manage Attio people, companies, tasks, and CRM records",
105
+ category: "Business"
106
+ },
99
107
  calcom: {
100
108
  description: "Manage Cal.com bookings and schedules",
101
109
  category: "Business"
102
110
  },
111
+ canva: {
112
+ description: "List and create Canva designs, manage folders, and export assets",
113
+ category: "Productivity"
114
+ },
115
+ cloudflare: {
116
+ description: "Manage Cloudflare zones, DNS, CDN cache, and Workers",
117
+ category: "Infrastructure"
118
+ },
103
119
  cursor: {
104
120
  description: "Manage Cursor Cloud Agents and background tasks",
105
121
  category: "Engineering"
106
122
  },
123
+ databricks: {
124
+ description: "Run Databricks jobs, list clusters and SQL warehouses, and inspect workspace paths",
125
+ category: "Engineering"
126
+ },
107
127
  figma: {
108
128
  description: "Access Figma files, comments, and components",
109
129
  category: "Engineering"
110
130
  },
131
+ facebook: {
132
+ description: "Manage Facebook Page posts, comments, reactions, and insights via the Graph API",
133
+ category: "Social Media"
134
+ },
111
135
  github: {
112
136
  description: "Manage GitHub repos, issues, and pull requests",
113
137
  category: "Engineering"
@@ -120,10 +144,26 @@ var init_library_metadata = __esm(() => {
120
144
  description: "Manage Google Calendar events and schedules",
121
145
  category: "Productivity"
122
146
  },
147
+ gtasks: {
148
+ description: "Manage Google Tasks lists and to-dos",
149
+ category: "Productivity"
150
+ },
151
+ gmeet: {
152
+ description: "Create Google Meet links and manage meeting events via Calendar",
153
+ category: "Communication"
154
+ },
155
+ gcontacts: {
156
+ description: "List, search, create, update, and delete Google Contacts via the People API",
157
+ category: "Communication"
158
+ },
123
159
  hubspot: {
124
160
  description: "Manage HubSpot contacts, deals, and tickets",
125
161
  category: "Business"
126
162
  },
163
+ instagram: {
164
+ description: "Instagram Graph API — media, comments, insights, stories, and publishing",
165
+ category: "Social Media"
166
+ },
127
167
  intercom: {
128
168
  description: "Manage Intercom contacts and conversations",
129
169
  category: "Business"
@@ -140,6 +180,10 @@ var init_library_metadata = __esm(() => {
140
180
  description: "Manage OneDrive files, folders, and sharing",
141
181
  category: "Storage"
142
182
  },
183
+ planner: {
184
+ description: "Manage Microsoft Planner plans, buckets, and tasks",
185
+ category: "Productivity"
186
+ },
143
187
  outlook: {
144
188
  description: "Manage Outlook mail, calendars, and contacts",
145
189
  category: "Communication"
@@ -148,18 +192,38 @@ var init_library_metadata = __esm(() => {
148
192
  description: "Manage Polar products, orders, and subscriptions",
149
193
  category: "Finance"
150
194
  },
195
+ phantom: {
196
+ description: "Build Phantom mobile browse universal links and deeplink provider documentation (Solana)",
197
+ category: "Other"
198
+ },
151
199
  posthog: {
152
200
  description: "Read PostHog organizations, projects, insights, and feature flags",
153
201
  category: "Analytics"
154
202
  },
203
+ postman: {
204
+ description: "Manage Postman workspaces, collections, and environments via the Postman API",
205
+ category: "Engineering"
206
+ },
155
207
  ramp: {
156
208
  description: "Manage Ramp corporate cards, bills, and spend",
157
209
  category: "Business"
158
210
  },
211
+ resend: {
212
+ description: "Send email and manage domains with the Resend API",
213
+ category: "Communication"
214
+ },
215
+ mailchimp: {
216
+ description: "Manage Mailchimp audiences, members, and campaigns",
217
+ category: "Communication"
218
+ },
159
219
  railway: {
160
220
  description: "Manage Railway workspaces, projects, services, deployments, variables, domains, and volumes",
161
221
  category: "Infrastructure"
162
222
  },
223
+ supabase: {
224
+ description: "Manage Supabase organizations, projects, Postgres, API keys, secrets, and branches",
225
+ category: "Infrastructure"
226
+ },
163
227
  sentry: {
164
228
  description: "Monitor Sentry errors, issues, releases, and projects",
165
229
  category: "Engineering"
@@ -168,6 +232,14 @@ var init_library_metadata = __esm(() => {
168
232
  description: "Manage Netlify sites, deploys, builds, and environment variables",
169
233
  category: "Infrastructure"
170
234
  },
235
+ redis: {
236
+ description: "Manage Redis Cloud subscriptions, databases, async tasks, and audit logs",
237
+ category: "Infrastructure"
238
+ },
239
+ upstash: {
240
+ description: "Use Upstash Redis REST, QStash messaging, and related HTTP APIs",
241
+ category: "Infrastructure"
242
+ },
171
243
  jira: {
172
244
  description: "Manage Jira issues, projects, sprints, and boards",
173
245
  category: "Engineering"
@@ -204,6 +276,10 @@ var init_library_metadata = __esm(() => {
204
276
  description: "Manage Vercel projects, deployments, and domains",
205
277
  category: "Infrastructure"
206
278
  },
279
+ workos: {
280
+ description: "Manage WorkOS organizations, users, directory sync, and AuthKit",
281
+ category: "Infrastructure"
282
+ },
207
283
  whatsapp: {
208
284
  description: "Send WhatsApp messages and templates",
209
285
  category: "Communication"
@@ -212,6 +288,14 @@ var init_library_metadata = __esm(() => {
212
288
  description: "Search and access YouTube videos and channels",
213
289
  category: "Social Media"
214
290
  },
291
+ zoom: {
292
+ description: "Manage Zoom user profile and meetings",
293
+ category: "Communication"
294
+ },
295
+ reddit: {
296
+ description: "Browse subreddits, search posts, submit content, and vote on Reddit",
297
+ category: "Social Media"
298
+ },
215
299
  powerpoint: {
216
300
  description: "Manage PowerPoint presentations and sharing",
217
301
  category: "Productivity"
@@ -228,17 +312,149 @@ var init_library_metadata = __esm(() => {
228
312
  description: "Manage Dropbox files, folders, and sharing",
229
313
  category: "Storage"
230
314
  },
315
+ paper: {
316
+ description: "Create, update, and export Dropbox Paper documents",
317
+ category: "Productivity"
318
+ },
231
319
  granola: {
232
320
  description: "List and read Granola meeting notes and folders",
233
321
  category: "Productivity"
234
322
  },
323
+ alpaca: {
324
+ description: "Trade equities with Alpaca: account, orders, positions, and market clock",
325
+ category: "Finance"
326
+ },
327
+ binance: {
328
+ description: "Read Binance Spot prices, order books, and account data with read-only API keys",
329
+ category: "Finance"
330
+ },
235
331
  mercury: {
236
332
  description: "Manage Mercury bank accounts, cards, and transactions",
237
333
  category: "Finance"
238
334
  },
335
+ monday: {
336
+ description: "Manage Monday.com boards, items, columns, and updates",
337
+ category: "Productivity"
338
+ },
239
339
  zendesk: {
240
340
  description: "Manage Zendesk tickets, users, and help center content",
241
341
  category: "Business"
342
+ },
343
+ wix: {
344
+ description: "Manage Wix site stores, products, and e-commerce orders via REST",
345
+ category: "Business"
346
+ },
347
+ astronomer: {
348
+ description: "Manage Apache Airflow DAGs and deployments on Astronomer",
349
+ category: "Engineering"
350
+ },
351
+ auth0: {
352
+ description: "Manage Auth0 users, applications, and tenant configuration",
353
+ category: "Infrastructure"
354
+ },
355
+ betterstack: {
356
+ description: "Monitor uptime, logs, and incident alerts with BetterStack",
357
+ category: "Engineering"
358
+ },
359
+ clerk: {
360
+ description: "Manage Clerk users, organizations, and authentication",
361
+ category: "Infrastructure"
362
+ },
363
+ clickup: {
364
+ description: "Manage ClickUp tasks, lists, spaces, and workspaces",
365
+ category: "Productivity"
366
+ },
367
+ convex: {
368
+ description: "Run Convex functions, manage tables, and query your app backend",
369
+ category: "Engineering"
370
+ },
371
+ datadog: {
372
+ description: "Monitor Datadog metrics, logs, dashboards, and alerts",
373
+ category: "Engineering"
374
+ },
375
+ discord: {
376
+ description: "Send messages and manage Discord channels and servers",
377
+ category: "Communication"
378
+ },
379
+ etoro: {
380
+ description: "Read eToro portfolio data and market instruments",
381
+ category: "Finance"
382
+ },
383
+ ga4: {
384
+ description: "Read Google Analytics 4 reports, properties, and events",
385
+ category: "Analytics"
386
+ },
387
+ gchat: {
388
+ description: "Send messages and manage Google Chat spaces and memberships",
389
+ category: "Communication"
390
+ },
391
+ gitlab: {
392
+ description: "Manage GitLab repositories, issues, and merge requests",
393
+ category: "Engineering"
394
+ },
395
+ linkedin: {
396
+ description: "Post updates and manage LinkedIn profile and company pages",
397
+ category: "Social Media"
398
+ },
399
+ neon: {
400
+ description: "Manage Neon Postgres projects, branches, and databases",
401
+ category: "Infrastructure"
402
+ },
403
+ planetscale: {
404
+ description: "Manage PlanetScale databases, branches, and schema changes",
405
+ category: "Infrastructure"
406
+ },
407
+ salesforce: {
408
+ description: "Manage Salesforce accounts, contacts, opportunities, and cases",
409
+ category: "Business"
410
+ },
411
+ sharepoint: {
412
+ description: "Manage SharePoint sites, lists, documents, and permissions",
413
+ category: "Productivity"
414
+ },
415
+ shopify: {
416
+ description: "Manage Shopify products, orders, customers, and inventory",
417
+ category: "Business"
418
+ },
419
+ teams: {
420
+ description: "Send messages and manage Microsoft Teams channels and meetings",
421
+ category: "Communication"
422
+ },
423
+ threads: {
424
+ description: "Post and manage content on Threads (Meta)",
425
+ category: "Social Media"
426
+ },
427
+ tiktok: {
428
+ description: "Manage TikTok videos, account info, and creator analytics",
429
+ category: "Social Media"
430
+ },
431
+ tldraw: {
432
+ description: "Create and manage tldraw collaborative whiteboards",
433
+ category: "Productivity"
434
+ },
435
+ trello: {
436
+ description: "Manage Trello boards, lists, and cards",
437
+ category: "Productivity"
438
+ },
439
+ typeform: {
440
+ description: "Create and manage Typeform surveys and responses",
441
+ category: "Business"
442
+ },
443
+ webflow: {
444
+ description: "Manage Webflow sites, collections, and CMS content",
445
+ category: "Engineering"
446
+ },
447
+ workday: {
448
+ description: "Read Workday HR data including workers, organizations, and pay",
449
+ category: "Business"
450
+ },
451
+ xero: {
452
+ description: "Manage Xero invoices, contacts, and accounting data",
453
+ category: "Finance"
454
+ },
455
+ zapier: {
456
+ description: "Trigger and manage Zapier automation workflows",
457
+ category: "Engineering"
242
458
  }
243
459
  };
244
460
  });
@@ -2244,7 +2460,7 @@ async function deliverWebhook(webhook, payload, timeoutMs) {
2244
2460
  signal: controller.signal
2245
2461
  });
2246
2462
  if (!response.ok) {
2247
- logger43.warn(`Webhook delivery to ${webhook.url} returned ${response.status}`);
2463
+ logger91.warn(`Webhook delivery to ${webhook.url} returned ${response.status}`);
2248
2464
  }
2249
2465
  } finally {
2250
2466
  clearTimeout(timeout);
@@ -2257,14 +2473,14 @@ async function deliverWebhooks(webhooks, payload, timeoutMs) {
2257
2473
  for (let i = 0;i < results.length; i++) {
2258
2474
  const result = results[i];
2259
2475
  if (result.status === "rejected") {
2260
- logger43.warn(`Webhook delivery to ${webhooks[i].url} failed:`, result.reason);
2476
+ logger91.warn(`Webhook delivery to ${webhooks[i].url} failed:`, result.reason);
2261
2477
  }
2262
2478
  }
2263
2479
  }
2264
- var logger43;
2480
+ var logger91;
2265
2481
  var init_webhooks = __esm(() => {
2266
2482
  init_logger();
2267
- logger43 = createLogger("Webhooks", "server");
2483
+ logger91 = createLogger("Webhooks", "server");
2268
2484
  });
2269
2485
 
2270
2486
  // src/triggers/types.ts
@@ -2284,13 +2500,13 @@ async function executeTrigger(trigger, config, context) {
2284
2500
  while (stepIndex < MAX_TRIGGER_STEPS) {
2285
2501
  const stepValidation = validateStepLimit(stepIndex, MAX_TRIGGER_STEPS);
2286
2502
  if (!stepValidation.valid) {
2287
- logger44.error(`[Trigger ${trigger.id}] ${stepValidation.error}`);
2503
+ logger92.error(`[Trigger ${trigger.id}] ${stepValidation.error}`);
2288
2504
  break;
2289
2505
  }
2290
2506
  const providerToken = await config.getProviderToken(currentProvider, undefined, context);
2291
2507
  if (!providerToken) {
2292
2508
  const error = `No OAuth token available for provider '${currentProvider}'`;
2293
- logger44.error(`[Trigger ${trigger.id}] ${error}`);
2509
+ logger92.error(`[Trigger ${trigger.id}] ${error}`);
2294
2510
  steps.push({
2295
2511
  stepIndex,
2296
2512
  toolName: currentToolName,
@@ -2316,7 +2532,7 @@ async function executeTrigger(trigger, config, context) {
2316
2532
  } catch (err) {
2317
2533
  stepSuccess = false;
2318
2534
  stepError = err.message || "Tool execution failed";
2319
- logger44.error(`[Trigger ${trigger.id}] Step ${stepIndex} failed:`, err);
2535
+ logger92.error(`[Trigger ${trigger.id}] Step ${stepIndex} failed:`, err);
2320
2536
  }
2321
2537
  if (stepSuccess && toolResult) {
2322
2538
  if (toolResult.isError === true) {
@@ -2409,7 +2625,7 @@ async function executeTrigger(trigger, config, context) {
2409
2625
  return { success: steps.every((s) => s.success), steps, error: stepError };
2410
2626
  }
2411
2627
  const limitError = `Trigger execution exceeded maximum of ${MAX_TRIGGER_STEPS} steps`;
2412
- logger44.error(`[Trigger ${trigger.id}] ${limitError}`);
2628
+ logger92.error(`[Trigger ${trigger.id}] ${limitError}`);
2413
2629
  await config.triggers.update(trigger.id, {
2414
2630
  lastRunAt: new Date().toISOString(),
2415
2631
  runCount: (trigger.runCount || 0) + 1,
@@ -2418,12 +2634,12 @@ async function executeTrigger(trigger, config, context) {
2418
2634
  }, context);
2419
2635
  return { success: false, steps, error: limitError };
2420
2636
  }
2421
- var logger44;
2637
+ var logger92;
2422
2638
  var init_executor2 = __esm(() => {
2423
2639
  init_logger();
2424
2640
  init_utils();
2425
2641
  init_webhooks();
2426
- logger44 = createLogger("TriggerExecutor", "server");
2642
+ logger92 = createLogger("TriggerExecutor", "server");
2427
2643
  });
2428
2644
 
2429
2645
  // src/protocol/jsonrpc.ts
@@ -3856,56 +4072,8 @@ class MCPClientBase {
3856
4072
  }
3857
4073
  }
3858
4074
  const integrationIds = this.integrations.map((i) => i.id);
3859
- if (integrationIds.includes("github")) {
3860
- this.github = this.createIntegrationProxy("github");
3861
- }
3862
- if (integrationIds.includes("gmail")) {
3863
- this.gmail = this.createIntegrationProxy("gmail");
3864
- }
3865
- if (integrationIds.includes("notion")) {
3866
- this.notion = this.createIntegrationProxy("notion");
3867
- }
3868
- if (integrationIds.includes("slack")) {
3869
- this.slack = this.createIntegrationProxy("slack");
3870
- }
3871
- if (integrationIds.includes("linear")) {
3872
- this.linear = this.createIntegrationProxy("linear");
3873
- }
3874
- if (integrationIds.includes("railway")) {
3875
- this.railway = this.createIntegrationProxy("railway");
3876
- }
3877
- if (integrationIds.includes("vercel")) {
3878
- this.vercel = this.createIntegrationProxy("vercel");
3879
- }
3880
- if (integrationIds.includes("zendesk")) {
3881
- this.zendesk = this.createIntegrationProxy("zendesk");
3882
- }
3883
- if (integrationIds.includes("stripe")) {
3884
- this.stripe = this.createIntegrationProxy("stripe");
3885
- }
3886
- if (integrationIds.includes("gcal")) {
3887
- this.gcal = this.createIntegrationProxy("gcal");
3888
- }
3889
- if (integrationIds.includes("outlook")) {
3890
- this.outlook = this.createIntegrationProxy("outlook");
3891
- }
3892
- if (integrationIds.includes("airtable")) {
3893
- this.airtable = this.createIntegrationProxy("airtable");
3894
- }
3895
- if (integrationIds.includes("todoist")) {
3896
- this.todoist = this.createIntegrationProxy("todoist");
3897
- }
3898
- if (integrationIds.includes("gdocs")) {
3899
- this.gdocs = this.createIntegrationProxy("gdocs");
3900
- }
3901
- if (integrationIds.includes("gsheets")) {
3902
- this.gsheets = this.createIntegrationProxy("gsheets");
3903
- }
3904
- if (integrationIds.includes("gslides")) {
3905
- this.gslides = this.createIntegrationProxy("gslides");
3906
- }
3907
- if (integrationIds.includes("posthog")) {
3908
- this.posthog = this.createIntegrationProxy("posthog");
4075
+ for (const id of integrationIds) {
4076
+ this[id] = this.createIntegrationProxy(id);
3909
4077
  }
3910
4078
  this.server = this.createServerProxy();
3911
4079
  this.trigger = new TriggerClient({
@@ -4982,6 +5150,7 @@ var GITHUB_TOOLS = [
4982
5150
  "github_create_repo",
4983
5151
  "github_list_branches",
4984
5152
  "github_create_branch",
5153
+ "github_get_authenticated_user",
4985
5154
  "github_get_user",
4986
5155
  "github_list_commits",
4987
5156
  "github_get_commit",
@@ -5042,18 +5211,76 @@ function githubIntegration(config = {}) {
5042
5211
  }
5043
5212
  };
5044
5213
  }
5214
+ // src/integrations/gitlab.ts
5215
+ init_logger();
5216
+ var logger9 = createLogger("GitLab");
5217
+ var GITLAB_TOOLS = [
5218
+ "gitlab_list_projects",
5219
+ "gitlab_list_own_projects",
5220
+ "gitlab_get_project",
5221
+ "gitlab_create_project",
5222
+ "gitlab_create_issue",
5223
+ "gitlab_list_issues",
5224
+ "gitlab_get_issue",
5225
+ "gitlab_update_issue",
5226
+ "gitlab_close_issue",
5227
+ "gitlab_create_merge_request",
5228
+ "gitlab_list_merge_requests",
5229
+ "gitlab_get_merge_request",
5230
+ "gitlab_accept_merge_request",
5231
+ "gitlab_list_branches",
5232
+ "gitlab_create_branch",
5233
+ "gitlab_list_commits",
5234
+ "gitlab_get_commit",
5235
+ "gitlab_list_issue_notes",
5236
+ "gitlab_create_issue_note",
5237
+ "gitlab_list_milestones",
5238
+ "gitlab_create_milestone",
5239
+ "gitlab_get_current_user"
5240
+ ];
5241
+ function gitlabIntegration(config = {}) {
5242
+ const oauth = {
5243
+ provider: "gitlab",
5244
+ clientId: config.clientId ?? getEnv("GITLAB_CLIENT_ID"),
5245
+ clientSecret: config.clientSecret ?? getEnv("GITLAB_CLIENT_SECRET"),
5246
+ scopes: config.scopes ?? ["read_api", "write_api", "read_user"],
5247
+ optionalScopes: config.optionalScopes,
5248
+ redirectUri: config.redirectUri,
5249
+ config: {
5250
+ apiBaseUrl: config.apiBaseUrl ?? "https://gitlab.com/api/v4/",
5251
+ ...config
5252
+ }
5253
+ };
5254
+ return {
5255
+ id: "gitlab",
5256
+ name: "GitLab",
5257
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/gitlab.png",
5258
+ description: "Manage GitLab projects, issues, merge requests, and CI/CD",
5259
+ category: "Engineering",
5260
+ tools: [...GITLAB_TOOLS],
5261
+ oauth,
5262
+ async onInit(_client) {
5263
+ logger9.debug("GitLab integration initialized");
5264
+ },
5265
+ async onAfterConnect(_client) {
5266
+ logger9.debug("GitLab integration connected");
5267
+ }
5268
+ };
5269
+ }
5045
5270
  // src/integrations/gmail.ts
5046
5271
  init_logger();
5047
- var logger9 = createLogger("Gmail");
5272
+ var logger10 = createLogger("Gmail");
5048
5273
  var GMAIL_TOOLS = [
5049
- "gmail_send_message",
5050
- "gmail_list_messages",
5274
+ "gmail_create_draft",
5275
+ "gmail_get_attachment",
5051
5276
  "gmail_get_message",
5052
- "gmail_search_messages",
5053
- "gmail_reply_message",
5054
- "gmail_list_threads",
5055
5277
  "gmail_get_thread",
5278
+ "gmail_list_messages",
5279
+ "gmail_list_threads",
5056
5280
  "gmail_modify_message",
5281
+ "gmail_reply_message",
5282
+ "gmail_search_messages",
5283
+ "gmail_send_message",
5057
5284
  "gmail_trash_message"
5058
5285
  ];
5059
5286
  function gmailIntegration(config = {}) {
@@ -5073,16 +5300,16 @@ function gmailIntegration(config = {}) {
5073
5300
  tools: [...GMAIL_TOOLS],
5074
5301
  oauth,
5075
5302
  async onInit(_client) {
5076
- logger9.debug("Gmail integration initialized");
5303
+ logger10.debug("Gmail integration initialized");
5077
5304
  },
5078
5305
  async onAfterConnect(_client) {
5079
- logger9.debug("Gmail integration connected");
5306
+ logger10.debug("Gmail integration connected");
5080
5307
  }
5081
5308
  };
5082
5309
  }
5083
5310
  // src/integrations/notion.ts
5084
5311
  init_logger();
5085
- var logger10 = createLogger("Notion");
5312
+ var logger11 = createLogger("Notion");
5086
5313
  var NOTION_TOOLS = [
5087
5314
  "notion_search",
5088
5315
  "notion_get_page",
@@ -5135,16 +5362,16 @@ function notionIntegration(config = {}) {
5135
5362
  tools: [...NOTION_TOOLS],
5136
5363
  oauth,
5137
5364
  async onInit(_client) {
5138
- logger10.debug("Notion integration initialized");
5365
+ logger11.debug("Notion integration initialized");
5139
5366
  },
5140
5367
  async onAfterConnect(_client) {
5141
- logger10.debug("Notion integration connected");
5368
+ logger11.debug("Notion integration connected");
5142
5369
  }
5143
5370
  };
5144
5371
  }
5145
5372
  // src/integrations/slack.ts
5146
5373
  init_logger();
5147
- var logger11 = createLogger("Slack");
5374
+ var logger12 = createLogger("Slack");
5148
5375
  var SLACK_TOOLS = [
5149
5376
  "slack_send_message",
5150
5377
  "slack_list_messages",
@@ -5209,16 +5436,57 @@ function slackIntegration(config = {}) {
5209
5436
  tools: [...SLACK_TOOLS],
5210
5437
  oauth,
5211
5438
  async onInit(_client) {
5212
- logger11.debug("Slack integration initialized");
5439
+ logger12.debug("Slack integration initialized");
5440
+ },
5441
+ async onAfterConnect(_client) {
5442
+ logger12.debug("Slack integration connected");
5443
+ }
5444
+ };
5445
+ }
5446
+ // src/integrations/discord.ts
5447
+ init_logger();
5448
+ var logger13 = createLogger("Discord");
5449
+ var DISCORD_TOOLS = [
5450
+ "discord_get_current_user",
5451
+ "discord_list_my_guilds",
5452
+ "discord_get_guild",
5453
+ "discord_list_guild_channels",
5454
+ "discord_get_channel",
5455
+ "discord_send_message",
5456
+ "discord_list_messages",
5457
+ "discord_edit_message",
5458
+ "discord_delete_message"
5459
+ ];
5460
+ function discordIntegration(config = {}) {
5461
+ const oauth = {
5462
+ provider: "discord",
5463
+ clientId: config.clientId ?? getEnv("DISCORD_CLIENT_ID"),
5464
+ clientSecret: config.clientSecret ?? getEnv("DISCORD_CLIENT_SECRET"),
5465
+ scopes: config.scopes ?? ["identify", "email", "guilds", "bot", "applications.commands"],
5466
+ redirectUri: config.redirectUri,
5467
+ config: {
5468
+ ...config
5469
+ }
5470
+ };
5471
+ return {
5472
+ id: "discord",
5473
+ name: "Discord",
5474
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/discord.png",
5475
+ description: "Send and manage Discord messages; list guilds and channels (bot token required on server for channel APIs)",
5476
+ category: "Communication",
5477
+ tools: [...DISCORD_TOOLS],
5478
+ oauth,
5479
+ async onInit(_client) {
5480
+ logger13.debug("Discord integration initialized");
5213
5481
  },
5214
5482
  async onAfterConnect(_client) {
5215
- logger11.debug("Slack integration connected");
5483
+ logger13.debug("Discord integration connected");
5216
5484
  }
5217
5485
  };
5218
5486
  }
5219
5487
  // src/integrations/linear.ts
5220
5488
  init_logger();
5221
- var logger12 = createLogger("Linear");
5489
+ var logger14 = createLogger("Linear");
5222
5490
  var LINEAR_TOOLS = [
5223
5491
  "linear_create_issue",
5224
5492
  "linear_list_issues",
@@ -5273,16 +5541,16 @@ function linearIntegration(config = {}) {
5273
5541
  tools: [...LINEAR_TOOLS],
5274
5542
  oauth,
5275
5543
  async onInit(_client) {
5276
- logger12.debug("Linear integration initialized");
5544
+ logger14.debug("Linear integration initialized");
5277
5545
  },
5278
5546
  async onAfterConnect(_client) {
5279
- logger12.debug("Linear integration connected");
5547
+ logger14.debug("Linear integration connected");
5280
5548
  }
5281
5549
  };
5282
5550
  }
5283
5551
  // src/integrations/railway.ts
5284
5552
  init_logger();
5285
- var logger13 = createLogger("Railway");
5553
+ var logger15 = createLogger("Railway");
5286
5554
  var RAILWAY_SCOPES = [
5287
5555
  "openid",
5288
5556
  "profile",
@@ -5387,16 +5655,16 @@ function railwayIntegration(config = {}) {
5387
5655
  tools: [...RAILWAY_TOOLS],
5388
5656
  oauth,
5389
5657
  async onInit(_client) {
5390
- logger13.debug("Railway integration initialized");
5658
+ logger15.debug("Railway integration initialized");
5391
5659
  },
5392
5660
  async onAfterConnect(_client) {
5393
- logger13.debug("Railway integration connected");
5661
+ logger15.debug("Railway integration connected");
5394
5662
  }
5395
5663
  };
5396
5664
  }
5397
5665
  // src/integrations/vercel.ts
5398
5666
  init_logger();
5399
- var logger14 = createLogger("Vercel");
5667
+ var logger16 = createLogger("Vercel");
5400
5668
  var VERCEL_TOOLS = [
5401
5669
  "vercel_list_projects",
5402
5670
  "vercel_get_project",
@@ -5439,16 +5707,16 @@ function vercelIntegration(config = {}) {
5439
5707
  tools: [...VERCEL_TOOLS],
5440
5708
  oauth,
5441
5709
  async onInit(_client) {
5442
- logger14.debug("Vercel integration initialized");
5710
+ logger16.debug("Vercel integration initialized");
5443
5711
  },
5444
5712
  async onAfterConnect(_client) {
5445
- logger14.debug("Vercel integration connected");
5713
+ logger16.debug("Vercel integration connected");
5446
5714
  }
5447
5715
  };
5448
5716
  }
5449
5717
  // src/integrations/zendesk.ts
5450
5718
  init_logger();
5451
- var logger15 = createLogger("Zendesk");
5719
+ var logger17 = createLogger("Zendesk");
5452
5720
  var ZENDESK_TOOLS = [
5453
5721
  "zendesk_list_tickets",
5454
5722
  "zendesk_get_ticket",
@@ -5497,16 +5765,16 @@ function zendeskIntegration(config = {}) {
5497
5765
  tools: [...ZENDESK_TOOLS],
5498
5766
  oauth,
5499
5767
  async onInit(_client) {
5500
- logger15.debug("Zendesk integration initialized");
5768
+ logger17.debug("Zendesk integration initialized");
5501
5769
  },
5502
5770
  async onAfterConnect(_client) {
5503
- logger15.debug("Zendesk integration connected");
5771
+ logger17.debug("Zendesk integration connected");
5504
5772
  }
5505
5773
  };
5506
5774
  }
5507
5775
  // src/integrations/stripe.ts
5508
5776
  init_logger();
5509
- var logger16 = createLogger("Stripe");
5777
+ var logger18 = createLogger("Stripe");
5510
5778
  var STRIPE_TOOLS = [
5511
5779
  "stripe_list_customers",
5512
5780
  "stripe_get_customer",
@@ -5525,6 +5793,7 @@ var STRIPE_TOOLS = [
5525
5793
  "stripe_update_subscription",
5526
5794
  "stripe_cancel_subscription",
5527
5795
  "stripe_list_invoices",
5796
+ "stripe_get_invoice",
5528
5797
  "stripe_create_invoice",
5529
5798
  "stripe_finalize_invoice",
5530
5799
  "stripe_pay_invoice",
@@ -5562,28 +5831,29 @@ function stripeIntegration(config = {}) {
5562
5831
  tools: [...STRIPE_TOOLS],
5563
5832
  oauth,
5564
5833
  async onInit(_client) {
5565
- logger16.debug("Stripe integration initialized");
5834
+ logger18.debug("Stripe integration initialized");
5566
5835
  },
5567
5836
  async onAfterConnect(_client) {
5568
- logger16.debug("Stripe integration connected");
5837
+ logger18.debug("Stripe integration connected");
5569
5838
  }
5570
5839
  };
5571
5840
  }
5572
5841
  // src/integrations/gcal.ts
5573
5842
  init_logger();
5574
- var logger17 = createLogger("Google Calendar");
5843
+ var logger19 = createLogger("Google Calendar");
5575
5844
  var GCAL_TOOLS = [
5576
- "gcal_list_calendars",
5577
- "gcal_get_calendar",
5578
- "gcal_list_events",
5579
- "gcal_get_event",
5845
+ "gcal_create_calendar",
5580
5846
  "gcal_create_event",
5581
- "gcal_update_event",
5847
+ "gcal_delete_calendar",
5582
5848
  "gcal_delete_event",
5849
+ "gcal_freebusy",
5850
+ "gcal_get_calendar",
5851
+ "gcal_get_event",
5583
5852
  "gcal_list_attendees",
5853
+ "gcal_list_calendars",
5854
+ "gcal_list_events",
5584
5855
  "gcal_quick_add",
5585
- "gcal_create_calendar",
5586
- "gcal_delete_calendar"
5856
+ "gcal_update_event"
5587
5857
  ];
5588
5858
  function gcalIntegration(config = {}) {
5589
5859
  const oauth = {
@@ -5604,48 +5874,33 @@ function gcalIntegration(config = {}) {
5604
5874
  tools: [...GCAL_TOOLS],
5605
5875
  oauth,
5606
5876
  async onInit(_client) {
5607
- logger17.debug("Google Calendar integration initialized");
5877
+ logger19.debug("Google Calendar integration initialized");
5608
5878
  },
5609
5879
  async onAfterConnect(_client) {
5610
- logger17.debug("Google Calendar integration connected");
5880
+ logger19.debug("Google Calendar integration connected");
5611
5881
  }
5612
5882
  };
5613
5883
  }
5614
- // src/integrations/outlook.ts
5884
+ // src/integrations/gcontacts.ts
5615
5885
  init_logger();
5616
- var logger18 = createLogger("Outlook");
5617
- var OUTLOOK_TOOLS = [
5618
- "outlook_list_messages",
5619
- "outlook_get_message",
5620
- "outlook_send_message",
5621
- "outlook_search_messages",
5622
- "outlook_reply_message",
5623
- "outlook_reply_all_message",
5624
- "outlook_forward_message",
5625
- "outlook_delete_message",
5626
- "outlook_move_message",
5627
- "outlook_mark_message_read",
5628
- "outlook_create_draft",
5629
- "outlook_list_mail_folders",
5630
- "outlook_list_events",
5631
- "outlook_get_event",
5632
- "outlook_create_event",
5633
- "outlook_update_event",
5634
- "outlook_delete_event",
5635
- "outlook_list_calendars",
5636
- "outlook_accept_event",
5637
- "outlook_decline_event",
5638
- "outlook_tentatively_accept_event",
5639
- "outlook_find_meeting_times",
5640
- "outlook_get_schedule",
5641
- "outlook_list_contacts",
5642
- "outlook_get_contact"
5886
+ var logger20 = createLogger("Google Contacts");
5887
+ var GCONTACTS_TOOLS = [
5888
+ "gcontacts_batch_get_contacts",
5889
+ "gcontacts_copy_other_contact",
5890
+ "gcontacts_create_contact",
5891
+ "gcontacts_delete_contact",
5892
+ "gcontacts_get_person",
5893
+ "gcontacts_get_self",
5894
+ "gcontacts_list_connections",
5895
+ "gcontacts_list_other_contacts",
5896
+ "gcontacts_search_contacts",
5897
+ "gcontacts_update_contact"
5643
5898
  ];
5644
- function outlookIntegration(config = {}) {
5899
+ function gcontactsIntegration(config = {}) {
5645
5900
  const oauth = {
5646
- provider: "outlook",
5647
- clientId: config.clientId ?? getEnv("OUTLOOK_CLIENT_ID"),
5648
- clientSecret: config.clientSecret ?? getEnv("OUTLOOK_CLIENT_SECRET"),
5901
+ provider: "gcontacts",
5902
+ clientId: config.clientId ?? getEnv("GCONTACTS_CLIENT_ID"),
5903
+ clientSecret: config.clientSecret ?? getEnv("GCONTACTS_CLIENT_SECRET"),
5649
5904
  scopes: config.scopes,
5650
5905
  optionalScopes: config.optionalScopes,
5651
5906
  redirectUri: config.redirectUri,
@@ -5654,85 +5909,474 @@ function outlookIntegration(config = {}) {
5654
5909
  }
5655
5910
  };
5656
5911
  return {
5657
- id: "outlook",
5658
- name: "Outlook",
5659
- logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/outlook.png",
5660
- tools: [...OUTLOOK_TOOLS],
5912
+ id: "gcontacts",
5913
+ name: "Google Contacts",
5914
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/gcontacts.png",
5915
+ description: "List, search, create, update, and delete Google Contacts via the People API",
5916
+ category: "Communication",
5917
+ tools: [...GCONTACTS_TOOLS],
5661
5918
  oauth,
5662
5919
  async onInit(_client) {
5663
- logger18.debug("Outlook integration initialized");
5920
+ logger20.debug("Google Contacts integration initialized");
5664
5921
  },
5665
5922
  async onAfterConnect(_client) {
5666
- logger18.debug("Outlook integration connected");
5923
+ logger20.debug("Google Contacts integration connected");
5667
5924
  }
5668
5925
  };
5669
5926
  }
5670
- // src/integrations/airtable.ts
5927
+ // src/integrations/gmeet.ts
5671
5928
  init_logger();
5672
- var logger19 = createLogger("Airtable");
5673
- var AIRTABLE_TOOLS = [
5674
- "airtable_list_bases",
5675
- "airtable_get_base",
5676
- "airtable_list_tables",
5677
- "airtable_get_table",
5678
- "airtable_list_records",
5679
- "airtable_get_record",
5680
- "airtable_create_record",
5681
- "airtable_update_record",
5682
- "airtable_search_records",
5683
- "airtable_delete_record",
5684
- "airtable_create_base",
5685
- "airtable_create_table",
5686
- "airtable_update_table",
5687
- "airtable_create_field",
5688
- "airtable_update_field",
5689
- "airtable_list_comments",
5690
- "airtable_create_comment",
5691
- "airtable_update_comment",
5692
- "airtable_delete_comment",
5693
- "airtable_list_webhooks",
5694
- "airtable_create_webhook",
5695
- "airtable_delete_webhook",
5696
- "airtable_list_webhook_payloads",
5697
- "airtable_refresh_webhook"
5929
+ var logger21 = createLogger("Google Meet");
5930
+ var GMEET_TOOLS = [
5931
+ "gmeet_add_meet_to_event",
5932
+ "gmeet_create_meeting",
5933
+ "gmeet_delete_meeting",
5934
+ "gmeet_get_meeting",
5935
+ "gmeet_list_meetings",
5936
+ "gmeet_update_meeting"
5698
5937
  ];
5699
- function airtableIntegration(config = {}) {
5938
+ function gmeetIntegration(config = {}) {
5700
5939
  const oauth = {
5701
- provider: "airtable",
5702
- clientId: config.clientId ?? getEnv("AIRTABLE_CLIENT_ID"),
5703
- clientSecret: config.clientSecret ?? getEnv("AIRTABLE_CLIENT_SECRET"),
5940
+ provider: "gmeet",
5941
+ clientId: config.clientId ?? getEnv("GMEET_CLIENT_ID"),
5942
+ clientSecret: config.clientSecret ?? getEnv("GMEET_CLIENT_SECRET"),
5704
5943
  scopes: config.scopes,
5705
5944
  optionalScopes: config.optionalScopes,
5706
5945
  redirectUri: config.redirectUri,
5707
- config: {
5708
- ...config
5709
- }
5946
+ config: { ...config }
5710
5947
  };
5711
5948
  return {
5712
- id: "airtable",
5713
- name: "Airtable",
5714
- logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/airtable.jpeg",
5715
- tools: [...AIRTABLE_TOOLS],
5949
+ id: "gmeet",
5950
+ name: "Google Meet",
5951
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/google_meet.webp",
5952
+ description: "Create and manage Google Meet links via Calendar conference data",
5953
+ category: "Communication",
5954
+ tools: [...GMEET_TOOLS],
5716
5955
  oauth,
5717
5956
  async onInit(_client) {
5718
- logger19.debug("Airtable integration initialized");
5957
+ logger21.debug("Google Meet integration initialized");
5719
5958
  },
5720
5959
  async onAfterConnect(_client) {
5721
- logger19.debug("Airtable integration connected");
5960
+ logger21.debug("Google Meet integration connected");
5722
5961
  }
5723
5962
  };
5724
5963
  }
5725
- // src/integrations/todoist.ts
5964
+ // src/integrations/gtasks.ts
5726
5965
  init_logger();
5727
- var logger20 = createLogger("Todoist");
5728
- var TODOIST_TOOLS = [
5729
- "todoist_list_projects",
5730
- "todoist_get_project",
5731
- "todoist_create_project",
5732
- "todoist_update_project",
5733
- "todoist_delete_project",
5734
- "todoist_archive_project",
5735
- "todoist_list_tasks",
5966
+ var logger22 = createLogger("Google Tasks");
5967
+ var GTASKS_TOOLS = [
5968
+ "gtasks_clear_completed",
5969
+ "gtasks_create_task",
5970
+ "gtasks_create_tasklist",
5971
+ "gtasks_delete_task",
5972
+ "gtasks_delete_tasklist",
5973
+ "gtasks_get_task",
5974
+ "gtasks_get_tasklist",
5975
+ "gtasks_list_tasklists",
5976
+ "gtasks_list_tasks",
5977
+ "gtasks_move_task",
5978
+ "gtasks_update_task",
5979
+ "gtasks_update_tasklist"
5980
+ ];
5981
+ function gtasksIntegration(config = {}) {
5982
+ const oauth = {
5983
+ provider: "gtasks",
5984
+ clientId: config.clientId ?? getEnv("GTASKS_CLIENT_ID"),
5985
+ clientSecret: config.clientSecret ?? getEnv("GTASKS_CLIENT_SECRET"),
5986
+ scopes: config.scopes,
5987
+ optionalScopes: config.optionalScopes,
5988
+ redirectUri: config.redirectUri,
5989
+ config: {
5990
+ ...config
5991
+ }
5992
+ };
5993
+ return {
5994
+ id: "gtasks",
5995
+ name: "Google Tasks",
5996
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/google_tasks.webp",
5997
+ description: "Manage Google Tasks lists and to-dos synced with your Google account",
5998
+ category: "Productivity",
5999
+ tools: [...GTASKS_TOOLS],
6000
+ oauth,
6001
+ async onInit(_client) {
6002
+ logger22.debug("Google Tasks integration initialized");
6003
+ },
6004
+ async onAfterConnect(_client) {
6005
+ logger22.debug("Google Tasks integration connected");
6006
+ }
6007
+ };
6008
+ }
6009
+ // src/integrations/outlook.ts
6010
+ init_logger();
6011
+ var logger23 = createLogger("Outlook");
6012
+ var OUTLOOK_TOOLS = [
6013
+ "outlook_accept_event",
6014
+ "outlook_create_draft",
6015
+ "outlook_create_event",
6016
+ "outlook_decline_event",
6017
+ "outlook_delete_event",
6018
+ "outlook_delete_message",
6019
+ "outlook_find_meeting_times",
6020
+ "outlook_forward_message",
6021
+ "outlook_get_contact",
6022
+ "outlook_get_event",
6023
+ "outlook_get_message",
6024
+ "outlook_get_schedule",
6025
+ "outlook_list_calendars",
6026
+ "outlook_list_contacts",
6027
+ "outlook_list_events",
6028
+ "outlook_list_mail_folders",
6029
+ "outlook_list_messages",
6030
+ "outlook_mark_message_read",
6031
+ "outlook_move_message",
6032
+ "outlook_reply_all_message",
6033
+ "outlook_reply_message",
6034
+ "outlook_search_messages",
6035
+ "outlook_send_message",
6036
+ "outlook_tentatively_accept_event",
6037
+ "outlook_update_event"
6038
+ ];
6039
+ function outlookIntegration(config = {}) {
6040
+ const oauth = {
6041
+ provider: "outlook",
6042
+ clientId: config.clientId ?? getEnv("OUTLOOK_CLIENT_ID"),
6043
+ clientSecret: config.clientSecret ?? getEnv("OUTLOOK_CLIENT_SECRET"),
6044
+ scopes: config.scopes,
6045
+ optionalScopes: config.optionalScopes,
6046
+ redirectUri: config.redirectUri,
6047
+ config: {
6048
+ ...config
6049
+ }
6050
+ };
6051
+ return {
6052
+ id: "outlook",
6053
+ name: "Outlook",
6054
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/outlook.png",
6055
+ tools: [...OUTLOOK_TOOLS],
6056
+ oauth,
6057
+ async onInit(_client) {
6058
+ logger23.debug("Outlook integration initialized");
6059
+ },
6060
+ async onAfterConnect(_client) {
6061
+ logger23.debug("Outlook integration connected");
6062
+ }
6063
+ };
6064
+ }
6065
+ // src/integrations/teams.ts
6066
+ init_logger();
6067
+ var logger24 = createLogger("Teams");
6068
+ var TEAMS_SCOPES = [
6069
+ "offline_access",
6070
+ "User.Read",
6071
+ "Team.ReadBasic.All",
6072
+ "Channel.ReadBasic.All",
6073
+ "ChannelMessage.Read.All",
6074
+ "ChannelMessage.Send",
6075
+ "Chat.Read",
6076
+ "Chat.ReadWrite"
6077
+ ];
6078
+ var TEAMS_TOOLS = [
6079
+ "teams_get_channel",
6080
+ "teams_get_chat",
6081
+ "teams_get_profile",
6082
+ "teams_get_team",
6083
+ "teams_list_channel_messages",
6084
+ "teams_list_channels",
6085
+ "teams_list_chat_messages",
6086
+ "teams_list_chats",
6087
+ "teams_list_teams",
6088
+ "teams_reply_channel_message",
6089
+ "teams_send_channel_message",
6090
+ "teams_send_chat_message"
6091
+ ];
6092
+ function teamsIntegration(config = {}) {
6093
+ const oauth = {
6094
+ provider: "teams",
6095
+ clientId: config.clientId ?? getEnv("TEAMS_CLIENT_ID"),
6096
+ clientSecret: config.clientSecret ?? getEnv("TEAMS_CLIENT_SECRET"),
6097
+ scopes: config.scopes ?? [...TEAMS_SCOPES],
6098
+ optionalScopes: config.optionalScopes,
6099
+ redirectUri: config.redirectUri,
6100
+ config: {
6101
+ ...config,
6102
+ authorization_endpoint: "https://login.microsoftonline.com/common/oauth2/v2.0/authorize",
6103
+ token_endpoint: "https://login.microsoftonline.com/common/oauth2/v2.0/token",
6104
+ response_type: "code",
6105
+ grant_types_supported: ["authorization_code", "refresh_token"]
6106
+ }
6107
+ };
6108
+ return {
6109
+ id: "teams",
6110
+ name: "Microsoft Teams",
6111
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/teams.png",
6112
+ description: "Collaborate in Teams channels and chats using Microsoft Graph — teams, channels, messages, and profile.",
6113
+ category: "Communication",
6114
+ tools: [...TEAMS_TOOLS],
6115
+ oauth,
6116
+ async onInit(_client) {
6117
+ logger24.debug("Teams integration initialized");
6118
+ },
6119
+ async onAfterConnect(_client) {
6120
+ logger24.debug("Teams integration connected");
6121
+ }
6122
+ };
6123
+ }
6124
+ // src/integrations/airtable.ts
6125
+ init_logger();
6126
+ var logger25 = createLogger("Airtable");
6127
+ var AIRTABLE_TOOLS = [
6128
+ "airtable_list_bases",
6129
+ "airtable_get_base",
6130
+ "airtable_list_tables",
6131
+ "airtable_get_table",
6132
+ "airtable_list_records",
6133
+ "airtable_get_record",
6134
+ "airtable_create_record",
6135
+ "airtable_update_record",
6136
+ "airtable_search_records",
6137
+ "airtable_delete_record",
6138
+ "airtable_create_base",
6139
+ "airtable_create_table",
6140
+ "airtable_update_table",
6141
+ "airtable_create_field",
6142
+ "airtable_update_field",
6143
+ "airtable_list_comments",
6144
+ "airtable_create_comment",
6145
+ "airtable_update_comment",
6146
+ "airtable_delete_comment",
6147
+ "airtable_list_webhooks",
6148
+ "airtable_create_webhook",
6149
+ "airtable_delete_webhook",
6150
+ "airtable_list_webhook_payloads",
6151
+ "airtable_refresh_webhook"
6152
+ ];
6153
+ function airtableIntegration(config = {}) {
6154
+ const oauth = {
6155
+ provider: "airtable",
6156
+ clientId: config.clientId ?? getEnv("AIRTABLE_CLIENT_ID"),
6157
+ clientSecret: config.clientSecret ?? getEnv("AIRTABLE_CLIENT_SECRET"),
6158
+ scopes: config.scopes,
6159
+ optionalScopes: config.optionalScopes,
6160
+ redirectUri: config.redirectUri,
6161
+ config: {
6162
+ ...config
6163
+ }
6164
+ };
6165
+ return {
6166
+ id: "airtable",
6167
+ name: "Airtable",
6168
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/airtable.jpeg",
6169
+ tools: [...AIRTABLE_TOOLS],
6170
+ oauth,
6171
+ async onInit(_client) {
6172
+ logger25.debug("Airtable integration initialized");
6173
+ },
6174
+ async onAfterConnect(_client) {
6175
+ logger25.debug("Airtable integration connected");
6176
+ }
6177
+ };
6178
+ }
6179
+ // src/integrations/auth0.ts
6180
+ init_logger();
6181
+ var logger26 = createLogger("Auth0");
6182
+ var AUTH0_TOOLS = [
6183
+ "auth0_list_users",
6184
+ "auth0_get_user",
6185
+ "auth0_create_user",
6186
+ "auth0_patch_user",
6187
+ "auth0_delete_user",
6188
+ "auth0_list_connections",
6189
+ "auth0_get_connection",
6190
+ "auth0_list_clients",
6191
+ "auth0_get_client",
6192
+ "auth0_create_client",
6193
+ "auth0_patch_client"
6194
+ ];
6195
+ function normalizeAuth0Domain(raw) {
6196
+ let s = raw.trim();
6197
+ s = s.replace(/^https?:\/\//i, "");
6198
+ const slash = s.indexOf("/");
6199
+ if (slash >= 0)
6200
+ s = s.slice(0, slash);
6201
+ return s.replace(/\/$/, "");
6202
+ }
6203
+ async function fetchClientCredentialsToken(params) {
6204
+ const tokenUrl = `https://${params.domain}/oauth/token`;
6205
+ const body = new URLSearchParams({
6206
+ grant_type: "client_credentials",
6207
+ client_id: params.clientId,
6208
+ client_secret: params.clientSecret,
6209
+ audience: params.audience
6210
+ });
6211
+ const res = await fetch(tokenUrl, {
6212
+ method: "POST",
6213
+ headers: { "Content-Type": "application/x-www-form-urlencoded" },
6214
+ body
6215
+ });
6216
+ const text = await res.text();
6217
+ if (!res.ok) {
6218
+ throw new Error(`Auth0 token request failed (${res.status}): ${text}`);
6219
+ }
6220
+ const data = JSON.parse(text);
6221
+ if (!data.access_token) {
6222
+ throw new Error("Auth0 token response missing access_token");
6223
+ }
6224
+ return data;
6225
+ }
6226
+ function auth0Integration(options) {
6227
+ const domain = normalizeAuth0Domain(options.domain);
6228
+ if (!domain) {
6229
+ throw new Error("auth0Integration requires domain (tenant host)");
6230
+ }
6231
+ const clientId = options.clientId ?? getEnv("AUTH0_CLIENT_ID");
6232
+ const clientSecret = options.clientSecret ?? getEnv("AUTH0_CLIENT_SECRET");
6233
+ const initialToken = options.accessToken ?? getEnv("AUTH0_ACCESS_TOKEN") ?? "";
6234
+ if (!initialToken && (!clientId || !clientSecret)) {
6235
+ throw new Error("auth0Integration requires accessToken (or AUTH0_ACCESS_TOKEN) or both clientId/clientSecret (or AUTH0_CLIENT_ID / AUTH0_CLIENT_SECRET)");
6236
+ }
6237
+ let accessToken = initialToken;
6238
+ let tokenExpiresAtMs = 0;
6239
+ async function ensureFreshToken() {
6240
+ if (!clientId || !clientSecret)
6241
+ return;
6242
+ if (accessToken && Date.now() < tokenExpiresAtMs - 60000)
6243
+ return;
6244
+ const audience = options.audience?.trim() || `https://${domain}/api/v2/`;
6245
+ const tok = await fetchClientCredentialsToken({
6246
+ domain,
6247
+ clientId,
6248
+ clientSecret,
6249
+ audience
6250
+ });
6251
+ accessToken = tok.access_token;
6252
+ const sec = typeof tok.expires_in === "number" && tok.expires_in > 0 ? tok.expires_in : 86400;
6253
+ tokenExpiresAtMs = Date.now() + sec * 1000;
6254
+ }
6255
+ return {
6256
+ id: "auth0",
6257
+ name: "Auth0",
6258
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/auth0.png",
6259
+ description: "Manage Auth0 users, connections, and applications via the Management API",
6260
+ category: "Engineering",
6261
+ tools: [...AUTH0_TOOLS],
6262
+ authType: "apiKey",
6263
+ getHeaders() {
6264
+ return {
6265
+ Authorization: `Bearer ${accessToken}`,
6266
+ "X-Auth0-Domain": domain
6267
+ };
6268
+ },
6269
+ async onInit() {
6270
+ logger26.debug("Auth0 integration initialized");
6271
+ },
6272
+ async onBeforeConnect() {
6273
+ await ensureFreshToken();
6274
+ if (!accessToken) {
6275
+ throw new Error("Auth0 access token is not configured");
6276
+ }
6277
+ },
6278
+ async onAfterConnect() {
6279
+ logger26.debug("Auth0 integration connected");
6280
+ }
6281
+ };
6282
+ }
6283
+ // src/integrations/astronomer.ts
6284
+ init_logger();
6285
+ var logger27 = createLogger("Astronomer");
6286
+ var ASTRONOMER_TOOLS = [
6287
+ "astronomer_get_self",
6288
+ "astronomer_list_organizations",
6289
+ "astronomer_get_organization",
6290
+ "astronomer_list_workspaces",
6291
+ "astronomer_get_workspace",
6292
+ "astronomer_list_clusters",
6293
+ "astronomer_get_cluster",
6294
+ "astronomer_list_deployments",
6295
+ "astronomer_get_deployment",
6296
+ "astronomer_create_deployment",
6297
+ "astronomer_update_deployment",
6298
+ "astronomer_list_deploys",
6299
+ "astronomer_get_deploy"
6300
+ ];
6301
+ function astronomerIntegration(options = {}) {
6302
+ const apiToken = options.apiToken ?? getEnv("ASTRO_API_TOKEN") ?? getEnv("ASTRONOMER_API_TOKEN");
6303
+ if (!apiToken) {
6304
+ throw new Error("astronomerIntegration requires apiToken or ASTRO_API_TOKEN / ASTRONOMER_API_TOKEN environment variable");
6305
+ }
6306
+ return {
6307
+ id: "astronomer",
6308
+ name: "Astronomer",
6309
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/astronomer.png",
6310
+ description: "Manage Astro organizations, workspaces, deployments, clusters, and deploy history via the Astro API v1",
6311
+ category: "Infrastructure",
6312
+ tools: [...ASTRONOMER_TOOLS],
6313
+ authType: "apiKey",
6314
+ getHeaders() {
6315
+ return {
6316
+ Authorization: `Bearer ${apiToken}`
6317
+ };
6318
+ },
6319
+ async onInit(_client) {
6320
+ logger27.debug("Astronomer integration initialized");
6321
+ },
6322
+ async onAfterConnect(_client) {
6323
+ logger27.debug("Astronomer integration connected");
6324
+ }
6325
+ };
6326
+ }
6327
+ // src/integrations/betterstack.ts
6328
+ init_logger();
6329
+ var logger28 = createLogger("BetterStack");
6330
+ var BETTERSTACK_TOOLS = [
6331
+ "betterstack_list_sources",
6332
+ "betterstack_get_source",
6333
+ "betterstack_create_source",
6334
+ "betterstack_update_source",
6335
+ "betterstack_delete_source",
6336
+ "betterstack_list_source_groups",
6337
+ "betterstack_get_source_group",
6338
+ "betterstack_update_source_group",
6339
+ "betterstack_list_collectors",
6340
+ "betterstack_list_source_metrics",
6341
+ "betterstack_ingest_logs"
6342
+ ];
6343
+ function betterstackIntegration(options = {}) {
6344
+ const apiKey = options.apiKey ?? getEnv("BETTERSTACK_API_KEY");
6345
+ if (!apiKey) {
6346
+ throw new Error("betterstackIntegration requires apiKey or BETTERSTACK_API_KEY environment variable");
6347
+ }
6348
+ return {
6349
+ id: "betterstack",
6350
+ name: "Better Stack",
6351
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/betterstack.png",
6352
+ description: "Ingest and manage log sources, collectors, and metrics with Better Stack Logs (Logtail) Telemetry API",
6353
+ category: "Infrastructure",
6354
+ tools: [...BETTERSTACK_TOOLS],
6355
+ authType: "apiKey",
6356
+ getHeaders() {
6357
+ return {
6358
+ Authorization: `Bearer ${apiKey}`
6359
+ };
6360
+ },
6361
+ async onInit(_client) {
6362
+ logger28.debug("Better Stack integration initialized");
6363
+ },
6364
+ async onAfterConnect(_client) {
6365
+ logger28.debug("Better Stack integration connected");
6366
+ }
6367
+ };
6368
+ }
6369
+ // src/integrations/todoist.ts
6370
+ init_logger();
6371
+ var logger29 = createLogger("Todoist");
6372
+ var TODOIST_TOOLS = [
6373
+ "todoist_list_projects",
6374
+ "todoist_get_project",
6375
+ "todoist_create_project",
6376
+ "todoist_update_project",
6377
+ "todoist_delete_project",
6378
+ "todoist_archive_project",
6379
+ "todoist_list_tasks",
5736
6380
  "todoist_get_task",
5737
6381
  "todoist_create_task",
5738
6382
  "todoist_update_task",
@@ -5779,16 +6423,16 @@ function todoistIntegration(config = {}) {
5779
6423
  tools: [...TODOIST_TOOLS],
5780
6424
  oauth,
5781
6425
  async onInit(_client) {
5782
- logger20.debug("Todoist integration initialized");
6426
+ logger29.debug("Todoist integration initialized");
5783
6427
  },
5784
6428
  async onAfterConnect(_client) {
5785
- logger20.debug("Todoist integration connected");
6429
+ logger29.debug("Todoist integration connected");
5786
6430
  }
5787
6431
  };
5788
6432
  }
5789
6433
  // src/integrations/whatsapp.ts
5790
6434
  init_logger();
5791
- var logger21 = createLogger("WhatsApp");
6435
+ var logger30 = createLogger("WhatsApp");
5792
6436
  var WHATSAPP_TOOLS = [
5793
6437
  "whatsapp_send_message",
5794
6438
  "whatsapp_reply_message",
@@ -5812,7 +6456,10 @@ var WHATSAPP_TOOLS = [
5812
6456
  "whatsapp_update_profile",
5813
6457
  "whatsapp_get_message_status",
5814
6458
  "whatsapp_create_qr_code",
5815
- "whatsapp_list_qr_codes"
6459
+ "whatsapp_update_qr_code",
6460
+ "whatsapp_list_qr_codes",
6461
+ "whatsapp_get_qr_code",
6462
+ "whatsapp_delete_qr_code"
5816
6463
  ];
5817
6464
  function whatsappIntegration(config = {}) {
5818
6465
  const oauth = {
@@ -5834,16 +6481,16 @@ function whatsappIntegration(config = {}) {
5834
6481
  tools: [...WHATSAPP_TOOLS],
5835
6482
  oauth,
5836
6483
  async onInit(_client) {
5837
- logger21.debug("WhatsApp Business integration initialized");
6484
+ logger30.debug("WhatsApp Business integration initialized");
5838
6485
  },
5839
6486
  async onAfterConnect(_client) {
5840
- logger21.debug("WhatsApp Business integration connected");
6487
+ logger30.debug("WhatsApp Business integration connected");
5841
6488
  }
5842
6489
  };
5843
6490
  }
5844
6491
  // src/integrations/calcom.ts
5845
6492
  init_logger();
5846
- var logger22 = createLogger("Cal.com");
6493
+ var logger31 = createLogger("Cal.com");
5847
6494
  var CALCOM_TOOLS = [
5848
6495
  "calcom_list_bookings",
5849
6496
  "calcom_get_booking",
@@ -5919,16 +6566,16 @@ function calcomIntegration(config = {}) {
5919
6566
  tools: [...CALCOM_TOOLS],
5920
6567
  oauth,
5921
6568
  async onInit(_client) {
5922
- logger22.debug("Cal.com integration initialized");
6569
+ logger31.debug("Cal.com integration initialized");
5923
6570
  },
5924
6571
  async onAfterConnect(_client) {
5925
- logger22.debug("Cal.com integration connected");
6572
+ logger31.debug("Cal.com integration connected");
5926
6573
  }
5927
6574
  };
5928
6575
  }
5929
6576
  // src/integrations/ramp.ts
5930
6577
  init_logger();
5931
- var logger23 = createLogger("Ramp");
6578
+ var logger32 = createLogger("Ramp");
5932
6579
  var RAMP_TOOLS = [
5933
6580
  "ramp_list_transactions",
5934
6581
  "ramp_get_transaction",
@@ -5960,24 +6607,27 @@ function rampIntegration(config = {}) {
5960
6607
  tools: [...RAMP_TOOLS],
5961
6608
  oauth,
5962
6609
  async onInit(_client) {
5963
- logger23.debug("Ramp integration initialized");
6610
+ logger32.debug("Ramp integration initialized");
5964
6611
  },
5965
6612
  async onAfterConnect(_client) {
5966
- logger23.debug("Ramp integration connected");
6613
+ logger32.debug("Ramp integration connected");
5967
6614
  }
5968
6615
  };
5969
6616
  }
5970
6617
  // src/integrations/onedrive.ts
5971
6618
  init_logger();
5972
- var logger24 = createLogger("OneDrive");
6619
+ var logger33 = createLogger("OneDrive");
5973
6620
  var ONEDRIVE_TOOLS = [
5974
- "onedrive_list_files",
5975
- "onedrive_get_file",
5976
- "onedrive_download_file",
5977
- "onedrive_upload_file",
6621
+ "onedrive_create_folder",
5978
6622
  "onedrive_delete_file",
6623
+ "onedrive_download_file",
6624
+ "onedrive_get_file",
6625
+ "onedrive_list_files",
6626
+ "onedrive_list_permissions",
6627
+ "onedrive_remove_permission",
5979
6628
  "onedrive_search_files",
5980
- "onedrive_share_file"
6629
+ "onedrive_share_file",
6630
+ "onedrive_upload_file"
5981
6631
  ];
5982
6632
  function onedriveIntegration(config = {}) {
5983
6633
  const oauth = {
@@ -5998,16 +6648,96 @@ function onedriveIntegration(config = {}) {
5998
6648
  tools: [...ONEDRIVE_TOOLS],
5999
6649
  oauth,
6000
6650
  async onInit(_client) {
6001
- logger24.debug("OneDrive integration initialized");
6651
+ logger33.debug("OneDrive integration initialized");
6652
+ },
6653
+ async onAfterConnect(_client) {
6654
+ logger33.debug("OneDrive integration connected");
6655
+ }
6656
+ };
6657
+ }
6658
+ // src/integrations/planner.ts
6659
+ var PLANNER_TOOLS = [
6660
+ "planner_create_bucket",
6661
+ "planner_create_plan",
6662
+ "planner_create_task",
6663
+ "planner_delete_task",
6664
+ "planner_get_plan",
6665
+ "planner_get_task",
6666
+ "planner_get_task_details",
6667
+ "planner_list_buckets",
6668
+ "planner_list_group_plans",
6669
+ "planner_list_my_plans",
6670
+ "planner_list_my_tasks",
6671
+ "planner_list_plan_tasks",
6672
+ "planner_update_task"
6673
+ ];
6674
+ function plannerIntegration(config = {}) {
6675
+ const oauth = {
6676
+ provider: "planner",
6677
+ clientId: config.clientId ?? getEnv("PLANNER_CLIENT_ID"),
6678
+ clientSecret: config.clientSecret ?? getEnv("PLANNER_CLIENT_SECRET"),
6679
+ scopes: config.scopes ?? ["Tasks.ReadWrite", "Group.Read.All", "offline_access"],
6680
+ optionalScopes: config.optionalScopes,
6681
+ redirectUri: config.redirectUri
6682
+ };
6683
+ return {
6684
+ id: "planner",
6685
+ name: "Microsoft Planner",
6686
+ tools: [...PLANNER_TOOLS],
6687
+ oauth
6688
+ };
6689
+ }
6690
+ // src/integrations/sharepoint.ts
6691
+ init_logger();
6692
+ var logger34 = createLogger("SharePoint");
6693
+ var SHAREPOINT_SCOPES = ["Sites.ReadWrite.All", "Files.ReadWrite.All", "offline_access"];
6694
+ var SHAREPOINT_TOOLS = [
6695
+ "sharepoint_create_folder",
6696
+ "sharepoint_delete_item",
6697
+ "sharepoint_get_item",
6698
+ "sharepoint_get_site",
6699
+ "sharepoint_list_drives",
6700
+ "sharepoint_list_items",
6701
+ "sharepoint_search_files",
6702
+ "sharepoint_search_sites",
6703
+ "sharepoint_share_item",
6704
+ "sharepoint_update_item",
6705
+ "sharepoint_upload_file"
6706
+ ];
6707
+ function sharepointIntegration(config = {}) {
6708
+ const oauth = {
6709
+ provider: "sharepoint",
6710
+ clientId: config.clientId ?? getEnv("SHAREPOINT_CLIENT_ID"),
6711
+ clientSecret: config.clientSecret ?? getEnv("SHAREPOINT_CLIENT_SECRET"),
6712
+ scopes: config.scopes ?? [...SHAREPOINT_SCOPES],
6713
+ optionalScopes: config.optionalScopes,
6714
+ redirectUri: config.redirectUri,
6715
+ config: {
6716
+ authorization_endpoint: "https://login.microsoftonline.com/common/oauth2/v2.0/authorize",
6717
+ token_endpoint: "https://login.microsoftonline.com/common/oauth2/v2.0/token",
6718
+ response_type: "code",
6719
+ grant_types_supported: ["authorization_code", "refresh_token"]
6720
+ }
6721
+ };
6722
+ return {
6723
+ id: "sharepoint",
6724
+ name: "SharePoint",
6725
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/sharepoint.png",
6726
+ description: "Search SharePoint sites and manage drives, files, folders, and sharing links",
6727
+ category: "Productivity",
6728
+ tools: [...SHAREPOINT_TOOLS],
6729
+ oauth,
6730
+ async onInit(_client) {
6731
+ logger34.debug("SharePoint integration initialized");
6002
6732
  },
6003
6733
  async onAfterConnect(_client) {
6004
- logger24.debug("OneDrive integration connected");
6734
+ logger34.debug("SharePoint integration connected");
6005
6735
  }
6006
6736
  };
6007
6737
  }
6008
6738
  // src/integrations/dropbox.ts
6009
6739
  init_logger();
6010
- var logger25 = createLogger("Dropbox");
6740
+ var logger35 = createLogger("Dropbox");
6011
6741
  var DROPBOX_TOOLS = [
6012
6742
  "dropbox_get_current_account",
6013
6743
  "dropbox_get_space_usage",
@@ -6049,28 +6779,84 @@ function dropboxIntegration(options = {}) {
6049
6779
  authType: "oauth",
6050
6780
  oauth,
6051
6781
  async onInit(_client) {
6052
- logger25.debug("Dropbox integration initialized");
6782
+ logger35.debug("Dropbox integration initialized");
6053
6783
  },
6054
6784
  async onAfterConnect(_client) {
6055
- logger25.debug("Dropbox integration connected");
6785
+ logger35.debug("Dropbox integration connected");
6056
6786
  }
6057
6787
  };
6058
6788
  }
6059
- // src/integrations/word.ts
6789
+ // src/integrations/paper.ts
6060
6790
  init_logger();
6061
- var logger26 = createLogger("Word");
6062
- var WORD_TOOLS = [
6063
- "word_list",
6064
- "word_get",
6065
- "word_create",
6066
- "word_copy",
6067
- "word_delete",
6068
- "word_share"
6791
+ var logger36 = createLogger("Paper");
6792
+ var PAPER_SCOPES = [
6793
+ "account_info.read",
6794
+ "files.metadata.read",
6795
+ "files.content.read",
6796
+ "files.content.write"
6069
6797
  ];
6070
- function wordIntegration(config = {}) {
6798
+ var PAPER_TOOLS = [
6799
+ "paper_create_doc",
6800
+ "paper_update_doc",
6801
+ "paper_export_doc"
6802
+ ];
6803
+ function resolveClientId(config) {
6804
+ return config.clientId ?? getEnv("PAPER_CLIENT_ID") ?? getEnv("DROPBOX_CLIENT_ID");
6805
+ }
6806
+ function resolveClientSecret(config) {
6807
+ return config.clientSecret ?? getEnv("PAPER_CLIENT_SECRET") ?? getEnv("DROPBOX_CLIENT_SECRET");
6808
+ }
6809
+ function paperIntegration(config = {}) {
6810
+ if (config.scopes !== undefined && (!Array.isArray(config.scopes) || config.scopes.some((scope) => typeof scope !== "string"))) {
6811
+ throw new Error("paperIntegration scopes must be an array of strings");
6812
+ }
6071
6813
  const oauth = {
6072
- provider: "word",
6073
- clientId: config.clientId ?? getEnv("WORD_CLIENT_ID"),
6814
+ provider: "paper",
6815
+ clientId: resolveClientId(config),
6816
+ clientSecret: resolveClientSecret(config),
6817
+ scopes: config.scopes ?? [...PAPER_SCOPES],
6818
+ optionalScopes: config.optionalScopes,
6819
+ redirectUri: config.redirectUri,
6820
+ config: {
6821
+ authorization_endpoint: "https://www.dropbox.com/oauth2/authorize",
6822
+ token_endpoint: "https://api.dropboxapi.com/oauth2/token",
6823
+ response_type: "code",
6824
+ grant_types_supported: ["authorization_code", "refresh_token"]
6825
+ }
6826
+ };
6827
+ return {
6828
+ id: "paper",
6829
+ name: "Dropbox Paper",
6830
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/paper.png",
6831
+ description: "Create, update, and export Dropbox Paper documents",
6832
+ category: "Productivity",
6833
+ tools: [...PAPER_TOOLS],
6834
+ authType: "oauth",
6835
+ oauth,
6836
+ async onInit(_client) {
6837
+ logger36.debug("Paper integration initialized");
6838
+ },
6839
+ async onAfterConnect(_client) {
6840
+ logger36.debug("Paper integration connected");
6841
+ }
6842
+ };
6843
+ }
6844
+ // src/integrations/word.ts
6845
+ init_logger();
6846
+ var logger37 = createLogger("Word");
6847
+ var WORD_TOOLS = [
6848
+ "word_copy",
6849
+ "word_create",
6850
+ "word_delete",
6851
+ "word_get",
6852
+ "word_list",
6853
+ "word_share",
6854
+ "word_update_content"
6855
+ ];
6856
+ function wordIntegration(config = {}) {
6857
+ const oauth = {
6858
+ provider: "word",
6859
+ clientId: config.clientId ?? getEnv("WORD_CLIENT_ID"),
6074
6860
  clientSecret: config.clientSecret ?? getEnv("WORD_CLIENT_SECRET"),
6075
6861
  scopes: config.scopes,
6076
6862
  optionalScopes: config.optionalScopes,
@@ -6084,33 +6870,33 @@ function wordIntegration(config = {}) {
6084
6870
  tools: [...WORD_TOOLS],
6085
6871
  oauth,
6086
6872
  async onInit(_client) {
6087
- logger26.debug("Word integration initialized");
6873
+ logger37.debug("Word integration initialized");
6088
6874
  },
6089
6875
  async onAfterConnect(_client) {
6090
- logger26.debug("Word integration connected");
6876
+ logger37.debug("Word integration connected");
6091
6877
  }
6092
6878
  };
6093
6879
  }
6094
6880
  // src/integrations/excel.ts
6095
6881
  init_logger();
6096
- var logger27 = createLogger("Excel");
6882
+ var logger38 = createLogger("Excel");
6097
6883
  var EXCEL_TOOLS = [
6098
- "excel_list",
6099
- "excel_get",
6884
+ "excel_add_table_rows",
6885
+ "excel_add_worksheet",
6886
+ "excel_clear_range",
6100
6887
  "excel_create",
6888
+ "excel_create_table",
6101
6889
  "excel_delete",
6102
- "excel_share",
6103
- "excel_list_worksheets",
6104
- "excel_add_worksheet",
6105
6890
  "excel_delete_worksheet",
6891
+ "excel_get",
6106
6892
  "excel_get_range",
6107
- "excel_update_range",
6108
- "excel_clear_range",
6893
+ "excel_get_table_rows",
6109
6894
  "excel_get_used_range",
6895
+ "excel_list",
6110
6896
  "excel_list_tables",
6111
- "excel_create_table",
6112
- "excel_get_table_rows",
6113
- "excel_add_table_rows"
6897
+ "excel_list_worksheets",
6898
+ "excel_share",
6899
+ "excel_update_range"
6114
6900
  ];
6115
6901
  function excelIntegration(config = {}) {
6116
6902
  const oauth = {
@@ -6129,23 +6915,24 @@ function excelIntegration(config = {}) {
6129
6915
  tools: [...EXCEL_TOOLS],
6130
6916
  oauth,
6131
6917
  async onInit(_client) {
6132
- logger27.debug("Excel integration initialized");
6918
+ logger38.debug("Excel integration initialized");
6133
6919
  },
6134
6920
  async onAfterConnect(_client) {
6135
- logger27.debug("Excel integration connected");
6921
+ logger38.debug("Excel integration connected");
6136
6922
  }
6137
6923
  };
6138
6924
  }
6139
6925
  // src/integrations/powerpoint.ts
6140
6926
  init_logger();
6141
- var logger28 = createLogger("PowerPoint");
6927
+ var logger39 = createLogger("PowerPoint");
6142
6928
  var POWERPOINT_TOOLS = [
6143
- "powerpoint_list",
6144
- "powerpoint_get",
6145
- "powerpoint_create",
6146
6929
  "powerpoint_copy",
6930
+ "powerpoint_create",
6147
6931
  "powerpoint_delete",
6148
- "powerpoint_share"
6932
+ "powerpoint_get",
6933
+ "powerpoint_list",
6934
+ "powerpoint_share",
6935
+ "powerpoint_update_content"
6149
6936
  ];
6150
6937
  function powerpointIntegration(config = {}) {
6151
6938
  const oauth = {
@@ -6164,21 +6951,26 @@ function powerpointIntegration(config = {}) {
6164
6951
  tools: [...POWERPOINT_TOOLS],
6165
6952
  oauth,
6166
6953
  async onInit(_client) {
6167
- logger28.debug("PowerPoint integration initialized");
6954
+ logger39.debug("PowerPoint integration initialized");
6168
6955
  },
6169
6956
  async onAfterConnect(_client) {
6170
- logger28.debug("PowerPoint integration connected");
6957
+ logger39.debug("PowerPoint integration connected");
6171
6958
  }
6172
6959
  };
6173
6960
  }
6174
6961
  // src/integrations/gdocs.ts
6175
6962
  init_logger();
6176
- var logger29 = createLogger("Google Docs");
6963
+ var logger40 = createLogger("Google Docs");
6177
6964
  var GDOCS_TOOLS = [
6178
- "gdocs_list",
6179
- "gdocs_get",
6180
- "gdocs_create",
6181
6965
  "gdocs_append_text",
6966
+ "gdocs_batch_update",
6967
+ "gdocs_create",
6968
+ "gdocs_create_comment",
6969
+ "gdocs_delete",
6970
+ "gdocs_delete_comment",
6971
+ "gdocs_get",
6972
+ "gdocs_list",
6973
+ "gdocs_list_comments",
6182
6974
  "gdocs_replace_text"
6183
6975
  ];
6184
6976
  function gdocsIntegration(config = {}) {
@@ -6198,31 +6990,31 @@ function gdocsIntegration(config = {}) {
6198
6990
  tools: [...GDOCS_TOOLS],
6199
6991
  oauth,
6200
6992
  async onInit(_client) {
6201
- logger29.debug("Google Docs integration initialized");
6993
+ logger40.debug("Google Docs integration initialized");
6202
6994
  },
6203
6995
  async onAfterConnect(_client) {
6204
- logger29.debug("Google Docs integration connected");
6996
+ logger40.debug("Google Docs integration connected");
6205
6997
  }
6206
6998
  };
6207
6999
  }
6208
7000
  // src/integrations/gdrive.ts
6209
7001
  init_logger();
6210
- var logger30 = createLogger("Google Drive");
7002
+ var logger41 = createLogger("Google Drive");
6211
7003
  var GDRIVE_TOOLS = [
6212
- "gdrive_list_files",
6213
- "gdrive_get_file",
6214
- "gdrive_create_folder",
6215
- "gdrive_rename_file",
6216
- "gdrive_move_file",
6217
7004
  "gdrive_copy_file",
7005
+ "gdrive_create_folder",
6218
7006
  "gdrive_delete_file",
6219
- "gdrive_trash_file",
6220
- "gdrive_upload_text_file",
6221
7007
  "gdrive_download_file",
7008
+ "gdrive_get_about",
7009
+ "gdrive_get_file",
7010
+ "gdrive_list_files",
6222
7011
  "gdrive_list_permissions",
6223
- "gdrive_share_file",
7012
+ "gdrive_move_file",
6224
7013
  "gdrive_remove_permission",
6225
- "gdrive_get_about"
7014
+ "gdrive_rename_file",
7015
+ "gdrive_share_file",
7016
+ "gdrive_trash_file",
7017
+ "gdrive_upload_text_file"
6226
7018
  ];
6227
7019
  function gdriveIntegration(config = {}) {
6228
7020
  const oauth = {
@@ -6241,25 +7033,27 @@ function gdriveIntegration(config = {}) {
6241
7033
  tools: [...GDRIVE_TOOLS],
6242
7034
  oauth,
6243
7035
  async onInit(_client) {
6244
- logger30.debug("Google Drive integration initialized");
7036
+ logger41.debug("Google Drive integration initialized");
6245
7037
  },
6246
7038
  async onAfterConnect(_client) {
6247
- logger30.debug("Google Drive integration connected");
7039
+ logger41.debug("Google Drive integration connected");
6248
7040
  }
6249
7041
  };
6250
7042
  }
6251
7043
  // src/integrations/gsheets.ts
6252
7044
  init_logger();
6253
- var logger31 = createLogger("Google Sheets");
7045
+ var logger42 = createLogger("Google Sheets");
6254
7046
  var GSHEETS_TOOLS = [
6255
- "gsheets_list",
6256
- "gsheets_get",
6257
- "gsheets_get_values",
6258
- "gsheets_update_values",
6259
- "gsheets_create",
6260
7047
  "gsheets_append_values",
7048
+ "gsheets_batch_update",
7049
+ "gsheets_batch_update_values",
6261
7050
  "gsheets_clear_values",
6262
- "gsheets_batch_update_values"
7051
+ "gsheets_create",
7052
+ "gsheets_delete",
7053
+ "gsheets_get",
7054
+ "gsheets_get_values",
7055
+ "gsheets_list",
7056
+ "gsheets_update_values"
6263
7057
  ];
6264
7058
  function gsheetsIntegration(config = {}) {
6265
7059
  const oauth = {
@@ -6278,23 +7072,25 @@ function gsheetsIntegration(config = {}) {
6278
7072
  tools: [...GSHEETS_TOOLS],
6279
7073
  oauth,
6280
7074
  async onInit(_client) {
6281
- logger31.debug("Google Sheets integration initialized");
7075
+ logger42.debug("Google Sheets integration initialized");
6282
7076
  },
6283
7077
  async onAfterConnect(_client) {
6284
- logger31.debug("Google Sheets integration connected");
7078
+ logger42.debug("Google Sheets integration connected");
6285
7079
  }
6286
7080
  };
6287
7081
  }
6288
7082
  // src/integrations/gslides.ts
6289
7083
  init_logger();
6290
- var logger32 = createLogger("Google Slides");
7084
+ var logger43 = createLogger("Google Slides");
6291
7085
  var GSLIDES_TOOLS = [
6292
- "gslides_list",
6293
- "gslides_get",
6294
- "gslides_get_page",
6295
- "gslides_create",
6296
7086
  "gslides_add_slide",
7087
+ "gslides_batch_update",
7088
+ "gslides_create",
7089
+ "gslides_delete",
6297
7090
  "gslides_delete_slide",
7091
+ "gslides_get",
7092
+ "gslides_get_page",
7093
+ "gslides_list",
6298
7094
  "gslides_update_text"
6299
7095
  ];
6300
7096
  function gslidesIntegration(config = {}) {
@@ -6314,16 +7110,16 @@ function gslidesIntegration(config = {}) {
6314
7110
  tools: [...GSLIDES_TOOLS],
6315
7111
  oauth,
6316
7112
  async onInit(_client) {
6317
- logger32.debug("Google Slides integration initialized");
7113
+ logger43.debug("Google Slides integration initialized");
6318
7114
  },
6319
7115
  async onAfterConnect(_client) {
6320
- logger32.debug("Google Slides integration connected");
7116
+ logger43.debug("Google Slides integration connected");
6321
7117
  }
6322
7118
  };
6323
7119
  }
6324
7120
  // src/integrations/polar.ts
6325
7121
  init_logger();
6326
- var logger33 = createLogger("Polar");
7122
+ var logger44 = createLogger("Polar");
6327
7123
  var POLAR_TOOLS = [
6328
7124
  "polar_list_products",
6329
7125
  "polar_get_product",
@@ -6380,16 +7176,47 @@ function polarIntegration(config = {}) {
6380
7176
  tools: [...POLAR_TOOLS],
6381
7177
  oauth,
6382
7178
  async onInit(_client) {
6383
- logger33.debug("Polar integration initialized");
7179
+ logger44.debug("Polar integration initialized");
7180
+ },
7181
+ async onAfterConnect(_client) {
7182
+ logger44.debug("Polar integration connected");
7183
+ }
7184
+ };
7185
+ }
7186
+ // src/integrations/phantom.ts
7187
+ init_logger();
7188
+ var logger45 = createLogger("Phantom");
7189
+ var PHANTOM_TOOLS = [
7190
+ "phantom_build_browse_deeplink",
7191
+ "phantom_deeplink_provider_reference"
7192
+ ];
7193
+ function buildPhantomBrowseDeeplink(params) {
7194
+ const target = new URL(params.url);
7195
+ const ref = new URL(params.ref);
7196
+ if (target.protocol !== "https:" || ref.protocol !== "https:") {
7197
+ throw new Error("Phantom browse deeplinks require https url and ref values");
7198
+ }
7199
+ return `https://phantom.app/ul/browse/${encodeURIComponent(target.toString())}?ref=${encodeURIComponent(ref.toString())}`;
7200
+ }
7201
+ function phantomIntegration(_options = {}) {
7202
+ return {
7203
+ id: "phantom",
7204
+ name: "Phantom",
7205
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/phantom.png",
7206
+ description: "Build Phantom mobile universal links and expose provider deeplink reference data",
7207
+ category: "Other",
7208
+ tools: [...PHANTOM_TOOLS],
7209
+ async onInit(_client) {
7210
+ logger45.debug("Phantom integration initialized");
6384
7211
  },
6385
7212
  async onAfterConnect(_client) {
6386
- logger33.debug("Polar integration connected");
7213
+ logger45.debug("Phantom integration connected");
6387
7214
  }
6388
7215
  };
6389
7216
  }
6390
7217
  // src/integrations/figma.ts
6391
7218
  init_logger();
6392
- var logger34 = createLogger("Figma");
7219
+ var logger46 = createLogger("Figma");
6393
7220
  var FIGMA_TOOLS = [
6394
7221
  "figma_get_file",
6395
7222
  "figma_get_file_nodes",
@@ -6455,16 +7282,16 @@ function figmaIntegration(config = {}) {
6455
7282
  tools: [...FIGMA_TOOLS],
6456
7283
  oauth,
6457
7284
  async onInit(_client) {
6458
- logger34.debug("Figma integration initialized");
7285
+ logger46.debug("Figma integration initialized");
6459
7286
  },
6460
7287
  async onAfterConnect(_client) {
6461
- logger34.debug("Figma integration connected");
7288
+ logger46.debug("Figma integration connected");
6462
7289
  }
6463
7290
  };
6464
7291
  }
6465
7292
  // src/integrations/intercom.ts
6466
7293
  init_logger();
6467
- var logger35 = createLogger("Intercom");
7294
+ var logger47 = createLogger("Intercom");
6468
7295
  var INTERCOM_TOOLS = [
6469
7296
  "intercom_list_contacts",
6470
7297
  "intercom_get_contact",
@@ -6495,16 +7322,16 @@ function intercomIntegration(config = {}) {
6495
7322
  tools: [...INTERCOM_TOOLS],
6496
7323
  oauth,
6497
7324
  async onInit(_client) {
6498
- logger35.debug("Intercom integration initialized");
7325
+ logger47.debug("Intercom integration initialized");
6499
7326
  },
6500
7327
  async onAfterConnect(_client) {
6501
- logger35.debug("Intercom integration connected");
7328
+ logger47.debug("Intercom integration connected");
6502
7329
  }
6503
7330
  };
6504
7331
  }
6505
7332
  // src/integrations/hubspot.ts
6506
7333
  init_logger();
6507
- var logger36 = createLogger("HubSpot");
7334
+ var logger48 = createLogger("HubSpot");
6508
7335
  var HUBSPOT_TOOLS = [
6509
7336
  "hubspot_list_contacts",
6510
7337
  "hubspot_get_contact",
@@ -6554,40 +7381,40 @@ function hubspotIntegration(config = {}) {
6554
7381
  tools: [...HUBSPOT_TOOLS],
6555
7382
  oauth,
6556
7383
  async onInit(_client) {
6557
- logger36.debug("HubSpot integration initialized");
7384
+ logger48.debug("HubSpot integration initialized");
6558
7385
  },
6559
7386
  async onAfterConnect(_client) {
6560
- logger36.debug("HubSpot integration connected");
7387
+ logger48.debug("HubSpot integration connected");
6561
7388
  }
6562
7389
  };
6563
7390
  }
6564
7391
  // src/integrations/youtube.ts
6565
7392
  init_logger();
6566
- var logger37 = createLogger("YouTube");
7393
+ var logger49 = createLogger("YouTube");
6567
7394
  var YOUTUBE_TOOLS = [
6568
- "youtube_search",
6569
- "youtube_get_video",
6570
- "youtube_get_my_channel",
7395
+ "youtube_add_comment",
7396
+ "youtube_add_to_playlist",
7397
+ "youtube_create_playlist",
7398
+ "youtube_delete_playlist",
7399
+ "youtube_get_captions",
6571
7400
  "youtube_get_channel",
6572
- "youtube_list_my_videos",
6573
- "youtube_get_video_rating",
6574
- "youtube_list_playlists",
7401
+ "youtube_get_my_channel",
6575
7402
  "youtube_get_playlist",
7403
+ "youtube_get_video",
7404
+ "youtube_get_video_rating",
7405
+ "youtube_list_comment_replies",
7406
+ "youtube_list_comments",
7407
+ "youtube_list_my_videos",
6576
7408
  "youtube_list_playlist_items",
7409
+ "youtube_list_playlists",
6577
7410
  "youtube_list_subscriptions",
6578
- "youtube_list_comments",
6579
- "youtube_list_comment_replies",
6580
- "youtube_get_captions",
6581
7411
  "youtube_rate_video",
7412
+ "youtube_remove_from_playlist",
7413
+ "youtube_reply_to_comment",
7414
+ "youtube_search",
6582
7415
  "youtube_subscribe",
6583
7416
  "youtube_unsubscribe",
6584
- "youtube_add_comment",
6585
- "youtube_reply_to_comment",
6586
- "youtube_create_playlist",
6587
7417
  "youtube_update_playlist",
6588
- "youtube_delete_playlist",
6589
- "youtube_add_to_playlist",
6590
- "youtube_remove_from_playlist",
6591
7418
  "youtube_update_video"
6592
7419
  ];
6593
7420
  function youtubeIntegration(config = {}) {
@@ -6609,16 +7436,80 @@ function youtubeIntegration(config = {}) {
6609
7436
  tools: [...YOUTUBE_TOOLS],
6610
7437
  oauth,
6611
7438
  async onInit(_client) {
6612
- logger37.debug("YouTube integration initialized");
7439
+ logger49.debug("YouTube integration initialized");
6613
7440
  },
6614
7441
  async onAfterConnect(_client) {
6615
- logger37.debug("YouTube integration connected");
7442
+ logger49.debug("YouTube integration connected");
6616
7443
  }
6617
7444
  };
6618
7445
  }
7446
+ // src/integrations/zoom.ts
7447
+ init_logger();
7448
+ var logger50 = createLogger("Zoom");
7449
+ var ZOOM_TOOLS = [
7450
+ "zoom_get_user",
7451
+ "zoom_list_meetings",
7452
+ "zoom_create_meeting",
7453
+ "zoom_get_meeting",
7454
+ "zoom_update_meeting",
7455
+ "zoom_delete_meeting"
7456
+ ];
7457
+ function zoomIntegration(config = {}) {
7458
+ const oauth = {
7459
+ provider: "zoom",
7460
+ clientId: config.clientId ?? getEnv("ZOOM_CLIENT_ID"),
7461
+ clientSecret: config.clientSecret ?? getEnv("ZOOM_CLIENT_SECRET"),
7462
+ scopes: config.scopes,
7463
+ optionalScopes: config.optionalScopes,
7464
+ redirectUri: config.redirectUri,
7465
+ config: { ...config }
7466
+ };
7467
+ return {
7468
+ id: "zoom",
7469
+ name: "Zoom",
7470
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/zoom.png",
7471
+ tools: [...ZOOM_TOOLS],
7472
+ oauth,
7473
+ async onInit(_client) {
7474
+ logger50.debug("Zoom integration initialized");
7475
+ },
7476
+ async onAfterConnect(_client) {
7477
+ logger50.debug("Zoom integration connected");
7478
+ }
7479
+ };
7480
+ }
7481
+ // src/integrations/reddit.ts
7482
+ var REDDIT_TOOLS = [
7483
+ "reddit_get_me",
7484
+ "reddit_get_subreddit_about",
7485
+ "reddit_list_subreddit_posts",
7486
+ "reddit_get_post_thread",
7487
+ "reddit_search",
7488
+ "reddit_submit_post",
7489
+ "reddit_comment",
7490
+ "reddit_vote",
7491
+ "reddit_list_my_subreddits",
7492
+ "reddit_list_popular_subreddits"
7493
+ ];
7494
+ function redditIntegration(config = {}) {
7495
+ const oauth = {
7496
+ provider: "reddit",
7497
+ clientId: config.clientId ?? getEnv("REDDIT_CLIENT_ID"),
7498
+ clientSecret: config.clientSecret ?? getEnv("REDDIT_CLIENT_SECRET"),
7499
+ scopes: config.scopes ?? ["identity", "read", "submit", "vote", "mysubreddits"],
7500
+ optionalScopes: config.optionalScopes,
7501
+ redirectUri: config.redirectUri
7502
+ };
7503
+ return {
7504
+ id: "reddit",
7505
+ name: "Reddit",
7506
+ tools: [...REDDIT_TOOLS],
7507
+ oauth
7508
+ };
7509
+ }
6619
7510
  // src/integrations/cursor.ts
6620
7511
  init_logger();
6621
- var logger38 = createLogger("Cursor");
7512
+ var logger51 = createLogger("Cursor");
6622
7513
  var CURSOR_TOOLS = [
6623
7514
  "cursor_list_agents",
6624
7515
  "cursor_get_agent",
@@ -6638,16 +7529,72 @@ function cursorIntegration(_config = {}) {
6638
7529
  logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/cursor.jpeg",
6639
7530
  tools: [...CURSOR_TOOLS],
6640
7531
  async onInit(_client) {
6641
- logger38.debug("Cursor integration initialized");
7532
+ logger51.debug("Cursor integration initialized");
7533
+ },
7534
+ async onAfterConnect(_client) {
7535
+ logger51.debug("Cursor integration connected");
7536
+ }
7537
+ };
7538
+ }
7539
+ // src/integrations/databricks.ts
7540
+ init_logger();
7541
+ var logger52 = createLogger("Databricks");
7542
+ var DATABRICKS_SCOPES = ["all-apis", "offline_access"];
7543
+ var DATABRICKS_TOOLS = [
7544
+ "databricks_current_user",
7545
+ "databricks_clusters_list",
7546
+ "databricks_clusters_get",
7547
+ "databricks_jobs_list",
7548
+ "databricks_jobs_get",
7549
+ "databricks_jobs_run_now",
7550
+ "databricks_sql_warehouses_list",
7551
+ "databricks_workspace_get_status"
7552
+ ];
7553
+ function normalizeDatabricksWorkspaceHost(raw) {
7554
+ const value = (raw ?? "").trim().replace(/\/+$/, "");
7555
+ if (!value) {
7556
+ return "";
7557
+ }
7558
+ return /^https?:\/\//i.test(value) ? value : `https://${value}`;
7559
+ }
7560
+ function databricksIntegration(config = {}) {
7561
+ const host = normalizeDatabricksWorkspaceHost(config.workspaceHost ?? getEnv("DATABRICKS_WORKSPACE_HOST"));
7562
+ const placeholder = "https://workspace-host.invalid";
7563
+ const base = host || placeholder;
7564
+ const oauth = {
7565
+ provider: "databricks",
7566
+ clientId: config.clientId ?? getEnv("DATABRICKS_CLIENT_ID"),
7567
+ clientSecret: config.clientSecret ?? getEnv("DATABRICKS_CLIENT_SECRET"),
7568
+ scopes: config.scopes ?? [...DATABRICKS_SCOPES],
7569
+ redirectUri: config.redirectUri,
7570
+ config: {
7571
+ subdomain: host || undefined,
7572
+ authorization_endpoint: `${base}/oidc/v1/authorize`,
7573
+ token_endpoint: `${base}/oidc/v1/token`,
7574
+ response_type: "code",
7575
+ grant_types_supported: ["authorization_code", "refresh_token"],
7576
+ code_challenge_method: "S256"
7577
+ }
7578
+ };
7579
+ return {
7580
+ id: "databricks",
7581
+ name: "Databricks",
7582
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/databricks.png",
7583
+ description: "Run Databricks jobs, list clusters and SQL warehouses, and inspect workspace paths",
7584
+ category: "Engineering",
7585
+ tools: [...DATABRICKS_TOOLS],
7586
+ oauth,
7587
+ async onInit(_client) {
7588
+ logger52.debug("Databricks integration initialized");
6642
7589
  },
6643
7590
  async onAfterConnect(_client) {
6644
- logger38.debug("Cursor integration connected");
7591
+ logger52.debug("Databricks integration connected");
6645
7592
  }
6646
7593
  };
6647
7594
  }
6648
7595
  // src/integrations/posthog.ts
6649
7596
  init_logger();
6650
- var logger39 = createLogger("PostHog");
7597
+ var logger53 = createLogger("PostHog");
6651
7598
  var DEFAULT_POSTHOG_BASE_URL = "https://us.posthog.com";
6652
7599
  var POSTHOG_SCOPES = [
6653
7600
  "openid",
@@ -6733,16 +7680,56 @@ function posthogIntegration(config = {}) {
6733
7680
  tools: [...POSTHOG_TOOLS],
6734
7681
  oauth,
6735
7682
  async onInit(_client) {
6736
- logger39.debug("PostHog integration initialized");
7683
+ logger53.debug("PostHog integration initialized");
7684
+ },
7685
+ async onAfterConnect(_client) {
7686
+ logger53.debug("PostHog integration connected");
7687
+ }
7688
+ };
7689
+ }
7690
+ // src/integrations/postman.ts
7691
+ init_logger();
7692
+ var logger54 = createLogger("Postman");
7693
+ var POSTMAN_TOOLS = [
7694
+ "postman_get_me",
7695
+ "postman_list_workspaces",
7696
+ "postman_get_workspace",
7697
+ "postman_list_collections",
7698
+ "postman_get_collection",
7699
+ "postman_delete_collection",
7700
+ "postman_list_environments",
7701
+ "postman_get_environment",
7702
+ "postman_create_collection"
7703
+ ];
7704
+ function postmanIntegration(options = {}) {
7705
+ const apiKey = options.apiKey ?? getEnv("POSTMAN_API_KEY");
7706
+ if (!apiKey) {
7707
+ throw new Error("postmanIntegration requires apiKey or POSTMAN_API_KEY environment variable");
7708
+ }
7709
+ return {
7710
+ id: "postman",
7711
+ name: "Postman",
7712
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/postman.png",
7713
+ description: "Manage Postman workspaces, collections, and environments via the Postman API",
7714
+ category: "Engineering",
7715
+ tools: [...POSTMAN_TOOLS],
7716
+ authType: "apiKey",
7717
+ getHeaders() {
7718
+ return {
7719
+ Authorization: `Bearer ${apiKey}`
7720
+ };
7721
+ },
7722
+ async onInit(_client) {
7723
+ logger54.debug("Postman integration initialized");
6737
7724
  },
6738
7725
  async onAfterConnect(_client) {
6739
- logger39.debug("PostHog integration connected");
7726
+ logger54.debug("Postman integration connected");
6740
7727
  }
6741
7728
  };
6742
7729
  }
6743
7730
  // src/integrations/sentry.ts
6744
7731
  init_logger();
6745
- var logger40 = createLogger("Sentry");
7732
+ var logger55 = createLogger("Sentry");
6746
7733
  var SENTRY_SCOPES = [
6747
7734
  "org:read",
6748
7735
  "project:read",
@@ -6791,16 +7778,96 @@ function sentryIntegration(config = {}) {
6791
7778
  tools: [...SENTRY_TOOLS],
6792
7779
  oauth,
6793
7780
  async onInit(_client) {
6794
- logger40.debug("Sentry integration initialized");
7781
+ logger55.debug("Sentry integration initialized");
7782
+ },
7783
+ async onAfterConnect(_client) {
7784
+ logger55.debug("Sentry integration connected");
7785
+ }
7786
+ };
7787
+ }
7788
+ // src/integrations/supabase.ts
7789
+ init_logger();
7790
+ var logger56 = createLogger("Supabase");
7791
+ var SUPABASE_API_BASE = "https://api.supabase.com";
7792
+ var SUPABASE_TOOLS = [
7793
+ "supabase_get_profile",
7794
+ "supabase_list_organizations",
7795
+ "supabase_get_organization",
7796
+ "supabase_list_organization_projects",
7797
+ "supabase_list_projects",
7798
+ "supabase_get_project",
7799
+ "supabase_create_project",
7800
+ "supabase_update_project",
7801
+ "supabase_delete_project",
7802
+ "supabase_list_project_api_keys",
7803
+ "supabase_create_project_api_key",
7804
+ "supabase_delete_project_api_key",
7805
+ "supabase_list_project_secrets",
7806
+ "supabase_list_project_branches",
7807
+ "supabase_get_project_health",
7808
+ "supabase_get_database_postgres_config",
7809
+ "supabase_list_available_regions"
7810
+ ];
7811
+ function supabaseIntegration(config = {}) {
7812
+ const pat = config.accessToken ?? getEnv("SUPABASE_ACCESS_TOKEN");
7813
+ if (pat) {
7814
+ return {
7815
+ id: "supabase",
7816
+ name: "Supabase",
7817
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/supabase.png",
7818
+ description: "Manage Supabase organizations, projects, Postgres settings, API keys, secrets, and branches via the Management API",
7819
+ category: "Infrastructure",
7820
+ tools: [...SUPABASE_TOOLS],
7821
+ authType: "apiKey",
7822
+ getHeaders() {
7823
+ return {
7824
+ Authorization: `Bearer ${pat}`
7825
+ };
7826
+ },
7827
+ async onInit(_client) {
7828
+ logger56.debug("Supabase integration initialized (personal access token)");
7829
+ },
7830
+ async onAfterConnect(_client) {
7831
+ logger56.debug("Supabase integration connected");
7832
+ }
7833
+ };
7834
+ }
7835
+ const oauth = {
7836
+ provider: "supabase",
7837
+ clientId: config.clientId ?? getEnv("SUPABASE_CLIENT_ID"),
7838
+ clientSecret: config.clientSecret ?? getEnv("SUPABASE_CLIENT_SECRET"),
7839
+ scopes: config.scopes ?? [],
7840
+ optionalScopes: config.optionalScopes,
7841
+ redirectUri: config.redirectUri,
7842
+ config: {
7843
+ apiBaseUrl: SUPABASE_API_BASE,
7844
+ authorization_endpoint: `${SUPABASE_API_BASE}/v1/oauth/authorize`,
7845
+ token_endpoint: `${SUPABASE_API_BASE}/v1/oauth/token`,
7846
+ token_auth_method: "client_secret_basic",
7847
+ response_type: "code",
7848
+ grant_types_supported: ["authorization_code", "refresh_token"],
7849
+ code_challenge_method: "S256"
7850
+ }
7851
+ };
7852
+ return {
7853
+ id: "supabase",
7854
+ name: "Supabase",
7855
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/supabase.png",
7856
+ description: "Manage Supabase organizations, projects, Postgres settings, API keys, secrets, and branches via the Management API",
7857
+ category: "Infrastructure",
7858
+ tools: [...SUPABASE_TOOLS],
7859
+ oauth,
7860
+ async onInit(_client) {
7861
+ logger56.debug("Supabase integration initialized");
6795
7862
  },
6796
7863
  async onAfterConnect(_client) {
6797
- logger40.debug("Sentry integration connected");
7864
+ logger56.debug("Supabase integration connected");
6798
7865
  }
6799
7866
  };
6800
7867
  }
6801
7868
  // src/integrations/netlify.ts
6802
7869
  init_logger();
6803
- var logger41 = createLogger("Netlify");
7870
+ var logger57 = createLogger("Netlify");
6804
7871
  var NETLIFY_TOOLS = [
6805
7872
  "netlify_get_current_user",
6806
7873
  "netlify_list_accounts",
@@ -6863,43 +7930,299 @@ function netlifyIntegration(config = {}) {
6863
7930
  tools: [...NETLIFY_TOOLS],
6864
7931
  oauth,
6865
7932
  async onInit(_client) {
6866
- logger41.debug("Netlify integration initialized");
7933
+ logger57.debug("Netlify integration initialized");
6867
7934
  },
6868
7935
  async onAfterConnect(_client) {
6869
- logger41.debug("Netlify integration connected");
7936
+ logger57.debug("Netlify integration connected");
6870
7937
  }
6871
7938
  };
6872
7939
  }
6873
- // src/integrations/jira.ts
7940
+ // src/integrations/datadog.ts
6874
7941
  init_logger();
6875
- var logger42 = createLogger("Jira");
6876
- var JIRA_SCOPES = [
6877
- "read:jira-work",
6878
- "write:jira-work",
6879
- "read:account",
6880
- "offline_access"
7942
+ var logger58 = createLogger("Datadog");
7943
+ var DATADOG_SCOPES = [
7944
+ "monitors_read",
7945
+ "dashboards_read",
7946
+ "metrics_read",
7947
+ "logs_read_data"
6881
7948
  ];
6882
- var JIRA_TOOLS = [
6883
- "jira_list_projects",
6884
- "jira_get_project",
6885
- "jira_get_issue_types",
6886
- "jira_search_issues",
6887
- "jira_get_issue",
6888
- "jira_create_issue",
6889
- "jira_update_issue",
6890
- "jira_get_transitions",
6891
- "jira_transition_issue",
6892
- "jira_add_comment",
6893
- "jira_assign_issue",
6894
- "jira_list_boards",
6895
- "jira_list_sprints"
7949
+ var DATADOG_TOOLS = [
7950
+ "datadog_list_monitors",
7951
+ "datadog_get_monitor",
7952
+ "datadog_list_dashboards",
7953
+ "datadog_get_dashboard",
7954
+ "datadog_search_logs"
6896
7955
  ];
6897
- function jiraIntegration(config = {}) {
7956
+ function normalizeSite(raw) {
7957
+ const s = (raw ?? "").trim();
7958
+ return s.length > 0 ? s : "datadoghq.com";
7959
+ }
7960
+ function datadogIntegration(config = {}) {
7961
+ const site = normalizeSite(config.site ?? getEnv("DATADOG_SITE"));
7962
+ const apiKey = config.apiKey ?? getEnv("DATADOG_API_KEY");
7963
+ const applicationKey = config.applicationKey ?? getEnv("DATADOG_APPLICATION_KEY");
7964
+ const baseFields = {
7965
+ id: "datadog",
7966
+ name: "Datadog",
7967
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/datadog.png",
7968
+ description: "List monitors and dashboards and search logs with the Datadog API",
7969
+ category: "Engineering",
7970
+ tools: [...DATADOG_TOOLS],
7971
+ async onInit(_client) {
7972
+ logger58.debug("Datadog integration initialized");
7973
+ },
7974
+ async onAfterConnect(_client) {
7975
+ logger58.debug("Datadog integration connected");
7976
+ }
7977
+ };
7978
+ if (apiKey || applicationKey) {
7979
+ if (!apiKey || !applicationKey) {
7980
+ throw new Error("datadogIntegration: apiKey and applicationKey must both be set for API key authentication");
7981
+ }
7982
+ return {
7983
+ ...baseFields,
7984
+ authType: "apiKey",
7985
+ getHeaders() {
7986
+ return {
7987
+ "DD-API-KEY": apiKey,
7988
+ "DD-APPLICATION-KEY": applicationKey,
7989
+ "DD-SITE": site
7990
+ };
7991
+ }
7992
+ };
7993
+ }
7994
+ const clientId = config.clientId ?? getEnv("DATADOG_CLIENT_ID");
7995
+ const clientSecret = config.clientSecret ?? getEnv("DATADOG_CLIENT_SECRET");
6898
7996
  const oauth = {
6899
- provider: "jira",
6900
- clientId: config.clientId ?? getEnv("JIRA_CLIENT_ID"),
6901
- clientSecret: config.clientSecret ?? getEnv("JIRA_CLIENT_SECRET"),
6902
- scopes: config.scopes ?? [...JIRA_SCOPES],
7997
+ provider: "datadog",
7998
+ clientId,
7999
+ clientSecret,
8000
+ scopes: config.scopes ?? [...DATADOG_SCOPES],
8001
+ redirectUri: config.redirectUri,
8002
+ config: {
8003
+ authorization_endpoint: "https://app.datadoghq.com/oauth2/v1/authorize",
8004
+ token_endpoint: "https://api.datadoghq.com/oauth2/v1/token",
8005
+ response_type: "code",
8006
+ grant_types_supported: ["authorization_code", "refresh_token"],
8007
+ subdomain: site
8008
+ }
8009
+ };
8010
+ return {
8011
+ ...baseFields,
8012
+ oauth
8013
+ };
8014
+ }
8015
+ // src/integrations/redis.ts
8016
+ init_logger();
8017
+ var logger59 = createLogger("Redis Cloud");
8018
+ var REDIS_TOOLS = [
8019
+ "redis_list_subscriptions",
8020
+ "redis_get_subscription",
8021
+ "redis_list_fixed_subscriptions",
8022
+ "redis_get_fixed_subscription",
8023
+ "redis_list_databases",
8024
+ "redis_get_database",
8025
+ "redis_create_database",
8026
+ "redis_update_database",
8027
+ "redis_delete_database",
8028
+ "redis_list_essentials_databases",
8029
+ "redis_get_essentials_database",
8030
+ "redis_create_essentials_database",
8031
+ "redis_update_essentials_database",
8032
+ "redis_delete_essentials_database",
8033
+ "redis_get_task",
8034
+ "redis_list_logs"
8035
+ ];
8036
+ function encodeRedisCloudBearerToken(accountKey, secretKey) {
8037
+ const json = JSON.stringify({ account_key: accountKey, secret_key: secretKey });
8038
+ let b64;
8039
+ if (typeof Buffer !== "undefined") {
8040
+ b64 = Buffer.from(json, "utf8").toString("base64");
8041
+ } else {
8042
+ const bytes = new TextEncoder().encode(json);
8043
+ let binary = "";
8044
+ for (let i = 0;i < bytes.length; i++) {
8045
+ binary += String.fromCharCode(bytes[i]);
8046
+ }
8047
+ b64 = btoa(binary);
8048
+ }
8049
+ return `redis_cloud:${b64}`;
8050
+ }
8051
+ function redisIntegration(options = {}) {
8052
+ const accountKey = options.accountKey ?? getEnv("REDIS_CLOUD_ACCOUNT_KEY");
8053
+ const secretKey = options.secretKey ?? getEnv("REDIS_CLOUD_SECRET_KEY");
8054
+ if (!accountKey || !secretKey) {
8055
+ throw new Error("redisIntegration requires accountKey/secretKey or REDIS_CLOUD_ACCOUNT_KEY and REDIS_CLOUD_SECRET_KEY environment variables");
8056
+ }
8057
+ const bearer = encodeRedisCloudBearerToken(accountKey, secretKey);
8058
+ return {
8059
+ id: "redis",
8060
+ name: "Redis Cloud",
8061
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/redis.png",
8062
+ description: "Manage Redis Cloud subscriptions, databases, async tasks, and audit logs via the REST API",
8063
+ category: "Infrastructure",
8064
+ tools: [...REDIS_TOOLS],
8065
+ authType: "apiKey",
8066
+ getHeaders() {
8067
+ return {
8068
+ Authorization: `Bearer ${bearer}`
8069
+ };
8070
+ },
8071
+ async onInit(_client) {
8072
+ logger59.debug("Redis Cloud integration initialized");
8073
+ },
8074
+ async onAfterConnect(_client) {
8075
+ logger59.debug("Redis Cloud integration connected");
8076
+ }
8077
+ };
8078
+ }
8079
+ // src/integrations/upstash.ts
8080
+ init_logger();
8081
+ var logger60 = createLogger("Upstash");
8082
+ var UPSTASH_TOOLS = [
8083
+ "upstash_redis_run",
8084
+ "upstash_redis_get",
8085
+ "upstash_redis_set",
8086
+ "upstash_redis_del",
8087
+ "upstash_qstash_publish"
8088
+ ];
8089
+ function upstashIntegration(options = {}) {
8090
+ const redisUrl = options.redisUrl ?? getEnv("UPSTASH_REDIS_REST_URL");
8091
+ const redisToken = options.redisToken ?? getEnv("UPSTASH_REDIS_REST_TOKEN");
8092
+ const qstashToken = options.qstashToken ?? getEnv("QSTASH_TOKEN");
8093
+ const hasRedis = !!(redisUrl && redisToken);
8094
+ const onlyPartialRedis = !!redisUrl && !redisToken || !redisUrl && !!redisToken;
8095
+ if (onlyPartialRedis) {
8096
+ throw new Error("upstashIntegration requires both redisUrl and redisToken for Redis tools (or omit both for QStash-only)");
8097
+ }
8098
+ if (!hasRedis && !qstashToken) {
8099
+ throw new Error("upstashIntegration requires Redis credentials (UPSTASH_REDIS_REST_URL + UPSTASH_REDIS_REST_TOKEN) and/or QSTASH_TOKEN");
8100
+ }
8101
+ return {
8102
+ id: "upstash",
8103
+ name: "Upstash",
8104
+ logoUrl: "https://avatars.githubusercontent.com/u/74989412?s=200&v=4",
8105
+ description: "Serverless Redis (REST), QStash messaging, and HTTP APIs",
8106
+ category: "Infrastructure",
8107
+ tools: [...UPSTASH_TOOLS],
8108
+ authType: "apiKey",
8109
+ getHeaders() {
8110
+ const headers = {};
8111
+ if (hasRedis) {
8112
+ headers["X-Upstash-Redis-Rest-Url"] = redisUrl;
8113
+ headers["X-Upstash-Redis-Rest-Token"] = redisToken;
8114
+ }
8115
+ if (qstashToken) {
8116
+ headers["X-Qstash-Token"] = qstashToken;
8117
+ }
8118
+ return headers;
8119
+ },
8120
+ async onInit(_client) {
8121
+ logger60.debug("Upstash integration initialized");
8122
+ },
8123
+ async onAfterConnect(_client) {
8124
+ logger60.debug("Upstash integration connected");
8125
+ }
8126
+ };
8127
+ }
8128
+ // src/integrations/webflow.ts
8129
+ init_logger();
8130
+ var logger61 = createLogger("Webflow");
8131
+ var WEBFLOW_TOOLS = [
8132
+ "webflow_token_introspect",
8133
+ "webflow_get_authorized_user",
8134
+ "webflow_list_sites",
8135
+ "webflow_get_site",
8136
+ "webflow_get_site_custom_domains",
8137
+ "webflow_publish_site",
8138
+ "webflow_list_site_pages",
8139
+ "webflow_list_site_collections",
8140
+ "webflow_get_collection",
8141
+ "webflow_list_collection_items",
8142
+ "webflow_list_live_collection_items",
8143
+ "webflow_get_collection_item",
8144
+ "webflow_create_collection_items",
8145
+ "webflow_update_collection_items",
8146
+ "webflow_delete_collection_items",
8147
+ "webflow_publish_collection_items",
8148
+ "webflow_list_site_forms",
8149
+ "webflow_list_site_webhooks"
8150
+ ];
8151
+ var DEFAULT_WEBFLOW_SCOPES = [
8152
+ "authorized_user:read",
8153
+ "assets:read",
8154
+ "assets:write",
8155
+ "cms:read",
8156
+ "cms:write",
8157
+ "custom_code:read",
8158
+ "custom_code:write",
8159
+ "forms:read",
8160
+ "forms:write",
8161
+ "pages:read",
8162
+ "pages:write",
8163
+ "sites:read",
8164
+ "sites:write"
8165
+ ];
8166
+ function webflowIntegration(config = {}) {
8167
+ const oauth = {
8168
+ provider: "webflow",
8169
+ clientId: config.clientId ?? getEnv("WEBFLOW_CLIENT_ID"),
8170
+ clientSecret: config.clientSecret ?? getEnv("WEBFLOW_CLIENT_SECRET"),
8171
+ scopes: config.scopes ?? [...DEFAULT_WEBFLOW_SCOPES],
8172
+ redirectUri: config.redirectUri,
8173
+ config: {
8174
+ authorization_endpoint: "https://webflow.com/oauth/authorize",
8175
+ token_endpoint: "https://api.webflow.com/oauth/access_token",
8176
+ response_type: "code",
8177
+ grant_types_supported: ["authorization_code", "refresh_token"]
8178
+ }
8179
+ };
8180
+ return {
8181
+ id: "webflow",
8182
+ name: "Webflow",
8183
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/webflow.png",
8184
+ description: "Manage Webflow sites, CMS collections, pages, forms, and publishing",
8185
+ category: "Engineering",
8186
+ tools: [...WEBFLOW_TOOLS],
8187
+ oauth,
8188
+ async onInit(_client) {
8189
+ logger61.debug("Webflow integration initialized");
8190
+ },
8191
+ async onAfterConnect(_client) {
8192
+ logger61.debug("Webflow integration connected");
8193
+ }
8194
+ };
8195
+ }
8196
+ // src/integrations/jira.ts
8197
+ init_logger();
8198
+ var logger62 = createLogger("Jira");
8199
+ var JIRA_SCOPES = [
8200
+ "read:jira-work",
8201
+ "write:jira-work",
8202
+ "read:account",
8203
+ "offline_access"
8204
+ ];
8205
+ var JIRA_TOOLS = [
8206
+ "jira_list_projects",
8207
+ "jira_get_project",
8208
+ "jira_get_issue_types",
8209
+ "jira_search_issues",
8210
+ "jira_get_issue",
8211
+ "jira_create_issue",
8212
+ "jira_update_issue",
8213
+ "jira_get_transitions",
8214
+ "jira_transition_issue",
8215
+ "jira_add_comment",
8216
+ "jira_assign_issue",
8217
+ "jira_list_boards",
8218
+ "jira_list_sprints"
8219
+ ];
8220
+ function jiraIntegration(config = {}) {
8221
+ const oauth = {
8222
+ provider: "jira",
8223
+ clientId: config.clientId ?? getEnv("JIRA_CLIENT_ID"),
8224
+ clientSecret: config.clientSecret ?? getEnv("JIRA_CLIENT_SECRET"),
8225
+ scopes: config.scopes ?? [...JIRA_SCOPES],
6903
8226
  redirectUri: config.redirectUri,
6904
8227
  config: {
6905
8228
  authorization_endpoint: "https://auth.atlassian.com/authorize",
@@ -6917,10 +8240,728 @@ function jiraIntegration(config = {}) {
6917
8240
  tools: [...JIRA_TOOLS],
6918
8241
  oauth,
6919
8242
  async onInit(_client) {
6920
- logger42.debug("Jira integration initialized");
8243
+ logger62.debug("Jira integration initialized");
8244
+ },
8245
+ async onAfterConnect(_client) {
8246
+ logger62.debug("Jira integration connected");
8247
+ }
8248
+ };
8249
+ }
8250
+ // src/integrations/salesforce.ts
8251
+ init_logger();
8252
+ var logger63 = createLogger("Salesforce");
8253
+ var SALESFORCE_TOOLS = [
8254
+ "salesforce_query",
8255
+ "salesforce_get_limits",
8256
+ "salesforce_describe_global",
8257
+ "salesforce_sobject_describe",
8258
+ "salesforce_sobject_get",
8259
+ "salesforce_sobject_create",
8260
+ "salesforce_sobject_update",
8261
+ "salesforce_sobject_delete"
8262
+ ];
8263
+ function salesforceIntegration(config = {}) {
8264
+ const oauth = {
8265
+ provider: "salesforce",
8266
+ clientId: config.clientId ?? getEnv("SALESFORCE_CLIENT_ID"),
8267
+ clientSecret: config.clientSecret ?? getEnv("SALESFORCE_CLIENT_SECRET"),
8268
+ scopes: config.scopes ?? ["api", "refresh_token", "offline_access"],
8269
+ optionalScopes: config.optionalScopes,
8270
+ redirectUri: config.redirectUri,
8271
+ config: {
8272
+ ...config,
8273
+ subdomain: config.subdomain ?? getEnv("SALESFORCE_SUBDOMAIN")
8274
+ }
8275
+ };
8276
+ return {
8277
+ id: "salesforce",
8278
+ name: "Salesforce",
8279
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/salesforce.png",
8280
+ tools: [...SALESFORCE_TOOLS],
8281
+ oauth,
8282
+ async onInit(_client) {
8283
+ logger63.debug("Salesforce integration initialized");
8284
+ },
8285
+ async onAfterConnect(_client) {
8286
+ logger63.debug("Salesforce integration connected");
8287
+ }
8288
+ };
8289
+ }
8290
+ // src/integrations/zapier.ts
8291
+ init_logger();
8292
+ var logger64 = createLogger("Zapier");
8293
+ var ZAPIER_TOOLS = [
8294
+ "zapier_get_profile",
8295
+ "zapier_list_zaps",
8296
+ "zapier_list_apps",
8297
+ "zapier_list_actions",
8298
+ "zapier_list_authentications",
8299
+ "zapier_list_zap_runs"
8300
+ ];
8301
+ function zapierIntegration(config = {}) {
8302
+ const oauth = {
8303
+ provider: "zapier",
8304
+ clientId: config.clientId ?? getEnv("ZAPIER_CLIENT_ID"),
8305
+ clientSecret: config.clientSecret ?? getEnv("ZAPIER_CLIENT_SECRET"),
8306
+ scopes: config.scopes ?? [],
8307
+ redirectUri: config.redirectUri,
8308
+ config: {
8309
+ authorization_endpoint: "https://zapier.com/oauth/authorize/",
8310
+ token_endpoint: "https://zapier.com/oauth/token/",
8311
+ response_type: "code",
8312
+ grant_types_supported: ["authorization_code", "refresh_token"]
8313
+ }
8314
+ };
8315
+ return {
8316
+ id: "zapier",
8317
+ name: "Zapier",
8318
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/zapier.png",
8319
+ description: "List Zaps, browse apps, manage authentications, and inspect Zap runs via the Partner Workflow API",
8320
+ category: "Productivity",
8321
+ tools: [...ZAPIER_TOOLS],
8322
+ oauth,
8323
+ async onInit(_client) {
8324
+ logger64.debug("Zapier integration initialized");
8325
+ },
8326
+ async onAfterConnect(_client) {
8327
+ logger64.debug("Zapier integration connected");
8328
+ }
8329
+ };
8330
+ }
8331
+ // src/integrations/linkedin.ts
8332
+ init_logger();
8333
+ var logger65 = createLogger("LinkedIn");
8334
+ var LINKEDIN_SCOPES = ["openid", "profile", "email", "w_member_social"];
8335
+ var LINKEDIN_TOOLS = ["linkedin_get_userinfo", "linkedin_create_post"];
8336
+ function linkedinIntegration(config = {}) {
8337
+ const oauth = {
8338
+ provider: "linkedin",
8339
+ clientId: config.clientId ?? getEnv("LINKEDIN_CLIENT_ID"),
8340
+ clientSecret: config.clientSecret ?? getEnv("LINKEDIN_CLIENT_SECRET"),
8341
+ scopes: config.scopes ?? [...LINKEDIN_SCOPES],
8342
+ optionalScopes: config.optionalScopes,
8343
+ redirectUri: config.redirectUri,
8344
+ config: {
8345
+ authorization_endpoint: "https://www.linkedin.com/oauth/v2/authorization",
8346
+ token_endpoint: "https://www.linkedin.com/oauth/v2/accessToken",
8347
+ response_type: "code",
8348
+ grant_types_supported: ["authorization_code", "refresh_token"]
8349
+ }
8350
+ };
8351
+ return {
8352
+ id: "linkedin",
8353
+ name: "LinkedIn",
8354
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/linkedin.png",
8355
+ description: "Read LinkedIn OpenID profile data and publish member posts",
8356
+ category: "Social Media",
8357
+ tools: [...LINKEDIN_TOOLS],
8358
+ oauth,
8359
+ async onInit(_client) {
8360
+ logger65.debug("LinkedIn integration initialized");
8361
+ },
8362
+ async onAfterConnect(_client) {
8363
+ logger65.debug("LinkedIn integration connected");
8364
+ }
8365
+ };
8366
+ }
8367
+ // src/integrations/threads.ts
8368
+ init_logger();
8369
+ var logger66 = createLogger("Threads");
8370
+ var THREADS_SCOPES = [
8371
+ "threads_basic",
8372
+ "threads_content_publish",
8373
+ "threads_read_replies",
8374
+ "threads_manage_replies",
8375
+ "threads_manage_insights"
8376
+ ];
8377
+ var THREADS_OPTIONAL_SCOPES = [
8378
+ "threads_keyword_search",
8379
+ "threads_profile_discovery",
8380
+ "threads_manage_mentions"
8381
+ ];
8382
+ var THREADS_TOOLS = [
8383
+ "threads_get_me",
8384
+ "threads_list_user_media",
8385
+ "threads_get_media",
8386
+ "threads_keyword_search",
8387
+ "threads_create_media_container",
8388
+ "threads_publish_media_container",
8389
+ "threads_get_container_status",
8390
+ "threads_list_replies",
8391
+ "threads_get_conversation",
8392
+ "threads_manage_reply",
8393
+ "threads_repost",
8394
+ "threads_delete_media"
8395
+ ];
8396
+ function threadsIntegration(config = {}) {
8397
+ const oauth = {
8398
+ provider: "threads",
8399
+ clientId: config.clientId ?? getEnv("THREADS_CLIENT_ID"),
8400
+ clientSecret: config.clientSecret ?? getEnv("THREADS_CLIENT_SECRET"),
8401
+ scopes: config.scopes ?? [...THREADS_SCOPES],
8402
+ optionalScopes: config.optionalScopes ?? [...THREADS_OPTIONAL_SCOPES],
8403
+ redirectUri: config.redirectUri,
8404
+ config: {
8405
+ authorization_endpoint: "https://threads.net/oauth/authorize",
8406
+ token_endpoint: "https://graph.threads.net/oauth/access_token",
8407
+ response_type: "code",
8408
+ grant_types_supported: ["authorization_code", "refresh_token"]
8409
+ }
8410
+ };
8411
+ return {
8412
+ id: "threads",
8413
+ name: "Threads",
8414
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/threads.png",
8415
+ description: "Publish Threads posts and manage media, replies, conversations, and keyword search",
8416
+ category: "Social Media",
8417
+ tools: [...THREADS_TOOLS],
8418
+ oauth,
8419
+ async onInit(_client) {
8420
+ logger66.debug("Threads integration initialized");
8421
+ },
8422
+ async onAfterConnect(_client) {
8423
+ logger66.debug("Threads integration connected");
8424
+ }
8425
+ };
8426
+ }
8427
+ // src/integrations/tiktok.ts
8428
+ init_logger();
8429
+ var logger67 = createLogger("TikTok");
8430
+ var TIKTOK_SCOPES = ["user.info.basic", "video.list"];
8431
+ var TIKTOK_TOOLS = [
8432
+ "tiktok_get_user_info",
8433
+ "tiktok_list_videos",
8434
+ "tiktok_query_videos"
8435
+ ];
8436
+ function tiktokIntegration(config = {}) {
8437
+ const oauth = {
8438
+ provider: "tiktok",
8439
+ clientId: config.clientId ?? getEnv("TIKTOK_CLIENT_ID"),
8440
+ clientSecret: config.clientSecret ?? getEnv("TIKTOK_CLIENT_SECRET"),
8441
+ scopes: config.scopes ?? [...TIKTOK_SCOPES],
8442
+ optionalScopes: config.optionalScopes,
8443
+ redirectUri: config.redirectUri,
8444
+ config: {
8445
+ authorization_endpoint: "https://www.tiktok.com/v2/auth/authorize/",
8446
+ token_endpoint: "https://open.tiktokapis.com/v2/oauth/token/",
8447
+ response_type: "code",
8448
+ grant_types_supported: ["authorization_code", "refresh_token"]
8449
+ }
8450
+ };
8451
+ return {
8452
+ id: "tiktok",
8453
+ name: "TikTok",
8454
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/tiktok.png",
8455
+ description: "Read TikTok user profile data and user-authorized video metadata",
8456
+ category: "Social Media",
8457
+ tools: [...TIKTOK_TOOLS],
8458
+ oauth,
8459
+ async onInit(_client) {
8460
+ logger67.debug("TikTok integration initialized");
8461
+ },
8462
+ async onAfterConnect(_client) {
8463
+ logger67.debug("TikTok integration connected");
8464
+ }
8465
+ };
8466
+ }
8467
+ // src/integrations/trello.ts
8468
+ init_logger();
8469
+ var logger68 = createLogger("Trello");
8470
+ var TRELLO_TOOLS = [
8471
+ "trello_get_member",
8472
+ "trello_list_boards",
8473
+ "trello_get_board",
8474
+ "trello_list_lists",
8475
+ "trello_get_list",
8476
+ "trello_list_cards",
8477
+ "trello_get_card",
8478
+ "trello_create_card",
8479
+ "trello_update_card",
8480
+ "trello_delete_card",
8481
+ "trello_add_card_comment",
8482
+ "trello_search"
8483
+ ];
8484
+ function encodeCredential(apiKey, memberToken) {
8485
+ const payload = JSON.stringify({ k: apiKey, t: memberToken });
8486
+ return `trello:${Buffer.from(payload).toString("base64url")}`;
8487
+ }
8488
+ function trelloIntegration(options = {}) {
8489
+ const apiKey = options.apiKey ?? getEnv("TRELLO_API_KEY");
8490
+ const memberToken = options.memberToken ?? getEnv("TRELLO_TOKEN");
8491
+ if (!apiKey || !memberToken) {
8492
+ throw new Error("trelloIntegration requires apiKey/memberToken or TRELLO_API_KEY/TRELLO_TOKEN");
8493
+ }
8494
+ return {
8495
+ id: "trello",
8496
+ name: "Trello",
8497
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/trello.png",
8498
+ description: "Manage Trello boards, lists, cards, comments, and search",
8499
+ category: "Productivity",
8500
+ tools: [...TRELLO_TOOLS],
8501
+ authType: "apiKey",
8502
+ getHeaders() {
8503
+ return { Authorization: `Bearer ${encodeCredential(apiKey, memberToken)}` };
8504
+ },
8505
+ async onInit(_client) {
8506
+ logger68.debug("Trello integration initialized");
8507
+ },
8508
+ async onAfterConnect(_client) {
8509
+ logger68.debug("Trello integration connected");
8510
+ }
8511
+ };
8512
+ }
8513
+ // src/integrations/typeform.ts
8514
+ init_logger();
8515
+ var logger69 = createLogger("Typeform");
8516
+ var TYPEFORM_SCOPES = [
8517
+ "offline",
8518
+ "accounts:read",
8519
+ "forms:read",
8520
+ "forms:write",
8521
+ "responses:read",
8522
+ "workspaces:read"
8523
+ ];
8524
+ var TYPEFORM_TOOLS = [
8525
+ "typeform_get_me",
8526
+ "typeform_list_workspaces",
8527
+ "typeform_get_workspace",
8528
+ "typeform_list_forms",
8529
+ "typeform_get_form",
8530
+ "typeform_create_form",
8531
+ "typeform_update_form",
8532
+ "typeform_delete_form",
8533
+ "typeform_list_responses"
8534
+ ];
8535
+ function typeformIntegration(config = {}) {
8536
+ const oauth = {
8537
+ provider: "typeform",
8538
+ clientId: config.clientId ?? getEnv("TYPEFORM_CLIENT_ID"),
8539
+ clientSecret: config.clientSecret ?? getEnv("TYPEFORM_CLIENT_SECRET"),
8540
+ scopes: config.scopes ?? [...TYPEFORM_SCOPES],
8541
+ optionalScopes: config.optionalScopes,
8542
+ redirectUri: config.redirectUri,
8543
+ config: {
8544
+ authorization_endpoint: "https://api.typeform.com/oauth/authorize",
8545
+ token_endpoint: "https://api.typeform.com/oauth/token",
8546
+ response_type: "code",
8547
+ grant_types_supported: ["authorization_code", "refresh_token"]
8548
+ }
8549
+ };
8550
+ return {
8551
+ id: "typeform",
8552
+ name: "Typeform",
8553
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/typeform.png",
8554
+ description: "Manage Typeform workspaces, forms, and responses",
8555
+ category: "Productivity",
8556
+ tools: [...TYPEFORM_TOOLS],
8557
+ oauth,
8558
+ async onInit(_client) {
8559
+ logger69.debug("Typeform integration initialized");
8560
+ },
8561
+ async onAfterConnect(_client) {
8562
+ logger69.debug("Typeform integration connected");
8563
+ }
8564
+ };
8565
+ }
8566
+ // src/integrations/xero.ts
8567
+ init_logger();
8568
+ var logger70 = createLogger("Xero");
8569
+ var XERO_SCOPES = [
8570
+ "openid",
8571
+ "profile",
8572
+ "email",
8573
+ "offline_access",
8574
+ "accounting.settings",
8575
+ "accounting.transactions",
8576
+ "accounting.contacts",
8577
+ "accounting.attachments"
8578
+ ];
8579
+ var XERO_TOOLS = [
8580
+ "xero_list_connections",
8581
+ "xero_get_organisation",
8582
+ "xero_list_accounts",
8583
+ "xero_list_contacts",
8584
+ "xero_get_contact",
8585
+ "xero_create_contact",
8586
+ "xero_list_invoices",
8587
+ "xero_get_invoice",
8588
+ "xero_create_invoice",
8589
+ "xero_list_bank_transactions"
8590
+ ];
8591
+ function xeroIntegration(config = {}) {
8592
+ const oauth = {
8593
+ provider: "xero",
8594
+ clientId: config.clientId ?? getEnv("XERO_CLIENT_ID"),
8595
+ clientSecret: config.clientSecret ?? getEnv("XERO_CLIENT_SECRET"),
8596
+ scopes: config.scopes ?? [...XERO_SCOPES],
8597
+ optionalScopes: config.optionalScopes,
8598
+ redirectUri: config.redirectUri,
8599
+ config: {
8600
+ authorization_endpoint: "https://login.xero.com/identity/connect/authorize",
8601
+ token_endpoint: "https://identity.xero.com/connect/token",
8602
+ response_type: "code",
8603
+ grant_types_supported: ["authorization_code", "refresh_token"]
8604
+ }
8605
+ };
8606
+ return {
8607
+ id: "xero",
8608
+ name: "Xero",
8609
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/xero.png",
8610
+ description: "Manage Xero organisations, accounts, contacts, invoices, and bank transactions",
8611
+ category: "Finance",
8612
+ tools: [...XERO_TOOLS],
8613
+ oauth,
8614
+ async onInit(_client) {
8615
+ logger70.debug("Xero integration initialized");
8616
+ },
8617
+ async onAfterConnect(_client) {
8618
+ logger70.debug("Xero integration connected");
8619
+ }
8620
+ };
8621
+ }
8622
+ // src/integrations/attio.ts
8623
+ init_logger();
8624
+ var logger71 = createLogger("Attio");
8625
+ var ATTIO_SCOPES = [
8626
+ "record_permission:read-write",
8627
+ "object_configuration:read",
8628
+ "user_management:read",
8629
+ "task:read"
8630
+ ];
8631
+ var ATTIO_TOOLS = [
8632
+ "attio_get_self",
8633
+ "attio_query_people",
8634
+ "attio_get_person",
8635
+ "attio_create_person",
8636
+ "attio_update_person",
8637
+ "attio_assert_person",
8638
+ "attio_query_companies",
8639
+ "attio_get_company",
8640
+ "attio_create_company",
8641
+ "attio_update_company",
8642
+ "attio_assert_company",
8643
+ "attio_list_tasks",
8644
+ "attio_get_task"
8645
+ ];
8646
+ function attioIntegration(config = {}) {
8647
+ const oauth = {
8648
+ provider: "attio",
8649
+ clientId: config.clientId ?? getEnv("ATTIO_CLIENT_ID"),
8650
+ clientSecret: config.clientSecret ?? getEnv("ATTIO_CLIENT_SECRET"),
8651
+ scopes: config.scopes ?? [...ATTIO_SCOPES],
8652
+ optionalScopes: config.optionalScopes,
8653
+ redirectUri: config.redirectUri,
8654
+ config: {
8655
+ authorization_endpoint: "https://app.attio.com/authorize",
8656
+ token_endpoint: "https://app.attio.com/oauth/token",
8657
+ response_type: "code",
8658
+ grant_types_supported: ["authorization_code", "refresh_token"]
8659
+ }
8660
+ };
8661
+ return {
8662
+ id: "attio",
8663
+ name: "Attio",
8664
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/attio.png",
8665
+ description: "Manage Attio people, companies, records, and tasks",
8666
+ category: "Business",
8667
+ tools: [...ATTIO_TOOLS],
8668
+ oauth,
8669
+ async onInit(_client) {
8670
+ logger71.debug("Attio integration initialized");
8671
+ },
8672
+ async onAfterConnect(_client) {
8673
+ logger71.debug("Attio integration connected");
8674
+ }
8675
+ };
8676
+ }
8677
+ // src/integrations/gchat.ts
8678
+ init_logger();
8679
+ var logger72 = createLogger("Google Chat");
8680
+ var GCHAT_SCOPES = [
8681
+ "https://www.googleapis.com/auth/chat.messages",
8682
+ "https://www.googleapis.com/auth/chat.spaces.readonly"
8683
+ ];
8684
+ var GCHAT_TOOLS = [
8685
+ "gchat_delete_message",
8686
+ "gchat_get_message",
8687
+ "gchat_get_space",
8688
+ "gchat_list_members",
8689
+ "gchat_list_messages",
8690
+ "gchat_list_spaces",
8691
+ "gchat_send_message",
8692
+ "gchat_update_message"
8693
+ ];
8694
+ function gchatIntegration(config = {}) {
8695
+ const oauth = {
8696
+ provider: "gchat",
8697
+ clientId: config.clientId ?? getEnv("GCHAT_CLIENT_ID"),
8698
+ clientSecret: config.clientSecret ?? getEnv("GCHAT_CLIENT_SECRET"),
8699
+ scopes: config.scopes ?? [...GCHAT_SCOPES],
8700
+ optionalScopes: config.optionalScopes,
8701
+ redirectUri: config.redirectUri,
8702
+ config: {
8703
+ authorization_endpoint: "https://accounts.google.com/o/oauth2/v2/auth",
8704
+ token_endpoint: "https://oauth2.googleapis.com/token",
8705
+ response_type: "code",
8706
+ grant_types_supported: ["authorization_code", "refresh_token"]
8707
+ }
8708
+ };
8709
+ return {
8710
+ id: "gchat",
8711
+ name: "Google Chat",
8712
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/google_chat.png",
8713
+ description: "List Google Chat spaces and manage messages and memberships",
8714
+ category: "Communication",
8715
+ tools: [...GCHAT_TOOLS],
8716
+ oauth,
8717
+ async onInit(_client) {
8718
+ logger72.debug("Google Chat integration initialized");
8719
+ },
8720
+ async onAfterConnect(_client) {
8721
+ logger72.debug("Google Chat integration connected");
8722
+ }
8723
+ };
8724
+ }
8725
+ // src/integrations/shopify.ts
8726
+ init_logger();
8727
+ var logger73 = createLogger("Shopify");
8728
+ var SHOPIFY_SCOPES = [
8729
+ "read_products",
8730
+ "write_products",
8731
+ "read_orders",
8732
+ "write_orders",
8733
+ "read_customers",
8734
+ "write_customers",
8735
+ "read_inventory",
8736
+ "write_inventory",
8737
+ "read_content",
8738
+ "write_content",
8739
+ "read_fulfillments",
8740
+ "write_fulfillments",
8741
+ "read_analytics"
8742
+ ];
8743
+ var SHOPIFY_TOOLS = [
8744
+ "shopify_admin_graphql",
8745
+ "shopify_rest_get",
8746
+ "shopify_rest_post",
8747
+ "shopify_rest_put",
8748
+ "shopify_rest_delete",
8749
+ "shopify_get_shop"
8750
+ ];
8751
+ function shopifyIntegration(config = {}) {
8752
+ const oauth = {
8753
+ provider: "shopify",
8754
+ clientId: config.clientId ?? getEnv("SHOPIFY_CLIENT_ID"),
8755
+ clientSecret: config.clientSecret ?? getEnv("SHOPIFY_CLIENT_SECRET"),
8756
+ scopes: config.scopes ?? [...SHOPIFY_SCOPES],
8757
+ optionalScopes: config.optionalScopes,
8758
+ redirectUri: config.redirectUri,
8759
+ config: {
8760
+ authorization_endpoint: "https://shopify.oauth.placeholder/admin/oauth/authorize",
8761
+ token_endpoint: "https://shopify.oauth.placeholder/admin/oauth/access_token",
8762
+ response_type: "code",
8763
+ grant_types_supported: ["authorization_code"],
8764
+ subdomain: config.shop ?? getEnv("SHOPIFY_SHOP")
8765
+ }
8766
+ };
8767
+ return {
8768
+ id: "shopify",
8769
+ name: "Shopify",
8770
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/shopify.png",
8771
+ description: "Route-complete Shopify Admin access through GraphQL and REST tools",
8772
+ category: "Business",
8773
+ tools: [...SHOPIFY_TOOLS],
8774
+ oauth,
8775
+ async onInit(_client) {
8776
+ logger73.debug("Shopify integration initialized");
8777
+ },
8778
+ async onAfterConnect(_client) {
8779
+ logger73.debug("Shopify integration connected");
8780
+ }
8781
+ };
8782
+ }
8783
+ // src/integrations/convex.ts
8784
+ init_logger();
8785
+ var logger74 = createLogger("Convex");
8786
+ var CONVEX_TOOLS = [
8787
+ "convex_management_token_details",
8788
+ "convex_management_list_projects",
8789
+ "convex_management_create_project",
8790
+ "convex_management_get_project",
8791
+ "convex_management_delete_project",
8792
+ "convex_management_list_deployments",
8793
+ "convex_management_list_team_deployments",
8794
+ "convex_management_get_deployment",
8795
+ "convex_management_create_deployment",
8796
+ "convex_management_update_deployment",
8797
+ "convex_management_delete_deployment",
8798
+ "convex_management_list_deployment_regions",
8799
+ "convex_management_list_deployment_classes",
8800
+ "convex_management_list_default_environment_variables",
8801
+ "convex_management_update_default_environment_variables",
8802
+ "convex_deployment_list_environment_variables",
8803
+ "convex_deployment_update_environment_variables"
8804
+ ];
8805
+ function convexIntegration(options = {}) {
8806
+ const accessToken = options.accessToken ?? getEnv("CONVEX_ACCESS_TOKEN");
8807
+ if (!accessToken) {
8808
+ throw new Error("convexIntegration requires accessToken or CONVEX_ACCESS_TOKEN");
8809
+ }
8810
+ return {
8811
+ id: "convex",
8812
+ name: "Convex",
8813
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/convex.png",
8814
+ description: "Manage Convex projects, deployments, regions, classes, and environment variables",
8815
+ category: "Infrastructure",
8816
+ tools: [...CONVEX_TOOLS],
8817
+ authType: "apiKey",
8818
+ getHeaders() {
8819
+ return { Authorization: `Bearer ${accessToken}` };
8820
+ },
8821
+ async onInit(_client) {
8822
+ logger74.debug("Convex integration initialized");
8823
+ },
8824
+ async onAfterConnect(_client) {
8825
+ logger74.debug("Convex integration connected");
8826
+ }
8827
+ };
8828
+ }
8829
+ // src/integrations/etoro.ts
8830
+ init_logger();
8831
+ var logger75 = createLogger("eToro");
8832
+ var ETORO_TOOLS = [
8833
+ "etoro_get_identity",
8834
+ "etoro_get_portfolio",
8835
+ "etoro_search_instruments",
8836
+ "etoro_get_instrument_rates",
8837
+ "etoro_list_trade_history",
8838
+ "etoro_list_watchlists"
8839
+ ];
8840
+ function etoroIntegration(options = {}) {
8841
+ const publicApiKey = options.publicApiKey ?? getEnv("ETORO_PUBLIC_API_KEY");
8842
+ const userKey = options.userKey ?? getEnv("ETORO_USER_KEY");
8843
+ if (!publicApiKey || !userKey) {
8844
+ throw new Error("etoroIntegration requires publicApiKey/userKey or ETORO_PUBLIC_API_KEY/ETORO_USER_KEY");
8845
+ }
8846
+ return {
8847
+ id: "etoro",
8848
+ name: "eToro",
8849
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/etoro.png",
8850
+ description: "Access eToro Public API identity, portfolio, market data, trade history, and watchlists",
8851
+ category: "Finance",
8852
+ tools: [...ETORO_TOOLS],
8853
+ authType: "apiKey",
8854
+ getHeaders() {
8855
+ return {
8856
+ "X-Api-Key": publicApiKey,
8857
+ "X-User-Key": userKey
8858
+ };
8859
+ },
8860
+ async onInit(_client) {
8861
+ logger75.debug("eToro integration initialized");
8862
+ },
8863
+ async onAfterConnect(_client) {
8864
+ logger75.debug("eToro integration connected");
8865
+ }
8866
+ };
8867
+ }
8868
+ // src/integrations/alpaca.ts
8869
+ init_logger();
8870
+ var logger76 = createLogger("Alpaca");
8871
+ var ALPACA_TOOLS = [
8872
+ "alpaca_get_account",
8873
+ "alpaca_list_positions",
8874
+ "alpaca_get_position",
8875
+ "alpaca_list_orders",
8876
+ "alpaca_get_order",
8877
+ "alpaca_create_order",
8878
+ "alpaca_cancel_order",
8879
+ "alpaca_cancel_all_orders",
8880
+ "alpaca_get_clock",
8881
+ "alpaca_get_calendar",
8882
+ "alpaca_list_assets",
8883
+ "alpaca_get_asset",
8884
+ "alpaca_get_portfolio_history"
8885
+ ];
8886
+ function alpacaIntegration(options = {}) {
8887
+ const apiKeyId = options.apiKeyId ?? getEnv("ALPACA_API_KEY_ID");
8888
+ const apiSecretKey = options.apiSecretKey ?? getEnv("ALPACA_API_SECRET_KEY");
8889
+ if (!apiKeyId || !apiSecretKey) {
8890
+ throw new Error("alpacaIntegration requires apiKeyId and apiSecretKey (or ALPACA_API_KEY_ID and ALPACA_API_SECRET_KEY)");
8891
+ }
8892
+ const environment = options.environment ?? "paper";
8893
+ return {
8894
+ id: "alpaca",
8895
+ name: "Alpaca",
8896
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/alpaca.png",
8897
+ description: "Trade US equities and crypto with Alpaca: account, orders, positions, clock, and assets",
8898
+ category: "Finance",
8899
+ tools: [...ALPACA_TOOLS],
8900
+ authType: "apiKey",
8901
+ getHeaders() {
8902
+ const headers = {
8903
+ "APCA-API-KEY-ID": apiKeyId,
8904
+ "APCA-API-SECRET-KEY": apiSecretKey
8905
+ };
8906
+ if (environment === "live") {
8907
+ headers["X-Integrate-Alpaca-Environment"] = "live";
8908
+ }
8909
+ return headers;
8910
+ },
8911
+ async onInit(_client) {
8912
+ logger76.debug("Alpaca integration initialized");
8913
+ },
8914
+ async onAfterConnect(_client) {
8915
+ logger76.debug("Alpaca integration connected");
8916
+ }
8917
+ };
8918
+ }
8919
+ // src/integrations/neon.ts
8920
+ init_logger();
8921
+ var logger77 = createLogger("Neon");
8922
+ var NEON_TOOLS = [
8923
+ "neon_list_api_keys",
8924
+ "neon_create_api_key",
8925
+ "neon_revoke_api_key",
8926
+ "neon_list_organizations",
8927
+ "neon_list_projects",
8928
+ "neon_list_shared_projects",
8929
+ "neon_create_project",
8930
+ "neon_get_project",
8931
+ "neon_update_project",
8932
+ "neon_delete_project",
8933
+ "neon_recover_project",
8934
+ "neon_list_branches",
8935
+ "neon_create_branch",
8936
+ "neon_get_branch",
8937
+ "neon_delete_branch",
8938
+ "neon_list_operations",
8939
+ "neon_get_operation",
8940
+ "neon_get_connection_uri"
8941
+ ];
8942
+ function neonIntegration(options = {}) {
8943
+ const apiKey = options.apiKey ?? getEnv("NEON_API_KEY");
8944
+ if (!apiKey) {
8945
+ throw new Error("neonIntegration requires apiKey or NEON_API_KEY environment variable");
8946
+ }
8947
+ return {
8948
+ id: "neon",
8949
+ name: "Neon",
8950
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/neon.png",
8951
+ description: "Manage Neon Postgres projects, branches, API keys, and connection strings",
8952
+ category: "Infrastructure",
8953
+ tools: [...NEON_TOOLS],
8954
+ authType: "apiKey",
8955
+ getHeaders() {
8956
+ return {
8957
+ Authorization: `Bearer ${apiKey}`
8958
+ };
8959
+ },
8960
+ async onInit(_client) {
8961
+ logger77.debug("Neon integration initialized");
6921
8962
  },
6922
8963
  async onAfterConnect(_client) {
6923
- logger42.debug("Jira integration connected");
8964
+ logger77.debug("Neon integration connected");
6924
8965
  }
6925
8966
  };
6926
8967
  }
@@ -7028,6 +9069,746 @@ function mercuryIntegration(options) {
7028
9069
  }
7029
9070
  };
7030
9071
  }
9072
+ // src/integrations/aws.ts
9073
+ init_logger();
9074
+ var logger78 = createLogger("AWS");
9075
+ var AWS_TOOLS = [
9076
+ "aws_sts_get_caller_identity",
9077
+ "aws_ec2_describe_regions",
9078
+ "aws_ec2_describe_instances",
9079
+ "aws_s3_list_buckets",
9080
+ "aws_lambda_list_functions",
9081
+ "aws_cloudformation_list_stacks",
9082
+ "aws_iam_list_account_aliases"
9083
+ ];
9084
+ function resolveCredentials(opts) {
9085
+ const c = opts.credentials;
9086
+ const accessKeyId = c?.accessKeyId ?? getEnv("AWS_ACCESS_KEY_ID");
9087
+ const secretAccessKey = c?.secretAccessKey ?? getEnv("AWS_SECRET_ACCESS_KEY");
9088
+ if (!accessKeyId || !secretAccessKey) {
9089
+ throw new Error("awsIntegration requires accessKeyId and secretAccessKey (or AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY)");
9090
+ }
9091
+ return {
9092
+ accessKeyId,
9093
+ secretAccessKey,
9094
+ sessionToken: c?.sessionToken ?? getEnv("AWS_SESSION_TOKEN"),
9095
+ region: c?.region ?? getEnv("AWS_REGION") ?? getEnv("AWS_DEFAULT_REGION")
9096
+ };
9097
+ }
9098
+ function encodeAwsCredentialsPayload(c) {
9099
+ const o = {
9100
+ accessKeyId: c.accessKeyId,
9101
+ secretAccessKey: c.secretAccessKey
9102
+ };
9103
+ if (c.sessionToken) {
9104
+ o.sessionToken = c.sessionToken;
9105
+ }
9106
+ if (c.region) {
9107
+ o.region = c.region;
9108
+ }
9109
+ return JSON.stringify(o);
9110
+ }
9111
+ function awsIntegration(options = {}) {
9112
+ const creds = resolveCredentials(options);
9113
+ return {
9114
+ id: "aws",
9115
+ name: "Amazon Web Services",
9116
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/aws.png",
9117
+ description: "Query AWS accounts and resources using SigV4 (control-plane read APIs: STS, EC2, S3, Lambda, CloudFormation, IAM).",
9118
+ category: "Infrastructure",
9119
+ tools: [...AWS_TOOLS],
9120
+ authType: "apiKey",
9121
+ getHeaders() {
9122
+ return {
9123
+ Authorization: `Bearer ${encodeAwsCredentialsPayload(creds)}`
9124
+ };
9125
+ },
9126
+ async onInit(_client) {
9127
+ logger78.debug("AWS integration initialized");
9128
+ },
9129
+ async onAfterConnect(_client) {
9130
+ logger78.debug("AWS integration connected");
9131
+ }
9132
+ };
9133
+ }
9134
+ // src/integrations/wix.ts
9135
+ init_logger();
9136
+ var logger79 = createLogger("Wix");
9137
+ var WIX_TOOLS = [
9138
+ "wix_query_products",
9139
+ "wix_get_product",
9140
+ "wix_create_product",
9141
+ "wix_update_product",
9142
+ "wix_search_orders",
9143
+ "wix_get_order"
9144
+ ];
9145
+ function wixIntegration(options = {}) {
9146
+ const apiKey = options.apiKey ?? getEnv("WIX_API_KEY");
9147
+ const siteId = options.siteId ?? getEnv("WIX_SITE_ID");
9148
+ if (!apiKey) {
9149
+ throw new Error("wixIntegration requires apiKey or WIX_API_KEY environment variable");
9150
+ }
9151
+ if (!siteId) {
9152
+ throw new Error("wixIntegration requires siteId or WIX_SITE_ID environment variable");
9153
+ }
9154
+ return {
9155
+ id: "wix",
9156
+ name: "Wix",
9157
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/wix.png",
9158
+ description: "Manage Wix site stores, products, and e-commerce orders via REST",
9159
+ category: "Business",
9160
+ tools: [...WIX_TOOLS],
9161
+ authType: "apiKey",
9162
+ getHeaders() {
9163
+ return {
9164
+ Authorization: apiKey,
9165
+ "wix-site-id": siteId
9166
+ };
9167
+ },
9168
+ async onInit(_client) {
9169
+ logger79.debug("Wix integration initialized");
9170
+ },
9171
+ async onAfterConnect(_client) {
9172
+ logger79.debug("Wix integration connected");
9173
+ }
9174
+ };
9175
+ }
9176
+ // src/integrations/mailchimp.ts
9177
+ var MAILCHIMP_TOOLS = [
9178
+ "mailchimp_ping",
9179
+ "mailchimp_list_audiences",
9180
+ "mailchimp_get_audience",
9181
+ "mailchimp_list_members",
9182
+ "mailchimp_get_member",
9183
+ "mailchimp_add_or_update_member",
9184
+ "mailchimp_archive_member",
9185
+ "mailchimp_list_campaigns"
9186
+ ];
9187
+ function mailchimpIntegration(config = {}) {
9188
+ const oauth = {
9189
+ provider: "mailchimp",
9190
+ clientId: config.clientId ?? getEnv("MAILCHIMP_CLIENT_ID"),
9191
+ clientSecret: config.clientSecret ?? getEnv("MAILCHIMP_CLIENT_SECRET"),
9192
+ scopes: config.scopes ?? [],
9193
+ optionalScopes: config.optionalScopes,
9194
+ redirectUri: config.redirectUri
9195
+ };
9196
+ return {
9197
+ id: "mailchimp",
9198
+ name: "Mailchimp",
9199
+ tools: [...MAILCHIMP_TOOLS],
9200
+ oauth
9201
+ };
9202
+ }
9203
+ // src/integrations/monday.ts
9204
+ init_logger();
9205
+ var logger80 = createLogger("Monday");
9206
+ var MONDAY_TOOLS = [
9207
+ "monday_me",
9208
+ "monday_list_workspaces",
9209
+ "monday_list_boards",
9210
+ "monday_get_board",
9211
+ "monday_list_board_items",
9212
+ "monday_next_items_page",
9213
+ "monday_get_items",
9214
+ "monday_create_item",
9215
+ "monday_update_item_columns",
9216
+ "monday_create_update",
9217
+ "monday_delete_item"
9218
+ ];
9219
+ function mondayIntegration(config = {}) {
9220
+ const oauth = {
9221
+ provider: "monday",
9222
+ clientId: config.clientId ?? getEnv("MONDAY_CLIENT_ID"),
9223
+ clientSecret: config.clientSecret ?? getEnv("MONDAY_CLIENT_SECRET"),
9224
+ scopes: config.scopes ?? [],
9225
+ redirectUri: config.redirectUri,
9226
+ config: {
9227
+ authorization_endpoint: "https://auth.monday.com/oauth2/authorize",
9228
+ token_endpoint: "https://auth.monday.com/oauth2/token",
9229
+ response_type: "code",
9230
+ grant_types_supported: ["authorization_code"]
9231
+ }
9232
+ };
9233
+ return {
9234
+ id: "monday",
9235
+ name: "Monday.com",
9236
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/monday.png",
9237
+ description: "Manage Monday.com boards, items, columns, and updates",
9238
+ category: "Productivity",
9239
+ tools: [...MONDAY_TOOLS],
9240
+ oauth,
9241
+ async onInit(_client) {
9242
+ logger80.debug("Monday.com integration initialized");
9243
+ },
9244
+ async onAfterConnect(_client) {
9245
+ logger80.debug("Monday.com integration connected");
9246
+ }
9247
+ };
9248
+ }
9249
+ // src/integrations/binance.ts
9250
+ init_logger();
9251
+ var logger81 = createLogger("Binance");
9252
+ var BINANCE_TOOLS = [
9253
+ "binance_ping",
9254
+ "binance_get_server_time",
9255
+ "binance_get_exchange_info",
9256
+ "binance_get_ticker_price",
9257
+ "binance_get_ticker_24hr",
9258
+ "binance_get_order_book",
9259
+ "binance_get_recent_trades",
9260
+ "binance_get_klines",
9261
+ "binance_get_account",
9262
+ "binance_get_open_orders",
9263
+ "binance_get_all_orders",
9264
+ "binance_get_my_trades"
9265
+ ];
9266
+ function normalizeBaseUrl(url) {
9267
+ const u = (url ?? "").trim().replace(/\/+$/, "");
9268
+ return u || "https://api.binance.com";
9269
+ }
9270
+ function binanceIntegration(options = {}) {
9271
+ const apiKey = options.apiKey ?? getEnv("BINANCE_API_KEY");
9272
+ const secret = options.secret ?? getEnv("BINANCE_SECRET_KEY");
9273
+ if (!apiKey || !secret) {
9274
+ throw new Error("binanceIntegration requires apiKey and secret (or BINANCE_API_KEY and BINANCE_SECRET_KEY environment variables)");
9275
+ }
9276
+ const baseUrl = normalizeBaseUrl(options.baseUrl);
9277
+ return {
9278
+ id: "binance",
9279
+ name: "Binance",
9280
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/binance.png",
9281
+ description: "Read Binance Spot market data and account information with API keys scoped to reading only",
9282
+ category: "Finance",
9283
+ tools: [...BINANCE_TOOLS],
9284
+ authType: "apiKey",
9285
+ getHeaders() {
9286
+ return {
9287
+ Authorization: `Bearer ${apiKey}`,
9288
+ "X-MBX-APIKEY": apiKey,
9289
+ "X-Binance-Api-Secret": secret,
9290
+ "X-Binance-Base-Url": baseUrl
9291
+ };
9292
+ },
9293
+ async onInit(_client) {
9294
+ logger81.debug("Binance integration initialized");
9295
+ },
9296
+ async onAfterConnect(_client) {
9297
+ logger81.debug("Binance integration connected");
9298
+ }
9299
+ };
9300
+ }
9301
+ // src/integrations/canva.ts
9302
+ init_logger();
9303
+ var logger82 = createLogger("Canva");
9304
+ var CANVA_TOOLS = [
9305
+ "canva_get_me",
9306
+ "canva_get_profile",
9307
+ "canva_list_designs",
9308
+ "canva_get_design",
9309
+ "canva_get_design_export_formats",
9310
+ "canva_create_design",
9311
+ "canva_get_folder",
9312
+ "canva_list_folder_items",
9313
+ "canva_create_folder",
9314
+ "canva_update_folder",
9315
+ "canva_delete_folder",
9316
+ "canva_list_brand_templates",
9317
+ "canva_get_brand_template",
9318
+ "canva_create_export_job",
9319
+ "canva_get_export_job"
9320
+ ];
9321
+ function canvaIntegration(config = {}) {
9322
+ const oauth = {
9323
+ provider: "canva",
9324
+ clientId: config.clientId ?? getEnv("CANVA_CLIENT_ID"),
9325
+ clientSecret: config.clientSecret ?? getEnv("CANVA_CLIENT_SECRET"),
9326
+ scopes: config.scopes,
9327
+ optionalScopes: config.optionalScopes,
9328
+ redirectUri: config.redirectUri,
9329
+ config: { ...config }
9330
+ };
9331
+ return {
9332
+ id: "canva",
9333
+ name: "Canva",
9334
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/canva.png",
9335
+ description: "List and create Canva designs, manage folders, and export assets",
9336
+ category: "Productivity",
9337
+ tools: [...CANVA_TOOLS],
9338
+ oauth,
9339
+ async onInit(_client) {
9340
+ logger82.debug("Canva integration initialized");
9341
+ },
9342
+ async onAfterConnect(_client) {
9343
+ logger82.debug("Canva integration connected");
9344
+ }
9345
+ };
9346
+ }
9347
+ // src/integrations/clerk.ts
9348
+ init_logger();
9349
+ var logger83 = createLogger("Clerk");
9350
+ var CLERK_TOOLS = [
9351
+ "clerk_list_users",
9352
+ "clerk_get_user",
9353
+ "clerk_create_user",
9354
+ "clerk_update_user",
9355
+ "clerk_delete_user",
9356
+ "clerk_list_organizations",
9357
+ "clerk_get_organization",
9358
+ "clerk_create_organization",
9359
+ "clerk_update_organization",
9360
+ "clerk_delete_organization",
9361
+ "clerk_list_sessions",
9362
+ "clerk_get_session",
9363
+ "clerk_revoke_session"
9364
+ ];
9365
+ function clerkIntegration(options = {}) {
9366
+ const secretKey = options.secretKey ?? getEnv("CLERK_SECRET_KEY");
9367
+ if (!secretKey) {
9368
+ throw new Error("clerkIntegration requires secretKey or CLERK_SECRET_KEY environment variable");
9369
+ }
9370
+ return {
9371
+ id: "clerk",
9372
+ name: "Clerk",
9373
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/clerk.png",
9374
+ description: "Manage Clerk users, organizations, and sessions via the Backend API",
9375
+ category: "Business",
9376
+ tools: [...CLERK_TOOLS],
9377
+ authType: "apiKey",
9378
+ getHeaders() {
9379
+ return {
9380
+ Authorization: `Bearer ${secretKey}`
9381
+ };
9382
+ },
9383
+ async onInit(_client) {
9384
+ logger83.debug("Clerk integration initialized");
9385
+ },
9386
+ async onAfterConnect(_client) {
9387
+ logger83.debug("Clerk integration connected");
9388
+ }
9389
+ };
9390
+ }
9391
+ // src/integrations/clickup.ts
9392
+ init_logger();
9393
+ var logger84 = createLogger("ClickUp");
9394
+ var CLICKUP_TOOLS = [
9395
+ "clickup_get_authorized_user",
9396
+ "clickup_list_teams",
9397
+ "clickup_list_spaces",
9398
+ "clickup_list_folders",
9399
+ "clickup_list_lists_in_folder",
9400
+ "clickup_list_folderless_lists",
9401
+ "clickup_list_tasks",
9402
+ "clickup_get_task",
9403
+ "clickup_create_task",
9404
+ "clickup_update_task",
9405
+ "clickup_delete_task",
9406
+ "clickup_list_task_comments",
9407
+ "clickup_create_task_comment"
9408
+ ];
9409
+ function clickupIntegration(config = {}) {
9410
+ const oauth = {
9411
+ provider: "clickup",
9412
+ clientId: config.clientId ?? getEnv("CLICKUP_CLIENT_ID"),
9413
+ clientSecret: config.clientSecret ?? getEnv("CLICKUP_CLIENT_SECRET"),
9414
+ scopes: config.scopes ?? [],
9415
+ optionalScopes: config.optionalScopes,
9416
+ redirectUri: config.redirectUri,
9417
+ config: {
9418
+ authorization_endpoint: "https://app.clickup.com/api",
9419
+ token_endpoint: "https://api.clickup.com/api/v2/oauth/token"
9420
+ }
9421
+ };
9422
+ return {
9423
+ id: "clickup",
9424
+ name: "ClickUp",
9425
+ tools: [...CLICKUP_TOOLS],
9426
+ oauth,
9427
+ async onInit(_client) {
9428
+ logger84.debug("ClickUp integration initialized");
9429
+ },
9430
+ async onAfterConnect(_client) {
9431
+ logger84.debug("ClickUp integration connected");
9432
+ }
9433
+ };
9434
+ }
9435
+ // src/integrations/cloudflare.ts
9436
+ init_logger();
9437
+ var logger85 = createLogger("Cloudflare");
9438
+ var CLOUDFLARE_TOOLS = [
9439
+ "cloudflare_verify_token",
9440
+ "cloudflare_get_user",
9441
+ "cloudflare_list_accounts",
9442
+ "cloudflare_get_account",
9443
+ "cloudflare_list_zones",
9444
+ "cloudflare_get_zone",
9445
+ "cloudflare_list_dns_records",
9446
+ "cloudflare_create_dns_record",
9447
+ "cloudflare_update_dns_record",
9448
+ "cloudflare_delete_dns_record",
9449
+ "cloudflare_purge_zone_cache",
9450
+ "cloudflare_list_worker_scripts"
9451
+ ];
9452
+ var DEFAULT_SCOPES = [
9453
+ "account:read",
9454
+ "user:read",
9455
+ "zone:read",
9456
+ "workers:read",
9457
+ "workers:write",
9458
+ "pages:write",
9459
+ "offline_access"
9460
+ ];
9461
+ function cloudflareIntegration(config = {}) {
9462
+ const apiToken = config.apiToken ?? getEnv("CLOUDFLARE_API_TOKEN");
9463
+ if (apiToken && apiToken.trim() !== "") {
9464
+ return {
9465
+ id: "cloudflare",
9466
+ name: "Cloudflare",
9467
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/cloudflare.png",
9468
+ description: "Manage Cloudflare zones, DNS, cache, and Workers via the Cloudflare API",
9469
+ category: "Infrastructure",
9470
+ tools: [...CLOUDFLARE_TOOLS],
9471
+ authType: "apiKey",
9472
+ getHeaders() {
9473
+ return { Authorization: `Bearer ${apiToken.trim()}` };
9474
+ },
9475
+ async onInit(_client) {
9476
+ logger85.debug("Cloudflare integration initialized (API token)");
9477
+ },
9478
+ async onAfterConnect(_client) {
9479
+ logger85.debug("Cloudflare integration connected");
9480
+ }
9481
+ };
9482
+ }
9483
+ const oauth = {
9484
+ provider: "cloudflare",
9485
+ clientId: config.clientId ?? getEnv("CLOUDFLARE_CLIENT_ID"),
9486
+ clientSecret: config.clientSecret ?? getEnv("CLOUDFLARE_CLIENT_SECRET"),
9487
+ scopes: config.scopes?.length ? config.scopes : [...DEFAULT_SCOPES],
9488
+ redirectUri: config.redirectUri,
9489
+ config: {
9490
+ authorization_endpoint: "https://dash.cloudflare.com/oauth2/auth",
9491
+ token_endpoint: "https://dash.cloudflare.com/oauth2/token",
9492
+ response_type: "code",
9493
+ grant_types_supported: ["authorization_code", "refresh_token"]
9494
+ }
9495
+ };
9496
+ return {
9497
+ id: "cloudflare",
9498
+ name: "Cloudflare",
9499
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/cloudflare.png",
9500
+ description: "Manage Cloudflare zones, DNS, cache, and Workers via the Cloudflare API",
9501
+ category: "Infrastructure",
9502
+ tools: [...CLOUDFLARE_TOOLS],
9503
+ oauth,
9504
+ async onInit(_client) {
9505
+ logger85.debug("Cloudflare integration initialized (OAuth)");
9506
+ },
9507
+ async onAfterConnect(_client) {
9508
+ logger85.debug("Cloudflare integration connected");
9509
+ }
9510
+ };
9511
+ }
9512
+ // src/integrations/instagram.ts
9513
+ init_logger();
9514
+ var logger86 = createLogger("Instagram");
9515
+ var INSTAGRAM_SCOPES = [
9516
+ "pages_show_list",
9517
+ "pages_read_engagement",
9518
+ "instagram_basic",
9519
+ "instagram_manage_insights",
9520
+ "instagram_manage_comments",
9521
+ "instagram_content_publish"
9522
+ ];
9523
+ var INSTAGRAM_TOOLS = [
9524
+ "instagram_list_pages",
9525
+ "instagram_get_profile",
9526
+ "instagram_list_media",
9527
+ "instagram_get_media",
9528
+ "instagram_list_comments",
9529
+ "instagram_reply_comment",
9530
+ "instagram_delete_comment",
9531
+ "instagram_hide_comment",
9532
+ "instagram_get_media_insights",
9533
+ "instagram_get_user_insights",
9534
+ "instagram_create_media_container",
9535
+ "instagram_publish_media",
9536
+ "instagram_list_stories",
9537
+ "instagram_list_tagged_media"
9538
+ ];
9539
+ function instagramIntegration(config = {}) {
9540
+ const oauth = {
9541
+ provider: "instagram",
9542
+ clientId: config.clientId ?? getEnv("INSTAGRAM_CLIENT_ID"),
9543
+ clientSecret: config.clientSecret ?? getEnv("INSTAGRAM_CLIENT_SECRET"),
9544
+ scopes: config.scopes ?? [...INSTAGRAM_SCOPES],
9545
+ optionalScopes: config.optionalScopes,
9546
+ redirectUri: config.redirectUri,
9547
+ config: {
9548
+ authorization_endpoint: "https://www.facebook.com/v21.0/dialog/oauth",
9549
+ token_endpoint: "https://graph.facebook.com/v21.0/oauth/access_token",
9550
+ response_type: "code",
9551
+ grant_types_supported: ["authorization_code", "refresh_token"],
9552
+ ...config
9553
+ }
9554
+ };
9555
+ return {
9556
+ id: "instagram",
9557
+ name: "Instagram",
9558
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/instagram.png",
9559
+ description: "Instagram Graph API for professional accounts — pages, media, comments, insights, stories, and publishing.",
9560
+ category: "Social Media",
9561
+ tools: [...INSTAGRAM_TOOLS],
9562
+ oauth,
9563
+ async onInit(_client) {
9564
+ logger86.debug("Instagram integration initialized");
9565
+ },
9566
+ async onAfterConnect(_client) {
9567
+ logger86.debug("Instagram integration connected");
9568
+ }
9569
+ };
9570
+ }
9571
+ // src/integrations/facebook.ts
9572
+ init_logger();
9573
+ var logger87 = createLogger("Facebook");
9574
+ var FACEBOOK_SCOPES = [
9575
+ "public_profile",
9576
+ "email",
9577
+ "pages_show_list",
9578
+ "pages_read_engagement",
9579
+ "pages_manage_posts",
9580
+ "pages_read_user_content",
9581
+ "pages_manage_engagement"
9582
+ ];
9583
+ var FACEBOOK_TOOLS = [
9584
+ "facebook_get_me",
9585
+ "facebook_list_pages",
9586
+ "facebook_list_page_posts",
9587
+ "facebook_get_object",
9588
+ "facebook_create_page_post",
9589
+ "facebook_delete_object",
9590
+ "facebook_list_comments",
9591
+ "facebook_publish_comment",
9592
+ "facebook_get_insights",
9593
+ "facebook_set_comment_visibility",
9594
+ "facebook_like_object"
9595
+ ];
9596
+ function facebookIntegration(config = {}) {
9597
+ const oauth = {
9598
+ provider: "facebook",
9599
+ clientId: config.clientId ?? getEnv("FACEBOOK_CLIENT_ID"),
9600
+ clientSecret: config.clientSecret ?? getEnv("FACEBOOK_CLIENT_SECRET"),
9601
+ scopes: config.scopes ?? [...FACEBOOK_SCOPES],
9602
+ redirectUri: config.redirectUri,
9603
+ config: {
9604
+ authorization_endpoint: "https://www.facebook.com/v18.0/dialog/oauth",
9605
+ token_endpoint: "https://graph.facebook.com/v18.0/oauth/access_token",
9606
+ response_type: "code",
9607
+ grant_types_supported: ["authorization_code"]
9608
+ }
9609
+ };
9610
+ return {
9611
+ id: "facebook",
9612
+ name: "Facebook",
9613
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/facebook.png",
9614
+ description: "Manage Facebook Page posts, comments, reactions, and insights via the Graph API",
9615
+ category: "Social Media",
9616
+ tools: [...FACEBOOK_TOOLS],
9617
+ oauth,
9618
+ async onInit(_client) {
9619
+ logger87.debug("Facebook integration initialized");
9620
+ },
9621
+ async onAfterConnect(_client) {
9622
+ logger87.debug("Facebook integration connected");
9623
+ }
9624
+ };
9625
+ }
9626
+ // src/integrations/ga4.ts
9627
+ var GA4_TOOLS = [
9628
+ "ga4_batch_run_reports",
9629
+ "ga4_get_property",
9630
+ "ga4_list_account_summaries",
9631
+ "ga4_run_realtime_report",
9632
+ "ga4_run_report"
9633
+ ];
9634
+ function ga4Integration(config = {}) {
9635
+ const oauth = {
9636
+ provider: "ga4",
9637
+ clientId: config.clientId ?? getEnv("GA4_CLIENT_ID"),
9638
+ clientSecret: config.clientSecret ?? getEnv("GA4_CLIENT_SECRET"),
9639
+ scopes: config.scopes ?? ["https://www.googleapis.com/auth/analytics.readonly"],
9640
+ optionalScopes: config.optionalScopes,
9641
+ redirectUri: config.redirectUri
9642
+ };
9643
+ return {
9644
+ id: "ga4",
9645
+ name: "Google Analytics 4",
9646
+ tools: [...GA4_TOOLS],
9647
+ oauth
9648
+ };
9649
+ }
9650
+ // src/integrations/resend.ts
9651
+ init_logger();
9652
+ var logger88 = createLogger("Resend");
9653
+ var RESEND_TOOLS = [
9654
+ "resend_list_domains",
9655
+ "resend_get_domain",
9656
+ "resend_create_domain",
9657
+ "resend_delete_domain",
9658
+ "resend_verify_domain",
9659
+ "resend_send_email",
9660
+ "resend_get_email",
9661
+ "resend_cancel_scheduled_email"
9662
+ ];
9663
+ function resendIntegration(options = {}) {
9664
+ const apiKey = options.apiKey ?? getEnv("RESEND_API_KEY");
9665
+ if (!apiKey) {
9666
+ throw new Error("resendIntegration requires apiKey or RESEND_API_KEY");
9667
+ }
9668
+ return {
9669
+ id: "resend",
9670
+ name: "Resend",
9671
+ tools: [...RESEND_TOOLS],
9672
+ authType: "apiKey",
9673
+ getHeaders() {
9674
+ return { Authorization: `Bearer ${apiKey}` };
9675
+ },
9676
+ async onInit(_client) {
9677
+ logger88.debug("Resend integration initialized");
9678
+ },
9679
+ async onAfterConnect(_client) {
9680
+ logger88.debug("Resend integration connected");
9681
+ }
9682
+ };
9683
+ }
9684
+ // src/integrations/tldraw.ts
9685
+ var TLDRAW_TOOLS = [
9686
+ "tldraw_unfurl_url",
9687
+ "tldraw_create_room_snapshot",
9688
+ "tldraw_get_room_snapshot",
9689
+ "tldraw_get_published_snapshot",
9690
+ "tldraw_get_readonly_slug"
9691
+ ];
9692
+ function tldrawIntegration(options = {}) {
9693
+ const apiKey = options.apiKey ?? getEnv("TLDRAW_API_KEY");
9694
+ return {
9695
+ id: "tldraw",
9696
+ name: "tldraw",
9697
+ tools: [...TLDRAW_TOOLS],
9698
+ authType: apiKey ? "apiKey" : undefined,
9699
+ getHeaders: apiKey ? () => ({ Authorization: `Bearer ${apiKey}` }) : undefined
9700
+ };
9701
+ }
9702
+ // src/integrations/workday.ts
9703
+ init_logger();
9704
+ var logger89 = createLogger("Workday");
9705
+ var WORKDAY_TOOLS = [
9706
+ "workday_list_workers",
9707
+ "workday_get_worker"
9708
+ ];
9709
+ function workdayIntegration(config = {}) {
9710
+ const oauth = {
9711
+ provider: "workday",
9712
+ clientId: config.clientId ?? getEnv("WORKDAY_CLIENT_ID"),
9713
+ clientSecret: config.clientSecret ?? getEnv("WORKDAY_CLIENT_SECRET"),
9714
+ scopes: config.scopes,
9715
+ redirectUri: config.redirectUri,
9716
+ config: {
9717
+ subdomain: config.subdomain ?? getEnv("WORKDAY_TENANT_DESCRIPTOR")
9718
+ }
9719
+ };
9720
+ return {
9721
+ id: "workday",
9722
+ name: "Workday",
9723
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/workday.png",
9724
+ description: "Query Workday workers via the tenant REST API",
9725
+ category: "Business",
9726
+ tools: [...WORKDAY_TOOLS],
9727
+ oauth,
9728
+ async onInit(_client) {
9729
+ logger89.debug("Workday integration initialized");
9730
+ },
9731
+ async onAfterConnect(_client) {
9732
+ logger89.debug("Workday integration connected");
9733
+ }
9734
+ };
9735
+ }
9736
+ // src/integrations/workos.ts
9737
+ init_logger();
9738
+ var logger90 = createLogger("WorkOS");
9739
+ var WORKOS_TOOLS = [
9740
+ "workos_list_organizations",
9741
+ "workos_get_organization",
9742
+ "workos_create_organization",
9743
+ "workos_update_organization",
9744
+ "workos_list_users",
9745
+ "workos_get_user",
9746
+ "workos_list_organization_memberships",
9747
+ "workos_list_directories",
9748
+ "workos_get_directory",
9749
+ "workos_list_directory_users",
9750
+ "workos_get_directory_user"
9751
+ ];
9752
+ function workosIntegration(options = {}) {
9753
+ const apiKey = options.apiKey ?? getEnv("WORKOS_API_KEY");
9754
+ if (!apiKey) {
9755
+ throw new Error("workosIntegration requires apiKey or WORKOS_API_KEY environment variable");
9756
+ }
9757
+ return {
9758
+ id: "workos",
9759
+ name: "WorkOS",
9760
+ logoUrl: "https://wdvtnli2jn3texa6.public.blob.vercel-storage.com/workos.png",
9761
+ description: "Manage WorkOS organizations, AuthKit users, memberships, and directory sync",
9762
+ category: "Infrastructure",
9763
+ tools: [...WORKOS_TOOLS],
9764
+ authType: "apiKey",
9765
+ getHeaders() {
9766
+ return {
9767
+ Authorization: `Bearer ${apiKey}`
9768
+ };
9769
+ },
9770
+ async onInit(_client) {
9771
+ logger90.debug("WorkOS integration initialized");
9772
+ },
9773
+ async onAfterConnect(_client) {
9774
+ logger90.debug("WorkOS integration connected");
9775
+ }
9776
+ };
9777
+ }
9778
+ // src/integrations/planetscale.ts
9779
+ var PLANETSCALE_TOOLS = [
9780
+ "planetscale_get_current_user",
9781
+ "planetscale_list_organizations",
9782
+ "planetscale_get_organization",
9783
+ "planetscale_list_databases",
9784
+ "planetscale_get_database",
9785
+ "planetscale_list_branches",
9786
+ "planetscale_get_branch",
9787
+ "planetscale_list_deploy_requests",
9788
+ "planetscale_get_deploy_request"
9789
+ ];
9790
+ function planetscaleIntegration(config = {}) {
9791
+ const oauth = {
9792
+ provider: "planetscale",
9793
+ clientId: config.clientId ?? getEnv("PLANETSCALE_CLIENT_ID"),
9794
+ clientSecret: config.clientSecret ?? getEnv("PLANETSCALE_CLIENT_SECRET"),
9795
+ scopes: config.scopes ?? ["database:read_branches", "database:read_deploy_requests", "organization:read"],
9796
+ optionalScopes: config.optionalScopes,
9797
+ redirectUri: config.redirectUri,
9798
+ config: {
9799
+ authorization_endpoint: "https://auth.planetscale.com/oauth/authorize",
9800
+ token_endpoint: "https://auth.planetscale.com/oauth/token",
9801
+ apiBaseUrl: config.apiBaseUrl ?? "https://api.planetscale.com/v1"
9802
+ }
9803
+ };
9804
+ return {
9805
+ id: "planetscale",
9806
+ name: "PlanetScale",
9807
+ category: "Infrastructure",
9808
+ tools: [...PLANETSCALE_TOOLS],
9809
+ oauth
9810
+ };
9811
+ }
7031
9812
  // src/integrations/generic.ts
7032
9813
  function genericOAuthIntegration(config) {
7033
9814
  const providerUpper = config.provider.toUpperCase().replace(/[^A-Z0-9]/g, "_");
@@ -13196,7 +15977,7 @@ function convertJsonSchemaToGoogleSchema(jsonSchema, TypeEnum) {
13196
15977
  }
13197
15978
  // src/server.ts
13198
15979
  var SERVER_LOG_CONTEXT3 = "server";
13199
- var logger45 = createLogger("MCPServer", SERVER_LOG_CONTEXT3);
15980
+ var logger93 = createLogger("MCPServer", SERVER_LOG_CONTEXT3);
13200
15981
  var globalServerConfig = null;
13201
15982
  var globalMCPHandler = null;
13202
15983
  var codeVerifierStorage = new Map;
@@ -13302,7 +16083,7 @@ function createMCPServer(config) {
13302
16083
  if (integration.oauth) {
13303
16084
  const { clientId, clientSecret, redirectUri: integrationRedirectUri, config: oauthConfig } = integration.oauth;
13304
16085
  if (!clientId || !clientSecret) {
13305
- logger45.warn(`Warning: Integration "${integration.id}" is missing OAuth credentials. ` + `Provide clientId and clientSecret in the integration configuration.`);
16086
+ logger93.warn(`Warning: Integration "${integration.id}" is missing OAuth credentials. ` + `Provide clientId and clientSecret in the integration configuration.`);
13306
16087
  return integration;
13307
16088
  }
13308
16089
  const redirectUri = integrationRedirectUri || config.redirectUri || getDefaultRedirectUri();
@@ -13479,7 +16260,7 @@ function createMCPServer(config) {
13479
16260
  }
13480
16261
  return response2;
13481
16262
  } catch (error) {
13482
- logger45.error("[MCP Tool Call] Error:", error);
16263
+ logger93.error("[MCP Tool Call] Error:", error);
13483
16264
  return Response.json({ error: error.message || "Failed to execute tool call" }, { status: error.statusCode || 500 });
13484
16265
  }
13485
16266
  }
@@ -13528,7 +16309,7 @@ function createMCPServer(config) {
13528
16309
  });
13529
16310
  return Response.json(result, { status: result.success ? 200 : 500 });
13530
16311
  } catch (error) {
13531
- logger45.error("[Code Mode] Error:", error);
16312
+ logger93.error("[Code Mode] Error:", error);
13532
16313
  return Response.json({ error: error?.message || "Failed to execute code" }, { status: 500 });
13533
16314
  }
13534
16315
  }
@@ -13586,7 +16367,7 @@ function createMCPServer(config) {
13586
16367
  error: executionResult.error
13587
16368
  });
13588
16369
  } catch (error) {
13589
- logger45.error("[Trigger Notify] Error:", error);
16370
+ logger93.error("[Trigger Notify] Error:", error);
13590
16371
  return Response.json({ error: error.message || "Failed to execute trigger" }, { status: 500 });
13591
16372
  }
13592
16373
  }
@@ -13650,7 +16431,7 @@ function createMCPServer(config) {
13650
16431
  })
13651
16432
  });
13652
16433
  } catch (scheduleError) {
13653
- logger45.error("[Trigger] Failed to register with scheduler:", scheduleError);
16434
+ logger93.error("[Trigger] Failed to register with scheduler:", scheduleError);
13654
16435
  }
13655
16436
  return Response.json(created, { status: 201 });
13656
16437
  }
@@ -13685,7 +16466,7 @@ function createMCPServer(config) {
13685
16466
  body: JSON.stringify({ triggerId })
13686
16467
  });
13687
16468
  } catch (error) {
13688
- logger45.error("[Trigger] Failed to pause in scheduler:", error);
16469
+ logger93.error("[Trigger] Failed to pause in scheduler:", error);
13689
16470
  }
13690
16471
  return Response.json(updated);
13691
16472
  } else if (subAction === "resume" && method === "POST") {
@@ -13713,7 +16494,7 @@ function createMCPServer(config) {
13713
16494
  body: JSON.stringify({ triggerId })
13714
16495
  });
13715
16496
  } catch (error) {
13716
- logger45.error("[Trigger] Failed to resume in scheduler:", error);
16497
+ logger93.error("[Trigger] Failed to resume in scheduler:", error);
13717
16498
  }
13718
16499
  return Response.json(updated);
13719
16500
  } else if (subAction === "run" && method === "POST") {
@@ -13784,7 +16565,7 @@ function createMCPServer(config) {
13784
16565
  })
13785
16566
  });
13786
16567
  } catch (error) {
13787
- logger45.error("[Trigger] Failed to update scheduler:", error);
16568
+ logger93.error("[Trigger] Failed to update scheduler:", error);
13788
16569
  }
13789
16570
  }
13790
16571
  return Response.json(updated);
@@ -13801,14 +16582,14 @@ function createMCPServer(config) {
13801
16582
  body: JSON.stringify({ triggerId })
13802
16583
  });
13803
16584
  } catch (error) {
13804
- logger45.error("[Trigger] Failed to unregister from scheduler:", error);
16585
+ logger93.error("[Trigger] Failed to unregister from scheduler:", error);
13805
16586
  }
13806
16587
  return new Response(null, { status: 204 });
13807
16588
  }
13808
16589
  }
13809
16590
  return Response.json({ error: "Invalid trigger route or method" }, { status: 404 });
13810
16591
  } catch (error) {
13811
- logger45.error("[Trigger] Error:", error);
16592
+ logger93.error("[Trigger] Error:", error);
13812
16593
  return Response.json({ error: error.message || "Failed to process trigger request" }, { status: error.statusCode || 500 });
13813
16594
  }
13814
16595
  }
@@ -13834,11 +16615,11 @@ function createMCPServer(config) {
13834
16615
  const errorRedirectUrl = "/auth-error";
13835
16616
  if (error) {
13836
16617
  const errorMsg = errorDescription || error;
13837
- logger45.error("[OAuth Redirect] Error:", errorMsg);
16618
+ logger93.error("[OAuth Redirect] Error:", errorMsg);
13838
16619
  return Response.redirect(new URL(`${errorRedirectUrl}?error=${encodeURIComponent(errorMsg)}`, webRequest.url));
13839
16620
  }
13840
16621
  if (!code || !state) {
13841
- logger45.error("[OAuth Redirect] Missing code or state parameter");
16622
+ logger93.error("[OAuth Redirect] Missing code or state parameter");
13842
16623
  return Response.redirect(new URL(`${errorRedirectUrl}?error=${encodeURIComponent("Invalid OAuth callback")}`, webRequest.url));
13843
16624
  }
13844
16625
  let returnUrl = defaultRedirectUrl;
@@ -13915,7 +16696,7 @@ function createMCPServer(config) {
13915
16696
  frontendUrl.hash = `oauth_callback=${encodeURIComponent(JSON.stringify({ code, state, tokenData }))}`;
13916
16697
  return Response.redirect(frontendUrl);
13917
16698
  } catch (error2) {
13918
- logger45.error("[OAuth Backend Callback] Error:", error2);
16699
+ logger93.error("[OAuth Backend Callback] Error:", error2);
13919
16700
  return Response.redirect(new URL(`${errorRedirectUrl}?error=${encodeURIComponent(error2.message || "Failed to exchange token")}`, webRequest.url));
13920
16701
  }
13921
16702
  } else {
@@ -14194,43 +16975,77 @@ init_type_generator();
14194
16975
  init_executor();
14195
16976
  init_tool_builder();
14196
16977
  export {
16978
+ zoomIntegration,
14197
16979
  zendeskIntegration,
16980
+ zapierIntegration,
14198
16981
  youtubeIntegration,
16982
+ xeroIntegration,
16983
+ workosIntegration,
16984
+ workdayIntegration,
14199
16985
  wordIntegration,
16986
+ wixIntegration,
14200
16987
  whatsappIntegration,
16988
+ webflowIntegration,
14201
16989
  vercelIntegration,
16990
+ upstashIntegration,
16991
+ typeformIntegration,
16992
+ trelloIntegration,
14202
16993
  todoistIntegration,
14203
16994
  toWebRequest,
14204
16995
  toTanStackStartHandler,
14205
16996
  toSvelteKitHandler,
14206
16997
  toSolidStartHandler,
14207
16998
  toNextJsHandler,
16999
+ tldrawIntegration,
17000
+ tiktokIntegration,
17001
+ threadsIntegration,
17002
+ teamsIntegration,
14208
17003
  svelteKitHandler,
17004
+ supabaseIntegration,
14209
17005
  stripeIntegration,
14210
17006
  storeCodeVerifier,
14211
17007
  slackIntegration,
17008
+ shopifyIntegration,
17009
+ sharepointIntegration,
14212
17010
  sentryIntegration,
14213
17011
  sendWebResponse,
17012
+ salesforceIntegration,
17013
+ resendIntegration,
17014
+ redisIntegration,
17015
+ redditIntegration,
14214
17016
  rampIntegration,
14215
17017
  railwayIntegration,
14216
17018
  powerpointIntegration,
17019
+ postmanIntegration,
14217
17020
  posthogIntegration,
14218
17021
  polarIntegration,
17022
+ plannerIntegration,
17023
+ planetscaleIntegration,
17024
+ phantomIntegration,
17025
+ paperIntegration,
14219
17026
  outlookIntegration,
14220
17027
  onedriveIntegration,
14221
17028
  notionIntegration,
14222
17029
  netlifyIntegration,
17030
+ neonIntegration,
17031
+ mondayIntegration,
14223
17032
  mercuryIntegration,
17033
+ mailchimpIntegration,
17034
+ linkedinIntegration,
14224
17035
  linearIntegration,
14225
17036
  jiraIntegration,
14226
17037
  intercomIntegration,
17038
+ instagramIntegration,
14227
17039
  hubspotIntegration,
14228
17040
  handleOpenAIResponse,
14229
17041
  handleAnthropicMessage,
17042
+ gtasksIntegration,
14230
17043
  gslidesIntegration,
14231
17044
  gsheetsIntegration,
14232
17045
  granolaIntegration,
17046
+ gmeetIntegration,
14233
17047
  gmailIntegration,
17048
+ gitlabIntegration,
14234
17049
  githubIntegration,
14235
17050
  getVercelAITools,
14236
17051
  getOpenAITools,
@@ -14241,21 +17056,43 @@ export {
14241
17056
  generateCodeModeTypes,
14242
17057
  gdriveIntegration,
14243
17058
  gdocsIntegration,
17059
+ gcontactsIntegration,
17060
+ gchatIntegration,
14244
17061
  gcalIntegration,
17062
+ ga4Integration,
14245
17063
  fromNodeHeaders,
14246
17064
  figmaIntegration,
17065
+ facebookIntegration,
14247
17066
  executeSandboxCode,
14248
17067
  executeGoogleFunctionCalls,
14249
17068
  excelIntegration,
17069
+ etoroIntegration,
17070
+ encodeRedisCloudBearerToken,
14250
17071
  dropboxIntegration,
17072
+ discordIntegration,
17073
+ datadogIntegration,
17074
+ databricksIntegration,
14251
17075
  cursorIntegration,
14252
17076
  createTriggerTools,
14253
17077
  createTanStackOAuthHandler,
14254
17078
  createSimpleIntegration,
14255
17079
  createNextOAuthHandler,
14256
17080
  createMCPServer,
17081
+ convexIntegration,
17082
+ cloudflareIntegration,
17083
+ clickupIntegration,
17084
+ clerkIntegration,
17085
+ canvaIntegration,
14257
17086
  calcomIntegration,
17087
+ buildPhantomBrowseDeeplink,
14258
17088
  buildCodeModeTool,
17089
+ binanceIntegration,
17090
+ betterstackIntegration,
17091
+ awsIntegration,
17092
+ auth0Integration,
17093
+ attioIntegration,
17094
+ astronomerIntegration,
17095
+ alpacaIntegration,
14259
17096
  airtableIntegration,
14260
17097
  __resetUnauthenticatedCodeModeWarnings,
14261
17098
  RUNTIME_STUB_SOURCE,