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
@@ -408,6 +408,7 @@ export default function googleSheets(rl) {
408
408
  });
409
409
  // ── Spreadsheet ───────────────────────────────────────
410
410
  rl.registerAction("spreadsheet.create", {
411
+ access: "write",
411
412
  description: "Create a new spreadsheet",
412
413
  inputSchema: {
413
414
  title: { type: "string", required: true },
@@ -441,6 +442,7 @@ export default function googleSheets(rl) {
441
442
  },
442
443
  });
443
444
  rl.registerAction("spreadsheet.get", {
445
+ access: "read",
444
446
  description: "Get spreadsheet metadata (sheets, properties, optional grid data)",
445
447
  inputSchema: {
446
448
  spreadsheetId: { type: "string", required: true },
@@ -465,6 +467,7 @@ export default function googleSheets(rl) {
465
467
  },
466
468
  });
467
469
  rl.registerAction("spreadsheet.delete", {
470
+ access: "write",
468
471
  description: "Delete a spreadsheet (via Drive API — requires drive.file scope)",
469
472
  inputSchema: { spreadsheetId: { type: "string", required: true } },
470
473
  async execute(input, ctx) {
@@ -475,6 +478,7 @@ export default function googleSheets(rl) {
475
478
  });
476
479
  // ── Sheet tabs ────────────────────────────────────────
477
480
  rl.registerAction("sheet.listTabs", {
481
+ access: "read",
478
482
  description: "List sheet tabs in a spreadsheet",
479
483
  inputSchema: { spreadsheetId: { type: "string", required: true } },
480
484
  async execute(input, ctx) {
@@ -483,6 +487,7 @@ export default function googleSheets(rl) {
483
487
  },
484
488
  });
485
489
  rl.registerAction("sheet.addTab", {
490
+ access: "write",
486
491
  description: "Add a new sheet tab",
487
492
  inputSchema: {
488
493
  spreadsheetId: { type: "string", required: true },
@@ -514,6 +519,7 @@ export default function googleSheets(rl) {
514
519
  },
515
520
  });
516
521
  rl.registerAction("sheet.deleteTab", {
522
+ access: "write",
517
523
  description: "Delete a sheet tab",
518
524
  inputSchema: {
519
525
  spreadsheetId: { type: "string", required: true },
@@ -534,6 +540,7 @@ export default function googleSheets(rl) {
534
540
  });
535
541
  // ── Read ──────────────────────────────────────────────
536
542
  rl.registerAction("sheet.read", {
543
+ access: "read",
537
544
  description: "Read values from a range. Returns a 2D array by default; set `asObjects=true` to pair rows with a header row and return objects.",
538
545
  inputSchema: {
539
546
  spreadsheetId: { type: "string", required: true },
@@ -590,6 +597,7 @@ export default function googleSheets(rl) {
590
597
  });
591
598
  // ── Append ────────────────────────────────────────────
592
599
  rl.registerAction("sheet.append", {
600
+ access: "write",
593
601
  description: "Append rows to the bottom. Pass `rows` as arrays (matching columns) or objects (keyed by header names; extra keys become new columns by default).",
594
602
  inputSchema: {
595
603
  spreadsheetId: { type: "string", required: true },
@@ -684,6 +692,7 @@ export default function googleSheets(rl) {
684
692
  });
685
693
  // ── Update ────────────────────────────────────────────
686
694
  rl.registerAction("sheet.update", {
695
+ access: "write",
687
696
  description: "Update rows matched by a key column (or by the synthetic 'row_number' field). Rows are objects; undefined/null values are skipped.",
688
697
  inputSchema: {
689
698
  spreadsheetId: { type: "string", required: true },
@@ -705,6 +714,7 @@ export default function googleSheets(rl) {
705
714
  },
706
715
  });
707
716
  rl.registerAction("sheet.appendOrUpdate", {
717
+ access: "write",
708
718
  description: "Upsert rows. Rows whose match value is found are updated in place; rows with a missing or unknown match value are appended.",
709
719
  inputSchema: {
710
720
  spreadsheetId: { type: "string", required: true },
@@ -724,6 +734,7 @@ export default function googleSheets(rl) {
724
734
  });
725
735
  // ── Clear ─────────────────────────────────────────────
726
736
  rl.registerAction("sheet.clear", {
737
+ access: "write",
727
738
  description: "Clear values from a sheet. Modes: wholeSheet (optional keepFirstRow) | rows | columns | range.",
728
739
  inputSchema: {
729
740
  spreadsheetId: { type: "string", required: true },
@@ -786,6 +797,7 @@ export default function googleSheets(rl) {
786
797
  });
787
798
  // ── Delete rows/columns ───────────────────────────────
788
799
  rl.registerAction("sheet.deleteDimension", {
800
+ access: "write",
789
801
  description: "Delete a range of rows or columns",
790
802
  inputSchema: {
791
803
  spreadsheetId: { type: "string", required: true },
@@ -820,6 +832,7 @@ export default function googleSheets(rl) {
820
832
  });
821
833
  // ── Raw batchUpdate ───────────────────────────────────
822
834
  rl.registerAction("sheet.batchUpdate", {
835
+ access: "write",
823
836
  description: "Raw passthrough to spreadsheets:batchUpdate for anything this plugin doesn't expose directly (formatting, merges, conditional rules, …).",
824
837
  inputSchema: {
825
838
  spreadsheetId: { type: "string", required: true },
@@ -912,6 +925,7 @@ async function runUpdateOrUpsert(ctx, p, upsert) {
912
925
  };
913
926
  // ─── Charts ─────────────────────────────────────────────────────
914
927
  rl.registerAction("chart.add", {
928
+ access: "write",
915
929
  description: "Embed a chart on a sheet. Minimal signature: type ('COLUMN'|'BAR'|'LINE'|'AREA'|'PIE'|'SCATTER'|'COMBO'), data source (sheet name + A1 range), and target anchor cell. For full control pass a raw `chartSpec` object instead.",
916
930
  inputSchema: {
917
931
  spreadsheetId: { type: "string", required: true },
@@ -975,6 +989,7 @@ async function runUpdateOrUpsert(ctx, p, upsert) {
975
989
  },
976
990
  });
977
991
  rl.registerAction("chart.update", {
992
+ access: "write",
978
993
  description: "Update an existing chart's spec by chartId.",
979
994
  inputSchema: {
980
995
  spreadsheetId: { type: "string", required: true },
@@ -996,6 +1011,7 @@ async function runUpdateOrUpsert(ctx, p, upsert) {
996
1011
  },
997
1012
  });
998
1013
  rl.registerAction("chart.delete", {
1014
+ access: "write",
999
1015
  description: "Delete a chart by its embedded-object id.",
1000
1016
  inputSchema: {
1001
1017
  spreadsheetId: { type: "string", required: true },
@@ -1010,6 +1026,7 @@ async function runUpdateOrUpsert(ctx, p, upsert) {
1010
1026
  });
1011
1027
  // ─── Named ranges ───────────────────────────────────────────────
1012
1028
  rl.registerAction("namedRange.add", {
1029
+ access: "write",
1013
1030
  description: "Create a named range on a sheet (so formulas can reference it by name).",
1014
1031
  inputSchema: {
1015
1032
  spreadsheetId: { type: "string", required: true },
@@ -1027,6 +1044,7 @@ async function runUpdateOrUpsert(ctx, p, upsert) {
1027
1044
  },
1028
1045
  });
1029
1046
  rl.registerAction("namedRange.delete", {
1047
+ access: "write",
1030
1048
  description: "Delete a named range by its id.",
1031
1049
  inputSchema: {
1032
1050
  spreadsheetId: { type: "string", required: true },
@@ -1041,6 +1059,7 @@ async function runUpdateOrUpsert(ctx, p, upsert) {
1041
1059
  });
1042
1060
  // ─── Protected ranges ───────────────────────────────────────────
1043
1061
  rl.registerAction("protectedRange.add", {
1062
+ access: "write",
1044
1063
  description: "Protect a range from edits. Pass `editorEmails` to restrict who can still edit; without it, only the sheet owner can edit.",
1045
1064
  inputSchema: {
1046
1065
  spreadsheetId: { type: "string", required: true },
@@ -1067,6 +1086,7 @@ async function runUpdateOrUpsert(ctx, p, upsert) {
1067
1086
  },
1068
1087
  });
1069
1088
  rl.registerAction("protectedRange.delete", {
1089
+ access: "write",
1070
1090
  description: "Delete a protected range by its id.",
1071
1091
  inputSchema: {
1072
1092
  spreadsheetId: { type: "string", required: true },
@@ -1081,6 +1101,7 @@ async function runUpdateOrUpsert(ctx, p, upsert) {
1081
1101
  });
1082
1102
  // ─── Conditional formatting ─────────────────────────────────────
1083
1103
  rl.registerAction("conditionalFormat.add", {
1104
+ access: "write",
1084
1105
  description: "Add a single-condition conditional-format rule. For complex rules pass a raw `rule` object instead of the simple builder.",
1085
1106
  inputSchema: {
1086
1107
  spreadsheetId: { type: "string", required: true },
@@ -1124,6 +1145,7 @@ async function runUpdateOrUpsert(ctx, p, upsert) {
1124
1145
  },
1125
1146
  });
1126
1147
  rl.registerAction("conditionalFormat.delete", {
1148
+ access: "write",
1127
1149
  description: "Delete a conditional-format rule by its index within the sheet's rule list.",
1128
1150
  inputSchema: {
1129
1151
  spreadsheetId: { type: "string", required: true },
@@ -1140,6 +1162,7 @@ async function runUpdateOrUpsert(ctx, p, upsert) {
1140
1162
  });
1141
1163
  // ─── Data validation ────────────────────────────────────────────
1142
1164
  rl.registerAction("dataValidation.set", {
1165
+ access: "write",
1143
1166
  description: "Apply a data-validation rule to a range. Pass either `condition` (BooleanCondition) or `oneOfList` (array of values for ONE_OF_LIST). Use `clear: true` to remove validation.",
1144
1167
  inputSchema: {
1145
1168
  spreadsheetId: { type: "string", required: true },
@@ -121,6 +121,7 @@ export default function googleSlides(rl) {
121
121
  });
122
122
  // ── Presentation ──────────────────────────────────────
123
123
  rl.registerAction("presentation.create", {
124
+ access: "write",
124
125
  description: "Create a new empty presentation",
125
126
  inputSchema: { title: { type: "string", required: true } },
126
127
  async execute(input, ctx) {
@@ -129,6 +130,7 @@ export default function googleSlides(rl) {
129
130
  },
130
131
  });
131
132
  rl.registerAction("presentation.get", {
133
+ access: "read",
132
134
  description: "Get a presentation. Accepts a bare ID or a docs.google.com/presentation URL.",
133
135
  inputSchema: {
134
136
  presentation: { type: "string", required: true },
@@ -148,6 +150,7 @@ export default function googleSlides(rl) {
148
150
  },
149
151
  });
150
152
  rl.registerAction("presentation.listSlides", {
153
+ access: "read",
151
154
  description: "List slides in a presentation",
152
155
  inputSchema: {
153
156
  presentation: { type: "string", required: true },
@@ -164,6 +167,7 @@ export default function googleSlides(rl) {
164
167
  },
165
168
  });
166
169
  rl.registerAction("presentation.replaceText", {
170
+ access: "write",
167
171
  description: "Replace text in a presentation. Pass one or more {text, replaceText, matchCase?, pageObjectIds?} entries; each becomes a replaceAllText request in a single batchUpdate.",
168
172
  inputSchema: {
169
173
  presentation: { type: "string", required: true },
@@ -203,6 +207,7 @@ export default function googleSlides(rl) {
203
207
  },
204
208
  });
205
209
  rl.registerAction("presentation.batchUpdate", {
210
+ access: "write",
206
211
  description: "Raw passthrough to presentations.batchUpdate — pass a full `requests` array for layout edits, shape inserts, transform updates, etc.",
207
212
  inputSchema: {
208
213
  presentation: { type: "string", required: true },
@@ -224,6 +229,7 @@ export default function googleSlides(rl) {
224
229
  });
225
230
  // ── Page (slide) ──────────────────────────────────────
226
231
  rl.registerAction("page.get", {
232
+ access: "read",
227
233
  description: "Get a single slide (page) by objectId",
228
234
  inputSchema: {
229
235
  presentation: { type: "string", required: true },
@@ -236,6 +242,7 @@ export default function googleSlides(rl) {
236
242
  },
237
243
  });
238
244
  rl.registerAction("page.getThumbnail", {
245
+ access: "write",
239
246
  description: "Get a thumbnail for a slide. Returns Slides' response { contentUrl, width, height } by default; set `savePath` to also download the PNG to disk, or `download=true` to return base64.",
240
247
  inputSchema: {
241
248
  presentation: { type: "string", required: true },
@@ -139,6 +139,7 @@ export default function googleTasks(rl) {
139
139
  });
140
140
  // ── Task lists ────────────────────────────────────────
141
141
  rl.registerAction("taskList.list", {
142
+ access: "read",
142
143
  description: "List the authenticated user's task lists",
143
144
  inputSchema: {
144
145
  returnAll: { type: "boolean", required: false },
@@ -159,6 +160,7 @@ export default function googleTasks(rl) {
159
160
  },
160
161
  });
161
162
  rl.registerAction("taskList.get", {
163
+ access: "read",
162
164
  description: "Get a task list by ID",
163
165
  inputSchema: { taskListId: { type: "string", required: true } },
164
166
  async execute(input, ctx) {
@@ -167,6 +169,7 @@ export default function googleTasks(rl) {
167
169
  },
168
170
  });
169
171
  rl.registerAction("taskList.create", {
172
+ access: "write",
170
173
  description: "Create a new task list",
171
174
  inputSchema: { title: { type: "string", required: true } },
172
175
  async execute(input, ctx) {
@@ -175,6 +178,7 @@ export default function googleTasks(rl) {
175
178
  },
176
179
  });
177
180
  rl.registerAction("taskList.update", {
181
+ access: "write",
178
182
  description: "Update a task list (currently only `title` is writable).",
179
183
  inputSchema: {
180
184
  taskListId: { type: "string", required: true },
@@ -188,6 +192,7 @@ export default function googleTasks(rl) {
188
192
  },
189
193
  });
190
194
  rl.registerAction("taskList.delete", {
195
+ access: "write",
191
196
  description: "Delete a task list and all its tasks",
192
197
  inputSchema: { taskListId: { type: "string", required: true } },
193
198
  async execute(input, ctx) {
@@ -198,6 +203,7 @@ export default function googleTasks(rl) {
198
203
  });
199
204
  // ── Tasks ─────────────────────────────────────────────
200
205
  rl.registerAction("task.create", {
206
+ access: "write",
201
207
  description: "Create a task in a list",
202
208
  inputSchema: {
203
209
  taskListId: { type: "string", required: true },
@@ -254,6 +260,7 @@ export default function googleTasks(rl) {
254
260
  },
255
261
  });
256
262
  rl.registerAction("task.get", {
263
+ access: "read",
257
264
  description: "Get a single task",
258
265
  inputSchema: {
259
266
  taskListId: { type: "string", required: true },
@@ -265,6 +272,7 @@ export default function googleTasks(rl) {
265
272
  },
266
273
  });
267
274
  rl.registerAction("task.list", {
275
+ access: "read",
268
276
  description: "List tasks in a list. Filters: dueMin/dueMax, completedMin/completedMax, updatedMin, showCompleted/showDeleted/showHidden.",
269
277
  inputSchema: {
270
278
  taskListId: { type: "string", required: true },
@@ -304,6 +312,7 @@ export default function googleTasks(rl) {
304
312
  },
305
313
  });
306
314
  rl.registerAction("task.update", {
315
+ access: "write",
307
316
  description: "Patch a task. Only supplied fields are sent. Set status=completed (and optionally `completed` timestamp) to mark done.",
308
317
  inputSchema: {
309
318
  taskListId: { type: "string", required: true },
@@ -347,6 +356,7 @@ export default function googleTasks(rl) {
347
356
  },
348
357
  });
349
358
  rl.registerAction("task.delete", {
359
+ access: "write",
350
360
  description: "Delete a task",
351
361
  inputSchema: {
352
362
  taskListId: { type: "string", required: true },
@@ -359,6 +369,7 @@ export default function googleTasks(rl) {
359
369
  },
360
370
  });
361
371
  rl.registerAction("task.move", {
372
+ access: "write",
362
373
  description: "Move a task within its list (reorder or reparent). `parent` nests under another task; `previous` places it after a sibling.",
363
374
  inputSchema: {
364
375
  taskListId: { type: "string", required: true },
@@ -377,6 +388,7 @@ export default function googleTasks(rl) {
377
388
  },
378
389
  });
379
390
  rl.registerAction("task.clear", {
391
+ access: "write",
380
392
  description: "Hide all completed tasks in a list from the default view. They remain accessible via task.list with showHidden=true.",
381
393
  inputSchema: { taskListId: { type: "string", required: true } },
382
394
  async execute(input, ctx) {
@@ -51,6 +51,7 @@ export default function gotify(rl) {
51
51
  },
52
52
  });
53
53
  rl.registerAction("message.create", {
54
+ access: "write",
54
55
  description: "Send a push message",
55
56
  inputSchema: {
56
57
  message: { type: "string", required: true, description: "Message text" },
@@ -81,6 +82,7 @@ export default function gotify(rl) {
81
82
  },
82
83
  });
83
84
  rl.registerAction("message.delete", {
85
+ access: "write",
84
86
  description: "Delete a message",
85
87
  inputSchema: {
86
88
  messageId: { type: "string", required: true, description: "Message ID" },
@@ -93,6 +95,7 @@ export default function gotify(rl) {
93
95
  },
94
96
  });
95
97
  rl.registerAction("message.list", {
98
+ access: "read",
96
99
  description: "List messages",
97
100
  inputSchema: {
98
101
  limit: { type: "number", required: false, description: "Max results" },
@@ -53,6 +53,7 @@ export default function gotowebinar(rl) {
53
53
  });
54
54
  // ── Webinar ─────────────────────────────────────────
55
55
  rl.registerAction("webinar.create", {
56
+ access: "write",
56
57
  description: "Create a webinar",
57
58
  inputSchema: {
58
59
  subject: {
@@ -98,6 +99,7 @@ export default function gotowebinar(rl) {
98
99
  },
99
100
  });
100
101
  rl.registerAction("webinar.get", {
102
+ access: "read",
101
103
  description: "Get a webinar",
102
104
  inputSchema: {
103
105
  webinarKey: {
@@ -112,6 +114,7 @@ export default function gotowebinar(rl) {
112
114
  },
113
115
  });
114
116
  rl.registerAction("webinar.list", {
117
+ access: "read",
115
118
  description: "List webinars",
116
119
  inputSchema: {
117
120
  limit: { type: "number", required: false, description: "Max results" },
@@ -126,6 +129,7 @@ export default function gotowebinar(rl) {
126
129
  },
127
130
  });
128
131
  rl.registerAction("webinar.update", {
132
+ access: "write",
129
133
  description: "Update a webinar",
130
134
  inputSchema: {
131
135
  webinarKey: {
@@ -162,6 +166,7 @@ export default function gotowebinar(rl) {
162
166
  },
163
167
  });
164
168
  rl.registerAction("webinar.delete", {
169
+ access: "write",
165
170
  description: "Delete a webinar",
166
171
  inputSchema: {
167
172
  webinarKey: {
@@ -187,6 +192,7 @@ export default function gotowebinar(rl) {
187
192
  });
188
193
  // ── Registrant ──────────────────────────────────────
189
194
  rl.registerAction("registrant.create", {
195
+ access: "write",
190
196
  description: "Register a person for a webinar",
191
197
  inputSchema: {
192
198
  webinarKey: {
@@ -205,6 +211,7 @@ export default function gotowebinar(rl) {
205
211
  },
206
212
  });
207
213
  rl.registerAction("registrant.get", {
214
+ access: "read",
208
215
  description: "Get a registrant",
209
216
  inputSchema: {
210
217
  webinarKey: {
@@ -225,6 +232,7 @@ export default function gotowebinar(rl) {
225
232
  },
226
233
  });
227
234
  rl.registerAction("registrant.list", {
235
+ access: "read",
228
236
  description: "List registrants for a webinar",
229
237
  inputSchema: {
230
238
  webinarKey: {
@@ -239,6 +247,7 @@ export default function gotowebinar(rl) {
239
247
  },
240
248
  });
241
249
  rl.registerAction("registrant.delete", {
250
+ access: "write",
242
251
  description: "Delete a registrant",
243
252
  inputSchema: {
244
253
  webinarKey: {
@@ -261,6 +270,7 @@ export default function gotowebinar(rl) {
261
270
  });
262
271
  // ── Session ─────────────────────────────────────────
263
272
  rl.registerAction("session.get", {
273
+ access: "read",
264
274
  description: "Get a session",
265
275
  inputSchema: {
266
276
  webinarKey: {
@@ -281,6 +291,7 @@ export default function gotowebinar(rl) {
281
291
  },
282
292
  });
283
293
  rl.registerAction("session.list", {
294
+ access: "read",
284
295
  description: "List sessions for a webinar",
285
296
  inputSchema: {
286
297
  webinarKey: {
@@ -295,6 +306,7 @@ export default function gotowebinar(rl) {
295
306
  },
296
307
  });
297
308
  rl.registerAction("session.getPerformance", {
309
+ access: "read",
298
310
  description: "Get session performance details",
299
311
  inputSchema: {
300
312
  webinarKey: {
@@ -316,6 +328,7 @@ export default function gotowebinar(rl) {
316
328
  });
317
329
  // ── Attendee ────────────────────────────────────────
318
330
  rl.registerAction("attendee.get", {
331
+ access: "read",
319
332
  description: "Get an attendee",
320
333
  inputSchema: {
321
334
  webinarKey: {
@@ -341,6 +354,7 @@ export default function gotowebinar(rl) {
341
354
  },
342
355
  });
343
356
  rl.registerAction("attendee.list", {
357
+ access: "read",
344
358
  description: "List attendees for a session",
345
359
  inputSchema: {
346
360
  webinarKey: {
@@ -362,6 +376,7 @@ export default function gotowebinar(rl) {
362
376
  });
363
377
  // ── Coorganizer ─────────────────────────────────────
364
378
  rl.registerAction("coorganizer.create", {
379
+ access: "write",
365
380
  description: "Add a co-organizer to a webinar",
366
381
  inputSchema: {
367
382
  webinarKey: {
@@ -404,6 +419,7 @@ export default function gotowebinar(rl) {
404
419
  },
405
420
  });
406
421
  rl.registerAction("coorganizer.list", {
422
+ access: "read",
407
423
  description: "List co-organizers",
408
424
  inputSchema: {
409
425
  webinarKey: {
@@ -418,6 +434,7 @@ export default function gotowebinar(rl) {
418
434
  },
419
435
  });
420
436
  rl.registerAction("coorganizer.delete", {
437
+ access: "write",
421
438
  description: "Remove a co-organizer",
422
439
  inputSchema: {
423
440
  webinarKey: {
@@ -448,6 +465,7 @@ export default function gotowebinar(rl) {
448
465
  });
449
466
  // ── Panelist ────────────────────────────────────────
450
467
  rl.registerAction("panelist.create", {
468
+ access: "write",
451
469
  description: "Add a panelist to a webinar",
452
470
  inputSchema: {
453
471
  webinarKey: {
@@ -465,6 +483,7 @@ export default function gotowebinar(rl) {
465
483
  },
466
484
  });
467
485
  rl.registerAction("panelist.list", {
486
+ access: "read",
468
487
  description: "List panelists",
469
488
  inputSchema: {
470
489
  webinarKey: {
@@ -479,6 +498,7 @@ export default function gotowebinar(rl) {
479
498
  },
480
499
  });
481
500
  rl.registerAction("panelist.delete", {
501
+ access: "write",
482
502
  description: "Remove a panelist",
483
503
  inputSchema: {
484
504
  webinarKey: {
@@ -55,6 +55,7 @@ export default function grafana(rl) {
55
55
  });
56
56
  // ── Dashboard ───────────────────────────────────────
57
57
  rl.registerAction("dashboard.create", {
58
+ access: "write",
58
59
  description: "Create or save a dashboard",
59
60
  inputSchema: {
60
61
  dashboard: {
@@ -83,6 +84,7 @@ export default function grafana(rl) {
83
84
  },
84
85
  });
85
86
  rl.registerAction("dashboard.get", {
87
+ access: "read",
86
88
  description: "Get a dashboard by UID",
87
89
  inputSchema: {
88
90
  uid: { type: "string", required: true, description: "Dashboard UID" },
@@ -92,6 +94,7 @@ export default function grafana(rl) {
92
94
  },
93
95
  });
94
96
  rl.registerAction("dashboard.list", {
97
+ access: "read",
95
98
  description: "Search dashboards",
96
99
  inputSchema: {
97
100
  query: { type: "string", required: false, description: "Search query" },
@@ -125,6 +128,7 @@ export default function grafana(rl) {
125
128
  },
126
129
  });
127
130
  rl.registerAction("dashboard.delete", {
131
+ access: "write",
128
132
  description: "Delete a dashboard by UID",
129
133
  inputSchema: {
130
134
  uid: { type: "string", required: true, description: "Dashboard UID" },
@@ -134,6 +138,7 @@ export default function grafana(rl) {
134
138
  },
135
139
  });
136
140
  rl.registerAction("dashboard.update", {
141
+ access: "write",
137
142
  description: "Update an existing dashboard",
138
143
  inputSchema: {
139
144
  uid: {
@@ -164,6 +169,7 @@ export default function grafana(rl) {
164
169
  });
165
170
  // ── Team ────────────────────────────────────────────
166
171
  rl.registerAction("team.create", {
172
+ access: "write",
167
173
  description: "Create a team",
168
174
  inputSchema: {
169
175
  name: { type: "string", required: true, description: "Team name" },
@@ -178,6 +184,7 @@ export default function grafana(rl) {
178
184
  },
179
185
  });
180
186
  rl.registerAction("team.get", {
187
+ access: "read",
181
188
  description: "Get a team by ID",
182
189
  inputSchema: {
183
190
  teamId: { type: "number", required: true, description: "Team ID" },
@@ -187,6 +194,7 @@ export default function grafana(rl) {
187
194
  },
188
195
  });
189
196
  rl.registerAction("team.list", {
197
+ access: "read",
190
198
  description: "Search teams",
191
199
  inputSchema: {
192
200
  query: { type: "string", required: false, description: "Search by name" },
@@ -207,6 +215,7 @@ export default function grafana(rl) {
207
215
  },
208
216
  });
209
217
  rl.registerAction("team.update", {
218
+ access: "write",
210
219
  description: "Update a team",
211
220
  inputSchema: {
212
221
  teamId: { type: "number", required: true, description: "Team ID" },
@@ -224,6 +233,7 @@ export default function grafana(rl) {
224
233
  },
225
234
  });
226
235
  rl.registerAction("team.delete", {
236
+ access: "write",
227
237
  description: "Delete a team",
228
238
  inputSchema: {
229
239
  teamId: { type: "number", required: true, description: "Team ID" },
@@ -234,6 +244,7 @@ export default function grafana(rl) {
234
244
  });
235
245
  // ── Team Member ─────────────────────────────────────
236
246
  rl.registerAction("teamMember.add", {
247
+ access: "write",
237
248
  description: "Add a user to a team",
238
249
  inputSchema: {
239
250
  teamId: { type: "number", required: true, description: "Team ID" },
@@ -245,6 +256,7 @@ export default function grafana(rl) {
245
256
  },
246
257
  });
247
258
  rl.registerAction("teamMember.remove", {
259
+ access: "write",
248
260
  description: "Remove a user from a team",
249
261
  inputSchema: {
250
262
  teamId: { type: "number", required: true, description: "Team ID" },
@@ -260,6 +272,7 @@ export default function grafana(rl) {
260
272
  },
261
273
  });
262
274
  rl.registerAction("teamMember.list", {
275
+ access: "read",
263
276
  description: "List members of a team",
264
277
  inputSchema: {
265
278
  teamId: { type: "number", required: true, description: "Team ID" },
@@ -270,6 +283,7 @@ export default function grafana(rl) {
270
283
  });
271
284
  // ── User (Org) ──────────────────────────────────────
272
285
  rl.registerAction("user.create", {
286
+ access: "write",
273
287
  description: "Add a user to the current organization",
274
288
  inputSchema: {
275
289
  loginOrEmail: {
@@ -289,12 +303,14 @@ export default function grafana(rl) {
289
303
  },
290
304
  });
291
305
  rl.registerAction("user.list", {
306
+ access: "read",
292
307
  description: "List users in the current organization",
293
308
  async execute(_input, ctx) {
294
309
  return gf(ctx, "GET", "/org/users");
295
310
  },
296
311
  });
297
312
  rl.registerAction("user.update", {
313
+ access: "write",
298
314
  description: "Update a user's role in the organization",
299
315
  inputSchema: {
300
316
  userId: { type: "number", required: true, description: "User ID" },
@@ -310,6 +326,7 @@ export default function grafana(rl) {
310
326
  },
311
327
  });
312
328
  rl.registerAction("user.delete", {
329
+ access: "write",
313
330
  description: "Remove a user from the organization",
314
331
  inputSchema: {
315
332
  userId: { type: "number", required: true, description: "User ID" },
@@ -21,6 +21,7 @@ export default function graphql(rl) {
21
21
  },
22
22
  });
23
23
  rl.registerAction("query", {
24
+ access: "write",
24
25
  description: "Execute a GraphQL query",
25
26
  inputSchema: {
26
27
  query: {
@@ -72,6 +73,7 @@ export default function graphql(rl) {
72
73
  },
73
74
  });
74
75
  rl.registerAction("introspect", {
76
+ access: "read",
75
77
  description: "Run an introspection query to get the schema",
76
78
  async execute(_input, ctx) {
77
79
  const cfg = ctx.connection.config;
@@ -64,6 +64,7 @@ export default function grist(rl) {
64
64
  },
65
65
  });
66
66
  rl.registerAction("record.create", {
67
+ access: "write",
67
68
  description: "Create records in a table",
68
69
  inputSchema: {
69
70
  docId: { type: "string", required: true, description: "Document ID" },
@@ -81,6 +82,7 @@ export default function grist(rl) {
81
82
  },
82
83
  });
83
84
  rl.registerAction("record.list", {
85
+ access: "read",
84
86
  description: "List records from a table",
85
87
  inputSchema: {
86
88
  docId: { type: "string", required: true, description: "Document ID" },
@@ -112,6 +114,7 @@ export default function grist(rl) {
112
114
  },
113
115
  });
114
116
  rl.registerAction("record.update", {
117
+ access: "write",
115
118
  description: "Update records in a table",
116
119
  inputSchema: {
117
120
  docId: { type: "string", required: true, description: "Document ID" },
@@ -129,6 +132,7 @@ export default function grist(rl) {
129
132
  },
130
133
  });
131
134
  rl.registerAction("record.delete", {
135
+ access: "write",
132
136
  description: "Delete records from a table",
133
137
  inputSchema: {
134
138
  docId: { type: "string", required: true, description: "Document ID" },