runline 0.11.6 → 0.13.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 (256) 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/_shared/googleSchemas.js +23 -0
  7. package/dist/plugins/actionNetwork/src/index.js +23 -0
  8. package/dist/plugins/activeCampaign/src/index.js +48 -0
  9. package/dist/plugins/adalo/src/index.js +5 -0
  10. package/dist/plugins/affinity/src/index.js +16 -0
  11. package/dist/plugins/agileCrm/src/index.js +15 -0
  12. package/dist/plugins/airtable/src/index.js +10 -0
  13. package/dist/plugins/airtop/src/index.js +24 -0
  14. package/dist/plugins/apiTemplateIo/src/index.js +4 -0
  15. package/dist/plugins/asana/src/index.js +22 -0
  16. package/dist/plugins/autopilot/src/index.js +11 -0
  17. package/dist/plugins/bambooHr/src/index.js +11 -0
  18. package/dist/plugins/bannerbear/src/index.js +4 -0
  19. package/dist/plugins/baserow/src/index.js +8 -0
  20. package/dist/plugins/beeminder/src/index.js +18 -0
  21. package/dist/plugins/bitly/src/index.js +3 -0
  22. package/dist/plugins/bitwarden/src/index.js +19 -0
  23. package/dist/plugins/box/src/index.js +11 -0
  24. package/dist/plugins/brandfetch/src/index.js +5 -0
  25. package/dist/plugins/brevo/src/index.js +15 -0
  26. package/dist/plugins/bubble/src/index.js +5 -0
  27. package/dist/plugins/chargebee/src/index.js +5 -0
  28. package/dist/plugins/circleci/src/index.js +3 -0
  29. package/dist/plugins/ciscoWebex/src/index.js +10 -0
  30. package/dist/plugins/clearbit/src/index.js +3 -0
  31. package/dist/plugins/clickup/src/index.js +61 -0
  32. package/dist/plugins/clockify/src/index.js +25 -0
  33. package/dist/plugins/cloudflare/src/index.js +4 -0
  34. package/dist/plugins/cockpit/src/index.js +5 -0
  35. package/dist/plugins/coda/src/index.js +18 -0
  36. package/dist/plugins/coingecko/src/index.js +10 -0
  37. package/dist/plugins/contentful/src/index.js +7 -0
  38. package/dist/plugins/convertkit/src/index.js +16 -0
  39. package/dist/plugins/copper/src/index.js +7 -0
  40. package/dist/plugins/cortex/src/index.js +4 -0
  41. package/dist/plugins/currents/src/index.js +22 -0
  42. package/dist/plugins/customerIo/src/index.js +9 -0
  43. package/dist/plugins/databricks/src/index.js +34 -0
  44. package/dist/plugins/deepl/src/index.js +2 -0
  45. package/dist/plugins/demio/src/index.js +4 -0
  46. package/dist/plugins/dhl/src/index.js +1 -0
  47. package/dist/plugins/discord/src/index.js +13 -0
  48. package/dist/plugins/discourse/src/index.js +16 -0
  49. package/dist/plugins/disqus/src/index.js +4 -0
  50. package/dist/plugins/docker/src/index.js +5 -0
  51. package/dist/plugins/drift/src/index.js +5 -0
  52. package/dist/plugins/dropbox/src/index.js +9 -0
  53. package/dist/plugins/dropcontact/src/index.js +2 -0
  54. package/dist/plugins/egoi/src/index.js +4 -0
  55. package/dist/plugins/elasticsearch/src/index.js +9 -0
  56. package/dist/plugins/emelia/src/index.js +9 -0
  57. package/dist/plugins/erpnext/src/index.js +5 -0
  58. package/dist/plugins/facebookGraph/src/index.js +1 -0
  59. package/dist/plugins/freshdesk/src/index.js +10 -0
  60. package/dist/plugins/freshservice/src/index.js +7 -0
  61. package/dist/plugins/freshworksCrm/src/index.js +7 -0
  62. package/dist/plugins/getresponse/src/index.js +5 -0
  63. package/dist/plugins/ghost/src/index.js +5 -0
  64. package/dist/plugins/github/src/index.js +37 -0
  65. package/dist/plugins/gitlab/src/index.js +17 -0
  66. package/dist/plugins/gmail/src/index.js +200 -184
  67. package/dist/plugins/gong/src/index.js +4 -0
  68. package/dist/plugins/googleAppsScript/src/index.js +98 -43
  69. package/dist/plugins/googleCalendar/src/index.js +329 -250
  70. package/dist/plugins/googleContacts/src/index.js +144 -145
  71. package/dist/plugins/googleDocs/src/documents.js +31 -38
  72. package/dist/plugins/googleDocs/src/formatting.js +51 -47
  73. package/dist/plugins/googleDocs/src/images.js +23 -26
  74. package/dist/plugins/googleDocs/src/shared.js +55 -0
  75. package/dist/plugins/googleDocs/src/structure.js +111 -123
  76. package/dist/plugins/googleDocs/src/tables.js +103 -154
  77. package/dist/plugins/googleDocs/src/tabs.js +27 -23
  78. package/dist/plugins/googleDocs/src/text.js +106 -136
  79. package/dist/plugins/googleDrive/src/index.js +461 -408
  80. package/dist/plugins/googleImage/src/index.js +14 -16
  81. package/dist/plugins/googleSheets/src/index.js +527 -339
  82. package/dist/plugins/googleSlides/src/index.js +92 -72
  83. package/dist/plugins/googleTasks/src/index.js +94 -92
  84. package/dist/plugins/gotify/src/index.js +3 -0
  85. package/dist/plugins/gotowebinar/src/index.js +20 -0
  86. package/dist/plugins/grafana/src/index.js +17 -0
  87. package/dist/plugins/graphql/src/index.js +2 -0
  88. package/dist/plugins/grist/src/index.js +4 -0
  89. package/dist/plugins/hackernews/src/index.js +6 -0
  90. package/dist/plugins/halopsa/src/index.js +5 -0
  91. package/dist/plugins/harvest/src/index.js +14 -0
  92. package/dist/plugins/helpscout/src/index.js +13 -0
  93. package/dist/plugins/highlevel/src/index.js +17 -0
  94. package/dist/plugins/homeAssistant/src/index.js +13 -0
  95. package/dist/plugins/hubspot/src/index.js +14 -0
  96. package/dist/plugins/humanticAi/src/index.js +3 -0
  97. package/dist/plugins/hunter/src/index.js +3 -0
  98. package/dist/plugins/intercom/src/index.js +10 -0
  99. package/dist/plugins/iterable/src/index.js +6 -0
  100. package/dist/plugins/jenkins/src/index.js +11 -0
  101. package/dist/plugins/jira/src/index.js +16 -0
  102. package/dist/plugins/keap/src/index.js +28 -0
  103. package/dist/plugins/kobotoolbox/src/index.js +17 -0
  104. package/dist/plugins/lemlist/src/index.js +15 -0
  105. package/dist/plugins/linear/src/attachments.js +6 -0
  106. package/dist/plugins/linear/src/comments.js +5 -0
  107. package/dist/plugins/linear/src/cycles.js +2 -0
  108. package/dist/plugins/linear/src/initiatives.js +5 -0
  109. package/dist/plugins/linear/src/issues.js +14 -0
  110. package/dist/plugins/linear/src/labels.js +5 -0
  111. package/dist/plugins/linear/src/organization.js +1 -0
  112. package/dist/plugins/linear/src/projects.js +11 -0
  113. package/dist/plugins/linear/src/shared.js +2 -0
  114. package/dist/plugins/linear/src/states.js +2 -0
  115. package/dist/plugins/linear/src/teams.js +3 -0
  116. package/dist/plugins/linear/src/users.js +2 -0
  117. package/dist/plugins/linear/src/views.js +4 -0
  118. package/dist/plugins/linear/src/webhooks.js +4 -0
  119. package/dist/plugins/lingvanex/src/index.js +1 -0
  120. package/dist/plugins/linkedin/src/index.js +1 -0
  121. package/dist/plugins/lonescale/src/index.js +4 -0
  122. package/dist/plugins/magento/src/index.js +15 -0
  123. package/dist/plugins/mailcheck/src/index.js +1 -0
  124. package/dist/plugins/mailchimp/src/index.js +14 -0
  125. package/dist/plugins/mailerlite/src/index.js +4 -0
  126. package/dist/plugins/mailgun/src/index.js +1 -0
  127. package/dist/plugins/mailjet/src/index.js +3 -0
  128. package/dist/plugins/mandrill/src/index.js +2 -0
  129. package/dist/plugins/marketstack/src/index.js +3 -0
  130. package/dist/plugins/matrix/src/index.js +10 -0
  131. package/dist/plugins/mattermost/src/index.js +19 -0
  132. package/dist/plugins/mautic/src/index.js +20 -0
  133. package/dist/plugins/medium/src/index.js +3 -0
  134. package/dist/plugins/messagebird/src/index.js +2 -0
  135. package/dist/plugins/metabase/src/index.js +10 -0
  136. package/dist/plugins/microsoftCalendar/src/index.js +2 -0
  137. package/dist/plugins/microsoftFiles/src/index.js +5 -0
  138. package/dist/plugins/microsoftMail/src/index.js +4 -0
  139. package/dist/plugins/misp/src/index.js +44 -0
  140. package/dist/plugins/mocean/src/index.js +2 -0
  141. package/dist/plugins/monday/src/index.js +18 -0
  142. package/dist/plugins/monicaCrm/src/index.js +5 -0
  143. package/dist/plugins/msg91/src/index.js +1 -0
  144. package/dist/plugins/nasa/src/index.js +7 -0
  145. package/dist/plugins/netlify/src/index.js +7 -0
  146. package/dist/plugins/netscalerAdc/src/index.js +3 -0
  147. package/dist/plugins/nextcloud/src/index.js +13 -0
  148. package/dist/plugins/nocodb/src/index.js +5 -0
  149. package/dist/plugins/node/src/index.js +38 -0
  150. package/dist/plugins/notion/src/index.js +14 -0
  151. package/dist/plugins/npm/src/index.js +5 -0
  152. package/dist/plugins/odoo/src/index.js +6 -0
  153. package/dist/plugins/okta/src/index.js +5 -0
  154. package/dist/plugins/oneSimpleApi/src/index.js +10 -0
  155. package/dist/plugins/onfleet/src/index.js +24 -0
  156. package/dist/plugins/openThesaurus/src/index.js +1 -0
  157. package/dist/plugins/openai/src/index.js +1 -0
  158. package/dist/plugins/openweathermap/src/index.js +2 -0
  159. package/dist/plugins/oura/src/index.js +2 -0
  160. package/dist/plugins/paddle/src/index.js +9 -0
  161. package/dist/plugins/pagerduty/src/index.js +9 -0
  162. package/dist/plugins/parallel/src/index.js +1 -0
  163. package/dist/plugins/paypal/src/index.js +4 -0
  164. package/dist/plugins/peekalink/src/index.js +2 -0
  165. package/dist/plugins/phantombuster/src/index.js +5 -0
  166. package/dist/plugins/philipsHue/src/index.js +4 -0
  167. package/dist/plugins/pipedrive/src/index.js +14 -0
  168. package/dist/plugins/plivo/src/index.js +3 -0
  169. package/dist/plugins/postbin/src/index.js +6 -0
  170. package/dist/plugins/posthog/src/index.js +5 -0
  171. package/dist/plugins/profitwell/src/index.js +2 -0
  172. package/dist/plugins/pushbullet/src/index.js +4 -0
  173. package/dist/plugins/pushcut/src/index.js +1 -0
  174. package/dist/plugins/pushover/src/index.js +1 -0
  175. package/dist/plugins/quickbase/src/index.js +8 -0
  176. package/dist/plugins/quickbooks/src/index.js +5 -0
  177. package/dist/plugins/quickchart/src/index.js +1 -0
  178. package/dist/plugins/raindrop/src/index.js +13 -0
  179. package/dist/plugins/recraft/src/index.js +1 -0
  180. package/dist/plugins/reddit/src/index.js +10 -0
  181. package/dist/plugins/replicate/src/index.js +1 -0
  182. package/dist/plugins/rocketchat/src/index.js +1 -0
  183. package/dist/plugins/rundeck/src/index.js +2 -0
  184. package/dist/plugins/salesforce/src/metadata.js +4 -0
  185. package/dist/plugins/salesforce/src/query.js +5 -0
  186. package/dist/plugins/salesforce/src/sobjects.js +12 -0
  187. package/dist/plugins/salesmate/src/index.js +5 -0
  188. package/dist/plugins/securityScorecard/src/index.js +14 -0
  189. package/dist/plugins/segment/src/index.js +4 -0
  190. package/dist/plugins/sendgrid/src/index.js +10 -0
  191. package/dist/plugins/sendy/src/index.js +6 -0
  192. package/dist/plugins/sentry/src/index.js +24 -0
  193. package/dist/plugins/servicenow/src/index.js +10 -0
  194. package/dist/plugins/shiftLabs/src/index.js +6 -0
  195. package/dist/plugins/shiftLabs/src/issues.js +4 -0
  196. package/dist/plugins/shiftLabs/src/pages.js +10 -0
  197. package/dist/plugins/shiftLabs/src/shared.js +2 -0
  198. package/dist/plugins/shiftLabs/src/transcription.js +203 -0
  199. package/dist/plugins/shopify/src/index.js +10 -0
  200. package/dist/plugins/signl4/src/index.js +2 -0
  201. package/dist/plugins/slack/src/index.js +38 -0
  202. package/dist/plugins/sms77/src/index.js +2 -0
  203. package/dist/plugins/splunk/src/index.js +16 -0
  204. package/dist/plugins/spotify/src/index.js +30 -0
  205. package/dist/plugins/stackby/src/index.js +4 -0
  206. package/dist/plugins/steel/src/browser.js +7 -0
  207. package/dist/plugins/steel/src/captchas.js +3 -0
  208. package/dist/plugins/steel/src/credentials.js +4 -0
  209. package/dist/plugins/steel/src/extensions.js +5 -0
  210. package/dist/plugins/steel/src/files.js +10 -0
  211. package/dist/plugins/steel/src/profiles.js +4 -0
  212. package/dist/plugins/steel/src/sessions.js +11 -0
  213. package/dist/plugins/storyblok/src/index.js +7 -0
  214. package/dist/plugins/strapi/src/index.js +5 -0
  215. package/dist/plugins/strava/src/index.js +6 -0
  216. package/dist/plugins/stripe/src/index.js +20 -0
  217. package/dist/plugins/supabase/src/index.js +5 -0
  218. package/dist/plugins/syncromsp/src/index.js +20 -0
  219. package/dist/plugins/tapfiliate/src/index.js +11 -0
  220. package/dist/plugins/telegram/src/index.js +21 -0
  221. package/dist/plugins/thehive/src/index.js +23 -0
  222. package/dist/plugins/thehiveProject/src/index.js +31 -0
  223. package/dist/plugins/todoist/src/index.js +31 -0
  224. package/dist/plugins/together/src/index.js +1 -0
  225. package/dist/plugins/travisci/src/index.js +5 -0
  226. package/dist/plugins/trello/src/index.js +37 -0
  227. package/dist/plugins/twake/src/index.js +1 -0
  228. package/dist/plugins/twilio/src/index.js +2 -0
  229. package/dist/plugins/twist/src/index.js +22 -0
  230. package/dist/plugins/twitter/src/index.js +8 -0
  231. package/dist/plugins/unleashedSoftware/src/index.js +3 -0
  232. package/dist/plugins/uplead/src/index.js +2 -0
  233. package/dist/plugins/uproc/src/index.js +1 -0
  234. package/dist/plugins/uptimerobot/src/index.js +22 -0
  235. package/dist/plugins/urlscanio/src/index.js +3 -0
  236. package/dist/plugins/vercel/src/account.js +1 -0
  237. package/dist/plugins/vercel/src/deployments.js +5 -0
  238. package/dist/plugins/vercel/src/env.js +4 -0
  239. package/dist/plugins/vercel/src/projects.js +2 -0
  240. package/dist/plugins/vercel/src/shared.js +1 -0
  241. package/dist/plugins/vero/src/index.js +6 -0
  242. package/dist/plugins/vonage/src/index.js +1 -0
  243. package/dist/plugins/wekan/src/index.js +24 -0
  244. package/dist/plugins/woocommerce/src/index.js +5 -0
  245. package/dist/plugins/wordpress/src/index.js +10 -0
  246. package/dist/plugins/xai/src/index.js +1 -0
  247. package/dist/plugins/xero/src/index.js +8 -0
  248. package/dist/plugins/yourls/src/index.js +3 -0
  249. package/dist/plugins/zammad/src/index.js +12 -0
  250. package/dist/plugins/zendesk/src/index.js +18 -0
  251. package/dist/plugins/zoho/src/index.js +6 -0
  252. package/dist/plugins/zoom/src/index.js +5 -0
  253. package/dist/plugins/zulip/src/index.js +15 -0
  254. package/dist/sdk.d.ts +2 -1
  255. package/dist/sdk.js +1 -0
  256. package/package.json +1 -1
