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
package/dist/index.js CHANGED
@@ -3020,6 +3020,7 @@ function githubIntegration(config = {}) {
3020
3020
  clientId: config.clientId ?? getEnv("GITHUB_CLIENT_ID"),
3021
3021
  clientSecret: config.clientSecret ?? getEnv("GITHUB_CLIENT_SECRET"),
3022
3022
  scopes: config.scopes || ["repo", "user"],
3023
+ optionalScopes: config.optionalScopes,
3023
3024
  redirectUri: config.redirectUri,
3024
3025
  config: {
3025
3026
  apiBaseUrl: config.apiBaseUrl || "https://api.github.com",
@@ -3107,6 +3108,7 @@ function gmailIntegration(config = {}) {
3107
3108
  "https://www.googleapis.com/auth/gmail.modify",
3108
3109
  "https://www.googleapis.com/auth/gmail.labels"
3109
3110
  ],
3111
+ optionalScopes: config.optionalScopes,
3110
3112
  redirectUri: config.redirectUri,
3111
3113
  config
3112
3114
  };
@@ -3143,6 +3145,7 @@ function notionIntegration(config = {}) {
3143
3145
  clientId: config.clientId ?? getEnv("NOTION_CLIENT_ID"),
3144
3146
  clientSecret: config.clientSecret ?? getEnv("NOTION_CLIENT_SECRET"),
3145
3147
  scopes: [],
3148
+ optionalScopes: config.optionalScopes,
3146
3149
  redirectUri: config.redirectUri,
3147
3150
  config: {
3148
3151
  owner: config.owner || "user",
@@ -3208,6 +3211,7 @@ function slackIntegration(config = {}) {
3208
3211
  clientId: config.clientId ?? getEnv("SLACK_CLIENT_ID"),
3209
3212
  clientSecret: config.clientSecret ?? getEnv("SLACK_CLIENT_SECRET"),
3210
3213
  scopes: config.scopes || ["chat:write", "channels:read", "users:read", "search:read", "files:write"],
3214
+ optionalScopes: config.optionalScopes,
3211
3215
  redirectUri: config.redirectUri,
3212
3216
  config: {
3213
3217
  ...config
@@ -3251,6 +3255,7 @@ function linearIntegration(config = {}) {
3251
3255
  clientId: config.clientId ?? getEnv("LINEAR_CLIENT_ID"),
3252
3256
  clientSecret: config.clientSecret ?? getEnv("LINEAR_CLIENT_SECRET"),
3253
3257
  scopes: config.scopes || ["read", "write", "issues:create", "comments:create"],
3258
+ optionalScopes: config.optionalScopes,
3254
3259
  redirectUri: config.redirectUri,
3255
3260
  config: {
3256
3261
  ...config
@@ -3318,6 +3323,7 @@ function vercelIntegration(config = {}) {
3318
3323
  clientId: config.clientId ?? getEnv("VERCEL_CLIENT_ID"),
3319
3324
  clientSecret: config.clientSecret ?? getEnv("VERCEL_CLIENT_SECRET"),
3320
3325
  scopes: config.scopes || [],
3326
+ optionalScopes: config.optionalScopes,
3321
3327
  redirectUri: config.redirectUri,
3322
3328
  config: {
3323
3329
  ...config
@@ -3344,13 +3350,25 @@ var init_vercel = __esm(() => {
3344
3350
  VERCEL_TOOLS = [
3345
3351
  "vercel_list_projects",
3346
3352
  "vercel_get_project",
3353
+ "vercel_create_project",
3354
+ "vercel_update_project",
3355
+ "vercel_delete_project",
3347
3356
  "vercel_list_deployments",
3348
3357
  "vercel_get_deployment",
3349
3358
  "vercel_create_deployment",
3350
3359
  "vercel_cancel_deployment",
3360
+ "vercel_delete_deployment",
3361
+ "vercel_promote_deployment",
3362
+ "vercel_get_deployment_logs",
3351
3363
  "vercel_list_domains",
3364
+ "vercel_add_domain",
3365
+ "vercel_remove_domain",
3366
+ "vercel_get_domain_config",
3352
3367
  "vercel_list_env_vars",
3353
- "vercel_get_deployment_logs"
3368
+ "vercel_create_env_var",
3369
+ "vercel_delete_env_var",
3370
+ "vercel_list_dns_records",
3371
+ "vercel_create_dns_record"
3354
3372
  ];
3355
3373
  });
3356
3374
 
@@ -3361,6 +3379,7 @@ function zendeskIntegration(config = {}) {
3361
3379
  clientId: config.clientId ?? getEnv("ZENDESK_CLIENT_ID"),
3362
3380
  clientSecret: config.clientSecret ?? getEnv("ZENDESK_CLIENT_SECRET"),
3363
3381
  scopes: config.scopes || ["read", "write"],
3382
+ optionalScopes: config.optionalScopes,
3364
3383
  redirectUri: config.redirectUri,
3365
3384
  config: {
3366
3385
  subdomain: config.subdomain ?? getEnv("ZENDESK_SUBDOMAIN"),
@@ -3405,6 +3424,7 @@ function stripeIntegration(config = {}) {
3405
3424
  clientId: config.clientId ?? getEnv("STRIPE_CLIENT_ID"),
3406
3425
  clientSecret: config.clientSecret ?? getEnv("STRIPE_CLIENT_SECRET"),
3407
3426
  scopes: config.scopes || ["read_write"],
3427
+ optionalScopes: config.optionalScopes,
3408
3428
  redirectUri: config.redirectUri,
3409
3429
  config: {
3410
3430
  ...config
@@ -3448,6 +3468,7 @@ function gcalIntegration(config = {}) {
3448
3468
  clientId: config.clientId ?? getEnv("GCAL_CLIENT_ID"),
3449
3469
  clientSecret: config.clientSecret ?? getEnv("GCAL_CLIENT_SECRET"),
3450
3470
  scopes: config.scopes || ["https://www.googleapis.com/auth/calendar"],
3471
+ optionalScopes: config.optionalScopes,
3451
3472
  redirectUri: config.redirectUri,
3452
3473
  config: {
3453
3474
  ...config
@@ -3491,6 +3512,7 @@ function outlookIntegration(config = {}) {
3491
3512
  clientId: config.clientId ?? getEnv("OUTLOOK_CLIENT_ID"),
3492
3513
  clientSecret: config.clientSecret ?? getEnv("OUTLOOK_CLIENT_SECRET"),
3493
3514
  scopes: config.scopes || ["Mail.Read", "Mail.Send", "Calendars.ReadWrite", "Contacts.Read"],
3515
+ optionalScopes: config.optionalScopes,
3494
3516
  redirectUri: config.redirectUri,
3495
3517
  config: {
3496
3518
  ...config
@@ -3542,6 +3564,7 @@ function airtableIntegration(config = {}) {
3542
3564
  "schema.bases:write",
3543
3565
  "webhook:manage"
3544
3566
  ],
3567
+ optionalScopes: config.optionalScopes,
3545
3568
  redirectUri: config.redirectUri,
3546
3569
  config: {
3547
3570
  ...config
@@ -3600,6 +3623,7 @@ function todoistIntegration(config = {}) {
3600
3623
  clientId: config.clientId ?? getEnv("TODOIST_CLIENT_ID"),
3601
3624
  clientSecret: config.clientSecret ?? getEnv("TODOIST_CLIENT_SECRET"),
3602
3625
  scopes: config.scopes || ["data:read_write"],
3626
+ optionalScopes: config.optionalScopes,
3603
3627
  redirectUri: config.redirectUri,
3604
3628
  config: {
3605
3629
  ...config
@@ -3643,6 +3667,7 @@ function whatsappIntegration(config = {}) {
3643
3667
  clientId: config.clientId ?? getEnv("WHATSAPP_CLIENT_ID"),
3644
3668
  clientSecret: config.clientSecret ?? getEnv("WHATSAPP_CLIENT_SECRET"),
3645
3669
  scopes: config.scopes || ["business_management", "whatsapp_business_messaging", "whatsapp_business_management"],
3670
+ optionalScopes: config.optionalScopes,
3646
3671
  redirectUri: config.redirectUri,
3647
3672
  config: {
3648
3673
  businessAccountId: config.businessAccountId,
@@ -3686,6 +3711,7 @@ function calcomIntegration(config = {}) {
3686
3711
  clientId: config.clientId ?? getEnv("CALCOM_CLIENT_ID"),
3687
3712
  clientSecret: config.clientSecret ?? getEnv("CALCOM_CLIENT_SECRET"),
3688
3713
  scopes: config.scopes || ["READ_BOOKING", "WRITE_BOOKING", "READ_PROFILE", "WRITE_PROFILE"],
3714
+ optionalScopes: config.optionalScopes,
3689
3715
  redirectUri: config.redirectUri,
3690
3716
  config: {
3691
3717
  apiBaseUrl: config.apiBaseUrl || "https://api.cal.com/v1",
@@ -3774,6 +3800,7 @@ function rampIntegration(config = {}) {
3774
3800
  clientId: config.clientId ?? getEnv("RAMP_CLIENT_ID"),
3775
3801
  clientSecret: config.clientSecret ?? getEnv("RAMP_CLIENT_SECRET"),
3776
3802
  scopes: config.scopes || ["transactions:read", "cards:read", "users:read"],
3803
+ optionalScopes: config.optionalScopes,
3777
3804
  redirectUri: config.redirectUri,
3778
3805
  config: {
3779
3806
  apiBaseUrl: config.apiBaseUrl || "https://api.ramp.com/v1",
@@ -3818,6 +3845,7 @@ function onedriveIntegration(config = {}) {
3818
3845
  clientId: config.clientId ?? getEnv("ONEDRIVE_CLIENT_ID"),
3819
3846
  clientSecret: config.clientSecret ?? getEnv("ONEDRIVE_CLIENT_SECRET"),
3820
3847
  scopes: config.scopes || ["Files.Read", "Files.ReadWrite", "offline_access"],
3848
+ optionalScopes: config.optionalScopes,
3821
3849
  redirectUri: config.redirectUri,
3822
3850
  config: {
3823
3851
  ...config
@@ -3869,6 +3897,7 @@ function gworkspaceIntegration(config = {}) {
3869
3897
  "https://www.googleapis.com/auth/presentations",
3870
3898
  "https://www.googleapis.com/auth/drive.readonly"
3871
3899
  ],
3900
+ optionalScopes: config.optionalScopes,
3872
3901
  redirectUri: config.redirectUri,
3873
3902
  config: {
3874
3903
  ...config
@@ -3934,6 +3963,7 @@ function polarIntegration(config = {}) {
3934
3963
  "metrics:read",
3935
3964
  "organizations:read"
3936
3965
  ],
3966
+ optionalScopes: config.optionalScopes,
3937
3967
  redirectUri: config.redirectUri,
3938
3968
  config: {
3939
3969
  apiBaseUrl: config.apiBaseUrl || "https://api.polar.sh"
@@ -4003,6 +4033,7 @@ function figmaIntegration(config = {}) {
4003
4033
  clientId: config.clientId ?? getEnv("FIGMA_CLIENT_ID"),
4004
4034
  clientSecret: config.clientSecret ?? getEnv("FIGMA_CLIENT_SECRET"),
4005
4035
  scopes: config.scopes || ["files:read", "file_comments:write"],
4036
+ optionalScopes: config.optionalScopes,
4006
4037
  redirectUri: config.redirectUri,
4007
4038
  config: {
4008
4039
  ...config
@@ -4046,6 +4077,7 @@ function intercomIntegration(config = {}) {
4046
4077
  clientId: config.clientId ?? getEnv("INTERCOM_CLIENT_ID"),
4047
4078
  clientSecret: config.clientSecret ?? getEnv("INTERCOM_CLIENT_SECRET"),
4048
4079
  scopes: config.scopes || [],
4080
+ optionalScopes: config.optionalScopes,
4049
4081
  redirectUri: config.redirectUri,
4050
4082
  config: {
4051
4083
  ...config
@@ -4099,6 +4131,7 @@ function hubspotIntegration(config = {}) {
4099
4131
  "crm.objects.tickets.write",
4100
4132
  "crm.objects.owners.read"
4101
4133
  ],
4134
+ optionalScopes: config.optionalScopes,
4102
4135
  redirectUri: config.redirectUri,
4103
4136
  config: {
4104
4137
  ...config
@@ -4161,6 +4194,7 @@ function youtubeIntegration(config = {}) {
4161
4194
  clientId: config.clientId ?? getEnv("YOUTUBE_CLIENT_ID"),
4162
4195
  clientSecret: config.clientSecret ?? getEnv("YOUTUBE_CLIENT_SECRET"),
4163
4196
  scopes: config.scopes || ["https://www.googleapis.com/auth/youtube.readonly"],
4197
+ optionalScopes: config.optionalScopes,
4164
4198
  redirectUri: config.redirectUri,
4165
4199
  config: {
4166
4200
  ...config
@@ -4238,6 +4272,7 @@ function genericOAuthIntegration(config) {
4238
4272
  clientId: config.clientId ?? getEnv(`${providerUpper}_CLIENT_ID`),
4239
4273
  clientSecret: config.clientSecret ?? getEnv(`${providerUpper}_CLIENT_SECRET`),
4240
4274
  scopes: config.scopes,
4275
+ optionalScopes: config.optionalScopes,
4241
4276
  redirectUri: config.redirectUri,
4242
4277
  config
4243
4278
  };
@@ -10940,6 +10975,7 @@ function createMCPServer(config) {
10940
10975
  tools: integration.tools,
10941
10976
  hasOAuth: !!integration.oauth,
10942
10977
  scopes: integration.oauth?.scopes,
10978
+ optionalScopes: integration.oauth?.optionalScopes,
10943
10979
  provider: integration.oauth?.provider
10944
10980
  }));
10945
10981
  return Response.json({ integrations });
@@ -11903,6 +11939,7 @@ class OAuthHandler {
11903
11939
  tools: integration.tools,
11904
11940
  hasOAuth: !!integration.oauth,
11905
11941
  scopes: integration.oauth?.scopes,
11942
+ optionalScopes: integration.oauth?.optionalScopes,
11906
11943
  provider: integration.oauth?.provider
11907
11944
  }))
11908
11945
  };
@@ -11945,6 +11982,10 @@ class OAuthHandler {
11945
11982
  if (scopes.length > 0) {
11946
11983
  url.searchParams.set("scope", scopes.join(","));
11947
11984
  }
11985
+ const optionalScopes = authorizeRequest.optionalScopes || providerConfig.optionalScopes || [];
11986
+ if (optionalScopes.length > 0) {
11987
+ url.searchParams.set("optional_scope", optionalScopes.join(","));
11988
+ }
11948
11989
  url.searchParams.set("state", authorizeRequest.state);
11949
11990
  url.searchParams.set("code_challenge", authorizeRequest.codeChallenge);
11950
11991
  url.searchParams.set("code_challenge_method", authorizeRequest.codeChallengeMethod);
@@ -11956,10 +11997,12 @@ class OAuthHandler {
11956
11997
  "clientId",
11957
11998
  "clientSecret",
11958
11999
  "scopes",
12000
+ "optionalScopes",
11959
12001
  "redirectUri",
11960
12002
  "client_id",
11961
12003
  "client_secret",
11962
12004
  "scope",
12005
+ "optional_scope",
11963
12006
  "redirect_uri",
11964
12007
  "provider"
11965
12008
  ]);
package/dist/oauth.js CHANGED
@@ -2842,6 +2842,7 @@ function githubIntegration(config = {}) {
2842
2842
  clientId: config.clientId ?? getEnv("GITHUB_CLIENT_ID"),
2843
2843
  clientSecret: config.clientSecret ?? getEnv("GITHUB_CLIENT_SECRET"),
2844
2844
  scopes: config.scopes || ["repo", "user"],
2845
+ optionalScopes: config.optionalScopes,
2845
2846
  redirectUri: config.redirectUri,
2846
2847
  config: {
2847
2848
  apiBaseUrl: config.apiBaseUrl || "https://api.github.com",
@@ -2929,6 +2930,7 @@ function gmailIntegration(config = {}) {
2929
2930
  "https://www.googleapis.com/auth/gmail.modify",
2930
2931
  "https://www.googleapis.com/auth/gmail.labels"
2931
2932
  ],
2933
+ optionalScopes: config.optionalScopes,
2932
2934
  redirectUri: config.redirectUri,
2933
2935
  config
2934
2936
  };
@@ -2965,6 +2967,7 @@ function notionIntegration(config = {}) {
2965
2967
  clientId: config.clientId ?? getEnv("NOTION_CLIENT_ID"),
2966
2968
  clientSecret: config.clientSecret ?? getEnv("NOTION_CLIENT_SECRET"),
2967
2969
  scopes: [],
2970
+ optionalScopes: config.optionalScopes,
2968
2971
  redirectUri: config.redirectUri,
2969
2972
  config: {
2970
2973
  owner: config.owner || "user",
@@ -3030,6 +3033,7 @@ function slackIntegration(config = {}) {
3030
3033
  clientId: config.clientId ?? getEnv("SLACK_CLIENT_ID"),
3031
3034
  clientSecret: config.clientSecret ?? getEnv("SLACK_CLIENT_SECRET"),
3032
3035
  scopes: config.scopes || ["chat:write", "channels:read", "users:read", "search:read", "files:write"],
3036
+ optionalScopes: config.optionalScopes,
3033
3037
  redirectUri: config.redirectUri,
3034
3038
  config: {
3035
3039
  ...config
@@ -3073,6 +3077,7 @@ function linearIntegration(config = {}) {
3073
3077
  clientId: config.clientId ?? getEnv("LINEAR_CLIENT_ID"),
3074
3078
  clientSecret: config.clientSecret ?? getEnv("LINEAR_CLIENT_SECRET"),
3075
3079
  scopes: config.scopes || ["read", "write", "issues:create", "comments:create"],
3080
+ optionalScopes: config.optionalScopes,
3076
3081
  redirectUri: config.redirectUri,
3077
3082
  config: {
3078
3083
  ...config
@@ -3140,6 +3145,7 @@ function vercelIntegration(config = {}) {
3140
3145
  clientId: config.clientId ?? getEnv("VERCEL_CLIENT_ID"),
3141
3146
  clientSecret: config.clientSecret ?? getEnv("VERCEL_CLIENT_SECRET"),
3142
3147
  scopes: config.scopes || [],
3148
+ optionalScopes: config.optionalScopes,
3143
3149
  redirectUri: config.redirectUri,
3144
3150
  config: {
3145
3151
  ...config
@@ -3166,13 +3172,25 @@ var init_vercel = __esm(() => {
3166
3172
  VERCEL_TOOLS = [
3167
3173
  "vercel_list_projects",
3168
3174
  "vercel_get_project",
3175
+ "vercel_create_project",
3176
+ "vercel_update_project",
3177
+ "vercel_delete_project",
3169
3178
  "vercel_list_deployments",
3170
3179
  "vercel_get_deployment",
3171
3180
  "vercel_create_deployment",
3172
3181
  "vercel_cancel_deployment",
3182
+ "vercel_delete_deployment",
3183
+ "vercel_promote_deployment",
3184
+ "vercel_get_deployment_logs",
3173
3185
  "vercel_list_domains",
3186
+ "vercel_add_domain",
3187
+ "vercel_remove_domain",
3188
+ "vercel_get_domain_config",
3174
3189
  "vercel_list_env_vars",
3175
- "vercel_get_deployment_logs"
3190
+ "vercel_create_env_var",
3191
+ "vercel_delete_env_var",
3192
+ "vercel_list_dns_records",
3193
+ "vercel_create_dns_record"
3176
3194
  ];
3177
3195
  });
3178
3196
 
@@ -3183,6 +3201,7 @@ function zendeskIntegration(config = {}) {
3183
3201
  clientId: config.clientId ?? getEnv("ZENDESK_CLIENT_ID"),
3184
3202
  clientSecret: config.clientSecret ?? getEnv("ZENDESK_CLIENT_SECRET"),
3185
3203
  scopes: config.scopes || ["read", "write"],
3204
+ optionalScopes: config.optionalScopes,
3186
3205
  redirectUri: config.redirectUri,
3187
3206
  config: {
3188
3207
  subdomain: config.subdomain ?? getEnv("ZENDESK_SUBDOMAIN"),
@@ -3227,6 +3246,7 @@ function stripeIntegration(config = {}) {
3227
3246
  clientId: config.clientId ?? getEnv("STRIPE_CLIENT_ID"),
3228
3247
  clientSecret: config.clientSecret ?? getEnv("STRIPE_CLIENT_SECRET"),
3229
3248
  scopes: config.scopes || ["read_write"],
3249
+ optionalScopes: config.optionalScopes,
3230
3250
  redirectUri: config.redirectUri,
3231
3251
  config: {
3232
3252
  ...config
@@ -3270,6 +3290,7 @@ function gcalIntegration(config = {}) {
3270
3290
  clientId: config.clientId ?? getEnv("GCAL_CLIENT_ID"),
3271
3291
  clientSecret: config.clientSecret ?? getEnv("GCAL_CLIENT_SECRET"),
3272
3292
  scopes: config.scopes || ["https://www.googleapis.com/auth/calendar"],
3293
+ optionalScopes: config.optionalScopes,
3273
3294
  redirectUri: config.redirectUri,
3274
3295
  config: {
3275
3296
  ...config
@@ -3313,6 +3334,7 @@ function outlookIntegration(config = {}) {
3313
3334
  clientId: config.clientId ?? getEnv("OUTLOOK_CLIENT_ID"),
3314
3335
  clientSecret: config.clientSecret ?? getEnv("OUTLOOK_CLIENT_SECRET"),
3315
3336
  scopes: config.scopes || ["Mail.Read", "Mail.Send", "Calendars.ReadWrite", "Contacts.Read"],
3337
+ optionalScopes: config.optionalScopes,
3316
3338
  redirectUri: config.redirectUri,
3317
3339
  config: {
3318
3340
  ...config
@@ -3364,6 +3386,7 @@ function airtableIntegration(config = {}) {
3364
3386
  "schema.bases:write",
3365
3387
  "webhook:manage"
3366
3388
  ],
3389
+ optionalScopes: config.optionalScopes,
3367
3390
  redirectUri: config.redirectUri,
3368
3391
  config: {
3369
3392
  ...config
@@ -3422,6 +3445,7 @@ function todoistIntegration(config = {}) {
3422
3445
  clientId: config.clientId ?? getEnv("TODOIST_CLIENT_ID"),
3423
3446
  clientSecret: config.clientSecret ?? getEnv("TODOIST_CLIENT_SECRET"),
3424
3447
  scopes: config.scopes || ["data:read_write"],
3448
+ optionalScopes: config.optionalScopes,
3425
3449
  redirectUri: config.redirectUri,
3426
3450
  config: {
3427
3451
  ...config
@@ -3465,6 +3489,7 @@ function whatsappIntegration(config = {}) {
3465
3489
  clientId: config.clientId ?? getEnv("WHATSAPP_CLIENT_ID"),
3466
3490
  clientSecret: config.clientSecret ?? getEnv("WHATSAPP_CLIENT_SECRET"),
3467
3491
  scopes: config.scopes || ["business_management", "whatsapp_business_messaging", "whatsapp_business_management"],
3492
+ optionalScopes: config.optionalScopes,
3468
3493
  redirectUri: config.redirectUri,
3469
3494
  config: {
3470
3495
  businessAccountId: config.businessAccountId,
@@ -3508,6 +3533,7 @@ function calcomIntegration(config = {}) {
3508
3533
  clientId: config.clientId ?? getEnv("CALCOM_CLIENT_ID"),
3509
3534
  clientSecret: config.clientSecret ?? getEnv("CALCOM_CLIENT_SECRET"),
3510
3535
  scopes: config.scopes || ["READ_BOOKING", "WRITE_BOOKING", "READ_PROFILE", "WRITE_PROFILE"],
3536
+ optionalScopes: config.optionalScopes,
3511
3537
  redirectUri: config.redirectUri,
3512
3538
  config: {
3513
3539
  apiBaseUrl: config.apiBaseUrl || "https://api.cal.com/v1",
@@ -3596,6 +3622,7 @@ function rampIntegration(config = {}) {
3596
3622
  clientId: config.clientId ?? getEnv("RAMP_CLIENT_ID"),
3597
3623
  clientSecret: config.clientSecret ?? getEnv("RAMP_CLIENT_SECRET"),
3598
3624
  scopes: config.scopes || ["transactions:read", "cards:read", "users:read"],
3625
+ optionalScopes: config.optionalScopes,
3599
3626
  redirectUri: config.redirectUri,
3600
3627
  config: {
3601
3628
  apiBaseUrl: config.apiBaseUrl || "https://api.ramp.com/v1",
@@ -3640,6 +3667,7 @@ function onedriveIntegration(config = {}) {
3640
3667
  clientId: config.clientId ?? getEnv("ONEDRIVE_CLIENT_ID"),
3641
3668
  clientSecret: config.clientSecret ?? getEnv("ONEDRIVE_CLIENT_SECRET"),
3642
3669
  scopes: config.scopes || ["Files.Read", "Files.ReadWrite", "offline_access"],
3670
+ optionalScopes: config.optionalScopes,
3643
3671
  redirectUri: config.redirectUri,
3644
3672
  config: {
3645
3673
  ...config
@@ -3691,6 +3719,7 @@ function gworkspaceIntegration(config = {}) {
3691
3719
  "https://www.googleapis.com/auth/presentations",
3692
3720
  "https://www.googleapis.com/auth/drive.readonly"
3693
3721
  ],
3722
+ optionalScopes: config.optionalScopes,
3694
3723
  redirectUri: config.redirectUri,
3695
3724
  config: {
3696
3725
  ...config
@@ -3756,6 +3785,7 @@ function polarIntegration(config = {}) {
3756
3785
  "metrics:read",
3757
3786
  "organizations:read"
3758
3787
  ],
3788
+ optionalScopes: config.optionalScopes,
3759
3789
  redirectUri: config.redirectUri,
3760
3790
  config: {
3761
3791
  apiBaseUrl: config.apiBaseUrl || "https://api.polar.sh"
@@ -3825,6 +3855,7 @@ function figmaIntegration(config = {}) {
3825
3855
  clientId: config.clientId ?? getEnv("FIGMA_CLIENT_ID"),
3826
3856
  clientSecret: config.clientSecret ?? getEnv("FIGMA_CLIENT_SECRET"),
3827
3857
  scopes: config.scopes || ["files:read", "file_comments:write"],
3858
+ optionalScopes: config.optionalScopes,
3828
3859
  redirectUri: config.redirectUri,
3829
3860
  config: {
3830
3861
  ...config
@@ -3868,6 +3899,7 @@ function intercomIntegration(config = {}) {
3868
3899
  clientId: config.clientId ?? getEnv("INTERCOM_CLIENT_ID"),
3869
3900
  clientSecret: config.clientSecret ?? getEnv("INTERCOM_CLIENT_SECRET"),
3870
3901
  scopes: config.scopes || [],
3902
+ optionalScopes: config.optionalScopes,
3871
3903
  redirectUri: config.redirectUri,
3872
3904
  config: {
3873
3905
  ...config
@@ -3921,6 +3953,7 @@ function hubspotIntegration(config = {}) {
3921
3953
  "crm.objects.tickets.write",
3922
3954
  "crm.objects.owners.read"
3923
3955
  ],
3956
+ optionalScopes: config.optionalScopes,
3924
3957
  redirectUri: config.redirectUri,
3925
3958
  config: {
3926
3959
  ...config
@@ -3983,6 +4016,7 @@ function youtubeIntegration(config = {}) {
3983
4016
  clientId: config.clientId ?? getEnv("YOUTUBE_CLIENT_ID"),
3984
4017
  clientSecret: config.clientSecret ?? getEnv("YOUTUBE_CLIENT_SECRET"),
3985
4018
  scopes: config.scopes || ["https://www.googleapis.com/auth/youtube.readonly"],
4019
+ optionalScopes: config.optionalScopes,
3986
4020
  redirectUri: config.redirectUri,
3987
4021
  config: {
3988
4022
  ...config
@@ -4060,6 +4094,7 @@ function genericOAuthIntegration(config) {
4060
4094
  clientId: config.clientId ?? getEnv(`${providerUpper}_CLIENT_ID`),
4061
4095
  clientSecret: config.clientSecret ?? getEnv(`${providerUpper}_CLIENT_SECRET`),
4062
4096
  scopes: config.scopes,
4097
+ optionalScopes: config.optionalScopes,
4063
4098
  redirectUri: config.redirectUri,
4064
4099
  config
4065
4100
  };
@@ -10774,6 +10809,7 @@ function createMCPServer(config) {
10774
10809
  tools: integration.tools,
10775
10810
  hasOAuth: !!integration.oauth,
10776
10811
  scopes: integration.oauth?.scopes,
10812
+ optionalScopes: integration.oauth?.optionalScopes,
10777
10813
  provider: integration.oauth?.provider
10778
10814
  }));
10779
10815
  return Response.json({ integrations });
@@ -11737,6 +11773,7 @@ class OAuthHandler {
11737
11773
  tools: integration.tools,
11738
11774
  hasOAuth: !!integration.oauth,
11739
11775
  scopes: integration.oauth?.scopes,
11776
+ optionalScopes: integration.oauth?.optionalScopes,
11740
11777
  provider: integration.oauth?.provider
11741
11778
  }))
11742
11779
  };
@@ -11779,6 +11816,10 @@ class OAuthHandler {
11779
11816
  if (scopes.length > 0) {
11780
11817
  url.searchParams.set("scope", scopes.join(","));
11781
11818
  }
11819
+ const optionalScopes = authorizeRequest.optionalScopes || providerConfig.optionalScopes || [];
11820
+ if (optionalScopes.length > 0) {
11821
+ url.searchParams.set("optional_scope", optionalScopes.join(","));
11822
+ }
11782
11823
  url.searchParams.set("state", authorizeRequest.state);
11783
11824
  url.searchParams.set("code_challenge", authorizeRequest.codeChallenge);
11784
11825
  url.searchParams.set("code_challenge_method", authorizeRequest.codeChallengeMethod);
@@ -11790,10 +11831,12 @@ class OAuthHandler {
11790
11831
  "clientId",
11791
11832
  "clientSecret",
11792
11833
  "scopes",
11834
+ "optionalScopes",
11793
11835
  "redirectUri",
11794
11836
  "client_id",
11795
11837
  "client_secret",
11796
11838
  "scope",
11839
+ "optional_scope",
11797
11840
  "redirect_uri",
11798
11841
  "provider"
11799
11842
  ]);