runline 0.11.6 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (251) hide show
  1. package/dist/commands/actions.js +3 -1
  2. package/dist/core/engine.js +3 -0
  3. package/dist/index.d.ts +1 -1
  4. package/dist/plugin/api.d.ts +2 -1
  5. package/dist/plugin/types.d.ts +2 -0
  6. package/dist/plugins/actionNetwork/src/index.js +23 -0
  7. package/dist/plugins/activeCampaign/src/index.js +48 -0
  8. package/dist/plugins/adalo/src/index.js +5 -0
  9. package/dist/plugins/affinity/src/index.js +16 -0
  10. package/dist/plugins/agileCrm/src/index.js +15 -0
  11. package/dist/plugins/airtable/src/index.js +10 -0
  12. package/dist/plugins/airtop/src/index.js +24 -0
  13. package/dist/plugins/apiTemplateIo/src/index.js +4 -0
  14. package/dist/plugins/asana/src/index.js +22 -0
  15. package/dist/plugins/autopilot/src/index.js +11 -0
  16. package/dist/plugins/bambooHr/src/index.js +11 -0
  17. package/dist/plugins/bannerbear/src/index.js +4 -0
  18. package/dist/plugins/baserow/src/index.js +8 -0
  19. package/dist/plugins/beeminder/src/index.js +18 -0
  20. package/dist/plugins/bitly/src/index.js +3 -0
  21. package/dist/plugins/bitwarden/src/index.js +19 -0
  22. package/dist/plugins/box/src/index.js +11 -0
  23. package/dist/plugins/brandfetch/src/index.js +5 -0
  24. package/dist/plugins/brevo/src/index.js +15 -0
  25. package/dist/plugins/bubble/src/index.js +5 -0
  26. package/dist/plugins/chargebee/src/index.js +5 -0
  27. package/dist/plugins/circleci/src/index.js +3 -0
  28. package/dist/plugins/ciscoWebex/src/index.js +10 -0
  29. package/dist/plugins/clearbit/src/index.js +3 -0
  30. package/dist/plugins/clickup/src/index.js +61 -0
  31. package/dist/plugins/clockify/src/index.js +25 -0
  32. package/dist/plugins/cloudflare/src/index.js +4 -0
  33. package/dist/plugins/cockpit/src/index.js +5 -0
  34. package/dist/plugins/coda/src/index.js +18 -0
  35. package/dist/plugins/coingecko/src/index.js +10 -0
  36. package/dist/plugins/contentful/src/index.js +7 -0
  37. package/dist/plugins/convertkit/src/index.js +16 -0
  38. package/dist/plugins/copper/src/index.js +7 -0
  39. package/dist/plugins/cortex/src/index.js +4 -0
  40. package/dist/plugins/currents/src/index.js +22 -0
  41. package/dist/plugins/customerIo/src/index.js +9 -0
  42. package/dist/plugins/databricks/src/index.js +34 -0
  43. package/dist/plugins/deepl/src/index.js +2 -0
  44. package/dist/plugins/demio/src/index.js +4 -0
  45. package/dist/plugins/dhl/src/index.js +1 -0
  46. package/dist/plugins/discord/src/index.js +13 -0
  47. package/dist/plugins/discourse/src/index.js +16 -0
  48. package/dist/plugins/disqus/src/index.js +4 -0
  49. package/dist/plugins/docker/src/index.js +5 -0
  50. package/dist/plugins/drift/src/index.js +5 -0
  51. package/dist/plugins/dropbox/src/index.js +9 -0
  52. package/dist/plugins/dropcontact/src/index.js +2 -0
  53. package/dist/plugins/egoi/src/index.js +4 -0
  54. package/dist/plugins/elasticsearch/src/index.js +9 -0
  55. package/dist/plugins/emelia/src/index.js +9 -0
  56. package/dist/plugins/erpnext/src/index.js +5 -0
  57. package/dist/plugins/facebookGraph/src/index.js +1 -0
  58. package/dist/plugins/freshdesk/src/index.js +10 -0
  59. package/dist/plugins/freshservice/src/index.js +7 -0
  60. package/dist/plugins/freshworksCrm/src/index.js +7 -0
  61. package/dist/plugins/getresponse/src/index.js +5 -0
  62. package/dist/plugins/ghost/src/index.js +5 -0
  63. package/dist/plugins/github/src/index.js +37 -0
  64. package/dist/plugins/gitlab/src/index.js +17 -0
  65. package/dist/plugins/gmail/src/index.js +32 -0
  66. package/dist/plugins/gong/src/index.js +4 -0
  67. package/dist/plugins/googleAppsScript/src/index.js +10 -0
  68. package/dist/plugins/googleCalendar/src/index.js +22 -0
  69. package/dist/plugins/googleContacts/src/index.js +10 -0
  70. package/dist/plugins/googleDocs/src/documents.js +4 -0
  71. package/dist/plugins/googleDocs/src/formatting.js +2 -0
  72. package/dist/plugins/googleDocs/src/images.js +2 -0
  73. package/dist/plugins/googleDocs/src/structure.js +13 -0
  74. package/dist/plugins/googleDocs/src/tables.js +11 -0
  75. package/dist/plugins/googleDocs/src/tabs.js +3 -0
  76. package/dist/plugins/googleDocs/src/text.js +9 -0
  77. package/dist/plugins/googleDrive/src/index.js +47 -0
  78. package/dist/plugins/googleImage/src/index.js +1 -0
  79. package/dist/plugins/googleSheets/src/index.js +23 -0
  80. package/dist/plugins/googleSlides/src/index.js +7 -0
  81. package/dist/plugins/googleTasks/src/index.js +12 -0
  82. package/dist/plugins/gotify/src/index.js +3 -0
  83. package/dist/plugins/gotowebinar/src/index.js +20 -0
  84. package/dist/plugins/grafana/src/index.js +17 -0
  85. package/dist/plugins/graphql/src/index.js +2 -0
  86. package/dist/plugins/grist/src/index.js +4 -0
  87. package/dist/plugins/hackernews/src/index.js +6 -0
  88. package/dist/plugins/halopsa/src/index.js +5 -0
  89. package/dist/plugins/harvest/src/index.js +14 -0
  90. package/dist/plugins/helpscout/src/index.js +13 -0
  91. package/dist/plugins/highlevel/src/index.js +17 -0
  92. package/dist/plugins/homeAssistant/src/index.js +13 -0
  93. package/dist/plugins/hubspot/src/index.js +14 -0
  94. package/dist/plugins/humanticAi/src/index.js +3 -0
  95. package/dist/plugins/hunter/src/index.js +3 -0
  96. package/dist/plugins/intercom/src/index.js +10 -0
  97. package/dist/plugins/iterable/src/index.js +6 -0
  98. package/dist/plugins/jenkins/src/index.js +11 -0
  99. package/dist/plugins/jira/src/index.js +16 -0
  100. package/dist/plugins/keap/src/index.js +28 -0
  101. package/dist/plugins/kobotoolbox/src/index.js +17 -0
  102. package/dist/plugins/lemlist/src/index.js +15 -0
  103. package/dist/plugins/linear/src/attachments.js +6 -0
  104. package/dist/plugins/linear/src/comments.js +5 -0
  105. package/dist/plugins/linear/src/cycles.js +2 -0
  106. package/dist/plugins/linear/src/initiatives.js +5 -0
  107. package/dist/plugins/linear/src/issues.js +14 -0
  108. package/dist/plugins/linear/src/labels.js +5 -0
  109. package/dist/plugins/linear/src/organization.js +1 -0
  110. package/dist/plugins/linear/src/projects.js +11 -0
  111. package/dist/plugins/linear/src/shared.js +2 -0
  112. package/dist/plugins/linear/src/states.js +2 -0
  113. package/dist/plugins/linear/src/teams.js +3 -0
  114. package/dist/plugins/linear/src/users.js +2 -0
  115. package/dist/plugins/linear/src/views.js +4 -0
  116. package/dist/plugins/linear/src/webhooks.js +4 -0
  117. package/dist/plugins/lingvanex/src/index.js +1 -0
  118. package/dist/plugins/linkedin/src/index.js +1 -0
  119. package/dist/plugins/lonescale/src/index.js +4 -0
  120. package/dist/plugins/magento/src/index.js +15 -0
  121. package/dist/plugins/mailcheck/src/index.js +1 -0
  122. package/dist/plugins/mailchimp/src/index.js +14 -0
  123. package/dist/plugins/mailerlite/src/index.js +4 -0
  124. package/dist/plugins/mailgun/src/index.js +1 -0
  125. package/dist/plugins/mailjet/src/index.js +3 -0
  126. package/dist/plugins/mandrill/src/index.js +2 -0
  127. package/dist/plugins/marketstack/src/index.js +3 -0
  128. package/dist/plugins/matrix/src/index.js +10 -0
  129. package/dist/plugins/mattermost/src/index.js +19 -0
  130. package/dist/plugins/mautic/src/index.js +20 -0
  131. package/dist/plugins/medium/src/index.js +3 -0
  132. package/dist/plugins/messagebird/src/index.js +2 -0
  133. package/dist/plugins/metabase/src/index.js +10 -0
  134. package/dist/plugins/microsoftCalendar/src/index.js +2 -0
  135. package/dist/plugins/microsoftFiles/src/index.js +5 -0
  136. package/dist/plugins/microsoftMail/src/index.js +4 -0
  137. package/dist/plugins/misp/src/index.js +44 -0
  138. package/dist/plugins/mocean/src/index.js +2 -0
  139. package/dist/plugins/monday/src/index.js +18 -0
  140. package/dist/plugins/monicaCrm/src/index.js +5 -0
  141. package/dist/plugins/msg91/src/index.js +1 -0
  142. package/dist/plugins/nasa/src/index.js +7 -0
  143. package/dist/plugins/netlify/src/index.js +7 -0
  144. package/dist/plugins/netscalerAdc/src/index.js +3 -0
  145. package/dist/plugins/nextcloud/src/index.js +13 -0
  146. package/dist/plugins/nocodb/src/index.js +5 -0
  147. package/dist/plugins/node/src/index.js +38 -0
  148. package/dist/plugins/notion/src/index.js +14 -0
  149. package/dist/plugins/npm/src/index.js +5 -0
  150. package/dist/plugins/odoo/src/index.js +6 -0
  151. package/dist/plugins/okta/src/index.js +5 -0
  152. package/dist/plugins/oneSimpleApi/src/index.js +10 -0
  153. package/dist/plugins/onfleet/src/index.js +24 -0
  154. package/dist/plugins/openThesaurus/src/index.js +1 -0
  155. package/dist/plugins/openai/src/index.js +1 -0
  156. package/dist/plugins/openweathermap/src/index.js +2 -0
  157. package/dist/plugins/oura/src/index.js +2 -0
  158. package/dist/plugins/paddle/src/index.js +9 -0
  159. package/dist/plugins/pagerduty/src/index.js +9 -0
  160. package/dist/plugins/parallel/src/index.js +1 -0
  161. package/dist/plugins/paypal/src/index.js +4 -0
  162. package/dist/plugins/peekalink/src/index.js +2 -0
  163. package/dist/plugins/phantombuster/src/index.js +5 -0
  164. package/dist/plugins/philipsHue/src/index.js +4 -0
  165. package/dist/plugins/pipedrive/src/index.js +14 -0
  166. package/dist/plugins/plivo/src/index.js +3 -0
  167. package/dist/plugins/postbin/src/index.js +6 -0
  168. package/dist/plugins/posthog/src/index.js +5 -0
  169. package/dist/plugins/profitwell/src/index.js +2 -0
  170. package/dist/plugins/pushbullet/src/index.js +4 -0
  171. package/dist/plugins/pushcut/src/index.js +1 -0
  172. package/dist/plugins/pushover/src/index.js +1 -0
  173. package/dist/plugins/quickbase/src/index.js +8 -0
  174. package/dist/plugins/quickbooks/src/index.js +5 -0
  175. package/dist/plugins/quickchart/src/index.js +1 -0
  176. package/dist/plugins/raindrop/src/index.js +13 -0
  177. package/dist/plugins/recraft/src/index.js +1 -0
  178. package/dist/plugins/reddit/src/index.js +10 -0
  179. package/dist/plugins/replicate/src/index.js +1 -0
  180. package/dist/plugins/rocketchat/src/index.js +1 -0
  181. package/dist/plugins/rundeck/src/index.js +2 -0
  182. package/dist/plugins/salesforce/src/metadata.js +4 -0
  183. package/dist/plugins/salesforce/src/query.js +5 -0
  184. package/dist/plugins/salesforce/src/sobjects.js +12 -0
  185. package/dist/plugins/salesmate/src/index.js +5 -0
  186. package/dist/plugins/securityScorecard/src/index.js +14 -0
  187. package/dist/plugins/segment/src/index.js +4 -0
  188. package/dist/plugins/sendgrid/src/index.js +10 -0
  189. package/dist/plugins/sendy/src/index.js +6 -0
  190. package/dist/plugins/sentry/src/index.js +24 -0
  191. package/dist/plugins/servicenow/src/index.js +10 -0
  192. package/dist/plugins/shiftLabs/src/issues.js +4 -0
  193. package/dist/plugins/shiftLabs/src/pages.js +10 -0
  194. package/dist/plugins/shopify/src/index.js +10 -0
  195. package/dist/plugins/signl4/src/index.js +2 -0
  196. package/dist/plugins/slack/src/index.js +38 -0
  197. package/dist/plugins/sms77/src/index.js +2 -0
  198. package/dist/plugins/splunk/src/index.js +16 -0
  199. package/dist/plugins/spotify/src/index.js +30 -0
  200. package/dist/plugins/stackby/src/index.js +4 -0
  201. package/dist/plugins/steel/src/browser.js +7 -0
  202. package/dist/plugins/steel/src/captchas.js +3 -0
  203. package/dist/plugins/steel/src/credentials.js +4 -0
  204. package/dist/plugins/steel/src/extensions.js +5 -0
  205. package/dist/plugins/steel/src/files.js +10 -0
  206. package/dist/plugins/steel/src/profiles.js +4 -0
  207. package/dist/plugins/steel/src/sessions.js +11 -0
  208. package/dist/plugins/storyblok/src/index.js +7 -0
  209. package/dist/plugins/strapi/src/index.js +5 -0
  210. package/dist/plugins/strava/src/index.js +6 -0
  211. package/dist/plugins/stripe/src/index.js +20 -0
  212. package/dist/plugins/supabase/src/index.js +5 -0
  213. package/dist/plugins/syncromsp/src/index.js +20 -0
  214. package/dist/plugins/tapfiliate/src/index.js +11 -0
  215. package/dist/plugins/telegram/src/index.js +21 -0
  216. package/dist/plugins/thehive/src/index.js +23 -0
  217. package/dist/plugins/thehiveProject/src/index.js +31 -0
  218. package/dist/plugins/todoist/src/index.js +31 -0
  219. package/dist/plugins/together/src/index.js +1 -0
  220. package/dist/plugins/travisci/src/index.js +5 -0
  221. package/dist/plugins/trello/src/index.js +37 -0
  222. package/dist/plugins/twake/src/index.js +1 -0
  223. package/dist/plugins/twilio/src/index.js +2 -0
  224. package/dist/plugins/twist/src/index.js +22 -0
  225. package/dist/plugins/twitter/src/index.js +8 -0
  226. package/dist/plugins/unleashedSoftware/src/index.js +3 -0
  227. package/dist/plugins/uplead/src/index.js +2 -0
  228. package/dist/plugins/uproc/src/index.js +1 -0
  229. package/dist/plugins/uptimerobot/src/index.js +22 -0
  230. package/dist/plugins/urlscanio/src/index.js +3 -0
  231. package/dist/plugins/vercel/src/account.js +1 -0
  232. package/dist/plugins/vercel/src/deployments.js +5 -0
  233. package/dist/plugins/vercel/src/env.js +4 -0
  234. package/dist/plugins/vercel/src/projects.js +2 -0
  235. package/dist/plugins/vercel/src/shared.js +1 -0
  236. package/dist/plugins/vero/src/index.js +6 -0
  237. package/dist/plugins/vonage/src/index.js +1 -0
  238. package/dist/plugins/wekan/src/index.js +24 -0
  239. package/dist/plugins/woocommerce/src/index.js +5 -0
  240. package/dist/plugins/wordpress/src/index.js +10 -0
  241. package/dist/plugins/xai/src/index.js +1 -0
  242. package/dist/plugins/xero/src/index.js +8 -0
  243. package/dist/plugins/yourls/src/index.js +3 -0
  244. package/dist/plugins/zammad/src/index.js +12 -0
  245. package/dist/plugins/zendesk/src/index.js +18 -0
  246. package/dist/plugins/zoho/src/index.js +6 -0
  247. package/dist/plugins/zoom/src/index.js +5 -0
  248. package/dist/plugins/zulip/src/index.js +15 -0
  249. package/dist/sdk.d.ts +2 -1
  250. package/dist/sdk.js +1 -0
  251. package/package.json +1 -1
