integrate-sdk 0.8.74-dev.0 → 0.8.76-dev.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/dist/adapters/auto-routes.js +44 -1
  2. package/dist/adapters/base-handler.d.ts +5 -0
  3. package/dist/adapters/base-handler.d.ts.map +1 -1
  4. package/dist/adapters/index.js +44 -1
  5. package/dist/adapters/nextjs.js +44 -1
  6. package/dist/adapters/node.js +44 -1
  7. package/dist/adapters/svelte-kit.js +44 -1
  8. package/dist/adapters/tanstack-start.js +44 -1
  9. package/dist/index.js +44 -1
  10. package/dist/oauth.js +44 -1
  11. package/dist/server.js +44 -1
  12. package/dist/src/adapters/base-handler.d.ts +5 -0
  13. package/dist/src/adapters/base-handler.d.ts.map +1 -1
  14. package/dist/src/integrations/airtable.d.ts +2 -0
  15. package/dist/src/integrations/airtable.d.ts.map +1 -1
  16. package/dist/src/integrations/calcom.d.ts +2 -0
  17. package/dist/src/integrations/calcom.d.ts.map +1 -1
  18. package/dist/src/integrations/figma.d.ts +2 -0
  19. package/dist/src/integrations/figma.d.ts.map +1 -1
  20. package/dist/src/integrations/gcal.d.ts +2 -0
  21. package/dist/src/integrations/gcal.d.ts.map +1 -1
  22. package/dist/src/integrations/generic.d.ts +2 -0
  23. package/dist/src/integrations/generic.d.ts.map +1 -1
  24. package/dist/src/integrations/github.d.ts +2 -0
  25. package/dist/src/integrations/github.d.ts.map +1 -1
  26. package/dist/src/integrations/gmail.d.ts +2 -0
  27. package/dist/src/integrations/gmail.d.ts.map +1 -1
  28. package/dist/src/integrations/gworkspace.d.ts +2 -0
  29. package/dist/src/integrations/gworkspace.d.ts.map +1 -1
  30. package/dist/src/integrations/hubspot.d.ts +2 -0
  31. package/dist/src/integrations/hubspot.d.ts.map +1 -1
  32. package/dist/src/integrations/intercom.d.ts +2 -0
  33. package/dist/src/integrations/intercom.d.ts.map +1 -1
  34. package/dist/src/integrations/linear.d.ts +2 -0
  35. package/dist/src/integrations/linear.d.ts.map +1 -1
  36. package/dist/src/integrations/notion.d.ts +2 -0
  37. package/dist/src/integrations/notion.d.ts.map +1 -1
  38. package/dist/src/integrations/onedrive.d.ts +2 -0
  39. package/dist/src/integrations/onedrive.d.ts.map +1 -1
  40. package/dist/src/integrations/outlook.d.ts +2 -0
  41. package/dist/src/integrations/outlook.d.ts.map +1 -1
  42. package/dist/src/integrations/polar.d.ts +2 -0
  43. package/dist/src/integrations/polar.d.ts.map +1 -1
  44. package/dist/src/integrations/ramp.d.ts +2 -0
  45. package/dist/src/integrations/ramp.d.ts.map +1 -1
  46. package/dist/src/integrations/slack.d.ts +2 -0
  47. package/dist/src/integrations/slack.d.ts.map +1 -1
  48. package/dist/src/integrations/stripe.d.ts +2 -0
  49. package/dist/src/integrations/stripe.d.ts.map +1 -1
  50. package/dist/src/integrations/todoist.d.ts +2 -0
  51. package/dist/src/integrations/todoist.d.ts.map +1 -1
  52. package/dist/src/integrations/types.d.ts +2 -0
  53. package/dist/src/integrations/types.d.ts.map +1 -1
  54. package/dist/src/integrations/vercel-client.d.ts +165 -0
  55. package/dist/src/integrations/vercel-client.d.ts.map +1 -1
  56. package/dist/src/integrations/vercel.d.ts +3 -1
  57. package/dist/src/integrations/vercel.d.ts.map +1 -1
  58. package/dist/src/integrations/whatsapp.d.ts +2 -0
  59. package/dist/src/integrations/whatsapp.d.ts.map +1 -1
  60. package/dist/src/integrations/youtube.d.ts +2 -0
  61. package/dist/src/integrations/youtube.d.ts.map +1 -1
  62. package/dist/src/integrations/zendesk.d.ts +2 -0
  63. package/dist/src/integrations/zendesk.d.ts.map +1 -1
  64. package/dist/src/server.d.ts.map +1 -1
  65. package/package.json +1 -1
