integrate-sdk 0.9.27-dev.2 → 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.
@@ -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);
@@ -1696,6 +1865,8 @@ class HttpSessionTransport {
1696
1865
  }
1697
1866
 
1698
1867
  // ../client.ts
1868
+ init_integration_summary();
1869
+ init_library_metadata();
1699
1870
  init_errors();
1700
1871
  init_logger();
1701
1872
 
@@ -3011,31 +3182,14 @@ class MCPClientBase {
3011
3182
  const serverConfig = this.__oauthConfig;
3012
3183
  const localIntegrations = serverConfig?.integrations || this.__configuredIntegrations;
3013
3184
  const formatLocalIntegrations = (integrations) => ({
3014
- integrations: integrations.map((integration) => ({
3015
- id: integration.id,
3016
- name: integration.name || integration.id,
3017
- logoUrl: integration.logoUrl,
3018
- tools: integration.tools,
3019
- hasOAuth: !!integration.oauth,
3020
- scopes: integration.oauth?.scopes,
3021
- provider: integration.oauth?.provider
3022
- }))
3185
+ integrations: integrations.map((integration) => toConfiguredIntegrationSummary(integration))
3023
3186
  });
3024
3187
  if (hasApiKey || !this.__useServerConfig) {
3025
3188
  if (options?.includeToolMetadata && hasApiKey) {
3026
3189
  await this.ensureConnected();
3027
3190
  const integrationsWithMetadata = localIntegrations.map((integration) => {
3028
3191
  const toolMetadata = integration.tools.map((toolName) => this.availableTools.get(toolName)).filter((tool) => !!tool);
3029
- return {
3030
- id: integration.id,
3031
- name: integration.name || integration.id,
3032
- logoUrl: integration.logoUrl,
3033
- tools: integration.tools,
3034
- hasOAuth: !!integration.oauth,
3035
- scopes: integration.oauth?.scopes,
3036
- provider: integration.oauth?.provider,
3037
- toolMetadata
3038
- };
3192
+ return toConfiguredIntegrationWithToolMetadata(integration, toolMetadata);
3039
3193
  });
3040
3194
  return { integrations: integrationsWithMetadata };
3041
3195
  }
@@ -3061,28 +3215,10 @@ class MCPClientBase {
3061
3215
  }
3062
3216
  }
3063
3217
  }
3064
- return {
3065
- id: integration.id,
3066
- name: integration.name || integration.id,
3067
- logoUrl: integration.logoUrl,
3068
- tools: integration.tools,
3069
- hasOAuth: !!integration.oauth,
3070
- scopes: integration.oauth?.scopes,
3071
- provider: integration.oauth?.provider,
3072
- toolMetadata
3073
- };
3218
+ return toConfiguredIntegrationWithToolMetadata(integration, toolMetadata);
3074
3219
  } catch (error) {
3075
3220
  logger7.error(`Failed to fetch tool metadata for ${integration.id}:`, error);
3076
- return {
3077
- id: integration.id,
3078
- name: integration.name || integration.id,
3079
- logoUrl: integration.logoUrl,
3080
- tools: integration.tools,
3081
- hasOAuth: !!integration.oauth,
3082
- scopes: integration.oauth?.scopes,
3083
- provider: integration.oauth?.provider,
3084
- toolMetadata: []
3085
- };
3221
+ return toConfiguredIntegrationWithToolMetadata(integration, []);
3086
3222
  }
3087
3223
  }, 3);
3088
3224
  return { integrations: integrationsWithMetadata };
@@ -3102,6 +3238,12 @@ class MCPClientBase {
3102
3238
  return formatLocalIntegrations(localIntegrations);
3103
3239
  }
3104
3240
  const result = await response.json();
3241
+ if (result.integrations && Array.isArray(result.integrations)) {
3242
+ result.integrations = result.integrations.map((row) => ({
3243
+ ...row,
3244
+ ...integrationLibraryPresentationFields(row)
3245
+ }));
3246
+ }
3105
3247
  if (options?.includeToolMetadata && result.integrations) {
3106
3248
  const { parallelWithLimit: parallelWithLimit2 } = await Promise.resolve().then(() => exports_concurrency);
3107
3249
  const integrationsWithMetadata = await parallelWithLimit2(result.integrations, async (integration) => {
@@ -3126,12 +3268,14 @@ class MCPClientBase {
3126
3268
  }
3127
3269
  return {
3128
3270
  ...integration,
3271
+ ...integrationLibraryPresentationFields(integration),
3129
3272
  toolMetadata
3130
3273
  };
3131
3274
  } catch (error) {
3132
3275
  logger7.error(`Failed to fetch tool metadata for ${integration.id}:`, error);
3133
3276
  return {
3134
3277
  ...integration,
3278
+ ...integrationLibraryPresentationFields(integration),
3135
3279
  toolMetadata: []
3136
3280
  };
3137
3281
  }
@@ -3705,7 +3849,9 @@ class MCPClientBase {
3705
3849
  return success;
3706
3850
  }
3707
3851
  }
3852
+
3708
3853
  // ../server.ts
3854
+ init_integration_summary();
3709
3855
  init_logger();
3710
3856
 
3711
3857
  // ../integrations/github.ts
@@ -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);
@@ -1696,6 +1865,8 @@ class HttpSessionTransport {
1696
1865
  }
