runline 0.11.5 → 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 (253) 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/index.js +15 -0
  193. package/dist/plugins/shiftLabs/src/issues.js +74 -0
  194. package/dist/plugins/shiftLabs/src/pages.js +148 -0
  195. package/dist/plugins/shiftLabs/src/shared.js +69 -0
  196. package/dist/plugins/shopify/src/index.js +10 -0
  197. package/dist/plugins/signl4/src/index.js +2 -0
  198. package/dist/plugins/slack/src/index.js +38 -0
  199. package/dist/plugins/sms77/src/index.js +2 -0
  200. package/dist/plugins/splunk/src/index.js +16 -0
  201. package/dist/plugins/spotify/src/index.js +30 -0
  202. package/dist/plugins/stackby/src/index.js +4 -0
  203. package/dist/plugins/steel/src/browser.js +7 -0
  204. package/dist/plugins/steel/src/captchas.js +3 -0
  205. package/dist/plugins/steel/src/credentials.js +4 -0
  206. package/dist/plugins/steel/src/extensions.js +5 -0
  207. package/dist/plugins/steel/src/files.js +10 -0
  208. package/dist/plugins/steel/src/profiles.js +4 -0
  209. package/dist/plugins/steel/src/sessions.js +11 -0
  210. package/dist/plugins/storyblok/src/index.js +7 -0
  211. package/dist/plugins/strapi/src/index.js +5 -0
  212. package/dist/plugins/strava/src/index.js +6 -0
  213. package/dist/plugins/stripe/src/index.js +20 -0
  214. package/dist/plugins/supabase/src/index.js +5 -0
  215. package/dist/plugins/syncromsp/src/index.js +20 -0
  216. package/dist/plugins/tapfiliate/src/index.js +11 -0
  217. package/dist/plugins/telegram/src/index.js +21 -0
  218. package/dist/plugins/thehive/src/index.js +23 -0
  219. package/dist/plugins/thehiveProject/src/index.js +31 -0
  220. package/dist/plugins/todoist/src/index.js +31 -0
  221. package/dist/plugins/together/src/index.js +1 -0
  222. package/dist/plugins/travisci/src/index.js +5 -0
  223. package/dist/plugins/trello/src/index.js +37 -0
  224. package/dist/plugins/twake/src/index.js +1 -0
  225. package/dist/plugins/twilio/src/index.js +2 -0
  226. package/dist/plugins/twist/src/index.js +22 -0
  227. package/dist/plugins/twitter/src/index.js +8 -0
  228. package/dist/plugins/unleashedSoftware/src/index.js +3 -0
  229. package/dist/plugins/uplead/src/index.js +2 -0
  230. package/dist/plugins/uproc/src/index.js +1 -0
  231. package/dist/plugins/uptimerobot/src/index.js +22 -0
  232. package/dist/plugins/urlscanio/src/index.js +3 -0
  233. package/dist/plugins/vercel/src/account.js +1 -0
  234. package/dist/plugins/vercel/src/deployments.js +5 -0
  235. package/dist/plugins/vercel/src/env.js +4 -0
  236. package/dist/plugins/vercel/src/projects.js +2 -0
  237. package/dist/plugins/vercel/src/shared.js +1 -0
  238. package/dist/plugins/vero/src/index.js +6 -0
  239. package/dist/plugins/vonage/src/index.js +1 -0
  240. package/dist/plugins/wekan/src/index.js +24 -0
  241. package/dist/plugins/woocommerce/src/index.js +5 -0
  242. package/dist/plugins/wordpress/src/index.js +10 -0
  243. package/dist/plugins/xai/src/index.js +1 -0
  244. package/dist/plugins/xero/src/index.js +8 -0
  245. package/dist/plugins/yourls/src/index.js +3 -0
  246. package/dist/plugins/zammad/src/index.js +12 -0
  247. package/dist/plugins/zendesk/src/index.js +18 -0
  248. package/dist/plugins/zoho/src/index.js +6 -0
  249. package/dist/plugins/zoom/src/index.js +5 -0
  250. package/dist/plugins/zulip/src/index.js +15 -0
  251. package/dist/sdk.d.ts +2 -1
  252. package/dist/sdk.js +1 -0
  253. package/package.json +1 -1
