integrate-sdk 0.9.27-dev.1 → 0.9.28-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 (35) hide show
  1. package/README.md +82 -0
  2. package/dist/adapters/auto-routes.js +177 -8
  3. package/dist/adapters/base-handler.d.ts +4 -2
  4. package/dist/adapters/base-handler.d.ts.map +1 -1
  5. package/dist/adapters/base-handler.js +177 -8
  6. package/dist/adapters/index.js +245 -81
  7. package/dist/adapters/nextjs.js +177 -8
  8. package/dist/adapters/solid-start.js +245 -81
  9. package/dist/adapters/svelte-kit.js +245 -81
  10. package/dist/index.js +422 -109
  11. package/dist/oauth.js +177 -8
  12. package/dist/server.js +449 -138
  13. package/dist/src/adapters/base-handler.d.ts +4 -2
  14. package/dist/src/adapters/base-handler.d.ts.map +1 -1
  15. package/dist/src/client.d.ts +8 -0
  16. package/dist/src/client.d.ts.map +1 -1
  17. package/dist/src/index.d.ts +8 -0
  18. package/dist/src/index.d.ts.map +1 -1
  19. package/dist/src/integrations/dropbox.d.ts +22 -0
  20. package/dist/src/integrations/dropbox.d.ts.map +1 -0
  21. package/dist/src/integrations/granola.d.ts +14 -0
  22. package/dist/src/integrations/granola.d.ts.map +1 -0
  23. package/dist/src/integrations/integration-summary.d.ts +24 -0
  24. package/dist/src/integrations/integration-summary.d.ts.map +1 -0
  25. package/dist/src/integrations/library-metadata.d.ts +26 -0
  26. package/dist/src/integrations/library-metadata.d.ts.map +1 -0
  27. package/dist/src/integrations/mercury.d.ts +14 -0
  28. package/dist/src/integrations/mercury.d.ts.map +1 -0
  29. package/dist/src/integrations/server-client.d.ts +4 -0
  30. package/dist/src/integrations/server-client.d.ts.map +1 -1
  31. package/dist/src/integrations/types.d.ts +12 -0
  32. package/dist/src/integrations/types.d.ts.map +1 -1
  33. package/dist/src/server.d.ts +3 -0
  34. package/dist/src/server.d.ts.map +1 -1
  35. package/package.json +1 -1
