@oomol-lab/open-connector 1.6.5 → 1.7.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 (243) hide show
  1. package/assets/open-connector/catalog/apps/aisa.json +6138 -312
  2. package/assets/open-connector/catalog/apps/baizhi_mcp.json +135 -0
  3. package/assets/open-connector/catalog/apps/discordbot.json +2888 -248
  4. package/assets/open-connector/catalog/apps/drawio_mcp.json +192 -0
  5. package/assets/open-connector/catalog/apps/firecrawl.json +176 -32
  6. package/assets/open-connector/catalog/apps/framejet.json +273 -0
  7. package/assets/open-connector/catalog/apps/futunn.json +2967 -0
  8. package/assets/open-connector/catalog/apps/gmail.json +225 -0
  9. package/assets/open-connector/catalog/apps/google_analytics.json +4 -1
  10. package/assets/open-connector/catalog/apps/google_bigquery.json +4 -1
  11. package/assets/open-connector/catalog/apps/google_search_console.json +4 -1
  12. package/assets/open-connector/catalog/apps/googlecalendar.json +4 -1
  13. package/assets/open-connector/catalog/apps/googlechat.json +694 -7
  14. package/assets/open-connector/catalog/apps/googledocs.json +4 -1
  15. package/assets/open-connector/catalog/apps/googlesheets.json +4 -1
  16. package/assets/open-connector/catalog/apps/granola.json +23 -0
  17. package/assets/open-connector/catalog/apps/keepa.json +3534 -987
  18. package/assets/open-connector/catalog/apps/linear.json +17 -0
  19. package/assets/open-connector/catalog/apps/linear_mcp.json +510 -0
  20. package/assets/open-connector/catalog/apps/moneyforward_mcp.json +1432 -0
  21. package/assets/open-connector/catalog/apps/notion.json +446 -1
  22. package/assets/open-connector/catalog/apps/notion_mcp.json +490 -0
  23. package/assets/open-connector/catalog/apps/odoo.json +619 -0
  24. package/assets/open-connector/catalog/apps/outlook.json +30 -8
  25. package/assets/open-connector/catalog/apps/outlook_calendar.json +23 -2
  26. package/assets/open-connector/catalog/apps/postiz.json +334 -0
  27. package/assets/open-connector/catalog/apps/proworkflow.json +529 -0
  28. package/assets/open-connector/catalog/apps/sellersprite_mcp.json +2 -1
  29. package/assets/open-connector/catalog/apps/slack.json +223 -0
  30. package/assets/open-connector/catalog/apps/slackbot.json +214 -0
  31. package/assets/open-connector/catalog/apps/tencent_docs.json +3 -0
  32. package/assets/open-connector/catalog/apps/wisburg.json +1528 -0
  33. package/assets/open-connector/catalog/apps/youtube.json +4 -1
  34. package/assets/open-connector/catalog/apps/zerotier.json +3319 -0
  35. package/assets/open-connector/catalog/apps-index.json +1 -1
  36. package/package.json +1 -1
  37. package/src/core/cast.d.ts +10 -0
  38. package/src/core/cast.js +14 -0
  39. package/src/core/guarded-fetch.d.ts +6 -3
  40. package/src/core/guarded-fetch.js +6 -3
  41. package/src/core/provider-scenarios.js +67 -13
  42. package/src/core/request.js +4 -1
  43. package/src/core/types.d.ts +1 -1
  44. package/src/mcp.js +10 -7
  45. package/src/oauth/oauth-client-config-service.d.ts +16 -1
  46. package/src/oauth/oauth-client-config-service.js +59 -3
  47. package/src/oauth/oauth-flow-service.d.ts +6 -0
  48. package/src/oauth/oauth-flow-service.js +4 -2
  49. package/src/providers/17track/runtime.js +1 -1
  50. package/src/providers/action-contracts.generated.d.ts +17 -5
  51. package/src/providers/aifinmarket/runtime.js +1 -1
  52. package/src/providers/aisa/executors.js +734 -46
  53. package/src/providers/aliyun_ack/runtime.js +1 -1
  54. package/src/providers/aliyun_sls/runtime.js +1 -1
  55. package/src/providers/app_store_server/runtime-helpers.js +1 -1
  56. package/src/providers/baizhi_mcp/actions.d.ts +2 -0
  57. package/src/providers/baizhi_mcp/actions.js +40 -0
  58. package/src/providers/baizhi_mcp/executors.d.ts +3 -0
  59. package/src/providers/baizhi_mcp/executors.js +102 -0
  60. package/src/providers/bazhuayu/runtime.js +2 -2
  61. package/src/providers/bilibili/runtime.js +2 -4
  62. package/src/providers/bilibili/upload.js +9 -7
  63. package/src/providers/cloudflare_browser_rendering/executors.js +1 -1
  64. package/src/providers/cloudflare_dns/executors.js +1 -1
  65. package/src/providers/{cloudflare-current-user.js → cloudflare_dns/runtime-user.js} +2 -2
  66. package/src/providers/cloudflare_dns/runtime.d.ts +1 -1
  67. package/src/providers/cloudflare_dns/runtime.js +1 -1
  68. package/src/providers/cloudflare_r2/executors.js +1 -1
  69. package/src/providers/cloudflare_r2/runtime.d.ts +1 -1
  70. package/src/providers/cloudflare_r2/runtime.js +1 -1
  71. package/src/providers/cloudflare_worker/executors.js +1 -1
  72. package/src/providers/cloudflare_worker/runtime.d.ts +1 -1
  73. package/src/providers/cloudflare_worker/runtime.js +1 -1
  74. package/src/providers/dingtalk_mcp/runtime.js +1 -1
  75. package/src/providers/discordbot/executors.d.ts +0 -9
  76. package/src/providers/discordbot/executors.js +9 -101
  77. package/src/providers/discordbot/runtime-guilds.d.ts +3 -0
  78. package/src/providers/discordbot/runtime-guilds.js +464 -0
  79. package/src/providers/discordbot/runtime.d.ts +42 -0
  80. package/src/providers/discordbot/runtime.js +124 -0
  81. package/src/providers/drawio_mcp/executors.d.ts +3 -0
  82. package/src/providers/drawio_mcp/executors.js +19 -0
  83. package/src/providers/drawio_mcp/runtime.d.ts +8 -0
  84. package/src/providers/drawio_mcp/runtime.js +175 -0
  85. package/src/providers/fastmoss_mcp/executors.js +2 -2
  86. package/src/providers/finchina/executors.js +1 -1
  87. package/src/providers/framejet/executors.d.ts +4 -0
  88. package/src/providers/framejet/executors.js +19 -0
  89. package/src/providers/framejet/runtime.d.ts +16 -0
  90. package/src/providers/framejet/runtime.js +148 -0
  91. package/src/providers/futunn/actions.d.ts +2 -0
  92. package/src/providers/futunn/actions.js +152 -0
  93. package/src/providers/futunn/actions.research.d.ts +2 -0
  94. package/src/providers/futunn/actions.research.js +423 -0
  95. package/src/providers/futunn/actions.trading.d.ts +2 -0
  96. package/src/providers/futunn/actions.trading.js +204 -0
  97. package/src/providers/futunn/executors.d.ts +3 -0
  98. package/src/providers/futunn/executors.js +24 -0
  99. package/src/providers/futunn/runtime-research.d.ts +3 -0
  100. package/src/providers/futunn/runtime-research.js +133 -0
  101. package/src/providers/futunn/runtime-trading.d.ts +3 -0
  102. package/src/providers/futunn/runtime-trading.js +39 -0
  103. package/src/providers/futunn/runtime.d.ts +2 -0
  104. package/src/providers/futunn/runtime.js +50 -0
  105. package/src/providers/futunn/transport.d.ts +11 -0
  106. package/src/providers/futunn/transport.js +76 -0
  107. package/src/providers/gildata/executors.js +1 -1
  108. package/src/providers/gmail/executors.js +3 -3
  109. package/src/providers/gmail/message.d.ts +6 -8
  110. package/src/providers/gmail/message.js +4 -0
  111. package/src/providers/gmail/scopes.d.ts +32 -0
  112. package/src/providers/gmail/scopes.js +37 -0
  113. package/src/providers/google_analytics/executors.js +2 -2
  114. package/src/providers/google_analytics/scopes.js +6 -1
  115. package/src/providers/google_bigquery/executors.js +2 -2
  116. package/src/providers/google_bigquery/scopes.js +2 -0
  117. package/src/providers/google_search_console/executors.js +2 -2
  118. package/src/providers/google_search_console/scopes.js +2 -0
  119. package/src/providers/googleads/executors.js +1 -1
  120. package/src/providers/googleads/scopes.d.ts +1 -3
  121. package/src/providers/googleads/scopes.js +2 -4
  122. package/src/providers/googlecalendar/executors.js +1 -1
  123. package/src/providers/googlecalendar/runtime-shared.js +2 -2
  124. package/src/providers/googlecalendar/scopes.js +2 -0
  125. package/src/providers/googlechat/executors.d.ts +1 -3
  126. package/src/providers/googlechat/executors.js +219 -28
  127. package/src/providers/googlechat/members.d.ts +55 -0
  128. package/src/providers/googlechat/members.js +293 -0
  129. package/src/providers/googlechat/runtime.d.ts +16 -0
  130. package/src/providers/googlechat/runtime.js +25 -0
  131. package/src/providers/googlechat/scopes.d.ts +22 -3
  132. package/src/providers/googlechat/scopes.js +30 -7
  133. package/src/providers/googledocs/executors.js +1 -1
  134. package/src/providers/googledrive/executors.js +2 -2
  135. package/src/providers/{google-auth.d.ts → googledrive/runtime-auth.d.ts} +2 -2
  136. package/src/providers/{google-auth.js → googledrive/runtime-auth.js} +3 -3
  137. package/src/providers/googledrive/runtime-collaboration.js +1 -1
  138. package/src/providers/{google-runtime.d.ts → googledrive/runtime-request.d.ts} +1 -1
  139. package/src/providers/{google-runtime.js → googledrive/runtime-request.js} +2 -2
  140. package/src/providers/googleforms/executors.js +2 -2
  141. package/src/providers/googleforms/scopes.d.ts +0 -3
  142. package/src/providers/googleforms/scopes.js +2 -6
  143. package/src/providers/googlemeet/executors.js +2 -2
  144. package/src/providers/googlemeet/scopes.d.ts +0 -3
  145. package/src/providers/googlemeet/scopes.js +2 -6
  146. package/src/providers/googlesheets/executors.js +1 -1
  147. package/src/providers/googlesheets/scopes.js +2 -0
  148. package/src/providers/googleslides/executors.js +2 -2
  149. package/src/providers/googleslides/scopes.d.ts +0 -3
  150. package/src/providers/googleslides/scopes.js +2 -6
  151. package/src/providers/googletasks/executors.js +2 -2
  152. package/src/providers/googletasks/scopes.d.ts +0 -3
  153. package/src/providers/googletasks/scopes.js +2 -6
  154. package/src/providers/granola/actions.js +2 -0
  155. package/src/providers/granola/runtime-mcp.js +2 -0
  156. package/src/providers/granola/runtime.js +2 -2
  157. package/src/providers/indiegogo/executors.js +1 -1
  158. package/src/providers/investoday_mcp/executors.js +2 -2
  159. package/src/providers/iyunbiao/runtime.js +2 -2
  160. package/src/providers/keepa/actions.d.ts +1 -1
  161. package/src/providers/keepa/actions.js +371 -149
  162. package/src/providers/keepa/deal-attributes.d.ts +1 -0
  163. package/src/providers/keepa/deal-attributes.js +26 -0
  164. package/src/providers/keepa/runtime.js +212 -18
  165. package/src/providers/kingdee/executors.js +1 -1
  166. package/src/providers/kingdee/runtime.js +2 -2
  167. package/src/providers/kuaidi100/runtime.js +1 -1
  168. package/src/providers/linear/executors.js +12 -9
  169. package/src/providers/linear_mcp/actions.d.ts +47 -0
  170. package/src/providers/linear_mcp/actions.js +102 -0
  171. package/src/providers/linear_mcp/endpoints.d.ts +3 -0
  172. package/src/providers/linear_mcp/endpoints.js +3 -0
  173. package/src/providers/linear_mcp/executors.d.ts +3 -0
  174. package/src/providers/linear_mcp/executors.js +9 -0
  175. package/src/providers/linear_mcp/runtime-mcp.d.ts +15 -0
  176. package/src/providers/linear_mcp/runtime-mcp.js +238 -0
  177. package/src/providers/lingxing_mcp/runtime.js +1 -1
  178. package/src/providers/mcdonalds_cn_mcp/runtime.js +1 -1
  179. package/src/providers/metabase/mcp-runtime.js +1 -1
  180. package/src/providers/moneyforward_mcp/executors.d.ts +3 -0
  181. package/src/providers/moneyforward_mcp/executors.js +11 -0
  182. package/src/providers/moneyforward_mcp/manifest.d.ts +31 -0
  183. package/src/providers/moneyforward_mcp/manifest.js +204 -0
  184. package/src/providers/moneyforward_mcp/runtime.d.ts +18 -0
  185. package/src/providers/moneyforward_mcp/runtime.js +296 -0
  186. package/src/providers/notion/executors.js +39 -3
  187. package/src/providers/notion_mcp/endpoints.d.ts +3 -0
  188. package/src/providers/notion_mcp/endpoints.js +3 -0
  189. package/src/providers/notion_mcp/executors.d.ts +3 -0
  190. package/src/providers/notion_mcp/executors.js +176 -0
  191. package/src/providers/notion_mcp/mcp-response.d.ts +86 -0
  192. package/src/providers/notion_mcp/mcp-response.js +314 -0
  193. package/src/providers/odoo/executors.d.ts +3 -0
  194. package/src/providers/odoo/executors.js +32 -0
  195. package/src/providers/odoo/runtime.d.ts +16 -0
  196. package/src/providers/odoo/runtime.js +140 -0
  197. package/src/providers/outlook/executors.js +27 -6
  198. package/src/providers/outlook/microsoft-graph.js +17 -6
  199. package/src/providers/outlook_calendar/executors.js +24 -7
  200. package/src/providers/patsnap_mcp/executors.js +2 -2
  201. package/src/providers/postiz/executors.d.ts +4 -0
  202. package/src/providers/postiz/executors.js +83 -0
  203. package/src/providers/provider-runtime.d.ts +15 -0
  204. package/src/providers/provider-runtime.js +57 -4
  205. package/src/providers/proworkflow/executors.d.ts +4 -0
  206. package/src/providers/proworkflow/executors.js +135 -0
  207. package/src/providers/registry.generated.js +12 -0
  208. package/src/providers/scrape_creators/catalog.js +1 -1
  209. package/src/providers/scrape_creators/runtime.js +1 -1
  210. package/src/providers/sellersprite_mcp/executors.js +2 -2
  211. package/src/providers/sellersprite_mcp/official-actions.js +3 -2
  212. package/src/providers/sentry/runtime.js +6 -7
  213. package/src/providers/slack/actions.js +52 -3
  214. package/src/providers/slack/runtime.js +58 -21
  215. package/src/providers/slickdeals/runtime.js +1 -1
  216. package/src/providers/sorftime_mcp/executors.js +2 -2
  217. package/src/providers/tikhub/bounded-response.d.ts +1 -1
  218. package/src/providers/tikhub/bounded-response.js +8 -34
  219. package/src/providers/tikhub/endpoint-catalog.js +1 -1
  220. package/src/providers/tikhub/runtime.js +2 -2
  221. package/src/providers/tongdaxin/executors.js +79 -15
  222. package/src/providers/uspto/executors.js +1 -1
  223. package/src/providers/waffo/executors.js +1 -1
  224. package/src/providers/waffo/runtime.js +1 -1
  225. package/src/providers/wecom_mcp/runtime.js +1 -1
  226. package/src/providers/wisburg/executors.d.ts +4 -0
  227. package/src/providers/wisburg/executors.js +13 -0
  228. package/src/providers/wisburg/runtime.d.ts +12 -0
  229. package/src/providers/wisburg/runtime.js +133 -0
  230. package/src/providers/xydc_mcp/executors.js +2 -2
  231. package/src/providers/youtube/executors.js +1 -1
  232. package/src/providers/youtube/runtime.js +1 -1
  233. package/src/providers/zerotier/executors.d.ts +9 -0
  234. package/src/providers/zerotier/executors.js +629 -0
  235. package/src/providers/zerotier/runtime.d.ts +54 -0
  236. package/src/providers/zerotier/runtime.js +207 -0
  237. package/src/server/api/openapi.js +12 -2
  238. package/src/server/api/runtime-api.d.ts +8 -1
  239. package/src/server/api/runtime-api.js +19 -1
  240. package/src/server/connect-server.js +10 -2
  241. package/src/providers/sentry/scopes.d.ts +0 -1
  242. package/src/providers/sentry/scopes.js +0 -7
  243. /package/src/providers/{cloudflare-current-user.d.ts → cloudflare_dns/runtime-user.d.ts} +0 -0
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "service": "googlechat",
3
3
  "displayName": "Google Chat",
