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