runline 0.11.6 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (251) hide show
  1. package/dist/commands/actions.js +3 -1
  2. package/dist/core/engine.js +3 -0
  3. package/dist/index.d.ts +1 -1
  4. package/dist/plugin/api.d.ts +2 -1
  5. package/dist/plugin/types.d.ts +2 -0
  6. package/dist/plugins/actionNetwork/src/index.js +23 -0
  7. package/dist/plugins/activeCampaign/src/index.js +48 -0
  8. package/dist/plugins/adalo/src/index.js +5 -0
  9. package/dist/plugins/affinity/src/index.js +16 -0
  10. package/dist/plugins/agileCrm/src/index.js +15 -0
  11. package/dist/plugins/airtable/src/index.js +10 -0
  12. package/dist/plugins/airtop/src/index.js +24 -0
  13. package/dist/plugins/apiTemplateIo/src/index.js +4 -0
  14. package/dist/plugins/asana/src/index.js +22 -0
  15. package/dist/plugins/autopilot/src/index.js +11 -0
  16. package/dist/plugins/bambooHr/src/index.js +11 -0
  17. package/dist/plugins/bannerbear/src/index.js +4 -0
  18. package/dist/plugins/baserow/src/index.js +8 -0
  19. package/dist/plugins/beeminder/src/index.js +18 -0
  20. package/dist/plugins/bitly/src/index.js +3 -0
  21. package/dist/plugins/bitwarden/src/index.js +19 -0
  22. package/dist/plugins/box/src/index.js +11 -0
  23. package/dist/plugins/brandfetch/src/index.js +5 -0
  24. package/dist/plugins/brevo/src/index.js +15 -0
  25. package/dist/plugins/bubble/src/index.js +5 -0
  26. package/dist/plugins/chargebee/src/index.js +5 -0
  27. package/dist/plugins/circleci/src/index.js +3 -0
  28. package/dist/plugins/ciscoWebex/src/index.js +10 -0
  29. package/dist/plugins/clearbit/src/index.js +3 -0
  30. package/dist/plugins/clickup/src/index.js +61 -0
  31. package/dist/plugins/clockify/src/index.js +25 -0
  32. package/dist/plugins/cloudflare/src/index.js +4 -0
  33. package/dist/plugins/cockpit/src/index.js +5 -0
  34. package/dist/plugins/coda/src/index.js +18 -0
  35. package/dist/plugins/coingecko/src/index.js +10 -0
  36. package/dist/plugins/contentful/src/index.js +7 -0
  37. package/dist/plugins/convertkit/src/index.js +16 -0
  38. package/dist/plugins/copper/src/index.js +7 -0
  39. package/dist/plugins/cortex/src/index.js +4 -0
  40. package/dist/plugins/currents/src/index.js +22 -0
  41. package/dist/plugins/customerIo/src/index.js +9 -0
  42. package/dist/plugins/databricks/src/index.js +34 -0
  43. package/dist/plugins/deepl/src/index.js +2 -0
  44. package/dist/plugins/demio/src/index.js +4 -0
  45. package/dist/plugins/dhl/src/index.js +1 -0
  46. package/dist/plugins/discord/src/index.js +13 -0
  47. package/dist/plugins/discourse/src/index.js +16 -0
  48. package/dist/plugins/disqus/src/index.js +4 -0
  49. package/dist/plugins/docker/src/index.js +5 -0
  50. package/dist/plugins/drift/src/index.js +5 -0
  51. package/dist/plugins/dropbox/src/index.js +9 -0
  52. package/dist/plugins/dropcontact/src/index.js +2 -0
  53. package/dist/plugins/egoi/src/index.js +4 -0
  54. package/dist/plugins/elasticsearch/src/index.js +9 -0
  55. package/dist/plugins/emelia/src/index.js +9 -0
  56. package/dist/plugins/erpnext/src/index.js +5 -0
  57. package/dist/plugins/facebookGraph/src/index.js +1 -0
  58. package/dist/plugins/freshdesk/src/index.js +10 -0
  59. package/dist/plugins/freshservice/src/index.js +7 -0
  60. package/dist/plugins/freshworksCrm/src/index.js +7 -0
  61. package/dist/plugins/getresponse/src/index.js +5 -0
  62. package/dist/plugins/ghost/src/index.js +5 -0
  63. package/dist/plugins/github/src/index.js +37 -0
  64. package/dist/plugins/gitlab/src/index.js +17 -0
  65. package/dist/plugins/gmail/src/index.js +32 -0
  66. package/dist/plugins/gong/src/index.js +4 -0
  67. package/dist/plugins/googleAppsScript/src/index.js +10 -0
  68. package/dist/plugins/googleCalendar/src/index.js +22 -0
  69. package/dist/plugins/googleContacts/src/index.js +10 -0
  70. package/dist/plugins/googleDocs/src/documents.js +4 -0
  71. package/dist/plugins/googleDocs/src/formatting.js +2 -0
  72. package/dist/plugins/googleDocs/src/images.js +2 -0
  73. package/dist/plugins/googleDocs/src/structure.js +13 -0
  74. package/dist/plugins/googleDocs/src/tables.js +11 -0
  75. package/dist/plugins/googleDocs/src/tabs.js +3 -0
  76. package/dist/plugins/googleDocs/src/text.js +9 -0
  77. package/dist/plugins/googleDrive/src/index.js +47 -0
  78. package/dist/plugins/googleImage/src/index.js +1 -0
  79. package/dist/plugins/googleSheets/src/index.js +23 -0
  80. package/dist/plugins/googleSlides/src/index.js +7 -0
  81. package/dist/plugins/googleTasks/src/index.js +12 -0
  82. package/dist/plugins/gotify/src/index.js +3 -0
  83. package/dist/plugins/gotowebinar/src/index.js +20 -0
  84. package/dist/plugins/grafana/src/index.js +17 -0
  85. package/dist/plugins/graphql/src/index.js +2 -0
  86. package/dist/plugins/grist/src/index.js +4 -0
  87. package/dist/plugins/hackernews/src/index.js +6 -0
  88. package/dist/plugins/halopsa/src/index.js +5 -0
  89. package/dist/plugins/harvest/src/index.js +14 -0
  90. package/dist/plugins/helpscout/src/index.js +13 -0
  91. package/dist/plugins/highlevel/src/index.js +17 -0
  92. package/dist/plugins/homeAssistant/src/index.js +13 -0
  93. package/dist/plugins/hubspot/src/index.js +14 -0
  94. package/dist/plugins/humanticAi/src/index.js +3 -0
  95. package/dist/plugins/hunter/src/index.js +3 -0
  96. package/dist/plugins/intercom/src/index.js +10 -0
  97. package/dist/plugins/iterable/src/index.js +6 -0
  98. package/dist/plugins/jenkins/src/index.js +11 -0
  99. package/dist/plugins/jira/src/index.js +16 -0
  100. package/dist/plugins/keap/src/index.js +28 -0
  101. package/dist/plugins/kobotoolbox/src/index.js +17 -0
  102. package/dist/plugins/lemlist/src/index.js +15 -0
  103. package/dist/plugins/linear/src/attachments.js +6 -0
  104. package/dist/plugins/linear/src/comments.js +5 -0
  105. package/dist/plugins/linear/src/cycles.js +2 -0
  106. package/dist/plugins/linear/src/initiatives.js +5 -0
  107. package/dist/plugins/linear/src/issues.js +14 -0
  108. package/dist/plugins/linear/src/labels.js +5 -0
  109. package/dist/plugins/linear/src/organization.js +1 -0
  110. package/dist/plugins/linear/src/projects.js +11 -0
  111. package/dist/plugins/linear/src/shared.js +2 -0
  112. package/dist/plugins/linear/src/states.js +2 -0
  113. package/dist/plugins/linear/src/teams.js +3 -0
  114. package/dist/plugins/linear/src/users.js +2 -0
  115. package/dist/plugins/linear/src/views.js +4 -0
  116. package/dist/plugins/linear/src/webhooks.js +4 -0
  117. package/dist/plugins/lingvanex/src/index.js +1 -0
  118. package/dist/plugins/linkedin/src/index.js +1 -0
  119. package/dist/plugins/lonescale/src/index.js +4 -0
  120. package/dist/plugins/magento/src/index.js +15 -0
  121. package/dist/plugins/mailcheck/src/index.js +1 -0
  122. package/dist/plugins/mailchimp/src/index.js +14 -0
  123. package/dist/plugins/mailerlite/src/index.js +4 -0
  124. package/dist/plugins/mailgun/src/index.js +1 -0
  125. package/dist/plugins/mailjet/src/index.js +3 -0
  126. package/dist/plugins/mandrill/src/index.js +2 -0
  127. package/dist/plugins/marketstack/src/index.js +3 -0
  128. package/dist/plugins/matrix/src/index.js +10 -0
  129. package/dist/plugins/mattermost/src/index.js +19 -0
  130. package/dist/plugins/mautic/src/index.js +20 -0
  131. package/dist/plugins/medium/src/index.js +3 -0
  132. package/dist/plugins/messagebird/src/index.js +2 -0
  133. package/dist/plugins/metabase/src/index.js +10 -0
  134. package/dist/plugins/microsoftCalendar/src/index.js +2 -0
  135. package/dist/plugins/microsoftFiles/src/index.js +5 -0
  136. package/dist/plugins/microsoftMail/src/index.js +4 -0
  137. package/dist/plugins/misp/src/index.js +44 -0
  138. package/dist/plugins/mocean/src/index.js +2 -0
  139. package/dist/plugins/monday/src/index.js +18 -0
  140. package/dist/plugins/monicaCrm/src/index.js +5 -0
  141. package/dist/plugins/msg91/src/index.js +1 -0
  142. package/dist/plugins/nasa/src/index.js +7 -0
  143. package/dist/plugins/netlify/src/index.js +7 -0
  144. package/dist/plugins/netscalerAdc/src/index.js +3 -0
  145. package/dist/plugins/nextcloud/src/index.js +13 -0
  146. package/dist/plugins/nocodb/src/index.js +5 -0
  147. package/dist/plugins/node/src/index.js +38 -0
  148. package/dist/plugins/notion/src/index.js +14 -0
  149. package/dist/plugins/npm/src/index.js +5 -0
  150. package/dist/plugins/odoo/src/index.js +6 -0
  151. package/dist/plugins/okta/src/index.js +5 -0
  152. package/dist/plugins/oneSimpleApi/src/index.js +10 -0
  153. package/dist/plugins/onfleet/src/index.js +24 -0
  154. package/dist/plugins/openThesaurus/src/index.js +1 -0
  155. package/dist/plugins/openai/src/index.js +1 -0
  156. package/dist/plugins/openweathermap/src/index.js +2 -0
  157. package/dist/plugins/oura/src/index.js +2 -0
  158. package/dist/plugins/paddle/src/index.js +9 -0
  159. package/dist/plugins/pagerduty/src/index.js +9 -0
  160. package/dist/plugins/parallel/src/index.js +1 -0
  161. package/dist/plugins/paypal/src/index.js +4 -0
  162. package/dist/plugins/peekalink/src/index.js +2 -0
  163. package/dist/plugins/phantombuster/src/index.js +5 -0
  164. package/dist/plugins/philipsHue/src/index.js +4 -0
  165. package/dist/plugins/pipedrive/src/index.js +14 -0
  166. package/dist/plugins/plivo/src/index.js +3 -0
  167. package/dist/plugins/postbin/src/index.js +6 -0
  168. package/dist/plugins/posthog/src/index.js +5 -0
  169. package/dist/plugins/profitwell/src/index.js +2 -0
  170. package/dist/plugins/pushbullet/src/index.js +4 -0
  171. package/dist/plugins/pushcut/src/index.js +1 -0
  172. package/dist/plugins/pushover/src/index.js +1 -0
  173. package/dist/plugins/quickbase/src/index.js +8 -0
  174. package/dist/plugins/quickbooks/src/index.js +5 -0
  175. package/dist/plugins/quickchart/src/index.js +1 -0
  176. package/dist/plugins/raindrop/src/index.js +13 -0
  177. package/dist/plugins/recraft/src/index.js +1 -0
  178. package/dist/plugins/reddit/src/index.js +10 -0
  179. package/dist/plugins/replicate/src/index.js +1 -0
  180. package/dist/plugins/rocketchat/src/index.js +1 -0
  181. package/dist/plugins/rundeck/src/index.js +2 -0
  182. package/dist/plugins/salesforce/src/metadata.js +4 -0
  183. package/dist/plugins/salesforce/src/query.js +5 -0
  184. package/dist/plugins/salesforce/src/sobjects.js +12 -0
  185. package/dist/plugins/salesmate/src/index.js +5 -0
  186. package/dist/plugins/securityScorecard/src/index.js +14 -0
  187. package/dist/plugins/segment/src/index.js +4 -0
  188. package/dist/plugins/sendgrid/src/index.js +10 -0
  189. package/dist/plugins/sendy/src/index.js +6 -0
  190. package/dist/plugins/sentry/src/index.js +24 -0
  191. package/dist/plugins/servicenow/src/index.js +10 -0
  192. package/dist/plugins/shiftLabs/src/issues.js +4 -0
  193. package/dist/plugins/shiftLabs/src/pages.js +10 -0
  194. package/dist/plugins/shopify/src/index.js +10 -0
  195. package/dist/plugins/signl4/src/index.js +2 -0
  196. package/dist/plugins/slack/src/index.js +38 -0
  197. package/dist/plugins/sms77/src/index.js +2 -0
  198. package/dist/plugins/splunk/src/index.js +16 -0
  199. package/dist/plugins/spotify/src/index.js +30 -0
  200. package/dist/plugins/stackby/src/index.js +4 -0
  201. package/dist/plugins/steel/src/browser.js +7 -0
  202. package/dist/plugins/steel/src/captchas.js +3 -0
  203. package/dist/plugins/steel/src/credentials.js +4 -0
  204. package/dist/plugins/steel/src/extensions.js +5 -0
  205. package/dist/plugins/steel/src/files.js +10 -0
  206. package/dist/plugins/steel/src/profiles.js +4 -0
  207. package/dist/plugins/steel/src/sessions.js +11 -0
  208. package/dist/plugins/storyblok/src/index.js +7 -0
  209. package/dist/plugins/strapi/src/index.js +5 -0
  210. package/dist/plugins/strava/src/index.js +6 -0
  211. package/dist/plugins/stripe/src/index.js +20 -0
  212. package/dist/plugins/supabase/src/index.js +5 -0
  213. package/dist/plugins/syncromsp/src/index.js +20 -0
  214. package/dist/plugins/tapfiliate/src/index.js +11 -0
  215. package/dist/plugins/telegram/src/index.js +21 -0
  216. package/dist/plugins/thehive/src/index.js +23 -0
  217. package/dist/plugins/thehiveProject/src/index.js +31 -0
  218. package/dist/plugins/todoist/src/index.js +31 -0
  219. package/dist/plugins/together/src/index.js +1 -0
  220. package/dist/plugins/travisci/src/index.js +5 -0
  221. package/dist/plugins/trello/src/index.js +37 -0
  222. package/dist/plugins/twake/src/index.js +1 -0
  223. package/dist/plugins/twilio/src/index.js +2 -0
  224. package/dist/plugins/twist/src/index.js +22 -0
  225. package/dist/plugins/twitter/src/index.js +8 -0
  226. package/dist/plugins/unleashedSoftware/src/index.js +3 -0
  227. package/dist/plugins/uplead/src/index.js +2 -0
  228. package/dist/plugins/uproc/src/index.js +1 -0
  229. package/dist/plugins/uptimerobot/src/index.js +22 -0
  230. package/dist/plugins/urlscanio/src/index.js +3 -0
  231. package/dist/plugins/vercel/src/account.js +1 -0
  232. package/dist/plugins/vercel/src/deployments.js +5 -0
  233. package/dist/plugins/vercel/src/env.js +4 -0
  234. package/dist/plugins/vercel/src/projects.js +2 -0
  235. package/dist/plugins/vercel/src/shared.js +1 -0
  236. package/dist/plugins/vero/src/index.js +6 -0
  237. package/dist/plugins/vonage/src/index.js +1 -0
  238. package/dist/plugins/wekan/src/index.js +24 -0
  239. package/dist/plugins/woocommerce/src/index.js +5 -0
  240. package/dist/plugins/wordpress/src/index.js +10 -0
  241. package/dist/plugins/xai/src/index.js +1 -0
  242. package/dist/plugins/xero/src/index.js +8 -0
  243. package/dist/plugins/yourls/src/index.js +3 -0
  244. package/dist/plugins/zammad/src/index.js +12 -0
  245. package/dist/plugins/zendesk/src/index.js +18 -0
  246. package/dist/plugins/zoho/src/index.js +6 -0
  247. package/dist/plugins/zoom/src/index.js +5 -0
  248. package/dist/plugins/zulip/src/index.js +15 -0
  249. package/dist/sdk.d.ts +2 -1
  250. package/dist/sdk.js +1 -0
  251. package/package.json +1 -1
