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
@@ -19,6 +19,7 @@ export default function parallel(rl) {
19
19
  },
20
20
  });
21
21
  rl.registerAction("search", {
22
+ access: "read",
22
23
  description: "Search the live web with Parallel.ai and get ranked results with extracted excerpts. Use this to ground answers in current web content (news, prices, regulations, company info) instead of stale knowledge. Provide an `objective` (natural-language goal) and/or explicit `search_queries`.",
23
24
  inputSchema: {
24
25
  objective: {
@@ -75,6 +75,7 @@ export default function paypal(rl) {
75
75
  },
76
76
  });
77
77
  rl.registerAction("payout.create", {
78
+ access: "write",
78
79
  description: "Create a batch payout",
79
80
  inputSchema: {
80
81
  senderBatchId: {
@@ -109,6 +110,7 @@ export default function paypal(rl) {
109
110
  },
110
111
  });
111
112
  rl.registerAction("payout.get", {
113
+ access: "read",
112
114
  description: "Get a batch payout by ID (returns items)",
113
115
  inputSchema: {
114
116
  payoutBatchId: { type: "string", required: true },
@@ -128,6 +130,7 @@ export default function paypal(rl) {
128
130
  },
129
131
  });
130
132
  rl.registerAction("payoutItem.get", {
133
+ access: "read",
131
134
  description: "Get a payout item by ID",
132
135
  inputSchema: { payoutItemId: { type: "string", required: true } },
133
136
  async execute(input, ctx) {
@@ -136,6 +139,7 @@ export default function paypal(rl) {
136
139
  },
137
140
  });
138
141
  rl.registerAction("payoutItem.cancel", {
142
+ access: "write",
139
143
  description: "Cancel an unclaimed payout item",
140
144
  inputSchema: { payoutItemId: { type: "string", required: true } },
141
145
  async execute(input, ctx) {
@@ -22,6 +22,7 @@ export default function peekalink(rl) {
22
22
  });
23
23
  const key = (ctx) => ctx.connection.config.apiKey;
24
24
  rl.registerAction("link.preview", {
25
+ access: "read",
25
26
  description: "Get a rich preview for a URL",
26
27
  inputSchema: {
27
28
  url: { type: "string", required: true, description: "URL to preview" },
@@ -32,6 +33,7 @@ export default function peekalink(rl) {
32
33
  },
33
34
  });
34
35
  rl.registerAction("link.isAvailable", {
36
+ access: "read",
35
37
  description: "Check whether a preview is available for a URL",
36
38
  inputSchema: {
37
39
  url: { type: "string", required: true, description: "URL to check" },
@@ -35,6 +35,7 @@ export default function phantombuster(rl) {
35
35
  });
36
36
  const key = (ctx) => ctx.connection.config.apiKey;
37
37
  rl.registerAction("agent.delete", {
38
+ access: "write",
38
39
  description: "Delete an agent",
39
40
  inputSchema: { agentId: { type: "string", required: true } },
40
41
  async execute(input, ctx) {
@@ -44,6 +45,7 @@ export default function phantombuster(rl) {
44
45
  },
45
46
  });
46
47
  rl.registerAction("agent.get", {
48
+ access: "read",
47
49
  description: "Get agent details",
48
50
  inputSchema: { agentId: { type: "string", required: true } },
49
51
  async execute(input, ctx) {
@@ -54,6 +56,7 @@ export default function phantombuster(rl) {
54
56
  },
55
57
  });
56
58
  rl.registerAction("agent.getOutput", {
59
+ access: "read",
57
60
  description: "Get the output of the last agent run",
58
61
  inputSchema: {
59
62
  agentId: { type: "string", required: true },
@@ -76,6 +79,7 @@ export default function phantombuster(rl) {
76
79
  },
77
80
  });
78
81
  rl.registerAction("agent.list", {
82
+ access: "read",
79
83
  description: "List all agents",
80
84
  inputSchema: { limit: { type: "number", required: false } },
81
85
  async execute(input, ctx) {
@@ -87,6 +91,7 @@ export default function phantombuster(rl) {
87
91
  },
88
92
  });
89
93
  rl.registerAction("agent.launch", {
94
+ access: "write",
90
95
  description: "Launch an agent",
91
96
  inputSchema: {
92
97
  agentId: { type: "string", required: true },
@@ -38,6 +38,7 @@ export default function philipsHue(rl) {
38
38
  };
39
39
  }
40
40
  rl.registerAction("light.get", {
41
+ access: "read",
41
42
  description: "Get a light by ID",
42
43
  inputSchema: { lightId: { type: "string", required: true } },
43
44
  async execute(input, ctx) {
@@ -47,6 +48,7 @@ export default function philipsHue(rl) {
47
48
  },
48
49
  });
49
50
  rl.registerAction("light.list", {
51
+ access: "read",
50
52
  description: "List all lights",
51
53
  inputSchema: { limit: { type: "number", required: false } },
52
54
  async execute(input, ctx) {
@@ -63,6 +65,7 @@ export default function philipsHue(rl) {
63
65
  },
64
66
  });
65
67
  rl.registerAction("light.update", {
68
+ access: "write",
66
69
  description: "Update a light's state (on/off, brightness, color, etc.)",
67
70
  inputSchema: {
68
71
  lightId: { type: "string", required: true },
@@ -138,6 +141,7 @@ export default function philipsHue(rl) {
138
141
  },
139
142
  });
140
143
  rl.registerAction("light.delete", {
144
+ access: "write",
141
145
  description: "Delete a light from the bridge",
142
146
  inputSchema: { lightId: { type: "string", required: true } },
143
147
  async execute(input, ctx) {
@@ -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: {