@tangle-network/agent-integrations 0.36.0 → 0.37.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.js CHANGED
@@ -7,7 +7,7 @@ import {
7
7
  parseIntegrationToolName,
8
8
  searchIntegrationTools,
9
9
  toMcpTools
10
- } from "./chunk-ZVGYRP2O.js";
10
+ } from "./chunk-SPLJV5J7.js";
11
11
  import "./chunk-D57YS6XC.js";
12
12
  import "./chunk-CR35IEKW.js";
13
13
  import "./chunk-H4XYLS7T.js";
@@ -15,7 +15,7 @@ import "./chunk-O553GSCX.js";
15
15
  import "./chunk-53NQJZAT.js";
16
16
  import "./chunk-7P2LN4VT.js";
17
17
  import "./chunk-376UBTNB.js";
18
- import "./chunk-6W72E2KN.js";
18
+ import "./chunk-YV3O5SO2.js";
19
19
  import "./chunk-2TW2QKGZ.js";
20
20
  import "./chunk-ZDK7Y4QG.js";
21
21
  import "./chunk-PZ5AY32C.js";
@@ -8,7 +8,7 @@ import {
8
8
  } from "./chunk-53NQJZAT.js";
9
9
  import {
10
10
  adapters_exports
11
- } from "./chunk-6W72E2KN.js";
11
+ } from "./chunk-YV3O5SO2.js";
12
12
 
13
13
  // src/activepieces-catalog.ts
14
14
  import { readFileSync } from "fs";
@@ -4302,4 +4302,4 @@ export {
4302
4302
  signCapability,
4303
4303
  verifyCapabilityToken
4304
4304
  };
4305
- //# sourceMappingURL=chunk-ZVGYRP2O.js.map
4305
+ //# sourceMappingURL=chunk-SPLJV5J7.js.map
@@ -506,6 +506,7 @@ __export(adapters_exports, {
506
506
  wufooConnector: () => wufooConnector,
507
507
  xeroConnector: () => xeroConnector,
508
508
  youcanbookmeConnector: () => youcanbookmeConnector,
509
+ youtubeDataConnector: () => youtubeDataConnector,
509
510
  zagomailConnector: () => zagomailConnector,
510
511
  zapierConnector: () => zapierConnector,
511
512
  zendeskConnector: () => zendeskConnector,
@@ -16621,6 +16622,25 @@ var mailchimpConnector = declarativeRestConnector({
16621
16622
  },
16622
16623
  request: { method: "GET", path: "/3.0/lists/{listId}" }
16623
16624
  },
16625
+ {
16626
+ name: "segments.list",
16627
+ class: "read",
16628
+ description: "List the segments of a Mailchimp audience. Use a segment id in `campaigns.create` recipients to target a slice \u2014 and to carve out a control/holdout slice for measuring true lift.",
16629
+ parameters: {
16630
+ type: "object",
16631
+ properties: {
16632
+ listId: { type: "string" },
16633
+ count: { type: "number" },
16634
+ offset: { type: "number" }
16635
+ },
16636
+ required: ["listId"]
16637
+ },
16638
+ request: {
16639
+ method: "GET",
16640
+ path: "/3.0/lists/{listId}/segments",
16641
+ query: { count: "{count}", offset: "{offset}" }
16642
+ }
16643
+ },
16624
16644
  {
16625
16645
  name: "members.search",
16626
16646
  class: "read",
@@ -16775,6 +16795,66 @@ var mailchimpConnector = declarativeRestConnector({
16775
16795
  },
16776
16796
  cas: "native-idempotency",
16777
16797
  externalEffect: true
16798
+ },
16799
+ {
16800
+ name: "campaigns.set-content",
16801
+ class: "mutation",
16802
+ description: "Set the content of a draft Mailchimp campaign. `campaigns.create` only makes an empty shell \u2014 this puts the generated email body in. Body matches the v3.0 campaign-content schema, e.g. `{ html }` or `{ plain_text }` or `{ template: { id, sections } }`.",
16803
+ parameters: {
16804
+ type: "object",
16805
+ properties: {
16806
+ campaignId: { type: "string" },
16807
+ fields: {
16808
+ type: "object",
16809
+ description: "Campaign content body; typically `{ html }`. PUT replaces the content wholesale."
16810
+ }
16811
+ },
16812
+ required: ["campaignId", "fields"]
16813
+ },
16814
+ request: {
16815
+ method: "PUT",
16816
+ path: "/3.0/campaigns/{campaignId}/content",
16817
+ body: "{fields}"
16818
+ },
16819
+ cas: "native-idempotency"
16820
+ },
16821
+ {
16822
+ name: "reports.list",
16823
+ class: "read",
16824
+ description: "List campaign performance reports. Each entry carries the open/click/unsubscribe/abuse rates and (when an ecommerce store is connected) revenue \u2014 the feedback signal the optimizer reads to learn what worked.",
16825
+ parameters: {
16826
+ type: "object",
16827
+ properties: {
16828
+ count: { type: "number" },
16829
+ offset: { type: "number" },
16830
+ type: { type: "string", description: "Filter by campaign type, e.g. regular, plaintext, rss." },
16831
+ since_send_time: {
16832
+ type: "string",
16833
+ description: "ISO 8601 lower bound on send time, e.g. 2026-06-01T00:00:00Z \u2014 read only recent sends."
16834
+ }
16835
+ }
16836
+ },
16837
+ request: {
16838
+ method: "GET",
16839
+ path: "/3.0/reports",
16840
+ query: {
16841
+ count: "{count}",
16842
+ offset: "{offset}",
16843
+ type: "{type}",
16844
+ since_send_time: "{since_send_time}"
16845
+ }
16846
+ }
16847
+ },
16848
+ {
16849
+ name: "reports.get",
16850
+ class: "read",
16851
+ description: "Read the performance report for one sent campaign: opens, clicks, unsubscribes, abuse_reports (the complaint signal), bounces, list_stats, and ecommerce { total_orders, total_spent, total_revenue }. This is the reward+guardrail signal for the optimization loop.",
16852
+ parameters: {
16853
+ type: "object",
16854
+ properties: { campaignId: { type: "string" } },
16855
+ required: ["campaignId"]
16856
+ },
16857
+ request: { method: "GET", path: "/3.0/reports/{campaignId}" }
16778
16858
  }
16779
16859
  ]
16780
16860
  });
