runline 0.2.1 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (189) hide show
  1. package/dist/plugins/actionNetwork/src/index.js +118 -25
  2. package/dist/plugins/activeCampaign/src/index.js +184 -38
  3. package/dist/plugins/adalo/src/index.js +40 -8
  4. package/dist/plugins/affinity/src/index.js +100 -20
  5. package/dist/plugins/agileCrm/src/index.js +115 -27
  6. package/dist/plugins/airtable/src/index.js +94 -19
  7. package/dist/plugins/airtop/src/index.js +266 -62
  8. package/dist/plugins/apiTemplateIo/src/index.js +25 -5
  9. package/dist/plugins/asana/src/index.js +195 -41
  10. package/dist/plugins/autopilot/src/index.js +39 -8
  11. package/dist/plugins/bambooHr/src/index.js +109 -22
  12. package/dist/plugins/bannerbear/src/index.js +36 -8
  13. package/dist/plugins/baserow/src/index.js +35 -7
  14. package/dist/plugins/beeminder/src/index.js +198 -40
  15. package/dist/plugins/bitly/src/index.js +46 -10
  16. package/dist/plugins/bitwarden/src/index.js +167 -36
  17. package/dist/plugins/box/src/index.js +172 -37
  18. package/dist/plugins/brandfetch/src/index.js +5 -1
  19. package/dist/plugins/brevo/src/index.js +136 -29
  20. package/dist/plugins/bubble/src/index.js +76 -17
  21. package/dist/plugins/chargebee/src/index.js +35 -7
  22. package/dist/plugins/circleci/src/index.js +50 -10
  23. package/dist/plugins/ciscoWebex/src/index.js +131 -27
  24. package/dist/plugins/clearbit/src/index.js +76 -17
  25. package/dist/plugins/clickup/src/index.js +500 -107
  26. package/dist/plugins/clockify/src/index.js +229 -47
  27. package/dist/plugins/cloudflare/src/index.js +28 -6
  28. package/dist/plugins/cockpit/src/index.js +54 -12
  29. package/dist/plugins/coda/src/index.js +81 -19
  30. package/dist/plugins/coingecko/src/index.js +157 -33
  31. package/dist/plugins/contentful/src/index.js +85 -17
  32. package/dist/plugins/convertkit/src/index.js +74 -18
  33. package/dist/plugins/copper/src/index.js +59 -11
  34. package/dist/plugins/cortex/src/index.js +55 -13
  35. package/dist/plugins/currents/src/index.js +310 -71
  36. package/dist/plugins/customerIo/src/index.js +112 -23
  37. package/dist/plugins/databricks/src/index.js +549 -115
  38. package/dist/plugins/deepl/src/index.js +26 -6
  39. package/dist/plugins/demio/src/index.js +56 -11
  40. package/dist/plugins/dhl/src/index.js +16 -3
  41. package/dist/plugins/discord/src/index.js +141 -31
  42. package/dist/plugins/discourse/src/index.js +136 -31
  43. package/dist/plugins/disqus/src/index.js +96 -20
  44. package/dist/plugins/docker/src/index.js +20 -4
  45. package/dist/plugins/drift/src/index.js +19 -5
  46. package/dist/plugins/dropbox/src/index.js +139 -30
  47. package/dist/plugins/dropcontact/src/index.js +21 -4
  48. package/dist/plugins/egoi/src/index.js +61 -15
  49. package/dist/plugins/elasticsearch/src/index.js +59 -13
  50. package/dist/plugins/emelia/src/index.js +95 -19
  51. package/dist/plugins/erpnext/src/index.js +74 -15
  52. package/dist/plugins/facebookGraph/src/index.js +52 -11
  53. package/dist/plugins/freshdesk/src/index.js +220 -48
  54. package/dist/plugins/freshservice/src/index.js +39 -9
  55. package/dist/plugins/freshworksCrm/src/index.js +58 -12
  56. package/dist/plugins/getresponse/src/index.js +87 -18
  57. package/dist/plugins/ghost/src/index.js +114 -26
  58. package/dist/plugins/github/src/index.js +483 -109
  59. package/dist/plugins/gitlab/src/index.js +193 -45
  60. package/dist/plugins/gong/src/index.js +68 -14
  61. package/dist/plugins/gotify/src/index.js +43 -9
  62. package/dist/plugins/gotowebinar/src/index.js +233 -47
  63. package/dist/plugins/grafana/src/index.js +92 -21
  64. package/dist/plugins/graphql/src/index.js +38 -8
  65. package/dist/plugins/grist/src/index.js +52 -10
  66. package/dist/plugins/hackernews/src/index.js +32 -6
  67. package/dist/plugins/halopsa/src/index.js +131 -26
  68. package/dist/plugins/harvest/src/index.js +182 -42
  69. package/dist/plugins/helpscout/src/index.js +153 -31
  70. package/dist/plugins/highlevel/src/index.js +291 -58
  71. package/dist/plugins/homeAssistant/src/index.js +124 -26
  72. package/dist/plugins/hubspot/src/index.js +163 -29
  73. package/dist/plugins/humanticAi/src/index.js +54 -5
  74. package/dist/plugins/hunter/src/index.js +21 -4
  75. package/dist/plugins/intercom/src/index.js +95 -20
  76. package/dist/plugins/iterable/src/index.js +96 -20
  77. package/dist/plugins/jenkins/src/index.js +75 -17
  78. package/dist/plugins/jira/src/index.js +193 -43
  79. package/dist/plugins/keap/src/index.js +222 -56
  80. package/dist/plugins/kobotoolbox/src/index.js +113 -25
  81. package/dist/plugins/lemlist/src/index.js +79 -18
  82. package/dist/plugins/linear/src/index.js +86 -19
  83. package/dist/plugins/lingvanex/src/index.js +38 -8
  84. package/dist/plugins/linkedin/src/index.js +37 -8
  85. package/dist/plugins/lonescale/src/index.js +41 -9
  86. package/dist/plugins/magento/src/index.js +98 -27
  87. package/dist/plugins/mailcheck/src/index.js +11 -2
  88. package/dist/plugins/mailchimp/src/index.js +193 -42
  89. package/dist/plugins/mailerlite/src/index.js +61 -12
  90. package/dist/plugins/mailgun/src/index.js +39 -7
  91. package/dist/plugins/mailjet/src/index.js +141 -30
  92. package/dist/plugins/mandrill/src/index.js +67 -14
  93. package/dist/plugins/marketstack/src/index.js +56 -10
  94. package/dist/plugins/matrix/src/index.js +97 -20
  95. package/dist/plugins/mattermost/src/index.js +124 -26
  96. package/dist/plugins/mautic/src/index.js +129 -26
  97. package/dist/plugins/medium/src/index.js +64 -13
  98. package/dist/plugins/messagebird/src/index.js +80 -15
  99. package/dist/plugins/metabase/src/index.js +57 -12
  100. package/dist/plugins/misp/src/index.js +135 -33
  101. package/dist/plugins/mocean/src/index.js +33 -7
  102. package/dist/plugins/monday/src/index.js +97 -23
  103. package/dist/plugins/monicaCrm/src/index.js +112 -23
  104. package/dist/plugins/msg91/src/index.js +11 -2
  105. package/dist/plugins/nasa/src/index.js +108 -21
  106. package/dist/plugins/netlify/src/index.js +28 -6
  107. package/dist/plugins/netscalerAdc/src/index.js +144 -29
  108. package/dist/plugins/nextcloud/src/index.js +103 -20
  109. package/dist/plugins/nocodb/src/index.js +57 -11
  110. package/dist/plugins/notion/src/index.js +148 -37
  111. package/dist/plugins/npm/src/index.js +59 -12
  112. package/dist/plugins/odoo/src/index.js +102 -20
  113. package/dist/plugins/okta/src/index.js +50 -10
  114. package/dist/plugins/oneSimpleApi/src/index.js +84 -17
  115. package/dist/plugins/onfleet/src/index.js +139 -32
  116. package/dist/plugins/openThesaurus/src/index.js +46 -9
  117. package/dist/plugins/openweathermap/src/index.js +31 -6
  118. package/dist/plugins/oura/src/index.js +36 -7
  119. package/dist/plugins/paddle/src/index.js +80 -17
  120. package/dist/plugins/pagerduty/src/index.js +53 -12
  121. package/dist/plugins/paypal/src/index.js +51 -11
  122. package/dist/plugins/peekalink/src/index.js +12 -3
  123. package/dist/plugins/phantombuster/src/index.js +39 -8
  124. package/dist/plugins/philipsHue/src/index.js +64 -13
  125. package/dist/plugins/pipedrive/src/index.js +167 -45
  126. package/dist/plugins/plivo/src/index.js +43 -8
  127. package/dist/plugins/postbin/src/index.js +9 -2
  128. package/dist/plugins/posthog/src/index.js +50 -13
  129. package/dist/plugins/profitwell/src/index.js +24 -5
  130. package/dist/plugins/pushbullet/src/index.js +45 -9
  131. package/dist/plugins/pushcut/src/index.js +31 -6
  132. package/dist/plugins/pushover/src/index.js +51 -10
  133. package/dist/plugins/quickbase/src/index.js +66 -13
  134. package/dist/plugins/quickbooks/src/index.js +86 -19
  135. package/dist/plugins/quickchart/src/index.js +35 -7
  136. package/dist/plugins/raindrop/src/index.js +54 -13
  137. package/dist/plugins/reddit/src/index.js +73 -18
  138. package/dist/plugins/rocketchat/src/index.js +47 -9
  139. package/dist/plugins/rundeck/src/index.js +26 -5
  140. package/dist/plugins/salesforce/src/index.js +161 -31
  141. package/dist/plugins/salesmate/src/index.js +75 -16
  142. package/dist/plugins/securityScorecard/src/index.js +73 -15
  143. package/dist/plugins/segment/src/index.js +21 -4
  144. package/dist/plugins/sendgrid/src/index.js +102 -24
  145. package/dist/plugins/sendy/src/index.js +54 -11
  146. package/dist/plugins/sentry/src/index.js +174 -34
  147. package/dist/plugins/servicenow/src/index.js +120 -27
  148. package/dist/plugins/shopify/src/index.js +53 -12
  149. package/dist/plugins/signl4/src/index.js +16 -3
  150. package/dist/plugins/slack/src/index.js +407 -105
  151. package/dist/plugins/sms77/src/index.js +26 -5
  152. package/dist/plugins/splunk/src/index.js +186 -45
  153. package/dist/plugins/spotify/src/index.js +265 -66
  154. package/dist/plugins/stackby/src/index.js +18 -6
  155. package/dist/plugins/storyblok/src/index.js +57 -11
  156. package/dist/plugins/strapi/src/index.js +63 -12
  157. package/dist/plugins/strava/src/index.js +58 -13
  158. package/dist/plugins/stripe/src/index.js +143 -30
  159. package/dist/plugins/supabase/src/index.js +49 -10
  160. package/dist/plugins/syncromsp/src/index.js +245 -67
  161. package/dist/plugins/tapfiliate/src/index.js +57 -14
  162. package/dist/plugins/telegram/src/index.js +202 -39
  163. package/dist/plugins/thehive/src/index.js +271 -66
  164. package/dist/plugins/thehiveProject/src/index.js +457 -89
  165. package/dist/plugins/todoist/src/index.js +326 -77
  166. package/dist/plugins/travisci/src/index.js +35 -8
  167. package/dist/plugins/trello/src/index.js +204 -46
  168. package/dist/plugins/twake/src/index.js +10 -2
  169. package/dist/plugins/twilio/src/index.js +56 -11
  170. package/dist/plugins/twist/src/index.js +241 -48
  171. package/dist/plugins/twitter/src/index.js +128 -30
  172. package/dist/plugins/unleashedSoftware/src/index.js +30 -6
  173. package/dist/plugins/uplead/src/index.js +9 -2
  174. package/dist/plugins/uproc/src/index.js +31 -6
  175. package/dist/plugins/uptimerobot/src/index.js +119 -25
  176. package/dist/plugins/urlscanio/src/index.js +25 -6
  177. package/dist/plugins/vero/src/index.js +68 -13
  178. package/dist/plugins/vonage/src/index.js +32 -6
  179. package/dist/plugins/wekan/src/index.js +297 -52
  180. package/dist/plugins/woocommerce/src/index.js +57 -12
  181. package/dist/plugins/wordpress/src/index.js +94 -18
  182. package/dist/plugins/xero/src/index.js +79 -13
  183. package/dist/plugins/yourls/src/index.js +33 -6
  184. package/dist/plugins/zammad/src/index.js +139 -36
  185. package/dist/plugins/zendesk/src/index.js +201 -48
  186. package/dist/plugins/zoho/src/index.js +88 -21
  187. package/dist/plugins/zoom/src/index.js +41 -7
  188. package/dist/plugins/zulip/src/index.js +101 -20
  189. package/package.json +1 -1