package/README.md CHANGED
@@ -132,6 +132,88 @@ const result = await client.github.createIssue({
132
132
  console.log("Issue created:", result);
133
133
  ```
134
134
 
135
+ ### API Key Integrations
136
+
137
+ Use API-key integrations like Granola by passing the credential directly to the integration helper:
138
+
139
+ ```typescript
140
+ import { createMCPClient, granolaIntegration } from "integrate-sdk";
141
+
142
+ const client = createMCPClient({
143
+ integrations: [
144
+ granolaIntegration({
145
+ apiKey: process.env.GRANOLA_API_KEY!,
146
+ }),
147
+ ],
148
+ });
149
+
150
+ const notes = await client.callTool("granola_list_notes", {
151
+ page_size: 10,
152
+ });
153
+
154
+ const note = await client.callTool("granola_get_note", {
155
+ note_id: "not_123",
156
+ include_transcript: true,
157
+ });
158
+
159
+ const folders = await client.callTool("granola_list_folders", {
160
+ page_size: 10,
161
+ });
162
+ ```
163
+
164
+ Mercury uses the same API-token pattern:
165
+
166
+ ```typescript
167
+ import { createMCPClient, mercuryIntegration } from "integrate-sdk";
168
+
169
+ const client = createMCPClient({
170
+ integrations: [
171
+ mercuryIntegration({
172
+ apiKey: process.env.MERCURY_API_KEY!,
173
+ }),
174
+ ],
175
+ });
176
+
177
+ const org = await client.callTool("mercury_get_organization");
178
+ const accounts = await client.callTool("mercury_list_accounts", {
179
+ limit: 50,
180
+ });
181
+ const txns = await client.callTool("mercury_list_transactions", {
182
+ start: "2026-01-01",
183
+ end: "2026-01-31",
184
+ limit: 100,
185
+ });
186
+ ```
187
+
188
+ ### OAuth File Storage Integrations
189
+
190
+ Dropbox follows the standard OAuth integration flow:
191
+
192
+ ```typescript
193
+ import { createMCPClient, dropboxIntegration } from "integrate-sdk";
194
+
195
+ const client = createMCPClient({
196
+ integrations: [
197
+ dropboxIntegration({
198
+ scopes: [
199
+ "account_info.read",
200
+ "files.metadata.read",
201
+ "files.content.read",
202
+ "files.content.write",
203
+ "sharing.read",
204
+ "sharing.write",
205
+ ],
206
+ }),
207
+ ],
208
+ });
209
+
210
+ const account = await client.callTool("dropbox_get_current_account");
211
+ const files = await client.callTool("dropbox_list_folder", {
212
+ path: "/",
213
+ limit: 50,
214
+ });
215
+ ```
216
+
135
217
  **That's it!** The SDK automatically:
136
218
 
137
219
  - ✅ Connects on first method call (no manual `connect()` needed)
@@ -284,6 +284,180 @@ function getContextCookieFromRequest(request) {
284
284
  }
285
285
  var CONTEXT_COOKIE_NAME = "__integrate_oauth_ctx", CONTEXT_COOKIE_MAX_AGE = 300;
286
286
 
287
+ // ../integrations/library-metadata.ts
288
+ function integrationLibraryPresentationFields(integration) {
289
+ const id = typeof integration["id"] === "string" ? integration["id"] : String(integration["id"] ?? "");
290
+ const fromCatalog = id ? INTEGRATION_LIBRARY_METADATA[id] : undefined;
291
+ const explicitDescription = integration["description"];
292
+ const explicitCategory = integration["category"];
293
+ const description = typeof explicitDescription === "string" && explicitDescription.trim().length > 0 ? explicitDescription.trim() : fromCatalog?.description;
294
+ const category = typeof explicitCategory === "string" && explicitCategory.trim().length > 0 ? explicitCategory.trim() : fromCatalog?.category;
295
+ const out = {};
296
+ if (description)
297
+ out.description = description;
298
+ if (category)
299
+ out.category = category;
300
+ return out;
301
+ }
302
+ var INTEGRATION_LIBRARY_METADATA;
303
+ var init_library_metadata = __esm(() => {
304
+ INTEGRATION_LIBRARY_METADATA = {
305
+ airtable: {
306
+ description: "Manage Airtable bases, tables, and records",
307
+ category: "Business"
308
+ },
309
+ calcom: {
310
+ description: "Manage Cal.com bookings and schedules",
311
+ category: "Productivity"
312
+ },
313
+ cursor: {
314
+ description: "Manage Cursor Cloud Agents and background tasks",
315
+ category: "Engineering"
316
+ },
317
+ figma: {
318
+ description: "Access Figma files, comments, and components",
319
+ category: "Engineering"
320
+ },
321
+ github: {
322
+ description: "Manage GitHub repos, issues, and pull requests",
323
+ category: "Engineering"
324
+ },
325
+ gmail: {
326
+ description: "Send, read, and search Gmail messages",
327
+ category: "Communication"
328
+ },
329
+ gcal: {
330
+ description: "Manage Google Calendar events and schedules",
331
+ category: "Productivity"
332
+ },
333
+ hubspot: {
334
+ description: "Manage HubSpot contacts, deals, and tickets",
335
+ category: "Business"
336
+ },
337
+ intercom: {
338
+ description: "Manage Intercom contacts and conversations",
339
+ category: "Business"
340
+ },
341
+ linear: {
342
+ description: "Manage Linear issues, projects, and cycles",
343
+ category: "Engineering"
344
+ },
345
+ notion: {
346
+ description: "Manage Notion pages and databases",
347
+ category: "Productivity"
348
+ },
349
+ onedrive: {
350
+ description: "Manage OneDrive files, folders, and sharing",
351
+ category: "Storage"
352
+ },
353
+ outlook: {
354
+ description: "Manage Outlook mail, calendars, and contacts",
355
+ category: "Communication"
356
+ },
357
+ polar: {
358
+ description: "Manage Polar products, orders, and subscriptions",
359
+ category: "Business"
360
+ },
361
+ ramp: {
362
+ description: "Manage Ramp corporate cards, bills, and spend",
363
+ category: "Business"
364
+ },
365
+ slack: {
366
+ description: "Send and manage Slack messages and channels",
367
+ category: "Communication"
368
+ },
369
+ stripe: {
370
+ description: "Manage Stripe customers, payments, and subscriptions",
371
+ category: "Business"
372
+ },
373
+ todoist: {
374
+ description: "Manage Todoist tasks, projects, and labels",
375
+ category: "Productivity"
376
+ },
377
+ gslides: {
378
+ description: "Create and update Google Slides presentations",
379
+ category: "Productivity"
380
+ },
381
+ gsheets: {
382
+ description: "Read and update Google Sheets spreadsheets",
383
+ category: "Productivity"
384
+ },
385
+ gdocs: {
386
+ description: "Create and edit Google Docs documents",
387
+ category: "Productivity"
388
+ },
389
+ gdrive: {
390
+ description: "Manage Google Drive files, folders, and sharing",
391
+ category: "Storage"
392
+ },
393
+ vercel: {
394
+ description: "Manage Vercel projects, deployments, and domains",
395
+ category: "Engineering"
396
+ },
397
+ whatsapp: {
398
+ description: "Send WhatsApp messages and templates",
399
+ category: "Communication"
400
+ },
401
+ youtube: {
402
+ description: "Search and access YouTube videos and channels",
403
+ category: "Communication"
404
+ },
405
+ powerpoint: {
406
+ description: "Manage PowerPoint presentations and sharing",
407
+ category: "Productivity"
408
+ },
409
+ excel: {
410
+ description: "Manage Excel workbooks, worksheets, and tables",
411
+ category: "Productivity"
412
+ },
413
+ word: {
414
+ description: "Manage Word documents and sharing",
415
+ category: "Productivity"
416
+ },
417
+ dropbox: {
418
+ description: "Manage Dropbox files, folders, and sharing",
419
+ category: "Storage"
420
+ },
421
+ granola: {
422
+ description: "List and read Granola meeting notes and folders",
423
+ category: "Productivity"
424
+ },
425
+ mercury: {
426
+ description: "Manage Mercury bank accounts, cards, and transactions",
427
+ category: "Business"
428
+ },
429
+ zendesk: {
430
+ description: "Manage Zendesk tickets, users, and help center content",
431
+ category: "Business"
432
+ }
433
+ };
434
+ });
435
+
436
+ // ../integrations/integration-summary.ts
437
+ function toConfiguredIntegrationSummary(integration) {
438
+ const row = integration;
439
+ const pres = integrationLibraryPresentationFields(row);
440
+ return {
441
+ id: integration.id,
442
+ name: row.name || integration.id,
443
+ logoUrl: row.logoUrl,
444
+ tools: integration.tools,
445
+ hasOAuth: !!integration.oauth,
446
+ scopes: integration.oauth?.scopes,
447
+ provider: integration.oauth?.provider,
448
+ ...pres
449
+ };
450
+ }
451
+ function toConfiguredIntegrationWithToolMetadata(integration, toolMetadata) {
452
+ return {
453
+ ...toConfiguredIntegrationSummary(integration),
454
+ toolMetadata
455
+ };
456
+ }
457
+ var init_integration_summary = __esm(() => {
458
+ init_library_metadata();
459
+ });
460
+
287
461
  // ../utils/logger.ts
288
462
  function shouldLog(level, context) {
289
463
  return logLevelHierarchy[level] <= logLevelHierarchy[contextLogLevels[context]];
@@ -447,14 +621,8 @@ class OAuthHandler {
447
621
  const integrations = this.config.integrations || [];
448
622
  return {
449
623
  integrations: integrations.map((integration) => ({
450
- id: integration.id,
451
- name: integration.name || integration.id,
452
- logoUrl: integration.logoUrl,
453
- tools: integration.tools,
454
- hasOAuth: !!integration.oauth,
455
- scopes: integration.oauth?.scopes,
456
- optionalScopes: integration.oauth?.optionalScopes,
457
- provider: integration.oauth?.provider
624
+ ...toConfiguredIntegrationSummary(integration),
625
+ optionalScopes: integration.oauth?.optionalScopes
458
626
  }))
459
627
  };
460
628
  }
@@ -841,6 +1009,7 @@ class OAuthHandler {
841
1009
  }
842
1010
  var SERVER_LOG_CONTEXT = "server", logger2, MCP_SERVER_URL = "https://mcp.integrate.dev/api/v1/mcp";
843
1011
  var init_base_handler = __esm(() => {
1012
+ init_integration_summary();
844
1013
  init_email_fetcher();
845
1014
  init_logger();
846
1015
  logger2 = createLogger("OAuthHandler", SERVER_LOG_CONTEXT);
@@ -240,10 +240,12 @@ export declare class OAuthHandler {
240
240
  id: string;
241
241
  name: string;
242
242
  logoUrl?: string;
243
+ description?: string;
244
+ category?: string;
243
245
  tools: readonly string[];
244
246
  hasOAuth: boolean;
245
- scopes?: string[];
246
- optionalScopes?: string[];
247
+ scopes?: readonly string[];
248
+ optionalScopes?: readonly string[];
247
249
  provider?: string;
248
250
  }>;
249
251
  };
@@ -1 +1 @@
1
- {"version":3,"file":"base-handler.d.ts","sourceRoot":"","sources":["../../../src/adapters/base-handler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAe3D;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE;QACxB,iDAAiD;QACjD,QAAQ,EAAE,MAAM,CAAC;QACjB,qDAAqD;QACrD,YAAY,EAAE,MAAM,CAAC;QACrB,qCAAqC;QACrC,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,8CAA8C;QAC9C,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,6DAA6D;QAC7D,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;QAC1B,kFAAkF;QAClF,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAC9B,CAAC,CAAC;IACH;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,YAAY,CAAC,EAAE,SAAS;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;QAAC,KAAK,CAAC,EAAE;YAAE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;YAAC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;YAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,EAAE,CAAC;IACpK;;;;;;;;;;;;;;OAcG;IACH,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,GAAG,UAAU,GAAG,SAAS,CAAC;IACnG;;;;;;;;;;;;;;;;;;;OAmBG;IACH,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,GAAG,IAAI,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACzI;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,mBAAmB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACxG;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,+EAA+E;IAC/E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kFAAkF;IAClF,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,EAAE,MAAM,CAAC;IACzB,0DAA0D;IAC1D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC;QACpC,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED;;;;GAIG;AACH,qBAAa,YAAY;IAIX,OAAO,CAAC,MAAM;IAH1B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;gBAEb,MAAM,EAAE,kBAAkB;IAW9C;;;OAGG;IACH,kBAAkB,IAAI;QAAE,YAAY,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;YAAC,QAAQ,EAAE,OAAO,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;YAAC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;YAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE;IAgB3M;;OAEG;IACH,OAAO,CAAC,UAAU;IAalB;;;OAGG;IACH,oBAAoB,IAAI,OAAO;IAI/B;;;;;;;;;;OAUG;IACG,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA8ItF;;;;;;;;;;OAUG;IACG,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAqHnF;;;;;;;;;OASG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IA4BlF;;;;;;;;;;;OAWG;IACG,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA4D1H;;;;;;;;;OASG;IACG,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC;IAuGhF;;;;;;;;;;;;;;OAcG;IACG,cAAc,CAClB,OAAO,EAAE,eAAe,EACxB,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,GACjC,OAAO,CAAC,gBAAgB,CAAC;CAkF7B"}
1
+ {"version":3,"file":"base-handler.d.ts","sourceRoot":"","sources":["../../../src/adapters/base-handler.ts"],"names":[],"mappings":"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"}
@@ -284,6 +284,180 @@ function getContextCookieFromRequest(request) {
284
284
  }
285
285
  var CONTEXT_COOKIE_NAME = "__integrate_oauth_ctx", CONTEXT_COOKIE_MAX_AGE = 300;
286
286
 
287
+ // ../integrations/library-metadata.ts
288
+ function integrationLibraryPresentationFields(integration) {
289
+ const id = typeof integration["id"] === "string" ? integration["id"] : String(integration["id"] ?? "");
290
+ const fromCatalog = id ? INTEGRATION_LIBRARY_METADATA[id] : undefined;
291
+ const explicitDescription = integration["description"];
292
+ const explicitCategory = integration["category"];
293
+ const description = typeof explicitDescription === "string" && explicitDescription.trim().length > 0 ? explicitDescription.trim() : fromCatalog?.description;
294
+ const category = typeof explicitCategory === "string" && explicitCategory.trim().length > 0 ? explicitCategory.trim() : fromCatalog?.category;
295
+ const out = {};
296
+ if (description)
297
+ out.description = description;
298
+ if (category)
299
+ out.category = category;
300
+ return out;
301
+ }
302
+ var INTEGRATION_LIBRARY_METADATA;
303
+ var init_library_metadata = __esm(() => {
304
+ INTEGRATION_LIBRARY_METADATA = {
305
+ airtable: {
306
+ description: "Manage Airtable bases, tables, and records",
307
+ category: "Business"
308
+ },
309
+ calcom: {
310
+ description: "Manage Cal.com bookings and schedules",
311
+ category: "Productivity"
312
+ },
313
+ cursor: {
314
+ description: "Manage Cursor Cloud Agents and background tasks",
315
+ category: "Engineering"
316
+ },
317
+ figma: {
318
+ description: "Access Figma files, comments, and components",
319
+ category: "Engineering"
320
+ },
321
+ github: {
322
+ description: "Manage GitHub repos, issues, and pull requests",
323
+ category: "Engineering"
324
+ },
325
+ gmail: {
326
+ description: "Send, read, and search Gmail messages",
327
+ category: "Communication"
328
+ },
329
+ gcal: {
330
+ description: "Manage Google Calendar events and schedules",
331
+ category: "Productivity"
332
+ },
333
+ hubspot: {
334
+ description: "Manage HubSpot contacts, deals, and tickets",
335
+ category: "Business"
336
+ },
337
+ intercom: {
338
+ description: "Manage Intercom contacts and conversations",
339
+ category: "Business"
340
+ },
341
+ linear: {
342
+ description: "Manage Linear issues, projects, and cycles",
343
+ category: "Engineering"
344
+ },
345
+ notion: {
346
+ description: "Manage Notion pages and databases",
347
+ category: "Productivity"
348
+ },
349
+ onedrive: {
350
+ description: "Manage OneDrive files, folders, and sharing",
351
+ category: "Storage"
352
+ },
353
+ outlook: {
354
+ description: "Manage Outlook mail, calendars, and contacts",
355
+ category: "Communication"
356
+ },
357
+ polar: {
358
+ description: "Manage Polar products, orders, and subscriptions",
359
+ category: "Business"
360
+ },
361
+ ramp: {
362
+ description: "Manage Ramp corporate cards, bills, and spend",
363
+ category: "Business"
364
+ },
365
+ slack: {
366
+ description: "Send and manage Slack messages and channels",
367
+ category: "Communication"
368
+ },
369
+ stripe: {
370
+ description: "Manage Stripe customers, payments, and subscriptions",
371
+ category: "Business"
372
+ },
373
+ todoist: {
374
+ description: "Manage Todoist tasks, projects, and labels",
375
+ category: "Productivity"
376
+ },
377
+ gslides: {
378
+ description: "Create and update Google Slides presentations",
379
+ category: "Productivity"
380
+ },
381
+ gsheets: {
382
+ description: "Read and update Google Sheets spreadsheets",
383
+ category: "Productivity"
384
+ },
385
+ gdocs: {
386
+ description: "Create and edit Google Docs documents",
387
+ category: "Productivity"
388
+ },
389
+ gdrive: {
390
+ description: "Manage Google Drive files, folders, and sharing",
391
+ category: "Storage"
392
+ },
393
+ vercel: {
394
+ description: "Manage Vercel projects, deployments, and domains",
395
+ category: "Engineering"
396
+ },
397
+ whatsapp: {
398
+ description: "Send WhatsApp messages and templates",
399
+ category: "Communication"
400
+ },
401
+ youtube: {
402
+ description: "Search and access YouTube videos and channels",
403
+ category: "Communication"
404
+ },
405
+ powerpoint: {
406
+ description: "Manage PowerPoint presentations and sharing",
407
+ category: "Productivity"
408
+ },
409
+ excel: {
410
+ description: "Manage Excel workbooks, worksheets, and tables",
411
+ category: "Productivity"
412
+ },
413
+ word: {
414
+ description: "Manage Word documents and sharing",
415
+ category: "Productivity"
416
+ },
417
+ dropbox: {
418
+ description: "Manage Dropbox files, folders, and sharing",
419
+ category: "Storage"
420
+ },
421
+ granola: {
422
+ description: "List and read Granola meeting notes and folders",
423
+ category: "Productivity"
424
+ },
425
+ mercury: {
426
+ description: "Manage Mercury bank accounts, cards, and transactions",
427
+ category: "Business"
428
+ },
429
+ zendesk: {
430
+ description: "Manage Zendesk tickets, users, and help center content",
431
+ category: "Business"
432
+ }
433
+ };
434
+ });
435
+
436
+ // ../integrations/integration-summary.ts
437
+ function toConfiguredIntegrationSummary(integration) {
438
+ const row = integration;
439
+ const pres = integrationLibraryPresentationFields(row);
440
+ return {
441
+ id: integration.id,
442
+ name: row.name || integration.id,
443
+ logoUrl: row.logoUrl,
444
+ tools: integration.tools,
445
+ hasOAuth: !!integration.oauth,
446
+ scopes: integration.oauth?.scopes,
447
+ provider: integration.oauth?.provider,
448
+ ...pres
449
+ };
450
+ }
451
+ function toConfiguredIntegrationWithToolMetadata(integration, toolMetadata) {
452
+ return {
453
+ ...toConfiguredIntegrationSummary(integration),
454
+ toolMetadata
455
+ };
456
+ }
457
+ var init_integration_summary = __esm(() => {
458
+ init_library_metadata();
459
+ });
460
+
287
461
  // ../utils/logger.ts
288
462
  function shouldLog(level, context) {
289
463
  return logLevelHierarchy[level] <= logLevelHierarchy[contextLogLevels[context]];
@@ -447,14 +621,8 @@ class OAuthHandler {
447
621
  const integrations = this.config.integrations || [];
448
622
  return {
449
623
  integrations: integrations.map((integration) => ({
450
- id: integration.id,
451
- name: integration.name || integration.id,
452
- logoUrl: integration.logoUrl,
453
- tools: integration.tools,
454
- hasOAuth: !!integration.oauth,
455
- scopes: integration.oauth?.scopes,
456
- optionalScopes: integration.oauth?.optionalScopes,
457
- provider: integration.oauth?.provider
624
+ ...toConfiguredIntegrationSummary(integration),
625
+ optionalScopes: integration.oauth?.optionalScopes
458
626
  }))
459
627
  };
460
628
  }
@@ -841,6 +1009,7 @@ class OAuthHandler {
841
1009
  }
842
1010
  var SERVER_LOG_CONTEXT = "server", logger2, MCP_SERVER_URL = "https://mcp.integrate.dev/api/v1/mcp";
843
1011
  var init_base_handler = __esm(() => {
1012
+ init_integration_summary();
844
1013
  init_email_fetcher();
845
1014
  init_logger();
846
1015
  logger2 = createLogger("OAuthHandler", SERVER_LOG_CONTEXT);