veryfront 0.0.49 → 0.0.50

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 (536) hide show
  1. package/dist/ai/components.js +260 -56
  2. package/dist/ai/components.js.map +4 -4
  3. package/dist/ai/index.d.ts +1 -0
  4. package/dist/ai/index.js +12 -4
  5. package/dist/ai/index.js.map +2 -2
  6. package/dist/ai/primitives.js +55 -10
  7. package/dist/ai/primitives.js.map +3 -3
  8. package/dist/ai/react.js +140 -1
  9. package/dist/ai/react.js.map +3 -3
  10. package/dist/ai/workflow-react.js +458 -0
  11. package/dist/ai/workflow-react.js.map +7 -0
  12. package/dist/ai/workflow.js +5422 -0
  13. package/dist/ai/workflow.js.map +7 -0
  14. package/dist/cli.js +957 -221
  15. package/dist/components.js +12 -4
  16. package/dist/components.js.map +2 -2
  17. package/dist/config.js +12 -4
  18. package/dist/config.js.map +2 -2
  19. package/dist/data.js +12 -4
  20. package/dist/data.js.map +2 -2
  21. package/dist/index.js +12 -6
  22. package/dist/index.js.map +2 -2
  23. package/dist/integrations/_base/files/SETUP.md +667 -98
  24. package/dist/integrations/_base/files/app/api/integrations/token-storage/route.ts +14 -0
  25. package/dist/integrations/_base/files/app/components/ServiceConnections.tsx +2 -1
  26. package/dist/integrations/_base/files/app/setup/page.tsx +858 -54
  27. package/dist/integrations/_base/files/lib/token-store-examples.ts +435 -0
  28. package/dist/integrations/_base/files/lib/token-store.ts +273 -23
  29. package/dist/integrations/airtable/connector.json +99 -0
  30. package/dist/integrations/airtable/files/ai/tools/create-record.ts +25 -0
  31. package/dist/integrations/airtable/files/ai/tools/get-base.ts +34 -0
  32. package/dist/integrations/airtable/files/ai/tools/get-record.ts +23 -0
  33. package/dist/integrations/airtable/files/ai/tools/list-bases.ts +19 -0
  34. package/dist/integrations/airtable/files/ai/tools/list-records.ts +47 -0
  35. package/dist/integrations/airtable/files/app/api/auth/airtable/callback/route.ts +11 -0
  36. package/dist/integrations/airtable/files/app/api/auth/airtable/route.ts +9 -0
  37. package/dist/integrations/airtable/files/lib/airtable-client.ts +244 -0
  38. package/dist/integrations/airtable/files/lib/token-store.ts +5 -0
  39. package/dist/integrations/anthropic/README.md +181 -0
  40. package/dist/integrations/anthropic/connector.json +88 -0
  41. package/dist/integrations/anthropic/files/_env.example +4 -0
  42. package/dist/integrations/anthropic/files/ai/tools/get-organization.ts +36 -0
  43. package/dist/integrations/anthropic/files/ai/tools/get-usage.ts +100 -0
  44. package/dist/integrations/anthropic/files/ai/tools/list-api-keys.ts +64 -0
  45. package/dist/integrations/anthropic/files/ai/tools/list-members.ts +65 -0
  46. package/dist/integrations/anthropic/files/ai/tools/list-workspaces.ts +35 -0
  47. package/dist/integrations/anthropic/files/lib/anthropic-admin-client.ts +264 -0
  48. package/dist/integrations/asana/connector.json +85 -0
  49. package/dist/integrations/asana/files/_env.example +4 -0
  50. package/dist/integrations/asana/files/ai/tools/create-task.ts +34 -0
  51. package/dist/integrations/asana/files/ai/tools/get-task.ts +26 -0
  52. package/dist/integrations/asana/files/ai/tools/list-projects.ts +26 -0
  53. package/dist/integrations/asana/files/ai/tools/list-tasks.ts +50 -0
  54. package/dist/integrations/asana/files/ai/tools/update-task.ts +36 -0
  55. package/dist/integrations/asana/files/app/api/auth/asana/callback/route.ts +11 -0
  56. package/dist/integrations/asana/files/app/api/auth/asana/route.ts +7 -0
  57. package/dist/integrations/asana/files/lib/asana-client.ts +162 -0
  58. package/dist/integrations/asana/files/lib/token-store.ts +11 -0
  59. package/dist/integrations/aws/connector.json +72 -0
  60. package/dist/integrations/aws/files/_env.example +10 -0
  61. package/dist/integrations/aws/files/ai/tools/get-s3-object.ts +62 -0
  62. package/dist/integrations/aws/files/ai/tools/list-ec2-instances.ts +56 -0
  63. package/dist/integrations/aws/files/ai/tools/list-lambda-functions.ts +57 -0
  64. package/dist/integrations/aws/files/ai/tools/list-s3-buckets.ts +44 -0
  65. package/dist/integrations/aws/files/ai/tools/list-s3-objects.ts +58 -0
  66. package/dist/integrations/aws/files/lib/aws-client.ts +255 -0
  67. package/dist/integrations/bitbucket/connector.json +85 -0
  68. package/dist/integrations/bitbucket/files/_env.example +9 -0
  69. package/dist/integrations/bitbucket/files/ai/tools/create-pull-request.ts +83 -0
  70. package/dist/integrations/bitbucket/files/ai/tools/list-issues.ts +112 -0
  71. package/dist/integrations/bitbucket/files/ai/tools/list-pull-requests.ts +91 -0
  72. package/dist/integrations/bitbucket/files/ai/tools/list-repositories.ts +78 -0
  73. package/dist/integrations/bitbucket/files/app/api/auth/bitbucket/callback/route.ts +11 -0
  74. package/dist/integrations/bitbucket/files/app/api/auth/bitbucket/route.ts +9 -0
  75. package/dist/integrations/bitbucket/files/lib/bitbucket-client.ts +316 -0
  76. package/dist/integrations/bitbucket/files/lib/token-store.ts +5 -0
  77. package/dist/integrations/box/connector.json +85 -0
  78. package/dist/integrations/box/files/_env.example +4 -0
  79. package/dist/integrations/box/files/ai/tools/create-folder.ts +28 -0
  80. package/dist/integrations/box/files/ai/tools/get-file.ts +29 -0
  81. package/dist/integrations/box/files/ai/tools/list-files.ts +33 -0
  82. package/dist/integrations/box/files/ai/tools/search-files.ts +35 -0
  83. package/dist/integrations/box/files/ai/tools/upload-file.ts +32 -0
  84. package/dist/integrations/box/files/app/api/auth/box/callback/route.ts +11 -0
  85. package/dist/integrations/box/files/app/api/auth/box/route.ts +7 -0
  86. package/dist/integrations/box/files/lib/box-client.ts +280 -0
  87. package/dist/integrations/box/files/lib/token-store.ts +11 -0
  88. package/dist/integrations/calendar/files/app/api/auth/calendar/callback/route.ts +7 -110
  89. package/dist/integrations/calendar/files/app/api/auth/calendar/route.ts +5 -25
  90. package/dist/integrations/calendar/files/lib/token-store.ts +2 -110
  91. package/dist/integrations/clickup/connector.json +85 -0
  92. package/dist/integrations/clickup/files/_env.example +4 -0
  93. package/dist/integrations/clickup/files/ai/tools/create-task.ts +64 -0
  94. package/dist/integrations/clickup/files/ai/tools/get-task.ts +59 -0
  95. package/dist/integrations/clickup/files/ai/tools/list-lists.ts +109 -0
  96. package/dist/integrations/clickup/files/ai/tools/list-tasks.ts +95 -0
  97. package/dist/integrations/clickup/files/ai/tools/update-task.ts +85 -0
  98. package/dist/integrations/clickup/files/app/api/auth/clickup/callback/route.ts +11 -0
  99. package/dist/integrations/clickup/files/app/api/auth/clickup/route.ts +7 -0
  100. package/dist/integrations/clickup/files/lib/clickup-client.ts +439 -0
  101. package/dist/integrations/clickup/files/lib/token-store.ts +11 -0
  102. package/dist/integrations/confluence/README.md +246 -0
  103. package/dist/integrations/confluence/connector.json +104 -0
  104. package/dist/integrations/confluence/files/_env.example +4 -0
  105. package/dist/integrations/confluence/files/ai/tools/create-page.ts +43 -0
  106. package/dist/integrations/confluence/files/ai/tools/get-page.ts +30 -0
  107. package/dist/integrations/confluence/files/ai/tools/list-spaces.ts +31 -0
  108. package/dist/integrations/confluence/files/ai/tools/search-content.ts +38 -0
  109. package/dist/integrations/confluence/files/ai/tools/update-page.ts +45 -0
  110. package/dist/integrations/confluence/files/app/api/auth/confluence/callback/route.ts +11 -0
  111. package/dist/integrations/confluence/files/app/api/auth/confluence/route.ts +9 -0
  112. package/dist/integrations/confluence/files/lib/confluence-client.ts +281 -0
  113. package/dist/integrations/confluence/files/lib/token-store.ts +5 -0
  114. package/dist/integrations/discord/connector.json +100 -0
  115. package/dist/integrations/discord/files/_env.example +12 -0
  116. package/dist/integrations/discord/files/ai/tools/get-messages.ts +55 -0
  117. package/dist/integrations/discord/files/ai/tools/get-user.ts +32 -0
  118. package/dist/integrations/discord/files/ai/tools/list-channels.ts +32 -0
  119. package/dist/integrations/discord/files/ai/tools/list-guilds.ts +24 -0
  120. package/dist/integrations/discord/files/ai/tools/send-message.ts +33 -0
  121. package/dist/integrations/discord/files/app/api/auth/discord/callback/route.ts +11 -0
  122. package/dist/integrations/discord/files/app/api/auth/discord/route.ts +9 -0
  123. package/dist/integrations/discord/files/lib/discord-client.ts +273 -0
  124. package/dist/integrations/discord/files/lib/token-store.ts +5 -0
  125. package/dist/integrations/docs-google/connector.json +101 -0
  126. package/dist/integrations/docs-google/files/_env.example +8 -0
  127. package/dist/integrations/docs-google/files/ai/tools/create-document.ts +46 -0
  128. package/dist/integrations/docs-google/files/ai/tools/get-document.ts +46 -0
  129. package/dist/integrations/docs-google/files/ai/tools/list-documents.ts +42 -0
  130. package/dist/integrations/docs-google/files/ai/tools/search-documents.ts +38 -0
  131. package/dist/integrations/docs-google/files/ai/tools/update-document.ts +131 -0
  132. package/dist/integrations/docs-google/files/app/api/auth/docs-google/callback/route.ts +11 -0
  133. package/dist/integrations/docs-google/files/app/api/auth/docs-google/route.ts +9 -0
  134. package/dist/integrations/docs-google/files/lib/docs-client.ts +582 -0
  135. package/dist/integrations/docs-google/files/lib/token-store.ts +5 -0
  136. package/dist/integrations/drive/connector.json +134 -0
  137. package/dist/integrations/drive/files/_env.example +9 -0
  138. package/dist/integrations/drive/files/ai/tools/create-folder.ts +47 -0
  139. package/dist/integrations/drive/files/ai/tools/get-file.ts +55 -0
  140. package/dist/integrations/drive/files/ai/tools/list-files.ts +78 -0
  141. package/dist/integrations/drive/files/ai/tools/search-files.ts +79 -0
  142. package/dist/integrations/drive/files/ai/tools/upload-file.ts +59 -0
  143. package/dist/integrations/drive/files/app/api/auth/drive/callback/route.ts +11 -0
  144. package/dist/integrations/drive/files/app/api/auth/drive/route.ts +9 -0
  145. package/dist/integrations/drive/files/lib/drive-client.ts +359 -0
  146. package/dist/integrations/drive/files/lib/token-store.ts +113 -0
  147. package/dist/integrations/dropbox/connector.json +107 -0
  148. package/dist/integrations/dropbox/files/_env.example +24 -0
  149. package/dist/integrations/dropbox/files/ai/tools/get-account.ts +58 -0
  150. package/dist/integrations/dropbox/files/ai/tools/get-file.ts +61 -0
  151. package/dist/integrations/dropbox/files/ai/tools/list-files.ts +56 -0
  152. package/dist/integrations/dropbox/files/ai/tools/search-files.ts +70 -0
  153. package/dist/integrations/dropbox/files/ai/tools/upload-file.ts +48 -0
  154. package/dist/integrations/dropbox/files/app/api/auth/dropbox/callback/route.ts +11 -0
  155. package/dist/integrations/dropbox/files/app/api/auth/dropbox/route.ts +9 -0
  156. package/dist/integrations/dropbox/files/lib/dropbox-client.ts +397 -0
  157. package/dist/integrations/dropbox/files/lib/token-store.ts +5 -0
  158. package/dist/integrations/figma/INTEGRATION_SUMMARY.md +436 -0
  159. package/dist/integrations/figma/README.md +287 -0
  160. package/dist/integrations/figma/connector.json +100 -0
  161. package/dist/integrations/figma/files/_env.example +5 -0
  162. package/dist/integrations/figma/files/ai/tools/get-comments.ts +72 -0
  163. package/dist/integrations/figma/files/ai/tools/get-file.ts +54 -0
  164. package/dist/integrations/figma/files/ai/tools/list-files.ts +39 -0
  165. package/dist/integrations/figma/files/ai/tools/list-projects.ts +69 -0
  166. package/dist/integrations/figma/files/ai/tools/post-comment.ts +54 -0
  167. package/dist/integrations/figma/files/app/api/auth/figma/callback/route.ts +11 -0
  168. package/dist/integrations/figma/files/app/api/auth/figma/route.ts +9 -0
  169. package/dist/integrations/figma/files/lib/figma-client.ts +355 -0
  170. package/dist/integrations/figma/files/lib/token-store.ts +5 -0
  171. package/dist/integrations/figma/files/lib/types.ts +503 -0
  172. package/dist/integrations/freshdesk/connector.json +85 -0
  173. package/dist/integrations/freshdesk/files/_env.example +4 -0
  174. package/dist/integrations/freshdesk/files/ai/tools/create-ticket.ts +60 -0
  175. package/dist/integrations/freshdesk/files/ai/tools/get-ticket.ts +46 -0
  176. package/dist/integrations/freshdesk/files/ai/tools/list-contacts.ts +37 -0
  177. package/dist/integrations/freshdesk/files/ai/tools/list-tickets.ts +59 -0
  178. package/dist/integrations/freshdesk/files/ai/tools/update-ticket.ts +61 -0
  179. package/dist/integrations/freshdesk/files/app/api/auth/freshdesk/callback/route.ts +11 -0
  180. package/dist/integrations/freshdesk/files/app/api/auth/freshdesk/route.ts +7 -0
  181. package/dist/integrations/freshdesk/files/lib/freshdesk-client.ts +178 -0
  182. package/dist/integrations/freshdesk/files/lib/token-store.ts +11 -0
  183. package/dist/integrations/github/files/app/api/auth/github/callback/route.ts +6 -127
  184. package/dist/integrations/github/files/app/api/auth/github/route.ts +4 -24
  185. package/dist/integrations/github/files/lib/token-store.ts +2 -110
  186. package/dist/integrations/gitlab/connector.json +100 -0
  187. package/dist/integrations/gitlab/files/_env.example +7 -0
  188. package/dist/integrations/gitlab/files/ai/tools/create-issue.ts +49 -0
  189. package/dist/integrations/gitlab/files/ai/tools/get-issue.ts +56 -0
  190. package/dist/integrations/gitlab/files/ai/tools/list-merge-requests.ts +75 -0
  191. package/dist/integrations/gitlab/files/ai/tools/list-projects.ts +51 -0
  192. package/dist/integrations/gitlab/files/ai/tools/search-issues.ts +67 -0
  193. package/dist/integrations/gitlab/files/app/api/auth/gitlab/callback/route.ts +11 -0
  194. package/dist/integrations/gitlab/files/app/api/auth/gitlab/route.ts +9 -0
  195. package/dist/integrations/gitlab/files/lib/gitlab-client.ts +366 -0
  196. package/dist/integrations/gitlab/files/lib/token-store.ts +5 -0
  197. package/dist/integrations/gmail/files/app/api/auth/gmail/callback/route.ts +7 -108
  198. package/dist/integrations/gmail/files/app/api/auth/gmail/route.ts +5 -23
  199. package/dist/integrations/gmail/files/lib/gmail-client.ts +16 -55
  200. package/dist/integrations/gmail/files/lib/token-store.ts +4 -109
  201. package/dist/integrations/hubspot/connector.json +98 -0
  202. package/dist/integrations/hubspot/files/_env.example +5 -0
  203. package/dist/integrations/hubspot/files/ai/tools/create-contact.ts +41 -0
  204. package/dist/integrations/hubspot/files/ai/tools/create-deal.ts +41 -0
  205. package/dist/integrations/hubspot/files/ai/tools/get-contact.ts +39 -0
  206. package/dist/integrations/hubspot/files/ai/tools/list-contacts.ts +43 -0
  207. package/dist/integrations/hubspot/files/ai/tools/list-deals.ts +41 -0
  208. package/dist/integrations/hubspot/files/app/api/auth/hubspot/callback/route.ts +11 -0
  209. package/dist/integrations/hubspot/files/app/api/auth/hubspot/route.ts +9 -0
  210. package/dist/integrations/hubspot/files/lib/hubspot-client.ts +393 -0
  211. package/dist/integrations/hubspot/files/lib/token-store.ts +5 -0
  212. package/dist/integrations/intercom/connector.json +85 -0
  213. package/dist/integrations/intercom/files/_env.example +4 -0
  214. package/dist/integrations/intercom/files/ai/tools/get-contact.ts +35 -0
  215. package/dist/integrations/intercom/files/ai/tools/get-conversation.ts +55 -0
  216. package/dist/integrations/intercom/files/ai/tools/list-contacts.ts +35 -0
  217. package/dist/integrations/intercom/files/ai/tools/list-conversations.ts +49 -0
  218. package/dist/integrations/intercom/files/ai/tools/send-message.ts +34 -0
  219. package/dist/integrations/intercom/files/app/api/auth/intercom/callback/route.ts +11 -0
  220. package/dist/integrations/intercom/files/app/api/auth/intercom/route.ts +7 -0
  221. package/dist/integrations/intercom/files/lib/intercom-client.ts +308 -0
  222. package/dist/integrations/intercom/files/lib/token-store.ts +11 -0
  223. package/dist/integrations/jira/connector.json +109 -0
  224. package/dist/integrations/jira/files/ai/tools/create-issue.ts +47 -0
  225. package/dist/integrations/jira/files/ai/tools/get-issue.ts +57 -0
  226. package/dist/integrations/jira/files/ai/tools/list-projects.ts +30 -0
  227. package/dist/integrations/jira/files/ai/tools/search-issues.ts +49 -0
  228. package/dist/integrations/jira/files/ai/tools/update-issue.ts +81 -0
  229. package/dist/integrations/jira/files/app/api/auth/jira/callback/route.ts +11 -0
  230. package/dist/integrations/jira/files/app/api/auth/jira/route.ts +9 -0
  231. package/dist/integrations/jira/files/lib/jira-client.ts +338 -0
  232. package/dist/integrations/jira/files/lib/token-store.ts +5 -0
  233. package/dist/integrations/linear/connector.json +100 -0
  234. package/dist/integrations/linear/files/_env.example +6 -0
  235. package/dist/integrations/linear/files/ai/tools/create-issue.ts +71 -0
  236. package/dist/integrations/linear/files/ai/tools/get-issue.ts +55 -0
  237. package/dist/integrations/linear/files/ai/tools/list-projects.ts +43 -0
  238. package/dist/integrations/linear/files/ai/tools/search-issues.ts +54 -0
  239. package/dist/integrations/linear/files/ai/tools/update-issue.ts +71 -0
  240. package/dist/integrations/linear/files/app/api/auth/linear/callback/route.ts +11 -0
  241. package/dist/integrations/linear/files/app/api/auth/linear/route.ts +9 -0
  242. package/dist/integrations/linear/files/lib/linear-client.ts +464 -0
  243. package/dist/integrations/linear/files/lib/token-store.ts +5 -0
  244. package/dist/integrations/mailchimp/connector.json +85 -0
  245. package/dist/integrations/mailchimp/files/_env.example +4 -0
  246. package/dist/integrations/mailchimp/files/ai/tools/get-campaign.ts +45 -0
  247. package/dist/integrations/mailchimp/files/ai/tools/get-list.ts +51 -0
  248. package/dist/integrations/mailchimp/files/ai/tools/list-campaigns.ts +46 -0
  249. package/dist/integrations/mailchimp/files/ai/tools/list-lists.ts +46 -0
  250. package/dist/integrations/mailchimp/files/ai/tools/list-members.ts +58 -0
  251. package/dist/integrations/mailchimp/files/app/api/auth/mailchimp/callback/route.ts +11 -0
  252. package/dist/integrations/mailchimp/files/app/api/auth/mailchimp/route.ts +7 -0
  253. package/dist/integrations/mailchimp/files/lib/mailchimp-client.ts +267 -0
  254. package/dist/integrations/mailchimp/files/lib/token-store.ts +11 -0
  255. package/dist/integrations/mixpanel/connector.json +96 -0
  256. package/dist/integrations/mixpanel/files/_env.example +11 -0
  257. package/dist/integrations/mixpanel/files/ai/tools/get-funnel.ts +46 -0
  258. package/dist/integrations/mixpanel/files/ai/tools/get-retention.ts +64 -0
  259. package/dist/integrations/mixpanel/files/ai/tools/list-cohorts.ts +46 -0
  260. package/dist/integrations/mixpanel/files/ai/tools/query-events.ts +43 -0
  261. package/dist/integrations/mixpanel/files/ai/tools/track-event.ts +41 -0
  262. package/dist/integrations/mixpanel/files/lib/mixpanel-client.ts +319 -0
  263. package/dist/integrations/mixpanel/files/lib/token-store.ts +43 -0
  264. package/dist/integrations/monday/connector.json +85 -0
  265. package/dist/integrations/monday/files/_env.example +4 -0
  266. package/dist/integrations/monday/files/ai/tools/create-item.ts +36 -0
  267. package/dist/integrations/monday/files/ai/tools/get-item.ts +31 -0
  268. package/dist/integrations/monday/files/ai/tools/list-boards.ts +29 -0
  269. package/dist/integrations/monday/files/ai/tools/list-items.ts +36 -0
  270. package/dist/integrations/monday/files/ai/tools/update-item.ts +36 -0
  271. package/dist/integrations/monday/files/app/api/auth/monday/callback/route.ts +11 -0
  272. package/dist/integrations/monday/files/app/api/auth/monday/route.ts +7 -0
  273. package/dist/integrations/monday/files/lib/monday-client.ts +329 -0
  274. package/dist/integrations/monday/files/lib/token-store.ts +11 -0
  275. package/dist/integrations/neon/connector.json +89 -0
  276. package/dist/integrations/neon/files/_env.example +6 -0
  277. package/dist/integrations/neon/files/ai/tools/describe-table.ts +38 -0
  278. package/dist/integrations/neon/files/ai/tools/list-branches.ts +35 -0
  279. package/dist/integrations/neon/files/ai/tools/list-projects.ts +31 -0
  280. package/dist/integrations/neon/files/ai/tools/list-tables.ts +49 -0
  281. package/dist/integrations/neon/files/ai/tools/query-database.ts +33 -0
  282. package/dist/integrations/neon/files/app/api/auth/neon/route.ts +51 -0
  283. package/dist/integrations/neon/files/lib/neon-client.ts +294 -0
  284. package/dist/integrations/neon/files/lib/token-store.ts +29 -0
  285. package/dist/integrations/notion/connector.json +87 -0
  286. package/dist/integrations/notion/files/_env.example +6 -0
  287. package/dist/integrations/notion/files/ai/tools/create-page.ts +32 -0
  288. package/dist/integrations/notion/files/ai/tools/query-database.ts +44 -0
  289. package/dist/integrations/notion/files/ai/tools/read-page.ts +34 -0
  290. package/dist/integrations/notion/files/ai/tools/search-notion.ts +51 -0
  291. package/dist/integrations/notion/files/app/api/auth/notion/callback/route.ts +11 -0
  292. package/dist/integrations/notion/files/app/api/auth/notion/route.ts +9 -0
  293. package/dist/integrations/notion/files/lib/notion-client.ts +218 -0
  294. package/dist/integrations/notion/files/lib/token-store.ts +5 -0
  295. package/dist/integrations/onedrive/connector.json +100 -0
  296. package/dist/integrations/onedrive/files/_env.example +23 -0
  297. package/dist/integrations/onedrive/files/ai/tools/download-file.ts +38 -0
  298. package/dist/integrations/onedrive/files/ai/tools/list-files.ts +63 -0
  299. package/dist/integrations/onedrive/files/ai/tools/search-files.ts +59 -0
  300. package/dist/integrations/onedrive/files/ai/tools/upload-file.ts +43 -0
  301. package/dist/integrations/onedrive/files/app/api/auth/onedrive/callback/route.ts +11 -0
  302. package/dist/integrations/onedrive/files/app/api/auth/onedrive/route.ts +9 -0
  303. package/dist/integrations/onedrive/files/lib/onedrive-client.ts +314 -0
  304. package/dist/integrations/onedrive/files/lib/token-store.ts +5 -0
  305. package/dist/integrations/outlook/README.md +308 -0
  306. package/dist/integrations/outlook/connector.json +98 -0
  307. package/dist/integrations/outlook/files/_env.example +8 -0
  308. package/dist/integrations/outlook/files/ai/tools/get-email.ts +47 -0
  309. package/dist/integrations/outlook/files/ai/tools/list-emails.ts +46 -0
  310. package/dist/integrations/outlook/files/ai/tools/list-folders.ts +22 -0
  311. package/dist/integrations/outlook/files/ai/tools/search-emails.ts +41 -0
  312. package/dist/integrations/outlook/files/ai/tools/send-email.ts +41 -0
  313. package/dist/integrations/outlook/files/app/api/auth/outlook/callback/route.ts +11 -0
  314. package/dist/integrations/outlook/files/app/api/auth/outlook/route.ts +9 -0
  315. package/dist/integrations/outlook/files/lib/outlook-client.ts +204 -0
  316. package/dist/integrations/outlook/files/lib/token-store.ts +5 -0
  317. package/dist/integrations/pipedrive/connector.json +85 -0
  318. package/dist/integrations/pipedrive/files/_env.example +4 -0
  319. package/dist/integrations/pipedrive/files/ai/tools/create-deal.ts +44 -0
  320. package/dist/integrations/pipedrive/files/ai/tools/get-deal.ts +34 -0
  321. package/dist/integrations/pipedrive/files/ai/tools/list-deals.ts +40 -0
  322. package/dist/integrations/pipedrive/files/ai/tools/list-persons.ts +33 -0
  323. package/dist/integrations/pipedrive/files/ai/tools/update-deal.ts +46 -0
  324. package/dist/integrations/pipedrive/files/app/api/auth/pipedrive/callback/route.ts +11 -0
  325. package/dist/integrations/pipedrive/files/app/api/auth/pipedrive/route.ts +7 -0
  326. package/dist/integrations/pipedrive/files/lib/pipedrive-client.ts +259 -0
  327. package/dist/integrations/pipedrive/files/lib/token-store.ts +11 -0
  328. package/dist/integrations/posthog/connector.json +84 -0
  329. package/dist/integrations/posthog/files/_env.example +6 -0
  330. package/dist/integrations/posthog/files/ai/tools/capture-event.ts +37 -0
  331. package/dist/integrations/posthog/files/ai/tools/get-trends.ts +44 -0
  332. package/dist/integrations/posthog/files/ai/tools/list-feature-flags.ts +38 -0
  333. package/dist/integrations/posthog/files/ai/tools/list-persons.ts +32 -0
  334. package/dist/integrations/posthog/files/lib/posthog-client.ts +286 -0
  335. package/dist/integrations/posthog/files/lib/token-store.ts +21 -0
  336. package/dist/integrations/quickbooks/connector.json +85 -0
  337. package/dist/integrations/quickbooks/files/_env.example +4 -0
  338. package/dist/integrations/quickbooks/files/ai/tools/create-invoice.ts +48 -0
  339. package/dist/integrations/quickbooks/files/ai/tools/get-customer.ts +36 -0
  340. package/dist/integrations/quickbooks/files/ai/tools/get-invoice.ts +46 -0
  341. package/dist/integrations/quickbooks/files/ai/tools/list-customers.ts +37 -0
  342. package/dist/integrations/quickbooks/files/ai/tools/list-invoices.ts +40 -0
  343. package/dist/integrations/quickbooks/files/app/api/auth/quickbooks/callback/route.ts +11 -0
  344. package/dist/integrations/quickbooks/files/app/api/auth/quickbooks/route.ts +7 -0
  345. package/dist/integrations/quickbooks/files/lib/quickbooks-client.ts +252 -0
  346. package/dist/integrations/quickbooks/files/lib/token-store.ts +11 -0
  347. package/dist/integrations/salesforce/connector.json +104 -0
  348. package/dist/integrations/salesforce/files/ai/tools/create-lead.ts +101 -0
  349. package/dist/integrations/salesforce/files/ai/tools/get-account.ts +53 -0
  350. package/dist/integrations/salesforce/files/ai/tools/list-accounts.ts +50 -0
  351. package/dist/integrations/salesforce/files/ai/tools/list-contacts.ts +54 -0
  352. package/dist/integrations/salesforce/files/ai/tools/list-opportunities.ts +55 -0
  353. package/dist/integrations/salesforce/files/app/api/auth/salesforce/callback/route.ts +11 -0
  354. package/dist/integrations/salesforce/files/app/api/auth/salesforce/route.ts +9 -0
  355. package/dist/integrations/salesforce/files/lib/salesforce-client.ts +539 -0
  356. package/dist/integrations/salesforce/files/lib/token-store.ts +5 -0
  357. package/dist/integrations/sentry/connector.json +84 -0
  358. package/dist/integrations/sentry/files/_env.example +6 -0
  359. package/dist/integrations/sentry/files/ai/tools/get-issue.ts +66 -0
  360. package/dist/integrations/sentry/files/ai/tools/list-issues.ts +57 -0
  361. package/dist/integrations/sentry/files/ai/tools/list-projects.ts +32 -0
  362. package/dist/integrations/sentry/files/ai/tools/resolve-issue.ts +28 -0
  363. package/dist/integrations/sentry/files/lib/sentry-client.ts +268 -0
  364. package/dist/integrations/sentry/files/lib/token-store.ts +29 -0
  365. package/dist/integrations/servicenow/connector.json +66 -0
  366. package/dist/integrations/servicenow/files/_env.example +5 -0
  367. package/dist/integrations/servicenow/files/ai/tools/create-incident.ts +58 -0
  368. package/dist/integrations/servicenow/files/ai/tools/get-incident.ts +59 -0
  369. package/dist/integrations/servicenow/files/ai/tools/list-incidents.ts +72 -0
  370. package/dist/integrations/servicenow/files/ai/tools/search-knowledge.ts +48 -0
  371. package/dist/integrations/servicenow/files/ai/tools/update-incident.ts +60 -0
  372. package/dist/integrations/servicenow/files/app/api/auth/servicenow/callback/route.ts +89 -0
  373. package/dist/integrations/servicenow/files/app/api/auth/servicenow/route.ts +42 -0
  374. package/dist/integrations/servicenow/files/lib/servicenow-client.ts +239 -0
  375. package/dist/integrations/servicenow/files/lib/token-store.ts +42 -0
  376. package/dist/integrations/sharepoint/connector.json +99 -0
  377. package/dist/integrations/sharepoint/files/ai/tools/get-file.ts +93 -0
  378. package/dist/integrations/sharepoint/files/ai/tools/get-site.ts +51 -0
  379. package/dist/integrations/sharepoint/files/ai/tools/list-files.ts +63 -0
  380. package/dist/integrations/sharepoint/files/ai/tools/list-sites.ts +28 -0
  381. package/dist/integrations/sharepoint/files/ai/tools/upload-file.ts +72 -0
  382. package/dist/integrations/sharepoint/files/app/api/auth/sharepoint/callback/route.ts +11 -0
  383. package/dist/integrations/sharepoint/files/app/api/auth/sharepoint/route.ts +9 -0
  384. package/dist/integrations/sharepoint/files/lib/sharepoint-client.ts +420 -0
  385. package/dist/integrations/sharepoint/files/lib/token-store.ts +5 -0
  386. package/dist/integrations/sheets/README.md +331 -0
  387. package/dist/integrations/sheets/connector.json +99 -0
  388. package/dist/integrations/sheets/files/_env.example +8 -0
  389. package/dist/integrations/sheets/files/ai/tools/create-spreadsheet.ts +85 -0
  390. package/dist/integrations/sheets/files/ai/tools/get-spreadsheet.ts +39 -0
  391. package/dist/integrations/sheets/files/ai/tools/list-spreadsheets.ts +41 -0
  392. package/dist/integrations/sheets/files/ai/tools/read-range.ts +35 -0
  393. package/dist/integrations/sheets/files/ai/tools/write-range.ts +51 -0
  394. package/dist/integrations/sheets/files/app/api/auth/sheets/callback/route.ts +11 -0
  395. package/dist/integrations/sheets/files/app/api/auth/sheets/route.ts +9 -0
  396. package/dist/integrations/sheets/files/lib/sheets-client.ts +425 -0
  397. package/dist/integrations/sheets/files/lib/token-store.ts +5 -0
  398. package/dist/integrations/shopify/connector.json +99 -0
  399. package/dist/integrations/shopify/files/_env.example +5 -0
  400. package/dist/integrations/shopify/files/ai/tools/get-order.ts +49 -0
  401. package/dist/integrations/shopify/files/ai/tools/get-product.ts +39 -0
  402. package/dist/integrations/shopify/files/ai/tools/list-customers.ts +40 -0
  403. package/dist/integrations/shopify/files/ai/tools/list-orders.ts +52 -0
  404. package/dist/integrations/shopify/files/ai/tools/list-products.ts +39 -0
  405. package/dist/integrations/shopify/files/app/api/auth/shopify/callback/route.ts +11 -0
  406. package/dist/integrations/shopify/files/app/api/auth/shopify/route.ts +7 -0
  407. package/dist/integrations/shopify/files/lib/shopify-client.ts +198 -0
  408. package/dist/integrations/shopify/files/lib/token-store.ts +11 -0
  409. package/dist/integrations/slack/files/app/api/auth/slack/callback/route.ts +6 -127
  410. package/dist/integrations/slack/files/app/api/auth/slack/route.ts +4 -24
  411. package/dist/integrations/slack/files/lib/token-store.ts +2 -110
  412. package/dist/integrations/snowflake/connector.json +151 -0
  413. package/dist/integrations/snowflake/files/_env.example +16 -0
  414. package/dist/integrations/snowflake/files/ai/tools/describe-table.ts +57 -0
  415. package/dist/integrations/snowflake/files/ai/tools/list-databases.ts +34 -0
  416. package/dist/integrations/snowflake/files/ai/tools/list-schemas.ts +40 -0
  417. package/dist/integrations/snowflake/files/ai/tools/list-tables.ts +49 -0
  418. package/dist/integrations/snowflake/files/ai/tools/run-query.ts +119 -0
  419. package/dist/integrations/snowflake/files/lib/snowflake-client.ts +389 -0
  420. package/dist/integrations/snowflake/files/lib/token-store.ts +77 -0
  421. package/dist/integrations/stripe/connector.json +97 -0
  422. package/dist/integrations/stripe/files/_env.example +6 -0
  423. package/dist/integrations/stripe/files/ai/tools/get-balance.ts +28 -0
  424. package/dist/integrations/stripe/files/ai/tools/get-customer.ts +26 -0
  425. package/dist/integrations/stripe/files/ai/tools/list-customers.ts +42 -0
  426. package/dist/integrations/stripe/files/ai/tools/list-payments.ts +45 -0
  427. package/dist/integrations/stripe/files/ai/tools/list-subscriptions.ts +67 -0
  428. package/dist/integrations/stripe/files/app/api/auth/stripe/route.ts +71 -0
  429. package/dist/integrations/stripe/files/lib/stripe-client.ts +376 -0
  430. package/dist/integrations/stripe/files/lib/token-store.ts +21 -0
  431. package/dist/integrations/supabase/connector.json +101 -0
  432. package/dist/integrations/supabase/files/_env.example +6 -0
  433. package/dist/integrations/supabase/files/ai/tools/delete-row.ts +77 -0
  434. package/dist/integrations/supabase/files/ai/tools/insert-row.ts +35 -0
  435. package/dist/integrations/supabase/files/ai/tools/list-tables.ts +60 -0
  436. package/dist/integrations/supabase/files/ai/tools/query-table.ts +48 -0
  437. package/dist/integrations/supabase/files/ai/tools/update-row.ts +64 -0
  438. package/dist/integrations/supabase/files/app/api/auth/supabase/route.ts +91 -0
  439. package/dist/integrations/supabase/files/lib/supabase-client.ts +296 -0
  440. package/dist/integrations/supabase/files/lib/token-store.ts +47 -0
  441. package/dist/integrations/teams/README.md +256 -0
  442. package/dist/integrations/teams/connector.json +99 -0
  443. package/dist/integrations/teams/files/ai/tools/get-messages.ts +55 -0
  444. package/dist/integrations/teams/files/ai/tools/list-channels.ts +28 -0
  445. package/dist/integrations/teams/files/ai/tools/list-chats.ts +41 -0
  446. package/dist/integrations/teams/files/ai/tools/list-teams.ts +27 -0
  447. package/dist/integrations/teams/files/ai/tools/send-message.ts +61 -0
  448. package/dist/integrations/teams/files/app/api/auth/teams/callback/route.ts +11 -0
  449. package/dist/integrations/teams/files/app/api/auth/teams/route.ts +9 -0
  450. package/dist/integrations/teams/files/lib/teams-client.ts +345 -0
  451. package/dist/integrations/teams/files/lib/token-store.ts +5 -0
  452. package/dist/integrations/trello/connector.json +85 -0
  453. package/dist/integrations/trello/files/_env.example +4 -0
  454. package/dist/integrations/trello/files/ai/tools/create-card.ts +54 -0
  455. package/dist/integrations/trello/files/ai/tools/get-card.ts +33 -0
  456. package/dist/integrations/trello/files/ai/tools/list-boards.ts +29 -0
  457. package/dist/integrations/trello/files/ai/tools/list-cards.ts +52 -0
  458. package/dist/integrations/trello/files/ai/tools/update-card.ts +65 -0
  459. package/dist/integrations/trello/files/app/api/auth/trello/callback/route.ts +11 -0
  460. package/dist/integrations/trello/files/app/api/auth/trello/route.ts +7 -0
  461. package/dist/integrations/trello/files/lib/token-store.ts +11 -0
  462. package/dist/integrations/trello/files/lib/trello-client.ts +202 -0
  463. package/dist/integrations/twilio/connector.json +146 -0
  464. package/dist/integrations/twilio/files/_env.example +14 -0
  465. package/dist/integrations/twilio/files/ai/tools/get-message.ts +58 -0
  466. package/dist/integrations/twilio/files/ai/tools/list-calls.ts +129 -0
  467. package/dist/integrations/twilio/files/ai/tools/list-messages.ts +97 -0
  468. package/dist/integrations/twilio/files/ai/tools/send-sms.ts +75 -0
  469. package/dist/integrations/twilio/files/ai/tools/send-whatsapp.ts +81 -0
  470. package/dist/integrations/twilio/files/lib/token-store.ts +60 -0
  471. package/dist/integrations/twilio/files/lib/twilio-client.ts +375 -0
  472. package/dist/integrations/twitter/connector.json +87 -0
  473. package/dist/integrations/twitter/files/_env.example +6 -0
  474. package/dist/integrations/twitter/files/ai/tools/get-timeline.ts +59 -0
  475. package/dist/integrations/twitter/files/ai/tools/post-tweet.ts +49 -0
  476. package/dist/integrations/twitter/files/ai/tools/search-tweets.ts +71 -0
  477. package/dist/integrations/twitter/files/app/api/auth/twitter/callback/route.ts +11 -0
  478. package/dist/integrations/twitter/files/app/api/auth/twitter/route.ts +9 -0
  479. package/dist/integrations/twitter/files/lib/token-store.ts +5 -0
  480. package/dist/integrations/twitter/files/lib/twitter-client.ts +236 -0
  481. package/dist/integrations/webex/connector.json +85 -0
  482. package/dist/integrations/webex/files/_env.example +4 -0
  483. package/dist/integrations/webex/files/ai/tools/create-meeting.ts +69 -0
  484. package/dist/integrations/webex/files/ai/tools/get-meeting.ts +31 -0
  485. package/dist/integrations/webex/files/ai/tools/list-meetings.ts +44 -0
  486. package/dist/integrations/webex/files/ai/tools/list-rooms.ts +35 -0
  487. package/dist/integrations/webex/files/ai/tools/send-message.ts +51 -0
  488. package/dist/integrations/webex/files/app/api/auth/webex/callback/route.ts +11 -0
  489. package/dist/integrations/webex/files/app/api/auth/webex/route.ts +7 -0
  490. package/dist/integrations/webex/files/lib/token-store.ts +11 -0
  491. package/dist/integrations/webex/files/lib/webex-client.ts +279 -0
  492. package/dist/integrations/xero/connector.json +85 -0
  493. package/dist/integrations/xero/files/_env.example +4 -0
  494. package/dist/integrations/xero/files/ai/tools/create-invoice.ts +65 -0
  495. package/dist/integrations/xero/files/ai/tools/get-contact.ts +40 -0
  496. package/dist/integrations/xero/files/ai/tools/get-invoice.ts +44 -0
  497. package/dist/integrations/xero/files/ai/tools/list-contacts.ts +54 -0
  498. package/dist/integrations/xero/files/ai/tools/list-invoices.ts +54 -0
  499. package/dist/integrations/xero/files/app/api/auth/xero/callback/route.ts +11 -0
  500. package/dist/integrations/xero/files/app/api/auth/xero/route.ts +7 -0
  501. package/dist/integrations/xero/files/lib/token-store.ts +11 -0
  502. package/dist/integrations/xero/files/lib/xero-client.ts +292 -0
  503. package/dist/integrations/zendesk/connector.json +61 -0
  504. package/dist/integrations/zendesk/files/_env.example +5 -0
  505. package/dist/integrations/zendesk/files/ai/tools/create-ticket.ts +82 -0
  506. package/dist/integrations/zendesk/files/ai/tools/get-ticket.ts +53 -0
  507. package/dist/integrations/zendesk/files/ai/tools/list-tickets.ts +60 -0
  508. package/dist/integrations/zendesk/files/ai/tools/search-tickets.ts +56 -0
  509. package/dist/integrations/zendesk/files/app/api/auth/zendesk/callback/route.ts +91 -0
  510. package/dist/integrations/zendesk/files/app/api/auth/zendesk/route.ts +41 -0
  511. package/dist/integrations/zendesk/files/lib/token-store.ts +47 -0
  512. package/dist/integrations/zendesk/files/lib/zendesk-client.ts +265 -0
  513. package/dist/integrations/zoom/connector.json +85 -0
  514. package/dist/integrations/zoom/files/_env.example +4 -0
  515. package/dist/integrations/zoom/files/ai/tools/create-meeting.ts +106 -0
  516. package/dist/integrations/zoom/files/ai/tools/delete-meeting.ts +32 -0
  517. package/dist/integrations/zoom/files/ai/tools/get-meeting.ts +44 -0
  518. package/dist/integrations/zoom/files/ai/tools/list-meetings.ts +47 -0
  519. package/dist/integrations/zoom/files/ai/tools/update-meeting.ts +111 -0
  520. package/dist/integrations/zoom/files/app/api/auth/zoom/callback/route.ts +11 -0
  521. package/dist/integrations/zoom/files/app/api/auth/zoom/route.ts +7 -0
  522. package/dist/integrations/zoom/files/lib/token-store.ts +11 -0
  523. package/dist/integrations/zoom/files/lib/zoom-client.ts +228 -0
  524. package/dist/oauth/handlers.js +554 -0
  525. package/dist/oauth/handlers.js.map +7 -0
  526. package/dist/oauth/index.js +1157 -0
  527. package/dist/oauth/index.js.map +7 -0
  528. package/dist/oauth/providers.js +927 -0
  529. package/dist/oauth/providers.js.map +7 -0
  530. package/dist/oauth/token-store.js +82 -0
  531. package/dist/oauth/token-store.js.map +7 -0
  532. package/package.json +25 -1
  533. package/dist/integrations/gmail/files/lib/oauth.ts +0 -145
  534. package/dist/integrations/slack/files/lib/oauth.ts +0 -145
  535. /package/dist/integrations/{calendar → docs-google}/files/lib/oauth.ts +0 -0
  536. /package/dist/integrations/{github → drive}/files/lib/oauth.ts +0 -0