@@ -9,9 +9,15 @@ async function apiRequest(token, method, endpoint, body, qs) {
9
9
  }
10
10
  const opts = {
11
11
  method,
12
- headers: { "Content-Type": "application/json", Authorization: `Bearer ${token}` },
12
+ headers: {
13
+ "Content-Type": "application/json",
14
+ Authorization: `Bearer ${token}`,
15
+ },
13
16
  };
14
- if (body && Object.keys(body).length > 0 && method !== "GET" && method !== "DELETE") {
17
+ if (body &&
18
+ Object.keys(body).length > 0 &&
19
+ method !== "GET" &&
20
+ method !== "DELETE") {
15
21
  opts.body = JSON.stringify(body);
16
22
  }
17
23
  const res = await fetch(url.toString(), opts);
@@ -59,9 +65,21 @@ export default function coda(rl) {
59
65
  inputSchema: {
60
66
  docId: { type: "string", required: true, description: "Doc ID" },
61
67
  tableId: { type: "string", required: true, description: "Table ID" },
62
- cells: { type: "object", required: true, description: "Column-value pairs" },
63
- keyColumns: { type: "array", required: false, description: "Key columns for upsert" },
64
- disableParsing: { type: "boolean", required: false, description: "Disable value parsing" },
68
+ cells: {
69
+ type: "object",
70
+ required: true,
71
+ description: "Column-value pairs",
72
+ },
73
+ keyColumns: {
74
+ type: "array",
75
+ required: false,
76
+ description: "Key columns for upsert",
77
+ },
78
+ disableParsing: {
79
+ type: "boolean",
80
+ required: false,
81
+ description: "Disable value parsing",
82
+ },
65
83
  },
66
84
  async execute(input, ctx) {
67
85
  const { docId, tableId, cells, keyColumns, disableParsing } = input;
@@ -81,11 +99,19 @@ export default function coda(rl) {
81
99
  docId: { type: "string", required: true, description: "Doc ID" },
82
100
  tableId: { type: "string", required: true, description: "Table ID" },
83
101
  rowId: { type: "string", required: true, description: "Row ID or name" },
84
- useColumnNames: { type: "boolean", required: false, description: "Use column names (default: true)" },
85
- valueFormat: { type: "string", required: false, description: "Value format: simple, simpleWithArrays, rich" },
102
+ useColumnNames: {
103
+ type: "boolean",
104
+ required: false,
105
+ description: "Use column names (default: true)",
106
+ },
107
+ valueFormat: {
108
+ type: "string",
109
+ required: false,
110
+ description: "Value format: simple, simpleWithArrays, rich",
111
+ },
86
112
  },
87
113
  async execute(input, ctx) {
88
- const { docId, tableId, rowId, useColumnNames = true, valueFormat } = input;
114
+ const { docId, tableId, rowId, useColumnNames = true, valueFormat, } = input;
89
115
  const qs = { useColumnNames };
90
116
  if (valueFormat)
91
117
  qs.valueFormat = valueFormat;
@@ -100,13 +126,25 @@ export default function coda(rl) {
100
126
  tableId: { type: "string", required: true, description: "Table ID" },
101
127
  query: { type: "string", required: false, description: "Search query" },
102
128
  sortBy: { type: "string", required: false, description: "Sort column" },
103
- useColumnNames: { type: "boolean", required: false, description: "Use column names (default: true)" },
104
- valueFormat: { type: "string", required: false, description: "Value format" },
105
- visibleOnly: { type: "boolean", required: false, description: "Only visible rows" },
129
+ useColumnNames: {
130
+ type: "boolean",
131
+ required: false,
132
+ description: "Use column names (default: true)",
133
+ },
134
+ valueFormat: {
135
+ type: "string",
136
+ required: false,
137
+ description: "Value format",
138
+ },
139
+ visibleOnly: {
140
+ type: "boolean",
141
+ required: false,
142
+ description: "Only visible rows",
143
+ },
106
144
  limit: { type: "number", required: false, description: "Max results" },
107
145
  },
108
146
  async execute(input, ctx) {
109
- const { docId, tableId, query, sortBy, useColumnNames = true, valueFormat, visibleOnly, limit } = (input ?? {});
147
+ const { docId, tableId, query, sortBy, useColumnNames = true, valueFormat, visibleOnly, limit, } = (input ?? {});
110
148
  const qs = { useColumnNames };
111
149
  if (query)
112
150
  qs.query = query;
@@ -141,7 +179,11 @@ export default function coda(rl) {
141
179
  docId: { type: "string", required: true, description: "Doc ID" },
142
180
  tableId: { type: "string", required: true, description: "Table ID" },
143
181
  rowId: { type: "string", required: true, description: "Row ID" },
144
- columnId: { type: "string", required: true, description: "Button column ID" },
182
+ columnId: {
183
+ type: "string",
184
+ required: true,
185
+ description: "Button column ID",
186
+ },
145
187
  },
146
188
  async execute(input, ctx) {
147
189
  const { docId, tableId, rowId, columnId } = input;
@@ -249,12 +291,20 @@ export default function coda(rl) {
249
291
  viewId: { type: "string", required: true, description: "View ID" },
250
292
  query: { type: "string", required: false, description: "Search query" },
251
293
  sortBy: { type: "string", required: false, description: "Sort column" },
252
- useColumnNames: { type: "boolean", required: false, description: "Use column names (default: true)" },
253
- valueFormat: { type: "string", required: false, description: "Value format" },
294
+ useColumnNames: {
295
+ type: "boolean",
296
+ required: false,
297
+ description: "Use column names (default: true)",
298
+ },
299
+ valueFormat: {
300
+ type: "string",
301
+ required: false,
302
+ description: "Value format",
303
+ },
254
304
  limit: { type: "number", required: false, description: "Max results" },
255
305
  },
256
306
  async execute(input, ctx) {
257
- const { docId, viewId, query, sortBy, useColumnNames = true, valueFormat, limit } = (input ?? {});
307
+ const { docId, viewId, query, sortBy, useColumnNames = true, valueFormat, limit, } = (input ?? {});
258
308
  const qs = { useColumnNames };
259
309
  if (query)
260
310
  qs.query = query;
@@ -287,8 +337,16 @@ export default function coda(rl) {
287
337
  docId: { type: "string", required: true, description: "Doc ID" },
288
338
  viewId: { type: "string", required: true, description: "View ID" },
289
339
  rowId: { type: "string", required: true, description: "Row ID" },
290
- cells: { type: "object", required: true, description: "Column-value pairs to update" },
291
- disableParsing: { type: "boolean", required: false, description: "Disable value parsing" },
340
+ cells: {
341
+ type: "object",
342
+ required: true,
343
+ description: "Column-value pairs to update",
344
+ },
345
+ disableParsing: {
346
+ type: "boolean",
347
+ required: false,
348
+ description: "Disable value parsing",
349
+ },
292
350
  },
293
351
  async execute(input, ctx) {
294
352
  const { docId, viewId, rowId, cells, disableParsing } = input;
@@ -305,7 +363,11 @@ export default function coda(rl) {
305
363
  docId: { type: "string", required: true, description: "Doc ID" },
306
364
  viewId: { type: "string", required: true, description: "View ID" },
307
365
  rowId: { type: "string", required: true, description: "Row ID" },
308
- columnId: { type: "string", required: true, description: "Button column ID" },
366
+ columnId: {
367
+ type: "string",
368
+ required: true,
369
+ description: "Button column ID",
370
+ },
309
371
  },
310
372
  async execute(input, ctx) {
311
373
  const { docId, viewId, rowId, columnId } = input;
@@ -33,16 +33,44 @@ export default function coingecko(rl) {
33
33
  rl.registerAction("coin.get", {
34
34
  description: "Get detailed coin data by ID or contract address",
35
35
  inputSchema: {
36
- coinId: { type: "string", required: false, description: "Coin ID (e.g. bitcoin)" },
37
- platformId: { type: "string", required: false, description: "Platform ID for contract lookup" },
38
- contractAddress: { type: "string", required: false, description: "Contract address" },
39
- communityData: { type: "boolean", required: false, description: "Include community data" },
40
- developerData: { type: "boolean", required: false, description: "Include developer data" },
41
- marketData: { type: "boolean", required: false, description: "Include market data" },
42
- tickers: { type: "boolean", required: false, description: "Include tickers" },
36
+ coinId: {
37
+ type: "string",
38
+ required: false,
39
+ description: "Coin ID (e.g. bitcoin)",
40
+ },
41
+ platformId: {
42
+ type: "string",
43
+ required: false,
44
+ description: "Platform ID for contract lookup",
45
+ },
46
+ contractAddress: {
47
+ type: "string",
48
+ required: false,
49
+ description: "Contract address",
50
+ },
51
+ communityData: {
52
+ type: "boolean",
53
+ required: false,
54
+ description: "Include community data",
55
+ },
56
+ developerData: {
57
+ type: "boolean",
58
+ required: false,
59
+ description: "Include developer data",
60
+ },
61
+ marketData: {
62
+ type: "boolean",
63
+ required: false,
64
+ description: "Include market data",
65
+ },
66
+ tickers: {
67
+ type: "boolean",
68
+ required: false,
69
+ description: "Include tickers",
70
+ },
43
71
  },
44
72
  async execute(input, ctx) {
45
- const { coinId, platformId, contractAddress, communityData, developerData, marketData, tickers } = (input ?? {});
73
+ const { coinId, platformId, contractAddress, communityData, developerData, marketData, tickers, } = (input ?? {});
46
74
  const qs = {
47
75
  community_data: communityData ?? false,
48
76
  developer_data: developerData ?? false,
@@ -73,12 +101,32 @@ export default function coingecko(rl) {
73
101
  rl.registerAction("coin.market", {
74
102
  description: "Get coin market data (price, mcap, volume) for multiple coins",
75
103
  inputSchema: {
76
- vsCurrency: { type: "string", required: true, description: "Quote currency (e.g. usd)" },
77
- ids: { type: "string", required: false, description: "Comma-separated coin IDs" },
78
- category: { type: "string", required: false, description: "Category filter" },
104
+ vsCurrency: {
105
+ type: "string",
106
+ required: true,
107
+ description: "Quote currency (e.g. usd)",
108
+ },
109
+ ids: {
110
+ type: "string",
111
+ required: false,
112
+ description: "Comma-separated coin IDs",
113
+ },
114
+ category: {
115
+ type: "string",
116
+ required: false,
117
+ description: "Category filter",
118
+ },
79
119
  order: { type: "string", required: false, description: "Sort order" },
80
- priceChangePercentage: { type: "string", required: false, description: "Comma-separated periods (1h,24h,7d,14d,30d,200d,1y)" },
81
- limit: { type: "number", required: false, description: "Max results (default: 100)" },
120
+ priceChangePercentage: {
121
+ type: "string",
122
+ required: false,
123
+ description: "Comma-separated periods (1h,24h,7d,14d,30d,200d,1y)",
124
+ },
125
+ limit: {
126
+ type: "number",
127
+ required: false,
128
+ description: "Max results (default: 100)",
129
+ },
82
130
  },
83
131
  async execute(input, ctx) {
84
132
  const { vsCurrency, ids, category, order, priceChangePercentage, limit } = (input ?? {});
@@ -99,14 +147,34 @@ export default function coingecko(rl) {
99
147
  rl.registerAction("coin.price", {
100
148
  description: "Get simple price for coins",
101
149
  inputSchema: {
102
- ids: { type: "string", required: true, description: "Comma-separated coin IDs" },
103
- vsCurrencies: { type: "string", required: true, description: "Comma-separated quote currencies" },
104
- includeMarketCap: { type: "boolean", required: false, description: "Include market cap" },
105
- include24hrVol: { type: "boolean", required: false, description: "Include 24h volume" },
106
- include24hrChange: { type: "boolean", required: false, description: "Include 24h change" },
150
+ ids: {
151
+ type: "string",
152
+ required: true,
153
+ description: "Comma-separated coin IDs",
154
+ },
155
+ vsCurrencies: {
156
+ type: "string",
157
+ required: true,
158
+ description: "Comma-separated quote currencies",
159
+ },
160
+ includeMarketCap: {
161
+ type: "boolean",
162
+ required: false,
163
+ description: "Include market cap",
164
+ },
165
+ include24hrVol: {
166
+ type: "boolean",
167
+ required: false,
168
+ description: "Include 24h volume",
169
+ },
170
+ include24hrChange: {
171
+ type: "boolean",
172
+ required: false,
173
+ description: "Include 24h change",
174
+ },
107
175
  },
108
176
  async execute(input, ctx) {
109
- const { ids, vsCurrencies, includeMarketCap, include24hrVol, include24hrChange } = (input ?? {});
177
+ const { ids, vsCurrencies, includeMarketCap, include24hrVol, include24hrChange, } = (input ?? {});
110
178
  const qs = {
111
179
  ids,
112
180
  vs_currencies: vsCurrencies,
@@ -123,9 +191,21 @@ export default function coingecko(rl) {
123
191
  rl.registerAction("coin.tokenPrice", {
124
192
  description: "Get token price by contract address",
125
193
  inputSchema: {
126
- platformId: { type: "string", required: true, description: "Platform ID (e.g. ethereum)" },
127
- contractAddresses: { type: "string", required: true, description: "Comma-separated contract addresses" },
128
- vsCurrencies: { type: "string", required: true, description: "Comma-separated quote currencies" },
194
+ platformId: {
195
+ type: "string",
196
+ required: true,
197
+ description: "Platform ID (e.g. ethereum)",
198
+ },
199
+ contractAddresses: {
200
+ type: "string",
201
+ required: true,
202
+ description: "Comma-separated contract addresses",
203
+ },
204
+ vsCurrencies: {
205
+ type: "string",
206
+ required: true,
207
+ description: "Comma-separated quote currencies",
208
+ },
129
209
  },
130
210
  async execute(input, ctx) {
131
211
  const { platformId, contractAddresses, vsCurrencies } = input;
@@ -139,7 +219,11 @@ export default function coingecko(rl) {
139
219
  description: "Get tickers for a coin",
140
220
  inputSchema: {
141
221
  coinId: { type: "string", required: true, description: "Coin ID" },
142
- exchangeIds: { type: "string", required: false, description: "Comma-separated exchange IDs" },
222
+ exchangeIds: {
223
+ type: "string",
224
+ required: false,
225
+ description: "Comma-separated exchange IDs",
226
+ },
143
227
  limit: { type: "number", required: false, description: "Max results" },
144
228
  },
145
229
  async execute(input, ctx) {
@@ -158,8 +242,16 @@ export default function coingecko(rl) {
158
242
  description: "Get historical data for a coin on a specific date",
159
243
  inputSchema: {
160
244
  coinId: { type: "string", required: true, description: "Coin ID" },
161
- date: { type: "string", required: true, description: "Date (DD-MM-YYYY format)" },
162
- localization: { type: "boolean", required: false, description: "Include localized languages" },
245
+ date: {
246
+ type: "string",
247
+ required: true,
248
+ description: "Date (DD-MM-YYYY format)",
249
+ },
250
+ localization: {
251
+ type: "boolean",
252
+ required: false,
253
+ description: "Include localized languages",
254
+ },
163
255
  },
164
256
  async execute(input, ctx) {
165
257
  const { coinId, date, localization } = input;
@@ -173,10 +265,26 @@ export default function coingecko(rl) {
173
265
  description: "Get price, market cap, and volume chart data",
174
266
  inputSchema: {
175
267
  coinId: { type: "string", required: false, description: "Coin ID" },
176
- platformId: { type: "string", required: false, description: "Platform ID (for contract)" },
177
- contractAddress: { type: "string", required: false, description: "Contract address" },
178
- vsCurrency: { type: "string", required: true, description: "Quote currency" },
179
- days: { type: "string", required: true, description: "Number of days (1, 7, 14, 30, 90, 180, 365, max)" },
268
+ platformId: {
269
+ type: "string",
270
+ required: false,
271
+ description: "Platform ID (for contract)",
272
+ },
273
+ contractAddress: {
274
+ type: "string",
275
+ required: false,
276
+ description: "Contract address",
277
+ },
278
+ vsCurrency: {
279
+ type: "string",
280
+ required: true,
281
+ description: "Quote currency",
282
+ },
283
+ days: {
284
+ type: "string",
285
+ required: true,
286
+ description: "Number of days (1, 7, 14, 30, 90, 180, 365, max)",
287
+ },
180
288
  },
181
289
  async execute(input, ctx) {
182
290
  const { coinId, platformId, contractAddress, vsCurrency, days } = input;
@@ -202,8 +310,16 @@ export default function coingecko(rl) {
202
310
  description: "Get OHLC candlestick data",
203
311
  inputSchema: {
204
312
  coinId: { type: "string", required: true, description: "Coin ID" },
205
- vsCurrency: { type: "string", required: true, description: "Quote currency" },
206
- days: { type: "string", required: true, description: "Number of days (1, 7, 14, 30, 90, 180, 365, max)" },
313
+ vsCurrency: {
314
+ type: "string",
315
+ required: true,
316
+ description: "Quote currency",
317
+ },
318
+ days: {
319
+ type: "string",
320
+ required: true,
321
+ description: "Number of days (1, 7, 14, 30, 90, 180, 365, max)",
322
+ },
207
323
  },
208
324
  async execute(input, ctx) {
209
325
  const { coinId, vsCurrency, days } = input;
@@ -224,8 +340,16 @@ export default function coingecko(rl) {
224
340
  rl.registerAction("event.list", {
225
341
  description: "List crypto events",
226
342
  inputSchema: {
227
- countryCode: { type: "string", required: false, description: "Country code filter" },
228
- type: { type: "string", required: false, description: "Event type filter" },
343
+ countryCode: {
344
+ type: "string",
345
+ required: false,
346
+ description: "Country code filter",
347
+ },
348
+ type: {
349
+ type: "string",
350
+ required: false,
351
+ description: "Event type filter",
352
+ },
229
353
  limit: { type: "number", required: false, description: "Max results" },
230
354
  },
231
355
  async execute(input, ctx) {
@@ -7,7 +7,9 @@ async function apiRequest(host, token, endpoint, qs) {
7
7
  url.searchParams.set(k, String(v));
8
8
  }
9
9
  }
10
- const res = await fetch(url.toString(), { headers: { Accept: "application/json" } });
10
+ const res = await fetch(url.toString(), {
11
+ headers: { Accept: "application/json" },
12
+ });
11
13
  if (!res.ok)
12
14
  throw new Error(`Contentful API error ${res.status}: ${await res.text()}`);
13
15
  return res.json();
@@ -17,7 +19,11 @@ async function paginateAll(host, token, endpoint, qs, limit) {
17
19
  let skip = 0;
18
20
  const size = 100;
19
21
  while (true) {
20
- const data = (await apiRequest(host, token, endpoint, { ...qs, skip, limit: size }));
22
+ const data = (await apiRequest(host, token, endpoint, {
23
+ ...qs,
24
+ skip,
25
+ limit: size,
26
+ }));
21
27
  const items = data.items ?? [];
22
28
  results.push(...items);
23
29
  if (limit && results.length >= limit)
@@ -33,7 +39,9 @@ function getConn(ctx) {
33
39
  const isPreview = cfg.source === "preview";
34
40
  return {
35
41
  host: isPreview ? "preview.contentful.com" : "cdn.contentful.com",
36
- token: (isPreview ? cfg.previewAccessToken : cfg.deliveryAccessToken),
42
+ token: (isPreview
43
+ ? cfg.previewAccessToken
44
+ : cfg.deliveryAccessToken),
37
45
  spaceId: cfg.spaceId,
38
46
  };
39
47
  }
@@ -41,10 +49,30 @@ export default function contentful(rl) {
41
49
  rl.setName("contentful");
42
50
  rl.setVersion("0.1.0");
43
51
  rl.setConnectionSchema({
44
- spaceId: { type: "string", required: true, description: "Contentful Space ID", env: "CONTENTFUL_SPACE_ID" },
45
- deliveryAccessToken: { type: "string", required: true, description: "Content Delivery API access token", env: "CONTENTFUL_DELIVERY_TOKEN" },
46
- previewAccessToken: { type: "string", required: false, description: "Content Preview API access token", env: "CONTENTFUL_PREVIEW_TOKEN" },
47
- source: { type: "string", required: false, description: "'delivery' (default) or 'preview'", default: "delivery" },
52
+ spaceId: {
53
+ type: "string",
54
+ required: true,
55
+ description: "Contentful Space ID",
56
+ env: "CONTENTFUL_SPACE_ID",
57
+ },
58
+ deliveryAccessToken: {
59
+ type: "string",
60
+ required: true,
61
+ description: "Content Delivery API access token",
62
+ env: "CONTENTFUL_DELIVERY_TOKEN",
63
+ },
64
+ previewAccessToken: {
65
+ type: "string",
66
+ required: false,
67
+ description: "Content Preview API access token",
68
+ env: "CONTENTFUL_PREVIEW_TOKEN",
69
+ },
70
+ source: {
71
+ type: "string",
72
+ required: false,
73
+ description: "'delivery' (default) or 'preview'",
74
+ default: "delivery",
75
+ },
48
76
  });
49
77
  // ── Space ───────────────────────────────────────────
50
78
  rl.registerAction("space.get", {
@@ -58,8 +86,16 @@ export default function contentful(rl) {
58
86
  rl.registerAction("contentType.get", {
59
87
  description: "Get a content type",
60
88
  inputSchema: {
61
- environmentId: { type: "string", required: true, description: "Environment ID (e.g. master)" },
62
- contentTypeId: { type: "string", required: true, description: "Content type ID" },
89
+ environmentId: {
90
+ type: "string",
91
+ required: true,
92
+ description: "Environment ID (e.g. master)",
93
+ },
94
+ contentTypeId: {
95
+ type: "string",
96
+ required: true,
97
+ description: "Content type ID",
98
+ },
63
99
  },
64
100
  async execute(input, ctx) {
65
101
  const { environmentId, contentTypeId } = input;
@@ -71,7 +107,11 @@ export default function contentful(rl) {
71
107
  rl.registerAction("entry.get", {
72
108
  description: "Get an entry by ID",
73
109
  inputSchema: {
74
- environmentId: { type: "string", required: true, description: "Environment ID" },
110
+ environmentId: {
111
+ type: "string",
112
+ required: true,
113
+ description: "Environment ID",
114
+ },
75
115
  entryId: { type: "string", required: true, description: "Entry ID" },
76
116
  },
77
117
  async execute(input, ctx) {
@@ -83,10 +123,26 @@ export default function contentful(rl) {
83
123
  rl.registerAction("entry.list", {
84
124
  description: "List entries",
85
125
  inputSchema: {
86
- environmentId: { type: "string", required: true, description: "Environment ID" },
87
- contentType: { type: "string", required: false, description: "Filter by content type ID" },
88
- query: { type: "string", required: false, description: "Full-text search query" },
89
- select: { type: "string", required: false, description: "Comma-separated fields to select" },
126
+ environmentId: {
127
+ type: "string",
128
+ required: true,
129
+ description: "Environment ID",
130
+ },
131
+ contentType: {
132
+ type: "string",
133
+ required: false,
134
+ description: "Filter by content type ID",
135
+ },
136
+ query: {
137
+ type: "string",
138
+ required: false,
139
+ description: "Full-text search query",
140
+ },
141
+ select: {
142
+ type: "string",
143
+ required: false,
144
+ description: "Comma-separated fields to select",
145
+ },
90
146
  order: { type: "string", required: false, description: "Order by field" },
91
147
  limit: { type: "number", required: false, description: "Max results" },
92
148
  },
@@ -109,7 +165,11 @@ export default function contentful(rl) {
109
165
  rl.registerAction("asset.get", {
110
166
  description: "Get an asset by ID",
111
167
  inputSchema: {
112
- environmentId: { type: "string", required: true, description: "Environment ID" },
168
+ environmentId: {
169
+ type: "string",
170
+ required: true,
171
+ description: "Environment ID",
172
+ },
113
173
  assetId: { type: "string", required: true, description: "Asset ID" },
114
174
  },
115
175
  async execute(input, ctx) {
@@ -121,7 +181,11 @@ export default function contentful(rl) {
121
181
  rl.registerAction("asset.list", {
122
182
  description: "List assets",
123
183
  inputSchema: {
124
- environmentId: { type: "string", required: true, description: "Environment ID" },
184
+ environmentId: {
185
+ type: "string",
186
+ required: true,
187
+ description: "Environment ID",
188
+ },
125
189
  limit: { type: "number", required: false, description: "Max results" },
126
190
  },
127
191
  async execute(input, ctx) {
@@ -134,7 +198,11 @@ export default function contentful(rl) {
134
198
  rl.registerAction("locale.list", {
135
199
  description: "List locales",
136
200
  inputSchema: {
137
- environmentId: { type: "string", required: true, description: "Environment ID" },
201
+ environmentId: {
202
+ type: "string",
203
+ required: true,
204
+ description: "Environment ID",
205
+ },
138
206
  limit: { type: "number", required: false, description: "Max results" },
139
207
  },
140
208
  async execute(input, ctx) {