4
- "description": "Read Google Chat spaces and message history as the authenticated Google Workspace user.",
4
+ "description": "Read Google Chat spaces and message history, name members and message senders through the Workspace directory, and send plain-text messages, as the authenticated Google Workspace user. Sending and naming require an OAuth user connection: service account connections only read spaces and messages.",
5
5
  "categories": [
6
6
  "Communication",
7
7
  "Productivity"
@@ -20,7 +20,10 @@
20
20
  "https://www.googleapis.com/auth/chat.messages.readonly",
21
21
  "openid",
22
22
  "email",
23
- "profile"
23
+ "profile",
24
+ "https://www.googleapis.com/auth/chat.messages.create",
25
+ "https://www.googleapis.com/auth/chat.memberships.readonly",
26
+ "https://www.googleapis.com/auth/directory.readonly"
24
27
  ],
25
28
  "tokenEndpointAuthMethod": "client_secret_post",
26
29
  "authorizationParams": {
@@ -49,18 +52,513 @@
49
52
  "required": true,
50
53
  "secret": false,
51
54
  "placeholder": "user@your-domain.com",
52
- "description": "Workspace user to impersonate through domain-wide delegation. In the Workspace Admin console (Security > Access and data control > API Controls > Domain-wide Delegation), grant the service account client ID the Chat scopes this provider requests."
55
+ "description": "Workspace user to impersonate through domain-wide delegation. In the Workspace Admin console (Security > Access and data control > API Controls > Domain-wide Delegation), grant the service account client ID https://www.googleapis.com/auth/chat.spaces.readonly, https://www.googleapis.com/auth/chat.messages.readonly, openid, email, and profile. Service account connections only read spaces and messages; sending messages and naming members need an OAuth connection."
53
56
  }