1697
1866
 
1698
1867
  // ../client.ts
1868
+ init_integration_summary();
1869
+ init_library_metadata();
1699
1870
  init_errors();
1700
1871
  init_logger();
1701
1872
 
@@ -3011,31 +3182,14 @@ class MCPClientBase {
3011
3182
  const serverConfig = this.__oauthConfig;
3012
3183
  const localIntegrations = serverConfig?.integrations || this.__configuredIntegrations;
3013
3184
  const formatLocalIntegrations = (integrations) => ({
3014
- integrations: integrations.map((integration) => ({
3015
- id: integration.id,
3016
- name: integration.name || integration.id,
3017
- logoUrl: integration.logoUrl,
3018
- tools: integration.tools,
3019
- hasOAuth: !!integration.oauth,
3020
- scopes: integration.oauth?.scopes,
3021
- provider: integration.oauth?.provider
3022
- }))
3185
+ integrations: integrations.map((integration) => toConfiguredIntegrationSummary(integration))
3023
3186
  });
3024
3187
  if (hasApiKey || !this.__useServerConfig) {
3025
3188
  if (options?.includeToolMetadata && hasApiKey) {
3026
3189
  await this.ensureConnected();
3027
3190
  const integrationsWithMetadata = localIntegrations.map((integration) => {
3028
3191
  const toolMetadata = integration.tools.map((toolName) => this.availableTools.get(toolName)).filter((tool) => !!tool);
3029
- return {
3030
- id: integration.id,
3031
- name: integration.name || integration.id,
3032
- logoUrl: integration.logoUrl,
3033
- tools: integration.tools,
3034
- hasOAuth: !!integration.oauth,
3035
- scopes: integration.oauth?.scopes,
3036
- provider: integration.oauth?.provider,
3037
- toolMetadata
3038
- };
3192
+ return toConfiguredIntegrationWithToolMetadata(integration, toolMetadata);
3039
3193
  });
3040
3194
  return { integrations: integrationsWithMetadata };
3041
3195
  }
@@ -3061,28 +3215,10 @@ class MCPClientBase {
3061
3215
  }
3062
3216
  }
3063
3217
  }
3064
- return {
3065
- id: integration.id,
3066
- name: integration.name || integration.id,
3067
- logoUrl: integration.logoUrl,
3068
- tools: integration.tools,
3069
- hasOAuth: !!integration.oauth,
3070
- scopes: integration.oauth?.scopes,
3071
- provider: integration.oauth?.provider,
3072
- toolMetadata
3073
- };
3218
+ return toConfiguredIntegrationWithToolMetadata(integration, toolMetadata);
3074
3219
  } catch (error) {
3075
3220
  logger7.error(`Failed to fetch tool metadata for ${integration.id}:`, error);
3076
- return {
3077
- id: integration.id,
3078
- name: integration.name || integration.id,
3079
- logoUrl: integration.logoUrl,
3080
- tools: integration.tools,
3081
- hasOAuth: !!integration.oauth,
3082
- scopes: integration.oauth?.scopes,
3083
- provider: integration.oauth?.provider,
3084
- toolMetadata: []
3085
- };
3221
+ return toConfiguredIntegrationWithToolMetadata(integration, []);
3086
3222
  }
3087
3223
  }, 3);
3088
3224
  return { integrations: integrationsWithMetadata };
@@ -3102,6 +3238,12 @@ class MCPClientBase {
3102
3238
  return formatLocalIntegrations(localIntegrations);
3103
3239
  }
3104
3240
  const result = await response.json();
3241
+ if (result.integrations && Array.isArray(result.integrations)) {
3242
+ result.integrations = result.integrations.map((row) => ({
3243
+ ...row,
3244
+ ...integrationLibraryPresentationFields(row)
3245
+ }));
3246
+ }
3105
3247
  if (options?.includeToolMetadata && result.integrations) {
3106
3248
  const { parallelWithLimit: parallelWithLimit2 } = await Promise.resolve().then(() => exports_concurrency);
3107
3249
  const integrationsWithMetadata = await parallelWithLimit2(result.integrations, async (integration) => {
@@ -3126,12 +3268,14 @@ class MCPClientBase {
3126
3268
  }
3127
3269
  return {
3128
3270
  ...integration,
3271
+ ...integrationLibraryPresentationFields(integration),
3129
3272
  toolMetadata
3130
3273
  };
3131
3274
  } catch (error) {
3132
3275
  logger7.error(`Failed to fetch tool metadata for ${integration.id}:`, error);
3133
3276
  return {
3134
3277
  ...integration,
3278
+ ...integrationLibraryPresentationFields(integration),
3135
3279
  toolMetadata: []
3136
3280
  };
3137
3281
  }
@@ -3705,7 +3849,9 @@ class MCPClientBase {
3705
3849
  return success;
3706
3850
  }
3707
3851
  }
3852
+
3708
3853
  // ../server.ts
3854
+ init_integration_summary();
3709
3855
  init_logger();
3710
3856
 
3711
3857
  // ../integrations/github.ts