@@ -60,6 +60,7 @@ function registerCrud(rl, resource, endpoint, opts) {
60
60
  const cap = resource.charAt(0).toUpperCase() + resource.slice(1);
61
61
  const updateMethod = opts?.updateMethod ?? "PATCH";
62
62
  rl.registerAction(`${resource}.create`, {
63
+ access: "write",
63
64
  description: `Create a ${resource}`,
64
65
  inputSchema: {
65
66
  data: {
@@ -75,6 +76,7 @@ function registerCrud(rl, resource, endpoint, opts) {
75
76
  },
76
77
  });
77
78
  rl.registerAction(`${resource}.get`, {
79
+ access: "read",
78
80
  description: `Get a ${resource}`,
79
81
  inputSchema: { id: { type: "number", required: true } },
80
82
  async execute(input, ctx) {
@@ -83,6 +85,7 @@ function registerCrud(rl, resource, endpoint, opts) {
83
85
  },
84
86
  });
85
87
  rl.registerAction(`${resource}.list`, {
88
+ access: "read",
86
89
  description: `List ${resource}s`,
87
90
  inputSchema: {
88
91
  limit: { type: "number", required: false },
@@ -102,6 +105,7 @@ function registerCrud(rl, resource, endpoint, opts) {
102
105
  },
103
106
  });
104
107
  rl.registerAction(`${resource}.update`, {
108
+ access: "write",
105
109
  description: `Update a ${resource}`,
106
110
  inputSchema: {
107
111
  id: { type: "number", required: true },
@@ -115,6 +119,7 @@ function registerCrud(rl, resource, endpoint, opts) {
115
119
  },
116
120
  });
117
121
  rl.registerAction(`${resource}.delete`, {
122
+ access: "write",
118
123
  description: `Delete a ${resource}`,
119
124
  inputSchema: { id: { type: "number", required: true } },
120
125
  async execute(input, ctx) {
@@ -125,6 +130,7 @@ function registerCrud(rl, resource, endpoint, opts) {
125
130
  });
126
131
  if (opts?.hasSearch) {
127
132
  rl.registerAction(`${resource}.search`, {
133
+ access: "read",
128
134
  description: `Search ${resource}s`,
129
135
  inputSchema: {
130
136
  term: { type: "string", required: true },
@@ -156,6 +162,7 @@ function registerCrud(rl, resource, endpoint, opts) {
156
162
  }
157
163
  if (opts?.hasDuplicate) {
158
164
  rl.registerAction(`${resource}.duplicate`, {
165
+ access: "write",
159
166
  description: `Duplicate a ${resource}`,
160
167
  inputSchema: { id: { type: "number", required: true } },
161
168
  async execute(input, ctx) {
@@ -182,6 +189,7 @@ export default function pipedrive(rl) {
182
189
  registerCrud(rl, "deal", "/deals", { hasSearch: true, hasDuplicate: true });
183
190
  // ── Deal Product ────────────────────────────────────
184
191
  rl.registerAction("dealProduct.add", {
192
+ access: "write",
185
193
  description: "Add a product to a deal",
186
194
  inputSchema: {
187
195
  dealId: { type: "number", required: true },
@@ -210,6 +218,7 @@ export default function pipedrive(rl) {
210
218
  },
211
219
  });
212
220
  rl.registerAction("dealProduct.list", {
221
+ access: "read",
213
222
  description: "List products of a deal",
214
223
  inputSchema: {
215
224
  dealId: { type: "number", required: true },
@@ -225,6 +234,7 @@ export default function pipedrive(rl) {
225
234
  },
226
235
  });
227
236
  rl.registerAction("dealProduct.update", {
237
+ access: "write",
228
238
  description: "Update a product in a deal",
229
239
  inputSchema: {
230
240
  dealId: { type: "number", required: true },
@@ -238,6 +248,7 @@ export default function pipedrive(rl) {
238
248
  },
239
249
  });
240
250
  rl.registerAction("dealProduct.remove", {
251
+ access: "write",
241
252
  description: "Remove a product from a deal",
242
253
  inputSchema: {
243
254
  dealId: { type: "number", required: true },
@@ -252,6 +263,7 @@ export default function pipedrive(rl) {
252
263
  });
253
264
  // ── File (skip create/download — binary) ────────────
254
265
  rl.registerAction("file.get", {
266
+ access: "read",
255
267
  description: "Get file metadata",
256
268
  inputSchema: { id: { type: "number", required: true } },
257
269
  async execute(input, ctx) {
@@ -259,6 +271,7 @@ export default function pipedrive(rl) {
259
271
  },
260
272
  });
261
273
  rl.registerAction("file.delete", {
274
+ access: "write",
262
275
  description: "Delete a file",
263
276
  inputSchema: { id: { type: "number", required: true } },
264
277
  async execute(input, ctx) {
@@ -267,6 +280,7 @@ export default function pipedrive(rl) {
267
280
  },
268
281
  });
269
282
  rl.registerAction("file.update", {
283
+ access: "write",
270
284
  description: "Update file metadata",
271
285
  inputSchema: {
272
286
  id: { type: "number", required: true },
@@ -34,6 +34,7 @@ export default function plivo(rl) {
34
34
  },
35
35
  });
36
36
  rl.registerAction("sms.send", {
37
+ access: "write",
37
38
  description: "Send an SMS message via Plivo",
38
39
  inputSchema: {
39
40
  from: { type: "string", required: true, description: "Sender number" },
@@ -50,6 +51,7 @@ export default function plivo(rl) {
50
51
  },
51
52
  });
52
53
  rl.registerAction("mms.send", {
54
+ access: "write",
53
55
  description: "Send an MMS message via Plivo",
54
56
  inputSchema: {
55
57
  from: { type: "string", required: true, description: "Sender number" },
@@ -73,6 +75,7 @@ export default function plivo(rl) {
73
75
  },
74
76
  });
75
77
  rl.registerAction("call.make", {
78
+ access: "write",
76
79
  description: "Make a phone call via Plivo",
77
80
  inputSchema: {
78
81
  from: { type: "string", required: true, description: "Caller number" },
@@ -35,6 +35,7 @@ export default function postbin(rl) {
35
35
  rl.setVersion("0.1.0");
36
36
  rl.setConnectionSchema({});
37
37
  rl.registerAction("bin.create", {
38
+ access: "write",
38
39
  description: "Create a new PostBin bin (no auth required)",
39
40
  inputSchema: {},
40
41
  async execute() {
@@ -43,6 +44,7 @@ export default function postbin(rl) {
43
44
  },
44
45
  });
45
46
  rl.registerAction("bin.get", {
47
+ access: "read",
46
48
  description: "Get a bin's info",
47
49
  inputSchema: { binId: { type: "string", required: true } },
48
50
  async execute(input) {
@@ -52,6 +54,7 @@ export default function postbin(rl) {
52
54
  },
53
55
  });
54
56
  rl.registerAction("bin.delete", {
57
+ access: "write",
55
58
  description: "Delete a bin",
56
59
  inputSchema: { binId: { type: "string", required: true } },
57
60
  async execute(input) {
@@ -61,6 +64,7 @@ export default function postbin(rl) {
61
64
  },
62
65
  });
63
66
  rl.registerAction("request.get", {
67
+ access: "read",
64
68
  description: "Get a specific request from a bin",
65
69
  inputSchema: {
66
70
  binId: { type: "string", required: true },
@@ -73,6 +77,7 @@ export default function postbin(rl) {
73
77
  },
74
78
  });
75
79
  rl.registerAction("request.removeFirst", {
80
+ access: "write",
76
81
  description: "Remove and return the first request from a bin",
77
82
  inputSchema: { binId: { type: "string", required: true } },
78
83
  async execute(input) {
@@ -81,6 +86,7 @@ export default function postbin(rl) {
81
86
  },
82
87
  });
83
88
  rl.registerAction("request.send", {
89
+ access: "write",
84
90
  description: "Send a test request to a bin",
85
91
  inputSchema: {
86
92
  binId: { type: "string", required: true },
@@ -34,6 +34,7 @@ export default function posthog(rl) {
34
34
  },
35
35
  });
36
36
  rl.registerAction("alias.create", {
37
+ access: "write",
37
38
  description: "Create an alias for a distinct ID",
38
39
  inputSchema: {
39
40
  distinctId: { type: "string", required: true },
@@ -63,6 +64,7 @@ export default function posthog(rl) {
63
64
  },
64
65
  });
65
66
  rl.registerAction("event.create", {
67
+ access: "write",
66
68
  description: "Capture one or more events",
67
69
  inputSchema: {
68
70
  events: {
@@ -77,6 +79,7 @@ export default function posthog(rl) {
77
79
  },
78
80
  });
79
81
  rl.registerAction("identity.create", {
82
+ access: "write",
80
83
  description: "Identify a user (set person properties)",
81
84
  inputSchema: {
82
85
  distinctId: { type: "string", required: true },
@@ -100,6 +103,7 @@ export default function posthog(rl) {
100
103
  },
101
104
  });
102
105
  rl.registerAction("track.page", {
106
+ access: "write",
103
107
  description: "Track a page view",
104
108
  inputSchema: {
105
109
  distinctId: { type: "string", required: true },
@@ -124,6 +128,7 @@ export default function posthog(rl) {
124
128
  },
125
129
  });
126
130
  rl.registerAction("track.screen", {
131
+ access: "write",
127
132
  description: "Track a screen view",
128
133
  inputSchema: {
129
134
  distinctId: { type: "string", required: true },
@@ -27,6 +27,7 @@ export default function profitwell(rl) {
27
27
  });
28
28
  const key = (ctx) => ctx.connection.config.accessToken;
29
29
  rl.registerAction("company.getSettings", {
30
+ access: "read",
30
31
  description: "Get company settings",
31
32
  inputSchema: {},
32
33
  async execute(_input, ctx) {
@@ -34,6 +35,7 @@ export default function profitwell(rl) {
34
35
  },
35
36
  });
36
37
  rl.registerAction("metric.get", {
38
+ access: "read",
37
39
  description: "Get financial metrics (daily or monthly)",
38
40
  inputSchema: {
39
41
  type: { type: "string", required: true, description: "daily or monthly" },
@@ -45,6 +45,7 @@ export default function pushbullet(rl) {
45
45
  });
46
46
  const key = (ctx) => ctx.connection.config.accessToken;
47
47
  rl.registerAction("push.create", {
48
+ access: "write",
48
49
  description: "Create a push (note or link)",
49
50
  inputSchema: {
50
51
  type: { type: "string", required: true, description: "note or link" },
@@ -82,6 +83,7 @@ export default function pushbullet(rl) {
82
83
  },
83
84
  });
84
85
  rl.registerAction("push.list", {
86
+ access: "read",
85
87
  description: "List pushes",
86
88
  inputSchema: {
87
89
  limit: { type: "number", required: false },
@@ -112,6 +114,7 @@ export default function pushbullet(rl) {
112
114
  },
113
115
  });
114
116
  rl.registerAction("push.delete", {
117
+ access: "write",
115
118
  description: "Delete a push",
116
119
  inputSchema: { pushId: { type: "string", required: true } },
117
120
  async execute(input, ctx) {
@@ -121,6 +124,7 @@ export default function pushbullet(rl) {
121
124
  },
122
125
  });
123
126
  rl.registerAction("push.update", {
127
+ access: "write",
124
128
  description: "Update a push (dismiss it)",
125
129
  inputSchema: {
126
130
  pushId: { type: "string", required: true },
@@ -12,6 +12,7 @@ export default function pushcut(rl) {
12
12
  });
13
13
  const key = (ctx) => ctx.connection.config.apiKey;
14
14
  rl.registerAction("notification.send", {
15
+ access: "write",
15
16
  description: "Send a Pushcut notification",
16
17
  inputSchema: {
17
18
  notificationName: {
@@ -12,6 +12,7 @@ export default function pushover(rl) {
12
12
  });
13
13
  const token = (ctx) => ctx.connection.config.apiToken;
14
14
  rl.registerAction("message.push", {
15
+ access: "write",
15
16
  description: "Send a push notification via Pushover",
16
17
  inputSchema: {
17
18
  userKey: {
@@ -45,6 +45,7 @@ export default function quickbase(rl) {
45
45
  },
46
46
  });
47
47
  rl.registerAction("field.list", {
48
+ access: "read",
48
49
  description: "List all fields for a table",
49
50
  inputSchema: {
50
51
  tableId: { type: "string", required: true },
@@ -59,6 +60,7 @@ export default function quickbase(rl) {
59
60
  },
60
61
  });
61
62
  rl.registerAction("file.delete", {
63
+ access: "write",
62
64
  description: "Delete a file attachment",
63
65
  inputSchema: {
64
66
  tableId: { type: "string", required: true },
@@ -72,6 +74,7 @@ export default function quickbase(rl) {
72
74
  },
73
75
  });
74
76
  rl.registerAction("record.create", {
77
+ access: "write",
75
78
  description: "Create records in a QuickBase table",
76
79
  inputSchema: {
77
80
  tableId: { type: "string", required: true },
@@ -94,6 +97,7 @@ export default function quickbase(rl) {
94
97
  },
95
98
  });
96
99
  rl.registerAction("record.delete", {
100
+ access: "write",
97
101
  description: "Delete records matching a query",
98
102
  inputSchema: {
99
103
  tableId: { type: "string", required: true },
@@ -112,6 +116,7 @@ export default function quickbase(rl) {
112
116
  },
113
117
  });
114
118
  rl.registerAction("record.query", {
119
+ access: "read",
115
120
  description: "Query records from a table",
116
121
  inputSchema: {
117
122
  tableId: { type: "string", required: true },
@@ -147,6 +152,7 @@ export default function quickbase(rl) {
147
152
  },
148
153
  });
149
154
  rl.registerAction("record.upsert", {
155
+ access: "write",
150
156
  description: "Create or update records (upsert) using a merge field",
151
157
  inputSchema: {
152
158
  tableId: { type: "string", required: true },
@@ -178,6 +184,7 @@ export default function quickbase(rl) {
178
184
  },
179
185
  });
180
186
  rl.registerAction("report.get", {
187
+ access: "read",
181
188
  description: "Get report metadata",
182
189
  inputSchema: {
183
190
  tableId: { type: "string", required: true },
@@ -189,6 +196,7 @@ export default function quickbase(rl) {
189
196
  },
190
197
  });
191
198
  rl.registerAction("report.run", {
199
+ access: "read",
192
200
  description: "Run a report and get results",
193
201
  inputSchema: {
194
202
  tableId: { type: "string", required: true },
@@ -40,6 +40,7 @@ function registerQbResource(rl, resource, conn) {
40
40
  const cap = capitalCase(resource);
41
41
  const prefix = (c) => `/v3/company/${c.companyId}`;
42
42
  rl.registerAction(`${resource}.create`, {
43
+ access: "write",
43
44
  description: `Create a ${resource}`,
44
45
  inputSchema: { data: { type: "object", required: true } },
45
46
  async execute(input, ctx) {
@@ -48,6 +49,7 @@ function registerQbResource(rl, resource, conn) {
48
49
  },
49
50
  });
50
51
  rl.registerAction(`${resource}.get`, {
52
+ access: "read",
51
53
  description: `Get a ${resource} by ID`,
52
54
  inputSchema: { id: { type: "string", required: true } },
53
55
  async execute(input, ctx) {
@@ -57,6 +59,7 @@ function registerQbResource(rl, resource, conn) {
57
59
  },
58
60
  });
59
61
  rl.registerAction(`${resource}.query`, {
62
+ access: "read",
60
63
  description: `Query ${resource}s (SQL-like)`,
61
64
  inputSchema: {
62
65
  query: {
@@ -81,6 +84,7 @@ function registerQbResource(rl, resource, conn) {
81
84
  },
82
85
  });
83
86
  rl.registerAction(`${resource}.update`, {
87
+ access: "write",
84
88
  description: `Update a ${resource} (must include Id and SyncToken)`,
85
89
  inputSchema: { data: { type: "object", required: true } },
86
90
  async execute(input, ctx) {
@@ -89,6 +93,7 @@ function registerQbResource(rl, resource, conn) {
89
93
  },
90
94
  });
91
95
  rl.registerAction(`${resource}.delete`, {
96
+ access: "write",
92
97
  description: `Delete a ${resource}`,
93
98
  inputSchema: {
94
99
  id: { type: "string", required: true },
@@ -3,6 +3,7 @@ export default function quickchart(rl) {
3
3
  rl.setVersion("0.1.0");
4
4
  rl.setConnectionSchema({});
5
5
  rl.registerAction("chart.create", {
6
+ access: "write",
6
7
  description: "Generate a chart image URL via QuickChart.io (no auth required)",
7
8
  inputSchema: {
8
9
  type: {
@@ -28,6 +28,7 @@ export default function raindrop(rl) {
28
28
  const key = (ctx) => ctx.connection.config.accessToken;
29
29
  // ── Bookmark ────────────────────────────────────────
30
30
  rl.registerAction("bookmark.create", {
31
+ access: "write",
31
32
  description: "Create a bookmark (raindrop)",
32
33
  inputSchema: {
33
34
  link: { type: "string", required: true, description: "URL to bookmark" },
@@ -61,6 +62,7 @@ export default function raindrop(rl) {
61
62
  },
62
63
  });
63
64
  rl.registerAction("bookmark.get", {
65
+ access: "read",
64
66
  description: "Get a bookmark by ID",
65
67
  inputSchema: { bookmarkId: { type: "string", required: true } },
66
68
  async execute(input, ctx) {
@@ -70,6 +72,7 @@ export default function raindrop(rl) {
70
72
  },
71
73
  });
72
74
  rl.registerAction("bookmark.list", {
75
+ access: "read",
73
76
  description: "List bookmarks in a collection",
74
77
  inputSchema: {
75
78
  collectionId: { type: "string", required: true },
@@ -85,6 +88,7 @@ export default function raindrop(rl) {
85
88
  },
86
89
  });
87
90
  rl.registerAction("bookmark.update", {
91
+ access: "write",
88
92
  description: "Update a bookmark",
89
93
  inputSchema: {
90
94
  bookmarkId: { type: "string", required: true },
@@ -113,6 +117,7 @@ export default function raindrop(rl) {
113
117
  },
114
118
  });
115
119
  rl.registerAction("bookmark.delete", {
120
+ access: "write",
116
121
  description: "Delete a bookmark",
117
122
  inputSchema: { bookmarkId: { type: "string", required: true } },
118
123
  async execute(input, ctx) {
@@ -122,6 +127,7 @@ export default function raindrop(rl) {
122
127
  });
123
128
  // ── Collection ──────────────────────────────────────
124
129
  rl.registerAction("collection.create", {
130
+ access: "write",
125
131
  description: "Create a collection",
126
132
  inputSchema: {
127
133
  title: { type: "string", required: true },
@@ -141,6 +147,7 @@ export default function raindrop(rl) {
141
147
  },
142
148
  });
143
149
  rl.registerAction("collection.get", {
150
+ access: "read",
144
151
  description: "Get a collection by ID",
145
152
  inputSchema: { collectionId: { type: "string", required: true } },
146
153
  async execute(input, ctx) {
@@ -150,6 +157,7 @@ export default function raindrop(rl) {
150
157
  },
151
158
  });
152
159
  rl.registerAction("collection.list", {
160
+ access: "read",
153
161
  description: "List collections",
154
162
  inputSchema: {
155
163
  type: {
@@ -170,6 +178,7 @@ export default function raindrop(rl) {
170
178
  },
171
179
  });
172
180
  rl.registerAction("collection.update", {
181
+ access: "write",
173
182
  description: "Update a collection",
174
183
  inputSchema: {
175
184
  collectionId: { type: "string", required: true },
@@ -188,6 +197,7 @@ export default function raindrop(rl) {
188
197
  },
189
198
  });
190
199
  rl.registerAction("collection.delete", {
200
+ access: "write",
191
201
  description: "Delete a collection",
192
202
  inputSchema: { collectionId: { type: "string", required: true } },
193
203
  async execute(input, ctx) {
@@ -197,6 +207,7 @@ export default function raindrop(rl) {
197
207
  });
198
208
  // ── Tag ─────────────────────────────────────────────
199
209
  rl.registerAction("tag.list", {
210
+ access: "read",
200
211
  description: "List tags (optionally filtered by collection)",
201
212
  inputSchema: {
202
213
  collectionId: { type: "string", required: false },
@@ -213,6 +224,7 @@ export default function raindrop(rl) {
213
224
  },
214
225
  });
215
226
  rl.registerAction("tag.delete", {
227
+ access: "write",
216
228
  description: "Delete tags",
217
229
  inputSchema: {
218
230
  tags: {
@@ -232,6 +244,7 @@ export default function raindrop(rl) {
232
244
  });
233
245
  // ── User ────────────────────────────────────────────
234
246
  rl.registerAction("user.get", {
247
+ access: "read",
235
248
  description: "Get user info (self or by ID)",
236
249
  inputSchema: {
237
250
  userId: {
@@ -27,6 +27,7 @@ export default function recraft(rl) {
27
27
  },
28
28
  });
29
29
  rl.registerAction("image.create", {
30
+ access: "write",
30
31
  description: "Generate an image with Recraft. Best for design, vector graphics, and brand-consistent work. Writes the image(s) to disk and returns their file `path`s — not base64. Deliver each with send_file using its `path`.",
31
32
  inputSchema: {
32
33
  prompt: {
@@ -33,6 +33,7 @@ export default function reddit(rl) {
33
33
  });
34
34
  // ── Post ────────────────────────────────────────────
35
35
  rl.registerAction("post.create", {
36
+ access: "write",
36
37
  description: "Submit a new post to a subreddit (requires auth)",
37
38
  inputSchema: {
38
39
  subreddit: { type: "string", required: true },
@@ -72,6 +73,7 @@ export default function reddit(rl) {
72
73
  },
73
74
  });
74
75
  rl.registerAction("post.get", {
76
+ access: "read",
75
77
  description: "Get a post by ID",
76
78
  inputSchema: {
77
79
  subreddit: { type: "string", required: true },
@@ -87,6 +89,7 @@ export default function reddit(rl) {
87
89
  },
88
90
  });
89
91
  rl.registerAction("post.list", {
92
+ access: "read",
90
93
  description: "List posts from a subreddit (no auth required for public subreddits)",
91
94
  inputSchema: {
92
95
  subreddit: { type: "string", required: true },
@@ -116,6 +119,7 @@ export default function reddit(rl) {
116
119
  },
117
120
  });
118
121
  rl.registerAction("post.delete", {
122
+ access: "write",
119
123
  description: "Delete a post (requires auth)",
120
124
  inputSchema: { postId: { type: "string", required: true } },
121
125
  async execute(input, ctx) {
@@ -127,6 +131,7 @@ export default function reddit(rl) {
127
131
  },
128
132
  });
129
133
  rl.registerAction("post.search", {
134
+ access: "read",
130
135
  description: "Search posts",
131
136
  inputSchema: {
132
137
  keyword: { type: "string", required: true },
@@ -161,6 +166,7 @@ export default function reddit(rl) {
161
166
  });
162
167
  // ── Comment ─────────────────────────────────────────
163
168
  rl.registerAction("comment.create", {
169
+ access: "write",
164
170
  description: "Add a comment to a post (requires auth)",
165
171
  inputSchema: {
166
172
  postId: { type: "string", required: true },
@@ -179,6 +185,7 @@ export default function reddit(rl) {
179
185
  },
180
186
  });
181
187
  rl.registerAction("comment.reply", {
188
+ access: "write",
182
189
  description: "Reply to a comment (requires auth)",
183
190
  inputSchema: {
184
191
  commentId: { type: "string", required: true },
@@ -197,6 +204,7 @@ export default function reddit(rl) {
197
204
  },
198
205
  });
199
206
  rl.registerAction("comment.delete", {
207
+ access: "write",
200
208
  description: "Delete a comment (requires auth)",
201
209
  inputSchema: { commentId: { type: "string", required: true } },
202
210
  async execute(input, ctx) {
@@ -209,6 +217,7 @@ export default function reddit(rl) {
209
217
  });
210
218
  // ── Subreddit ───────────────────────────────────────
211
219
  rl.registerAction("subreddit.get", {
220
+ access: "read",
212
221
  description: "Get subreddit info or rules (no auth required)",
213
222
  inputSchema: {
214
223
  subreddit: { type: "string", required: true },
@@ -229,6 +238,7 @@ export default function reddit(rl) {
229
238
  });
230
239
  // ── User ────────────────────────────────────────────
231
240
  rl.registerAction("user.get", {
241
+ access: "read",
232
242
  description: "Get user profile info (no auth required)",
233
243
  inputSchema: { username: { type: "string", required: true } },
234
244
  async execute(input, ctx) {
@@ -47,6 +47,7 @@ export default function replicate(rl) {
47
47
  },
48
48
  });
49
49
  rl.registerAction("image.create", {
50
+ access: "write",
50
51
  description: "Generate an image via Replicate. Default model is black-forest-labs/flux-dev. Writes the image(s) to disk and returns their file `path`s — not base64. Deliver each with send_file using its `path`.",
51
52
  inputSchema: {
52
53
  prompt: {
@@ -30,6 +30,7 @@ export default function rocketchat(rl) {
30
30
  },
31
31
  });
32
32
  rl.registerAction("chat.postMessage", {
33
+ access: "write",
33
34
  description: "Post a message to a Rocket.Chat channel or DM",
34
35
  inputSchema: {
35
36
  channel: {
@@ -43,6 +43,7 @@ export default function rundeck(rl) {
43
43
  },
44
44
  });
45
45
  rl.registerAction("job.execute", {
46
+ access: "write",
46
47
  description: "Execute a Rundeck job",
47
48
  inputSchema: {
48
49
  jobId: { type: "string", required: true },
@@ -73,6 +74,7 @@ export default function rundeck(rl) {
73
74
  },
74
75
  });
75
76
  rl.registerAction("job.getMetadata", {
77
+ access: "read",
76
78
  description: "Get metadata for a Rundeck job",
77
79
  inputSchema: { jobId: { type: "string", required: true } },
78
80
  async execute(input, ctx) {
@@ -2,6 +2,7 @@ import * as t from "typebox";
2
2
  import { api, getSession, identity } from "./shared.js";
3
3
  export function registerMetadataActions(rl) {
4
4
  rl.registerAction("connection.test", {
5
+ access: "read",
5
6
  description: "Validate Salesforce auth and return safe connection metadata",
6
7
  inputSchema: t.Object({}),
7
8
  async execute(_input, ctx) {
@@ -27,6 +28,7 @@ export function registerMetadataActions(rl) {
27
28
  },
28
29
  });
29
30
  rl.registerAction("auth.identity", {
31
+ access: "read",
30
32
  description: "Return the Salesforce OAuth identity for the current connection",
31
33
  inputSchema: t.Object({}),
32
34
  async execute(_input, ctx) {
@@ -34,6 +36,7 @@ export function registerMetadataActions(rl) {
34
36
  },
35
37
  });
36
38
  rl.registerAction("limits.get", {
39
+ access: "read",
37
40
  description: "Return Salesforce org REST API limits",
38
41
  inputSchema: t.Object({}),
39
42
  async execute(_input, ctx) {
@@ -41,6 +44,7 @@ export function registerMetadataActions(rl) {
41
44
  },
42
45
  });
43
46
  rl.registerAction("metadata.objects", {
47
+ access: "read",
44
48
  description: "List available Salesforce sObjects and metadata summaries",
45
49
  inputSchema: t.Object({}),
46
50
  async execute(_input, ctx) {