54
57
  ]
55
58
  }
56
59
  ],
57
60
  "homepageUrl": "https://workspace.google.com/products/chat/",
58
61
  "actions": [
62
+ {
63
+ "id": "googlechat.create_message",
64
+ "service": "googlechat",
65
+ "name": "create_message",
66
+ "description": "Send a plain-text message to a Google Chat space, optionally as a reply inside an existing thread. Under user authentication the Chat API only accepts plain text, so cards and attachments are not supported. When thread is provided but messageReplyOption is omitted, this action sends REPLY_MESSAGE_OR_FAIL rather than the Google default, which would silently ignore the thread and start a new one. messageReplyOption only applies to named spaces (spaceType=SPACE). Reusing a requestId returns the message that was already created instead of sending a new one.",
67
+ "operationType": "write",
68
+ "requiredScopes": [
69
+ "https://www.googleapis.com/auth/chat.messages.create"
70
+ ],
71
+ "providerPermissions": [
72
+ "https://www.googleapis.com/auth/chat.messages.create"
73
+ ],
74
+ "inputSchema": {
75
+ "type": "object",
76
+ "properties": {
77
+ "space": {
78
+ "type": "string",
79
+ "minLength": 1,
80
+ "description": "The space to post into, either spaces/{space} or the bare {space} ID."
81
+ },
82
+ "text": {
83
+ "type": "string",
84
+ "minLength": 1,
85
+ "description": "The plain-text body of the message. Leading and trailing whitespace is preserved, so indentation inside the message survives.",
86
+ "pattern": "\\S"
87
+ },
88
+ "thread": {
89
+ "type": "string",
90
+ "minLength": 1,
91
+ "description": "The thread to reply into, as the full spaces/{space}/threads/{thread} name. Its space must match the space input.",
92
+ "pattern": "\\S"
93
+ },
94
+ "messageReplyOption": {
95
+ "type": "string",
96
+ "enum": [
97
+ "REPLY_MESSAGE_OR_FAIL",
98
+ "REPLY_MESSAGE_FALLBACK_TO_NEW_THREAD"
99
+ ],
100
+ "description": "How to handle the target thread. Only allowed together with thread; defaults to REPLY_MESSAGE_OR_FAIL when thread is set."
101
+ },
102
+ "requestId": {
103
+ "type": "string",
104
+ "minLength": 1,
105
+ "description": "An idempotency key. Only reuse it to retry the same intended message: reusing it with different content returns the original message instead of sending or updating anything.",
106
+ "pattern": "\\S"
107
+ }
108
+ },
109
+ "additionalProperties": false,
110
+ "required": [
111
+ "space",
112
+ "text"
113
+ ],
114
+ "description": "Action input.",
115
+ "dependentRequired": {
116
+ "messageReplyOption": [
117
+ "thread"
118
+ ]
119
+ }
120
+ },
121
+ "outputSchema": {
122
+ "type": "object",
123
+ "properties": {
124
+ "name": {
125
+ "type": "string",
126
+ "description": "The resource name of the message, in the form spaces/{space}/messages/{message}."
127
+ },
128
+ "messageId": {
129
+ "type": "string",
130
+ "description": "The bare message ID with the spaces/{space}/messages/ prefix removed."
131
+ },
132
+ "spaceName": {
133
+ "type": "string",
134
+ "description": "The resource name of the space that owns the message."
135
+ },
136
+ "text": {
137
+ "type": "string",
138
+ "description": "The plain-text body of the message."
139
+ },
140
+ "formattedText": {
141
+ "type": "string",
142
+ "description": "The message body with Google Chat formatting markup preserved."
143
+ },
144
+ "argumentText": {
145
+ "type": "string",
146
+ "description": "The plain-text body with all Chat app mentions stripped out."
147
+ },
148
+ "createTime": {
149
+ "type": "string",
150
+ "description": "The time the message was created."
151
+ },
152
+ "lastUpdateTime": {
153
+ "type": "string",
154
+ "description": "The time the message was last edited by a user."
155
+ },
156
+ "deleteTime": {
157
+ "type": "string",
158
+ "description": "The time the message was deleted, when it has been deleted."
159
+ },
160
+ "threadReply": {
161
+ "type": "boolean",
162
+ "description": "Whether the message is a reply inside an existing thread."
163
+ },
164
+ "sender": {
165
+ "type": "object",
166
+ "properties": {
167
+ "name": {
168
+ "type": "string",
169
+ "description": "The resource name of the sender, in the form users/{user}."
170
+ },
171
+ "displayName": {
172
+ "anyOf": [
173
+ {
174
+ "type": "string",
175
+ "description": "The sender's name. Under user authentication Google Chat only reports it for members of the space and users with prior affinity, so a human sender's missing name is filled in from the Workspace directory; null when neither reveals it, with profileUnavailableReason saying why. Bots are never looked up in the directory."
176
+ },
177
+ {
178
+ "type": "null"
179
+ }
180
+ ]
181
+ },
182
+ "email": {
183
+ "anyOf": [
184
+ {
185
+ "type": "string",
186
+ "description": "The human sender's email address as Google Chat reports it, or the primary one from the Workspace directory, when visible."
187
+ },
188
+ {
189
+ "type": "null"
190
+ }
191
+ ]
192
+ },
193
+ "profileUnavailableReason": {
194
+ "type": "string",
195
+ "enum": [
196
+ "profile_name_missing",
197
+ "people_forbidden",
198
+ "people_not_found",
199
+ "people_request_failed"
200
+ ],
201
+ "description": "Why displayName is null for a human sender: profile_name_missing, people_forbidden, people_not_found, or people_request_failed. Names need the directory.readonly scope and the People API."
202
+ },
203
+ "type": {
204
+ "type": "string",
205
+ "description": "The sender type, either HUMAN or BOT."
206
+ },
207
+ "domainId": {
208
+ "type": "string",
209
+ "description": "The Google Workspace domain ID of the sender."
210
+ },
211
+ "isAnonymous": {
212
+ "type": "boolean",
213
+ "description": "Whether the sender is an anonymous user."
214
+ }
215
+ },
216
+ "additionalProperties": false,
217
+ "description": "The user who created the message."
218
+ },
219
+ "thread": {
220
+ "type": "object",
221
+ "properties": {
222
+ "name": {
223
+ "type": "string",
224
+ "description": "The resource name of the thread, in the form spaces/{space}/threads/{thread}."
225
+ },
226
+ "threadKey": {
227
+ "type": "string",
228
+ "description": "The client-assigned ID for the thread."
229
+ }
230
+ },
231
+ "additionalProperties": false,
232
+ "description": "The thread the message belongs to."
233
+ }
234
+ },
235
+ "additionalProperties": false,
236
+ "required": [
237
+ "name",
238
+ "messageId"
239
+ ],
240
+ "description": "A normalized Google Chat message."
241
+ }
242
+ },
243
+ {
244
+ "id": "googlechat.find_direct_message",
245
+ "service": "googlechat",
246
+ "name": "find_direct_message",
247
+ "description": "Find the existing direct message space between the authenticated user and one other user, identified by email address or numeric user id. Use this to address a person by identity instead of by an opaque space id: a direct message space has no displayName, so list_spaces can never tell you who a DM is with. Only finds conversations that already exist; it never creates one. Caution when the result is fed to create_message: if the identifier is mistyped but still resolves to another real user this account already has a DM with, this action succeeds and returns that person's space, and the returned space id is opaque, so it cannot be eyeballed to confirm the recipient. The result therefore carries peer, the person the space actually belongs to, named by Google Chat or the Workspace directory: read it back to the user and confirm the name before sending. Nothing enforces that check. Naming the peer needs the chat.memberships.readonly and directory.readonly scopes plus the People API on top of the scope below. When the peer cannot be resolved at all (listing the members or reading your own People id failed), peer is null and peerError says why, while the space itself is still returned. A resolved peer can still be unnamed: displayName is null for an AMBIGUOUS peer, for a BOT or SELF peer Google Chat did not name, and for a HUMAN peer the directory could not name (profileUnavailableReason then says why). Treat a null peer or a null displayName as an unconfirmed recipient.",
248
+ "operationType": "read",
249
+ "requiredScopes": [
250
+ "https://www.googleapis.com/auth/chat.spaces.readonly"
251
+ ],
252
+ "providerPermissions": [
253
+ "https://www.googleapis.com/auth/chat.spaces.readonly"
254
+ ],
255
+ "inputSchema": {
256
+ "type": "object",
257
+ "properties": {
258
+ "user": {
259
+ "type": "string",
260
+ "minLength": 1,
261
+ "description": "The other participant, as a bare email address such as person@example.com or a bare numeric user id. Do not include the users/ prefix, and aliases such as me or app are not accepted."
262
+ }
263
+ },
264
+ "additionalProperties": false,
265
+ "required": [
266
+ "user"
267
+ ],
268
+ "description": "Action input."
269
+ },
270
+ "outputSchema": {
271
+ "type": "object",
272
+ "properties": {
273
+ "name": {
274
+ "type": "string",
275
+ "description": "The resource name of the space, in the form spaces/{space}."
276
+ },
277
+ "spaceId": {
278
+ "type": "string",
279
+ "description": "The bare space ID with the spaces/ prefix removed."
280
+ },
281
+ "displayName": {
282
+ "type": "string",
283
+ "description": "The display name of the space. Empty for direct messages."
284
+ },
285
+ "spaceType": {
286
+ "type": "string",
287
+ "description": "The space type, such as SPACE, GROUP_CHAT, or DIRECT_MESSAGE."
288
+ },
289
+ "spaceHistoryState": {
290
+ "type": "string",
291
+ "description": "Whether message history is turned on or off for the space."
292
+ },
293
+ "externalUserAllowed": {
294
+ "type": "boolean",
295
+ "description": "Whether the space allows users outside the Google Workspace organization."
296
+ },
297
+ "spaceUri": {
298
+ "type": "string",
299
+ "description": "The URI that opens the space in the Google Chat client."
300
+ },
301
+ "createTime": {
302
+ "type": "string",
303
+ "description": "The time the space was created."
304
+ },
305
+ "lastActiveTime": {
306
+ "type": "string",
307
+ "description": "The time of the most recent message in the space."
308
+ },
309
+ "spaceDetails": {
310
+ "type": "object",
311
+ "properties": {},
312
+ "additionalProperties": true,
313
+ "description": "Space description and guidelines shown to members."
314
+ },
315
+ "membershipCount": {
316
+ "type": "object",
317
+ "properties": {
318
+ "joinedDirectHumanUserCount": {
319
+ "type": "integer",
320
+ "description": "The number of human users that have directly joined the space."
321
+ },
322
+ "joinedGroupCount": {
323
+ "type": "integer",
324
+ "description": "The number of groups that have directly joined the space."
325
+ }
326
+ },
327
+ "additionalProperties": false,
328
+ "description": "Counts of members that have directly joined the space."
329
+ },
330
+ "peer": {
331
+ "anyOf": [
332
+ {
333
+ "type": "object",
334
+ "properties": {
335
+ "kind": {
336
+ "type": "string",
337
+ "enum": [
338
+ "HUMAN",
339
+ "BOT",
340
+ "SELF",
341
+ "AMBIGUOUS"
342
+ ],
343
+ "description": "HUMAN for another person, BOT for a Chat app, SELF for a direct message with only yourself, AMBIGUOUS when the members do not single out one peer."
344
+ },
345
+ "user": {
346
+ "anyOf": [
347
+ {
348
+ "type": "string",
349
+ "description": "The peer's resource name, in the form users/{user}. Null when the peer is AMBIGUOUS."
350
+ },
351
+ {
352
+ "type": "null"
353
+ }
354
+ ]
355
+ },
356
+ "displayName": {
357
+ "anyOf": [
358
+ {
359
+ "type": "string",
360
+ "description": "The peer's name as Google Chat reports it, or, for a HUMAN peer, from the Workspace directory when Chat leaves it out. Null for AMBIGUOUS, or when neither reveals it; for a HUMAN peer profileUnavailableReason then says why. BOT and SELF peers are never looked up in the directory."
361
+ },
362
+ {
363
+ "type": "null"
364
+ }
365
+ ]
366
+ },
367
+ "email": {
368
+ "anyOf": [
369
+ {
370
+ "type": "string",
371
+ "description": "The peer's email address as Google Chat reports it, or, for a HUMAN peer, the primary one from the Workspace directory, when visible. Null for AMBIGUOUS."
372
+ },
373
+ {
374
+ "type": "null"
375
+ }
376
+ ]
377
+ },
378
+ "profileUnavailableReason": {
379
+ "type": "string",
380
+ "enum": [
381
+ "profile_name_missing",
382
+ "people_forbidden",
383
+ "people_not_found",
384
+ "people_request_failed"
385
+ ],
386
+ "description": "Why displayName is null for a HUMAN peer: profile_name_missing when the directory returned no name (profile sharing may be off), people_forbidden or people_not_found for a 403 or 404 from the People API, people_request_failed for any other failure."
387
+ },
388
+ "candidates": {
389
+ "type": "array",
390
+ "items": {
391
+ "type": "string",
392
+ "minLength": 1
393
+ },
394
+ "description": "For an AMBIGUOUS peer, the users/{user} names of the members that could be the peer."
395
+ }
396
+ },
397
+ "additionalProperties": false,
398
+ "required": [
399
+ "kind",
400
+ "user",
401
+ "displayName",
402
+ "email"
403
+ ],
404
+ "description": "The other participant of a direct message, named by Google Chat or, where Chat leaves the name out, through the Workspace directory."
405
+ },
406
+ {
407
+ "type": "null"
408
+ }
409
+ ]
410
+ },
411
+ "peerError": {
412
+ "type": "object",
413
+ "properties": {
414
+ "status": {
415
+ "type": "integer",
416
+ "description": "The HTTP status of the failed lookup, or 502 when it failed without one, such as a network error."
417
+ },
418
+ "message": {
419
+ "type": "string",
420
+ "description": "What went wrong."
421
+ }
422
+ },
423
+ "additionalProperties": false,
424
+ "description": "Why peer is null. Absent when the peer was resolved."
425
+ }
426
+ },
427
+ "additionalProperties": false,
428
+ "required": [
429
+ "name",
430
+ "spaceId",
431
+ "peer"
432
+ ],
433
+ "description": "The direct message space, with its other participant."
434
+ }
435
+ },
436
+ {
437
+ "id": "googlechat.get_direct_message_peer",
438
+ "service": "googlechat",
439
+ "name": "get_direct_message_peer",
440
+ "description": "Name the other participant of a direct message space. Under user authentication Google Chat may report a member only as users/{id}, so a name or email Chat leaves out is looked up in the Workspace directory through the People API. Use it to tell who a direct message from list_spaces is with. Rejects spaces that are not direct messages. A HUMAN peer that cannot be named still comes back with its users/{id} and a profileUnavailableReason; BOT and SELF peers carry only what Google Chat reports, and an AMBIGUOUS peer has a null user and lists its candidates.",
441
+ "operationType": "read",
442
+ "requiredScopes": [
443
+ "https://www.googleapis.com/auth/chat.spaces.readonly",
444
+ "https://www.googleapis.com/auth/chat.memberships.readonly",
445
+ "https://www.googleapis.com/auth/directory.readonly"
446
+ ],
447
+ "providerPermissions": [
448
+ "https://www.googleapis.com/auth/chat.spaces.readonly",
449
+ "https://www.googleapis.com/auth/chat.memberships.readonly",
450
+ "https://www.googleapis.com/auth/directory.readonly"
451
+ ],
452
+ "inputSchema": {
453
+ "type": "object",
454
+ "properties": {
455
+ "space": {
456
+ "type": "string",
457
+ "minLength": 1,
458
+ "description": "The direct message space, either spaces/{space} or the bare {space} ID."
459
+ }
460
+ },
461
+ "additionalProperties": false,
462
+ "required": [
463
+ "space"
464
+ ],
465
+ "description": "Action input."
466
+ },
467
+ "outputSchema": {
468
+ "type": "object",
469
+ "properties": {
470
+ "space": {
471
+ "type": "string",
472
+ "description": "The resource name of the space, in the form spaces/{space}."
473
+ },
474
+ "peer": {
475
+ "type": "object",
476
+ "properties": {
477
+ "kind": {
478
+ "type": "string",
479
+ "enum": [
480
+ "HUMAN",
481
+ "BOT",
482
+ "SELF",
483
+ "AMBIGUOUS"
484
+ ],
485
+ "description": "HUMAN for another person, BOT for a Chat app, SELF for a direct message with only yourself, AMBIGUOUS when the members do not single out one peer."
486
+ },
487
+ "user": {
488
+ "anyOf": [
489
+ {
490
+ "type": "string",
491
+ "description": "The peer's resource name, in the form users/{user}. Null when the peer is AMBIGUOUS."
492
+ },
493
+ {
494
+ "type": "null"
495
+ }
496
+ ]
497
+ },
498
+ "displayName": {
499
+ "anyOf": [
500
+ {
501
+ "type": "string",
502
+ "description": "The peer's name as Google Chat reports it, or, for a HUMAN peer, from the Workspace directory when Chat leaves it out. Null for AMBIGUOUS, or when neither reveals it; for a HUMAN peer profileUnavailableReason then says why. BOT and SELF peers are never looked up in the directory."
503
+ },
504
+ {
505
+ "type": "null"
506
+ }
507
+ ]
508
+ },
509
+ "email": {
510
+ "anyOf": [
511
+ {
512
+ "type": "string",
513
+ "description": "The peer's email address as Google Chat reports it, or, for a HUMAN peer, the primary one from the Workspace directory, when visible. Null for AMBIGUOUS."
514
+ },
515
+ {
516
+ "type": "null"
517
+ }
518
+ ]
519
+ },
520
+ "profileUnavailableReason": {
521
+ "type": "string",
522
+ "enum": [
523
+ "profile_name_missing",
524
+ "people_forbidden",
525
+ "people_not_found",
526
+ "people_request_failed"
527
+ ],
528
+ "description": "Why displayName is null for a HUMAN peer: profile_name_missing when the directory returned no name (profile sharing may be off), people_forbidden or people_not_found for a 403 or 404 from the People API, people_request_failed for any other failure."
529
+ },
530
+ "candidates": {
531
+ "type": "array",
532
+ "items": {
533
+ "type": "string",
534
+ "minLength": 1
535
+ },
536
+ "description": "For an AMBIGUOUS peer, the users/{user} names of the members that could be the peer."
537
+ }
538
+ },
539
+ "additionalProperties": false,
540
+ "required": [
541
+ "kind",
542
+ "user",
543
+ "displayName",
544
+ "email"
545
+ ],
546
+ "description": "The other participant of a direct message, named by Google Chat or, where Chat leaves the name out, through the Workspace directory."
547
+ }
548
+ },
549
+ "additionalProperties": false,
550
+ "required": [
551
+ "space",
552
+ "peer"
553
+ ],
554
+ "description": "The direct message space and its other participant."
555
+ }
556
+ },
59
557
  {
60
558
  "id": "googlechat.get_message",
61
559
  "service": "googlechat",
62
560
  "name": "get_message",
63
- "description": "Retrieve a single Google Chat message by its resource name, or by space and message ID.",
561
+ "description": "Retrieve a single Google Chat message by its resource name, or by space and message ID. A name or email Google Chat leaves out for a human sender is filled in from the Workspace directory, which needs the directory.readonly scope and the People API on top of the scope below; without them the sender keeps its users/{id} with a null displayName and a profileUnavailableReason, and the message is still returned.",
64
562
  "operationType": "read",
65
563
  "requiredScopes": [
66
564
  "https://www.googleapis.com/auth/chat.messages.readonly"
@@ -139,8 +637,36 @@
139
637
  "description": "The resource name of the sender, in the form users/{user}."
140
638
  },
141
639
  "displayName": {
640
+ "anyOf": [
641
+ {
642
+ "type": "string",
643
+ "description": "The sender's name. Under user authentication Google Chat only reports it for members of the space and users with prior affinity, so a human sender's missing name is filled in from the Workspace directory; null when neither reveals it, with profileUnavailableReason saying why. Bots are never looked up in the directory."
644
+ },
645
+ {
646
+ "type": "null"
647
+ }
648
+ ]
649
+ },
650
+ "email": {
651
+ "anyOf": [
652
+ {
653
+ "type": "string",
654
+ "description": "The human sender's email address as Google Chat reports it, or the primary one from the Workspace directory, when visible."
655
+ },
656
+ {
657
+ "type": "null"
658
+ }
659
+ ]
660
+ },
661
+ "profileUnavailableReason": {
142
662
  "type": "string",
143
- "description": "The display name of the sender. Only populated for app authentication."
663
+ "enum": [
664
+ "profile_name_missing",
665
+ "people_forbidden",
666
+ "people_not_found",
667
+ "people_request_failed"
668
+ ],
669
+ "description": "Why displayName is null for a human sender: profile_name_missing, people_forbidden, people_not_found, or people_request_failed. Names need the directory.readonly scope and the People API."
144
670
  },
145
671
  "type": {
146
672
  "type": "string",
@@ -282,7 +808,7 @@
282
808
  "id": "googlechat.list_messages",
283
809
  "service": "googlechat",
284
810
  "name": "list_messages",
285
- "description": "List the message history of a Google Chat space, with optional filtering, ordering, and pagination.",
811
+ "description": "List the message history of a Google Chat space, with optional filtering, ordering, and pagination. A name or email Google Chat leaves out for a human sender is filled in from the Workspace directory, which needs the directory.readonly scope and the People API on top of the scope below; without them such a sender keeps its users/{id} with a null displayName and a profileUnavailableReason, and the messages are still returned.",
286
812
  "operationType": "read",
287
813
  "requiredScopes": [
288
814
  "https://www.googleapis.com/auth/chat.messages.readonly"
@@ -386,8 +912,36 @@
386
912
  "description": "The resource name of the sender, in the form users/{user}."
387
913
  },
388
914
  "displayName": {
915
+ "anyOf": [
916
+ {
917
+ "type": "string",
918
+ "description": "The sender's name. Under user authentication Google Chat only reports it for members of the space and users with prior affinity, so a human sender's missing name is filled in from the Workspace directory; null when neither reveals it, with profileUnavailableReason saying why. Bots are never looked up in the directory."
919
+ },
920
+ {
921
+ "type": "null"
922
+ }
923
+ ]
924
+ },
925
+ "email": {
926
+ "anyOf": [
927
+ {
928
+ "type": "string",
929
+ "description": "The human sender's email address as Google Chat reports it, or the primary one from the Workspace directory, when visible."
930
+ },
931
+ {
932
+ "type": "null"
933
+ }
934
+ ]
935
+ },
936
+ "profileUnavailableReason": {
389
937
  "type": "string",
390
- "description": "The display name of the sender. Only populated for app authentication."
938
+ "enum": [
939
+ "profile_name_missing",
940
+ "people_forbidden",
941
+ "people_not_found",
942
+ "people_request_failed"
943
+ ],
944
+ "description": "Why displayName is null for a human sender: profile_name_missing, people_forbidden, people_not_found, or people_request_failed. Names need the directory.readonly scope and the People API."
391
945
  },
392
946
  "type": {
393
947
  "type": "string",
@@ -450,6 +1004,139 @@
450
1004
  "description": "The normalized result of listing space messages."
451
1005
  }
452
1006
  },
1007
+ {
1008
+ "id": "googlechat.list_space_members",
1009
+ "service": "googlechat",
1010
+ "name": "list_space_members",
1011
+ "description": "List the members of any Google Chat space, including group spaces, with each person's name and email. Like Google Chat's default, it leaves out memberships held through a Google Group and people who were invited but have not joined. Under user authentication Google Chat may report a member only as users/{id}, so every human on a page whose name or email Chat leaves out is looked up in the Workspace directory through the People API in one batch. Returns one page at a time; pass nextPageToken back as pageToken for the next page. Members whose profile cannot be read keep their users/{id} with a null displayName and a profileUnavailableReason.",
1012
+ "operationType": "read",
1013
+ "requiredScopes": [
1014
+ "https://www.googleapis.com/auth/chat.memberships.readonly",
1015
+ "https://www.googleapis.com/auth/directory.readonly"
1016
+ ],
1017
+ "providerPermissions": [
1018
+ "https://www.googleapis.com/auth/chat.memberships.readonly",
1019
+ "https://www.googleapis.com/auth/directory.readonly"
1020
+ ],
1021
+ "inputSchema": {
1022
+ "type": "object",
1023
+ "properties": {
1024
+ "space": {
1025
+ "type": "string",
1026
+ "minLength": 1,
1027
+ "description": "The space whose members to list, either spaces/{space} or the bare {space} ID."
1028
+ },
1029
+ "pageSize": {
1030
+ "type": "integer",
1031
+ "minimum": 1,
1032
+ "maximum": 200,
1033
+ "description": "The maximum number of members to return, at most 200 so that one directory lookup covers the page. Defaults to 100."
1034
+ },
1035
+ "pageToken": {
1036
+ "type": "string",
1037
+ "minLength": 1,
1038
+ "description": "The nextPageToken from a previous call, to fetch the next page."
1039
+ }
1040
+ },
1041
+ "additionalProperties": false,
1042
+ "required": [
1043
+ "space"
1044
+ ],
1045
+ "description": "Action input."
1046
+ },
1047
+ "outputSchema": {
1048
+ "type": "object",
1049
+ "properties": {
1050
+ "space": {
1051
+ "type": "string",
1052
+ "description": "The resource name of the space, in the form spaces/{space}."
1053
+ },
1054
+ "members": {
1055
+ "type": "array",
1056
+ "items": {
1057
+ "type": "object",
1058
+ "properties": {
1059
+ "user": {
1060
+ "type": "string",
1061
+ "description": "The member's resource name, in the form users/{user}."
1062
+ },
1063
+ "kind": {
1064
+ "type": "string",
1065
+ "description": "HUMAN for a person, BOT for a Chat app."
1066
+ },
1067
+ "role": {
1068
+ "type": "string",
1069
+ "description": "The member's role in the space, such as ROLE_MEMBER or ROLE_MANAGER."
1070
+ },
1071
+ "isSelf": {
1072
+ "type": "boolean",
1073
+ "description": "Whether this member is the authenticated user."
1074
+ },
1075
+ "displayName": {
1076
+ "anyOf": [
1077
+ {
1078
+ "type": "string",
1079
+ "description": "The member's name as Google Chat reports it, or for a human member from the Workspace directory when Chat leaves it out. Null when neither reveals it; for a human member profileUnavailableReason then says why. Bots are never looked up in the directory."
1080
+ },
1081
+ {
1082
+ "type": "null"
1083
+ }
1084
+ ]
1085
+ },
1086
+ "email": {
1087
+ "anyOf": [
1088
+ {
1089
+ "type": "string",
1090
+ "description": "The member's email address as Google Chat reports it, or for a human member the primary one from the Workspace directory, when visible."
1091
+ },
1092
+ {
1093
+ "type": "null"
1094
+ }
1095
+ ]
1096
+ },
1097
+ "profileUnavailableReason": {
1098
+ "type": "string",
1099
+ "enum": [
1100
+ "profile_name_missing",
1101
+ "people_forbidden",
1102
+ "people_not_found",
1103
+ "people_request_failed"
1104
+ ],
1105
+ "description": "Why displayName is null for a human member: profile_name_missing when the directory returned no name (profile sharing may be off), people_forbidden or people_not_found when the People API refused or could not find the profile, people_request_failed for any other failure."
1106
+ }
1107
+ },
1108
+ "additionalProperties": false,
1109
+ "required": [
1110
+ "user",
1111
+ "isSelf",
1112
+ "displayName",
1113
+ "email"
1114
+ ],
1115
+ "description": "A member of a Google Chat space, named by Google Chat or, where Chat leaves the name out, through the Workspace directory."
1116
+ },
1117
+ "description": "The members on this page, in the order Google Chat returned them."
1118
+ },
1119
+ "nextPageToken": {
1120
+ "anyOf": [
1121
+ {
1122
+ "type": "string",
1123
+ "description": "The token for the next page, or null when this is the last page."
1124
+ },
1125
+ {
1126
+ "type": "null"
1127
+ }
1128
+ ]
1129
+ }
1130
+ },
1131
+ "additionalProperties": false,
1132
+ "required": [
1133
+ "space",
1134
+ "members",
1135
+ "nextPageToken"
1136
+ ],
1137
+ "description": "One page of the space's members."
1138
+ }
1139
+ },
453
1140
  {
454
1141
  "id": "googlechat.list_spaces",
455
1142
  "service": "googlechat",