@@ -71017,6 +71097,116 @@ var googleSearchConsoleConnector = declarativeRestConnector({
71017
71097
  ]
71018
71098
  });
71019
71099
 
71100
+ // src/connectors/adapters/youtube-data.ts
71101
+ var youtubeDataConnector = declarativeRestConnector({
71102
+ kind: "youtube",
71103
+ displayName: "YouTube",
71104
+ description: "Resolve a YouTube channel by @handle, username, or id; list its most recent uploads; and fetch public video metadata (title, description, duration, view/like counts) for any public channel the connected Google identity can read.",
71105
+ auth: {
71106
+ kind: "oauth2",
71107
+ authorizationUrl: "https://accounts.google.com/o/oauth2/v2/auth",
71108
+ tokenUrl: "https://oauth2.googleapis.com/token",
71109
+ scopes: ["https://www.googleapis.com/auth/youtube.readonly"],
71110
+ clientIdEnv: "GOOGLE_OAUTH_CLIENT_ID",
71111
+ clientSecretEnv: "GOOGLE_OAUTH_CLIENT_SECRET",
71112
+ extraAuthParams: { access_type: "offline", prompt: "consent", include_granted_scopes: "true" }
71113
+ },
71114
+ category: "other",
71115
+ defaultConsistencyModel: "cache",
71116
+ baseUrl: "https://www.googleapis.com/youtube/v3",
71117
+ // channels.list with mine=true is the cheapest probe (1 quota unit) that
71118
+ // confirms the token reaches the Data API with the youtube scope. It returns
71119
+ // empty for an account without a channel — still a 200, still a valid token.
71120
+ test: { method: "GET", path: "/channels", query: { part: "id", mine: "true" } },
71121
+ capabilities: [
71122
+ {
71123
+ name: "channels.resolve",
71124
+ class: "read",
71125
+ description: 'Resolve a channel and read its snippet, statistics, and the uploads-playlist id needed by channels.recentUploads. Pass exactly one of handle (e.g. "@MrBeast"), username (legacy), or channelId (GET /channels?part=snippet,statistics,contentDetails).',
71126
+ parameters: {
71127
+ type: "object",
71128
+ properties: {
71129
+ handle: { type: "string", description: 'Channel @handle, e.g. "@MrBeast" (with or without the leading @).' },
71130
+ username: { type: "string", description: "Legacy channel username (only for old custom-username channels)." },
71131
+ channelId: { type: "string", description: "Canonical channel id (UC...), if already known." }
71132
+ }
71133
+ },
71134
+ request: {
71135
+ method: "GET",
71136
+ path: "/channels",
71137
+ query: {
71138
+ part: "snippet,statistics,contentDetails",
71139
+ forHandle: "{handle}",
71140
+ forUsername: "{username}",
71141
+ id: "{channelId}"
71142
+ }
71143
+ },
71144
+ requiredScopes: ["https://www.googleapis.com/auth/youtube.readonly"]
71145
+ },
71146
+ {
71147
+ name: "channels.recentUploads",
71148
+ class: "read",
71149
+ description: "List a channel's most recent uploads (video id, title, description, publishedAt) from its uploads playlist. Get uploadsPlaylistId from channels.resolve (contentDetails.relatedPlaylists.uploads). maxResults is 1-50, default 15 (GET /playlistItems?part=snippet,contentDetails).",
71150
+ parameters: {
71151
+ type: "object",
71152
+ properties: {
71153
+ uploadsPlaylistId: { type: "string", description: "The channel's uploads playlist id (UU...), from channels.resolve." },
71154
+ maxResults: { type: "integer", description: "How many recent uploads to return (1-50, default 15)." },
71155
+ pageToken: { type: "string", description: "Page token from a prior response's nextPageToken to page further back." }
71156
+ },
71157
+ required: ["uploadsPlaylistId"]
71158
+ },
71159
+ request: {
71160
+ method: "GET",
71161
+ path: "/playlistItems",
71162
+ query: {
71163
+ part: "snippet,contentDetails",
71164
+ playlistId: "{uploadsPlaylistId}",
71165
+ maxResults: "{maxResults}",
71166
+ pageToken: "{pageToken}"
71167
+ }
71168
+ },
71169
+ requiredScopes: ["https://www.googleapis.com/auth/youtube.readonly"]
71170
+ },
71171
+ {
71172
+ name: "videos.list",
71173
+ class: "read",
71174
+ description: 'Fetch public metadata for up to 50 videos by id \u2014 title, description, duration, and view/like/comment counts. Pass a comma-separated id list, e.g. "id1,id2,id3" (GET /videos?part=snippet,statistics,contentDetails).',
71175
+ parameters: {
71176
+ type: "object",
71177
+ properties: {
71178
+ ids: { type: "string", description: 'Comma-separated video ids (max 50), e.g. "dQw4w9WgXcQ,abc123".' }
71179
+ },
71180
+ required: ["ids"]
71181
+ },
71182
+ request: {
71183
+ method: "GET",
71184
+ path: "/videos",
71185
+ query: { part: "snippet,statistics,contentDetails", id: "{ids}" }
71186
+ },
71187
+ requiredScopes: ["https://www.googleapis.com/auth/youtube.readonly"]
71188
+ },
71189
+ {
71190
+ name: "captions.list",
71191
+ class: "read",
71192
+ description: "List the caption tracks AVAILABLE for a video (language, kind, auto-vs-manual). Reports availability only \u2014 caption bodies are owner-only on the Data API, so fetch transcript text out-of-band. (GET /captions?part=snippet&videoId=...).",
71193
+ parameters: {
71194
+ type: "object",
71195
+ properties: {
71196
+ videoId: { type: "string", description: "The video id to list caption tracks for." }
71197
+ },
71198
+ required: ["videoId"]
71199
+ },
71200
+ request: {
71201
+ method: "GET",
71202
+ path: "/captions",
71203
+ query: { part: "snippet", videoId: "{videoId}" }
71204
+ },
71205
+ requiredScopes: ["https://www.googleapis.com/auth/youtube.readonly"]
71206
+ }
71207
+ ]
71208
+ });
71209
+
71020
71210
  // src/connectors/adapters/google-cloud-storage.ts
71021
71211
  var googleCloudStorageConnector = declarativeRestConnector({
71022
71212
  kind: "google-cloud-storage",
@@ -118499,6 +118689,7 @@ export {
118499
118689
  ghostcmsConnector,
118500
118690
  gistlyConnector,
118501
118691
  googleSearchConsoleConnector,
118692
+ youtubeDataConnector,
118502
118693
  googleCloudStorageConnector,
118503
118694
  googleBigqueryConnector,
118504
118695
  googleSearchConnector,
@@ -118745,4 +118936,4 @@ export {
118745
118936
  pipedreamConnector,
118746
118937
  adapters_exports
118747
118938
  };
118748
- //# sourceMappingURL=chunk-6W72E2KN.js.map
118939
+ //# sourceMappingURL=chunk-YV3O5SO2.js.map