@@ -616,6 +616,7 @@ export default function gmail(rl) {
616
616
  });
617
617
  // ── Message ───────────────────────────────────────────
618
618
  rl.registerAction("message.send", {
619
+ access: "write",
619
620
  description: "Send an email",
620
621
  inputSchema: {
621
622
  to: {
@@ -661,6 +662,7 @@ export default function gmail(rl) {
661
662
  },
662
663
  });
663
664
  rl.registerAction("message.reply", {
665
+ access: "write",
664
666
  description: "Reply to a message, preserving threadId and In-Reply-To/References headers",
665
667
  inputSchema: {
666
668
  messageId: { type: "string", required: true },
@@ -678,6 +680,7 @@ export default function gmail(rl) {
678
680
  },
679
681
  });
680
682
  rl.registerAction("message.get", {
683
+ access: "read",
681
684
  description: "Get a message by ID",
682
685
  inputSchema: {
683
686
  id: { type: "string", required: true },
@@ -706,6 +709,7 @@ export default function gmail(rl) {
706
709
  },
707
710
  });
708
711
  rl.registerAction("message.list", {
712
+ access: "read",
709
713
  description: "List messages. Supports Gmail search syntax via `q`, plus friendly filters: sender, readStatus ('read'|'unread'), receivedAfter/Before (ISO string, ms, or seconds).",
710
714
  inputSchema: {
711
715
  q: { type: "string", required: false, description: "Gmail search query" },
@@ -743,6 +747,7 @@ export default function gmail(rl) {
743
747
  },
744
748
  });
745
749
  rl.registerAction("message.delete", {
750
+ access: "write",
746
751
  description: "Permanently delete a message",
747
752
  inputSchema: { id: { type: "string", required: true } },
748
753
  async execute(input, ctx) {
@@ -751,6 +756,7 @@ export default function gmail(rl) {
751
756
  },
752
757
  });
753
758
  rl.registerAction("message.trash", {
759
+ access: "write",
754
760
  description: "Move a message to trash (recoverable)",
755
761
  inputSchema: { id: { type: "string", required: true } },
756
762
  async execute(input, ctx) {
@@ -759,6 +765,7 @@ export default function gmail(rl) {
759
765
  },
760
766
  });
761
767
  rl.registerAction("message.untrash", {
768
+ access: "write",
762
769
  description: "Remove a message from trash",
763
770
  inputSchema: { id: { type: "string", required: true } },
764
771
  async execute(input, ctx) {
@@ -767,6 +774,7 @@ export default function gmail(rl) {
767
774
  },
768
775
  });
769
776
  rl.registerAction("message.markAsRead", {
777
+ access: "write",
770
778
  description: "Remove the UNREAD label",
771
779
  inputSchema: { id: { type: "string", required: true } },
772
780
  async execute(input, ctx) {
@@ -777,6 +785,7 @@ export default function gmail(rl) {
777
785
  },
778
786
  });
779
787
  rl.registerAction("message.markAsUnread", {
788
+ access: "write",
780
789
  description: "Add the UNREAD label",
781
790
  inputSchema: { id: { type: "string", required: true } },
782
791
  async execute(input, ctx) {
@@ -787,6 +796,7 @@ export default function gmail(rl) {
787
796
  },
788
797
  });
789
798
  rl.registerAction("message.addLabels", {
799
+ access: "write",
790
800
  description: "Add labels to a message",
791
801
  inputSchema: {
792
802
  id: { type: "string", required: true },
@@ -800,6 +810,7 @@ export default function gmail(rl) {
800
810
  },
801
811
  });
802
812
  rl.registerAction("message.removeLabels", {
813
+ access: "write",
803
814
  description: "Remove labels from a message",
804
815
  inputSchema: {
805
816
  id: { type: "string", required: true },
@@ -813,6 +824,7 @@ export default function gmail(rl) {
813
824
  },
814
825
  });
815
826
  rl.registerAction("message.getAttachment", {
827
+ access: "read",
816
828
  description: "Download an attachment by ID (returns {size, data} where data is base64url)",
817
829
  inputSchema: {
818
830
  messageId: { type: "string", required: true },
@@ -825,6 +837,7 @@ export default function gmail(rl) {
825
837
  });
826
838
  // ── Thread ────────────────────────────────────────────
827
839
  rl.registerAction("thread.get", {
840
+ access: "read",
828
841
  description: "Get a thread by ID",
829
842
  inputSchema: {
830
843
  id: { type: "string", required: true },
@@ -853,6 +866,7 @@ export default function gmail(rl) {
853
866
  },
854
867
  });
855
868
  rl.registerAction("thread.list", {
869
+ access: "read",
856
870
  description: "List threads. Same filter sugar as `message.list` (sender, readStatus, receivedAfter/Before).",
857
871
  inputSchema: {
858
872
  q: { type: "string", required: false },
@@ -877,6 +891,7 @@ export default function gmail(rl) {
877
891
  },
878
892
  });
879
893
  rl.registerAction("thread.delete", {
894
+ access: "write",
880
895
  description: "Permanently delete a thread",
881
896
  inputSchema: { id: { type: "string", required: true } },
882
897
  async execute(input, ctx) {
@@ -885,6 +900,7 @@ export default function gmail(rl) {
885
900
  },
886
901
  });
887
902
  rl.registerAction("thread.trash", {
903
+ access: "write",
888
904
  description: "Move a thread to trash",
889
905
  inputSchema: { id: { type: "string", required: true } },
890
906
  async execute(input, ctx) {
@@ -893,6 +909,7 @@ export default function gmail(rl) {
893
909
  },
894
910
  });
895
911
  rl.registerAction("thread.untrash", {
912
+ access: "write",
896
913
  description: "Remove a thread from trash",
897
914
  inputSchema: { id: { type: "string", required: true } },
898
915
  async execute(input, ctx) {
@@ -901,6 +918,7 @@ export default function gmail(rl) {
901
918
  },
902
919
  });
903
920
  rl.registerAction("thread.addLabels", {
921
+ access: "write",
904
922
  description: "Add labels to all messages in a thread",
905
923
  inputSchema: {
906
924
  id: { type: "string", required: true },
@@ -914,6 +932,7 @@ export default function gmail(rl) {
914
932
  },
915
933
  });
916
934
  rl.registerAction("thread.removeLabels", {
935
+ access: "write",
917
936
  description: "Remove labels from all messages in a thread",
918
937
  inputSchema: {
919
938
  id: { type: "string", required: true },
@@ -927,6 +946,7 @@ export default function gmail(rl) {
927
946
  },
928
947
  });
929
948
  rl.registerAction("thread.reply", {
949
+ access: "write",
930
950
  description: "Reply to the last message in a thread (convenience wrapper over message.reply)",
931
951
  inputSchema: {
932
952
  id: { type: "string", required: true, description: "Thread ID" },
@@ -950,6 +970,7 @@ export default function gmail(rl) {
950
970
  });
951
971
  // ── Draft ─────────────────────────────────────────────
952
972
  rl.registerAction("draft.create", {
973
+ access: "write",
953
974
  description: "Create a draft",
954
975
  inputSchema: {
955
976
  to: { type: "string", required: false },
@@ -1001,6 +1022,7 @@ export default function gmail(rl) {
1001
1022
  },
1002
1023
  });
1003
1024
  rl.registerAction("draft.get", {
1025
+ access: "read",
1004
1026
  description: "Get a draft by ID",
1005
1027
  inputSchema: {
1006
1028
  id: { type: "string", required: true },
@@ -1013,6 +1035,7 @@ export default function gmail(rl) {
1013
1035
  },
1014
1036
  });
1015
1037
  rl.registerAction("draft.list", {
1038
+ access: "read",
1016
1039
  description: "List drafts",
1017
1040
  inputSchema: {
1018
1041
  q: { type: "string", required: false },
@@ -1038,6 +1061,7 @@ export default function gmail(rl) {
1038
1061
  },
1039
1062
  });
1040
1063
  rl.registerAction("draft.delete", {
1064
+ access: "write",
1041
1065
  description: "Delete a draft",
1042
1066
  inputSchema: { id: { type: "string", required: true } },
1043
1067
  async execute(input, ctx) {
@@ -1046,6 +1070,7 @@ export default function gmail(rl) {
1046
1070
  },
1047
1071
  });
1048
1072
  rl.registerAction("draft.send", {
1073
+ access: "write",
1049
1074
  description: "Send an existing draft",
1050
1075
  inputSchema: { id: { type: "string", required: true } },
1051
1076
  async execute(input, ctx) {
@@ -1055,6 +1080,7 @@ export default function gmail(rl) {
1055
1080
  });
1056
1081
  // ── Label ─────────────────────────────────────────────
1057
1082
  rl.registerAction("label.create", {
1083
+ access: "write",
1058
1084
  description: "Create a label",
1059
1085
  inputSchema: {
1060
1086
  name: { type: "string", required: true },
@@ -1082,6 +1108,7 @@ export default function gmail(rl) {
1082
1108
  },
1083
1109
  });
1084
1110
  rl.registerAction("label.get", {
1111
+ access: "read",
1085
1112
  description: "Get a label by ID",
1086
1113
  inputSchema: { id: { type: "string", required: true } },
1087
1114
  async execute(input, ctx) {
@@ -1090,6 +1117,7 @@ export default function gmail(rl) {
1090
1117
  },
1091
1118
  });
1092
1119
  rl.registerAction("label.list", {
1120
+ access: "read",
1093
1121
  description: "List all labels",
1094
1122
  async execute(_input, ctx) {
1095
1123
  const res = (await gmailRequest(ctx, "GET", "/labels"));
@@ -1097,6 +1125,7 @@ export default function gmail(rl) {
1097
1125
  },
1098
1126
  });
1099
1127
  rl.registerAction("label.delete", {
1128
+ access: "write",
1100
1129
  description: "Delete a label",
1101
1130
  inputSchema: { id: { type: "string", required: true } },
1102
1131
  async execute(input, ctx) {
@@ -1105,6 +1134,7 @@ export default function gmail(rl) {
1105
1134
  },
1106
1135
  });
1107
1136
  rl.registerAction("label.update", {
1137
+ access: "write",
1108
1138
  description: "Update a label",
1109
1139
  inputSchema: {
1110
1140
  id: { type: "string", required: true },
@@ -1128,12 +1158,14 @@ export default function gmail(rl) {
1128
1158
  });
1129
1159
  // ── Profile / aliases ─────────────────────────────────
1130
1160
  rl.registerAction("profile.get", {
1161
+ access: "read",
1131
1162
  description: "Get the authenticated user's profile",
1132
1163
  async execute(_input, ctx) {
1133
1164
  return gmailRequest(ctx, "GET", "/profile");
1134
1165
  },
1135
1166
  });
1136
1167
  rl.registerAction("alias.list", {
1168
+ access: "read",
1137
1169
  description: "List configured send-as aliases",
1138
1170
  async execute(_input, ctx) {
1139
1171
  const res = (await gmailRequest(ctx, "GET", "/settings/sendAs"));
@@ -62,6 +62,7 @@ export default function gong(rl) {
62
62
  },
63
63
  });
64
64
  rl.registerAction("call.get", {
65
+ access: "read",
65
66
  description: "Get detailed call data",
66
67
  inputSchema: {
67
68
  callId: { type: "string", required: true, description: "Call ID" },
@@ -83,6 +84,7 @@ export default function gong(rl) {
83
84
  },
84
85
  });
85
86
  rl.registerAction("call.list", {
87
+ access: "read",
86
88
  description: "List calls",
87
89
  inputSchema: {
88
90
  limit: { type: "number", required: false, description: "Max results" },
@@ -130,6 +132,7 @@ export default function gong(rl) {
130
132
  },
131
133
  });
132
134
  rl.registerAction("user.get", {
135
+ access: "read",
133
136
  description: "Get a user",
134
137
  inputSchema: {
135
138
  userId: { type: "string", required: true, description: "User ID" },
@@ -145,6 +148,7 @@ export default function gong(rl) {
145
148
  },
146
149
  });
147
150
  rl.registerAction("user.list", {
151
+ access: "read",
148
152
  description: "List users",
149
153
  inputSchema: {
150
154
  limit: { type: "number", required: false, description: "Max results" },
@@ -46,6 +46,7 @@ export default function googleAppsScript(rl) {
46
46
  serviceAccountSubject: { type: "string", required: false, description: "User to impersonate (domain-wide delegation)", env: "GOOGLE_APPS_SCRIPT_SERVICE_ACCOUNT_SUBJECT" },
47
47
  });
48
48
  rl.registerAction("script.list", {
49
+ access: "read",
49
50
  description: "List Apps Script projects in Drive (standalone scripts; bound scripts live inside their container and don't appear here).",
50
51
  inputSchema: {
51
52
  query: { type: "string", required: false, description: "Case-insensitive name substring filter." },
@@ -68,6 +69,7 @@ export default function googleAppsScript(rl) {
68
69
  },
69
70
  });
70
71
  rl.registerAction("project.getContent", {
72
+ access: "read",
71
73
  description: "Get all files of an Apps Script project (name, type, source).",
72
74
  inputSchema: { scriptId: { type: "string", required: true } },
73
75
  async execute(input, ctx) {
@@ -76,6 +78,7 @@ export default function googleAppsScript(rl) {
76
78
  },
77
79
  });
78
80
  rl.registerAction("project.readFile", {
81
+ access: "read",
79
82
  description: "Read one file's source from a project.",
80
83
  inputSchema: {
81
84
  scriptId: { type: "string", required: true },
@@ -90,6 +93,7 @@ export default function googleAppsScript(rl) {
90
93
  },
91
94
  });
92
95
  rl.registerAction("file.edit", {
96
+ access: "write",
93
97
  description: "Replace (or add) a single file's source, leaving other files untouched. Read-modify-write — the safe way to change code.",
94
98
  inputSchema: {
95
99
  scriptId: { type: "string", required: true },
@@ -112,6 +116,7 @@ export default function googleAppsScript(rl) {
112
116
  },
113
117
  });
114
118
  rl.registerAction("project.updateContent", {
119
+ access: "write",
115
120
  description: "Replace the entire project file set. files = [{name, type, source}], must include the appsscript JSON manifest. Prefer file.edit for single changes.",
116
121
  inputSchema: {
117
122
  scriptId: { type: "string", required: true },
@@ -123,6 +128,7 @@ export default function googleAppsScript(rl) {
123
128
  },
124
129
  });
125
130
  rl.registerAction("project.create", {
131
+ access: "write",
126
132
  description: "Create a new Apps Script project. Pass parentId (a Drive file id, e.g. a Sheet) to bind it to that container.",
127
133
  inputSchema: {
128
134
  title: { type: "string", required: true },
@@ -137,6 +143,7 @@ export default function googleAppsScript(rl) {
137
143
  },
138
144
  });
139
145
  rl.registerAction("version.create", {
146
+ access: "write",
140
147
  description: "Create an immutable version of the project (needed before deploying).",
141
148
  inputSchema: {
142
149
  scriptId: { type: "string", required: true },
@@ -148,6 +155,7 @@ export default function googleAppsScript(rl) {
148
155
  },
149
156
  });
150
157
  rl.registerAction("deployment.create", {
158
+ access: "write",
151
159
  description: "Deploy a version. For function.run, deploy with an API-executable manifest (executionApi access).",
152
160
  inputSchema: {
153
161
  scriptId: { type: "string", required: true },
@@ -165,6 +173,7 @@ export default function googleAppsScript(rl) {
165
173
  },
166
174
  });
167
175
  rl.registerAction("function.run", {
176
+ access: "write",
168
177
  description: "Run a function via scripts.run. Requires the project linked to a standard GCP project, the Apps Script API enabled, and an API-executable deployment (or devMode for the owner).",
169
178
  inputSchema: {
170
179
  scriptId: { type: "string", required: true },
@@ -186,6 +195,7 @@ export default function googleAppsScript(rl) {
186
195
  },
187
196
  });
188
197
  rl.registerAction("process.list", {
198
+ access: "read",
189
199
  description: "Recent executions for a project (status, function, times) — a log view.",
190
200
  inputSchema: {
191
201
  scriptId: { type: "string", required: true },
@@ -345,6 +345,7 @@ export default function googleCalendar(rl) {
345
345
  });
346
346
  // ── Calendar ──────────────────────────────────────────
347
347
  rl.registerAction("calendar.list", {
348
+ access: "read",
348
349
  description: "List calendars the authenticated user has access to",
349
350
  inputSchema: {
350
351
  returnAll: { type: "boolean", required: false },
@@ -377,6 +378,7 @@ export default function googleCalendar(rl) {
377
378
  },
378
379
  });
379
380
  rl.registerAction("calendar.get", {
381
+ access: "read",
380
382
  description: "Get a calendar's metadata (including conference solutions)",
381
383
  inputSchema: {
382
384
  calendarId: {
@@ -391,6 +393,7 @@ export default function googleCalendar(rl) {
391
393
  },
392
394
  });
393
395
  rl.registerAction("calendar.availability", {
396
+ access: "read",
394
397
  description: "Check free/busy information for one or more calendars over a time range",
395
398
  inputSchema: {
396
399
  calendarId: {
@@ -466,6 +469,7 @@ export default function googleCalendar(rl) {
466
469
  },
467
470
  });
468
471
  rl.registerAction("calendar.listColors", {
472
+ access: "read",
469
473
  description: "List event and calendar color palettes available in Google Calendar",
470
474
  async execute(_input, ctx) {
471
475
  return calRequest(ctx, "GET", "/colors");
@@ -473,6 +477,7 @@ export default function googleCalendar(rl) {
473
477
  });
474
478
  // ── Event ─────────────────────────────────────────────
475
479
  rl.registerAction("event.create", {
480
+ access: "write",
476
481
  description: "Create a calendar event",
477
482
  inputSchema: {
478
483
  calendarId: { type: "string", required: true },
@@ -550,6 +555,7 @@ export default function googleCalendar(rl) {
550
555
  },
551
556
  });
552
557
  rl.registerAction("event.get", {
558
+ access: "read",
553
559
  description: "Get a single event",
554
560
  inputSchema: {
555
561
  calendarId: { type: "string", required: true },
@@ -576,6 +582,7 @@ export default function googleCalendar(rl) {
576
582
  },
577
583
  });
578
584
  rl.registerAction("event.list", {
585
+ access: "read",
579
586
  description: "List events in a calendar. Set `singleEvents=true` to expand recurring events into instances.",
580
587
  inputSchema: {
581
588
  calendarId: { type: "string", required: true },
@@ -645,6 +652,7 @@ export default function googleCalendar(rl) {
645
652
  },
646
653
  });
647
654
  rl.registerAction("event.listInstances", {
655
+ access: "read",
648
656
  description: "List instances of a recurring event",
649
657
  inputSchema: {
650
658
  calendarId: { type: "string", required: true },
@@ -679,6 +687,7 @@ export default function googleCalendar(rl) {
679
687
  },
680
688
  });
681
689
  rl.registerAction("event.update", {
690
+ access: "write",
682
691
  description: "Patch an event (only supplied fields are changed). Set modifyTarget='series' to edit the entire recurrence instead of a single instance.",
683
692
  inputSchema: {
684
693
  calendarId: { type: "string", required: true },
@@ -748,6 +757,7 @@ export default function googleCalendar(rl) {
748
757
  },
749
758
  });
750
759
  rl.registerAction("event.delete", {
760
+ access: "write",
751
761
  description: "Delete an event",
752
762
  inputSchema: {
753
763
  calendarId: { type: "string", required: true },
@@ -763,6 +773,7 @@ export default function googleCalendar(rl) {
763
773
  },
764
774
  });
765
775
  rl.registerAction("event.move", {
776
+ access: "write",
766
777
  description: "Move an event from one calendar to another",
767
778
  inputSchema: {
768
779
  calendarId: { type: "string", required: true, description: "Source calendar" },
@@ -782,6 +793,7 @@ export default function googleCalendar(rl) {
782
793
  });
783
794
  // ─── FreeBusy ────────────────────────────────────────────────────
784
795
  rl.registerAction("freeBusy.query", {
796
+ access: "read",
785
797
  description: "Query free/busy windows across one or more calendars in a time range. Returns an array of busy intervals per calendar id, plus any errors.",
786
798
  inputSchema: {
787
799
  calendarIds: { type: "array", required: true, description: "Calendar ids to query (use 'primary' for the user's own)." },
@@ -806,6 +818,7 @@ export default function googleCalendar(rl) {
806
818
  });
807
819
  // ─── Calendar list management ───────────────────────────────────
808
820
  rl.registerAction("calendarList.list", {
821
+ access: "read",
809
822
  description: "List calendars on the user's calendar list (the user's left sidebar).",
810
823
  inputSchema: {
811
824
  minAccessRole: { type: "string", required: false, description: "freeBusyReader | reader | writer | owner" },
@@ -828,6 +841,7 @@ export default function googleCalendar(rl) {
828
841
  },
829
842
  });
830
843
  rl.registerAction("calendarList.insert", {
844
+ access: "write",
831
845
  description: "Add a calendar (by id) to the user's calendar list.",
832
846
  inputSchema: {
833
847
  calendarId: { type: "string", required: true },
@@ -846,6 +860,7 @@ export default function googleCalendar(rl) {
846
860
  },
847
861
  });
848
862
  rl.registerAction("calendarList.patch", {
863
+ access: "write",
849
864
  description: "Patch a calendar entry on the user's calendar list (colors, summary override, reminders, selected).",
850
865
  inputSchema: {
851
866
  calendarId: { type: "string", required: true },
@@ -868,6 +883,7 @@ export default function googleCalendar(rl) {
868
883
  },
869
884
  });
870
885
  rl.registerAction("calendarList.delete", {
886
+ access: "write",
871
887
  description: "Remove a calendar from the user's calendar list (does not delete the underlying calendar).",
872
888
  inputSchema: { calendarId: { type: "string", required: true } },
873
889
  async execute(input, ctx) {
@@ -878,6 +894,7 @@ export default function googleCalendar(rl) {
878
894
  });
879
895
  // ─── ACL (calendar sharing) ──────────────────────────────────────
880
896
  rl.registerAction("acl.list", {
897
+ access: "read",
881
898
  description: "List ACL rules on a calendar.",
882
899
  inputSchema: {
883
900
  calendarId: { type: "string", required: true },
@@ -893,6 +910,7 @@ export default function googleCalendar(rl) {
893
910
  },
894
911
  });
895
912
  rl.registerAction("acl.insert", {
913
+ access: "write",
896
914
  description: "Add an ACL rule to a calendar. Roles: 'none' | 'freeBusyReader' | 'reader' | 'writer' | 'owner'.",
897
915
  inputSchema: {
898
916
  calendarId: { type: "string", required: true },
@@ -908,6 +926,7 @@ export default function googleCalendar(rl) {
908
926
  },
909
927
  });
910
928
  rl.registerAction("acl.update", {
929
+ access: "write",
911
930
  description: "Patch an ACL rule's role.",
912
931
  inputSchema: {
913
932
  calendarId: { type: "string", required: true },
@@ -920,6 +939,7 @@ export default function googleCalendar(rl) {
920
939
  },
921
940
  });
922
941
  rl.registerAction("acl.delete", {
942
+ access: "write",
923
943
  description: "Remove an ACL rule.",
924
944
  inputSchema: {
925
945
  calendarId: { type: "string", required: true },
@@ -933,6 +953,7 @@ export default function googleCalendar(rl) {
933
953
  });
934
954
  // ─── Settings ────────────────────────────────────────────────────
935
955
  rl.registerAction("settings.list", {
956
+ access: "read",
936
957
  description: "List the user's calendar settings (timezone, week start, working location, etc.).",
937
958
  inputSchema: { returnAll: { type: "boolean", required: false, default: true } },
938
959
  async execute(_input, ctx) {
@@ -940,6 +961,7 @@ export default function googleCalendar(rl) {
940
961
  },
941
962
  });
942
963
  rl.registerAction("settings.get", {
964
+ access: "read",
943
965
  description: "Get a single setting by key (e.g. 'timezone', 'weekStart', 'locale').",
944
966
  inputSchema: { setting: { type: "string", required: true } },
945
967
  async execute(input, ctx) {
@@ -326,6 +326,7 @@ export default function googleContacts(rl) {
326
326
  });
327
327
  // ── Contact ───────────────────────────────────────────
328
328
  rl.registerAction("contact.create", {
329
+ access: "write",
329
330
  description: "Create a new contact",
330
331
  inputSchema: {
331
332
  givenName: { type: "string", required: false },
@@ -389,6 +390,7 @@ export default function googleContacts(rl) {
389
390
  },
390
391
  });
391
392
  rl.registerAction("contact.get", {
393
+ access: "read",
392
394
  description: "Get a contact by ID",
393
395
  inputSchema: {
394
396
  contactId: {
@@ -410,6 +412,7 @@ export default function googleContacts(rl) {
410
412
  },
411
413
  });
412
414
  rl.registerAction("contact.list", {
415
+ access: "read",
413
416
  description: "List contacts (people/me/connections) or search them. When `query` is set, hits people:searchContacts; otherwise returns the user's connections.",
414
417
  inputSchema: {
415
418
  query: {
@@ -479,6 +482,7 @@ export default function googleContacts(rl) {
479
482
  },
480
483
  });
481
484
  rl.registerAction("contact.update", {
485
+ access: "write",
482
486
  description: "Update a contact. Only supplied fields are sent; etag is resolved automatically if not provided.",
483
487
  inputSchema: {
484
488
  contactId: { type: "string", required: true },
@@ -533,6 +537,7 @@ export default function googleContacts(rl) {
533
537
  },
534
538
  });
535
539
  rl.registerAction("contact.delete", {
540
+ access: "write",
536
541
  description: "Delete a contact",
537
542
  inputSchema: { contactId: { type: "string", required: true } },
538
543
  async execute(input, ctx) {
@@ -544,6 +549,7 @@ export default function googleContacts(rl) {
544
549
  });
545
550
  // ── Contact groups ────────────────────────────────────
546
551
  rl.registerAction("group.list", {
552
+ access: "read",
547
553
  description: "List contact groups (including system groups like 'myContacts' and 'starred')",
548
554
  inputSchema: {
549
555
  returnAll: { type: "boolean", required: false },
@@ -567,6 +573,7 @@ export default function googleContacts(rl) {
567
573
  },
568
574
  });
569
575
  rl.registerAction("group.get", {
576
+ access: "read",
570
577
  description: "Get a contact group by ID",
571
578
  inputSchema: {
572
579
  groupId: { type: "string", required: true },
@@ -586,6 +593,7 @@ export default function googleContacts(rl) {
586
593
  },
587
594
  });
588
595
  rl.registerAction("group.create", {
596
+ access: "write",
589
597
  description: "Create a contact group",
590
598
  inputSchema: {
591
599
  name: { type: "string", required: true },
@@ -607,6 +615,7 @@ export default function googleContacts(rl) {
607
615
  },
608
616
  });
609
617
  rl.registerAction("group.update", {
618
+ access: "write",
610
619
  description: "Update a contact group. Pass a fresh `etag` or let the plugin resolve it automatically.",
611
620
  inputSchema: {
612
621
  groupId: { type: "string", required: true },
@@ -642,6 +651,7 @@ export default function googleContacts(rl) {
642
651
  },
643
652
  });
644
653
  rl.registerAction("group.delete", {
654
+ access: "write",
645
655
  description: "Delete a contact group. Pass `deleteContacts=true` to also delete every contact in the group.",
646
656
  inputSchema: {
647
657
  groupId: { type: "string", required: true },
@@ -1,6 +1,7 @@
1
1
  import { DRIVE_BASE, docsRequest, extractDocumentId, flattenBodyText, } from "./shared.js";
2
2
  export function registerDocumentsActions(rl) {
3
3
  rl.registerAction("document.create", {
4
+ access: "write",
4
5
  description: "Create a new Google Doc, optionally in a specific Drive folder (goes through the Drive API; needs drive.file scope).",
5
6
  inputSchema: {
6
7
  title: { type: "string", required: true },
@@ -23,6 +24,7 @@ export function registerDocumentsActions(rl) {
23
24
  },
24
25
  });
25
26
  rl.registerAction("document.createBlank", {
27
+ access: "write",
26
28
  description: "Create a blank Google Doc through the native Docs API. Use document.create when you need Drive folder placement.",
27
29
  inputSchema: {
28
30
  title: { type: "string", required: true },
@@ -33,6 +35,7 @@ export function registerDocumentsActions(rl) {
33
35
  },
34
36
  });
35
37
  rl.registerAction("document.get", {
38
+ access: "read",
36
39
  description: "Get a document. Accepts a bare ID or a docs.google.com URL. `simple=true` collapses the body to plain text.",
37
40
  inputSchema: {
38
41
  document: {
@@ -67,6 +70,7 @@ export function registerDocumentsActions(rl) {
67
70
  },
68
71
  });
69
72
  rl.registerAction("document.batchUpdate", {
73
+ access: "write",
70
74
  description: "Raw passthrough to documents.batchUpdate — pass a full `requests` array for atomic multi-edit operations.",
71
75
  inputSchema: {
72
76
  document: { type: "string", required: true },
@@ -1,6 +1,7 @@
1
1
  import { compact, extractDocumentId, runBatchUpdate } from "./shared.js";
2
2
  export function registerFormattingActions(rl) {
3
3
  rl.registerAction("document.updateParagraphStyle", {
4
+ access: "write",
4
5
  description: "Apply paragraph styling (alignment, named style, indents, spacing, direction) to the paragraphs intersecting the range.",
5
6
  inputSchema: {
6
7
  document: { type: "string", required: true },
@@ -96,6 +97,7 @@ export function registerFormattingActions(rl) {
96
97
  },
97
98
  });
98
99
  rl.registerAction("document.updateNamedStyle", {
100
+ access: "write",
99
101
  description: "Update a named style such as NORMAL_TEXT, TITLE, or HEADING_1 using a Docs API NamedStyle object.",
100
102
  inputSchema: {
101
103
  document: { type: "string", required: true },
@@ -1,6 +1,7 @@
1
1
  import { buildLocation, extractDocumentId, runBatchUpdate } from "./shared.js";
2
2
  export function registerImagesActions(rl) {
3
3
  rl.registerAction("document.insertInlineImage", {
4
+ access: "write",
4
5
  description: "Insert an inline image at the given location. `uri` must point to a publicly fetchable image.",
5
6
  inputSchema: {
6
7
  document: { type: "string", required: true },
@@ -36,6 +37,7 @@ export function registerImagesActions(rl) {
36
37
  },
37
38
  });
38
39
  rl.registerAction("document.replaceImage", {
40
+ access: "write",
39
41
  description: "Replace an existing image (identified by its inline-object id) with a new image from a publicly fetchable URI.",
40
42
  inputSchema: {
41
43
  document: { type: "string", required: true },