@@ -2629,6 +2629,7 @@ function githubIntegration(config = {}) {
2629
2629
  clientId: config.clientId ?? getEnv("GITHUB_CLIENT_ID"),
2630
2630
  clientSecret: config.clientSecret ?? getEnv("GITHUB_CLIENT_SECRET"),
2631
2631
  scopes: config.scopes || ["repo", "user"],
2632
+ optionalScopes: config.optionalScopes,
2632
2633
  redirectUri: config.redirectUri,
2633
2634
  config: {
2634
2635
  apiBaseUrl: config.apiBaseUrl || "https://api.github.com",
@@ -2716,6 +2717,7 @@ function gmailIntegration(config = {}) {
2716
2717
  "https://www.googleapis.com/auth/gmail.modify",
2717
2718
  "https://www.googleapis.com/auth/gmail.labels"
2718
2719
  ],
2720
+ optionalScopes: config.optionalScopes,
2719
2721
  redirectUri: config.redirectUri,
2720
2722
  config
2721
2723
  };
@@ -2752,6 +2754,7 @@ function notionIntegration(config = {}) {
2752
2754
  clientId: config.clientId ?? getEnv("NOTION_CLIENT_ID"),
2753
2755
  clientSecret: config.clientSecret ?? getEnv("NOTION_CLIENT_SECRET"),
2754
2756
  scopes: [],
2757
+ optionalScopes: config.optionalScopes,
2755
2758
  redirectUri: config.redirectUri,
2756
2759
  config: {
2757
2760
  owner: config.owner || "user",
@@ -2817,6 +2820,7 @@ function slackIntegration(config = {}) {
2817
2820
  clientId: config.clientId ?? getEnv("SLACK_CLIENT_ID"),
2818
2821
  clientSecret: config.clientSecret ?? getEnv("SLACK_CLIENT_SECRET"),
2819
2822
  scopes: config.scopes || ["chat:write", "channels:read", "users:read", "search:read", "files:write"],
2823
+ optionalScopes: config.optionalScopes,
2820
2824
  redirectUri: config.redirectUri,
2821
2825
  config: {
2822
2826
  ...config
@@ -2860,6 +2864,7 @@ function linearIntegration(config = {}) {
2860
2864
  clientId: config.clientId ?? getEnv("LINEAR_CLIENT_ID"),
2861
2865
  clientSecret: config.clientSecret ?? getEnv("LINEAR_CLIENT_SECRET"),
2862
2866
  scopes: config.scopes || ["read", "write", "issues:create", "comments:create"],
2867
+ optionalScopes: config.optionalScopes,
2863
2868
  redirectUri: config.redirectUri,
2864
2869
  config: {
2865
2870
  ...config
@@ -2927,6 +2932,7 @@ function vercelIntegration(config = {}) {
2927
2932
  clientId: config.clientId ?? getEnv("VERCEL_CLIENT_ID"),
2928
2933
  clientSecret: config.clientSecret ?? getEnv("VERCEL_CLIENT_SECRET"),
2929
2934
  scopes: config.scopes || [],
2935
+ optionalScopes: config.optionalScopes,
2930
2936
  redirectUri: config.redirectUri,
2931
2937
  config: {
2932
2938
  ...config
@@ -2953,13 +2959,25 @@ var init_vercel = __esm(() => {
2953
2959
  VERCEL_TOOLS = [
2954
2960
  "vercel_list_projects",
2955
2961
  "vercel_get_project",
2962
+ "vercel_create_project",
2963
+ "vercel_update_project",
2964
+ "vercel_delete_project",
2956
2965
  "vercel_list_deployments",
2957
2966
  "vercel_get_deployment",
2958
2967
  "vercel_create_deployment",
2959
2968
  "vercel_cancel_deployment",
2969
+ "vercel_delete_deployment",
2970
+ "vercel_promote_deployment",
2971
+ "vercel_get_deployment_logs",
2960
2972
  "vercel_list_domains",
2973
+ "vercel_add_domain",
2974
+ "vercel_remove_domain",
2975
+ "vercel_get_domain_config",
2961
2976
  "vercel_list_env_vars",
2962
- "vercel_get_deployment_logs"
2977
+ "vercel_create_env_var",
2978
+ "vercel_delete_env_var",
2979
+ "vercel_list_dns_records",
2980
+ "vercel_create_dns_record"
2963
2981
  ];
2964
2982
  });
2965
2983
 
@@ -2970,6 +2988,7 @@ function zendeskIntegration(config = {}) {
2970
2988
  clientId: config.clientId ?? getEnv("ZENDESK_CLIENT_ID"),
2971
2989
  clientSecret: config.clientSecret ?? getEnv("ZENDESK_CLIENT_SECRET"),
2972
2990
  scopes: config.scopes || ["read", "write"],
2991
+ optionalScopes: config.optionalScopes,
2973
2992
  redirectUri: config.redirectUri,
2974
2993
  config: {
2975
2994
  subdomain: config.subdomain ?? getEnv("ZENDESK_SUBDOMAIN"),
@@ -3014,6 +3033,7 @@ function stripeIntegration(config = {}) {
3014
3033
  clientId: config.clientId ?? getEnv("STRIPE_CLIENT_ID"),
3015
3034
  clientSecret: config.clientSecret ?? getEnv("STRIPE_CLIENT_SECRET"),
3016
3035
  scopes: config.scopes || ["read_write"],
3036
+ optionalScopes: config.optionalScopes,
3017
3037
  redirectUri: config.redirectUri,
3018
3038
  config: {
3019
3039
  ...config
@@ -3057,6 +3077,7 @@ function gcalIntegration(config = {}) {
3057
3077
  clientId: config.clientId ?? getEnv("GCAL_CLIENT_ID"),
3058
3078
  clientSecret: config.clientSecret ?? getEnv("GCAL_CLIENT_SECRET"),
3059
3079
  scopes: config.scopes || ["https://www.googleapis.com/auth/calendar"],
3080
+ optionalScopes: config.optionalScopes,
3060
3081
  redirectUri: config.redirectUri,
3061
3082
  config: {
3062
3083
  ...config
@@ -3100,6 +3121,7 @@ function outlookIntegration(config = {}) {
3100
3121
  clientId: config.clientId ?? getEnv("OUTLOOK_CLIENT_ID"),
3101
3122
  clientSecret: config.clientSecret ?? getEnv("OUTLOOK_CLIENT_SECRET"),
3102
3123
  scopes: config.scopes || ["Mail.Read", "Mail.Send", "Calendars.ReadWrite", "Contacts.Read"],
3124
+ optionalScopes: config.optionalScopes,
3103
3125
  redirectUri: config.redirectUri,
3104
3126
  config: {
3105
3127
  ...config
@@ -3151,6 +3173,7 @@ function airtableIntegration(config = {}) {
3151
3173
  "schema.bases:write",
3152
3174
  "webhook:manage"
3153
3175
  ],
3176
+ optionalScopes: config.optionalScopes,
3154
3177
  redirectUri: config.redirectUri,
3155
3178
  config: {
3156
3179
  ...config
@@ -3209,6 +3232,7 @@ function todoistIntegration(config = {}) {
3209
3232
  clientId: config.clientId ?? getEnv("TODOIST_CLIENT_ID"),
3210
3233
  clientSecret: config.clientSecret ?? getEnv("TODOIST_CLIENT_SECRET"),
3211
3234
  scopes: config.scopes || ["data:read_write"],
3235
+ optionalScopes: config.optionalScopes,
3212
3236
  redirectUri: config.redirectUri,
3213
3237
  config: {
3214
3238
  ...config
@@ -3252,6 +3276,7 @@ function whatsappIntegration(config = {}) {
3252
3276
  clientId: config.clientId ?? getEnv("WHATSAPP_CLIENT_ID"),
3253
3277
  clientSecret: config.clientSecret ?? getEnv("WHATSAPP_CLIENT_SECRET"),
3254
3278
  scopes: config.scopes || ["business_management", "whatsapp_business_messaging", "whatsapp_business_management"],
3279
+ optionalScopes: config.optionalScopes,
3255
3280
  redirectUri: config.redirectUri,
3256
3281
  config: {
3257
3282
  businessAccountId: config.businessAccountId,
@@ -3295,6 +3320,7 @@ function calcomIntegration(config = {}) {
3295
3320
  clientId: config.clientId ?? getEnv("CALCOM_CLIENT_ID"),
3296
3321
  clientSecret: config.clientSecret ?? getEnv("CALCOM_CLIENT_SECRET"),
3297
3322
  scopes: config.scopes || ["READ_BOOKING", "WRITE_BOOKING", "READ_PROFILE", "WRITE_PROFILE"],
3323
+ optionalScopes: config.optionalScopes,
3298
3324
  redirectUri: config.redirectUri,
3299
3325
  config: {
3300
3326
  apiBaseUrl: config.apiBaseUrl || "https://api.cal.com/v1",
@@ -3383,6 +3409,7 @@ function rampIntegration(config = {}) {
3383
3409
  clientId: config.clientId ?? getEnv("RAMP_CLIENT_ID"),
3384
3410
  clientSecret: config.clientSecret ?? getEnv("RAMP_CLIENT_SECRET"),
3385
3411
  scopes: config.scopes || ["transactions:read", "cards:read", "users:read"],
3412
+ optionalScopes: config.optionalScopes,
3386
3413
  redirectUri: config.redirectUri,
3387
3414
  config: {
3388
3415
  apiBaseUrl: config.apiBaseUrl || "https://api.ramp.com/v1",
@@ -3427,6 +3454,7 @@ function onedriveIntegration(config = {}) {
3427
3454
  clientId: config.clientId ?? getEnv("ONEDRIVE_CLIENT_ID"),
3428
3455
  clientSecret: config.clientSecret ?? getEnv("ONEDRIVE_CLIENT_SECRET"),
3429
3456
  scopes: config.scopes || ["Files.Read", "Files.ReadWrite", "offline_access"],
3457
+ optionalScopes: config.optionalScopes,
3430
3458
  redirectUri: config.redirectUri,
3431
3459
  config: {
3432
3460
  ...config
@@ -3478,6 +3506,7 @@ function gworkspaceIntegration(config = {}) {
3478
3506
  "https://www.googleapis.com/auth/presentations",
3479
3507
  "https://www.googleapis.com/auth/drive.readonly"
3480
3508
  ],
3509
+ optionalScopes: config.optionalScopes,
3481
3510
  redirectUri: config.redirectUri,
3482
3511
  config: {
3483
3512
  ...config
@@ -3543,6 +3572,7 @@ function polarIntegration(config = {}) {
3543
3572
  "metrics:read",
3544
3573
  "organizations:read"
3545
3574
  ],
3575
+ optionalScopes: config.optionalScopes,
3546
3576
  redirectUri: config.redirectUri,
3547
3577
  config: {
3548
3578
  apiBaseUrl: config.apiBaseUrl || "https://api.polar.sh"
@@ -3612,6 +3642,7 @@ function figmaIntegration(config = {}) {
3612
3642
  clientId: config.clientId ?? getEnv("FIGMA_CLIENT_ID"),
3613
3643
  clientSecret: config.clientSecret ?? getEnv("FIGMA_CLIENT_SECRET"),
3614
3644
  scopes: config.scopes || ["files:read", "file_comments:write"],
3645
+ optionalScopes: config.optionalScopes,
3615
3646
  redirectUri: config.redirectUri,
3616
3647
  config: {
3617
3648
  ...config
@@ -3655,6 +3686,7 @@ function intercomIntegration(config = {}) {
3655
3686
  clientId: config.clientId ?? getEnv("INTERCOM_CLIENT_ID"),
3656
3687
  clientSecret: config.clientSecret ?? getEnv("INTERCOM_CLIENT_SECRET"),
3657
3688
  scopes: config.scopes || [],
3689
+ optionalScopes: config.optionalScopes,
3658
3690
  redirectUri: config.redirectUri,
3659
3691
  config: {
3660
3692
  ...config
@@ -3708,6 +3740,7 @@ function hubspotIntegration(config = {}) {
3708
3740
  "crm.objects.tickets.write",
3709
3741
  "crm.objects.owners.read"
3710
3742
  ],
3743
+ optionalScopes: config.optionalScopes,
3711
3744
  redirectUri: config.redirectUri,
3712
3745
  config: {
3713
3746
  ...config
@@ -3770,6 +3803,7 @@ function youtubeIntegration(config = {}) {
3770
3803
  clientId: config.clientId ?? getEnv("YOUTUBE_CLIENT_ID"),
3771
3804
  clientSecret: config.clientSecret ?? getEnv("YOUTUBE_CLIENT_SECRET"),
3772
3805
  scopes: config.scopes || ["https://www.googleapis.com/auth/youtube.readonly"],
3806
+ optionalScopes: config.optionalScopes,
3773
3807
  redirectUri: config.redirectUri,
3774
3808
  config: {
3775
3809
  ...config
@@ -3847,6 +3881,7 @@ function genericOAuthIntegration(config) {
3847
3881
  clientId: config.clientId ?? getEnv(`${providerUpper}_CLIENT_ID`),
3848
3882
  clientSecret: config.clientSecret ?? getEnv(`${providerUpper}_CLIENT_SECRET`),
3849
3883
  scopes: config.scopes,
3884
+ optionalScopes: config.optionalScopes,
3850
3885
  redirectUri: config.redirectUri,
3851
3886
  config
3852
3887
  };
@@ -10561,6 +10596,7 @@ function createMCPServer(config) {
10561
10596
  tools: integration.tools,
10562
10597
  hasOAuth: !!integration.oauth,
10563
10598
  scopes: integration.oauth?.scopes,
10599
+ optionalScopes: integration.oauth?.optionalScopes,
10564
10600
  provider: integration.oauth?.provider
10565
10601
  }));
10566
10602
  return Response.json({ integrations });
@@ -11524,6 +11560,7 @@ class OAuthHandler {
11524
11560
  tools: integration.tools,
11525
11561
  hasOAuth: !!integration.oauth,
11526
11562
  scopes: integration.oauth?.scopes,
11563
+ optionalScopes: integration.oauth?.optionalScopes,
11527
11564
  provider: integration.oauth?.provider
11528
11565
  }))
11529
11566
  };
@@ -11566,6 +11603,10 @@ class OAuthHandler {
11566
11603
  if (scopes.length > 0) {
11567
11604
  url.searchParams.set("scope", scopes.join(","));
11568
11605
  }
11606
+ const optionalScopes = authorizeRequest.optionalScopes || providerConfig.optionalScopes || [];
11607
+ if (optionalScopes.length > 0) {
11608
+ url.searchParams.set("optional_scope", optionalScopes.join(","));
11609
+ }
11569
11610
  url.searchParams.set("state", authorizeRequest.state);
11570
11611
  url.searchParams.set("code_challenge", authorizeRequest.codeChallenge);
11571
11612
  url.searchParams.set("code_challenge_method", authorizeRequest.codeChallengeMethod);
@@ -11577,10 +11618,12 @@ class OAuthHandler {
11577
11618
  "clientId",
11578
11619
  "clientSecret",
11579
11620
  "scopes",
11621
+ "optionalScopes",
11580
11622
  "redirectUri",
11581
11623
  "client_id",
11582
11624
  "client_secret",
11583
11625
  "scope",
11626
+ "optional_scope",
11584
11627
  "redirect_uri",
11585
11628
  "provider"
11586
11629
  ]);
@@ -2629,6 +2629,7 @@ function githubIntegration(config = {}) {
2629
2629
  clientId: config.clientId ?? getEnv("GITHUB_CLIENT_ID"),
2630
2630
  clientSecret: config.clientSecret ?? getEnv("GITHUB_CLIENT_SECRET"),
2631
2631
  scopes: config.scopes || ["repo", "user"],
2632
+ optionalScopes: config.optionalScopes,
2632
2633
  redirectUri: config.redirectUri,
2633
2634
  config: {
2634
2635
  apiBaseUrl: config.apiBaseUrl || "https://api.github.com",
@@ -2716,6 +2717,7 @@ function gmailIntegration(config = {}) {
2716
2717
  "https://www.googleapis.com/auth/gmail.modify",
2717
2718
  "https://www.googleapis.com/auth/gmail.labels"
2718
2719
  ],
2720
+ optionalScopes: config.optionalScopes,
2719
2721
  redirectUri: config.redirectUri,
2720
2722
  config
2721
2723
  };
@@ -2752,6 +2754,7 @@ function notionIntegration(config = {}) {
2752
2754
  clientId: config.clientId ?? getEnv("NOTION_CLIENT_ID"),
2753
2755
  clientSecret: config.clientSecret ?? getEnv("NOTION_CLIENT_SECRET"),
2754
2756
  scopes: [],
2757
+ optionalScopes: config.optionalScopes,
2755
2758
  redirectUri: config.redirectUri,
2756
2759
  config: {
2757
2760
  owner: config.owner || "user",
@@ -2817,6 +2820,7 @@ function slackIntegration(config = {}) {
2817
2820
  clientId: config.clientId ?? getEnv("SLACK_CLIENT_ID"),
2818
2821
  clientSecret: config.clientSecret ?? getEnv("SLACK_CLIENT_SECRET"),
2819
2822
  scopes: config.scopes || ["chat:write", "channels:read", "users:read", "search:read", "files:write"],
2823
+ optionalScopes: config.optionalScopes,
2820
2824
  redirectUri: config.redirectUri,
2821
2825
  config: {
2822
2826
  ...config
@@ -2860,6 +2864,7 @@ function linearIntegration(config = {}) {
2860
2864
  clientId: config.clientId ?? getEnv("LINEAR_CLIENT_ID"),
2861
2865
  clientSecret: config.clientSecret ?? getEnv("LINEAR_CLIENT_SECRET"),
2862
2866
  scopes: config.scopes || ["read", "write", "issues:create", "comments:create"],
2867
+ optionalScopes: config.optionalScopes,
2863
2868
  redirectUri: config.redirectUri,
2864
2869
  config: {
2865
2870
  ...config
@@ -2927,6 +2932,7 @@ function vercelIntegration(config = {}) {
2927
2932
  clientId: config.clientId ?? getEnv("VERCEL_CLIENT_ID"),
2928
2933
  clientSecret: config.clientSecret ?? getEnv("VERCEL_CLIENT_SECRET"),
2929
2934
  scopes: config.scopes || [],
2935
+ optionalScopes: config.optionalScopes,
2930
2936
  redirectUri: config.redirectUri,
2931
2937
  config: {
2932
2938
  ...config
@@ -2953,13 +2959,25 @@ var init_vercel = __esm(() => {
2953
2959
  VERCEL_TOOLS = [
2954
2960
  "vercel_list_projects",
2955
2961
  "vercel_get_project",
2962
+ "vercel_create_project",
2963
+ "vercel_update_project",
2964
+ "vercel_delete_project",
2956
2965
  "vercel_list_deployments",
2957
2966
  "vercel_get_deployment",
2958
2967
  "vercel_create_deployment",
2959
2968
  "vercel_cancel_deployment",
2969
+ "vercel_delete_deployment",
2970
+ "vercel_promote_deployment",
2971
+ "vercel_get_deployment_logs",
2960
2972
  "vercel_list_domains",
2973
+ "vercel_add_domain",
2974
+ "vercel_remove_domain",
2975
+ "vercel_get_domain_config",
2961
2976
  "vercel_list_env_vars",
2962
- "vercel_get_deployment_logs"
2977
+ "vercel_create_env_var",
2978
+ "vercel_delete_env_var",
2979
+ "vercel_list_dns_records",
2980
+ "vercel_create_dns_record"
2963
2981
  ];
2964
2982
  });
2965
2983
 
@@ -2970,6 +2988,7 @@ function zendeskIntegration(config = {}) {
2970
2988
  clientId: config.clientId ?? getEnv("ZENDESK_CLIENT_ID"),
2971
2989
  clientSecret: config.clientSecret ?? getEnv("ZENDESK_CLIENT_SECRET"),
2972
2990
  scopes: config.scopes || ["read", "write"],
2991
+ optionalScopes: config.optionalScopes,
2973
2992
  redirectUri: config.redirectUri,
2974
2993
  config: {
2975
2994
  subdomain: config.subdomain ?? getEnv("ZENDESK_SUBDOMAIN"),
@@ -3014,6 +3033,7 @@ function stripeIntegration(config = {}) {
3014
3033
  clientId: config.clientId ?? getEnv("STRIPE_CLIENT_ID"),
3015
3034
  clientSecret: config.clientSecret ?? getEnv("STRIPE_CLIENT_SECRET"),
3016
3035
  scopes: config.scopes || ["read_write"],
3036
+ optionalScopes: config.optionalScopes,
3017
3037
  redirectUri: config.redirectUri,
3018
3038
  config: {
3019
3039
  ...config
@@ -3057,6 +3077,7 @@ function gcalIntegration(config = {}) {
3057
3077
  clientId: config.clientId ?? getEnv("GCAL_CLIENT_ID"),
3058
3078
  clientSecret: config.clientSecret ?? getEnv("GCAL_CLIENT_SECRET"),
3059
3079
  scopes: config.scopes || ["https://www.googleapis.com/auth/calendar"],
3080
+ optionalScopes: config.optionalScopes,
3060
3081
  redirectUri: config.redirectUri,
3061
3082
  config: {
3062
3083
  ...config
@@ -3100,6 +3121,7 @@ function outlookIntegration(config = {}) {
3100
3121
  clientId: config.clientId ?? getEnv("OUTLOOK_CLIENT_ID"),
3101
3122
  clientSecret: config.clientSecret ?? getEnv("OUTLOOK_CLIENT_SECRET"),
3102
3123
  scopes: config.scopes || ["Mail.Read", "Mail.Send", "Calendars.ReadWrite", "Contacts.Read"],
3124
+ optionalScopes: config.optionalScopes,
3103
3125
  redirectUri: config.redirectUri,
3104
3126
  config: {
3105
3127
  ...config
@@ -3151,6 +3173,7 @@ function airtableIntegration(config = {}) {
3151
3173
  "schema.bases:write",
3152
3174
  "webhook:manage"
3153
3175
  ],
3176
+ optionalScopes: config.optionalScopes,
3154
3177
  redirectUri: config.redirectUri,
3155
3178
  config: {
3156
3179
  ...config
@@ -3209,6 +3232,7 @@ function todoistIntegration(config = {}) {
3209
3232
  clientId: config.clientId ?? getEnv("TODOIST_CLIENT_ID"),
3210
3233
  clientSecret: config.clientSecret ?? getEnv("TODOIST_CLIENT_SECRET"),
3211
3234
  scopes: config.scopes || ["data:read_write"],
3235
+ optionalScopes: config.optionalScopes,
3212
3236
  redirectUri: config.redirectUri,
3213
3237
  config: {
3214
3238
  ...config
@@ -3252,6 +3276,7 @@ function whatsappIntegration(config = {}) {
3252
3276
  clientId: config.clientId ?? getEnv("WHATSAPP_CLIENT_ID"),
3253
3277
  clientSecret: config.clientSecret ?? getEnv("WHATSAPP_CLIENT_SECRET"),
3254
3278
  scopes: config.scopes || ["business_management", "whatsapp_business_messaging", "whatsapp_business_management"],
3279
+ optionalScopes: config.optionalScopes,
3255
3280
  redirectUri: config.redirectUri,
3256
3281
  config: {
3257
3282
  businessAccountId: config.businessAccountId,
@@ -3295,6 +3320,7 @@ function calcomIntegration(config = {}) {
3295
3320
  clientId: config.clientId ?? getEnv("CALCOM_CLIENT_ID"),
3296
3321
  clientSecret: config.clientSecret ?? getEnv("CALCOM_CLIENT_SECRET"),
3297
3322
  scopes: config.scopes || ["READ_BOOKING", "WRITE_BOOKING", "READ_PROFILE", "WRITE_PROFILE"],
3323
+ optionalScopes: config.optionalScopes,
3298
3324
  redirectUri: config.redirectUri,
3299
3325
  config: {
3300
3326
  apiBaseUrl: config.apiBaseUrl || "https://api.cal.com/v1",
@@ -3383,6 +3409,7 @@ function rampIntegration(config = {}) {
3383
3409
  clientId: config.clientId ?? getEnv("RAMP_CLIENT_ID"),
3384
3410
  clientSecret: config.clientSecret ?? getEnv("RAMP_CLIENT_SECRET"),
3385
3411
  scopes: config.scopes || ["transactions:read", "cards:read", "users:read"],
3412
+ optionalScopes: config.optionalScopes,
3386
3413
  redirectUri: config.redirectUri,
3387
3414
  config: {
3388
3415
  apiBaseUrl: config.apiBaseUrl || "https://api.ramp.com/v1",
@@ -3427,6 +3454,7 @@ function onedriveIntegration(config = {}) {
3427
3454
  clientId: config.clientId ?? getEnv("ONEDRIVE_CLIENT_ID"),
3428
3455
  clientSecret: config.clientSecret ?? getEnv("ONEDRIVE_CLIENT_SECRET"),
3429
3456
  scopes: config.scopes || ["Files.Read", "Files.ReadWrite", "offline_access"],
3457
+ optionalScopes: config.optionalScopes,
3430
3458
  redirectUri: config.redirectUri,
3431
3459
  config: {
3432
3460
  ...config
@@ -3478,6 +3506,7 @@ function gworkspaceIntegration(config = {}) {
3478
3506
  "https://www.googleapis.com/auth/presentations",
3479
3507
  "https://www.googleapis.com/auth/drive.readonly"
3480
3508
  ],
3509
+ optionalScopes: config.optionalScopes,
3481
3510
  redirectUri: config.redirectUri,
3482
3511
  config: {
3483
3512
  ...config
@@ -3543,6 +3572,7 @@ function polarIntegration(config = {}) {
3543
3572
  "metrics:read",
3544
3573
  "organizations:read"
3545
3574
  ],
3575
+ optionalScopes: config.optionalScopes,
3546
3576
  redirectUri: config.redirectUri,
3547
3577
  config: {
3548
3578
  apiBaseUrl: config.apiBaseUrl || "https://api.polar.sh"
@@ -3612,6 +3642,7 @@ function figmaIntegration(config = {}) {
3612
3642
  clientId: config.clientId ?? getEnv("FIGMA_CLIENT_ID"),
3613
3643
  clientSecret: config.clientSecret ?? getEnv("FIGMA_CLIENT_SECRET"),
3614
3644
  scopes: config.scopes || ["files:read", "file_comments:write"],
3645
+ optionalScopes: config.optionalScopes,
3615
3646
  redirectUri: config.redirectUri,
3616
3647
  config: {
3617
3648
  ...config
@@ -3655,6 +3686,7 @@ function intercomIntegration(config = {}) {
3655
3686
  clientId: config.clientId ?? getEnv("INTERCOM_CLIENT_ID"),
3656
3687
  clientSecret: config.clientSecret ?? getEnv("INTERCOM_CLIENT_SECRET"),
3657
3688
  scopes: config.scopes || [],
3689
+ optionalScopes: config.optionalScopes,
3658
3690
  redirectUri: config.redirectUri,
3659
3691
  config: {
3660
3692
  ...config
@@ -3708,6 +3740,7 @@ function hubspotIntegration(config = {}) {
3708
3740
  "crm.objects.tickets.write",
3709
3741
  "crm.objects.owners.read"
3710
3742
  ],
3743
+ optionalScopes: config.optionalScopes,
3711
3744
  redirectUri: config.redirectUri,
3712
3745
  config: {
3713
3746
  ...config
@@ -3770,6 +3803,7 @@ function youtubeIntegration(config = {}) {
3770
3803
  clientId: config.clientId ?? getEnv("YOUTUBE_CLIENT_ID"),
3771
3804
  clientSecret: config.clientSecret ?? getEnv("YOUTUBE_CLIENT_SECRET"),
3772
3805
  scopes: config.scopes || ["https://www.googleapis.com/auth/youtube.readonly"],
3806
+ optionalScopes: config.optionalScopes,
3773
3807
  redirectUri: config.redirectUri,
3774
3808
  config: {
3775
3809
  ...config
@@ -3847,6 +3881,7 @@ function genericOAuthIntegration(config) {
3847
3881
  clientId: config.clientId ?? getEnv(`${providerUpper}_CLIENT_ID`),
3848
3882
  clientSecret: config.clientSecret ?? getEnv(`${providerUpper}_CLIENT_SECRET`),
3849
3883
  scopes: config.scopes,
3884
+ optionalScopes: config.optionalScopes,
3850
3885
  redirectUri: config.redirectUri,
3851
3886
  config
3852
3887
  };
@@ -10561,6 +10596,7 @@ function createMCPServer(config) {
10561
10596
  tools: integration.tools,
10562
10597
  hasOAuth: !!integration.oauth,
10563
10598
  scopes: integration.oauth?.scopes,
10599
+ optionalScopes: integration.oauth?.optionalScopes,
10564
10600
  provider: integration.oauth?.provider
10565
10601
  }));
10566
10602
  return Response.json({ integrations });
@@ -11524,6 +11560,7 @@ class OAuthHandler {
11524
11560
  tools: integration.tools,
11525
11561
  hasOAuth: !!integration.oauth,
11526
11562
  scopes: integration.oauth?.scopes,
11563
+ optionalScopes: integration.oauth?.optionalScopes,
11527
11564
  provider: integration.oauth?.provider
11528
11565
  }))
11529
11566
  };
@@ -11566,6 +11603,10 @@ class OAuthHandler {
11566
11603
  if (scopes.length > 0) {
11567
11604
  url.searchParams.set("scope", scopes.join(","));
11568
11605
  }
11606
+ const optionalScopes = authorizeRequest.optionalScopes || providerConfig.optionalScopes || [];
11607
+ if (optionalScopes.length > 0) {
11608
+ url.searchParams.set("optional_scope", optionalScopes.join(","));
11609
+ }
11569
11610
  url.searchParams.set("state", authorizeRequest.state);
11570
11611
  url.searchParams.set("code_challenge", authorizeRequest.codeChallenge);
11571
11612
  url.searchParams.set("code_challenge_method", authorizeRequest.codeChallengeMethod);
@@ -11577,10 +11618,12 @@ class OAuthHandler {
11577
11618
  "clientId",
11578
11619
  "clientSecret",
11579
11620
  "scopes",
11621
+ "optionalScopes",
11580
11622
  "redirectUri",
11581
11623
  "client_id",
11582
11624
  "client_secret",
11583
11625
  "scope",
11626
+ "optional_scope",
11584
11627
  "redirect_uri",
11585
11628
  "provider"
11586
11629
  ]);