@@ -25,6 +25,7 @@ export default function hackernews(rl) {
25
25
  // No auth needed
26
26
  rl.setConnectionSchema({});
27
27
  rl.registerAction("article.get", {
28
+ access: "read",
28
29
  description: "Get a Hacker News article/item by ID",
29
30
  inputSchema: {
30
31
  articleId: { type: "string", required: true, description: "Item ID" },
@@ -34,6 +35,7 @@ export default function hackernews(rl) {
34
35
  },
35
36
  });
36
37
  rl.registerAction("article.search", {
38
+ access: "read",
37
39
  description: "Search Hacker News articles",
38
40
  inputSchema: {
39
41
  query: { type: "string", required: true, description: "Search query" },
@@ -56,6 +58,7 @@ export default function hackernews(rl) {
56
58
  },
57
59
  });
58
60
  rl.registerAction("user.get", {
61
+ access: "read",
59
62
  description: "Get a Hacker News user by username",
60
63
  inputSchema: {
61
64
  username: { type: "string", required: true, description: "Username" },
@@ -65,6 +68,7 @@ export default function hackernews(rl) {
65
68
  },
66
69
  });
67
70
  rl.registerAction("all.top", {
71
+ access: "read",
68
72
  description: "Get top stories",
69
73
  inputSchema: {
70
74
  limit: {
@@ -81,6 +85,7 @@ export default function hackernews(rl) {
81
85
  },
82
86
  });
83
87
  rl.registerAction("all.new", {
88
+ access: "read",
84
89
  description: "Get newest stories",
85
90
  inputSchema: {
86
91
  limit: {
@@ -97,6 +102,7 @@ export default function hackernews(rl) {
97
102
  },
98
103
  });
99
104
  rl.registerAction("all.best", {
105
+ access: "read",
100
106
  description: "Get best stories",
101
107
  inputSchema: {
102
108
  limit: {
@@ -60,6 +60,7 @@ async function req(ctx, method, endpoint, body, qs) {
60
60
  }
61
61
  function registerCrud(rl, resource, apiPath) {
62
62
  rl.registerAction(`${resource}.create`, {
63
+ access: "write",
63
64
  description: `Create a ${resource}`,
64
65
  inputSchema: {
65
66
  properties: {
@@ -75,6 +76,7 @@ function registerCrud(rl, resource, apiPath) {
75
76
  },
76
77
  });
77
78
  rl.registerAction(`${resource}.get`, {
79
+ access: "read",
78
80
  description: `Get a ${resource}`,
79
81
  inputSchema: {
80
82
  id: { type: "number", required: true, description: `${resource} ID` },
@@ -84,6 +86,7 @@ function registerCrud(rl, resource, apiPath) {
84
86
  },
85
87
  });
86
88
  rl.registerAction(`${resource}.list`, {
89
+ access: "read",
87
90
  description: `List ${resource}s`,
88
91
  inputSchema: {
89
92
  limit: { type: "number", required: false, description: "Max results" },
@@ -100,6 +103,7 @@ function registerCrud(rl, resource, apiPath) {
100
103
  },
101
104
  });
102
105
  rl.registerAction(`${resource}.update`, {
106
+ access: "write",
103
107
  description: `Update a ${resource}`,
104
108
  inputSchema: {
105
109
  id: { type: "number", required: true, description: `${resource} ID` },
@@ -115,6 +119,7 @@ function registerCrud(rl, resource, apiPath) {
115
119
  },
116
120
  });
117
121
  rl.registerAction(`${resource}.delete`, {
122
+ access: "write",
118
123
  description: `Delete a ${resource}`,
119
124
  inputSchema: {
120
125
  id: { type: "number", required: true, description: `${resource} ID` },
@@ -47,6 +47,7 @@ function unwrapList(data, key) {
47
47
  }
48
48
  function registerCrud(rl, resource, apiPath, listKey) {
49
49
  rl.registerAction(`${resource}.create`, {
50
+ access: "write",
50
51
  description: `Create a ${resource}`,
51
52
  inputSchema: {
52
53
  properties: {
@@ -60,6 +61,7 @@ function registerCrud(rl, resource, apiPath, listKey) {
60
61
  },
61
62
  });
62
63
  rl.registerAction(`${resource}.get`, {
64
+ access: "read",
63
65
  description: `Get a ${resource}`,
64
66
  inputSchema: {
65
67
  id: { type: "number", required: true, description: `${resource} ID` },
@@ -69,6 +71,7 @@ function registerCrud(rl, resource, apiPath, listKey) {
69
71
  },
70
72
  });
71
73
  rl.registerAction(`${resource}.list`, {
74
+ access: "read",
72
75
  description: `List ${resource}s`,
73
76
  inputSchema: {
74
77
  limit: { type: "number", required: false, description: "Max results" },
@@ -85,6 +88,7 @@ function registerCrud(rl, resource, apiPath, listKey) {
85
88
  },
86
89
  });
87
90
  rl.registerAction(`${resource}.update`, {
91
+ access: "write",
88
92
  description: `Update a ${resource}`,
89
93
  inputSchema: {
90
94
  id: { type: "number", required: true, description: `${resource} ID` },
@@ -100,6 +104,7 @@ function registerCrud(rl, resource, apiPath, listKey) {
100
104
  },
101
105
  });
102
106
  rl.registerAction(`${resource}.delete`, {
107
+ access: "write",
103
108
  description: `Delete a ${resource}`,
104
109
  inputSchema: {
105
110
  id: { type: "number", required: true, description: `${resource} ID` },
@@ -138,6 +143,7 @@ export default function harvest(rl) {
138
143
  // User (CRUD + me)
139
144
  registerCrud(rl, "user", "users", "users");
140
145
  rl.registerAction("user.me", {
146
+ access: "read",
141
147
  description: "Get the currently authenticated user",
142
148
  async execute(_input, ctx) {
143
149
  return hv(ctx, "GET", "users/me");
@@ -145,6 +151,7 @@ export default function harvest(rl) {
145
151
  });
146
152
  // Time entry (special operations)
147
153
  rl.registerAction("timeEntry.create", {
154
+ access: "write",
148
155
  description: "Create a time entry",
149
156
  inputSchema: {
150
157
  projectId: { type: "number", required: true, description: "Project ID" },
@@ -197,6 +204,7 @@ export default function harvest(rl) {
197
204
  },
198
205
  });
199
206
  rl.registerAction("timeEntry.get", {
207
+ access: "read",
200
208
  description: "Get a time entry",
201
209
  inputSchema: {
202
210
  id: { type: "number", required: true, description: "Time entry ID" },
@@ -206,6 +214,7 @@ export default function harvest(rl) {
206
214
  },
207
215
  });
208
216
  rl.registerAction("timeEntry.list", {
217
+ access: "read",
209
218
  description: "List time entries",
210
219
  inputSchema: {
211
220
  limit: { type: "number", required: false, description: "Max results" },
@@ -251,6 +260,7 @@ export default function harvest(rl) {
251
260
  },
252
261
  });
253
262
  rl.registerAction("timeEntry.update", {
263
+ access: "write",
254
264
  description: "Update a time entry",
255
265
  inputSchema: {
256
266
  id: { type: "number", required: true, description: "Time entry ID" },
@@ -266,6 +276,7 @@ export default function harvest(rl) {
266
276
  },
267
277
  });
268
278
  rl.registerAction("timeEntry.delete", {
279
+ access: "write",
269
280
  description: "Delete a time entry",
270
281
  inputSchema: {
271
282
  id: { type: "number", required: true, description: "Time entry ID" },
@@ -276,6 +287,7 @@ export default function harvest(rl) {
276
287
  },
277
288
  });
278
289
  rl.registerAction("timeEntry.restart", {
290
+ access: "write",
279
291
  description: "Restart a stopped time entry",
280
292
  inputSchema: {
281
293
  id: { type: "number", required: true, description: "Time entry ID" },
@@ -285,6 +297,7 @@ export default function harvest(rl) {
285
297
  },
286
298
  });
287
299
  rl.registerAction("timeEntry.stop", {
300
+ access: "write",
288
301
  description: "Stop a running time entry",
289
302
  inputSchema: {
290
303
  id: { type: "number", required: true, description: "Time entry ID" },
@@ -295,6 +308,7 @@ export default function harvest(rl) {
295
308
  });
296
309
  // Company (read-only)
297
310
  rl.registerAction("company.get", {
311
+ access: "read",
298
312
  description: "Get company info",
299
313
  async execute(_input, ctx) {
300
314
  return hv(ctx, "GET", "company");
@@ -48,6 +48,7 @@ export default function helpscout(rl) {
48
48
  const tok = (ctx) => ctx.connection.config.accessToken;
49
49
  // ── Conversation ────────────────────────────────────
50
50
  rl.registerAction("conversation.create", {
51
+ access: "write",
51
52
  description: "Create a conversation",
52
53
  inputSchema: {
53
54
  subject: { type: "string", required: true, description: "Subject" },
@@ -91,6 +92,7 @@ export default function helpscout(rl) {
91
92
  },
92
93
  });
93
94
  rl.registerAction("conversation.get", {
95
+ access: "read",
94
96
  description: "Get a conversation",
95
97
  inputSchema: {
96
98
  conversationId: {
@@ -104,6 +106,7 @@ export default function helpscout(rl) {
104
106
  },
105
107
  });
106
108
  rl.registerAction("conversation.list", {
109
+ access: "read",
107
110
  description: "List conversations",
108
111
  inputSchema: {
109
112
  mailboxId: {
@@ -134,6 +137,7 @@ export default function helpscout(rl) {
134
137
  },
135
138
  });
136
139
  rl.registerAction("conversation.delete", {
140
+ access: "write",
137
141
  description: "Delete a conversation",
138
142
  inputSchema: {
139
143
  conversationId: {
@@ -149,6 +153,7 @@ export default function helpscout(rl) {
149
153
  });
150
154
  // ── Customer ────────────────────────────────────────
151
155
  rl.registerAction("customer.create", {
156
+ access: "write",
152
157
  description: "Create a customer",
153
158
  inputSchema: {
154
159
  firstName: { type: "string", required: true, description: "First name" },
@@ -173,6 +178,7 @@ export default function helpscout(rl) {
173
178
  },
174
179
  });
175
180
  rl.registerAction("customer.get", {
181
+ access: "read",
176
182
  description: "Get a customer",
177
183
  inputSchema: {
178
184
  customerId: {
@@ -186,6 +192,7 @@ export default function helpscout(rl) {
186
192
  },
187
193
  });
188
194
  rl.registerAction("customer.list", {
195
+ access: "read",
189
196
  description: "List customers",
190
197
  inputSchema: {
191
198
  limit: { type: "number", required: false, description: "Max results" },
@@ -202,6 +209,7 @@ export default function helpscout(rl) {
202
209
  },
203
210
  });
204
211
  rl.registerAction("customer.update", {
212
+ access: "write",
205
213
  description: "Update a customer",
206
214
  inputSchema: {
207
215
  customerId: {
@@ -221,6 +229,7 @@ export default function helpscout(rl) {
221
229
  },
222
230
  });
223
231
  rl.registerAction("customer.getProperties", {
232
+ access: "read",
224
233
  description: "Get custom properties for a customer",
225
234
  inputSchema: {
226
235
  customerId: {
@@ -235,6 +244,7 @@ export default function helpscout(rl) {
235
244
  });
236
245
  // ── Mailbox ─────────────────────────────────────────
237
246
  rl.registerAction("mailbox.get", {
247
+ access: "read",
238
248
  description: "Get a mailbox",
239
249
  inputSchema: {
240
250
  mailboxId: { type: "number", required: true, description: "Mailbox ID" },
@@ -244,6 +254,7 @@ export default function helpscout(rl) {
244
254
  },
245
255
  });
246
256
  rl.registerAction("mailbox.list", {
257
+ access: "read",
247
258
  description: "List mailboxes",
248
259
  async execute(_input, ctx) {
249
260
  return unwrapEmbedded(await apiRequest(tok(ctx), "GET", "/mailboxes"), "mailboxes");
@@ -251,6 +262,7 @@ export default function helpscout(rl) {
251
262
  });
252
263
  // ── Thread ──────────────────────────────────────────
253
264
  rl.registerAction("thread.create", {
265
+ access: "write",
254
266
  description: "Create a thread (reply/note) on a conversation",
255
267
  inputSchema: {
256
268
  conversationId: {
@@ -283,6 +295,7 @@ export default function helpscout(rl) {
283
295
  },
284
296
  });
285
297
  rl.registerAction("thread.list", {
298
+ access: "read",
286
299
  description: "List threads in a conversation",
287
300
  inputSchema: {
288
301
  conversationId: {
@@ -49,6 +49,7 @@ export default function highlevel(rl) {
49
49
  });
50
50
  // ── Contact ─────────────────────────────────────────
51
51
  rl.registerAction("contact.upsert", {
52
+ access: "write",
52
53
  description: "Create or update a contact (upsert by email/phone)",
53
54
  inputSchema: {
54
55
  email: { type: "string", required: false },
@@ -87,6 +88,7 @@ export default function highlevel(rl) {
87
88
  },
88
89
  });
89
90
  rl.registerAction("contact.get", {
91
+ access: "read",
90
92
  description: "Get a contact by ID",
91
93
  inputSchema: { id: { type: "string", required: true } },
92
94
  async execute(input, ctx) {
@@ -96,6 +98,7 @@ export default function highlevel(rl) {
96
98
  },
97
99
  });
98
100
  rl.registerAction("contact.list", {
101
+ access: "read",
99
102
  description: "List contacts",
100
103
  inputSchema: {
101
104
  limit: { type: "number", required: false },
@@ -128,6 +131,7 @@ export default function highlevel(rl) {
128
131
  },
129
132
  });
130
133
  rl.registerAction("contact.update", {
134
+ access: "write",
131
135
  description: "Update a contact",
132
136
  inputSchema: {
133
137
  id: { type: "string", required: true },
@@ -157,6 +161,7 @@ export default function highlevel(rl) {
157
161
  },
158
162
  });
159
163
  rl.registerAction("contact.delete", {
164
+ access: "write",
160
165
  description: "Delete a contact",
161
166
  inputSchema: { id: { type: "string", required: true } },
162
167
  async execute(input, ctx) {
@@ -167,6 +172,7 @@ export default function highlevel(rl) {
167
172
  });
168
173
  // ── Opportunity ─────────────────────────────────────
169
174
  rl.registerAction("opportunity.create", {
175
+ access: "write",
170
176
  description: "Create an opportunity",
171
177
  inputSchema: {
172
178
  contactId: { type: "string", required: true },
@@ -202,6 +208,7 @@ export default function highlevel(rl) {
202
208
  },
203
209
  });
204
210
  rl.registerAction("opportunity.get", {
211
+ access: "read",
205
212
  description: "Get an opportunity",
206
213
  inputSchema: { id: { type: "string", required: true } },
207
214
  async execute(input, ctx) {
@@ -210,6 +217,7 @@ export default function highlevel(rl) {
210
217
  },
211
218
  });
212
219
  rl.registerAction("opportunity.list", {
220
+ access: "read",
213
221
  description: "List opportunities",
214
222
  inputSchema: {
215
223
  limit: { type: "number", required: false },
@@ -246,6 +254,7 @@ export default function highlevel(rl) {
246
254
  },
247
255
  });
248
256
  rl.registerAction("opportunity.update", {
257
+ access: "write",
249
258
  description: "Update an opportunity",
250
259
  inputSchema: {
251
260
  id: { type: "string", required: true },
@@ -267,6 +276,7 @@ export default function highlevel(rl) {
267
276
  },
268
277
  });
269
278
  rl.registerAction("opportunity.delete", {
279
+ access: "write",
270
280
  description: "Delete an opportunity",
271
281
  inputSchema: { id: { type: "string", required: true } },
272
282
  async execute(input, ctx) {
@@ -277,6 +287,7 @@ export default function highlevel(rl) {
277
287
  });
278
288
  // ── Task (scoped to contact) ────────────────────────
279
289
  rl.registerAction("task.create", {
290
+ access: "write",
280
291
  description: "Create a task for a contact",
281
292
  inputSchema: {
282
293
  contactId: { type: "string", required: true },
@@ -293,6 +304,7 @@ export default function highlevel(rl) {
293
304
  },
294
305
  });
295
306
  rl.registerAction("task.get", {
307
+ access: "read",
296
308
  description: "Get a task",
297
309
  inputSchema: {
298
310
  contactId: { type: "string", required: true },
@@ -305,6 +317,7 @@ export default function highlevel(rl) {
305
317
  },
306
318
  });
307
319
  rl.registerAction("task.list", {
320
+ access: "read",
308
321
  description: "List tasks for a contact",
309
322
  inputSchema: { contactId: { type: "string", required: true } },
310
323
  async execute(input, ctx) {
@@ -314,6 +327,7 @@ export default function highlevel(rl) {
314
327
  },
315
328
  });
316
329
  rl.registerAction("task.update", {
330
+ access: "write",
317
331
  description: "Update a task",
318
332
  inputSchema: {
319
333
  contactId: { type: "string", required: true },
@@ -331,6 +345,7 @@ export default function highlevel(rl) {
331
345
  },
332
346
  });
333
347
  rl.registerAction("task.delete", {
348
+ access: "write",
334
349
  description: "Delete a task",
335
350
  inputSchema: {
336
351
  contactId: { type: "string", required: true },
@@ -345,6 +360,7 @@ export default function highlevel(rl) {
345
360
  });
346
361
  // ── Calendar ────────────────────────────────────────
347
362
  rl.registerAction("calendar.bookAppointment", {
363
+ access: "write",
348
364
  description: "Book a calendar appointment",
349
365
  inputSchema: {
350
366
  calendarId: { type: "string", required: true },
@@ -372,6 +388,7 @@ export default function highlevel(rl) {
372
388
  },
373
389
  });
374
390
  rl.registerAction("calendar.getFreeSlots", {
391
+ access: "read",
375
392
  description: "Get free slots for a calendar",
376
393
  inputSchema: {
377
394
  calendarId: { type: "string", required: true },
@@ -66,24 +66,28 @@ export default function homeAssistant(rl) {
66
66
  },
67
67
  });
68
68
  rl.registerAction("config.get", {
69
+ access: "read",
69
70
  description: "Get Home Assistant configuration",
70
71
  async execute(_input, ctx) {
71
72
  return ha(ctx, "GET", "/config");
72
73
  },
73
74
  });
74
75
  rl.registerAction("config.check", {
76
+ access: "read",
75
77
  description: "Check if configuration is valid",
76
78
  async execute(_input, ctx) {
77
79
  return ha(ctx, "POST", "/config/core/check_config");
78
80
  },
79
81
  });
80
82
  rl.registerAction("service.list", {
83
+ access: "read",
81
84
  description: "List available services",
82
85
  async execute(_input, ctx) {
83
86
  return ha(ctx, "GET", "/services");
84
87
  },
85
88
  });
86
89
  rl.registerAction("service.call", {
90
+ access: "write",
87
91
  description: "Call a service",
88
92
  inputSchema: {
89
93
  domain: {
@@ -108,12 +112,14 @@ export default function homeAssistant(rl) {
108
112
  },
109
113
  });
110
114
  rl.registerAction("state.list", {
115
+ access: "read",
111
116
  description: "List all entity states",
112
117
  async execute(_input, ctx) {
113
118
  return ha(ctx, "GET", "/states");
114
119
  },
115
120
  });
116
121
  rl.registerAction("state.get", {
122
+ access: "read",
117
123
  description: "Get state of an entity",
118
124
  inputSchema: {
119
125
  entityId: {
@@ -127,6 +133,7 @@ export default function homeAssistant(rl) {
127
133
  },
128
134
  });
129
135
  rl.registerAction("state.set", {
136
+ access: "write",
130
137
  description: "Set/update state of an entity",
131
138
  inputSchema: {
132
139
  entityId: { type: "string", required: true, description: "Entity ID" },
@@ -146,12 +153,14 @@ export default function homeAssistant(rl) {
146
153
  },
147
154
  });
148
155
  rl.registerAction("event.list", {
156
+ access: "read",
149
157
  description: "List event types",
150
158
  async execute(_input, ctx) {
151
159
  return ha(ctx, "GET", "/events");
152
160
  },
153
161
  });
154
162
  rl.registerAction("event.fire", {
163
+ access: "write",
155
164
  description: "Fire an event",
156
165
  inputSchema: {
157
166
  eventType: { type: "string", required: true, description: "Event type" },
@@ -163,12 +172,14 @@ export default function homeAssistant(rl) {
163
172
  },
164
173
  });
165
174
  rl.registerAction("log.getErrors", {
175
+ access: "read",
166
176
  description: "Get error log",
167
177
  async execute(_input, ctx) {
168
178
  return ha(ctx, "GET", "/error_log");
169
179
  },
170
180
  });
171
181
  rl.registerAction("log.getLogbook", {
182
+ access: "read",
172
183
  description: "Get logbook entries",
173
184
  inputSchema: {
174
185
  entityId: {
@@ -201,6 +212,7 @@ export default function homeAssistant(rl) {
201
212
  },
202
213
  });
203
214
  rl.registerAction("template.render", {
215
+ access: "read",
204
216
  description: "Render a Jinja2 template",
205
217
  inputSchema: {
206
218
  template: {
@@ -216,6 +228,7 @@ export default function homeAssistant(rl) {
216
228
  },
217
229
  });
218
230
  rl.registerAction("history.get", {
231
+ access: "read",
219
232
  description: "Get state history for entities",
220
233
  inputSchema: {
221
234
  entityIds: {
@@ -41,6 +41,7 @@ export default function hubspot(rl) {
41
41
  // Helper for CRM objects (contacts, companies, deals, tickets)
42
42
  function registerCrmObject(resource, objectType) {
43
43
  rl.registerAction(`${resource}.create`, {
44
+ access: "write",
44
45
  description: `Create a ${resource}`,
45
46
  inputSchema: {
46
47
  properties: {
@@ -57,6 +58,7 @@ export default function hubspot(rl) {
57
58
  },
58
59
  });
59
60
  rl.registerAction(`${resource}.get`, {
61
+ access: "read",
60
62
  description: `Get a ${resource}`,
61
63
  inputSchema: {
62
64
  id: { type: "string", required: true, description: `${resource} ID` },
@@ -75,6 +77,7 @@ export default function hubspot(rl) {
75
77
  },
76
78
  });
77
79
  rl.registerAction(`${resource}.list`, {
80
+ access: "read",
78
81
  description: `List ${resource}s`,
79
82
  inputSchema: {
80
83
  limit: {
@@ -106,6 +109,7 @@ export default function hubspot(rl) {
106
109
  },
107
110
  });
108
111
  rl.registerAction(`${resource}.update`, {
112
+ access: "write",
109
113
  description: `Update a ${resource}`,
110
114
  inputSchema: {
111
115
  id: { type: "string", required: true, description: `${resource} ID` },
@@ -121,6 +125,7 @@ export default function hubspot(rl) {
121
125
  },
122
126
  });
123
127
  rl.registerAction(`${resource}.delete`, {
128
+ access: "write",
124
129
  description: `Delete a ${resource}`,
125
130
  inputSchema: {
126
131
  id: { type: "string", required: true, description: `${resource} ID` },
@@ -131,6 +136,7 @@ export default function hubspot(rl) {
131
136
  },
132
137
  });
133
138
  rl.registerAction(`${resource}.search`, {
139
+ access: "read",
134
140
  description: `Search ${resource}s`,
135
141
  inputSchema: {
136
142
  filterGroups: {
@@ -165,6 +171,7 @@ export default function hubspot(rl) {
165
171
  registerCrmObject("ticket", "tickets");
166
172
  // ── Contact List ────────────────────────────────────
167
173
  rl.registerAction("contactList.addContacts", {
174
+ access: "write",
168
175
  description: "Add contacts to a list",
169
176
  inputSchema: {
170
177
  listId: { type: "string", required: true, description: "List ID" },
@@ -182,6 +189,7 @@ export default function hubspot(rl) {
182
189
  },
183
190
  });
184
191
  rl.registerAction("contactList.removeContacts", {
192
+ access: "write",
185
193
  description: "Remove contacts from a list",
186
194
  inputSchema: {
187
195
  listId: { type: "string", required: true, description: "List ID" },
@@ -198,6 +206,7 @@ export default function hubspot(rl) {
198
206
  });
199
207
  // ── Engagement ──────────────────────────────────────
200
208
  rl.registerAction("engagement.create", {
209
+ access: "write",
201
210
  description: "Create an engagement (note, email, task, meeting, call)",
202
211
  inputSchema: {
203
212
  type: {
@@ -227,6 +236,7 @@ export default function hubspot(rl) {
227
236
  },
228
237
  });
229
238
  rl.registerAction("engagement.get", {
239
+ access: "read",
230
240
  description: "Get an engagement",
231
241
  inputSchema: {
232
242
  engagementId: {
@@ -240,6 +250,7 @@ export default function hubspot(rl) {
240
250
  },
241
251
  });
242
252
  rl.registerAction("engagement.list", {
253
+ access: "read",
243
254
  description: "List engagements",
244
255
  inputSchema: {
245
256
  limit: { type: "number", required: false, description: "Max results" },
@@ -256,6 +267,7 @@ export default function hubspot(rl) {
256
267
  },
257
268
  });
258
269
  rl.registerAction("engagement.delete", {
270
+ access: "write",
259
271
  description: "Delete an engagement",
260
272
  inputSchema: {
261
273
  engagementId: {
@@ -271,6 +283,7 @@ export default function hubspot(rl) {
271
283
  });
272
284
  // ── Form ────────────────────────────────────────────
273
285
  rl.registerAction("form.submit", {
286
+ access: "write",
274
287
  description: "Submit a HubSpot form",
275
288
  inputSchema: {
276
289
  portalId: {
@@ -299,6 +312,7 @@ export default function hubspot(rl) {
299
312
  },
300
313
  });
301
314
  rl.registerAction("form.getFields", {
315
+ access: "read",
302
316
  description: "Get form fields",
303
317
  inputSchema: {
304
318
  formId: { type: "string", required: true, description: "Form GUID" },
@@ -31,6 +31,7 @@ export default function humanticAi(rl) {
31
31
  },
32
32
  });
33
33
  rl.registerAction("profile.create", {
34
+ access: "write",
34
35
  description: "Create a user profile from LinkedIn URL or text",
35
36
  inputSchema: {
36
37
  userId: {
@@ -60,6 +61,7 @@ export default function humanticAi(rl) {
60
61
  },
61
62
  });
62
63
  rl.registerAction("profile.get", {
64
+ access: "read",
63
65
  description: "Get a user profile/personality analysis",
64
66
  inputSchema: {
65
67
  userId: {
@@ -82,6 +84,7 @@ export default function humanticAi(rl) {
82
84
  },
83
85
  });
84
86
  rl.registerAction("profile.update", {
87
+ access: "write",
85
88
  description: "Update a user profile with new data",
86
89
  inputSchema: {
87
90
  userId: {
@@ -25,6 +25,7 @@ export default function hunter(rl) {
25
25
  },
26
26
  });
27
27
  rl.registerAction("domainSearch", {
28
+ access: "read",
28
29
  description: "Search for email addresses associated with a domain",
29
30
  inputSchema: {
30
31
  domain: {
@@ -51,6 +52,7 @@ export default function hunter(rl) {
51
52
  },
52
53
  });
53
54
  rl.registerAction("emailFinder", {
55
+ access: "read",
54
56
  description: "Find the email address of a person",
55
57
  inputSchema: {
56
58
  domain: { type: "string", required: true, description: "Domain" },
@@ -64,6 +66,7 @@ export default function hunter(rl) {
64
66
  },
65
67
  });
66
68
  rl.registerAction("emailVerifier", {
69
+ access: "read",
67
70
  description: "Verify an email address",
68
71
  inputSchema: {
69
72
  email: { type: "string", required: true, description: "Email to verify" },