@@ -0,0 +1,96 @@
1
+ {
2
+ "name": "mixpanel",
3
+ "displayName": "Mixpanel",
4
+ "icon": "mixpanel.svg",
5
+ "description": "Track events, analyze funnels, and understand user behavior with Mixpanel analytics",
6
+ "auth": {
7
+ "type": "api-key",
8
+ "keyName": "MIXPANEL_PROJECT_TOKEN",
9
+ "requiredApis": [
10
+ {
11
+ "name": "Mixpanel API",
12
+ "enableUrl": "https://mixpanel.com/settings/project"
13
+ }
14
+ ]
15
+ },
16
+ "envVars": [
17
+ {
18
+ "name": "MIXPANEL_PROJECT_TOKEN",
19
+ "description": "Mixpanel Project Token for event tracking",
20
+ "required": true,
21
+ "sensitive": true,
22
+ "docsUrl": "https://docs.mixpanel.com/docs/tracking-methods/id-management/authentication"
23
+ },
24
+ {
25
+ "name": "MIXPANEL_API_SECRET",
26
+ "description": "Mixpanel API Secret for data export and query operations",
27
+ "required": true,
28
+ "sensitive": true,
29
+ "docsUrl": "https://developer.mixpanel.com/reference/authentication"
30
+ },
31
+ {
32
+ "name": "MIXPANEL_PROJECT_ID",
33
+ "description": "Mixpanel Project ID (found in project settings)",
34
+ "required": true,
35
+ "sensitive": false,
36
+ "docsUrl": "https://docs.mixpanel.com/docs/admin/organizations-projects/manage-projects"
37
+ }
38
+ ],
39
+ "tools": [
40
+ {
41
+ "id": "track-event",
42
+ "name": "Track Event",
43
+ "description": "Track a custom event in Mixpanel with properties",
44
+ "requiresWrite": true
45
+ },
46
+ {
47
+ "id": "query-events",
48
+ "name": "Query Events",
49
+ "description": "Query and export event data from Mixpanel",
50
+ "requiresWrite": false
51
+ },
52
+ {
53
+ "id": "get-funnel",
54
+ "name": "Get Funnel",
55
+ "description": "Retrieve funnel analysis data to understand conversion rates",
56
+ "requiresWrite": false
57
+ },
58
+ {
59
+ "id": "get-retention",
60
+ "name": "Get Retention",
61
+ "description": "Analyze user retention cohorts over time",
62
+ "requiresWrite": false
63
+ },
64
+ {
65
+ "id": "list-cohorts",
66
+ "name": "List Cohorts",
67
+ "description": "List all user cohorts defined in your Mixpanel project",
68
+ "requiresWrite": false
69
+ }
70
+ ],
71
+ "prompts": [
72
+ {
73
+ "id": "event-analysis",
74
+ "title": "Event analysis",
75
+ "prompt": "Show me the most important events tracked in my Mixpanel project over the last 7 days and their trends.",
76
+ "category": "analytics",
77
+ "icon": "chart"
78
+ },
79
+ {
80
+ "id": "funnel-performance",
81
+ "title": "Funnel performance",
82
+ "prompt": "Analyze my key conversion funnels and identify where users are dropping off.",
83
+ "category": "analytics",
84
+ "icon": "funnel"
85
+ },
86
+ {
87
+ "id": "retention-insights",
88
+ "title": "Retention insights",
89
+ "prompt": "Give me insights about user retention and cohort behavior over the past month.",
90
+ "category": "analytics",
91
+ "icon": "users"
92
+ }
93
+ ],
94
+ "suggestedWith": ["slack", "analytics", "monitoring"],
95
+ "SETUP_GUIDE": "# Mixpanel Integration Setup\n\n## Step 1: Get Your Project Token\n1. Log in to your Mixpanel account at https://mixpanel.com\n2. Navigate to your project settings\n3. Under 'Project Settings', find your **Project Token**\n4. Copy the token and add it as `MIXPANEL_PROJECT_TOKEN` in your .env file\n\n## Step 2: Get Your API Secret\n1. In Mixpanel, go to Settings > Project Settings\n2. Scroll to 'Service Accounts' section\n3. Create a new Service Account or use an existing one\n4. Copy the **API Secret** and add it as `MIXPANEL_API_SECRET` in your .env file\n\n## Step 3: Get Your Project ID\n1. In Mixpanel project settings URL, your Project ID is the number in the URL\n2. Format: https://mixpanel.com/project/YOUR_PROJECT_ID/settings\n3. Copy this ID and add it as `MIXPANEL_PROJECT_ID` in your .env file\n\n## Step 4: Set Up Environment Variables\nAdd these to your `.env` file:\n```\nMIXPANEL_PROJECT_TOKEN=your_project_token_here\nMIXPANEL_API_SECRET=your_api_secret_here\nMIXPANEL_PROJECT_ID=your_project_id_here\n```\n\n## Step 5: Test the Integration\nRun your application and try tracking a test event to verify the setup is working correctly.\n\n## Important Notes\n- **Project Token** is used for tracking events (ingestion)\n- **API Secret** is used for querying and exporting data\n- Keep both credentials secure and never commit them to version control\n- For production deployments, use environment variables or secure secret management\n\n## Useful Resources\n- [Mixpanel API Documentation](https://developer.mixpanel.com/reference/overview)\n- [Event Tracking Guide](https://docs.mixpanel.com/docs/tracking-methods/sdks)\n- [Query API Guide](https://developer.mixpanel.com/reference/query-api)"
96
+ }
@@ -0,0 +1,11 @@
1
+ # Mixpanel Integration
2
+ # Get your credentials at https://mixpanel.com/settings/project
3
+
4
+ # Project Token - used for tracking events (ingestion)
5
+ MIXPANEL_PROJECT_TOKEN=your_project_token_here
6
+
7
+ # API Secret - used for querying and exporting data
8
+ MIXPANEL_API_SECRET=your_api_secret_here
9
+
10
+ # Project ID - found in your project settings URL
11
+ MIXPANEL_PROJECT_ID=your_project_id_here
@@ -0,0 +1,46 @@
1
+ import { tool } from "veryfront/ai";
2
+ import { z } from "zod";
3
+ import { getFunnel, calculateFunnelConversionRate } from "../../lib/mixpanel-client.ts";
4
+
5
+ export default tool({
6
+ id: "get-funnel",
7
+ description:
8
+ "Retrieve funnel analysis data from Mixpanel. Analyze conversion rates and user drop-off at each step of a funnel.",
9
+ inputSchema: z.object({
10
+ funnelId: z.number().describe(
11
+ "The numeric ID of the funnel (found in Mixpanel funnel URL or settings)",
12
+ ),
13
+ from: z.string().describe(
14
+ "Start date in YYYY-MM-DD format (e.g., '2024-01-01')",
15
+ ),
16
+ to: z.string().describe(
17
+ "End date in YYYY-MM-DD format (e.g., '2024-01-31')",
18
+ ),
19
+ }),
20
+ async execute({ funnelId, from, to }) {
21
+ const funnel = await getFunnel(funnelId, from, to);
22
+
23
+ const overallConversionRate = calculateFunnelConversionRate(funnel);
24
+
25
+ return {
26
+ funnelId: funnel.funnel_id,
27
+ name: funnel.name,
28
+ dateRange: {
29
+ from,
30
+ to,
31
+ },
32
+ overallConversionRate: `${overallConversionRate.toFixed(2)}%`,
33
+ steps: funnel.steps.map((step, index) => ({
34
+ stepNumber: index + 1,
35
+ event: step.event,
36
+ count: step.count,
37
+ overallConversionRate: `${(step.overall_conv_ratio * 100).toFixed(2)}%`,
38
+ stepConversionRate: `${(step.step_conv_ratio * 100).toFixed(2)}%`,
39
+ averageTime: step.avg_time
40
+ ? `${(step.avg_time / 60).toFixed(1)} minutes`
41
+ : "N/A",
42
+ })),
43
+ data: funnel.data,
44
+ };
45
+ },
46
+ });
@@ -0,0 +1,64 @@
1
+ import { tool } from "veryfront/ai";
2
+ import { z } from "zod";
3
+ import { getRetention } from "../../lib/mixpanel-client.ts";
4
+
5
+ export default tool({
6
+ id: "get-retention",
7
+ description:
8
+ "Analyze user retention cohorts in Mixpanel. Understand how many users return after performing an initial event.",
9
+ inputSchema: z.object({
10
+ from: z.string().describe(
11
+ "Start date in YYYY-MM-DD format (e.g., '2024-01-01')",
12
+ ),
13
+ to: z.string().describe(
14
+ "End date in YYYY-MM-DD format (e.g., '2024-01-31')",
15
+ ),
16
+ event: z.string().describe(
17
+ "The event to analyze retention for (e.g., 'App Opened', 'Sign Up')",
18
+ ),
19
+ retentionType: z.enum(["birth", "compounded"]).optional().default("birth")
20
+ .describe(
21
+ "Retention type: 'birth' (first time users) or 'compounded' (all users who did the event)",
22
+ ),
23
+ }),
24
+ async execute({ from, to, event, retentionType }) {
25
+ const retention = await getRetention(from, to, event, retentionType);
26
+
27
+ return {
28
+ event,
29
+ retentionType,
30
+ dateRange: {
31
+ from,
32
+ to,
33
+ },
34
+ cohorts: retention.map((cohort) => ({
35
+ date: cohort.date,
36
+ initialCount: cohort.count,
37
+ retention: cohort.retention.map((r) => ({
38
+ day: r.day,
39
+ count: r.count,
40
+ rate: `${(r.rate * 100).toFixed(2)}%`,
41
+ })),
42
+ })),
43
+ summary: {
44
+ totalCohorts: retention.length,
45
+ averageDay1Retention: retention.length > 0
46
+ ? `${(
47
+ retention.reduce((sum, c) => {
48
+ const day1 = c.retention.find((r) => r.day === 1);
49
+ return sum + (day1 ? day1.rate : 0);
50
+ }, 0) / retention.length * 100
51
+ ).toFixed(2)}%`
52
+ : "N/A",
53
+ averageDay7Retention: retention.length > 0
54
+ ? `${(
55
+ retention.reduce((sum, c) => {
56
+ const day7 = c.retention.find((r) => r.day === 7);
57
+ return sum + (day7 ? day7.rate : 0);
58
+ }, 0) / retention.length * 100
59
+ ).toFixed(2)}%`
60
+ : "N/A",
61
+ },
62
+ };
63
+ },
64
+ });
@@ -0,0 +1,46 @@
1
+ import { tool } from "veryfront/ai";
2
+ import { z } from "zod";
3
+ import { listCohorts } from "../../lib/mixpanel-client.ts";
4
+
5
+ export default tool({
6
+ id: "list-cohorts",
7
+ description:
8
+ "List all user cohorts defined in your Mixpanel project. Cohorts are saved user segments based on properties or behaviors.",
9
+ inputSchema: z.object({
10
+ includeHidden: z.boolean().optional().default(false).describe(
11
+ "Include hidden cohorts in the results (defaults to false)",
12
+ ),
13
+ }),
14
+ async execute({ includeHidden }) {
15
+ const allCohorts = await listCohorts();
16
+
17
+ // Filter by visibility if needed
18
+ const cohorts = includeHidden
19
+ ? allCohorts
20
+ : allCohorts.filter((c) => c.is_visible);
21
+
22
+ return {
23
+ total: cohorts.length,
24
+ cohorts: cohorts.map((cohort) => ({
25
+ id: cohort.id,
26
+ name: cohort.name,
27
+ description: cohort.description,
28
+ count: cohort.count,
29
+ created: cohort.created,
30
+ isVisible: cohort.is_visible,
31
+ projectId: cohort.project_id,
32
+ })),
33
+ summary: {
34
+ totalUsers: cohorts.reduce((sum, c) => sum + c.count, 0),
35
+ largestCohort: cohorts.length > 0
36
+ ? cohorts.reduce((max, c) => (c.count > max.count ? c : max))
37
+ .name
38
+ : "N/A",
39
+ smallestCohort: cohorts.length > 0
40
+ ? cohorts.reduce((min, c) => (c.count < min.count ? c : min))
41
+ .name
42
+ : "N/A",
43
+ },
44
+ };
45
+ },
46
+ });
@@ -0,0 +1,43 @@
1
+ import { tool } from "veryfront/ai";
2
+ import { z } from "zod";
3
+ import { queryEvents, getDateRange } from "../../lib/mixpanel-client.ts";
4
+
5
+ export default tool({
6
+ id: "query-events",
7
+ description:
8
+ "Query and export event data from Mixpanel. Retrieve events within a date range, optionally filtered by event name.",
9
+ inputSchema: z.object({
10
+ from: z.string().describe(
11
+ "Start date in YYYY-MM-DD format (e.g., '2024-01-01')",
12
+ ),
13
+ to: z.string().describe(
14
+ "End date in YYYY-MM-DD format (e.g., '2024-01-31')",
15
+ ),
16
+ event: z.string().optional().describe(
17
+ "Optional: Filter by specific event name (e.g., 'Page Viewed'). If not provided, returns all events.",
18
+ ),
19
+ limit: z.number().optional().default(100).describe(
20
+ "Maximum number of events to return (defaults to 100)",
21
+ ),
22
+ }),
23
+ async execute({ from, to, event, limit }) {
24
+ const events = await queryEvents(from, to, event);
25
+
26
+ // Limit results
27
+ const limitedEvents = events.slice(0, limit);
28
+
29
+ return {
30
+ total: events.length,
31
+ returned: limitedEvents.length,
32
+ dateRange: {
33
+ from,
34
+ to,
35
+ },
36
+ eventFilter: event || "all",
37
+ events: limitedEvents.map((e) => ({
38
+ event: e.event,
39
+ properties: e.properties,
40
+ })),
41
+ };
42
+ },
43
+ });
@@ -0,0 +1,41 @@
1
+ import { tool } from "veryfront/ai";
2
+ import { z } from "zod";
3
+ import { trackEvent } from "../../lib/mixpanel-client.ts";
4
+
5
+ export default tool({
6
+ id: "track-event",
7
+ description:
8
+ "Track a custom event in Mixpanel. Capture user actions, page views, or any custom analytics event with properties.",
9
+ inputSchema: z.object({
10
+ event: z.string().describe(
11
+ "Event name (e.g., 'Button Clicked', 'Page Viewed', 'Purchase Completed')",
12
+ ),
13
+ distinctId: z.string().describe(
14
+ "Unique identifier for the user or session (e.g., user ID, email, or anonymous ID)",
15
+ ),
16
+ properties: z.record(z.unknown()).optional().describe(
17
+ "Additional properties to attach to the event (e.g., {product_id: '123', price: 29.99, category: 'electronics'})",
18
+ ),
19
+ }),
20
+ async execute({ event, distinctId, properties }) {
21
+ const result = await trackEvent(event, properties || {}, distinctId);
22
+
23
+ if (result.status === 1) {
24
+ return {
25
+ success: true,
26
+ event: {
27
+ name: event,
28
+ distinctId,
29
+ properties: properties || {},
30
+ timestamp: new Date().toISOString(),
31
+ },
32
+ message: "Event tracked successfully",
33
+ };
34
+ } else {
35
+ return {
36
+ success: false,
37
+ error: result.error || "Failed to track event",
38
+ };
39
+ }
40
+ },
41
+ });
@@ -0,0 +1,319 @@
1
+ import { getProjectToken, getApiSecret, getProjectId } from "./token-store.ts";
2
+
3
+ const MIXPANEL_API_BASE = "https://mixpanel.com/api";
4
+ const MIXPANEL_TRACK_BASE = "https://api.mixpanel.com";
5
+ const MIXPANEL_DATA_BASE = "https://data.mixpanel.com/api/2.0";
6
+
7
+ // Types
8
+ export interface MixpanelEvent {
9
+ event: string;
10
+ properties: Record<string, unknown>;
11
+ }
12
+
13
+ export interface MixpanelEventQuery {
14
+ event?: string;
15
+ from_date: string;
16
+ to_date: string;
17
+ where?: string;
18
+ limit?: number;
19
+ }
20
+
21
+ export interface MixpanelEventResult {
22
+ event: string;
23
+ properties: Record<string, unknown>;
24
+ }
25
+
26
+ export interface MixpanelFunnel {
27
+ funnel_id: number;
28
+ name: string;
29
+ steps: Array<{
30
+ event: string;
31
+ count: number;
32
+ avg_time: number | null;
33
+ overall_conv_ratio: number;
34
+ step_conv_ratio: number;
35
+ }>;
36
+ data: {
37
+ series: string[];
38
+ values: Record<string, number[]>;
39
+ };
40
+ }
41
+
42
+ export interface MixpanelRetention {
43
+ date: string;
44
+ count: number;
45
+ retention: Array<{
46
+ day: number;
47
+ count: number;
48
+ rate: number;
49
+ }>;
50
+ }
51
+
52
+ export interface MixpanelCohort {
53
+ id: number;
54
+ name: string;
55
+ description: string;
56
+ count: number;
57
+ created: string;
58
+ is_visible: boolean;
59
+ project_id: number;
60
+ }
61
+
62
+ interface MixpanelError {
63
+ error: string;
64
+ request: string;
65
+ }
66
+
67
+ // Helper function to create basic auth header
68
+ function getAuthHeader(): string {
69
+ const apiSecret = getApiSecret();
70
+ if (!apiSecret) {
71
+ throw new Error(
72
+ "Not authenticated with Mixpanel. Please set MIXPANEL_API_SECRET.",
73
+ );
74
+ }
75
+ // Mixpanel uses Basic auth with API secret as username and empty password
76
+ const credentials = btoa(`${apiSecret}:`);
77
+ return `Basic ${credentials}`;
78
+ }
79
+
80
+ // Helper function for Mixpanel API calls with auth
81
+ async function mixpanelFetch<T>(
82
+ baseUrl: string,
83
+ endpoint: string,
84
+ options: RequestInit & { params?: Record<string, string | number | boolean> } = {},
85
+ ): Promise<T> {
86
+ // Build URL with query parameters
87
+ let url = `${baseUrl}${endpoint}`;
88
+ if (options.params) {
89
+ const params = new URLSearchParams();
90
+ Object.entries(options.params).forEach(([key, value]) => {
91
+ params.append(key, String(value));
92
+ });
93
+ url += `?${params.toString()}`;
94
+ }
95
+
96
+ const headers: Record<string, string> = {
97
+ "Content-Type": "application/json",
98
+ ...options.headers as Record<string, string>,
99
+ };
100
+
101
+ // Add auth header for data API calls
102
+ if (baseUrl === MIXPANEL_DATA_BASE || baseUrl === MIXPANEL_API_BASE) {
103
+ headers["Authorization"] = getAuthHeader();
104
+ }
105
+
106
+ const response = await fetch(url, {
107
+ ...options,
108
+ headers,
109
+ });
110
+
111
+ if (!response.ok) {
112
+ let errorMessage = `Mixpanel API error: ${response.status} ${response.statusText}`;
113
+ try {
114
+ const errorData = await response.json() as MixpanelError;
115
+ if (errorData.error) {
116
+ errorMessage = `Mixpanel API error: ${errorData.error}`;
117
+ }
118
+ } catch {
119
+ // If parsing JSON fails, use default error message
120
+ }
121
+ throw new Error(errorMessage);
122
+ }
123
+
124
+ const data = await response.json();
125
+ return data as T;
126
+ }
127
+
128
+ // Track event - uses ingestion API with project token
129
+ export async function trackEvent(
130
+ event: string,
131
+ properties: Record<string, unknown>,
132
+ distinctId: string,
133
+ ): Promise<{ status: number; error?: string }> {
134
+ const projectToken = getProjectToken();
135
+ if (!projectToken) {
136
+ throw new Error(
137
+ "Not authenticated with Mixpanel. Please set MIXPANEL_PROJECT_TOKEN.",
138
+ );
139
+ }
140
+
141
+ const payload = {
142
+ event,
143
+ properties: {
144
+ ...properties,
145
+ token: projectToken,
146
+ distinct_id: distinctId,
147
+ time: Date.now(),
148
+ },
149
+ };
150
+
151
+ const response = await fetch(`${MIXPANEL_TRACK_BASE}/track`, {
152
+ method: "POST",
153
+ headers: {
154
+ "Content-Type": "application/json",
155
+ },
156
+ body: JSON.stringify([payload]),
157
+ });
158
+
159
+ if (!response.ok) {
160
+ const text = await response.text();
161
+ return {
162
+ status: 0,
163
+ error: `Failed to track event: ${response.status} ${text}`,
164
+ };
165
+ }
166
+
167
+ const result = await response.json() as { status: number; error?: string };
168
+ return result;
169
+ }
170
+
171
+ // Query events - uses export API
172
+ export async function queryEvents(
173
+ from: string,
174
+ to: string,
175
+ event?: string,
176
+ ): Promise<MixpanelEventResult[]> {
177
+ const projectId = getProjectId();
178
+ if (!projectId) {
179
+ throw new Error("Project ID not set. Please set MIXPANEL_PROJECT_ID.");
180
+ }
181
+
182
+ const params: Record<string, string> = {
183
+ from_date: from,
184
+ to_date: to,
185
+ };
186
+
187
+ if (event) {
188
+ params.event = JSON.stringify([event]);
189
+ }
190
+
191
+ const response = await mixpanelFetch<string[]>(
192
+ MIXPANEL_DATA_BASE,
193
+ "/export",
194
+ { params },
195
+ );
196
+
197
+ // Parse JSONL response (each line is a JSON object)
198
+ const events: MixpanelEventResult[] = [];
199
+ if (Array.isArray(response)) {
200
+ for (const line of response) {
201
+ if (typeof line === "string" && line.trim()) {
202
+ try {
203
+ const parsed = JSON.parse(line);
204
+ events.push({
205
+ event: parsed.event,
206
+ properties: parsed.properties,
207
+ });
208
+ } catch {
209
+ // Skip malformed lines
210
+ }
211
+ }
212
+ }
213
+ }
214
+
215
+ return events;
216
+ }
217
+
218
+ // Get funnel data
219
+ export async function getFunnel(
220
+ funnelId: number,
221
+ from: string,
222
+ to: string,
223
+ ): Promise<MixpanelFunnel> {
224
+ const params: Record<string, string | number> = {
225
+ funnel_id: funnelId,
226
+ from_date: from,
227
+ to_date: to,
228
+ unit: "day",
229
+ };
230
+
231
+ return mixpanelFetch<MixpanelFunnel>(
232
+ MIXPANEL_DATA_BASE,
233
+ "/funnels",
234
+ { params },
235
+ );
236
+ }
237
+
238
+ // Get retention data
239
+ export async function getRetention(
240
+ from: string,
241
+ to: string,
242
+ event: string,
243
+ retentionType: "birth" | "compounded" = "birth",
244
+ ): Promise<MixpanelRetention[]> {
245
+ const params: Record<string, string> = {
246
+ from_date: from,
247
+ to_date: to,
248
+ retention_type: retentionType,
249
+ born_event: event,
250
+ event,
251
+ unit: "day",
252
+ };
253
+
254
+ const response = await mixpanelFetch<Record<string, MixpanelRetention>>(
255
+ MIXPANEL_DATA_BASE,
256
+ "/retention",
257
+ { params },
258
+ );
259
+
260
+ // Convert object to array
261
+ return Object.entries(response).map(([date, data]) => ({
262
+ date,
263
+ ...data,
264
+ }));
265
+ }
266
+
267
+ // List cohorts
268
+ export async function listCohorts(): Promise<MixpanelCohort[]> {
269
+ const projectId = getProjectId();
270
+ if (!projectId) {
271
+ throw new Error("Project ID not set. Please set MIXPANEL_PROJECT_ID.");
272
+ }
273
+
274
+ const response = await mixpanelFetch<MixpanelCohort[]>(
275
+ MIXPANEL_API_BASE,
276
+ `/2.0/cohorts/list`,
277
+ {
278
+ params: {
279
+ project_id: projectId,
280
+ },
281
+ },
282
+ );
283
+
284
+ return response;
285
+ }
286
+
287
+ // Helper functions
288
+ export function formatDate(date: Date): string {
289
+ const year = date.getFullYear();
290
+ const month = String(date.getMonth() + 1).padStart(2, "0");
291
+ const day = String(date.getDate()).padStart(2, "0");
292
+ return `${year}-${month}-${day}`;
293
+ }
294
+
295
+ export function getDateRange(days: number): { from: string; to: string } {
296
+ const to = new Date();
297
+ const from = new Date();
298
+ from.setDate(from.getDate() - days);
299
+
300
+ return {
301
+ from: formatDate(from),
302
+ to: formatDate(to),
303
+ };
304
+ }
305
+
306
+ export function calculateFunnelConversionRate(funnel: MixpanelFunnel): number {
307
+ if (!funnel.steps || funnel.steps.length < 2) {
308
+ return 0;
309
+ }
310
+
311
+ const firstStep = funnel.steps[0];
312
+ const lastStep = funnel.steps[funnel.steps.length - 1];
313
+
314
+ if (!firstStep || !lastStep || firstStep.count === 0) {
315
+ return 0;
316
+ }
317
+
318
+ return (lastStep.count / firstStep.count) * 100;
319
+ }