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