@tangle-network/agent-integrations 0.35.0 → 0.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/catalog.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { IntegrationSupportTier, IntegrationRegistry, IntegrationRegistrySummary } from './registry.js';
2
- import { d as IntegrationConnectorCategory, e as IntegrationConnectorAction, f as IntegrationActionRisk, g as IntegrationDataClass, b as IntegrationConnector } from './core-types-CjWifQOf.js';
2
+ import { d as IntegrationConnectorCategory, e as IntegrationConnectorAction, f as IntegrationActionRisk, g as IntegrationDataClass, b as IntegrationConnector } from './core-types-D4MGC44S.js';
3
3
  import './types-Bxg-wJkW.js';
4
4
 
5
5
  interface IntegrationToolDefinition {
@@ -1,4 +1,4 @@
1
- import { I as IntegrationActor, e as IntegrationConnectorAction, g as IntegrationDataClass, j as IntegrationActionGuard, c as IntegrationConnection, k as IntegrationActionRequest, b as IntegrationConnector, l as IntegrationActionResult } from './core-types-CjWifQOf.js';
1
+ import { I as IntegrationActor, e as IntegrationConnectorAction, g as IntegrationDataClass, k as IntegrationActionGuard, c as IntegrationConnection, l as IntegrationActionRequest, b as IntegrationConnector, m as IntegrationActionResult } from './core-types-D4MGC44S.js';
2
2
  import { IntegrationSandboxBundle, IntegrationRequirementMode, IntegrationRequirementResolution, IntegrationManifest, IntegrationManifestResolution, IntegrationGrant } from './runtime.js';
3
3
  import { IntegrationRegistry } from './registry.js';
4
4
 
@@ -1,6 +1,6 @@
1
- import './core-types-CjWifQOf.js';
1
+ import './core-types-D4MGC44S.js';
2
2
  import './runtime.js';
3
- export { C as CapabilityBundleResult, a as CheckConnectorInput, b as CheckConnectorResult, c as CreateGrantsInput, n as IntegrationHubAuth, o as IntegrationHubClient, p as IntegrationHubClientOptions, q as IntegrationHubRequestError, L as ListGrantsInput, M as MintCapabilityBundleInput, R as ResolveManifestInput, t as createIntegrationHubClient } from './consumer-yV4NtH2h.js';
3
+ export { C as CapabilityBundleResult, a as CheckConnectorInput, b as CheckConnectorResult, c as CreateGrantsInput, n as IntegrationHubAuth, o as IntegrationHubClient, p as IntegrationHubClientOptions, q as IntegrationHubRequestError, L as ListGrantsInput, M as MintCapabilityBundleInput, R as ResolveManifestInput, t as createIntegrationHubClient } from './consumer-Dzt2uOo_.js';
4
4
  import './types-Bxg-wJkW.js';
5
5
  import './catalog.js';
6
6
  import './registry.js';
@@ -13,7 +13,7 @@ import { a as ConnectorCredentials } from './types-Bxg-wJkW.js';
13
13
  * their own focused modules (`./core-error.ts`).
14
14
  */
15
15
 
16
- type IntegrationProviderKind = 'first_party' | 'nango' | 'pipedream' | 'zapier' | 'activepieces' | 'tangle_catalog' | 'executor' | 'custom';
16
+ type IntegrationProviderKind = 'first_party' | 'nango' | 'pipedream' | 'zapier' | 'activepieces' | 'tangle_catalog' | 'executor' | 'custom' | 'mcp';
17
17
  type IntegrationConnectorCategory = 'email' | 'calendar' | 'chat' | 'crm' | 'storage' | 'docs' | 'database' | 'webhook' | 'workflow' | 'internal' | 'other';
18
18
  type IntegrationActionRisk = 'read' | 'write' | 'destructive';
19
19
  type IntegrationDataClass = 'public' | 'internal' | 'private' | 'sensitive' | 'secret';
@@ -352,4 +352,4 @@ interface IntegrationOAuthStateStore {
352
352
  sweep?(now: number): Promise<void> | void;
353
353
  }
354
354
 
355
- export type { StartAuthResult as A, InvokeWithCapabilityRequest as B, CompleteAuthRequest as C, IntegrationCapability as D, IntegrationHubOptions as E, IssueCapabilityRequest as F, IntegrationConnectorTrigger as G, HttpIntegrationProviderOptions as H, IntegrationActor as I, SecretRef as S, IssuedIntegrationCapability as a, IntegrationConnector as b, IntegrationConnection as c, IntegrationConnectorCategory as d, IntegrationConnectorAction as e, IntegrationActionRisk as f, IntegrationDataClass as g, IntegrationCatalogSource as h, IntegrationProviderKind as i, IntegrationActionGuard as j, IntegrationActionRequest as k, IntegrationActionResult as l, IntegrationPolicyEngine as m, IntegrationApprovalRequest as n, IntegrationGuardContext as o, IntegrationPolicyDecision as p, IntegrationProvider as q, IntegrationSecretStore as r, IntegrationConnectionStore as s, IntegrationCredentialsRotatedEvent as t, IntegrationOAuthStateStore as u, IntegrationOAuthState as v, IntegrationOAuthStateOutcome as w, IntegrationTriggerSubscription as x, IntegrationTriggerEvent as y, StartAuthRequest as z };
355
+ export type { StartAuthResult as A, InvokeWithCapabilityRequest as B, CompleteAuthRequest as C, IntegrationCapability as D, IntegrationHubOptions as E, IssueCapabilityRequest as F, IntegrationConnectorTrigger as G, HttpIntegrationProviderOptions as H, IntegrationActor as I, SecretRef as S, IssuedIntegrationCapability as a, IntegrationConnector as b, IntegrationConnection as c, IntegrationConnectorCategory as d, IntegrationConnectorAction as e, IntegrationActionRisk as f, IntegrationDataClass as g, IntegrationCatalogSource as h, IntegrationProviderKind as i, IntegrationProvider as j, IntegrationActionGuard as k, IntegrationActionRequest as l, IntegrationActionResult as m, IntegrationPolicyEngine as n, IntegrationApprovalRequest as o, IntegrationGuardContext as p, IntegrationPolicyDecision as q, IntegrationSecretStore as r, IntegrationConnectionStore as s, IntegrationCredentialsRotatedEvent as t, IntegrationOAuthStateStore as u, IntegrationOAuthState as v, IntegrationOAuthStateOutcome as w, IntegrationTriggerSubscription as x, IntegrationTriggerEvent as y, StartAuthRequest as z };
@@ -1,4 +1,4 @@
1
- import { d as IntegrationConnectorCategory, b as IntegrationConnector, i as IntegrationProviderKind } from './core-types-CjWifQOf.js';
1
+ import { d as IntegrationConnectorCategory, b as IntegrationConnector, i as IntegrationProviderKind } from './core-types-D4MGC44S.js';
2
2
  import './types-Bxg-wJkW.js';
3
3
 
4
4
  type IntegrationCoveragePriority = 'tier_0' | 'tier_1' | 'tier_2' | 'long_tail';
@@ -0,0 +1,57 @@
1
+ import { d as IntegrationConnectorCategory, b as IntegrationConnector, g as IntegrationDataClass, f as IntegrationActionRisk } from './core-types-D4MGC44S.js';
2
+
3
+ interface ImportCatalogOptions {
4
+ providerId: string;
5
+ connectorId: string;
6
+ connectorTitle: string;
7
+ category?: IntegrationConnectorCategory;
8
+ auth?: IntegrationConnector['auth'];
9
+ scopes?: string[];
10
+ dataClass?: IntegrationDataClass;
11
+ defaultRisk?: IntegrationActionRisk;
12
+ }
13
+ interface OpenApiDocument {
14
+ openapi?: string;
15
+ swagger?: string;
16
+ info?: {
17
+ title?: string;
18
+ };
19
+ paths?: Record<string, Record<string, OpenApiOperation | unknown>>;
20
+ }
21
+ interface OpenApiOperation {
22
+ operationId?: string;
23
+ summary?: string;
24
+ description?: string;
25
+ parameters?: unknown[];
26
+ requestBody?: unknown;
27
+ responses?: unknown;
28
+ security?: Array<Record<string, string[]>>;
29
+ tags?: string[];
30
+ }
31
+ interface GraphqlOperationSpec {
32
+ name: string;
33
+ kind: 'query' | 'mutation';
34
+ description?: string;
35
+ inputSchema?: unknown;
36
+ outputSchema?: unknown;
37
+ requiredScopes?: string[];
38
+ }
39
+ interface McpCatalogTool {
40
+ name: string;
41
+ description?: string;
42
+ inputSchema?: unknown;
43
+ annotations?: {
44
+ readOnlyHint?: boolean;
45
+ destructiveHint?: boolean;
46
+ openWorldHint?: boolean;
47
+ title?: string;
48
+ };
49
+ }
50
+ interface McpCatalog {
51
+ tools: McpCatalogTool[];
52
+ }
53
+ declare function importOpenApiConnector(document: OpenApiDocument, options: ImportCatalogOptions): IntegrationConnector;
54
+ declare function importGraphqlConnector(operations: GraphqlOperationSpec[], options: ImportCatalogOptions): IntegrationConnector;
55
+ declare function importMcpConnector(catalog: McpCatalog, options: ImportCatalogOptions): IntegrationConnector;
56
+
57
+ export { type GraphqlOperationSpec as G, type ImportCatalogOptions as I, type McpCatalogTool as M, type OpenApiDocument as O, type McpCatalog as a, type OpenApiOperation as b, importMcpConnector as c, importOpenApiConnector as d, importGraphqlConnector as i };
package/dist/index.d.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  import { IntegrationRegistrySummary, IntegrationRegistryConflict, ComposeIntegrationRegistryOptions, IntegrationRegistry } from './registry.js';
2
2
  export { IntegrationCatalogExecutability, IntegrationRegistryEntry, IntegrationRegistrySourceRef, IntegrationSupportTier, buildDefaultIntegrationRegistry, canonicalConnectorId, classifyIntegrationCatalogExecutability, composeIntegrationRegistry, inferIntegrationSupportTier, summarizeIntegrationRegistry } from './registry.js';
3
- import { m as IntegrationPolicyEngine, n as IntegrationApprovalRequest, I as IntegrationActor, o as IntegrationGuardContext, p as IntegrationPolicyDecision, b as IntegrationConnector, e as IntegrationConnectorAction, i as IntegrationProviderKind, c as IntegrationConnection, h as IntegrationCatalogSource, q as IntegrationProvider, r as IntegrationSecretStore, s as IntegrationConnectionStore, t as IntegrationCredentialsRotatedEvent, u as IntegrationOAuthStateStore, v as IntegrationOAuthState, w as IntegrationOAuthStateOutcome, S as SecretRef, d as IntegrationConnectorCategory, f as IntegrationActionRisk, g as IntegrationDataClass, x as IntegrationTriggerSubscription, y as IntegrationTriggerEvent, j as IntegrationActionGuard, l as IntegrationActionResult, k as IntegrationActionRequest, z as StartAuthRequest, A as StartAuthResult, C as CompleteAuthRequest, B as InvokeWithCapabilityRequest, D as IntegrationCapability, E as IntegrationHubOptions, F as IssueCapabilityRequest, a as IssuedIntegrationCapability, H as HttpIntegrationProviderOptions } from './core-types-CjWifQOf.js';
4
- export { G as IntegrationConnectorTrigger } from './core-types-CjWifQOf.js';
5
- import { I as IntegrationAuditSink } from './consumer-yV4NtH2h.js';
6
- export { C as CapabilityBundleResult, a as CheckConnectorInput, b as CheckConnectorResult, c as CreateGrantsInput, d as InMemoryIntegrationAuditStore, e as InMemoryIntegrationHealthcheckStore, f as IntegrationAuditEvent, g as IntegrationAuditEventType, h as IntegrationAuditFilter, i as IntegrationAuditStore, j as IntegrationHealthcheckCheck, k as IntegrationHealthcheckResult, l as IntegrationHealthcheckStatus, m as IntegrationHealthcheckStore, n as IntegrationHubAuth, o as IntegrationHubClient, p as IntegrationHubClientOptions, q as IntegrationHubRequestError, L as ListGrantsInput, M as MintCapabilityBundleInput, R as ResolveManifestInput, r as createAuditingActionGuard, s as createIntegrationAuditEvent, t as createIntegrationHubClient, u as healthcheckRequest, v as runIntegrationHealthcheck, w as runIntegrationHealthchecks, x as sanitizeAuditConnection } from './consumer-yV4NtH2h.js';
3
+ import { n as IntegrationPolicyEngine, o as IntegrationApprovalRequest, I as IntegrationActor, p as IntegrationGuardContext, q as IntegrationPolicyDecision, b as IntegrationConnector, e as IntegrationConnectorAction, i as IntegrationProviderKind, c as IntegrationConnection, h as IntegrationCatalogSource, j as IntegrationProvider, r as IntegrationSecretStore, s as IntegrationConnectionStore, t as IntegrationCredentialsRotatedEvent, u as IntegrationOAuthStateStore, v as IntegrationOAuthState, w as IntegrationOAuthStateOutcome, S as SecretRef, d as IntegrationConnectorCategory, f as IntegrationActionRisk, g as IntegrationDataClass, x as IntegrationTriggerSubscription, y as IntegrationTriggerEvent, k as IntegrationActionGuard, m as IntegrationActionResult, l as IntegrationActionRequest, z as StartAuthRequest, A as StartAuthResult, C as CompleteAuthRequest, B as InvokeWithCapabilityRequest, D as IntegrationCapability, E as IntegrationHubOptions, F as IssueCapabilityRequest, a as IssuedIntegrationCapability, H as HttpIntegrationProviderOptions } from './core-types-D4MGC44S.js';
4
+ export { G as IntegrationConnectorTrigger } from './core-types-D4MGC44S.js';
5
+ import { I as IntegrationAuditSink } from './consumer-Dzt2uOo_.js';
6
+ export { C as CapabilityBundleResult, a as CheckConnectorInput, b as CheckConnectorResult, c as CreateGrantsInput, d as InMemoryIntegrationAuditStore, e as InMemoryIntegrationHealthcheckStore, f as IntegrationAuditEvent, g as IntegrationAuditEventType, h as IntegrationAuditFilter, i as IntegrationAuditStore, j as IntegrationHealthcheckCheck, k as IntegrationHealthcheckResult, l as IntegrationHealthcheckStatus, m as IntegrationHealthcheckStore, n as IntegrationHubAuth, o as IntegrationHubClient, p as IntegrationHubClientOptions, q as IntegrationHubRequestError, L as ListGrantsInput, M as MintCapabilityBundleInput, R as ResolveManifestInput, r as createAuditingActionGuard, s as createIntegrationAuditEvent, t as createIntegrationHubClient, u as healthcheckRequest, v as runIntegrationHealthcheck, w as runIntegrationHealthchecks, x as sanitizeAuditConnection } from './consumer-Dzt2uOo_.js';
7
7
  import { IntegrationSandboxBundle, IntegrationManifest, IntegrationManifestResolution, IntegrationRuntime, IntegrationGrantStore, IntegrationRequirementMode } from './runtime.js';
8
8
  export { InMemoryIntegrationGrantStore, IntegrationCapabilityBinding, IntegrationGrant, IntegrationRequirement, IntegrationRequirementResolution, IntegrationRequirementStatus, IntegrationRuntimeHub, IntegrationRuntimeOptions, createIntegrationRuntime } from './runtime.js';
9
9
  import { C as ConnectorAdapter, R as ResolvedDataSource, a as ConnectorCredentials } from './types-Bxg-wJkW.js';
@@ -15,6 +15,7 @@ export { DEFAULT_SIGNATURE_TOLERANCE_SECONDS, ExchangeCodeInput, GenericHmacVeri
15
15
  export { DocuSealOptions, EtsyOptions, GmailOptions, GoogleCalendarOptions, GoogleDocsOptions, GoogleDriveOptions, GoogleFormsOptions, GoogleSheetsOptions, HelloSignOptions, HubSpotOptions, MicrosoftCalendarOptions, MicrosoftGraphOptions, MicrosoftTeamsOptions, NotionDatabaseOptions, OneDriveOptions, OutlookMailOptions, PandaDocOptions, RestConnectorSpec, RestCredentialPlacement, RestOperationSpec, RestRequestSpec, SharePointOptions, SlackOptions, TELEGRAM_FILE_DOWNLOAD_ROOT, TwitterOptions, WhatsappBusinessOptions, activecampaignConnector, acumbamailConnector, adobeCreativeCloudConnector, afforaiConnector, agentxConnector, aidbaseConnector, aipriseConnector, airOpsConnector, aircallConnector, airtableConnector, airtopConnector, alaiConnector, altTextAiConnector, alttextifyConnector, amazonBedrockConnector, amazonSecretsManagerConnector, amazonSesConnector, amazonSnsConnector, amazonSqsConnector, amazonTextractConnector, aminosConnector, ampecoConnector, anthropicConnector, apitableConnector, apitemplateIoConnector, apolloConnector, appfollowConnector, asanaConnector, ashbyConnector, asknewsConnector, assemblyaiConnector, attioConnector, auth0Connector, autocallsConnector, avianConnector, avomaConnector, azureAdConnector, azureCommunicationServicesConnector, azureOpenaiConnector, backblazeConnector, bamboohrConnector, barcodeLookupConnector, baremetricsConnector, basecampConnector, beamerConnector, bettermodeConnector, bexioConnector, bigcommerceConnector, biginByZohoConnector, billplzConnector, bitlyConnector, blandAiConnector, blueskyConnector, bolnaConnector, bonjoroConnector, bookedinConnector, boxConnector, braveSearchConnector, brazeConnector, brilliantDirectoriesConnector, browseAiConnector, calComConnector, calendlyConnector, campaignMonitorConnector, cannyConnector, canvaConnector, capsuleCrmConnector, captainDataConnector, cashfreePaymentsConnector, certopusConnector, chainalysisApiConnector, chargebeeConnector, chargekeepConnector, chartlyConnector, chatDataConnector, chatbaseConnector, chatlingConnector, chatnodeConnector, chatwootConnector, checkoutConnector, circleConnector, clearoutConnector, clicdataConnector, clickupConnector, clioConnector, clockifyConnector, clockodoConnector, closeConnector, cloudconvertConnector, cloudinaryConnector, cloutlyConnector, codaConnector, cognitoFormsConnector, cohereConnector, cometapiConnector, comfyicuConnector, confluenceConnector, constantContactConnector, contentfulConnector, convertkitConnector, copperConnector, copyAiConnector, crispConnector, cryptolensConnector, customerIoConnector, customgptConnector, dashworksConnector, datadogConnector, datafuelConnector, datocmsConnector, declarativeRestConnector, deepseekConnector, denserAiConnector, descriptConnector, devinConnector, discordConnector, dittofeedConnector, doctlyConnector, documentproConnector, documergeConnector, docuseal, docusignConnector, dropboxConnector, dubConnector, dumplingAiConnector, dustConnector, easyPeasyAiConnector, ebayConnector, edenAiConnector, elasticEmailConnector, emailitConnector, emailoctopusConnector, enrichlayerConnector, esignaturesConnector, etsyConnector, exaConnector, facebookLeadsConnector, facebookPagesConnector, fathomAnalyticsConnector, fathomConnector, figjamConnector, figmaConnector, filloutFormsConnector, firebaseConnector, fireberryConnector, firecrawlConnector, firefliesAiConnector, flipandoConnector, flowiseConnector, flowluConnector, folkConnector, foreplayCoConnector, formbricksConnector, formstackConnector, fountainConnector, fragmentConnector, frameConnector, freeAgentConnector, freshsalesConnector, freshserviceConnector, frontConnector, gameballConnector, geminiConnector, ghostcmsConnector, gistlyConnector, giteaConnector, githubConnector, gitlabConnector, glideConnector, gmail, googleBigqueryConnector, googleCalendar, googleCloudStorageConnector, googleContactsConnector, googleDocs, googleDrive, googleForms, googleGeminiConnector, googleMyBusinessConnector, googleSearchConnector, googleSearchConsoleConnector, googleSheets, googleSlidesConnector, googleTasksConnector, googleVertexaiConnector, googlechatConnector, gorgiasConnector, gotifyConnector, gptzeroDetectAiConnector, granolaConnector, greenhouseConnector, greenptConnector, greipConnector, griptapeConnector, gristConnector, guideliteConnector, gustoConnector, harvestConnector, hashiCorpVaultConnector, hastewireConnector, heartbeatConnector, hedyConnector, hellosign, helpscoutConnector, heygenConnector, heymarketSmsConnector, housecallProConnector, hubspot, huggingFaceConnector, huggingfaceConnector, humeAiConnector, hunterConnector, hystructConnector, ibmCognoseConnector, imageRouterConnector, imapConnector, influencersClubConnector, insightlyConnector, insightoAiConnector, instaChartsConnector, instantlyAiConnector, instasentConnector, intercomConnector, invoiceninjaConnector, jinaAiConnector, jiraCloudConnector, jiraDataCenterConnector, joggAiConnector, jotformConnector, justInvoiceConnector, kallabotAiConnector, kapsoConnector, kimaiConnector, kissflowConnector, kizeoFormsConnector, klaviyoConnector, klentyConnector, knackConnector, knockConnector, koFiConnector, kommoConnector, kudosityConnector, kustomerConnector, leadConnectorConnector, leapAiConnector, leexiConnector, lemlistConnector, lemonSqueezyConnector, letsCalendarConnector, lettaConnector, leverConnector, lightfunnelsConnector, linearConnector, linkaConnector, linkupConnector, llmrailsConnector, lobstermailConnector, localaiConnector, loftyConnector, logrocketConnector, logsnagConnector, lokaliseConnector, loopsConnector, lucidyaConnector, lushaConnector, luxuryPresenceConnector, magicalApiConnector, mailchainConnector, mailchimpConnector, mailerLiteConnector, mailercheckConnector, mailerooConnector, mailgunConnector, makeConnector, manychatConnector, marketoConnector, mastodonConnector, matomoConnector, matrixConnector, mattermostConnector, mauticConnector, medullarConnector, meetgeekAiConnector, memConnector, messagebirdConnector, metabaseConnector, microsoft365PeopleConnector, microsoft365PlannerConnector, microsoftCalendar, microsoftDynamics365BusinessCentralConnector, microsoftDynamicsCrmConnector, microsoftExcel365Connector, microsoftGraph, microsoftOnedriveConnector, microsoftOnenoteConnector, microsoftOutlookCalendarConnector, microsoftOutlookConnector, microsoftPowerBiConnector, microsoftSharepointConnector, microsoftTeams, microsoftTodoConnector, millionverifierConnector, mindStudioConnector, mindeeConnector, miroConnector, missiveConnector, mixmaxConnector, mixpanelConnector, mollieConnector, mondayConnector, mongodbConnector, n8nConnector, netlifyConnector, niftyConnector, ninjapipeConnector, nocodbConnector, notionConnector, notionDatabase, ntfyConnector, odooConnector, omniCoConnector, omnihrConnector, oneDrive, openPhoneConnector, openRouterConnector, openaiConnector, openmicAiConnector, opnformConnector, opportifyConnector, opsgenieConnector, oracleDatabaseConnector, orimonConnector, outlookMail, paddleConnector, pagerdutyConnector, pandadoc, paperformConnector, parseurConnector, pastefyConnector, paywhirlConnector, pdfmonkeyConnector, peekshotConnector, perplexityAiConnector, personalAiConnector, phonyConnector, pinchPaymentsConnector, pineconeConnector, pipedreamConnector, pipedriveConnector, placidConnector, plausibleConnector, pocketbaseConnector, pollybotAiConnector, postgresConnector, posthogConnector, postizConnector, postmarkConnector, predictLeadsConnector, productboardConnector, proxycurlConnector, pushbulletConnector, pushoverConnector, qawafelConnector, qdrantConnector, quadernoConnector, quickbooksConnector, quickzuConnector, raiaAiConnector, rapidtextAiConnector, reachinboxConnector, recallAiConnector, redditConnector, reoonVerifierConnector, replyIoConnector, retableConnector, retellAiConnector, ripplingConnector, robollyConnector, runwareConnector, saasticConnector, saleorConnector, salesforceConnector, sanityConnector, sardisConnector, savvycalConnector, scrapegraphaiConnector, scrapelessConnector, seekTableConnector, sendgridConnector, sendinblueConnector, sendpulseConnector, senjaConnector, sentryConnector, serpstatConnector, serviceNowConnector, sharepoint, shippoConnector, shopifyConnector, shortIoConnector, signNowConnector, signrequestConnector, simplirouteConnector, simplybookmeConnector, skyprepConnector, slack, slackEventsConnector, smartleadConnector, smartsheetConnector, smartsuiteConnector, smooveConnector, smsmodeConnector, snowflakeConnector, socialkitConnector, squareConnector, stripeConnector, stripePackConnector, stripeWebhookReceiverConnector, supabaseConnector, supadataConnector, swarmnodeConnector, systemeIoConnector, tableauConnector, talkableConnector, tallyConnector, teableConnector, telegramConnector, telnyxConnector, tenzoConnector, textcortexAiConnector, ticktickConnector, timeOpsConnector, timelinesAiConnector, tlDvConnector, todoistConnector, togglTrackConnector, totalcmsConnector, trelloConnector, twentyConnector, twilioConnector, twilioSmsConnector, twinLabsConnector, twitter, twitterConnector, typeformConnector, typefullyConnector, umamiConnector, upgradechatConnector, uscreenConnector, validatedmailsConnector, vapiConnector, vboutConnector, vercelConnector, videoaskConnector, vidlab7Connector, vlmRunConnector, voucheryIoConnector, vtexConnector, vtigerConnector, wafeqConnector, weaviateConnector, webflowConnector, webhookConnector, webscrapingAiConnector, whatConvertsConnector, whatsappBusiness, whatsappConnector, whatsscaleConnector, wonderchatConnector, woocommerceConnector, woodpeckerConnector, wootricConnector, wordpressConnector, workableConnector, workdayConnector, wrikeConnector, writesonicBulkConnector, wufooConnector, xeroConnector, youcanbookmeConnector, zagomailConnector, zapierConnector, zendeskConnector, zendeskSellConnector, zeplinConnector, zerobounceConnector, zohoBookingsConnector, zohoCrmConnector, zohoDeskConnector, zuoraConnector } from './connectors/adapters/index.js';
16
16
  export { D as DEFAULT_TANGLE_PLATFORM_URL, d as TANGLE_API_KEY_PREFIX, e as TANGLE_SERVICE_TOKEN_PREFIX, b as TangleIdentityClient, T as TangleIdentityOptions, f as TangleIdentityUnreachableError, c as TangleTokenVerifyFailure, g as TangleTokenVerifyResult, a as TangleUserSummary, h as TangleWorkspaceSummary, i as createTangleIdentityClient, t as tangleIdentity } from './tangle-id-hDDWP-2f.js';
17
17
  export { IntegrationCatalogView, IntegrationToolDefinition, IntegrationToolSearchFilters, IntegrationToolSearchResult, McpToolDefinition, buildIntegrationCatalogView, buildIntegrationToolCatalog, describeIntegrationTool, flattenIntegrationToolDefinition, integrationToolName, parseIntegrationToolName, searchIntegrationTools, toMcpTools } from './catalog.js';
18
+ export { G as GraphqlOperationSpec, I as ImportCatalogOptions, a as McpCatalog, M as McpCatalogTool, O as OpenApiDocument, b as OpenApiOperation, i as importGraphqlConnector, c as importMcpConnector, d as importOpenApiConnector } from './importers-DANyqwIT.js';
18
19
  export { IntegrationActionPack, IntegrationCoveragePriority, IntegrationCoverageSpec, buildIntegrationCoverageConnectors, integrationCoverageChecklistMarkdown, listIntegrationCoverageSpecs } from './coverage-catalog.js';
19
20
  export { ApiKeyAuthSpec, ConnectorAuthSpec, ConsoleStep, CredentialFieldSpec, CredentialValidationInput, CredentialValidationResult, CustomAuthSpec, HealthcheckPlan, HealthcheckSpec, HmacAuthSpec, INTEGRATION_FAMILIES, IntegrationAuthMode, IntegrationAuthSpec, IntegrationFamilyId, IntegrationFamilySpec, IntegrationLifecycleSpec, IntegrationPlannerHints, IntegrationSetupSpec, IntegrationSpec, IntegrationSpecStatus, IntegrationSpecValidationIssue, IntegrationSpecValidationResult, NoneAuthSpec, NormalizedPermission, OAuth2AuthSpec, PermissionDescriptor, PostSetupCheck, Quirk, RenderSpecOptions, RenderedConsoleStep, ScopeDescriptor, assertValidIntegrationSpec, buildHealthcheckPlan, consoleStepsToText, getIntegrationFamily, getIntegrationSpec, integrationSpecToConnector, listExecutableIntegrationSpecs, listIntegrationSpecs, renderAgentToolDescription, renderConsoleSteps, renderRunbookMarkdown, resolveConnectorAuthSpec, specAuthToConnectorAuth, validateCredentialFormat, validateCredentialSet, validateIntegrationSpec } from './specs.js';
20
21
 
@@ -879,60 +880,6 @@ declare class IntegrationSandboxHost {
879
880
  dispatch(envelope: IntegrationInvocationEnvelope): Promise<NormalizedIntegrationResult>;
880
881
  }
881
882
 
882
- interface ImportCatalogOptions {
883
- providerId: string;
884
- connectorId: string;
885
- connectorTitle: string;
886
- category?: IntegrationConnectorCategory;
887
- auth?: IntegrationConnector['auth'];
888
- scopes?: string[];
889
- dataClass?: IntegrationDataClass;
890
- defaultRisk?: IntegrationActionRisk;
891
- }
892
- interface OpenApiDocument {
893
- openapi?: string;
894
- swagger?: string;
895
- info?: {
896
- title?: string;
897
- };
898
- paths?: Record<string, Record<string, OpenApiOperation | unknown>>;
899
- }
900
- interface OpenApiOperation {
901
- operationId?: string;
902
- summary?: string;
903
- description?: string;
904
- parameters?: unknown[];
905
- requestBody?: unknown;
906
- responses?: unknown;
907
- security?: Array<Record<string, string[]>>;
908
- tags?: string[];
909
- }
910
- interface GraphqlOperationSpec {
911
- name: string;
912
- kind: 'query' | 'mutation';
913
- description?: string;
914
- inputSchema?: unknown;
915
- outputSchema?: unknown;
916
- requiredScopes?: string[];
917
- }
918
- interface McpCatalogTool {
919
- name: string;
920
- description?: string;
921
- inputSchema?: unknown;
922
- annotations?: {
923
- readOnlyHint?: boolean;
924
- destructiveHint?: boolean;
925
- openWorldHint?: boolean;
926
- title?: string;
927
- };
928
- }
929
- interface McpCatalog {
930
- tools: McpCatalogTool[];
931
- }
932
- declare function importOpenApiConnector(document: OpenApiDocument, options: ImportCatalogOptions): IntegrationConnector;
933
- declare function importGraphqlConnector(operations: GraphqlOperationSpec[], options: ImportCatalogOptions): IntegrationConnector;
934
- declare function importMcpConnector(catalog: McpCatalog, options: ImportCatalogOptions): IntegrationConnector;
935
-
936
883
  interface GatewayCatalogProviderOptions {
937
884
  id: string;
938
885
  kind: Extract<IntegrationProviderKind, 'nango' | 'pipedream' | 'activepieces' | 'tangle_catalog' | 'zapier' | 'executor' | 'custom'>;
@@ -1299,4 +1246,4 @@ declare function createHttpIntegrationProvider(options: HttpIntegrationProviderO
1299
1246
  declare function signCapability(capability: IntegrationCapability, secret: string): string;
1300
1247
  declare function verifyCapabilityToken(token: string, secret: string): IntegrationCapability;
1301
1248
 
1302
- export { ACTIVEPIECES_OVERRIDES, ACTIVEPIECES_PUBLIC_CATALOG_URL, type ActivepiecesCatalogAuthField, type ActivepiecesCatalogEntry, type ActivepiecesExecutorInvocation, type ActivepiecesExecutorProviderOptions, type ActivepiecesPieceOverride, type AppSummary, ApprovalBackedPolicyEngine, type ApprovalBackedPolicyOptions, type BrokerToken, CANONICAL_INTEGRATION_ACTIONS, type CanonicalIntegrationActionId, type CanonicalLaunchConnectorOptions, type CatalogExecutorInvocation, type CatalogExecutorProviderOptions, CompleteAuthRequest, ComposeIntegrationRegistryOptions, type ConnectionCredentialResolverOptions, ConnectorAdapter, type ConnectorAdapterProviderOptions, ConnectorCredentials, type ConsentSummary, type CredentialBackedAdapterProviderOptions, DEFAULT_INTEGRATION_BRIDGE_ENV, DefaultIntegrationActionGuard, type DiscoverWorkspaceCapabilitiesInput, type GatewayCatalogAction, type GatewayCatalogEntry, type GatewayCatalogProviderOptions, type GatewayCatalogTrigger, type GraphqlOperationSpec, HttpIntegrationProviderOptions, type ImportCatalogOptions, InMemoryConnectionStore, InMemoryIntegrationApprovalStore, InMemoryIntegrationEventStore, InMemoryIntegrationIdempotencyStore, InMemoryIntegrationOAuthStateStore, InMemoryIntegrationSecretStore, InMemoryIntegrationWorkflowStore, type InferIntegrationRequirementsOptions, type InstalledIntegrationWorkflow, IntegrationActionGuard, IntegrationActionRequest, IntegrationActionResult, IntegrationActionRisk, IntegrationActor, type IntegrationApprovalFilter, type IntegrationApprovalRecord, IntegrationApprovalRequest, type IntegrationApprovalResolution, type IntegrationApprovalStatus, type IntegrationApprovalStore, IntegrationAuditSink, type IntegrationBridgePayload, type IntegrationBridgeToolBinding, IntegrationCapability, type IntegrationCatalogFreshnessOptions, type IntegrationCatalogFreshnessResult, IntegrationCatalogSource, IntegrationConnection, IntegrationConnectionStore, IntegrationConnector, IntegrationConnectorAction, IntegrationConnectorCategory, IntegrationCredentialsRotatedEvent, IntegrationDataClass, IntegrationError, type IntegrationErrorRuntimeCode, type IntegrationEventStore, IntegrationGrantStore, IntegrationGuardContext, IntegrationHub, IntegrationHubOptions, type IntegrationIdempotencyRecord, type IntegrationIdempotencyStore, type IntegrationInvocationEnvelope, type IntegrationInvocationEnvelopeValidationOptions, IntegrationManifest, IntegrationManifestResolution, IntegrationOAuthState, IntegrationOAuthStateOutcome, IntegrationOAuthStateStore, IntegrationPolicyDecision, type IntegrationPolicyEffect, IntegrationPolicyEngine, type IntegrationPolicyRule, IntegrationProvider, IntegrationProviderKind, type IntegrationRateLimitDecision, type IntegrationRateLimiter, IntegrationRegistry, IntegrationRegistryConflict, IntegrationRegistrySummary, IntegrationRequirementMode, IntegrationRuntime, IntegrationSandboxBundle, IntegrationSandboxHost, type IntegrationSandboxHostHub, type IntegrationSandboxHostOptions, IntegrationSecretStore, IntegrationTriggerEvent, IntegrationTriggerSubscription, type IntegrationWebhookReceiverResult, type IntegrationWorkflowDefinition, IntegrationWorkflowRuntime, type IntegrationWorkflowRuntimeHub, type IntegrationWorkflowRuntimeOptions, type IntegrationWorkflowStore, InvokeWithCapabilityRequest, IssueCapabilityRequest, IssuedIntegrationCapability, type ManifestValidationIssue, type ManifestValidationResult, type McpCatalog, type McpCatalogTool, type MissingRequirementExplanation, type NormalizedIntegrationResult, type OAuthClientCredentials, type OpenApiDocument, type OpenApiOperation, PROVIDER_PASSTHROUGH_ACTION, type PlatformIntegrationPolicyPresetOptions, type ProviderHttpRequestInput, type ProviderPassthroughPolicy, type RegisterAppInput, type RegisteredApp, type RenderConsentOptions, ResolvedDataSource, SecretRef, StartAuthRequest, StartAuthResult, StaticIntegrationPolicyEngine, type StaticIntegrationPolicyOptions, type StoredIntegrationEvent, TANGLE_INTEGRATIONS_CATALOG_PROVIDER_ID, TANGLE_INTEGRATIONS_CATALOG_SOURCE, TangleAppsClient, type TangleAppsClientOptions, type TangleCatalogExecutorInvocation, type TangleCatalogExecutorProviderOptions, type TangleCatalogRuntimePackageManifest, type TangleCatalogRuntimePackageManifestOptions, type TangleCatalogTriggerInvocation, type TangleIntegrationCatalogEntry, type TangleIntegrationCatalogFreshnessOptions, type TangleIntegrationCatalogFreshnessResult, type TangleIntegrationContract, type TangleIntegrationContractStatus, type TangleIntegrationImplementationKind, type TangleIntegrationInvokeInput, type TangleIntegrationInvokeResult, TangleIntegrationsClient, type TangleIntegrationsClientOptions, type WorkspaceCapability, type WorkspaceCapabilityDiscovery, type WorkspaceToolSchema, type WorkspaceTrigger, adapterManifestsToConnectors, assertValidIntegrationManifest, auditIntegrationCatalogFreshness, auditTangleIntegrationCatalogFreshness, buildActivepiecesConnectors, buildApprovalRequest, buildCanonicalLaunchConnectors, buildIntegrationBridgeEnvironment, buildIntegrationBridgePayload, buildIntegrationInvocationEnvelope, buildTangleCatalogRuntimePackageManifest, buildTangleIntegrationCatalogConnectors, calendarExercisePlannerManifest, canonicalActionConnectorId, createActivepiecesExecutorProvider, createApprovalBackedPolicyEngine, createCatalogExecutorProvider, createConnectionCredentialResolver, createConnectorAdapterCatalogSource, createConnectorAdapterProvider, createCredentialBackedAdapterProvider, createDefaultIntegrationActionGuard, createDefaultIntegrationPolicyEngine, createGatewayCatalogProvider, createHttpIntegrationProvider, createIntegrationWorkflowRuntime, createMockIntegrationProvider, createPlatformIntegrationPolicyPreset, createTangleAppsClient, createTangleCatalogExecutorProvider, createTangleIntegrationsClient, decodeIntegrationBridgePayload, discoverWorkspaceCapabilities, dispatchIntegrationInvocation, encodeIntegrationBridgePayload, explainMissingRequirements, extractActivepiecesPublicPieceCount, extractExternalCatalogPublicCount, filterDiscoveryByWorkspaceScopes, getActivepiecesOverride, importGraphqlConnector, importMcpConnector, importOpenApiConnector, inferIntegrationManifestFromTools, invocationRequestFromEnvelope, listActivepiecesCatalogEntries, listTangleIntegrationCatalogEntries, listTangleIntegrationCatalogRuntimePackages, listTangleIntegrationContracts, listTangleNativeAdapterIds, manifestToConnector, normalizeGatewayCatalog, normalizeIntegrationResult, parseIntegrationBridgeEnvironment, receiveIntegrationWebhook, redactApprovalRequest, redactCapability, redactIntegrationBridgePayload, redactInvocationEnvelope, renderApprovalCopy, renderConsentSummary, renderTangleCatalogRuntimePnpmAddCommand, resolveConnectionCredentials, resolveIntegrationApproval, revokeConnection, sanitizeConnection, signCapability, storedEventToTriggerEvent, validateIntegrationInvocationEnvelope, validateIntegrationManifest, validateProviderPassthroughRequest, verifyCapabilityToken };
1249
+ export { ACTIVEPIECES_OVERRIDES, ACTIVEPIECES_PUBLIC_CATALOG_URL, type ActivepiecesCatalogAuthField, type ActivepiecesCatalogEntry, type ActivepiecesExecutorInvocation, type ActivepiecesExecutorProviderOptions, type ActivepiecesPieceOverride, type AppSummary, ApprovalBackedPolicyEngine, type ApprovalBackedPolicyOptions, type BrokerToken, CANONICAL_INTEGRATION_ACTIONS, type CanonicalIntegrationActionId, type CanonicalLaunchConnectorOptions, type CatalogExecutorInvocation, type CatalogExecutorProviderOptions, CompleteAuthRequest, ComposeIntegrationRegistryOptions, type ConnectionCredentialResolverOptions, ConnectorAdapter, type ConnectorAdapterProviderOptions, ConnectorCredentials, type ConsentSummary, type CredentialBackedAdapterProviderOptions, DEFAULT_INTEGRATION_BRIDGE_ENV, DefaultIntegrationActionGuard, type DiscoverWorkspaceCapabilitiesInput, type GatewayCatalogAction, type GatewayCatalogEntry, type GatewayCatalogProviderOptions, type GatewayCatalogTrigger, HttpIntegrationProviderOptions, InMemoryConnectionStore, InMemoryIntegrationApprovalStore, InMemoryIntegrationEventStore, InMemoryIntegrationIdempotencyStore, InMemoryIntegrationOAuthStateStore, InMemoryIntegrationSecretStore, InMemoryIntegrationWorkflowStore, type InferIntegrationRequirementsOptions, type InstalledIntegrationWorkflow, IntegrationActionGuard, IntegrationActionRequest, IntegrationActionResult, IntegrationActionRisk, IntegrationActor, type IntegrationApprovalFilter, type IntegrationApprovalRecord, IntegrationApprovalRequest, type IntegrationApprovalResolution, type IntegrationApprovalStatus, type IntegrationApprovalStore, IntegrationAuditSink, type IntegrationBridgePayload, type IntegrationBridgeToolBinding, IntegrationCapability, type IntegrationCatalogFreshnessOptions, type IntegrationCatalogFreshnessResult, IntegrationCatalogSource, IntegrationConnection, IntegrationConnectionStore, IntegrationConnector, IntegrationConnectorAction, IntegrationConnectorCategory, IntegrationCredentialsRotatedEvent, IntegrationDataClass, IntegrationError, type IntegrationErrorRuntimeCode, type IntegrationEventStore, IntegrationGrantStore, IntegrationGuardContext, IntegrationHub, IntegrationHubOptions, type IntegrationIdempotencyRecord, type IntegrationIdempotencyStore, type IntegrationInvocationEnvelope, type IntegrationInvocationEnvelopeValidationOptions, IntegrationManifest, IntegrationManifestResolution, IntegrationOAuthState, IntegrationOAuthStateOutcome, IntegrationOAuthStateStore, IntegrationPolicyDecision, type IntegrationPolicyEffect, IntegrationPolicyEngine, type IntegrationPolicyRule, IntegrationProvider, IntegrationProviderKind, type IntegrationRateLimitDecision, type IntegrationRateLimiter, IntegrationRegistry, IntegrationRegistryConflict, IntegrationRegistrySummary, IntegrationRequirementMode, IntegrationRuntime, IntegrationSandboxBundle, IntegrationSandboxHost, type IntegrationSandboxHostHub, type IntegrationSandboxHostOptions, IntegrationSecretStore, IntegrationTriggerEvent, IntegrationTriggerSubscription, type IntegrationWebhookReceiverResult, type IntegrationWorkflowDefinition, IntegrationWorkflowRuntime, type IntegrationWorkflowRuntimeHub, type IntegrationWorkflowRuntimeOptions, type IntegrationWorkflowStore, InvokeWithCapabilityRequest, IssueCapabilityRequest, IssuedIntegrationCapability, type ManifestValidationIssue, type ManifestValidationResult, type MissingRequirementExplanation, type NormalizedIntegrationResult, type OAuthClientCredentials, PROVIDER_PASSTHROUGH_ACTION, type PlatformIntegrationPolicyPresetOptions, type ProviderHttpRequestInput, type ProviderPassthroughPolicy, type RegisterAppInput, type RegisteredApp, type RenderConsentOptions, ResolvedDataSource, SecretRef, StartAuthRequest, StartAuthResult, StaticIntegrationPolicyEngine, type StaticIntegrationPolicyOptions, type StoredIntegrationEvent, TANGLE_INTEGRATIONS_CATALOG_PROVIDER_ID, TANGLE_INTEGRATIONS_CATALOG_SOURCE, TangleAppsClient, type TangleAppsClientOptions, type TangleCatalogExecutorInvocation, type TangleCatalogExecutorProviderOptions, type TangleCatalogRuntimePackageManifest, type TangleCatalogRuntimePackageManifestOptions, type TangleCatalogTriggerInvocation, type TangleIntegrationCatalogEntry, type TangleIntegrationCatalogFreshnessOptions, type TangleIntegrationCatalogFreshnessResult, type TangleIntegrationContract, type TangleIntegrationContractStatus, type TangleIntegrationImplementationKind, type TangleIntegrationInvokeInput, type TangleIntegrationInvokeResult, TangleIntegrationsClient, type TangleIntegrationsClientOptions, type WorkspaceCapability, type WorkspaceCapabilityDiscovery, type WorkspaceToolSchema, type WorkspaceTrigger, adapterManifestsToConnectors, assertValidIntegrationManifest, auditIntegrationCatalogFreshness, auditTangleIntegrationCatalogFreshness, buildActivepiecesConnectors, buildApprovalRequest, buildCanonicalLaunchConnectors, buildIntegrationBridgeEnvironment, buildIntegrationBridgePayload, buildIntegrationInvocationEnvelope, buildTangleCatalogRuntimePackageManifest, buildTangleIntegrationCatalogConnectors, calendarExercisePlannerManifest, canonicalActionConnectorId, createActivepiecesExecutorProvider, createApprovalBackedPolicyEngine, createCatalogExecutorProvider, createConnectionCredentialResolver, createConnectorAdapterCatalogSource, createConnectorAdapterProvider, createCredentialBackedAdapterProvider, createDefaultIntegrationActionGuard, createDefaultIntegrationPolicyEngine, createGatewayCatalogProvider, createHttpIntegrationProvider, createIntegrationWorkflowRuntime, createMockIntegrationProvider, createPlatformIntegrationPolicyPreset, createTangleAppsClient, createTangleCatalogExecutorProvider, createTangleIntegrationsClient, decodeIntegrationBridgePayload, discoverWorkspaceCapabilities, dispatchIntegrationInvocation, encodeIntegrationBridgePayload, explainMissingRequirements, extractActivepiecesPublicPieceCount, extractExternalCatalogPublicCount, filterDiscoveryByWorkspaceScopes, getActivepiecesOverride, inferIntegrationManifestFromTools, invocationRequestFromEnvelope, listActivepiecesCatalogEntries, listTangleIntegrationCatalogEntries, listTangleIntegrationCatalogRuntimePackages, listTangleIntegrationContracts, listTangleNativeAdapterIds, manifestToConnector, normalizeGatewayCatalog, normalizeIntegrationResult, parseIntegrationBridgeEnvironment, receiveIntegrationWebhook, redactApprovalRequest, redactCapability, redactIntegrationBridgePayload, redactInvocationEnvelope, renderApprovalCopy, renderConsentSummary, renderTangleCatalogRuntimePnpmAddCommand, resolveConnectionCredentials, resolveIntegrationApproval, revokeConnection, sanitizeConnection, signCapability, storedEventToTriggerEvent, validateIntegrationInvocationEnvelope, validateIntegrationManifest, validateProviderPassthroughRequest, verifyCapabilityToken };
package/dist/mcp.d.ts ADDED
@@ -0,0 +1,95 @@
1
+ import { d as IntegrationConnectorCategory, g as IntegrationDataClass, f as IntegrationActionRisk, j as IntegrationProvider, b as IntegrationConnector } from './core-types-D4MGC44S.js';
2
+ import { M as McpCatalogTool } from './importers-DANyqwIT.js';
3
+ import './types-Bxg-wJkW.js';
4
+
5
+ /**
6
+ * Live MCP connector — attach a remote MCP (Model Context Protocol) server
7
+ * as an {@link IntegrationProvider}, so its tools flow through the same
8
+ * catalog / grants / approvals machinery as every other connector instead of
9
+ * forming a parallel, ungoverned tool path.
10
+ *
11
+ * Transport is Streamable HTTP only (single POST endpoint, JSON or SSE
12
+ * response framing) — this package runs in edge workers, so stdio servers are
13
+ * out of scope; front them with any HTTP-bridging MCP host.
14
+ *
15
+ * Discovery reuses {@link importMcpConnector}: `tools/list` output becomes an
16
+ * `IntegrationConnector` whose per-action risk comes from MCP tool
17
+ * annotations (readOnlyHint / destructiveHint) with a text-heuristic
18
+ * fallback, so non-read MCP tools default to `approvalRequired` — fail-closed
19
+ * against servers that don't annotate.
20
+ *
21
+ * Credentials: the server's auth header is supplied at construction by the
22
+ * product (which owns secret storage) and held in memory only. Connection
23
+ * rows carry no MCP secrets.
24
+ */
25
+
26
+ /** Protocol revision sent on `initialize` and the `MCP-Protocol-Version`
27
+ * header. Servers negotiate down from this. */
28
+ declare const MCP_PROTOCOL_VERSION = "2025-06-18";
29
+ interface McpServerConfig {
30
+ /** The server's single Streamable-HTTP endpoint. */
31
+ url: string;
32
+ /** Static request headers — typically `{ Authorization: 'Bearer …' }`.
33
+ * Held in memory only; never persisted by this module. */
34
+ headers?: Record<string, string>;
35
+ protocolVersion?: string;
36
+ clientInfo?: {
37
+ name: string;
38
+ version: string;
39
+ };
40
+ /** Injectable for tests / custom egress policies (SSRF pinning). */
41
+ fetchImpl?: typeof fetch;
42
+ }
43
+ interface McpToolCallResult {
44
+ /** MCP content blocks (text, image, resource, …) verbatim. */
45
+ content: unknown[];
46
+ isError: boolean;
47
+ /** `structuredContent` from servers that return it. */
48
+ structured?: unknown;
49
+ }
50
+ /**
51
+ * Minimal Streamable-HTTP MCP client: `initialize` handshake (capturing the
52
+ * server's `Mcp-Session-Id`), paginated `tools/list`, and `tools/call`.
53
+ * Lazily initializes on first use; safe to share across calls within an
54
+ * isolate.
55
+ */
56
+ declare class McpHttpClient {
57
+ private readonly config;
58
+ private nextId;
59
+ private sessionId;
60
+ private negotiatedVersion;
61
+ private initializing;
62
+ constructor(config: McpServerConfig);
63
+ private get fetchImpl();
64
+ private post;
65
+ private request;
66
+ /** Idempotent handshake; concurrent callers share one in-flight init. */
67
+ initialize(): Promise<void>;
68
+ /** Full tool catalog, following `nextCursor` pagination. */
69
+ listTools(): Promise<McpCatalogTool[]>;
70
+ callTool(name: string, args: unknown): Promise<McpToolCallResult>;
71
+ }
72
+ interface CreateMcpProviderOptions {
73
+ /** Provider id, unique within the hub (e.g. `mcp:linear`). */
74
+ id: string;
75
+ server: McpServerConfig;
76
+ connectorId: string;
77
+ connectorTitle: string;
78
+ category?: IntegrationConnectorCategory;
79
+ scopes?: string[];
80
+ dataClass?: IntegrationDataClass;
81
+ /** Risk for tools whose annotations/name don't classify them. Defaults to
82
+ * 'write' (⇒ approvalRequired) — fail-closed. */
83
+ defaultRisk?: IntegrationActionRisk;
84
+ }
85
+ /** Discover a live MCP server's tools as an {@link IntegrationConnector}. */
86
+ declare function discoverMcpConnector(client: McpHttpClient, options: CreateMcpProviderOptions): Promise<IntegrationConnector>;
87
+ /**
88
+ * Build an {@link IntegrationProvider} over one remote MCP server: live
89
+ * `tools/list` discovery at construction, `tools/call` on invoke. A tool
90
+ * result with `isError` maps to `{ ok: false }` (the model sees the failure
91
+ * content); transport and JSON-RPC failures throw {@link IntegrationError}.
92
+ */
93
+ declare function createMcpProvider(options: CreateMcpProviderOptions): Promise<IntegrationProvider>;
94
+
95
+ export { type CreateMcpProviderOptions, MCP_PROTOCOL_VERSION, McpHttpClient, type McpServerConfig, type McpToolCallResult, createMcpProvider, discoverMcpConnector };
package/dist/mcp.js ADDED
@@ -0,0 +1,166 @@
1
+ import {
2
+ IntegrationError,
3
+ createCatalogExecutorProvider,
4
+ importMcpConnector
5
+ } from "./chunk-ZVGYRP2O.js";
6
+ import "./chunk-D57YS6XC.js";
7
+ import "./chunk-CR35IEKW.js";
8
+ import "./chunk-H4XYLS7T.js";
9
+ import "./chunk-O553GSCX.js";
10
+ import "./chunk-53NQJZAT.js";
11
+ import "./chunk-7P2LN4VT.js";
12
+ import "./chunk-376UBTNB.js";
13
+ import "./chunk-6W72E2KN.js";
14
+ import "./chunk-2TW2QKGZ.js";
15
+ import "./chunk-ZDK7Y4QG.js";
16
+ import "./chunk-PZ5AY32C.js";
17
+
18
+ // src/mcp.ts
19
+ var MCP_PROTOCOL_VERSION = "2025-06-18";
20
+ var McpHttpClient = class {
21
+ constructor(config) {
22
+ this.config = config;
23
+ }
24
+ config;
25
+ nextId = 1;
26
+ sessionId;
27
+ negotiatedVersion;
28
+ initializing;
29
+ get fetchImpl() {
30
+ return this.config.fetchImpl ?? fetch;
31
+ }
32
+ async post(body) {
33
+ const headers = {
34
+ "Content-Type": "application/json",
35
+ Accept: "application/json, text/event-stream",
36
+ ...this.config.headers ?? {}
37
+ };
38
+ const version = this.negotiatedVersion ?? this.config.protocolVersion ?? MCP_PROTOCOL_VERSION;
39
+ headers["MCP-Protocol-Version"] = version;
40
+ if (this.sessionId) headers["Mcp-Session-Id"] = this.sessionId;
41
+ let response;
42
+ try {
43
+ response = await this.fetchImpl(this.config.url, {
44
+ method: "POST",
45
+ headers,
46
+ body: JSON.stringify(body)
47
+ });
48
+ } catch (error) {
49
+ throw new IntegrationError(
50
+ `MCP server unreachable: ${error instanceof Error ? error.message : String(error)}`,
51
+ "provider_failure"
52
+ );
53
+ }
54
+ const session = response.headers.get("mcp-session-id");
55
+ if (session) this.sessionId = session;
56
+ if (!response.ok) {
57
+ throw new IntegrationError(`MCP server returned HTTP ${response.status}`, "provider_failure");
58
+ }
59
+ if (body.id === void 0) return void 0;
60
+ const contentType = response.headers.get("content-type") ?? "";
61
+ const text = await response.text();
62
+ const message = contentType.includes("text/event-stream") ? findSseResponse(text, body.id) : JSON.parse(text);
63
+ if (!message) {
64
+ throw new IntegrationError("MCP server response missing a result for the request", "provider_failure");
65
+ }
66
+ if (message.error) {
67
+ throw new IntegrationError(`MCP error ${message.error.code}: ${message.error.message}`, "provider_failure");
68
+ }
69
+ return message;
70
+ }
71
+ async request(method, params) {
72
+ const response = await this.post({ jsonrpc: "2.0", id: this.nextId++, method, ...params ? { params } : {} });
73
+ return response?.result;
74
+ }
75
+ /** Idempotent handshake; concurrent callers share one in-flight init. */
76
+ async initialize() {
77
+ if (this.negotiatedVersion) return;
78
+ this.initializing ??= (async () => {
79
+ const result = await this.request("initialize", {
80
+ protocolVersion: this.config.protocolVersion ?? MCP_PROTOCOL_VERSION,
81
+ capabilities: {},
82
+ clientInfo: this.config.clientInfo ?? { name: "tangle-agent-integrations", version: "1" }
83
+ });
84
+ this.negotiatedVersion = result?.protocolVersion ?? this.config.protocolVersion ?? MCP_PROTOCOL_VERSION;
85
+ await this.post({ jsonrpc: "2.0", method: "notifications/initialized" });
86
+ })().catch((error) => {
87
+ this.initializing = void 0;
88
+ throw error;
89
+ });
90
+ await this.initializing;
91
+ }
92
+ /** Full tool catalog, following `nextCursor` pagination. */
93
+ async listTools() {
94
+ await this.initialize();
95
+ const tools = [];
96
+ let cursor;
97
+ do {
98
+ const result = await this.request("tools/list", cursor ? { cursor } : {});
99
+ tools.push(...result?.tools ?? []);
100
+ cursor = result?.nextCursor;
101
+ } while (cursor);
102
+ return tools;
103
+ }
104
+ async callTool(name, args) {
105
+ await this.initialize();
106
+ const result = await this.request("tools/call", { name, arguments: args ?? {} });
107
+ return {
108
+ content: result?.content ?? [],
109
+ isError: result?.isError === true,
110
+ structured: result?.structuredContent
111
+ };
112
+ }
113
+ };
114
+ async function discoverMcpConnector(client, options) {
115
+ const tools = await client.listTools();
116
+ return importMcpConnector(
117
+ { tools },
118
+ {
119
+ providerId: options.id,
120
+ connectorId: options.connectorId,
121
+ connectorTitle: options.connectorTitle,
122
+ category: options.category,
123
+ auth: "custom",
124
+ scopes: options.scopes,
125
+ dataClass: options.dataClass,
126
+ defaultRisk: options.defaultRisk ?? "write"
127
+ }
128
+ );
129
+ }
130
+ async function createMcpProvider(options) {
131
+ const client = new McpHttpClient(options.server);
132
+ const connector = await discoverMcpConnector(client, options);
133
+ return createCatalogExecutorProvider({
134
+ id: options.id,
135
+ kind: "mcp",
136
+ connectors: [connector],
137
+ async executeAction({ request, action }) {
138
+ const result = await client.callTool(action.id, request.input);
139
+ return {
140
+ ok: !result.isError,
141
+ action: action.id,
142
+ output: result.structured ?? result.content,
143
+ metadata: { mcp: true, ...result.isError ? { isError: true } : {} }
144
+ };
145
+ }
146
+ });
147
+ }
148
+ function findSseResponse(body, id) {
149
+ for (const event of body.split(/\n\n/)) {
150
+ const data = event.split("\n").filter((line) => line.startsWith("data:")).map((line) => line.slice(5).trim()).join("");
151
+ if (!data) continue;
152
+ try {
153
+ const parsed = JSON.parse(data);
154
+ if (parsed.id === id) return parsed;
155
+ } catch {
156
+ }
157
+ }
158
+ return void 0;
159
+ }
160
+ export {
161
+ MCP_PROTOCOL_VERSION,
162
+ McpHttpClient,
163
+ createMcpProvider,
164
+ discoverMcpConnector
165
+ };
166
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/mcp.ts"],"sourcesContent":["/**\n * Live MCP connector — attach a remote MCP (Model Context Protocol) server\n * as an {@link IntegrationProvider}, so its tools flow through the same\n * catalog / grants / approvals machinery as every other connector instead of\n * forming a parallel, ungoverned tool path.\n *\n * Transport is Streamable HTTP only (single POST endpoint, JSON or SSE\n * response framing) — this package runs in edge workers, so stdio servers are\n * out of scope; front them with any HTTP-bridging MCP host.\n *\n * Discovery reuses {@link importMcpConnector}: `tools/list` output becomes an\n * `IntegrationConnector` whose per-action risk comes from MCP tool\n * annotations (readOnlyHint / destructiveHint) with a text-heuristic\n * fallback, so non-read MCP tools default to `approvalRequired` — fail-closed\n * against servers that don't annotate.\n *\n * Credentials: the server's auth header is supplied at construction by the\n * product (which owns secret storage) and held in memory only. Connection\n * rows carry no MCP secrets.\n */\n\nimport { IntegrationError } from './core-error.js'\nimport type {\n IntegrationActionResult,\n IntegrationActionRisk,\n IntegrationConnector,\n IntegrationConnectorCategory,\n IntegrationDataClass,\n IntegrationProvider,\n} from './core-types.js'\nimport { createCatalogExecutorProvider } from './catalog-executor.js'\nimport { importMcpConnector, type McpCatalogTool } from './importers.js'\n\n/** Protocol revision sent on `initialize` and the `MCP-Protocol-Version`\n * header. Servers negotiate down from this. */\nexport const MCP_PROTOCOL_VERSION = '2025-06-18'\n\nexport interface McpServerConfig {\n /** The server's single Streamable-HTTP endpoint. */\n url: string\n /** Static request headers — typically `{ Authorization: 'Bearer …' }`.\n * Held in memory only; never persisted by this module. */\n headers?: Record<string, string>\n protocolVersion?: string\n clientInfo?: { name: string; version: string }\n /** Injectable for tests / custom egress policies (SSRF pinning). */\n fetchImpl?: typeof fetch\n}\n\nexport interface McpToolCallResult {\n /** MCP content blocks (text, image, resource, …) verbatim. */\n content: unknown[]\n isError: boolean\n /** `structuredContent` from servers that return it. */\n structured?: unknown\n}\n\ninterface JsonRpcResponse {\n jsonrpc: '2.0'\n id?: number | string | null\n result?: unknown\n error?: { code: number; message: string; data?: unknown }\n}\n\n/**\n * Minimal Streamable-HTTP MCP client: `initialize` handshake (capturing the\n * server's `Mcp-Session-Id`), paginated `tools/list`, and `tools/call`.\n * Lazily initializes on first use; safe to share across calls within an\n * isolate.\n */\nexport class McpHttpClient {\n private nextId = 1\n private sessionId: string | undefined\n private negotiatedVersion: string | undefined\n private initializing: Promise<void> | undefined\n\n constructor(private readonly config: McpServerConfig) {}\n\n private get fetchImpl(): typeof fetch {\n return this.config.fetchImpl ?? fetch\n }\n\n private async post(body: Record<string, unknown>): Promise<JsonRpcResponse | undefined> {\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n Accept: 'application/json, text/event-stream',\n ...(this.config.headers ?? {}),\n }\n const version = this.negotiatedVersion ?? this.config.protocolVersion ?? MCP_PROTOCOL_VERSION\n headers['MCP-Protocol-Version'] = version\n if (this.sessionId) headers['Mcp-Session-Id'] = this.sessionId\n\n let response: Response\n try {\n response = await this.fetchImpl(this.config.url, {\n method: 'POST',\n headers,\n body: JSON.stringify(body),\n })\n } catch (error) {\n throw new IntegrationError(\n `MCP server unreachable: ${error instanceof Error ? error.message : String(error)}`,\n 'provider_failure',\n )\n }\n const session = response.headers.get('mcp-session-id')\n if (session) this.sessionId = session\n\n if (!response.ok) {\n throw new IntegrationError(`MCP server returned HTTP ${response.status}`, 'provider_failure')\n }\n // Notifications get 202/204 with no body.\n if (body.id === undefined) return undefined\n const contentType = response.headers.get('content-type') ?? ''\n const text = await response.text()\n const message = contentType.includes('text/event-stream')\n ? findSseResponse(text, body.id as number)\n : (JSON.parse(text) as JsonRpcResponse)\n if (!message) {\n throw new IntegrationError('MCP server response missing a result for the request', 'provider_failure')\n }\n if (message.error) {\n throw new IntegrationError(`MCP error ${message.error.code}: ${message.error.message}`, 'provider_failure')\n }\n return message\n }\n\n private async request(method: string, params?: Record<string, unknown>): Promise<unknown> {\n const response = await this.post({ jsonrpc: '2.0', id: this.nextId++, method, ...(params ? { params } : {}) })\n return response?.result\n }\n\n /** Idempotent handshake; concurrent callers share one in-flight init. */\n async initialize(): Promise<void> {\n if (this.negotiatedVersion) return\n this.initializing ??= (async () => {\n const result = (await this.request('initialize', {\n protocolVersion: this.config.protocolVersion ?? MCP_PROTOCOL_VERSION,\n capabilities: {},\n clientInfo: this.config.clientInfo ?? { name: 'tangle-agent-integrations', version: '1' },\n })) as { protocolVersion?: string } | undefined\n this.negotiatedVersion = result?.protocolVersion ?? this.config.protocolVersion ?? MCP_PROTOCOL_VERSION\n await this.post({ jsonrpc: '2.0', method: 'notifications/initialized' })\n })().catch((error) => {\n this.initializing = undefined\n throw error\n })\n await this.initializing\n }\n\n /** Full tool catalog, following `nextCursor` pagination. */\n async listTools(): Promise<McpCatalogTool[]> {\n await this.initialize()\n const tools: McpCatalogTool[] = []\n let cursor: string | undefined\n do {\n const result = (await this.request('tools/list', cursor ? { cursor } : {})) as\n | { tools?: McpCatalogTool[]; nextCursor?: string }\n | undefined\n tools.push(...(result?.tools ?? []))\n cursor = result?.nextCursor\n } while (cursor)\n return tools\n }\n\n async callTool(name: string, args: unknown): Promise<McpToolCallResult> {\n await this.initialize()\n const result = (await this.request('tools/call', { name, arguments: args ?? {} })) as\n | { content?: unknown[]; isError?: boolean; structuredContent?: unknown }\n | undefined\n return {\n content: result?.content ?? [],\n isError: result?.isError === true,\n structured: result?.structuredContent,\n }\n }\n}\n\nexport interface CreateMcpProviderOptions {\n /** Provider id, unique within the hub (e.g. `mcp:linear`). */\n id: string\n server: McpServerConfig\n connectorId: string\n connectorTitle: string\n category?: IntegrationConnectorCategory\n scopes?: string[]\n dataClass?: IntegrationDataClass\n /** Risk for tools whose annotations/name don't classify them. Defaults to\n * 'write' (⇒ approvalRequired) — fail-closed. */\n defaultRisk?: IntegrationActionRisk\n}\n\n/** Discover a live MCP server's tools as an {@link IntegrationConnector}. */\nexport async function discoverMcpConnector(\n client: McpHttpClient,\n options: CreateMcpProviderOptions,\n): Promise<IntegrationConnector> {\n const tools = await client.listTools()\n return importMcpConnector(\n { tools },\n {\n providerId: options.id,\n connectorId: options.connectorId,\n connectorTitle: options.connectorTitle,\n category: options.category,\n auth: 'custom',\n scopes: options.scopes,\n dataClass: options.dataClass,\n defaultRisk: options.defaultRisk ?? 'write',\n },\n )\n}\n\n/**\n * Build an {@link IntegrationProvider} over one remote MCP server: live\n * `tools/list` discovery at construction, `tools/call` on invoke. A tool\n * result with `isError` maps to `{ ok: false }` (the model sees the failure\n * content); transport and JSON-RPC failures throw {@link IntegrationError}.\n */\nexport async function createMcpProvider(options: CreateMcpProviderOptions): Promise<IntegrationProvider> {\n const client = new McpHttpClient(options.server)\n const connector = await discoverMcpConnector(client, options)\n return createCatalogExecutorProvider({\n id: options.id,\n kind: 'mcp',\n connectors: [connector],\n async executeAction({ request, action }): Promise<IntegrationActionResult> {\n const result = await client.callTool(action.id, request.input)\n return {\n ok: !result.isError,\n action: action.id,\n output: result.structured ?? result.content,\n metadata: { mcp: true, ...(result.isError ? { isError: true } : {}) },\n }\n },\n })\n}\n\nfunction findSseResponse(body: string, id: number): JsonRpcResponse | undefined {\n for (const event of body.split(/\\n\\n/)) {\n const data = event\n .split('\\n')\n .filter((line) => line.startsWith('data:'))\n .map((line) => line.slice(5).trim())\n .join('')\n if (!data) continue\n try {\n const parsed = JSON.parse(data) as JsonRpcResponse\n if (parsed.id === id) return parsed\n } catch {\n // non-JSON SSE frame (keepalive/comment) — skip\n }\n }\n return undefined\n}\n"],"mappings":"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","names":[]}
@@ -1,4 +1,4 @@
1
- import { b as IntegrationConnector, h as IntegrationCatalogSource } from './core-types-CjWifQOf.js';
1
+ import { b as IntegrationConnector, h as IntegrationCatalogSource } from './core-types-D4MGC44S.js';
2
2
  import './types-Bxg-wJkW.js';
3
3
 
4
4
  type IntegrationSupportTier = 'catalogOnly' | 'setupReady' | 'gatewayExecutable' | 'firstPartyExecutable' | 'sandboxExecutable';
package/dist/runtime.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { IntegrationToolDefinition } from './catalog.js';
2
2
  import { IntegrationRegistryEntry, IntegrationRegistry } from './registry.js';
3
- import { I as IntegrationActor, a as IssuedIntegrationCapability, b as IntegrationConnector, c as IntegrationConnection } from './core-types-CjWifQOf.js';
3
+ import { I as IntegrationActor, a as IssuedIntegrationCapability, b as IntegrationConnector, c as IntegrationConnection } from './core-types-D4MGC44S.js';
4
4
  import './types-Bxg-wJkW.js';
5
5
 
6
6
  type IntegrationRequirementMode = 'read' | 'write' | 'trigger';
package/dist/specs.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { f as IntegrationActionRisk, g as IntegrationDataClass, d as IntegrationConnectorCategory, e as IntegrationConnectorAction, G as IntegrationConnectorTrigger, b as IntegrationConnector } from './core-types-CjWifQOf.js';
1
+ import { f as IntegrationActionRisk, g as IntegrationDataClass, d as IntegrationConnectorCategory, e as IntegrationConnectorAction, G as IntegrationConnectorTrigger, b as IntegrationConnector } from './core-types-D4MGC44S.js';
2
2
  import './types-Bxg-wJkW.js';
3
3
 
4
4
  type IntegrationAuthMode = 'oauth2' | 'api_key' | 'hmac' | 'none' | 'custom';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tangle-network/agent-integrations",
3
- "version": "0.35.0",
3
+ "version": "0.36.0",
4
4
  "description": "Vendor-neutral integration contracts and runtime helpers for sandbox and agent apps.",
5
5
  "homepage": "https://github.com/tangle-network/agent-integrations#readme",
6
6
  "repository": {
@@ -83,6 +83,11 @@
83
83
  "types": "./dist/coverage-catalog.d.ts",
84
84
  "import": "./dist/coverage-catalog.js",
85
85
  "default": "./dist/coverage-catalog.js"
86
+ },
87
+ "./mcp": {
88
+ "types": "./dist/mcp.d.ts",
89
+ "import": "./dist/mcp.js",
90
+ "default": "./dist/mcp.js"
86
91
  }
87
92
  },
88
93
  "files": [