@@ -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) {
@@ -11,6 +11,7 @@ async function queryPage(ctx, endpoint, query) {
11
11
  }
12
12
  export function registerQueryActions(rl) {
13
13
  rl.registerAction("soql.query", {
14
+ access: "read",
14
15
  description: "Execute a raw SOQL query and return the first page of records",
15
16
  inputSchema: QueryInput,
16
17
  async execute(input, ctx) {
@@ -18,6 +19,7 @@ export function registerQueryActions(rl) {
18
19
  },
19
20
  });
20
21
  rl.registerAction("soql.queryPage", {
22
+ access: "read",
21
23
  description: "Execute a raw SOQL query and return Salesforce pagination metadata",
22
24
  inputSchema: QueryInput,
23
25
  async execute(input, ctx) {
@@ -25,6 +27,7 @@ export function registerQueryActions(rl) {
25
27
  },
26
28
  });
27
29
  rl.registerAction("soql.queryAll", {
30
+ access: "read",
28
31
  description: "Execute a raw SOQL query including deleted and archived records; returns the first page of records",
29
32
  inputSchema: QueryInput,
30
33
  async execute(input, ctx) {
@@ -32,6 +35,7 @@ export function registerQueryActions(rl) {
32
35
  },
33
36
  });
34
37
  rl.registerAction("soql.queryAllPage", {
38
+ access: "read",
35
39
  description: "Execute a raw SOQL query including deleted and archived records and return Salesforce pagination metadata",
36
40
  inputSchema: QueryInput,
37
41
  async execute(input, ctx) {
@@ -39,6 +43,7 @@ export function registerQueryActions(rl) {
39
43
  },
40
44
  });
41
45
  rl.registerAction("soql.nextPage", {
46
+ access: "read",
42
47
  description: "Fetch the next page from a Salesforce nextRecordsUrl returned by soql.queryPage or soql.queryAllPage",
43
48
  inputSchema: t.Object({
44
49
  nextRecordsUrl: t.String({
@@ -42,6 +42,7 @@ function buildQuery(sObject, input) {
42
42
  function registerSObject(rl, sObject) {
43
43
  const lower = sObject.toLowerCase();
44
44
  rl.registerAction(`${lower}.create`, {
45
+ access: "write",
45
46
  description: `Create a ${sObject}`,
46
47
  inputSchema: t.Object({ data: Data }),
47
48
  async execute(input, ctx) {
@@ -49,6 +50,7 @@ function registerSObject(rl, sObject) {
49
50
  },
50
51
  });
51
52
  rl.registerAction(`${lower}.get`, {
53
+ access: "read",
52
54
  description: `Get a ${sObject} by ID`,
53
55
  inputSchema: t.Object({ id: t.String() }),
54
56
  async execute(input, ctx) {
@@ -56,6 +58,7 @@ function registerSObject(rl, sObject) {
56
58
  },
57
59
  });
58
60
  rl.registerAction(`${lower}.update`, {
61
+ access: "write",
59
62
  description: `Update a ${sObject}`,
60
63
  inputSchema: t.Object({ id: t.String(), data: Data }),
61
64
  async execute(input, ctx) {
@@ -65,6 +68,7 @@ function registerSObject(rl, sObject) {
65
68
  },
66
69
  });
67
70
  rl.registerAction(`${lower}.delete`, {
71
+ access: "write",
68
72
  description: `Delete a ${sObject}`,
69
73
  inputSchema: t.Object({ id: t.String() }),
70
74
  async execute(input, ctx) {
@@ -73,6 +77,7 @@ function registerSObject(rl, sObject) {
73
77
  },
74
78
  });
75
79
  rl.registerAction(`${lower}.query`, {
80
+ access: "read",
76
81
  description: `Query ${sObject}s with SOQL`,
77
82
  inputSchema: QueryInput(sObject),
78
83
  async execute(input, ctx) {
@@ -82,6 +87,7 @@ function registerSObject(rl, sObject) {
82
87
  },
83
88
  });
84
89
  rl.registerAction(`${lower}.queryPage`, {
90
+ access: "read",
85
91
  description: `Query ${sObject}s with SOQL and return Salesforce pagination metadata`,
86
92
  inputSchema: QueryInput(sObject),
87
93
  async execute(input, ctx) {
@@ -91,6 +97,7 @@ function registerSObject(rl, sObject) {
91
97
  },
92
98
  });
93
99
  rl.registerAction(`${lower}.upsert`, {
100
+ access: "write",
94
101
  description: `Upsert a ${sObject} by external ID`,
95
102
  inputSchema: t.Object({
96
103
  externalIdField: t.String(),
@@ -109,6 +116,7 @@ export function registerStandardSObjectActions(rl) {
109
116
  }
110
117
  export function registerGenericSObjectActions(rl) {
111
118
  rl.registerAction("sobject.create", {
119
+ access: "write",
112
120
  description: "Create any sObject record",
113
121
  inputSchema: t.Object({ sObject: t.String(), data: Data }),
114
122
  async execute(input, ctx) {
@@ -117,6 +125,7 @@ export function registerGenericSObjectActions(rl) {
117
125
  },
118
126
  });
119
127
  rl.registerAction("sobject.get", {
128
+ access: "read",
120
129
  description: "Get any sObject record",
121
130
  inputSchema: t.Object({ sObject: t.String(), id: t.String() }),
122
131
  async execute(input, ctx) {
@@ -125,6 +134,7 @@ export function registerGenericSObjectActions(rl) {
125
134
  },
126
135
  });
127
136
  rl.registerAction("sobject.update", {
137
+ access: "write",
128
138
  description: "Update any sObject record",
129
139
  inputSchema: t.Object({ sObject: t.String(), id: t.String(), data: Data }),
130
140
  async execute(input, ctx) {
@@ -134,6 +144,7 @@ export function registerGenericSObjectActions(rl) {
134
144
  },
135
145
  });
136
146
  rl.registerAction("sobject.delete", {
147
+ access: "write",
137
148
  description: "Delete any sObject record",
138
149
  inputSchema: t.Object({ sObject: t.String(), id: t.String() }),
139
150
  async execute(input, ctx) {
@@ -143,6 +154,7 @@ export function registerGenericSObjectActions(rl) {
143
154
  },
144
155
  });
145
156
  rl.registerAction("sobject.describe", {
157
+ access: "read",
146
158
  description: "Describe an sObject's metadata/fields",
147
159
  inputSchema: t.Object({ sObject: t.String() }),
148
160
  async execute(input, ctx) {
@@ -30,6 +30,7 @@ async function api(conn, method, endpoint, body, qs) {
30
30
  }
31
31
  function registerCrud(rl, resource, plural, conn, createSchema) {
32
32
  rl.registerAction(`${resource}.create`, {
33
+ access: "write",
33
34
  description: `Create a ${resource}`,
34
35
  inputSchema: createSchema,
35
36
  async execute(input, ctx) {
@@ -38,6 +39,7 @@ function registerCrud(rl, resource, plural, conn, createSchema) {
38
39
  },
39
40
  });
40
41
  rl.registerAction(`${resource}.get`, {
42
+ access: "read",
41
43
  description: `Get a ${resource} by ID`,
42
44
  inputSchema: { id: { type: "string", required: true } },
43
45
  async execute(input, ctx) {
@@ -46,6 +48,7 @@ function registerCrud(rl, resource, plural, conn, createSchema) {
46
48
  },
47
49
  });
48
50
  rl.registerAction(`${resource}.list`, {
51
+ access: "read",
49
52
  description: `Search/list ${plural}`,
50
53
  inputSchema: {
51
54
  limit: { type: "number", required: false },
@@ -74,6 +77,7 @@ function registerCrud(rl, resource, plural, conn, createSchema) {
74
77
  },
75
78
  });
76
79
  rl.registerAction(`${resource}.update`, {
80
+ access: "write",
77
81
  description: `Update a ${resource}`,
78
82
  inputSchema: {
79
83
  id: { type: "string", required: true },
@@ -86,6 +90,7 @@ function registerCrud(rl, resource, plural, conn, createSchema) {
86
90
  },
87
91
  });
88
92
  rl.registerAction(`${resource}.delete`, {
93
+ access: "write",
89
94
  description: `Delete a ${resource}`,
90
95
  inputSchema: { id: { type: "string", required: true } },
91
96
  async execute(input, ctx) {
@@ -36,6 +36,7 @@ export default function securityScorecard(rl) {
36
36
  const key = (ctx) => ctx.connection.config.apiKey;
37
37
  // ── Company ─────────────────────────────────────────
38
38
  rl.registerAction("company.getScorecard", {
39
+ access: "read",
39
40
  description: "Get a company's scorecard by domain",
40
41
  inputSchema: { domain: { type: "string", required: true } },
41
42
  async execute(input, ctx) {
@@ -43,6 +44,7 @@ export default function securityScorecard(rl) {
43
44
  },
44
45
  });
45
46
  rl.registerAction("company.getFactors", {
47
+ access: "read",
46
48
  description: "Get factor scores for a company",
47
49
  inputSchema: {
48
50
  domain: { type: "string", required: true },
@@ -58,6 +60,7 @@ export default function securityScorecard(rl) {
58
60
  },
59
61
  });
60
62
  rl.registerAction("company.getHistoricalScore", {
63
+ access: "read",
61
64
  description: "Get historical score data for a company",
62
65
  inputSchema: {
63
66
  domain: { type: "string", required: true },
@@ -88,6 +91,7 @@ export default function securityScorecard(rl) {
88
91
  },
89
92
  });
90
93
  rl.registerAction("company.getScorePlan", {
94
+ access: "read",
91
95
  description: "Get score improvement plan for a target score",
92
96
  inputSchema: {
93
97
  domain: { type: "string", required: true },
@@ -101,6 +105,7 @@ export default function securityScorecard(rl) {
101
105
  });
102
106
  // ── Industry ────────────────────────────────────────
103
107
  rl.registerAction("industry.getScore", {
108
+ access: "read",
104
109
  description: "Get an industry's average score",
105
110
  inputSchema: { industry: { type: "string", required: true } },
106
111
  async execute(input, ctx) {
@@ -109,6 +114,7 @@ export default function securityScorecard(rl) {
109
114
  });
110
115
  // ── Portfolio ───────────────────────────────────────
111
116
  rl.registerAction("portfolio.create", {
117
+ access: "write",
112
118
  description: "Create a portfolio",
113
119
  inputSchema: {
114
120
  name: { type: "string", required: true },
@@ -129,6 +135,7 @@ export default function securityScorecard(rl) {
129
135
  },
130
136
  });
131
137
  rl.registerAction("portfolio.list", {
138
+ access: "read",
132
139
  description: "List all portfolios",
133
140
  inputSchema: { limit: { type: "number", required: false } },
134
141
  async execute(input, ctx) {
@@ -140,6 +147,7 @@ export default function securityScorecard(rl) {
140
147
  },
141
148
  });
142
149
  rl.registerAction("portfolio.delete", {
150
+ access: "write",
143
151
  description: "Delete a portfolio",
144
152
  inputSchema: { portfolioId: { type: "string", required: true } },
145
153
  async execute(input, ctx) {
@@ -148,6 +156,7 @@ export default function securityScorecard(rl) {
148
156
  },
149
157
  });
150
158
  rl.registerAction("portfolioCompany.add", {
159
+ access: "write",
151
160
  description: "Add a company to a portfolio",
152
161
  inputSchema: {
153
162
  portfolioId: { type: "string", required: true },
@@ -159,6 +168,7 @@ export default function securityScorecard(rl) {
159
168
  },
160
169
  });
161
170
  rl.registerAction("portfolioCompany.remove", {
171
+ access: "write",
162
172
  description: "Remove a company from a portfolio",
163
173
  inputSchema: {
164
174
  portfolioId: { type: "string", required: true },
@@ -171,6 +181,7 @@ export default function securityScorecard(rl) {
171
181
  },
172
182
  });
173
183
  rl.registerAction("portfolioCompany.list", {
184
+ access: "read",
174
185
  description: "List companies in a portfolio",
175
186
  inputSchema: {
176
187
  portfolioId: { type: "string", required: true },
@@ -187,6 +198,7 @@ export default function securityScorecard(rl) {
187
198
  });
188
199
  // ── Invite ──────────────────────────────────────────
189
200
  rl.registerAction("invite.create", {
201
+ access: "write",
190
202
  description: "Send an invitation",
191
203
  inputSchema: {
192
204
  email: { type: "string", required: true },
@@ -206,6 +218,7 @@ export default function securityScorecard(rl) {
206
218
  });
207
219
  // ── Report ──────────────────────────────────────────
208
220
  rl.registerAction("report.generate", {
221
+ access: "write",
209
222
  description: "Generate a report",
210
223
  inputSchema: {
211
224
  reportType: {
@@ -245,6 +258,7 @@ export default function securityScorecard(rl) {
245
258
  },
246
259
  });
247
260
  rl.registerAction("report.list", {
261
+ access: "read",
248
262
  description: "List recent reports",
249
263
  inputSchema: { limit: { type: "number", required: false } },
250
264
  async execute(input, ctx) {
@@ -25,6 +25,7 @@ export default function segment(rl) {
25
25
  });
26
26
  const key = (ctx) => ctx.connection.config.writeKey;
27
27
  rl.registerAction("identify.create", {
28
+ access: "write",
28
29
  description: "Identify a user (tie user to traits)",
29
30
  inputSchema: {
30
31
  userId: {
@@ -58,6 +59,7 @@ export default function segment(rl) {
58
59
  },
59
60
  });
60
61
  rl.registerAction("track.event", {
62
+ access: "write",
61
63
  description: "Track an event",
62
64
  inputSchema: {
63
65
  event: { type: "string", required: true, description: "Event name" },
@@ -88,6 +90,7 @@ export default function segment(rl) {
88
90
  },
89
91
  });
90
92
  rl.registerAction("track.page", {
93
+ access: "write",
91
94
  description: "Track a page view",
92
95
  inputSchema: {
93
96
  name: { type: "string", required: true, description: "Page name" },
@@ -114,6 +117,7 @@ export default function segment(rl) {
114
117
  },
115
118
  });
116
119
  rl.registerAction("group.add", {
120
+ access: "write",
117
121
  description: "Associate a user with a group",
118
122
  inputSchema: {
119
123
  groupId: { type: "string", required: true },
@@ -40,6 +40,7 @@ export default function sendgrid(rl) {
40
40
  const key = (ctx) => ctx.connection.config.apiKey;
41
41
  // ── Mail ────────────────────────────────────────────
42
42
  rl.registerAction("mail.send", {
43
+ access: "write",
43
44
  description: "Send an email via SendGrid",
44
45
  inputSchema: {
45
46
  to: {
@@ -117,6 +118,7 @@ export default function sendgrid(rl) {
117
118
  });
118
119
  // ── Contact ─────────────────────────────────────────
119
120
  rl.registerAction("contact.get", {
121
+ access: "read",
120
122
  description: "Get a contact by ID or email",
121
123
  inputSchema: {
122
124
  contactId: { type: "string", required: false },
@@ -138,6 +140,7 @@ export default function sendgrid(rl) {
138
140
  },
139
141
  });
140
142
  rl.registerAction("contact.list", {
143
+ access: "read",
141
144
  description: "List contacts (optionally with SGQL query)",
142
145
  inputSchema: {
143
146
  query: {
@@ -166,6 +169,7 @@ export default function sendgrid(rl) {
166
169
  },
167
170
  });
168
171
  rl.registerAction("contact.upsert", {
172
+ access: "write",
169
173
  description: "Create or update contacts",
170
174
  inputSchema: {
171
175
  contacts: {
@@ -189,6 +193,7 @@ export default function sendgrid(rl) {
189
193
  },
190
194
  });
191
195
  rl.registerAction("contact.delete", {
196
+ access: "write",
192
197
  description: "Delete contacts by IDs",
193
198
  inputSchema: {
194
199
  ids: {
@@ -205,6 +210,7 @@ export default function sendgrid(rl) {
205
210
  });
206
211
  // ── List ────────────────────────────────────────────
207
212
  rl.registerAction("list.create", {
213
+ access: "write",
208
214
  description: "Create a contact list",
209
215
  inputSchema: { name: { type: "string", required: true } },
210
216
  async execute(input, ctx) {
@@ -215,6 +221,7 @@ export default function sendgrid(rl) {
215
221
  },
216
222
  });
217
223
  rl.registerAction("list.get", {
224
+ access: "read",
218
225
  description: "Get a list by ID",
219
226
  inputSchema: { listId: { type: "string", required: true } },
220
227
  async execute(input, ctx) {
@@ -223,6 +230,7 @@ export default function sendgrid(rl) {
223
230
  },
224
231
  });
225
232
  rl.registerAction("list.list", {
233
+ access: "read",
226
234
  description: "List all contact lists",
227
235
  inputSchema: { limit: { type: "number", required: false } },
228
236
  async execute(input, ctx) {
@@ -235,6 +243,7 @@ export default function sendgrid(rl) {
235
243
  },
236
244
  });
237
245
  rl.registerAction("list.update", {
246
+ access: "write",
238
247
  description: "Update a list name",
239
248
  inputSchema: {
240
249
  listId: { type: "string", required: true },
@@ -247,6 +256,7 @@ export default function sendgrid(rl) {
247
256
  },
248
257
  });
249
258
  rl.registerAction("list.delete", {
259
+ access: "write",
250
260
  description: "Delete a list",
251
261
  inputSchema: {
252
262
  listId: { type: "string", required: true },
@@ -38,6 +38,7 @@ export default function sendy(rl) {
38
38
  },
39
39
  });
40
40
  rl.registerAction("campaign.create", {
41
+ access: "write",
41
42
  description: "Create (and optionally send) an email campaign",
42
43
  inputSchema: {
43
44
  fromName: { type: "string", required: true },
@@ -97,6 +98,7 @@ export default function sendy(rl) {
97
98
  },
98
99
  });
99
100
  rl.registerAction("subscriber.add", {
101
+ access: "write",
100
102
  description: "Add a subscriber to a list",
101
103
  inputSchema: {
102
104
  email: { type: "string", required: true },
@@ -115,6 +117,7 @@ export default function sendy(rl) {
115
117
  },
116
118
  });
117
119
  rl.registerAction("subscriber.count", {
120
+ access: "read",
118
121
  description: "Get active subscriber count for a list",
119
122
  inputSchema: { listId: { type: "string", required: true } },
120
123
  async execute(input, ctx) {
@@ -126,6 +129,7 @@ export default function sendy(rl) {
126
129
  },
127
130
  });
128
131
  rl.registerAction("subscriber.delete", {
132
+ access: "write",
129
133
  description: "Delete a subscriber from a list",
130
134
  inputSchema: {
131
135
  email: { type: "string", required: true },
@@ -140,6 +144,7 @@ export default function sendy(rl) {
140
144
  },
141
145
  });
142
146
  rl.registerAction("subscriber.unsubscribe", {
147
+ access: "write",
143
148
  description: "Unsubscribe an email from a list",
144
149
  inputSchema: {
145
150
  email: { type: "string", required: true },
@@ -157,6 +162,7 @@ export default function sendy(rl) {
157
162
  },
158
163
  });
159
164
  rl.registerAction("subscriber.status", {
165
+ access: "read",
160
166
  description: "Get subscription status of an email",
161
167
  inputSchema: {
162
168
  email: { type: "string", required: true },